Migrate *all* photos to the cavelab setup. Header/footer still broken.
Completely remove the other image gallery themes. I now have: image galleries, with lightboxes, and captions, with links in them (and to Hugo pages), with full images lazy-loaded, with all thumbnails auto-generated, and the ability to do this on both individual images *and* with globbing, from page resources, from this page or any specified one. See cavelab_notes.txt. It also has the ability to use Exif data of the photo - if I preprocess it into a JSON file. Known issues: - The theme header/footer are now being overridden. I am working to fix this first. - I am missing some kind of fonts/images needed for the lightbox to show up properly.
This commit is contained in:
parent
be54e20811
commit
94310f0f9d
728
assets/assets/lightgallery.css
Normal file
728
assets/assets/lightgallery.css
Normal file
@ -0,0 +1,728 @@
|
|||||||
|
@font-face {
|
||||||
|
font-family: 'lg';
|
||||||
|
src: url("../fonts/lg.woff2?io9a6k") format("woff2"), url("../fonts/lg.ttf?io9a6k") format("truetype"), url("../fonts/lg.woff?io9a6k") format("woff"), url("../fonts/lg.svg?io9a6k#lg") format("svg");
|
||||||
|
font-weight: normal;
|
||||||
|
font-style: normal;
|
||||||
|
font-display: block;
|
||||||
|
}
|
||||||
|
|
||||||
|
.lg-icon {
|
||||||
|
/* use !important to prevent issues with browser extensions that change fonts */
|
||||||
|
font-family: 'lg' !important;
|
||||||
|
speak: never;
|
||||||
|
font-style: normal;
|
||||||
|
font-weight: normal;
|
||||||
|
font-variant: normal;
|
||||||
|
text-transform: none;
|
||||||
|
line-height: 1;
|
||||||
|
/* Better Font Rendering =========== */
|
||||||
|
-webkit-font-smoothing: antialiased;
|
||||||
|
-moz-osx-font-smoothing: grayscale;
|
||||||
|
}
|
||||||
|
|
||||||
|
.lg-container {
|
||||||
|
font-family: system-ui, -apple-system, 'Segoe UI', Roboto, 'Helvetica Neue', Arial, 'Noto Sans', 'Liberation Sans', sans-serif, 'Apple Color Emoji', 'Segoe UI Emoji', 'Segoe UI Symbol', 'Noto Color Emoji';
|
||||||
|
}
|
||||||
|
|
||||||
|
.lg-next,
|
||||||
|
.lg-prev {
|
||||||
|
background-color: rgba(0, 0, 0, 0.45);
|
||||||
|
border-radius: 2px;
|
||||||
|
color: #999;
|
||||||
|
cursor: pointer;
|
||||||
|
display: block;
|
||||||
|
font-size: 22px;
|
||||||
|
margin-top: -10px;
|
||||||
|
padding: 8px 10px 9px;
|
||||||
|
position: absolute;
|
||||||
|
top: 50%;
|
||||||
|
z-index: 1084;
|
||||||
|
outline: none;
|
||||||
|
border: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
.lg-next.disabled,
|
||||||
|
.lg-prev.disabled {
|
||||||
|
opacity: 0 !important;
|
||||||
|
cursor: default;
|
||||||
|
}
|
||||||
|
|
||||||
|
.lg-next:hover:not(.disabled),
|
||||||
|
.lg-prev:hover:not(.disabled) {
|
||||||
|
color: #fff;
|
||||||
|
}
|
||||||
|
|
||||||
|
.lg-single-item .lg-next, .lg-single-item
|
||||||
|
.lg-prev {
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
.lg-next {
|
||||||
|
right: 20px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.lg-next:before {
|
||||||
|
content: '\e095';
|
||||||
|
}
|
||||||
|
|
||||||
|
.lg-prev {
|
||||||
|
left: 20px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.lg-prev:after {
|
||||||
|
content: '\e094';
|
||||||
|
}
|
||||||
|
|
||||||
|
@-webkit-keyframes lg-right-end {
|
||||||
|
0% {
|
||||||
|
left: 0;
|
||||||
|
}
|
||||||
|
50% {
|
||||||
|
left: -30px;
|
||||||
|
}
|
||||||
|
100% {
|
||||||
|
left: 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@-moz-keyframes lg-right-end {
|
||||||
|
0% {
|
||||||
|
left: 0;
|
||||||
|
}
|
||||||
|
50% {
|
||||||
|
left: -30px;
|
||||||
|
}
|
||||||
|
100% {
|
||||||
|
left: 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@-ms-keyframes lg-right-end {
|
||||||
|
0% {
|
||||||
|
left: 0;
|
||||||
|
}
|
||||||
|
50% {
|
||||||
|
left: -30px;
|
||||||
|
}
|
||||||
|
100% {
|
||||||
|
left: 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@keyframes lg-right-end {
|
||||||
|
0% {
|
||||||
|
left: 0;
|
||||||
|
}
|
||||||
|
50% {
|
||||||
|
left: -30px;
|
||||||
|
}
|
||||||
|
100% {
|
||||||
|
left: 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@-webkit-keyframes lg-left-end {
|
||||||
|
0% {
|
||||||
|
left: 0;
|
||||||
|
}
|
||||||
|
50% {
|
||||||
|
left: 30px;
|
||||||
|
}
|
||||||
|
100% {
|
||||||
|
left: 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@-moz-keyframes lg-left-end {
|
||||||
|
0% {
|
||||||
|
left: 0;
|
||||||
|
}
|
||||||
|
50% {
|
||||||
|
left: 30px;
|
||||||
|
}
|
||||||
|
100% {
|
||||||
|
left: 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@-ms-keyframes lg-left-end {
|
||||||
|
0% {
|
||||||
|
left: 0;
|
||||||
|
}
|
||||||
|
50% {
|
||||||
|
left: 30px;
|
||||||
|
}
|
||||||
|
100% {
|
||||||
|
left: 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@keyframes lg-left-end {
|
||||||
|
0% {
|
||||||
|
left: 0;
|
||||||
|
}
|
||||||
|
50% {
|
||||||
|
left: 30px;
|
||||||
|
}
|
||||||
|
100% {
|
||||||
|
left: 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.lg-outer.lg-right-end .lg-object {
|
||||||
|
-webkit-animation: lg-right-end 0.3s;
|
||||||
|
-o-animation: lg-right-end 0.3s;
|
||||||
|
animation: lg-right-end 0.3s;
|
||||||
|
position: relative;
|
||||||
|
}
|
||||||
|
|
||||||
|
.lg-outer.lg-left-end .lg-object {
|
||||||
|
-webkit-animation: lg-left-end 0.3s;
|
||||||
|
-o-animation: lg-left-end 0.3s;
|
||||||
|
animation: lg-left-end 0.3s;
|
||||||
|
position: relative;
|
||||||
|
}
|
||||||
|
|
||||||
|
.lg-toolbar {
|
||||||
|
z-index: 1082;
|
||||||
|
left: 0;
|
||||||
|
position: absolute;
|
||||||
|
top: 0;
|
||||||
|
width: 100%;
|
||||||
|
}
|
||||||
|
|
||||||
|
.lg-media-overlap .lg-toolbar {
|
||||||
|
background-image: linear-gradient(0deg, rgba(0, 0, 0, 0), rgba(0, 0, 0, 0.4));
|
||||||
|
}
|
||||||
|
|
||||||
|
.lg-toolbar .lg-icon {
|
||||||
|
color: #999;
|
||||||
|
cursor: pointer;
|
||||||
|
float: right;
|
||||||
|
font-size: 24px;
|
||||||
|
height: 47px;
|
||||||
|
line-height: 27px;
|
||||||
|
padding: 10px 0;
|
||||||
|
text-align: center;
|
||||||
|
width: 50px;
|
||||||
|
text-decoration: none !important;
|
||||||
|
outline: medium none;
|
||||||
|
will-change: color;
|
||||||
|
-webkit-transition: color 0.2s linear;
|
||||||
|
-o-transition: color 0.2s linear;
|
||||||
|
transition: color 0.2s linear;
|
||||||
|
background: none;
|
||||||
|
border: none;
|
||||||
|
box-shadow: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
.lg-toolbar .lg-icon.lg-icon-18 {
|
||||||
|
font-size: 18px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.lg-toolbar .lg-icon:hover {
|
||||||
|
color: #fff;
|
||||||
|
}
|
||||||
|
|
||||||
|
.lg-toolbar .lg-close:after {
|
||||||
|
content: '\e070';
|
||||||
|
}
|
||||||
|
|
||||||
|
.lg-toolbar .lg-maximize {
|
||||||
|
font-size: 22px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.lg-toolbar .lg-maximize:after {
|
||||||
|
content: '\e90a';
|
||||||
|
}
|
||||||
|
|
||||||
|
.lg-toolbar .lg-download:after {
|
||||||
|
content: '\e0f2';
|
||||||
|
}
|
||||||
|
|
||||||
|
.lg-sub-html {
|
||||||
|
color: #eee;
|
||||||
|
font-size: 16px;
|
||||||
|
padding: 10px 40px;
|
||||||
|
text-align: center;
|
||||||
|
z-index: 1080;
|
||||||
|
opacity: 0;
|
||||||
|
-webkit-transition: opacity 0.2s ease-out 0s;
|
||||||
|
-o-transition: opacity 0.2s ease-out 0s;
|
||||||
|
transition: opacity 0.2s ease-out 0s;
|
||||||
|
}
|
||||||
|
|
||||||
|
.lg-sub-html h4 {
|
||||||
|
margin: 0;
|
||||||
|
font-size: 13px;
|
||||||
|
font-weight: bold;
|
||||||
|
}
|
||||||
|
|
||||||
|
.lg-sub-html p {
|
||||||
|
font-size: 12px;
|
||||||
|
margin: 5px 0 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.lg-sub-html a {
|
||||||
|
color: inherit;
|
||||||
|
}
|
||||||
|
|
||||||
|
.lg-sub-html a:hover {
|
||||||
|
text-decoration: underline;
|
||||||
|
}
|
||||||
|
|
||||||
|
.lg-media-overlap .lg-sub-html {
|
||||||
|
background-image: linear-gradient(180deg, rgba(0, 0, 0, 0), rgba(0, 0, 0, 0.6));
|
||||||
|
}
|
||||||
|
|
||||||
|
.lg-item .lg-sub-html {
|
||||||
|
position: absolute;
|
||||||
|
bottom: 0;
|
||||||
|
right: 0;
|
||||||
|
left: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.lg-error-msg {
|
||||||
|
font-size: 14px;
|
||||||
|
color: #999;
|
||||||
|
}
|
||||||
|
|
||||||
|
.lg-counter {
|
||||||
|
color: #999;
|
||||||
|
display: inline-block;
|
||||||
|
font-size: 16px;
|
||||||
|
padding-left: 20px;
|
||||||
|
padding-top: 12px;
|
||||||
|
height: 47px;
|
||||||
|
vertical-align: middle;
|
||||||
|
}
|
||||||
|
|
||||||
|
.lg-closing .lg-toolbar,
|
||||||
|
.lg-closing .lg-prev,
|
||||||
|
.lg-closing .lg-next,
|
||||||
|
.lg-closing .lg-sub-html {
|
||||||
|
opacity: 0;
|
||||||
|
-webkit-transition: -webkit-transform 0.08 cubic-bezier(0, 0, 0.25, 1) 0s, opacity 0.08 cubic-bezier(0, 0, 0.25, 1) 0s, color 0.08 linear;
|
||||||
|
-moz-transition: -moz-transform 0.08 cubic-bezier(0, 0, 0.25, 1) 0s, opacity 0.08 cubic-bezier(0, 0, 0.25, 1) 0s, color 0.08 linear;
|
||||||
|
-o-transition: -o-transform 0.08 cubic-bezier(0, 0, 0.25, 1) 0s, opacity 0.08 cubic-bezier(0, 0, 0.25, 1) 0s, color 0.08 linear;
|
||||||
|
transition: transform 0.08 cubic-bezier(0, 0, 0.25, 1) 0s, opacity 0.08 cubic-bezier(0, 0, 0.25, 1) 0s, color 0.08 linear;
|
||||||
|
}
|
||||||
|
|
||||||
|
body:not(.lg-from-hash) .lg-outer.lg-start-zoom .lg-item:not(.lg-zoomable) .lg-img-wrap,
|
||||||
|
body:not(.lg-from-hash) .lg-outer.lg-start-zoom .lg-item:not(.lg-zoomable) .lg-video-cont {
|
||||||
|
opacity: 0;
|
||||||
|
-moz-transform: scale3d(0.5, 0.5, 0.5);
|
||||||
|
-o-transform: scale3d(0.5, 0.5, 0.5);
|
||||||
|
-ms-transform: scale3d(0.5, 0.5, 0.5);
|
||||||
|
-webkit-transform: scale3d(0.5, 0.5, 0.5);
|
||||||
|
transform: scale3d(0.5, 0.5, 0.5);
|
||||||
|
will-change: transform, opacity;
|
||||||
|
-webkit-transition: -webkit-transform 250ms cubic-bezier(0, 0, 0.25, 1) 0s, opacity 250ms cubic-bezier(0, 0, 0.25, 1) !important;
|
||||||
|
-moz-transition: -moz-transform 250ms cubic-bezier(0, 0, 0.25, 1) 0s, opacity 250ms cubic-bezier(0, 0, 0.25, 1) !important;
|
||||||
|
-o-transition: -o-transform 250ms cubic-bezier(0, 0, 0.25, 1) 0s, opacity 250ms cubic-bezier(0, 0, 0.25, 1) !important;
|
||||||
|
transition: transform 250ms cubic-bezier(0, 0, 0.25, 1) 0s, opacity 250ms cubic-bezier(0, 0, 0.25, 1) !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
body:not(.lg-from-hash) .lg-outer.lg-start-zoom .lg-item:not(.lg-zoomable).lg-complete .lg-img-wrap,
|
||||||
|
body:not(.lg-from-hash) .lg-outer.lg-start-zoom .lg-item:not(.lg-zoomable).lg-complete .lg-video-cont {
|
||||||
|
opacity: 1;
|
||||||
|
-moz-transform: scale3d(1, 1, 1);
|
||||||
|
-o-transform: scale3d(1, 1, 1);
|
||||||
|
-ms-transform: scale3d(1, 1, 1);
|
||||||
|
-webkit-transform: scale3d(1, 1, 1);
|
||||||
|
transform: scale3d(1, 1, 1);
|
||||||
|
}
|
||||||
|
|
||||||
|
.lg-icon:focus-visible {
|
||||||
|
color: #fff;
|
||||||
|
border-radius: 3px;
|
||||||
|
outline: 1px dashed rgba(255, 255, 255, 0.6);
|
||||||
|
}
|
||||||
|
|
||||||
|
.lg-toolbar .lg-icon:focus-visible {
|
||||||
|
border-radius: 8px;
|
||||||
|
outline-offset: -5px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.lg-group:after {
|
||||||
|
content: '';
|
||||||
|
display: table;
|
||||||
|
clear: both;
|
||||||
|
}
|
||||||
|
|
||||||
|
.lg-container {
|
||||||
|
display: none;
|
||||||
|
outline: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
.lg-container.lg-show {
|
||||||
|
display: block;
|
||||||
|
}
|
||||||
|
|
||||||
|
.lg-on {
|
||||||
|
scroll-behavior: unset;
|
||||||
|
}
|
||||||
|
|
||||||
|
.lg-overlay-open {
|
||||||
|
overflow: hidden;
|
||||||
|
}
|
||||||
|
|
||||||
|
.lg-toolbar,
|
||||||
|
.lg-prev,
|
||||||
|
.lg-next,
|
||||||
|
.lg-pager-outer,
|
||||||
|
.lg-hide-sub-html .lg-sub-html {
|
||||||
|
opacity: 0;
|
||||||
|
will-change: transform, opacity;
|
||||||
|
-webkit-transition: -webkit-transform 0.25s cubic-bezier(0, 0, 0.25, 1) 0s, opacity 0.25s cubic-bezier(0, 0, 0.25, 1) 0s;
|
||||||
|
-moz-transition: -moz-transform 0.25s cubic-bezier(0, 0, 0.25, 1) 0s, opacity 0.25s cubic-bezier(0, 0, 0.25, 1) 0s;
|
||||||
|
-o-transition: -o-transform 0.25s cubic-bezier(0, 0, 0.25, 1) 0s, opacity 0.25s cubic-bezier(0, 0, 0.25, 1) 0s;
|
||||||
|
transition: transform 0.25s cubic-bezier(0, 0, 0.25, 1) 0s, opacity 0.25s cubic-bezier(0, 0, 0.25, 1) 0s;
|
||||||
|
}
|
||||||
|
|
||||||
|
.lg-show-in .lg-toolbar,
|
||||||
|
.lg-show-in .lg-prev,
|
||||||
|
.lg-show-in .lg-next,
|
||||||
|
.lg-show-in .lg-pager-outer {
|
||||||
|
opacity: 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
.lg-show-in.lg-hide-sub-html .lg-sub-html {
|
||||||
|
opacity: 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
.lg-show-in .lg-hide-items .lg-prev {
|
||||||
|
opacity: 0;
|
||||||
|
-webkit-transform: translate3d(-10px, 0, 0);
|
||||||
|
transform: translate3d(-10px, 0, 0);
|
||||||
|
}
|
||||||
|
|
||||||
|
.lg-show-in .lg-hide-items .lg-next {
|
||||||
|
opacity: 0;
|
||||||
|
-webkit-transform: translate3d(10px, 0, 0);
|
||||||
|
transform: translate3d(10px, 0, 0);
|
||||||
|
}
|
||||||
|
|
||||||
|
.lg-show-in .lg-hide-items .lg-toolbar {
|
||||||
|
opacity: 0;
|
||||||
|
-webkit-transform: translate3d(0, -10px, 0);
|
||||||
|
transform: translate3d(0, -10px, 0);
|
||||||
|
}
|
||||||
|
|
||||||
|
.lg-show-in .lg-hide-items.lg-hide-sub-html .lg-sub-html {
|
||||||
|
opacity: 0;
|
||||||
|
-webkit-transform: translate3d(0, 20px, 0);
|
||||||
|
transform: translate3d(0, 20px, 0);
|
||||||
|
}
|
||||||
|
|
||||||
|
.lg-outer {
|
||||||
|
width: 100%;
|
||||||
|
height: 100%;
|
||||||
|
position: fixed;
|
||||||
|
top: 0;
|
||||||
|
left: 0;
|
||||||
|
z-index: 1050;
|
||||||
|
text-align: left;
|
||||||
|
opacity: 0.001;
|
||||||
|
outline: none;
|
||||||
|
will-change: auto;
|
||||||
|
overflow: hidden;
|
||||||
|
-webkit-transition: opacity 0.15s ease 0s;
|
||||||
|
-o-transition: opacity 0.15s ease 0s;
|
||||||
|
transition: opacity 0.15s ease 0s;
|
||||||
|
}
|
||||||
|
|
||||||
|
.lg-outer * {
|
||||||
|
-webkit-box-sizing: border-box;
|
||||||
|
-moz-box-sizing: border-box;
|
||||||
|
box-sizing: border-box;
|
||||||
|
}
|
||||||
|
|
||||||
|
.lg-outer.lg-zoom-from-image {
|
||||||
|
opacity: 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
.lg-outer.lg-visible {
|
||||||
|
opacity: 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
.lg-outer.lg-css3 .lg-item:not(.lg-start-end-progress).lg-prev-slide, .lg-outer.lg-css3 .lg-item:not(.lg-start-end-progress).lg-next-slide, .lg-outer.lg-css3 .lg-item:not(.lg-start-end-progress).lg-current {
|
||||||
|
-webkit-transition-duration: inherit !important;
|
||||||
|
transition-duration: inherit !important;
|
||||||
|
-webkit-transition-timing-function: inherit !important;
|
||||||
|
transition-timing-function: inherit !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
.lg-outer.lg-css3.lg-dragging .lg-item.lg-prev-slide, .lg-outer.lg-css3.lg-dragging .lg-item.lg-next-slide, .lg-outer.lg-css3.lg-dragging .lg-item.lg-current {
|
||||||
|
-webkit-transition-duration: 0s !important;
|
||||||
|
transition-duration: 0s !important;
|
||||||
|
opacity: 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
.lg-outer.lg-grab img.lg-object {
|
||||||
|
cursor: -webkit-grab;
|
||||||
|
cursor: -moz-grab;
|
||||||
|
cursor: -o-grab;
|
||||||
|
cursor: -ms-grab;
|
||||||
|
cursor: grab;
|
||||||
|
}
|
||||||
|
|
||||||
|
.lg-outer.lg-grabbing img.lg-object {
|
||||||
|
cursor: move;
|
||||||
|
cursor: -webkit-grabbing;
|
||||||
|
cursor: -moz-grabbing;
|
||||||
|
cursor: -o-grabbing;
|
||||||
|
cursor: -ms-grabbing;
|
||||||
|
cursor: grabbing;
|
||||||
|
}
|
||||||
|
|
||||||
|
.lg-outer .lg-content {
|
||||||
|
position: absolute;
|
||||||
|
top: 0;
|
||||||
|
left: 0;
|
||||||
|
right: 0;
|
||||||
|
bottom: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.lg-outer .lg-inner {
|
||||||
|
width: 100%;
|
||||||
|
position: absolute;
|
||||||
|
left: 0;
|
||||||
|
top: 0;
|
||||||
|
bottom: 0;
|
||||||
|
-webkit-transition: opacity 0s;
|
||||||
|
-o-transition: opacity 0s;
|
||||||
|
transition: opacity 0s;
|
||||||
|
white-space: nowrap;
|
||||||
|
}
|
||||||
|
|
||||||
|
.lg-outer .lg-item {
|
||||||
|
display: none !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
.lg-outer .lg-item:not(.lg-start-end-progress) {
|
||||||
|
background: url("../images/loading.gif") no-repeat scroll center center transparent;
|
||||||
|
}
|
||||||
|
|
||||||
|
.lg-outer.lg-css3 .lg-prev-slide,
|
||||||
|
.lg-outer.lg-css3 .lg-current,
|
||||||
|
.lg-outer.lg-css3 .lg-next-slide {
|
||||||
|
display: inline-block !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
.lg-outer.lg-css .lg-current {
|
||||||
|
display: inline-block !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
.lg-outer .lg-item,
|
||||||
|
.lg-outer .lg-img-wrap {
|
||||||
|
display: inline-block;
|
||||||
|
text-align: center;
|
||||||
|
position: absolute;
|
||||||
|
width: 100%;
|
||||||
|
height: 100%;
|
||||||
|
}
|
||||||
|
|
||||||
|
.lg-outer .lg-item:before,
|
||||||
|
.lg-outer .lg-img-wrap:before {
|
||||||
|
content: '';
|
||||||
|
display: inline-block;
|
||||||
|
height: 100%;
|
||||||
|
vertical-align: middle;
|
||||||
|
}
|
||||||
|
|
||||||
|
.lg-outer .lg-img-wrap {
|
||||||
|
position: absolute;
|
||||||
|
left: 0;
|
||||||
|
right: 0;
|
||||||
|
top: 0;
|
||||||
|
bottom: 0;
|
||||||
|
white-space: nowrap;
|
||||||
|
font-size: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.lg-outer .lg-item.lg-complete {
|
||||||
|
background-image: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
.lg-outer .lg-item.lg-current {
|
||||||
|
z-index: 1060;
|
||||||
|
}
|
||||||
|
|
||||||
|
.lg-outer .lg-object {
|
||||||
|
display: inline-block;
|
||||||
|
vertical-align: middle;
|
||||||
|
max-width: 100%;
|
||||||
|
max-height: 100%;
|
||||||
|
width: auto;
|
||||||
|
height: auto;
|
||||||
|
position: relative;
|
||||||
|
}
|
||||||
|
|
||||||
|
.lg-outer .lg-empty-html.lg-sub-html,
|
||||||
|
.lg-outer .lg-empty-html .lg-sub-html {
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
.lg-outer.lg-hide-download .lg-download {
|
||||||
|
opacity: 0.75;
|
||||||
|
pointer-events: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
.lg-outer .lg-first-slide .lg-dummy-img {
|
||||||
|
position: absolute;
|
||||||
|
top: 50%;
|
||||||
|
left: 50%;
|
||||||
|
}
|
||||||
|
|
||||||
|
.lg-outer.lg-components-open:not(.lg-zoomed) .lg-components {
|
||||||
|
-webkit-transform: translate3d(0, 0%, 0);
|
||||||
|
transform: translate3d(0, 0%, 0);
|
||||||
|
opacity: 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
.lg-outer.lg-components-open:not(.lg-zoomed) .lg-sub-html {
|
||||||
|
opacity: 1;
|
||||||
|
transition: opacity 0.2s ease-out 0.15s;
|
||||||
|
}
|
||||||
|
|
||||||
|
.lg-backdrop {
|
||||||
|
position: fixed;
|
||||||
|
top: 0;
|
||||||
|
left: 0;
|
||||||
|
right: 0;
|
||||||
|
bottom: 0;
|
||||||
|
z-index: 1040;
|
||||||
|
background-color: #000;
|
||||||
|
opacity: 0;
|
||||||
|
will-change: auto;
|
||||||
|
-webkit-transition: opacity 333ms ease-in 0s;
|
||||||
|
-o-transition: opacity 333ms ease-in 0s;
|
||||||
|
transition: opacity 333ms ease-in 0s;
|
||||||
|
}
|
||||||
|
|
||||||
|
.lg-backdrop.in {
|
||||||
|
opacity: 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
.lg-css3.lg-no-trans .lg-prev-slide,
|
||||||
|
.lg-css3.lg-no-trans .lg-next-slide,
|
||||||
|
.lg-css3.lg-no-trans .lg-current {
|
||||||
|
-webkit-transition: none 0s ease 0s !important;
|
||||||
|
-moz-transition: none 0s ease 0s !important;
|
||||||
|
-o-transition: none 0s ease 0s !important;
|
||||||
|
transition: none 0s ease 0s !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
.lg-css3.lg-use-css3 .lg-item {
|
||||||
|
-webkit-backface-visibility: hidden;
|
||||||
|
-moz-backface-visibility: hidden;
|
||||||
|
backface-visibility: hidden;
|
||||||
|
}
|
||||||
|
|
||||||
|
.lg-css3.lg-fade .lg-item {
|
||||||
|
opacity: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.lg-css3.lg-fade .lg-item.lg-current {
|
||||||
|
opacity: 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
.lg-css3.lg-fade .lg-item.lg-prev-slide, .lg-css3.lg-fade .lg-item.lg-next-slide, .lg-css3.lg-fade .lg-item.lg-current {
|
||||||
|
-webkit-transition: opacity 0.1s ease 0s;
|
||||||
|
-moz-transition: opacity 0.1s ease 0s;
|
||||||
|
-o-transition: opacity 0.1s ease 0s;
|
||||||
|
transition: opacity 0.1s ease 0s;
|
||||||
|
}
|
||||||
|
|
||||||
|
.lg-css3.lg-use-css3 .lg-item.lg-start-progress {
|
||||||
|
-webkit-transition: -webkit-transform 1s cubic-bezier(0.175, 0.885, 0.32, 1.275) 0s;
|
||||||
|
-moz-transition: -moz-transform 1s cubic-bezier(0.175, 0.885, 0.32, 1.275) 0s;
|
||||||
|
-o-transition: -o-transform 1s cubic-bezier(0.175, 0.885, 0.32, 1.275) 0s;
|
||||||
|
transition: transform 1s cubic-bezier(0.175, 0.885, 0.32, 1.275) 0s;
|
||||||
|
}
|
||||||
|
|
||||||
|
.lg-css3.lg-use-css3 .lg-item.lg-start-end-progress {
|
||||||
|
-webkit-transition: -webkit-transform 1s cubic-bezier(0, 0, 0.25, 1) 0s;
|
||||||
|
-moz-transition: -moz-transform 1s cubic-bezier(0, 0, 0.25, 1) 0s;
|
||||||
|
-o-transition: -o-transform 1s cubic-bezier(0, 0, 0.25, 1) 0s;
|
||||||
|
transition: transform 1s cubic-bezier(0, 0, 0.25, 1) 0s;
|
||||||
|
}
|
||||||
|
|
||||||
|
.lg-css3.lg-slide.lg-use-css3 .lg-item {
|
||||||
|
opacity: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.lg-css3.lg-slide.lg-use-css3 .lg-item.lg-prev-slide {
|
||||||
|
-webkit-transform: translate3d(-100%, 0, 0);
|
||||||
|
transform: translate3d(-100%, 0, 0);
|
||||||
|
}
|
||||||
|
|
||||||
|
.lg-css3.lg-slide.lg-use-css3 .lg-item.lg-next-slide {
|
||||||
|
-webkit-transform: translate3d(100%, 0, 0);
|
||||||
|
transform: translate3d(100%, 0, 0);
|
||||||
|
}
|
||||||
|
|
||||||
|
.lg-css3.lg-slide.lg-use-css3 .lg-item.lg-current {
|
||||||
|
-webkit-transform: translate3d(0, 0, 0);
|
||||||
|
transform: translate3d(0, 0, 0);
|
||||||
|
opacity: 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
.lg-css3.lg-slide.lg-use-css3 .lg-item.lg-prev-slide, .lg-css3.lg-slide.lg-use-css3 .lg-item.lg-next-slide, .lg-css3.lg-slide.lg-use-css3 .lg-item.lg-current {
|
||||||
|
-webkit-transition: -webkit-transform 1s cubic-bezier(0, 0, 0.25, 1) 0s, opacity 0.1s ease 0s;
|
||||||
|
-moz-transition: -moz-transform 1s cubic-bezier(0, 0, 0.25, 1) 0s, opacity 0.1s ease 0s;
|
||||||
|
-o-transition: -o-transform 1s cubic-bezier(0, 0, 0.25, 1) 0s, opacity 0.1s ease 0s;
|
||||||
|
transition: transform 1s cubic-bezier(0, 0, 0.25, 1) 0s, opacity 0.1s ease 0s;
|
||||||
|
}
|
||||||
|
|
||||||
|
.lg-container {
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
.lg-container.lg-show {
|
||||||
|
display: block;
|
||||||
|
}
|
||||||
|
|
||||||
|
.lg-container.lg-dragging-vertical .lg-backdrop {
|
||||||
|
-webkit-transition-duration: 0s !important;
|
||||||
|
transition-duration: 0s !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
.lg-container.lg-dragging-vertical .lg-css3 .lg-item.lg-current {
|
||||||
|
-webkit-transition-duration: 0s !important;
|
||||||
|
transition-duration: 0s !important;
|
||||||
|
opacity: 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
.lg-inline .lg-backdrop,
|
||||||
|
.lg-inline .lg-outer {
|
||||||
|
position: absolute;
|
||||||
|
}
|
||||||
|
|
||||||
|
.lg-inline .lg-backdrop {
|
||||||
|
z-index: 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
.lg-inline .lg-outer {
|
||||||
|
z-index: 2;
|
||||||
|
}
|
||||||
|
|
||||||
|
.lg-inline .lg-maximize:after {
|
||||||
|
content: '\e909';
|
||||||
|
}
|
||||||
|
|
||||||
|
.lg-components {
|
||||||
|
-webkit-transform: translate3d(0, 100%, 0);
|
||||||
|
transform: translate3d(0, 100%, 0);
|
||||||
|
will-change: transform;
|
||||||
|
-webkit-transition: -webkit-transform 0.35s ease-out 0s;
|
||||||
|
-moz-transition: -moz-transform 0.35s ease-out 0s;
|
||||||
|
-o-transition: -o-transform 0.35s ease-out 0s;
|
||||||
|
transition: transform 0.35s ease-out 0s;
|
||||||
|
z-index: 1080;
|
||||||
|
position: absolute;
|
||||||
|
bottom: 0;
|
||||||
|
right: 0;
|
||||||
|
left: 0;
|
||||||
|
}
|
||||||
8
assets/assets/lightgallery.min.js
vendored
Normal file
8
assets/assets/lightgallery.min.js
vendored
Normal file
File diff suppressed because one or more lines are too long
48
cavelab_notes.txt
Normal file
48
cavelab_notes.txt
Normal file
@ -0,0 +1,48 @@
|
|||||||
|
CMH, 2022-09-04
|
||||||
|
|
||||||
|
As the filenames would imply, there are two shortcodes:
|
||||||
|
- gallery, in layouts/shortcodes/gallery.html
|
||||||
|
- figure, in layouts/shortcodes/figure.html
|
||||||
|
|
||||||
|
'gallery' has a single purpose: to wrap multiple items in a
|
||||||
|
photo container. It takes no parameters.
|
||||||
|
|
||||||
|
'figure' inserts pictures, which should be done inside 'gallery'
|
||||||
|
shortcode. Its parameters are:
|
||||||
|
|
||||||
|
- 'resources', a required parameter which will be matched against page
|
||||||
|
resources. This can be a single image name, or it can use globbing,
|
||||||
|
e.g. "figure/**.jpg" to match every JPEG.
|
||||||
|
- 'page', an optional parameter for the name of the page in which to
|
||||||
|
find these page resources. By default this is the current page.
|
||||||
|
- 'linkto', an optional parameter to have the photo's caption (when
|
||||||
|
clicked) also be a link to another Hugo page. This must be a
|
||||||
|
reference Hugo knows how to resolve, e.g. "/about.md". By default,
|
||||||
|
no link is generated.
|
||||||
|
- 'title', an optional parameter to set the caption's text. This
|
||||||
|
caption will be, in order of preference:
|
||||||
|
- The value specified in this parameter
|
||||||
|
- Exif title specified in a corresponding JSON to the image (see
|
||||||
|
the cavelab URL below for how to generate this)
|
||||||
|
- If 'linkto' is specified, that page's title
|
||||||
|
- The filename itself
|
||||||
|
|
||||||
|
Note that if 'resources' specifies multiple photos (e.g. with
|
||||||
|
globbing), then 'linkto' and 'title' will apply to all such photos.
|
||||||
|
Their typical usage is when 'resources' specifies a single file.
|
||||||
|
|
||||||
|
An example usage is something like:
|
||||||
|
|
||||||
|
{{< gallery >}}
|
||||||
|
{{< figure resources="image/foo.jpg" title="Foo (a JPEG)" linkto="/about.md">}}
|
||||||
|
{{< figure page="images" resources="figure/**.jpg" >}}
|
||||||
|
{{</ gallery >}}
|
||||||
|
|
||||||
|
This would make a gallery where the first item is the page resource
|
||||||
|
'image/foo.jpg' on the current page, and its caption has "Foo (a
|
||||||
|
JPEG)" as its text, and the text is also a link to the About page.
|
||||||
|
The gallery's following items are every JPEG in the 'figure' directory
|
||||||
|
of the page resources for the 'images' page.
|
||||||
|
|
||||||
|
This started from a setup documented at:
|
||||||
|
https://blog.cavelab.dev/2021/04/photo-gallery-posts/
|
||||||
@ -84,6 +84,10 @@ url = "/works/front"
|
|||||||
title = "Archive"
|
title = "Archive"
|
||||||
url = "/archive"
|
url = "/archive"
|
||||||
|
|
||||||
|
[[params.nav.custom]]
|
||||||
|
title = "Pages"
|
||||||
|
url = "/pages"
|
||||||
|
|
||||||
# Disable these for now until I fix the tags/categories a bit:
|
# Disable these for now until I fix the tags/categories a bit:
|
||||||
# [[params.nav.custom]]
|
# [[params.nav.custom]]
|
||||||
# title = "Tags"
|
# title = "Tags"
|
||||||
|
|||||||
@ -13,7 +13,7 @@ _Adjectives I wrote:_ Atmospheric, ambient, relaxing
|
|||||||
|
|
||||||
_Where to get it:_ The SoundLift page. For now.
|
_Where to get it:_ The SoundLift page. For now.
|
||||||
|
|
||||||
{{< figure page="images" resource="2007-2008-old-wordpress/2008/03/innermost.jpg" noresize=1 >}}
|
{{< figure page="images" resources="2007-2008-old-wordpress/2008/03/innermost.jpg" noresize=1 >}}
|
||||||
|
|
||||||
**innermost**
|
**innermost**
|
||||||
|
|
||||||
|
|||||||
@ -5,7 +5,7 @@ date: "2007-07-25"
|
|||||||
|
|
||||||
[Kahvi Collective](http://www.kahvi.org/) has been one of my favorite music sites since maybe 2006. Every release I can remember has always been of very good quality and included some interesting album artwork. Any Kahvi link I post is generally going to have a link to a full download of the album in MP3 and Ogg Vorbis.
|
[Kahvi Collective](http://www.kahvi.org/) has been one of my favorite music sites since maybe 2006. Every release I can remember has always been of very good quality and included some interesting album artwork. Any Kahvi link I post is generally going to have a link to a full download of the album in MP3 and Ogg Vorbis.
|
||||||
|
|
||||||
{{< figure page="images" resource="2007-2008-old-wordpress/2008/03/balloon_lrg.jpg" noresize=1 >}}
|
{{< figure page="images" resources="2007-2008-old-wordpress/2008/03/balloon_lrg.jpg" noresize=1 >}}
|
||||||
|
|
||||||
**"Red Balloon" by General Fuzz**
|
**"Red Balloon" by General Fuzz**
|
||||||
|
|
||||||
@ -15,7 +15,7 @@ This is [kahvi #216](http://www.kahvi.org/releases.php?release_number=216). Here
|
|||||||
|
|
||||||
- I listened to these before bed; they had some nice imagery and visualizations
|
- I listened to these before bed; they had some nice imagery and visualizations
|
||||||
|
|
||||||
{{< figure page="images" resource="2007-2008-old-wordpress/2008/03/cryogenic_lrg.jpg" noresize=1 >}}
|
{{< figure page="images" resources="2007-2008-old-wordpress/2008/03/cryogenic_lrg.jpg" noresize=1 >}}
|
||||||
|
|
||||||
**Dream Lab - Cryogenic EP**
|
**Dream Lab - Cryogenic EP**
|
||||||
|
|
||||||
|
|||||||
@ -3,13 +3,13 @@ title: "2007-07-25, more backlog (Coax, Workbench, Brioskj)"
|
|||||||
date: "2007-07-25"
|
date: "2007-07-25"
|
||||||
---
|
---
|
||||||
|
|
||||||
{{< figure page="images" resource="2007-2008-old-wordpress/2008/03/coax_lrg.jpg" noresize=1 >}}
|
{{< figure page="images" resources="2007-2008-old-wordpress/2008/03/coax_lrg.jpg" noresize=1 >}}
|
||||||
|
|
||||||
**Coax - Celethyst EP**
|
**Coax - Celethyst EP**
|
||||||
|
|
||||||
This is [kahvi #185](http://www.kahvi.org/releases.php?release_number=185). I described it as fast-moving and squirrely. It differs a bit from most of the other things I've heard on Kahvi, but I still like it.
|
This is [kahvi #185](http://www.kahvi.org/releases.php?release_number=185). I described it as fast-moving and squirrely. It differs a bit from most of the other things I've heard on Kahvi, but I still like it.
|
||||||
|
|
||||||
{{< figure page="images" resource="2007-2008-old-wordpress/2008/03/workbench_lrg.jpg" noresize=1 >}}
|
{{< figure page="images" resources="2007-2008-old-wordpress/2008/03/workbench_lrg.jpg" noresize=1 >}}
|
||||||
|
|
||||||
**Workbench - Detour EP**
|
**Workbench - Detour EP**
|
||||||
|
|
||||||
@ -20,7 +20,7 @@ This is [kahvi #171](http://www.kahvi.org/releases.php?release_number=171). This
|
|||||||
|
|
||||||
I love this entire album. It's extremely relaxing, but without being boring or dull.
|
I love this entire album. It's extremely relaxing, but without being boring or dull.
|
||||||
|
|
||||||
{{< figure page="images" resource="2007-2008-old-wordpress/2008/03/escape_lrg.jpg" noresize=1 >}}
|
{{< figure page="images" resources="2007-2008-old-wordpress/2008/03/escape_lrg.jpg" noresize=1 >}}
|
||||||
|
|
||||||
**Brioskj - Escape from the City**
|
**Brioskj - Escape from the City**
|
||||||
|
|
||||||
|
|||||||
@ -3,7 +3,7 @@ title: "2007-07-30, backlog (Miss Moonlight)"
|
|||||||
date: "2007-07-30"
|
date: "2007-07-30"
|
||||||
---
|
---
|
||||||
|
|
||||||
{{< figure page="images" resource="2007-2008-old-wordpress/2008/03/007770053_miss_moonlight_-_save_us.jpg" noresize=1 >}}
|
{{< figure page="images" resources="2007-2008-old-wordpress/2008/03/007770053_miss_moonlight_-_save_us.jpg" noresize=1 >}}
|
||||||
|
|
||||||
**Miss Moonlight - Save Us**
|
**Miss Moonlight - Save Us**
|
||||||
|
|
||||||
|
|||||||
@ -3,7 +3,7 @@ title: "2007-10-12, backlog (Scann-Tec)"
|
|||||||
date: "2007-10-12"
|
date: "2007-10-12"
|
||||||
---
|
---
|
||||||
|
|
||||||
{{< figure page="images" resource="2007-2008-old-wordpress/2008/03/offline_lrg.jpg" noresize=1 >}}
|
{{< figure page="images" resources="2007-2008-old-wordpress/2008/03/offline_lrg.jpg" noresize=1 >}}
|
||||||
|
|
||||||
**Scann-Tec - The Man Who Lives Offline**
|
**Scann-Tec - The Man Who Lives Offline**
|
||||||
|
|
||||||
|
|||||||
@ -3,7 +3,7 @@ title: "2007-10-13, backlog (Cardamar, Dream Lab)"
|
|||||||
date: "2007-10-13"
|
date: "2007-10-13"
|
||||||
---
|
---
|
||||||
|
|
||||||
{{< figure page="images" resource="2007-2008-old-wordpress/2008/03/011.jpg" noresize=1 >}}
|
{{< figure page="images" resources="2007-2008-old-wordpress/2008/03/011.jpg" noresize=1 >}}
|
||||||
|
|
||||||
**Cardamar - Sequence Breaker EP**
|
**Cardamar - Sequence Breaker EP**
|
||||||
|
|
||||||
@ -15,7 +15,7 @@ This is [Cardamar PARO011](http://www.cardamar.com/releases.php?release=PARO011#
|
|||||||
|
|
||||||
_Where to get it:_ I don't know, because it's no longer sold at Cardamar Music.
|
_Where to get it:_ I don't know, because it's no longer sold at Cardamar Music.
|
||||||
|
|
||||||
{{< figure page="images" resource="2007-2008-old-wordpress/2008/03/010.jpg" noresize=1 >}}
|
{{< figure page="images" resources="2007-2008-old-wordpress/2008/03/010.jpg" noresize=1 >}}
|
||||||
|
|
||||||
**Dream Lab - Cosmotherapy**
|
**Dream Lab - Cosmotherapy**
|
||||||
|
|
||||||
|
|||||||
@ -3,7 +3,7 @@ title: "2007-10-16, backlog (krill minima)"
|
|||||||
date: "2007-10-16"
|
date: "2007-10-16"
|
||||||
---
|
---
|
||||||
|
|
||||||
{{< figure page="images" resource="2007-2008-old-wordpress/2008/03/thn098-00-krill.minima_-_urlaub_auf_balkonien.jpg" noresize=1 >}}
|
{{< figure page="images" resources="2007-2008-old-wordpress/2008/03/thn098-00-krill.minima_-_urlaub_auf_balkonien.jpg" noresize=1 >}}
|
||||||
|
|
||||||
**krill minima - urlaub auf balkonien**
|
**krill minima - urlaub auf balkonien**
|
||||||
|
|
||||||
|
|||||||
@ -3,9 +3,9 @@ title: "2007-11-03, backlog (Eloi Brunelle)"
|
|||||||
date: "2007-11-03"
|
date: "2007-11-03"
|
||||||
---
|
---
|
||||||
|
|
||||||
{{< figure page="images" resource="2007-2008-old-wordpress/2008/03/1152891438-2799.jpg" noresize=1 >}}
|
{{< figure page="images" resources="2007-2008-old-wordpress/2008/03/1152891438-2799.jpg" noresize=1 >}}
|
||||||
{{< figure page="images" resource="2007-2008-old-wordpress/2008/03/epsilonlablogo.gif" noresize=1 >}}
|
{{< figure page="images" resources="2007-2008-old-wordpress/2008/03/epsilonlablogo.gif" noresize=1 >}}
|
||||||
{{< figure page="images" resource="2007-2008-old-wordpress/2008/03/epsilonlabtext.gif" noresize=1 >}}
|
{{< figure page="images" resources="2007-2008-old-wordpress/2008/03/epsilonlabtext.gif" noresize=1 >}}
|
||||||
|
|
||||||
**Eloi Brunelle - The Love EP**
|
**Eloi Brunelle - The Love EP**
|
||||||
|
|
||||||
|
|||||||
@ -3,7 +3,7 @@ title: "2007-12-11, backlog (various ctgmusic links)"
|
|||||||
date: "2007-12-11"
|
date: "2007-12-11"
|
||||||
---
|
---
|
||||||
|
|
||||||
{{< figure page="images" resource="2007-2008-old-wordpress/2008/03/get_pic.jpeg" noresize=1 >}}
|
{{< figure page="images" resources="2007-2008-old-wordpress/2008/03/get_pic.jpeg" noresize=1 >}}
|
||||||
|
|
||||||
**RMS Maryse**
|
**RMS Maryse**
|
||||||
|
|
||||||
@ -16,7 +16,7 @@ I must not have liked anything this artist did, because I wrote "Avoid completel
|
|||||||
|
|
||||||
_Where to get it:_ [Here](http://www.ctgmusic.com/song.php?id=15905) at ctgmusic
|
_Where to get it:_ [Here](http://www.ctgmusic.com/song.php?id=15905) at ctgmusic
|
||||||
|
|
||||||
{{< figure page="images" resource="2007-2008-old-wordpress/2008/03/easterisland.jpg" noresize=1 >}}
|
{{< figure page="images" resources="2007-2008-old-wordpress/2008/03/easterisland.jpg" noresize=1 >}}
|
||||||
|
|
||||||
**Mindmasher - Easter Eyeland**
|
**Mindmasher - Easter Eyeland**
|
||||||
|
|
||||||
@ -27,7 +27,7 @@ I think I vaguely remember this track being good and pretty unique. This artist
|
|||||||
|
|
||||||
_Where to get it:_ [Here](http://www.ctgmusic.com/song.php?id=15890) at ctgmusic
|
_Where to get it:_ [Here](http://www.ctgmusic.com/song.php?id=15890) at ctgmusic
|
||||||
|
|
||||||
{{< figure page="images" resource="2007-2008-old-wordpress/2008/03/50005856482.jpg" noresize=1 >}}
|
{{< figure page="images" resources="2007-2008-old-wordpress/2008/03/50005856482.jpg" noresize=1 >}}
|
||||||
|
|
||||||
**Fleeticer**
|
**Fleeticer**
|
||||||
|
|
||||||
|
|||||||
@ -3,7 +3,7 @@ title: "2007-12-21, backlog (speak, Polaski, coax)"
|
|||||||
date: "2007-12-21"
|
date: "2007-12-21"
|
||||||
---
|
---
|
||||||
|
|
||||||
{{< figure page="images" resource="2007-2008-old-wordpress/2008/03/mindsplit_lrg.jpg" noresize=1 >}}
|
{{< figure page="images" resources="2007-2008-old-wordpress/2008/03/mindsplit_lrg.jpg" noresize=1 >}}
|
||||||
|
|
||||||
**"Speak" by Mindsplit**
|
**"Speak" by Mindsplit**
|
||||||
|
|
||||||
@ -15,13 +15,13 @@ This is [kahvi #228](http://www.kahvi.org/releases.php?release_number=228). I re
|
|||||||
|
|
||||||
So I guess I liked it but I can't remember much else.
|
So I guess I liked it but I can't remember much else.
|
||||||
|
|
||||||
{{< figure page="images" resource="2007-2008-old-wordpress/2008/03/planets_lrg.jpg" noresize=1 >}}
|
{{< figure page="images" resources="2007-2008-old-wordpress/2008/03/planets_lrg.jpg" noresize=1 >}}
|
||||||
|
|
||||||
I wrote about [kahvi #229](http://www.kahvi.org/releases.php?release_number=229) like coax wrote it, however it seems coax had nothing to do with it, so I am rather confused. But I said: "Flows well, atmospheric/ambient-ish, melodic"
|
I wrote about [kahvi #229](http://www.kahvi.org/releases.php?release_number=229) like coax wrote it, however it seems coax had nothing to do with it, so I am rather confused. But I said: "Flows well, atmospheric/ambient-ish, melodic"
|
||||||
|
|
||||||
Whatever.
|
Whatever.
|
||||||
|
|
||||||
{{< figure page="images" resource="2007-2008-old-wordpress/2008/03/twilight_snow_lrg.jpg" noresize=1 >}}
|
{{< figure page="images" resources="2007-2008-old-wordpress/2008/03/twilight_snow_lrg.jpg" noresize=1 >}}
|
||||||
|
|
||||||
**Coax - Twilight Snow**
|
**Coax - Twilight Snow**
|
||||||
|
|
||||||
|
|||||||
@ -3,7 +3,7 @@ title: "2007-12-28, backlog (ultramar)"
|
|||||||
date: "2007-12-28"
|
date: "2007-12-28"
|
||||||
---
|
---
|
||||||
|
|
||||||
{{< figure page="images" resource="2007-2008-old-wordpress/2008/03/thn099-00-gaston_arevalo_-_ultramar.jpg" noresize=1 >}}
|
{{< figure page="images" resources="2007-2008-old-wordpress/2008/03/thn099-00-gaston_arevalo_-_ultramar.jpg" noresize=1 >}}
|
||||||
|
|
||||||
**gastón arévalo – ultramar**
|
**gastón arévalo – ultramar**
|
||||||
|
|
||||||
|
|||||||
@ -3,7 +3,7 @@ title: "2008-01-17, backlog (vortechtral)"
|
|||||||
date: "2008-01-17"
|
date: "2008-01-17"
|
||||||
---
|
---
|
||||||
|
|
||||||
{{< figure page="images" resource="2007-2008-old-wordpress/2008/03/emrmp0001.jpg" noresize=1 >}}
|
{{< figure page="images" resources="2007-2008-old-wordpress/2008/03/emrmp0001.jpg" noresize=1 >}}
|
||||||
|
|
||||||
**Vortechtral - Technical EP**
|
**Vortechtral - Technical EP**
|
||||||
|
|
||||||
|
|||||||
@ -14,8 +14,6 @@ tags:
|
|||||||
- workfest
|
- workfest
|
||||||
---
|
---
|
||||||
|
|
||||||
{{< load-photoswipe >}}
|
|
||||||
|
|
||||||
It's quite different.
|
It's quite different.
|
||||||
|
|
||||||
People are open. Their groups are open.
|
People are open. Their groups are open.
|
||||||
@ -33,8 +31,8 @@ They're out of that context. They look like they're in the context they belong.
|
|||||||
|
|
||||||
My Canon camera is probably almost out of battery power, despite efforts. I should have brought the charger. But I have the Kodak too. Maybe it will show some of the picturesque terrain.
|
My Canon camera is probably almost out of battery power, despite efforts. I should have brought the charger. But I have the Kodak too. Maybe it will show some of the picturesque terrain.
|
||||||
|
|
||||||
{{< figure page="images" resource="2008-03-workfest/img_6262.jpg" caption="Camp AJ from one angle">}}
|
{{< figure page="images" resources="2008-03-workfest/img_6262.jpg" caption="Camp AJ from one angle">}}
|
||||||
{{< figure page="images" resource="2008-03-workfest/img_6253.jpg" caption="Arriving at Camp AJ">}}
|
{{< figure page="images" resources="2008-03-workfest/img_6253.jpg" caption="Arriving at Camp AJ">}}
|
||||||
{{< figure page="images" resource="2008-03-workfest/img_6265.jpg" caption="Playground and climbing wall near entrance road">}}
|
{{< figure page="images" resources="2008-03-workfest/img_6265.jpg" caption="Playground and climbing wall near entrance road">}}
|
||||||
|
|
||||||
(Later note: That is [Camp AJ, 2549 Sand Lick Rd, McKee, KY 40447](https://www.google.com/maps/dir/Cincinnati,+Ohio/Berea,+Kentucky/Camp+AJ,+2549+Sand+Lick+Rd,+McKee,+KY+40447/@37.488284,-84.0115257,16z/data=!4m19!4m18!1m5!1m1!1s0x884051b1de3821f9:0x69fb7e8be4c09317!2m2!1d-84.5120196!2d39.1031182!1m5!1m1!1s0x8842e18aa160b579:0xd32df1c2b2266672!2m2!1d-84.2963223!2d37.568694!1m5!1m1!1s0x884315ccbd7d479b:0x28e72c53d5d60a9d!2m2!1d-84.00718!2d37.4887543).)
|
(Later note: That is [Camp AJ, 2549 Sand Lick Rd, McKee, KY 40447](https://www.google.com/maps/dir/Cincinnati,+Ohio/Berea,+Kentucky/Camp+AJ,+2549+Sand+Lick+Rd,+McKee,+KY+40447/@37.488284,-84.0115257,16z/data=!4m19!4m18!1m5!1m1!1s0x884051b1de3821f9:0x69fb7e8be4c09317!2m2!1d-84.5120196!2d39.1031182!1m5!1m1!1s0x8842e18aa160b579:0xd32df1c2b2266672!2m2!1d-84.2963223!2d37.568694!1m5!1m1!1s0x884315ccbd7d479b:0x28e72c53d5d60a9d!2m2!1d-84.00718!2d37.4887543).)
|
||||||
|
|||||||
@ -14,8 +14,6 @@ tags:
|
|||||||
- workfest
|
- workfest
|
||||||
---
|
---
|
||||||
|
|
||||||
{{< load-photoswipe >}}
|
|
||||||
|
|
||||||
Proceed with first work day.
|
Proceed with first work day.
|
||||||
|
|
||||||
Due to loud snorers and periodic heater-startup and my cell phone failing to be a usable alarm after its batteries drained in standalone mode for no apparent reason, causing me to believe it was 6 AM when it was probably around 2 AM . . . I had very little sleep, and woke up pretty groggily and felt like eating nothing and doing nothing.
|
Due to loud snorers and periodic heater-startup and my cell phone failing to be a usable alarm after its batteries drained in standalone mode for no apparent reason, causing me to believe it was 6 AM when it was probably around 2 AM . . . I had very little sleep, and woke up pretty groggily and felt like eating nothing and doing nothing.
|
||||||
@ -30,12 +28,12 @@ A bluegrass band (Phillip Akemon and Flatlick) also came tonight. They were very
|
|||||||
|
|
||||||
I was talking to Lea and she told me she hated being around some of the Christians here... I don't totally blame her, even if I don't have the same view (yet). My view is that they are having a very positive outcome, and if they have to believe what they believe to achieve it, then so be it. They aren't pushing beliefs on anyone else, so I can't really criticize much.
|
I was talking to Lea and she told me she hated being around some of the Christians here... I don't totally blame her, even if I don't have the same view (yet). My view is that they are having a very positive outcome, and if they have to believe what they believe to achieve it, then so be it. They aren't pushing beliefs on anyone else, so I can't really criticize much.
|
||||||
|
|
||||||
{{< figure page="images" resource="2008-03-workfest/6282.jpg" caption="3 PM?" >}}
|
{{< figure page="images" resources="2008-03-workfest/6282.jpg" caption="3 PM?" >}}
|
||||||
|
|
||||||
{{< figure page="images" resource="2008-03-workfest/6285.jpg" caption="Phillip Akemon" >}}
|
{{< figure page="images" resources="2008-03-workfest/6285.jpg" caption="Phillip Akemon" >}}
|
||||||
|
|
||||||
{{< figure page="images" resource="2008-03-workfest/6289.jpg" caption="Mike Morgeson" >}}
|
{{< figure page="images" resources="2008-03-workfest/6289.jpg" caption="Mike Morgeson" >}}
|
||||||
|
|
||||||
{{< figure page="images" resource="2008-03-workfest/img_6291.jpg" caption="Kevin Amburgey & Phil" >}}
|
{{< figure page="images" resources="2008-03-workfest/img_6291.jpg" caption="Kevin Amburgey & Phil" >}}
|
||||||
|
|
||||||
{{< figure page="images" resource="2008-03-workfest/6292.jpg" caption="Phil & Phil Jr." >}}
|
{{< figure page="images" resources="2008-03-workfest/6292.jpg" caption="Phil & Phil Jr." >}}
|
||||||
|
|||||||
@ -14,8 +14,6 @@ tags:
|
|||||||
- workfest
|
- workfest
|
||||||
---
|
---
|
||||||
|
|
||||||
{{< load-photoswipe >}}
|
|
||||||
|
|
||||||
Well, scratch that part in the last entry about not pushing beliefs.
|
Well, scratch that part in the last entry about not pushing beliefs.
|
||||||
|
|
||||||
I slept like a rock (as MJ predicted), woke up groggily, and started another day. Work was a bit slow at first because my wrist was sore and it was hard to hammer, but everyone was pretty productive in general.
|
I slept like a rock (as MJ predicted), woke up groggily, and started another day. Work was a bit slow at first because my wrist was sore and it was hard to hammer, but everyone was pretty productive in general.
|
||||||
@ -32,14 +30,14 @@ I took a ton of pictures today... my 512 MB card is almost full in my Canon, but
|
|||||||
|
|
||||||
I understood some of what Jen Eich said months ago about being able to volunteer for a year without racking up debt - much of the staff lives in a sort of coop under CAP, with most expenses covered (like housing, insurance, and utilities) and a $150/month stipend. It looks very nice - if one is suitably dedicated.
|
I understood some of what Jen Eich said months ago about being able to volunteer for a year without racking up debt - much of the staff lives in a sort of coop under CAP, with most expenses covered (like housing, insurance, and utilities) and a $150/month stipend. It looks very nice - if one is suitably dedicated.
|
||||||
|
|
||||||
{{< figure page="images" resource="2008-03-workfest/6306.jpg" caption="Early stages of the deck">}}
|
{{< figure page="images" resources="2008-03-workfest/6306.jpg" caption="Early stages of the deck">}}
|
||||||
|
|
||||||
{{< figure page="images" resource="2008-03-workfest/6318.jpg" caption="Deck from the other side">}}
|
{{< figure page="images" resources="2008-03-workfest/6318.jpg" caption="Deck from the other side">}}
|
||||||
|
|
||||||
{{< figure page="images" resource="2008-03-workfest/6310.jpg" caption="Corrie & Christine putting up soffit">}}
|
{{< figure page="images" resources="2008-03-workfest/6310.jpg" caption="Corrie & Christine putting up soffit">}}
|
||||||
|
|
||||||
{{< figure page="images" resource="2008-03-workfest/6338.jpg" caption="Nearby road">}}
|
{{< figure page="images" resources="2008-03-workfest/6338.jpg" caption="Nearby road">}}
|
||||||
|
|
||||||
{{< figure page="images" resource="2008-03-workfest/6341.jpg" caption="Family cemetery">}}
|
{{< figure page="images" resources="2008-03-workfest/6341.jpg" caption="Family cemetery">}}
|
||||||
|
|
||||||
{{< figure page="images" resource="2008-03-workfest/6348.jpg" caption="Some kitten">}}
|
{{< figure page="images" resources="2008-03-workfest/6348.jpg" caption="Some kitten">}}
|
||||||
|
|||||||
@ -14,8 +14,6 @@ tags:
|
|||||||
- workfest
|
- workfest
|
||||||
---
|
---
|
||||||
|
|
||||||
{{< load-photoswipe >}}
|
|
||||||
|
|
||||||
Typical morning, finishing up of some work, watching a deck get assembled...
|
Typical morning, finishing up of some work, watching a deck get assembled...
|
||||||
|
|
||||||
After that we went to a church about 30-40 minutes away and had dinner with the families whose homes we were repairing. Some people got up to talk and expressed a lot of gratitude in general.
|
After that we went to a church about 30-40 minutes away and had dinner with the families whose homes we were repairing. Some people got up to talk and expressed a lot of gratitude in general.
|
||||||
@ -32,14 +30,14 @@ It's miles apart from other environments I've been in, where I had suspicion tha
|
|||||||
|
|
||||||
Photos:
|
Photos:
|
||||||
|
|
||||||
{{< figure page="images" resource="2008-03-workfest/img_6359.jpg" caption="Sky in the morning">}}
|
{{< figure page="images" resources="2008-03-workfest/img_6359.jpg" caption="Sky in the morning">}}
|
||||||
|
|
||||||
We were repairing Connie's house; this photo has Andy (one of the crew leaders), Connie, and Heather (Connie's daughter)
|
We were repairing Connie's house; this photo has Andy (one of the crew leaders), Connie, and Heather (Connie's daughter)
|
||||||
|
|
||||||
{{< figure page="images" resource="2008-03-workfest/6389e.jpg" caption="Andy, Connie, Heather">}}
|
{{< figure page="images" resources="2008-03-workfest/6389e.jpg" caption="Andy, Connie, Heather">}}
|
||||||
|
|
||||||
{{< figure page="images" resource="2008-03-workfest/6369e.jpg" caption="More progress on the deck">}}
|
{{< figure page="images" resources="2008-03-workfest/6369e.jpg" caption="More progress on the deck">}}
|
||||||
|
|
||||||
{{< figure page="images" resource="2008-03-workfest/6367e.jpg" caption="Random cat with no tail">}}
|
{{< figure page="images" resources="2008-03-workfest/6367e.jpg" caption="Random cat with no tail">}}
|
||||||
|
|
||||||
Random cat that would hang around
|
Random cat that would hang around
|
||||||
|
|||||||
@ -14,18 +14,16 @@ tags:
|
|||||||
- workfest
|
- workfest
|
||||||
---
|
---
|
||||||
|
|
||||||
{{< load-photoswipe >}}
|
|
||||||
|
|
||||||
I was too busy/asleep to write much of an entry, so I'll just post the few photos I have from the last two days.
|
I was too busy/asleep to write much of an entry, so I'll just post the few photos I have from the last two days.
|
||||||
|
|
||||||
Almost-completed deck:
|
Almost-completed deck:
|
||||||
|
|
||||||
{{< figure page="images" resource="2008-03-workfest/6422e.jpg" caption="Deck, almost finished">}}
|
{{< figure page="images" resources="2008-03-workfest/6422e.jpg" caption="Deck, almost finished">}}
|
||||||
|
|
||||||
Crate of [Ale-8-One](http://www.ale8one.com/) donated by someone whose name I forget:
|
Crate of [Ale-8-One](http://www.ale8one.com/) donated by someone whose name I forget:
|
||||||
|
|
||||||
{{< figure page="images" resource="2008-03-workfest/6425e.jpg" caption="Crate of Ale-8-One">}}
|
{{< figure page="images" resources="2008-03-workfest/6425e.jpg" caption="Crate of Ale-8-One">}}
|
||||||
|
|
||||||
Pastries which Andy took a lot of time preparing for breakfast:
|
Pastries which Andy took a lot of time preparing for breakfast:
|
||||||
|
|
||||||
{{< figure page="images" resource="2008-03-workfest/k6584e.jpg" caption="Pastries that Andy put a lot of work into">}}
|
{{< figure page="images" resources="2008-03-workfest/k6584e.jpg" caption="Pastries that Andy put a lot of work into">}}
|
||||||
|
|||||||
@ -10,8 +10,6 @@ categories:
|
|||||||
- Journal
|
- Journal
|
||||||
---
|
---
|
||||||
|
|
||||||
{{< load-photoswipe >}}
|
|
||||||
|
|
||||||
1. Declared myself a complete asshat for writing a blog about nothing
|
1. Declared myself a complete asshat for writing a blog about nothing
|
||||||
|
|
||||||
|
|
||||||
@ -21,7 +19,7 @@ categories:
|
|||||||
3. Broke the printer after two pages
|
3. Broke the printer after two pages
|
||||||
|
|
||||||
4. Discovered that while both my managers described the intern who had just left as essentially clueless, she had decorated the cubicle in interesting tiny artworks made with post-its and highlighter, like this:
|
4. Discovered that while both my managers described the intern who had just left as essentially clueless, she had decorated the cubicle in interesting tiny artworks made with post-its and highlighter, like this:
|
||||||
{{< figure page="images" resource="2008-04-work/cubicleart.jpg" >}}
|
{{< figure page="images" resources="2008-04-work/cubicleart.jpg" >}}
|
||||||
|
|
||||||
5. Was very glad that I took 2 hours several months ago to document WTF I was doing when I left, because I certainly did not remember
|
5. Was very glad that I took 2 hours several months ago to document WTF I was doing when I left, because I certainly did not remember
|
||||||
|
|
||||||
|
|||||||
@ -13,8 +13,6 @@ tags:
|
|||||||
- midi
|
- midi
|
||||||
---
|
---
|
||||||
|
|
||||||
{{< load-photoswipe >}}
|
|
||||||
|
|
||||||
I guess I'll repeat what some other people do, and put up blog entries about what they do with hardware...
|
I guess I'll repeat what some other people do, and put up blog entries about what they do with hardware...
|
||||||
|
|
||||||
**Alix.1C**
|
**Alix.1C**
|
||||||
@ -23,8 +21,8 @@ My [Alix.1C](http://www.mini-box.com/Alix-1C-Board-1-LAN-1-MINI-PCI?sc=8&categor
|
|||||||
|
|
||||||
This board is a 500 MHz AMD Geode with 256 MB RAM onboard; it uses about 5 watts and runs from 12VDC. It has a CompactFlash header onboard, so right now I am running Linux from a 128 MB card.
|
This board is a 500 MHz AMD Geode with 256 MB RAM onboard; it uses about 5 watts and runs from 12VDC. It has a CompactFlash header onboard, so right now I am running Linux from a 128 MB card.
|
||||||
|
|
||||||
{{< figure page="images" resource="2008-05-hardware/6547.jpg" caption="Alix.1C" >}}
|
{{< figure page="images" resources="2008-05-hardware/6547.jpg" caption="Alix.1C" >}}
|
||||||
{{< figure page="images" resource="2008-05-hardware/6549.jpg" caption="Alix.1C other view" >}}
|
{{< figure page="images" resources="2008-05-hardware/6549.jpg" caption="Alix.1C other view" >}}
|
||||||
|
|
||||||
**Edirol PCR-M50**
|
**Edirol PCR-M50**
|
||||||
|
|
||||||
@ -34,26 +32,26 @@ Some said they'd taken it apart and cleaned it to fix it. So I figured that woul
|
|||||||
|
|
||||||
Front cover off, after removing like 50 screws:
|
Front cover off, after removing like 50 screws:
|
||||||
|
|
||||||
{{< figure page="images" resource="2008-05-hardware/6553.jpg" caption="Edirol keyboard 1" >}}
|
{{< figure page="images" resources="2008-05-hardware/6553.jpg" caption="Edirol keyboard 1" >}}
|
||||||
{{< figure page="images" resource="2008-05-hardware/6554.jpg" caption="Edirol keyboard 2" >}}
|
{{< figure page="images" resources="2008-05-hardware/6554.jpg" caption="Edirol keyboard 2" >}}
|
||||||
|
|
||||||
So I started the process of removing keys because I could not see any other way to access the contacts. They grey part on the left in the first picture looks like about the same mechanism as a keyboard or older joystick pad. There are two pads for each key rather than just one, and my guess is that the one nearest the fulcrum is hit slightly sooner than the further one, and the time elapsed between the two hits is used to guess the velocity with which they key was struck.
|
So I started the process of removing keys because I could not see any other way to access the contacts. They grey part on the left in the first picture looks like about the same mechanism as a keyboard or older joystick pad. There are two pads for each key rather than just one, and my guess is that the one nearest the fulcrum is hit slightly sooner than the further one, and the time elapsed between the two hits is used to guess the velocity with which they key was struck.
|
||||||
|
|
||||||
Other than that, just a pretty easy-to-understand design. Each key is held up by a tension spring on the opposite side, and keys slide in and out pretty easily once the springs are gone. The only annoying part was all the white grease everywhere that kept getting all over my hands.
|
Other than that, just a pretty easy-to-understand design. Each key is held up by a tension spring on the opposite side, and keys slide in and out pretty easily once the springs are gone. The only annoying part was all the white grease everywhere that kept getting all over my hands.
|
||||||
|
|
||||||
{{< figure page="images" resource="2008-05-hardware/6555.jpg" caption="Edirol keyboard 3" >}}
|
{{< figure page="images" resources="2008-05-hardware/6555.jpg" caption="Edirol keyboard 3" >}}
|
||||||
{{< figure page="images" resource="2008-05-hardware/6556.jpg" caption="Edirol keyboard 4" >}}
|
{{< figure page="images" resources="2008-05-hardware/6556.jpg" caption="Edirol keyboard 4" >}}
|
||||||
|
|
||||||
And it's just connected electrically with a ribbon cable, normal 0.1" pitch, like an IDE header.
|
And it's just connected electrically with a ribbon cable, normal 0.1" pitch, like an IDE header.
|
||||||
|
|
||||||
{{< figure page="images" resource="2008-05-hardware/6557.jpg" caption="Edirol keyboard 5" >}}
|
{{< figure page="images" resources="2008-05-hardware/6557.jpg" caption="Edirol keyboard 5" >}}
|
||||||
|
|
||||||
So I proceeded to remove the first dozen or so keys by pulling out the springs, then white keys and black keys.
|
So I proceeded to remove the first dozen or so keys by pulling out the springs, then white keys and black keys.
|
||||||
|
|
||||||
The PCB in the next pictures looks almost black, but it should be more of a dark green. The lines are dust that came between the keys. In any case, these show the rubber(ish) part on top that the keys strike, and the gold PCB contacts beneath them.
|
The PCB in the next pictures looks almost black, but it should be more of a dark green. The lines are dust that came between the keys. In any case, these show the rubber(ish) part on top that the keys strike, and the gold PCB contacts beneath them.
|
||||||
|
|
||||||
{{< figure page="images" resource="2008-05-hardware/6562.jpg" caption="Edirol keyboard 6" >}}
|
{{< figure page="images" resources="2008-05-hardware/6562.jpg" caption="Edirol keyboard 6" >}}
|
||||||
{{< figure page="images" resource="2008-05-hardware/6563.jpg" caption="Edirol keyboard 7" >}}
|
{{< figure page="images" resources="2008-05-hardware/6563.jpg" caption="Edirol keyboard 7" >}}
|
||||||
|
|
||||||
Conveniently, there are four rubber sections (one per octave). Each two gold pads correspond to a key, and the holes between each are where the rubber section is secured.
|
Conveniently, there are four rubber sections (one per octave). Each two gold pads correspond to a key, and the holes between each are where the rubber section is secured.
|
||||||
|
|
||||||
|
|||||||
@ -12,8 +12,6 @@ categories:
|
|||||||
- Technobabble
|
- Technobabble
|
||||||
---
|
---
|
||||||
|
|
||||||
{{< load-photoswipe >}}
|
|
||||||
|
|
||||||
[This page](http://geektechnique.org/index.php?id=254) at GeekTechnique discusses how most digital cameras are easily turned into infrared cameras by removing the IR blocking filter in front of the CCD, and replacing it with a filter that blocks visible light but passes IR. As luck would have it, exposed film negatives work very well as such a filter.
|
[This page](http://geektechnique.org/index.php?id=254) at GeekTechnique discusses how most digital cameras are easily turned into infrared cameras by removing the IR blocking filter in front of the CCD, and replacing it with a filter that blocks visible light but passes IR. As luck would have it, exposed film negatives work very well as such a filter.
|
||||||
|
|
||||||
So I attempted this on my Kodak EasyShare CX6200, my first camera, which somehow still works after 6 years of abuse. It was surprisingly easy, minus the part where I had to manually resolder the coil which controls the shutter on the lens because it was attached by single hair-thin strands of uninsulated wire. But I digress...
|
So I attempted this on my Kodak EasyShare CX6200, my first camera, which somehow still works after 6 years of abuse. It was surprisingly easy, minus the part where I had to manually resolder the coil which controls the shutter on the lens because it was attached by single hair-thin strands of uninsulated wire. But I digress...
|
||||||
@ -23,23 +21,23 @@ It can generate a gallery from a directory but first I have to get at
|
|||||||
that directory. -->
|
that directory. -->
|
||||||
|
|
||||||
{{< gallery >}}
|
{{< gallery >}}
|
||||||
{{< figure page="images" resource="2007-2008-old-wordpress/2010/04/edit-127.jpg" >}}
|
{{< figure page="images" resources="2007-2008-old-wordpress/2010/04/edit-127.jpg" >}}
|
||||||
{{< figure page="images" resource="2007-2008-old-wordpress/2010/04/edit-128.jpg" >}}
|
{{< figure page="images" resources="2007-2008-old-wordpress/2010/04/edit-128.jpg" >}}
|
||||||
{{< figure page="images" resource="2007-2008-old-wordpress/2010/04/edit-129.jpg" >}}
|
{{< figure page="images" resources="2007-2008-old-wordpress/2010/04/edit-129.jpg" >}}
|
||||||
{{< figure page="images" resource="2007-2008-old-wordpress/2010/04/edit-130.jpg" >}}
|
{{< figure page="images" resources="2007-2008-old-wordpress/2010/04/edit-130.jpg" >}}
|
||||||
{{< figure page="images" resource="2007-2008-old-wordpress/2010/04/edit-132.jpg" >}}
|
{{< figure page="images" resources="2007-2008-old-wordpress/2010/04/edit-132.jpg" >}}
|
||||||
{{< figure page="images" resource="2007-2008-old-wordpress/2010/04/orig-102.jpg" >}}
|
{{< figure page="images" resources="2007-2008-old-wordpress/2010/04/orig-102.jpg" >}}
|
||||||
{{< figure page="images" resource="2007-2008-old-wordpress/2010/04/orig-104.jpg" >}}
|
{{< figure page="images" resources="2007-2008-old-wordpress/2010/04/orig-104.jpg" >}}
|
||||||
{{< figure page="images" resource="2007-2008-old-wordpress/2010/04/orig-109.jpg" >}}
|
{{< figure page="images" resources="2007-2008-old-wordpress/2010/04/orig-109.jpg" >}}
|
||||||
{{< figure page="images" resource="2007-2008-old-wordpress/2010/04/orig-110.jpg" >}}
|
{{< figure page="images" resources="2007-2008-old-wordpress/2010/04/orig-110.jpg" >}}
|
||||||
{{< figure page="images" resource="2007-2008-old-wordpress/2010/04/orig-113.jpg" >}}
|
{{< figure page="images" resources="2007-2008-old-wordpress/2010/04/orig-113.jpg" >}}
|
||||||
{{< figure page="images" resource="2007-2008-old-wordpress/2010/04/orig-114.jpg" >}}
|
{{< figure page="images" resources="2007-2008-old-wordpress/2010/04/orig-114.jpg" >}}
|
||||||
{{< figure page="images" resource="2007-2008-old-wordpress/2010/04/orig-115.jpg" >}}
|
{{< figure page="images" resources="2007-2008-old-wordpress/2010/04/orig-115.jpg" >}}
|
||||||
{{< figure page="images" resource="2007-2008-old-wordpress/2010/04/orig-117.jpg" >}}
|
{{< figure page="images" resources="2007-2008-old-wordpress/2010/04/orig-117.jpg" >}}
|
||||||
{{< figure page="images" resource="2007-2008-old-wordpress/2010/04/orig-120.jpg" >}}
|
{{< figure page="images" resources="2007-2008-old-wordpress/2010/04/orig-120.jpg" >}}
|
||||||
{{< figure page="images" resource="2007-2008-old-wordpress/2010/04/orig-122.jpg" >}}
|
{{< figure page="images" resources="2007-2008-old-wordpress/2010/04/orig-122.jpg" >}}
|
||||||
{{< figure page="images" resource="2007-2008-old-wordpress/2010/04/orig-124.jpg" >}}
|
{{< figure page="images" resources="2007-2008-old-wordpress/2010/04/orig-124.jpg" >}}
|
||||||
{{< figure page="images" resource="2007-2008-old-wordpress/2010/04/orig-125.jpg" >}}
|
{{< figure page="images" resources="2007-2008-old-wordpress/2010/04/orig-125.jpg" >}}
|
||||||
{{< /gallery >}}
|
{{< /gallery >}}
|
||||||
|
|
||||||
I think it's working well. It very clearly passes IR light because the IR pens for the Wii whiteboard showed up quite brightly; it blocks light from LCD monitors and passes sunlight, but red LEDs seem to show up a bit. Trying it on another camera with more manual controls, and perhaps with a sharper filter, might prove interesting.
|
I think it's working well. It very clearly passes IR light because the IR pens for the Wii whiteboard showed up quite brightly; it blocks light from LCD monitors and passes sunlight, but red LEDs seem to show up a bit. Trying it on another camera with more manual controls, and perhaps with a sharper filter, might prove interesting.
|
||||||
|
|||||||
@ -6,8 +6,6 @@ tags:
|
|||||||
- processing
|
- processing
|
||||||
---
|
---
|
||||||
|
|
||||||
{{< load-photoswipe >}}
|
|
||||||
|
|
||||||
I first dabbled with
|
I first dabbled with
|
||||||
[Diffusion-Limited Aggregation](http://en.wikipedia.org/wiki/Diffusion-limited_aggregation)
|
[Diffusion-Limited Aggregation](http://en.wikipedia.org/wiki/Diffusion-limited_aggregation)
|
||||||
algorithms some 5 years back when I read about them in a book (later
|
algorithms some 5 years back when I read about them in a book (later
|
||||||
@ -21,7 +19,7 @@ like this:
|
|||||||
<!-- TODO: Originally:
|
<!-- TODO: Originally:
|
||||||
[{width=50%}](../images/dla2c.png)\
|
[{width=50%}](../images/dla2c.png)\
|
||||||
-->
|
-->
|
||||||
{{< figure resource="dla2c.png" title="Diffusion Limited Aggregation" caption="Don't ask for the source code to this">}}
|
{{< figure resources="dla2c.png" title="Diffusion Limited Aggregation" caption="Don't ask for the source code to this">}}
|
||||||
|
|
||||||
After about 3 or 4 failed attempts to optimize this program to not
|
After about 3 or 4 failed attempts to optimize this program to not
|
||||||
take days to generate images, I finally rewrote it reasonably
|
take days to generate images, I finally rewrote it reasonably
|
||||||
|
|||||||
@ -12,15 +12,13 @@ tags:
|
|||||||
- cincinnati night photo
|
- cincinnati night photo
|
||||||
---
|
---
|
||||||
|
|
||||||
{{< load-photoswipe >}}
|
|
||||||
|
|
||||||
Gawd, it's been forever since I've posted. Seeing Mandy post wonderful pictures regularly at http://kalpanasutra.wordpress.com/ has been an inspiration, but alas, I am still incredibly lazy when it comes to blog posting. I'm working on it.
|
Gawd, it's been forever since I've posted. Seeing Mandy post wonderful pictures regularly at http://kalpanasutra.wordpress.com/ has been an inspiration, but alas, I am still incredibly lazy when it comes to blog posting. I'm working on it.
|
||||||
|
|
||||||
In the midst of an eggnog party at Venue 222 I found myself on the roof of the 5-story building, and I absolutely loved the view of downtown Cincinnati from up there.
|
In the midst of an eggnog party at Venue 222 I found myself on the roof of the 5-story building, and I absolutely loved the view of downtown Cincinnati from up there.
|
||||||
|
|
||||||
{{< gallery >}}
|
{{< gallery >}}
|
||||||
{{< figure page="images" resource="2010-11-venue222/20101113-DSC_1325.jpg" >}}
|
{{< figure page="images" resources="2010-11-venue222/20101113-DSC_1325.jpg" >}}
|
||||||
{{< figure page="images" resource="2010-11-venue222/20101113-DSC_1330.jpg" >}}
|
{{< figure page="images" resources="2010-11-venue222/20101113-DSC_1330.jpg" >}}
|
||||||
{{< figure page="images" resource="2010-11-venue222/20101113-DSC_1338.jpg" >}}
|
{{< figure page="images" resources="2010-11-venue222/20101113-DSC_1338.jpg" >}}
|
||||||
{{< figure page="images" resource="2010-11-venue222/20101113-DSC_1339.jpg" >}}
|
{{< figure page="images" resources="2010-11-venue222/20101113-DSC_1339.jpg" >}}
|
||||||
{{< /gallery >}}
|
{{< /gallery >}}
|
||||||
|
|||||||
@ -10,8 +10,6 @@ categories:
|
|||||||
- Project
|
- Project
|
||||||
---
|
---
|
||||||
|
|
||||||
{{< load-photoswipe >}}
|
|
||||||
|
|
||||||
Having procrastinated for around a month, I finally got around to acquiring the chemicals for a standard cyanotype (I went with [digitaltruth.com](http://www.digitaltruth.com/)) and followed the method given in "The Book of Alternative Photographic Processes" by Christopher James, which my friend Lea loaned me. I started out with a 1/5 batch of each solution (thus 20 g ferric ammonium citrate & 100 mL water, and 8 g potassium ferricyanide & 100 mL water).
|
Having procrastinated for around a month, I finally got around to acquiring the chemicals for a standard cyanotype (I went with [digitaltruth.com](http://www.digitaltruth.com/)) and followed the method given in "The Book of Alternative Photographic Processes" by Christopher James, which my friend Lea loaned me. I started out with a 1/5 batch of each solution (thus 20 g ferric ammonium citrate & 100 mL water, and 8 g potassium ferricyanide & 100 mL water).
|
||||||
|
|
||||||
The book had wonderful, detailed instructions, most of which I ignored for now because I was just trying to get the feel of the cyanotype process...
|
The book had wonderful, detailed instructions, most of which I ignored for now because I was just trying to get the feel of the cyanotype process...
|
||||||
@ -47,13 +45,13 @@ So I tried to follow that advice on the third attempt I made... actually, I want
|
|||||||
|
|
||||||
Here's the exposed, but not developed, print:
|
Here's the exposed, but not developed, print:
|
||||||
|
|
||||||
{{< figure page="images" resource="2010-12-cyanotypes/cyanotype0001.jpg" >}}
|
{{< figure page="images" resources="2010-12-cyanotypes/cyanotype0001.jpg" >}}
|
||||||
|
|
||||||
The gradient in the top left is a strip of paper that I moved away at periodic intervals. I placed several strips of paper to the right but they were removed first and aren't visible here. The Hive13 logo also has a faint image to the left, probably from me moving the print early in the exposure and jolting the negative a little.
|
The gradient in the top left is a strip of paper that I moved away at periodic intervals. I placed several strips of paper to the right but they were removed first and aren't visible here. The Hive13 logo also has a faint image to the left, probably from me moving the print early in the exposure and jolting the negative a little.
|
||||||
|
|
||||||
I developed the print (just rinsed it in cold water until the water ran clear) and let it dry for maybe 7 hours:
|
I developed the print (just rinsed it in cold water until the water ran clear) and let it dry for maybe 7 hours:
|
||||||
|
|
||||||
{{< figure page="images" resource="2010-12-cyanotypes/cyanotype0002.jpg" >}}
|
{{< figure page="images" resources="2010-12-cyanotypes/cyanotype0002.jpg" >}}
|
||||||
|
|
||||||
There are a lot of artifacts here. The darker border might be from the edges of the acetate on the negative. The things in the top left are some etching on one of the plates of glass that I used to hold the negative. In the undeveloped print, the strip to the right of that has clearly visible steps of tone, and I find it a little weird that all of these developed to pure white, while areas that are all the same color in the undeveloped print turned into clearly different tones in the developed one. I probably should read up on how to control this better.
|
There are a lot of artifacts here. The darker border might be from the edges of the acetate on the negative. The things in the top left are some etching on one of the plates of glass that I used to hold the negative. In the undeveloped print, the strip to the right of that has clearly visible steps of tone, and I find it a little weird that all of these developed to pure white, while areas that are all the same color in the undeveloped print turned into clearly different tones in the developed one. I probably should read up on how to control this better.
|
||||||
|
|
||||||
|
|||||||
@ -8,16 +8,14 @@ title: Cyanotypes & better results
|
|||||||
wordpress_id: 473
|
wordpress_id: 473
|
||||||
---
|
---
|
||||||
|
|
||||||
{{< load-photoswipe >}}
|
|
||||||
|
|
||||||
Lack of some amount of sunshine is rarely a problem here, it seems. I did this next cyanotype outdoors in very overcast light while it was snowing lightly. The snow was minor since a sheet of glass covered everything, and overcast light possibly was perfect because of how even and omnidirectional it was. The contrast that I achieved in this print surprised me; the dark areas just turned out so much darker than the last print.
|
Lack of some amount of sunshine is rarely a problem here, it seems. I did this next cyanotype outdoors in very overcast light while it was snowing lightly. The snow was minor since a sheet of glass covered everything, and overcast light possibly was perfect because of how even and omnidirectional it was. The contrast that I achieved in this print surprised me; the dark areas just turned out so much darker than the last print.
|
||||||
|
|
||||||
{{< figure page="images" resource="2010-12-cyanotypes/20101206-cyanotype0003.jpg" caption="Same paper & solution, but exposed in overcast sunlight." >}}
|
{{< figure page="images" resources="2010-12-cyanotypes/20101206-cyanotype0003.jpg" caption="Same paper & solution, but exposed in overcast sunlight." >}}
|
||||||
|
|
||||||
I still had sensitizer left, so I decided to try some prints on fabric as well. These I exposed for almost 2 hours, maybe longer, under a 200 watt bulb. They didn't turn out as even as I'd like, but I was rushing things a bit and some spots of the towel weren't fully dry when I started exposing. However, I'm still impressed with how it turned out.
|
I still had sensitizer left, so I decided to try some prints on fabric as well. These I exposed for almost 2 hours, maybe longer, under a 200 watt bulb. They didn't turn out as even as I'd like, but I was rushing things a bit and some spots of the towel weren't fully dry when I started exposing. However, I'm still impressed with how it turned out.
|
||||||
|
|
||||||
{{< figure page="images" resource="2010-12-cyanotypes/20101212-CIMG0269.jpg" caption="Exposure on a towel from Target; exposed ~ 2 hours under 200 W bulb." >}}
|
{{< figure page="images" resources="2010-12-cyanotypes/20101212-CIMG0269.jpg" caption="Exposure on a towel from Target; exposed ~ 2 hours under 200 W bulb." >}}
|
||||||
|
|
||||||
{{< figure page="images" resource="2010-12-cyanotypes/20101212-CIMG0270.jpg" caption="Same towel up close(ish)" >}}
|
{{< figure page="images" resources="2010-12-cyanotypes/20101212-CIMG0270.jpg" caption="Same towel up close(ish)" >}}
|
||||||
|
|
||||||
Rob next door to the Hive loaned me a halftone negative he had (since I had nothing else on hand in the way of transparencies) and I made a few exposures of this, but had some problems with the highlights. I really should find some negatives that aren't monochrome (as this was, being a halftone image) so I can figure out how to get the tones right.
|
Rob next door to the Hive loaned me a halftone negative he had (since I had nothing else on hand in the way of transparencies) and I made a few exposures of this, but had some problems with the highlights. I really should find some negatives that aren't monochrome (as this was, being a halftone image) so I can figure out how to get the tones right.
|
||||||
|
|||||||
@ -11,16 +11,14 @@ categories:
|
|||||||
- Project
|
- Project
|
||||||
---
|
---
|
||||||
|
|
||||||
{{< load-photoswipe >}}
|
|
||||||
|
|
||||||
I picked up some very cheap extension tubes and a reversing ring for my DSLR, hoping to do some macro photography with them. However, I sort of ignored that both my lenses default to having their apertures at their narrowest setting (rather than their largest, which for some reason I assumed) until instructed otherwise whether electronically or via the aperture lever. This made it a bit more difficult to do a lot of the shots. I have a 49 to 52 mm step-up ring coming in the mail which will let me use the old SMC Pentax 50mm lens, which has an aperture ring, but it appears to be on a slow boat from China so it's not coming anytime soon.
|
I picked up some very cheap extension tubes and a reversing ring for my DSLR, hoping to do some macro photography with them. However, I sort of ignored that both my lenses default to having their apertures at their narrowest setting (rather than their largest, which for some reason I assumed) until instructed otherwise whether electronically or via the aperture lever. This made it a bit more difficult to do a lot of the shots. I have a 49 to 52 mm step-up ring coming in the mail which will let me use the old SMC Pentax 50mm lens, which has an aperture ring, but it appears to be on a slow boat from China so it's not coming anytime soon.
|
||||||
|
|
||||||
{{< gallery >}}
|
{{< gallery >}}
|
||||||
{{< figure page="images" resource="2010-12-macro/20101208-DSC_1517.jpg" caption="Part of business card" >}}
|
{{< figure page="images" resources="2010-12-macro/20101208-DSC_1517.jpg" caption="Part of business card" >}}
|
||||||
{{< figure page="images" resource="2010-12-macro/20101208-DSC_1533.jpg" caption="LCD monitor" >}}
|
{{< figure page="images" resources="2010-12-macro/20101208-DSC_1533.jpg" caption="LCD monitor" >}}
|
||||||
{{< figure page="images" resource="2010-12-macro/20101208-DSC_1520.jpg" caption="CFL" >}}
|
{{< figure page="images" resources="2010-12-macro/20101208-DSC_1520.jpg" caption="CFL" >}}
|
||||||
{{< figure page="images" resource="2010-12-macro/20101209-DSC_1535.jpg" caption="Plastic edge in alligator clips" >}}
|
{{< figure page="images" resources="2010-12-macro/20101209-DSC_1535.jpg" caption="Plastic edge in alligator clips" >}}
|
||||||
{{< figure page="images" resource="2010-12-macro/20101209-DSC_1539.jpg" caption="Those same alligator clips" >}}
|
{{< figure page="images" resources="2010-12-macro/20101209-DSC_1539.jpg" caption="Those same alligator clips" >}}
|
||||||
{{< figure page="images" resource="2010-12-macro/20101209-DSC_1546.jpg" caption="PCB" >}}
|
{{< figure page="images" resources="2010-12-macro/20101209-DSC_1546.jpg" caption="PCB" >}}
|
||||||
{{< figure page="images" resource="2010-12-macro/20101209-DSC_1550.jpg" caption="Solder pads" >}}
|
{{< figure page="images" resources="2010-12-macro/20101209-DSC_1550.jpg" caption="Solder pads" >}}
|
||||||
{{< /gallery >}}
|
{{< /gallery >}}
|
||||||
|
|||||||
@ -7,8 +7,6 @@ tags:
|
|||||||
- blender
|
- blender
|
||||||
---
|
---
|
||||||
|
|
||||||
{{< load-photoswipe >}}
|
|
||||||
|
|
||||||
This is about the tenth time I've tried to learn
|
This is about the tenth time I've tried to learn
|
||||||
[Blender](http://www.blender.org/). Judging by the notes I've
|
[Blender](http://www.blender.org/). Judging by the notes I've
|
||||||
accumulated so far, I've been at it this time for about a month and a
|
accumulated so far, I've been at it this time for about a month and a
|
||||||
@ -62,9 +60,9 @@ too-many-completely-different-versions of Acidity I wrote.
|
|||||||
[{width=100%}](../images/20110118-sketch_mj2011016e.jpg)
|
[{width=100%}](../images/20110118-sketch_mj2011016e.jpg)
|
||||||
-->
|
-->
|
||||||
|
|
||||||
{{< figure resource="hive13-bezier03.png" title="Hive13 bezier splines" caption="What I learned Bezier splines on, and didn't learn enough about texturing.">}}
|
{{< figure resources="hive13-bezier03.png" title="Hive13 bezier splines" caption="What I learned Bezier splines on, and didn't learn enough about texturing.">}}
|
||||||
|
|
||||||
{{< figure resource="20110118-sketch_mj2011016e.jpg" title="Processing sketch" caption="This was made directly from some equations. I don't know how I'd do this in Blender.">}}
|
{{< figure resources="20110118-sketch_mj2011016e.jpg" title="Processing sketch" caption="This was made directly from some equations. I don't know how I'd do this in Blender.">}}
|
||||||
|
|
||||||
[POV-Ray](http://www.povray.org) was the last program that I
|
[POV-Ray](http://www.povray.org) was the last program that I
|
||||||
3D-rendered extensively in (this was mostly 2004-2005, as my
|
3D-rendered extensively in (this was mostly 2004-2005, as my
|
||||||
@ -100,6 +98,6 @@ all the precision that I would have had in POV-Ray, but I built them
|
|||||||
in probably 1/10 the time. That's the case for the two
|
in probably 1/10 the time. That's the case for the two
|
||||||
work-in-progress Blender images here:
|
work-in-progress Blender images here:
|
||||||
|
|
||||||
{{< figure resource="20110131-mj20110114b.jpg" title="20110131-mj20110114b" caption="This needs a name and a better background">}}
|
{{< figure resources="20110131-mj20110114b.jpg" title="20110131-mj20110114b" caption="This needs a name and a better background">}}
|
||||||
|
|
||||||
{{< figure resource="20110205-mj20110202-starburst2.jpg" title="20110205-mj20110202-starburst2" caption="This needs a name and a better background.">}}
|
{{< figure resources="20110205-mj20110202-starburst2.jpg" title="20110205-mj20110202-starburst2" caption="This needs a name and a better background.">}}
|
||||||
|
|||||||
@ -10,28 +10,26 @@ categories:
|
|||||||
- Photoblog
|
- Photoblog
|
||||||
---
|
---
|
||||||
|
|
||||||
{{< load-photoswipe >}}
|
|
||||||
|
|
||||||
Having acquired a Nikon FE and some lenses quite inexpensively and verifying on some cheap Walgreen film that they did indeed work, I picked up some Fuji Velvia RVP50 from Cord Camera in Kenwood back in April (it was expensive compared to what Amazon would have charged, but I wasn't about to waste a trip to Kenwood over $10ish). I'd heard enough lavish praise lumped onto slide film, particularly Velvia for its fine grain and color, so I figured it was worth a try.
|
Having acquired a Nikon FE and some lenses quite inexpensively and verifying on some cheap Walgreen film that they did indeed work, I picked up some Fuji Velvia RVP50 from Cord Camera in Kenwood back in April (it was expensive compared to what Amazon would have charged, but I wasn't about to waste a trip to Kenwood over $10ish). I'd heard enough lavish praise lumped onto slide film, particularly Velvia for its fine grain and color, so I figured it was worth a try.
|
||||||
|
|
||||||
Few places left will process slide film but as luck has it I am really close to [Robin Imaging](http://www.robinimaging.com/) who still processes it (and, it sounds like, might be the only lab left in Cincinnati that does). I had them scan it as well and received a disc of 6 megapixel images which is decent (I'm told you can get much higher resolution than that out of a fine-grained film, but I'm not complaining).
|
Few places left will process slide film but as luck has it I am really close to [Robin Imaging](http://www.robinimaging.com/) who still processes it (and, it sounds like, might be the only lab left in Cincinnati that does). I had them scan it as well and received a disc of 6 megapixel images which is decent (I'm told you can get much higher resolution than that out of a fine-grained film, but I'm not complaining).
|
||||||
|
|
||||||
While, somewhat stupidly, I don't have a slide projector yet and so I've only seen the scans and the 35mm slides themselves, I still am very impressed with the results.
|
While, somewhat stupidly, I don't have a slide projector yet and so I've only seen the scans and the 35mm slides themselves, I still am very impressed with the results.
|
||||||
|
|
||||||
{{< figure page="images" resource="2011-06-slide-film/20110606-20-008.jpg" caption="Cincinnati (Over-the-Rhine specifically) near Vine" >}}
|
{{< figure page="images" resources="2011-06-slide-film/20110606-20-008.jpg" caption="Cincinnati (Over-the-Rhine specifically) near Vine" >}}
|
||||||
|
|
||||||
{{< figure page="images" resource="2011-06-slide-film/20110606-20-007.jpg" caption="Vine Street in about the same area" >}}
|
{{< figure page="images" resources="2011-06-slide-film/20110606-20-007.jpg" caption="Vine Street in about the same area" >}}
|
||||||
|
|
||||||
Sadly, my favorite image of the bunch is also the only one where I managed to advance the film wrong:
|
Sadly, my favorite image of the bunch is also the only one where I managed to advance the film wrong:
|
||||||
|
|
||||||
{{< figure page="images" resource="2011-06-slide-film/20110606-20-006.jpg" caption="E. Liberty & Walnut. I love how well the film brought out the color." >}}
|
{{< figure page="images" resources="2011-06-slide-film/20110606-20-006.jpg" caption="E. Liberty & Walnut. I love how well the film brought out the color." >}}
|
||||||
|
|
||||||
{{< figure page="images" resource="2011-06-slide-film/20110606-20-005.jpg" caption="Downtown someplace for Taste of Cincinnati" >}}
|
{{< figure page="images" resources="2011-06-slide-film/20110606-20-005.jpg" caption="Downtown someplace for Taste of Cincinnati" >}}
|
||||||
|
|
||||||
{{< figure page="images" resource="2011-06-slide-film/20110606-20-004.jpg" caption="Obligatory country road shot, this one in Indiana near 56 & 156" >}}
|
{{< figure page="images" resources="2011-06-slide-film/20110606-20-004.jpg" caption="Obligatory country road shot, this one in Indiana near 56 & 156" >}}
|
||||||
|
|
||||||
{{< figure page="images" resource="2011-06-slide-film/20110606-20-003.jpg" caption="56 & Thuermer Hollow in Indiana... little boring, but here it is." >}}
|
{{< figure page="images" resources="2011-06-slide-film/20110606-20-003.jpg" caption="56 & Thuermer Hollow in Indiana... little boring, but here it is." >}}
|
||||||
|
|
||||||
{{< figure page="images" resource="2011-06-slide-film/20110606-20-002.jpg" caption="Cincinnati, near John & Ezzard Charles" >}}
|
{{< figure page="images" resources="2011-06-slide-film/20110606-20-002.jpg" caption="Cincinnati, near John & Ezzard Charles" >}}
|
||||||
|
|
||||||
{{< figure page="images" resource="2011-06-slide-film/20110606-20-001.jpg" caption="Over-the-Rhine & downtown Cincinnati seen from Bellevue Hill Park" >}}
|
{{< figure page="images" resources="2011-06-slide-film/20110606-20-001.jpg" caption="Over-the-Rhine & downtown Cincinnati seen from Bellevue Hill Park" >}}
|
||||||
|
|||||||
@ -8,8 +8,6 @@ tags:
|
|||||||
- Technobabble
|
- Technobabble
|
||||||
---
|
---
|
||||||
|
|
||||||
{{< load-photoswipe >}}
|
|
||||||
|
|
||||||
After finally deciding to look around for some projects on GitHub, I
|
After finally deciding to look around for some projects on GitHub, I
|
||||||
found a number of very interesting ones in a matter of minutes.
|
found a number of very interesting ones in a matter of minutes.
|
||||||
|
|
||||||
@ -28,7 +26,7 @@ probably about 30 minutes to put together the code to generate the
|
|||||||
usual gawdy test algorithm I try when bootstrapping from a new
|
usual gawdy test algorithm I try when bootstrapping from a new
|
||||||
environment:
|
environment:
|
||||||
|
|
||||||
{{< figure resource="acidity-standard.png" title="Standard trippy image">}}
|
{{< figure resources="acidity-standard.png" title="Standard trippy image">}}
|
||||||
|
|
||||||
(Yeah, it's gaudy. But when you see it animated, it's amazingly trippy
|
(Yeah, it's gaudy. But when you see it animated, it's amazingly trippy
|
||||||
and mesmerizing.)
|
and mesmerizing.)
|
||||||
|
|||||||
@ -8,8 +8,6 @@ tags:
|
|||||||
- Technobabble
|
- Technobabble
|
||||||
---
|
---
|
||||||
|
|
||||||
{{< load-photoswipe >}}
|
|
||||||
|
|
||||||
My [last post](./2011-08-27-isolated-pixel-pushing.html) mentioned a
|
My [last post](./2011-08-27-isolated-pixel-pushing.html) mentioned a
|
||||||
program called [Context Free](http://www.contextfreeart.org/) that I
|
program called [Context Free](http://www.contextfreeart.org/) that I
|
||||||
came across via the [Syntopia](http://blog.hvidtfeldts.net/) blog as
|
came across via the [Syntopia](http://blog.hvidtfeldts.net/) blog as
|
||||||
@ -31,14 +29,14 @@ I downloaded the program, started it, and their welcome image (with
|
|||||||
the relatively short source code right beside it) greeted me, rendered
|
the relatively short source code right beside it) greeted me, rendered
|
||||||
on-the-spot:
|
on-the-spot:
|
||||||
|
|
||||||
{{< figure resource="welcome.png" title="welcome.png">}}
|
{{< figure resources="welcome.png" title="welcome.png">}}
|
||||||
|
|
||||||
The program was very easy to work with. Their quick reference card was
|
The program was very easy to work with. Their quick reference card was
|
||||||
terse but only needed a handful of examples and a few pages of
|
terse but only needed a handful of examples and a few pages of
|
||||||
documentation to fill in the gaps. After about 15 minutes, I'd put
|
documentation to fill in the gaps. After about 15 minutes, I'd put
|
||||||
together this:
|
together this:
|
||||||
|
|
||||||
{{< figure resource="spiral-first-20110823.png" title="spiral-first-20110823.png">}}
|
{{< figure resources="spiral-first-20110823.png" title="spiral-first-20110823.png">}}
|
||||||
|
|
||||||
Sure, it's mathematical and simple, but I think being able to put it
|
Sure, it's mathematical and simple, but I think being able to put it
|
||||||
together in 15 minutes in a general program (i.e. not a silly ad-hoc
|
together in 15 minutes in a general program (i.e. not a silly ad-hoc
|
||||||
@ -71,9 +69,9 @@ rule SQUARE1 {
|
|||||||
|
|
||||||
I worked with it some more the next day and had some things like this:
|
I worked with it some more the next day and had some things like this:
|
||||||
|
|
||||||
{{< figure resource="tree3-abg.png" title="tree3-abg.png">}}
|
{{< figure resources="tree3-abg.png" title="tree3-abg.png">}}
|
||||||
|
|
||||||
{{< figure resource="tree4-lul.png" title="tree4-lul.png">}}
|
{{< figure resources="tree4-lul.png" title="tree4-lul.png">}}
|
||||||
|
|
||||||
I'm not sure what it is. It looks sort of like a tree made of
|
I'm not sure what it is. It looks sort of like a tree made of
|
||||||
lightning. Some Hive13 people said it looks like a lockpick from
|
lightning. Some Hive13 people said it looks like a lockpick from
|
||||||
|
|||||||
@ -10,8 +10,6 @@ aliases:
|
|||||||
- /posts/2011-11-24-obscure-features-of-jpeg.html
|
- /posts/2011-11-24-obscure-features-of-jpeg.html
|
||||||
---
|
---
|
||||||
|
|
||||||
{{< load-photoswipe >}}
|
|
||||||
|
|
||||||
*(This is a modified version of what I wrote up at work when I saw
|
*(This is a modified version of what I wrote up at work when I saw
|
||||||
that progressive JPEGs could be nearly a drop-in replacement that
|
that progressive JPEGs could be nearly a drop-in replacement that
|
||||||
offered some additional functionality and ran some tests on this.)*
|
offered some additional functionality and ran some tests on this.)*
|
||||||
@ -361,14 +359,14 @@ Examples
|
|||||||
Here are all 10 scans from a standard progressive JPEG, separated out with the example code:
|
Here are all 10 scans from a standard progressive JPEG, separated out with the example code:
|
||||||
|
|
||||||
{{< gallery >}}
|
{{< gallery >}}
|
||||||
{{< figure resource="cropphoto1.png" title="Scan 1">}}
|
{{< figure resources="cropphoto1.png" title="Scan 1">}}
|
||||||
{{< figure resource="cropphoto2.png" title="Scan 2">}}
|
{{< figure resources="cropphoto2.png" title="Scan 2">}}
|
||||||
{{< figure resource="cropphoto3.png" title="Scan 3">}}
|
{{< figure resources="cropphoto3.png" title="Scan 3">}}
|
||||||
{{< figure resource="cropphoto4.png" title="Scan 4">}}
|
{{< figure resources="cropphoto4.png" title="Scan 4">}}
|
||||||
{{< figure resource="cropphoto5.png" title="Scan 5">}}
|
{{< figure resources="cropphoto5.png" title="Scan 5">}}
|
||||||
{{< figure resource="cropphoto6.png" title="Scan 6">}}
|
{{< figure resources="cropphoto6.png" title="Scan 6">}}
|
||||||
{{< figure resource="cropphoto7.png" title="Scan 7">}}
|
{{< figure resources="cropphoto7.png" title="Scan 7">}}
|
||||||
{{< figure resource="cropphoto8.png" title="Scan 8">}}
|
{{< figure resources="cropphoto8.png" title="Scan 8">}}
|
||||||
{{< figure resource="cropphoto9.png" title="Scan 9">}}
|
{{< figure resources="cropphoto9.png" title="Scan 9">}}
|
||||||
{{< figure resource="cropphoto10.png" title="Scan 10">}}
|
{{< figure resources="cropphoto10.png" title="Scan 10">}}
|
||||||
{{< /gallery >}}
|
{{< /gallery >}}
|
||||||
|
|||||||
@ -10,8 +10,6 @@ aliases:
|
|||||||
- posts/2016-09-25-pi-pan-tilt-1.html
|
- posts/2016-09-25-pi-pan-tilt-1.html
|
||||||
---
|
---
|
||||||
|
|
||||||
{{< load-photoswipe >}}
|
|
||||||
|
|
||||||
Earlier this year I was turning around ideas in my head - perhaps
|
Earlier this year I was turning around ideas in my head - perhaps
|
||||||
inspired by Dr. Essa's excellent class,
|
inspired by Dr. Essa's excellent class,
|
||||||
[CS6475: Computational Photography][cs6475] - about the possibility of
|
[CS6475: Computational Photography][cs6475] - about the possibility of
|
||||||
@ -46,7 +44,7 @@ I eventually had something mostly out of laser-cut plywood, hardware
|
|||||||
store parts, and [cheap steppers][steppers]. It looks something like
|
store parts, and [cheap steppers][steppers]. It looks something like
|
||||||
this, mounted on a small tripod:
|
this, mounted on a small tripod:
|
||||||
|
|
||||||
{{< figure page="images" resource="2016-09-25-pi-pan-tilt-1/IMG_20160912_144539.jpg" >}}
|
{{< figure page="images" resources="2016-09-25-pi-pan-tilt-1/IMG_20160912_144539.jpg" >}}
|
||||||
|
|
||||||
I am able to move the steppers thanks to [Matt's code][raspi-spy] and
|
I am able to move the steppers thanks to [Matt's code][raspi-spy] and
|
||||||
capture images with [raspistill][]. The arrangement here provides two
|
capture images with [raspistill][]. The arrangement here provides two
|
||||||
@ -68,7 +66,7 @@ picked up a [25mm M12 lens][25mm-lens] - still an angle of view of
|
|||||||
about 10 degrees on this sensor - and set it up in the park for a test
|
about 10 degrees on this sensor - and set it up in the park for a test
|
||||||
run:
|
run:
|
||||||
|
|
||||||
{{< figure page="images" resource="2016-09-25-pi-pan-tilt-1/IMG_20160918_160857.jpg" caption="My shot's not slanted, the ground is">}}
|
{{< figure page="images" resources="2016-09-25-pi-pan-tilt-1/IMG_20160918_160857.jpg" caption="My shot's not slanted, the ground is">}}
|
||||||
|
|
||||||
(*Later note*: I didn't actually use the 25mm lens on that shot. I
|
(*Later note*: I didn't actually use the 25mm lens on that shot. I
|
||||||
used a 4mm (or something) lens that looks pretty much the same, and
|
used a 4mm (or something) lens that looks pretty much the same, and
|
||||||
@ -103,7 +101,7 @@ sign.
|
|||||||
The first results look decent, but fuzzy, as $10 optics are prone to
|
The first results look decent, but fuzzy, as $10 optics are prone to
|
||||||
produce:
|
produce:
|
||||||
|
|
||||||
{{< figure page="images" resource="2016-09-25-pi-pan-tilt-1/zwIJpFn.jpg" >}}
|
{{< figure page="images" resources="2016-09-25-pi-pan-tilt-1/zwIJpFn.jpg" >}}
|
||||||
|
|
||||||
Follow along to [part 2](./2016-10-04-pi-pan-tilt-2.html).
|
Follow along to [part 2](./2016-10-04-pi-pan-tilt-2.html).
|
||||||
|
|
||||||
|
|||||||
@ -10,8 +10,6 @@ aliases:
|
|||||||
- posts/2016-10-04-pi-pan-tilt-2.html
|
- posts/2016-10-04-pi-pan-tilt-2.html
|
||||||
---
|
---
|
||||||
|
|
||||||
{{< load-photoswipe >}}
|
|
||||||
|
|
||||||
In my [last post](./2016-09-25-pi-pan-tilt-1.html) I introduced some
|
In my [last post](./2016-09-25-pi-pan-tilt-1.html) I introduced some
|
||||||
of the project I've been working on. This post is a little more
|
of the project I've been working on. This post is a little more
|
||||||
technical; if you don't care, and just want to see a 91 megapixel
|
technical; if you don't care, and just want to see a 91 megapixel
|
||||||
@ -81,7 +79,7 @@ With no refining, tweaking, or optimization, only the per-image
|
|||||||
stepper motor positions and my guess at the lens's FOV, here is how
|
stepper motor positions and my guess at the lens's FOV, here is how
|
||||||
this looks in Hugin's fast preview:
|
this looks in Hugin's fast preview:
|
||||||
|
|
||||||
{{< figure page="images" resource="2016-10-04-pi-pan-tilt-2/hugin-steppers-only.jpg" caption="Hive13" >}}
|
{{< figure page="images" resources="2016-10-04-pi-pan-tilt-2/hugin-steppers-only.jpg" caption="Hive13" >}}
|
||||||
|
|
||||||
*(This is a test run that I did inside of [Hive13][], by the way. I
|
*(This is a test run that I did inside of [Hive13][], by the way. I
|
||||||
used the CS-mount [ArduCam][] and its included lens. Shots were in a
|
used the CS-mount [ArduCam][] and its included lens. Shots were in a
|
||||||
@ -106,7 +104,7 @@ screenshots - on the left, the image positions from the stepper
|
|||||||
motors, and on the right, the optimized positions that Hugin
|
motors, and on the right, the optimized positions that Hugin
|
||||||
calculated:
|
calculated:
|
||||||
|
|
||||||
{{< figure page="images" resource="2016-10-04-pi-pan-tilt-2/hugin-comparison.png" caption="Hugin comparison" >}}
|
{{< figure page="images" resources="2016-10-04-pi-pan-tilt-2/hugin-comparison.png" caption="Hugin comparison" >}}
|
||||||
|
|
||||||
They sort of match up, though pitch deviates a bit. I believe that's
|
They sort of match up, though pitch deviates a bit. I believe that's
|
||||||
because I shifted the pitch of the entire thing to straighten it out,
|
because I shifted the pitch of the entire thing to straighten it out,
|
||||||
|
|||||||
@ -10,8 +10,6 @@ aliases:
|
|||||||
- posts/2016-10-12-pi-pan-tilt-3.html
|
- posts/2016-10-12-pi-pan-tilt-3.html
|
||||||
---
|
---
|
||||||
|
|
||||||
{{< load-photoswipe >}}
|
|
||||||
|
|
||||||
This is the third part in this series, continuing on from
|
This is the third part in this series, continuing on from
|
||||||
[part 1][part1] and [part 2][part2]. The last post was about
|
[part 1][part1] and [part 2][part2]. The last post was about
|
||||||
integrating the hardware with Hugin and PanoTools. This one is
|
integrating the hardware with Hugin and PanoTools. This one is
|
||||||
@ -147,18 +145,18 @@ provide, I took 9 example shots of the same scene, ranging from about
|
|||||||
full-resolution JPEG image of these shots, normalized - in effect,
|
full-resolution JPEG image of these shots, normalized - in effect,
|
||||||
trying to re-expose them properly:
|
trying to re-expose them properly:
|
||||||
|
|
||||||
{{< figure page="images" resource="2016-10-12-pi-pan-tilt-3/tile_jpg.jpg" >}}
|
{{< figure page="images" resources="2016-10-12-pi-pan-tilt-3/tile_jpg.jpg" >}}
|
||||||
|
|
||||||
The below contains the raw sensor data, turned to 8-bit TIFF and then
|
The below contains the raw sensor data, turned to 8-bit TIFF and then
|
||||||
again normalized. It's going to look different than the JPEG due to
|
again normalized. It's going to look different than the JPEG due to
|
||||||
the lack of whitebalance adjustment, denoising, brightness, contrast,
|
the lack of whitebalance adjustment, denoising, brightness, contrast,
|
||||||
and so on.
|
and so on.
|
||||||
|
|
||||||
{{< figure page="images" resource="2016-10-12-pi-pan-tilt-3/tile_8bit.jpg" >}}
|
{{< figure page="images" resources="2016-10-12-pi-pan-tilt-3/tile_8bit.jpg" >}}
|
||||||
|
|
||||||
These were done with 16-bit TIFFs rather than 8-bit ones:
|
These were done with 16-bit TIFFs rather than 8-bit ones:
|
||||||
|
|
||||||
{{< figure page="images" resource="2016-10-12-pi-pan-tilt-3/tile_16bit.jpg" >}}
|
{{< figure page="images" resources="2016-10-12-pi-pan-tilt-3/tile_16bit.jpg" >}}
|
||||||
|
|
||||||
In theory, the 16-bit ones should be retaining two extra bits of data
|
In theory, the 16-bit ones should be retaining two extra bits of data
|
||||||
from the 10-bit sensor data, and thus two extra stops of dynamic
|
from the 10-bit sensor data, and thus two extra stops of dynamic
|
||||||
@ -178,7 +176,7 @@ I actually paid). Click the preview for a lossless PNG view, as JPEG
|
|||||||
might eat some of the finer details, or [here][leaves-full] for the
|
might eat some of the finer details, or [here][leaves-full] for the
|
||||||
full JPEG file (including raw, if you want to look around).
|
full JPEG file (including raw, if you want to look around).
|
||||||
|
|
||||||
{{< figure page="images" resource="2016-10-12-pi-pan-tilt-3/leaves_test.png" caption="JPEG & raw comparison" >}}
|
{{< figure page="images" resources="2016-10-12-pi-pan-tilt-3/leaves_test.png" caption="JPEG & raw comparison" >}}
|
||||||
|
|
||||||
The JPEG image seems to have some aggressive denoising that cuts into
|
The JPEG image seems to have some aggressive denoising that cuts into
|
||||||
sharper detail somewhat, as denoising algorithms tends to do. Of
|
sharper detail somewhat, as denoising algorithms tends to do. Of
|
||||||
@ -187,14 +185,14 @@ the same point, and then average them. That's only applicable in a
|
|||||||
static scene with some sort of rig to hold things in place, which is
|
static scene with some sort of rig to hold things in place, which is
|
||||||
convenient, since that's what I'm making...
|
convenient, since that's what I'm making...
|
||||||
|
|
||||||
{{< figure page="images" resource="2016-10-12-pi-pan-tilt-3/IMG_20161016_141826.jpg" >}}
|
{{< figure page="images" resources="2016-10-12-pi-pan-tilt-3/IMG_20161016_141826.jpg" >}}
|
||||||
|
|
||||||
I used that (messy) test setup to produce the below comparison between
|
I used that (messy) test setup to produce the below comparison between
|
||||||
a JPEG image, a single raw image, 4 raw images averaged, and 16 raw
|
a JPEG image, a single raw image, 4 raw images averaged, and 16 raw
|
||||||
images averaged. These are again 1:1 crops from the center to show
|
images averaged. These are again 1:1 crops from the center to show
|
||||||
noise and detail.
|
noise and detail.
|
||||||
|
|
||||||
{{< figure page="images" resource="2016-10-12-pi-pan-tilt-3/penguin_compare.png" caption="JPEG, raw, and averaging">}}
|
{{< figure page="images" resources="2016-10-12-pi-pan-tilt-3/penguin_compare.png" caption="JPEG, raw, and averaging">}}
|
||||||
|
|
||||||
Click for the lossless version, and take a look around finer details.
|
Click for the lossless version, and take a look around finer details.
|
||||||
4X averaging has clearly reduced the noise from the un-averaged raw
|
4X averaging has clearly reduced the noise from the un-averaged raw
|
||||||
|
|||||||
@ -13,9 +13,7 @@ draft: true
|
|||||||
# (TODO: pictures will make this post make a *lot* more sense, and it
|
# (TODO: pictures will make this post make a *lot* more sense, and it
|
||||||
# may need a lot of them)
|
# may need a lot of them)
|
||||||
|
|
||||||
{{< load-photoswipe >}}
|
Context Free]] is one of my favorite projects since I discovered it
|
||||||
|
|
||||||
[[https://www.contextfreeart.org/][Context Free]] is one of my favorite projects since I discovered it
|
|
||||||
about 2010. It's one I've [[../2011-08-29-context-free/][written about before]], played around in (see
|
about 2010. It's one I've [[../2011-08-29-context-free/][written about before]], played around in (see
|
||||||
some of the images below), presented on, as well as re-implemented
|
some of the images below), presented on, as well as re-implemented
|
||||||
myself in different ways (see: [[https://github.com/hodapp87/contextual][Contextual]]). That is sometimes because
|
myself in different ways (see: [[https://github.com/hodapp87/contextual][Contextual]]). That is sometimes because
|
||||||
@ -27,12 +25,12 @@ way to learn things in a new language. (I think it's similar to
|
|||||||
|
|
||||||
# TODO: Set captions?
|
# TODO: Set captions?
|
||||||
{{< gallery >}}
|
{{< gallery >}}
|
||||||
{{< figure page="images" resource="placeholder/dream20191115b.jpg" caption="Something">}}
|
{{< figure page="images" resources="placeholder/dream20191115b.jpg" caption="Something">}}
|
||||||
{{< figure page="images" resource="placeholder/2011-11-25-electron.jpg">}}
|
{{< figure page="images" resources="placeholder/2011-11-25-electron.jpg">}}
|
||||||
{{< figure page="images" resource="portfolio/2011-11-04-crystal1.jpg">}}
|
{{< figure page="images" resources="portfolio/2011-11-04-crystal1.jpg">}}
|
||||||
{{< figure page="images" resource="placeholder/2011-11-03-feather2.jpg">}}
|
{{< figure page="images" resources="placeholder/2011-11-03-feather2.jpg">}}
|
||||||
{{< figure page="images" resource="placeholder/2011-11-03-feather1.jpg">}}
|
{{< figure page="images" resources="placeholder/2011-11-03-feather1.jpg">}}
|
||||||
{{< figure page="images" resource="portfolio/2011-09-09-conch.jpg">}}
|
{{< figure page="images" resources="portfolio/2011-09-09-conch.jpg">}}
|
||||||
{{< /gallery >}}
|
{{< /gallery >}}
|
||||||
|
|
||||||
I've also played around in 3D graphics, particularly raytracing, since
|
I've also played around in 3D graphics, particularly raytracing, since
|
||||||
@ -45,7 +43,7 @@ scenes from experimenting back in 2005, and though I hadn't heard of
|
|||||||
Context Free at that point (if it even existed) I was already trying
|
Context Free at that point (if it even existed) I was already trying
|
||||||
to do similar things in a sort of ad-hoc way.
|
to do similar things in a sort of ad-hoc way.
|
||||||
|
|
||||||
{{< figure page="images" resource="portfolio/2005-08-23-shear6.jpg">}}
|
{{< figure page="images" resources="portfolio/2005-08-23-shear6.jpg">}}
|
||||||
|
|
||||||
Naturally, this led me to wonder how I might extend Context Free's
|
Naturally, this led me to wonder how I might extend Context Free's
|
||||||
model to work more generally with 3D geometry, and let me use it to
|
model to work more generally with 3D geometry, and let me use it to
|
||||||
@ -70,9 +68,9 @@ Synth - one Blender screenshot, and two [[https://appleseedhq.net/][appleseed]]
|
|||||||
was trying to work with it:
|
was trying to work with it:
|
||||||
|
|
||||||
{{< gallery >}}
|
{{< gallery >}}
|
||||||
{{< figure resource="structure-synth-mesh.png">}}
|
{{< figure resources="structure-synth-mesh.png">}}
|
||||||
{{< figure page="images" resource="placeholder/appleseed_spiral_thing2.jpg">}}
|
{{< figure page="images" resources="placeholder/appleseed_spiral_thing2.jpg">}}
|
||||||
{{< figure page="images" resource="placeholder/appleseed_spiral_thing.jpg">}}
|
{{< figure page="images" resources="placeholder/appleseed_spiral_thing.jpg">}}
|
||||||
{{< /gallery >}}
|
{{< /gallery >}}
|
||||||
|
|
||||||
That's a "Hello World"-tier design I try out when something gives me
|
That's a "Hello World"-tier design I try out when something gives me
|
||||||
@ -92,8 +90,8 @@ crucial. Here's something similar I threw together in OpenSCAD with
|
|||||||
the help of some automatically generated code:
|
the help of some automatically generated code:
|
||||||
|
|
||||||
{{< gallery >}}
|
{{< gallery >}}
|
||||||
{{< figure resource="openscad-mesh.png">}}
|
{{< figure resources="openscad-mesh.png">}}
|
||||||
{{< figure resource="openscad-mesh2.png">}}
|
{{< figure resources="openscad-mesh2.png">}}
|
||||||
{{< /gallery >}}
|
{{< /gallery >}}
|
||||||
|
|
||||||
In the second image you can see how it properly handled intersecting
|
In the second image you can see how it properly handled intersecting
|
||||||
@ -127,7 +125,7 @@ can do it via a [[https://github.com/appleseedhq/appleseed/blob/master/sandbox/e
|
|||||||
before, also handles them nicely with its [[https://www.povray.org/documentation/view/3.6.1/300/][Isosurface Object]]. That is
|
before, also handles them nicely with its [[https://www.povray.org/documentation/view/3.6.1/300/][Isosurface Object]]. That is
|
||||||
what I used below in yet another of my 2005 experiments:
|
what I used below in yet another of my 2005 experiments:
|
||||||
|
|
||||||
{{< figure page="images" resource="portfolio/2005-07-05-spiral-isosurface2.jpg">}}
|
{{< figure page="images" resources="portfolio/2005-07-05-spiral-isosurface2.jpg">}}
|
||||||
|
|
||||||
Many renderers don't handle implicit surfaces at all. Blender's
|
Many renderers don't handle implicit surfaces at all. Blender's
|
||||||
renderers, [[https://www.cycles-renderer.org/][Cycles]] and [[https://docs.blender.org/manual/en/latest/render/eevee/introduction.html][Eevee]], are among them. Using implicit surfaces
|
renderers, [[https://www.cycles-renderer.org/][Cycles]] and [[https://docs.blender.org/manual/en/latest/render/eevee/introduction.html][Eevee]], are among them. Using implicit surfaces
|
||||||
|
|||||||
@ -2,45 +2,43 @@
|
|||||||
title: "Gallery?"
|
title: "Gallery?"
|
||||||
author: Chris Hodapp
|
author: Chris Hodapp
|
||||||
tags:
|
tags:
|
||||||
|
type: "photos"
|
||||||
---
|
---
|
||||||
|
|
||||||
This page structure is a work-in-progress. The thumbnails below are
|
This page structure is a work-in-progress. The thumbnails below are
|
||||||
supposed to link to individual pages - but I have not yet coded that
|
supposed to link to individual pages - but I have not yet coded that
|
||||||
part in.
|
part in.
|
||||||
|
|
||||||
{{< load-photoswipe >}}
|
|
||||||
|
|
||||||
<!-- link2 is to the actual page (until I can figure out how to link this properly) -->
|
|
||||||
<!-- class="no-photoswipe" to make a figure just link to 'link' but only if it's an image -->
|
|
||||||
{{< gallery >}}
|
{{< gallery >}}
|
||||||
{{< figure page="images" resource="placeholder/screw0006" title="Screw (April 12, 2020)" >}}
|
{{< figure page="images" resources="placeholder/screw0006.jpg" title="Screw (April 12, 2020) " >}}
|
||||||
{{< figure page="images" resource="placeholder/cinquefoil0010" title="Cinquefoil (November 16, 2019)" caption="Foo">}}
|
{{< figure page="images" resources="placeholder/cinquefoil0010.jpg" title="Cinquefoil (November 16, 2019)" >}}
|
||||||
{{< figure page="images" resource="placeholder/dream20191115b_1000" title="Dream (November 15, 2019)" >}}
|
{{< figure page="images" resources="placeholder/dream20191115b_1000.jpg" title="Dream (November 15, 2019)" >}}
|
||||||
{{< figure page="images" resource="placeholder/ramhorn_branch_0002" title="ramhorn_branch? (December 16, 2019)" >}}
|
{{< figure page="images" resources="placeholder/ramhorn_branch_0002.jpg" title="ramhorn_branch? (December 16, 2019)" >}}
|
||||||
{{< figure page="images" resource="portfolio/ramhorn-0004" title="Ram's Horn (September 15, 2019)" link2="../2019-09-15-rams-horns.md" >}}
|
{{< figure page="images" resources="portfolio/ramhorn-0004.jpg" title="Ram's Horn (September 15, 2019)" linkto="/works/2019-09-15-rams-horns" >}}
|
||||||
{{< figure page="images" resource="placeholder/iso_draft_0017" title="Isosurface try 2 (August 24, 2019)" >}}
|
{{< figure page="images" resources="placeholder/iso_draft_0017.jpg" title="Isosurface try 2 (August 24, 2019)" >}}
|
||||||
{{< figure page="images" resource="placeholder/appleseed_spiral_thing" title="Appleseed spiral thing (August 20, 2018)" >}}
|
{{< figure page="images" resources="placeholder/appleseed_spiral_thing.jpg" title="Appleseed spiral thing (August 20, 2018)" >}}
|
||||||
{{< figure page="images" resource="placeholder/appleseed_spiral_thing2" title="Appleseed spiral thing 2 (June 25, 2018)" >}}
|
{{< figure page="images" resources="placeholder/appleseed_spiral_thing2.jpg" title="Appleseed spiral thing 2 (June 25, 2018)" >}}
|
||||||
{{< figure page="images" resource="placeholder/2011-11-25-electron" title="Electron (November 25, 2011)" >}}
|
{{< figure page="images" resources="placeholder/2011-11-25-electron.jpg" title="Electron (November 25, 2011)" >}}
|
||||||
{{< figure page="images" resource="portfolio/2011-11-04-crystal1" title="Crystal #1 (November 4, 2011)" link2="../2011-11-04-crystal1.md" >}}
|
{{< figure page="images" resources="portfolio/2011-11-04-crystal1.jpg" title="Crystal #1 (November 4, 2011)" linkto="/works/2011-11-04-crystal1" >}}
|
||||||
{{< figure page="images" resource="placeholder/2011-11-03-feather2" title="Feather #2 (November 3, 2011)" >}}
|
{{< figure page="images" resources="placeholder/2011-11-03-feather2.jpg" title="Feather #2 (November 3, 2011)" >}}
|
||||||
{{< figure page="images" resource="placeholder/2011-11-03-feather1" title="Feather #1 (November 3, 2011)" >}}
|
{{< figure page="images" resources="placeholder/2011-11-03-feather1.jpg" title="Feather #1 (November 3, 2011)" >}}
|
||||||
{{< figure page="images" resource="portfolio/2011-09-09-conch" title="Conch (September 9, 2011)" link2="../2011-09-11-conch.md" >}}
|
{{< figure page="images" resources="portfolio/2011-09-09-conch.jpg" title="Conch (September 9, 2011)" linkto="/works/2011-09-11-conch" >}}
|
||||||
{{< figure page="images" resource="placeholder/2011-09-09-flow1" title="Flow? (September 9, 2011)" >}}
|
{{< figure page="images" resources="placeholder/2011-09-09-flow1.jpg" title="Flow? (September 9, 2011)" >}}
|
||||||
{{< figure page="images" resource="portfolio/2005-08-23-shear6" title="Shear #6 (August 23, 2005)" link2="../2005-08-23-shear6.md" >}}
|
{{< figure page="images" resources="portfolio/2005-08-23-shear6.jpg" title="Shear #6 (August 23, 2005)" linkto="/works/2005-08-23-shear6" >}}
|
||||||
{{< figure page="images" resource="portfolio/2005-08-19-beach" title="Beach (August 19, 2005)" link2="../2005-08-19-beach.md" >}}
|
{{< figure page="images" resources="portfolio/2005-08-19-beach.jpg" title="Beach (August 19, 2005)" linkto="/works/2005-08-19-beach" >}}
|
||||||
{{< figure page="images" resource="portfolio/2005-08-06-tears" title="Tears (August 6, 2005)" link2="../2005-08-06-tears.md" >}}
|
{{< figure page="images" resources="portfolio/2005-08-06-tears.jpg" title="Tears (August 6, 2005)" linkto="/works/2005-08-06-tears" >}}
|
||||||
{{< figure page="images" resource="portfolio/2005-08-05-oasis" title="Oasis (August 5, 2005)" link2="../2005-08-05-oasis.md" >}}
|
{{< figure page="images" resources="portfolio/2005-08-05-oasis.jpg" title="Oasis (August 5, 2005)" linkto="/works/2005-08-05-oasis" >}}
|
||||||
{{< figure page="images" resource="portfolio/2005-07-08-vaguely-celtic-metalwork" title="Vaguely Celtic Metalwork (July 8, 2005)" link2="../2005-07-08-vaguely-celtic-metalwork.md" >}}
|
{{< figure page="images" resources="portfolio/2005-07-08-vaguely-celtic-metalwork.jpg" title="Vaguely Celtic Metalwork (July 8, 2005)" linkto="/works/2005-07-08-vaguely-celtic-metalwork" >}}
|
||||||
{{< figure page="images" resource="portfolio/2005-07-05-spiral-isosurface2" title="Spiral Isosurface (July 5, 2005)" link2="../2005-07-05-spiral.md" >}}
|
{{< figure page="images" resources="portfolio/2005-07-05-spiral-isosurface2.jpg" title="Spiral Isosurface (July 5, 2005)" linkto="/works/2005-07-05-spiral" >}}
|
||||||
{{< figure page="images" resource="portfolio/2005-06-09-superellipsoids" title="Superellipsoids (June 9, 2005)" link2="../2005-06-09-superellipsoids.md" >}}
|
{{< figure page="images" resources="portfolio/2005-06-09-superellipsoids.jpg" title="Superellipsoids (June 9, 2005)" linkto="/works/2005-06-09-superellipsoids" >}}
|
||||||
{{< figure page="images" resource="portfolio/2005-05-11-unknown-planet" title="Unknown Planet (May 11, 2005)" link2="../2005-05-11-unknown-planet.md" >}}
|
{{< figure page="images" resources="portfolio/2005-05-11-unknown-planet.jpg" title="Unknown Planet (May 11, 2005)" linkto="/works/2005-05-11-unknown-planet" >}}
|
||||||
{{< figure page="images" resource="portfolio/2005-05-10-haze" title="Haze 3 (May 10, 2005)" link2="../2005-05-10-haze.md" >}}
|
{{< figure page="images" resources="portfolio/2005-05-10-haze.jpg" title="Haze 3 (May 10, 2005)" linkto="/works/2005-05-10-haze" >}}
|
||||||
{{< figure page="images" resource="portfolio/2004-12-23-butterfly" title="Butterfly (December 23, 2004)" link2="../2004-12-23-butterfly.md" >}}
|
{{< figure page="images" resources="portfolio/2004-12-23-butterfly.jpg" title="Butterfly (December 23, 2004)" linkto="/works/2004-12-23-butterfly" >}}
|
||||||
{{< figure page="images" resource="portfolio/2004-09-28-m4c-intro" title="M4C intro (September 28, 2004)" link2="../2004-09-28-m4c-intro.md" >}}
|
{{< figure page="images" resources="portfolio/2004-09-28-m4c-intro.jpg" title="M4C intro (September 28, 2004)" linkto="/works/2004-09-28-m4c-intro" >}}
|
||||||
{{< figure page="images" resource="portfolio/2004-09-19-roses" title="Roses (September 19, 2004)" link2="../2004-09-19-roses.md" >}}
|
{{< figure page="images" resources="portfolio/2004-09-19-roses.jpg" title="Roses (September 19, 2004)" linkto="/works/2004-09-19-roses" >}}
|
||||||
{{< figure page="images" resource="portfolio/2004-07-16-crunchy-bubbles" title="Crunchy Bubbles (July 16, 2004)" link2="../2004-07-16-crunchy-bubbles.md" >}}
|
{{< figure page="images" resources="portfolio/2004-07-16-crunchy-bubbles.jpg" title="Crunchy Bubbles (July 16, 2004)" linkto="/works/2004-07-16-crunchy-bubbles" >}}
|
||||||
{{< figure page="images" resource="portfolio/2004-07-15-kpovmodeler-test" title="KPovModeler test (?) (July 15, 2004)" link2="../2004-07-15-kpovmodeler.md" >}}
|
{{< figure page="images" resources="portfolio/2004-07-15-kpovmodeler-test.jpg" title="KPovModeler test (?) (July 15, 2004)" linkto="/works/2004-07-15-kpovmodeler" >}}
|
||||||
{{< figure page="images" resource="portfolio/1999-12-22-table" title="'Table' or something (Dec 22, 1999)" link2="../1999-12-22-table-polyray.md" >}}
|
{{< figure page="images" resources="portfolio/1999-12-22-table.jpg" title="'Table' or something (Dec 22, 1999)" linkto="/works/1999-12-22-table-polyray" >}}
|
||||||
{{< figure page="images" resource="portfolio/1999-12-21-moo" caption="*Foo* [link](./link)" title="Moo (Dec 21, 1999)" caption="*Foo* [link](./link)" link2="../1999-12-21-moo-polyray/">}}
|
{{< figure page="images" resources="portfolio/1999-12-21-moo.jpg" title="Moo (Dec 21, 1999)" linkto="/works/1999-12-21-moo-polyray">}}
|
||||||
|
|
||||||
{{< /gallery >}}
|
{{< /gallery >}}
|
||||||
|
|||||||
8
layouts/partials/footer.html
Normal file
8
layouts/partials/footer.html
Normal file
@ -0,0 +1,8 @@
|
|||||||
|
<!-- From https://blog.cavelab.dev/2021/04/photo-gallery-posts/ -->
|
||||||
|
|
||||||
|
{{- if and (eq .Type "photos") (eq .Kind "page") -}}
|
||||||
|
<script src="{{ (resources.Get "assets/lightgallery.min.js" | fingerprint).Permalink }}"></script>
|
||||||
|
<script>lightGallery(document.getElementById('lightgallery'), {selector: '.photo-item'});</script>
|
||||||
|
{{- end -}}
|
||||||
|
|
||||||
|
<!-- lightgallery is: https://github.com/sachinchoolur/lightGallery -->
|
||||||
8
layouts/partials/header.html
Normal file
8
layouts/partials/header.html
Normal file
@ -0,0 +1,8 @@
|
|||||||
|
<!-- From https://blog.cavelab.dev/2021/04/photo-gallery-posts/ -->
|
||||||
|
{{- if and (eq .Type "photos") (eq .Kind "page") -}}
|
||||||
|
<link rel="stylesheet" href="{{ (resources.Get "assets/lightgallery.css" | fingerprint).Permalink }}" />
|
||||||
|
{{- end -}}
|
||||||
|
<!-- lightgallery is: https://github.com/sachinchoolur/lightGallery -->
|
||||||
|
|
||||||
|
<link rel="stylesheet" href="{{ .Site.BaseURL }}css/custom.css">
|
||||||
|
|
||||||
@ -1,25 +1,9 @@
|
|||||||
<!--
|
<!-- See cavelab_notes.txt at root of repo. -->
|
||||||
Put this file in /layouts/shortcodes/figure.html
|
|
||||||
NB this overrides Hugo's built-in "figure" shortcode but is backwards compatible
|
|
||||||
Documentation and licence at https://github.com/liwenyip/hugo-easy-gallery/
|
|
||||||
-->
|
|
||||||
|
|
||||||
<!-- count how many times we've called this shortcode; load the css if it's the first time -->
|
<!-- Started from: https://blog.cavelab.dev/2021/04/photo-gallery-posts/ -->
|
||||||
{{- if not ($.Page.Scratch.Get "figurecount") -}}<link rel="stylesheet" href="/css/hugo-easy-gallery.css" />{{- end -}}
|
|
||||||
{{- $.Page.Scratch.Add "figurecount" 1 -}}
|
|
||||||
|
|
||||||
<!-- if 'resource' is given, look for a page resource by that name. -->
|
<!-- if 'page' is given, find page resources there. -->
|
||||||
<!-- if 'page' is given, find the page resource there. -->
|
<!-- if not, find page resources in the current page. -->
|
||||||
<!-- if not, find the page resource in the current page. -->
|
|
||||||
<!-- (yes, my description is probably at least 50% wrong) -->
|
|
||||||
|
|
||||||
<!-- Thumbnail image size/type -->
|
|
||||||
{{- $resize_opts := "600x jpg" -}}
|
|
||||||
<!-- TODO: This isn't generating a JPEG on my configuration. Not sure
|
|
||||||
why. Hugo version issue? -->
|
|
||||||
{{- $thumb := "" -}}
|
|
||||||
{{- $href := "" -}}
|
|
||||||
{{- if .Get "resource" -}}
|
|
||||||
{{- $page := $.Page -}}
|
{{- $page := $.Page -}}
|
||||||
{{- with .Get "page" -}}
|
{{- with .Get "page" -}}
|
||||||
{{- $page = $.Site.GetPage . -}}
|
{{- $page = $.Site.GetPage . -}}
|
||||||
@ -27,45 +11,97 @@ Documentation and licence at https://github.com/liwenyip/hugo-easy-gallery/
|
|||||||
{{- if not $page -}}
|
{{- if not $page -}}
|
||||||
{{- errorf "Error: Can't find page %s" (.Get "page") -}}
|
{{- errorf "Error: Can't find page %s" (.Get "page") -}}
|
||||||
{{- end -}}
|
{{- end -}}
|
||||||
{{- $resource := (.Get "resource") -}}
|
|
||||||
{{- $original := $page.Resources.GetMatch (printf "*%s*" $resource) -}}
|
{{- $linkto := .Get "linkto" -}}
|
||||||
{{- if eq $original nil -}}
|
{{- $linktitle := "" -}}
|
||||||
{{- errorf "Error: Can't find resource %s on page %s" $resource (.Get "page") -}}
|
{{- if $linkto -}}
|
||||||
|
{{- $linktitle = ($.Site.GetPage $linkto).Title -}}
|
||||||
{{- end -}}
|
{{- end -}}
|
||||||
{{- if .Get "noresize" -}}
|
{{- $title := .Get "title" -}}
|
||||||
{{- .Scratch.Set "image" $original -}}
|
|
||||||
{{- else -}}
|
{{- $resources := .Get "resources" -}}
|
||||||
{{- .Scratch.Set "image" ($original.Resize $resize_opts) -}}
|
{{- if not $resources -}}
|
||||||
{{- end -}}
|
{{- errorf "Error: 'resources' must be given" -}}
|
||||||
{{- $image := .Scratch.Get "image" -}}
|
|
||||||
{{- $thumb = $image.RelPermalink -}}
|
|
||||||
{{- $href = $original.RelPermalink -}}
|
|
||||||
{{- else -}}
|
|
||||||
<!-- use either src or link-thumb for thumbnail image -->
|
|
||||||
{{- $thumb = .Get "src" | default (printf "%s." (.Get "thumb") | replace (.Get "link") ".") -}}
|
|
||||||
{{- $href = .Get "link" | default (.Get "src") -}}
|
|
||||||
{{- end -}}
|
{{- end -}}
|
||||||
|
|
||||||
<div class="box{{ with .Get "caption-position" }} fancy-figure caption-position-{{.}}{{end}}{{ with .Get "caption-effect" }} caption-effect-{{.}}{{end}}" {{ with .Get "width" }}style="max-width:{{.}}"{{end}}>
|
{{- range $src := $page.Resources.Match $resources -}}
|
||||||
<figure {{ with .Get "class" }}class="{{.}}"{{ end }} itemprop="associatedMedia" itemscope itemtype="http://schema.org/ImageObject">
|
{{- $exifJson := $page.Resources.GetMatch (printf "%s.json" .Name) -}}
|
||||||
<!-- Prepending ../.. below is a hack to get around
|
|
||||||
https://github.com/gohugoio/hugo/issues/2744 when I don't
|
|
||||||
feel like setting baseURL and using absolute URLs. -->
|
|
||||||
<div class="img"{{ if .Parent }} style="background-image: url('../..{{ $thumb }}');"{{ end }}{{ with .Get "size" }} data-size="{{.}}"{{ end }}>
|
|
||||||
<img itemprop="thumbnail" src="{{ $thumb }}" {{ with .Get "alt" | default (.Get "caption" | markdownify) }}alt="{{.}}"{{ end }}/><!-- <img> hidden if in .gallery -->
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<a href="{{ $href }}" itemprop="contentUrl"></a>
|
{{- $exif := slice -}}
|
||||||
{{- if or (or (.Get "title") (.Get "caption" | markdownify)) (.Get "attr") -}}
|
{{- with $exifJson -}}
|
||||||
<figcaption>
|
{{- with (index (.Content | unmarshal) 0) -}}
|
||||||
{{- with .Get "title" -}}<h4>{{.}}</h4>{{ end }}
|
{{- with .Title -}}
|
||||||
{{- if or (.Get "caption" | markdownify) (.Get "attr")}}
|
<!-- If user gave no title, but Exif has one, use that: -->
|
||||||
<p>
|
{{- if not $title -}}
|
||||||
{{- .Get "caption" -}}
|
{{- $title = . -}}
|
||||||
{{- with .Get "attrlink"}}<a href="{{.}}">{{ .Get "attr" }}</a>{{ else }}{{ .Get "attr"}}{{ end -}}
|
|
||||||
</p>
|
|
||||||
{{- end -}}
|
{{- end -}}
|
||||||
</figcaption>
|
|
||||||
{{- end -}}
|
{{- end -}}
|
||||||
</figure>
|
{{- with .Make2 -}}{{- $exif = $exif | append (printf "Make: %s" .) -}}{{- end -}}
|
||||||
|
{{- with .Model -}}{{- $exif = $exif | append (printf "Camera: %s" .) -}}{{- end -}}
|
||||||
|
{{- with .LensSpec -}}{{- $exif = $exif | append (printf "Lens: %s" .) -}}{{- end -}}
|
||||||
|
{{- with .FocalLength -}}{{- $exif = $exif | append (printf "Focal length: %s" .) -}}{{- end -}}
|
||||||
|
{{- with .FNumber -}}{{- $exif = $exif | append (printf "Aperture: ƒ/%.1f" .) -}}{{- end -}}
|
||||||
|
{{- with .ExposureTime -}}
|
||||||
|
{{- if eq (printf "%T" .) "float64" -}}
|
||||||
|
{{- $exif = $exif | append (printf "Exposure time: %.1f s" .) -}}
|
||||||
|
{{- else -}}
|
||||||
|
{{- $exif = $exif | append (printf "Exposure time: %s s" .) -}}
|
||||||
|
{{- end -}}
|
||||||
|
{{- end -}}
|
||||||
|
{{- with .ISO -}}{{- $exif = $exif | append (printf "ISO: %.0f" .) -}}{{- end -}}
|
||||||
|
{{- end -}}
|
||||||
|
{{- end -}}
|
||||||
|
|
||||||
|
<!-- If still no title, just use the filename: -->
|
||||||
|
{{- if not $title -}}
|
||||||
|
{{- $title = .Title -}}
|
||||||
|
{{- end -}}
|
||||||
|
|
||||||
|
<!-- If *still* no title, but a link was given, use page title from link: -->
|
||||||
|
{{- $text := $title -}}
|
||||||
|
{{- if $linkto -}}
|
||||||
|
{{- if not $title -}}
|
||||||
|
{{- $title = $linktitle -}}
|
||||||
|
{{- end -}}
|
||||||
|
{{- $text = (printf "<a href=\"%s\">%s</a>" (relref $.Page $linkto) $title) -}}
|
||||||
|
{{- end -}}
|
||||||
|
|
||||||
|
<div class="photo-item" data-src="{{ .Permalink }}" data-sub-html="<h4>{{ $text }}</h4><p>{{ delimit $exif " | " }}</p>">
|
||||||
|
{{- $crop := default "smart" -}}
|
||||||
|
{{- $tinyw := printf "500x375 %s Lanczos q85" $crop -}}
|
||||||
|
{{- $smallw := printf "800x600 %s Lanczos q80" $crop -}}
|
||||||
|
{{- $mediumw := printf "1200x900 %s Lanczos q40" $crop -}}
|
||||||
|
{{- $largew := printf "1600x1200 %s Lanczos q30" $crop -}}
|
||||||
|
|
||||||
|
{{- $srcset := slice -}}
|
||||||
|
|
||||||
|
{{- $tiny := ($src.Fill $tinyw) -}}
|
||||||
|
{{- $srcset = $srcset | append (printf "%s 500w" $tiny.Permalink) -}}
|
||||||
|
{{- $img := dict "src" $tiny.RelPermalink "w" $tiny.Width "h" $src.Height -}}
|
||||||
|
|
||||||
|
{{- if and (ge $src.Width "800") (ne $src.MediaType.SubType "png") -}}
|
||||||
|
{{- $small := ($src.Fill $smallw) -}}
|
||||||
|
{{- $srcset = $srcset | append (printf "%s 800w" $small.Permalink) -}}
|
||||||
|
{{- $img = dict "src" $small.RelPermalink "w" $small.Width "h" $small.Height -}}
|
||||||
|
{{- end -}}
|
||||||
|
{{- if and (ge $src.Width "1200") (ne $src.MediaType.SubType "png") -}}
|
||||||
|
{{- $medium := ($src.Fill $mediumw) -}}
|
||||||
|
{{- $srcset = $srcset | append (printf "%s 1200w" $medium.Permalink) -}}
|
||||||
|
{{- end -}}
|
||||||
|
{{- if and (ge $src.Width "1600") (ne $src.MediaType.SubType "png") -}}
|
||||||
|
{{- $large := ($src.Fill $largew) -}}
|
||||||
|
{{- $srcset = $srcset | append (printf "%s 1600w" $large.Permalink) -}}
|
||||||
|
{{- end -}}
|
||||||
|
|
||||||
|
{{- $sizes := "(min-width: 900px) 420px, (min-width: 684px) 310px, calc(100vw - 40px)" -}}
|
||||||
|
|
||||||
|
<a href="{{ .Permalink }}">
|
||||||
|
<picture>
|
||||||
|
<source type="{{ $src.MediaType }}" sizes="{{ $sizes }}" srcset='{{ delimit $srcset ", " }}'>
|
||||||
|
<img loading="lazy" class="center"
|
||||||
|
src="{{ $img.src }}" width="{{ $img.w }}" height="{{ $img.h }}" alt="{{ $title }}">
|
||||||
|
<!-- CMH: img was missing closing tag on his website -->
|
||||||
|
</picture>
|
||||||
|
</a>
|
||||||
</div>
|
</div>
|
||||||
|
{{ end }}
|
||||||
|
|||||||
@ -1,41 +1,4 @@
|
|||||||
<!--
|
<!-- See cavelab_notes.txt at root of repo. -->
|
||||||
Put this file in /layouts/shortcodes/gallery.html
|
<div class="photo-container" id="lightgallery">
|
||||||
Documentation and licence at https://github.com/liwenyip/hugo-easy-gallery/
|
|
||||||
-->
|
|
||||||
<!-- count how many times we've called this shortcode; load the css if it's the first time -->
|
|
||||||
{{- if not ($.Page.Scratch.Get "figurecount") }}<link rel="stylesheet" href="/css/hugo-easy-gallery.css" />{{ end }}
|
|
||||||
{{- $.Page.Scratch.Add "figurecount" 1 }}
|
|
||||||
{{ $baseURL := .Site.BaseURL }}
|
|
||||||
<div class="gallery caption-position-{{ with .Get "caption-position" | default "bottom" }}{{.}}{{end}} caption-effect-{{ with .Get "caption-effect" | default "slide" }}{{.}}{{end}} hover-effect-{{ with .Get "hover-effect" | default "zoom" }}{{.}}{{end}} {{ if ne (.Get "hover-transition") "none" }}hover-transition{{end}}" itemscope itemtype="http://schema.org/ImageGallery">
|
|
||||||
{{- with (.Get "dir") -}}
|
|
||||||
<!-- If a directory was specified, generate figures for all of the images in the directory -->
|
|
||||||
{{- $files := readDir (print "/static/" .) }}
|
|
||||||
{{- range $files -}}
|
|
||||||
<!-- skip files that aren't images, or that inlcude the thumb suffix in their name -->
|
|
||||||
{{- $thumbext := $.Get "thumb" | default "-thumb" }}
|
|
||||||
{{- $isthumb := .Name | findRE ($thumbext | printf "%s\\.") }}<!-- is the current file a thumbnail image? -->
|
|
||||||
{{- $isimg := lower .Name | findRE "\\.(gif|jpg|jpeg|tiff|png|bmp)" }}<!-- is the current file an image? -->
|
|
||||||
{{- if and $isimg (not $isthumb) }}
|
|
||||||
{{- $caption := .Name | replaceRE "\\..*" "" | humanize }}<!-- humanized filename without extension -->
|
|
||||||
{{- $linkURL := print $baseURL ($.Get "dir") "/" .Name | absURL }}<!-- absolute URL to hi-res image -->
|
|
||||||
{{- $thumb := .Name | replaceRE "(\\.)" ($thumbext | printf "%s.") }}<!-- filename of thumbnail image -->
|
|
||||||
{{- $thumbexists := where $files "Name" $thumb }}<!-- does a thumbnail image exist? -->
|
|
||||||
{{- $thumbURL := print $baseURL ($.Get "dir") "/" $thumb | absURL }}<!-- absolute URL to thumbnail image -->
|
|
||||||
<div class="box">
|
|
||||||
<figure itemprop="associatedMedia" itemscope itemtype="http://schema.org/ImageObject">
|
|
||||||
<div class="img" style="background-image: url('{{ if $thumbexists }}{{ $thumbURL }}{{ else }}{{ $linkURL }}{{ end }}');" >
|
|
||||||
<img itemprop="thumbnail" src="{{ if $thumbexists }}{{ $thumbURL }}{{ else }}{{ $linkURL }}{{ end }}" alt="{{ $caption }}" /><!-- <img> hidden if in .gallery -->
|
|
||||||
</div>
|
|
||||||
<figcaption>
|
|
||||||
<p>{{ $caption }}</p>
|
|
||||||
</figcaption>
|
|
||||||
<a href="{{ $linkURL }}" itemprop="contentUrl"></a><!-- put <a> last so it is stacked on top -->
|
|
||||||
</figure>
|
|
||||||
</div>
|
|
||||||
{{- end }}
|
|
||||||
{{- end }}
|
|
||||||
{{- else -}}
|
|
||||||
<!-- If no directory was specified, include any figure shortcodes called within the gallery -->
|
|
||||||
{{ .Inner }}
|
{{ .Inner }}
|
||||||
{{- end }}
|
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@ -1,71 +0,0 @@
|
|||||||
<!--
|
|
||||||
Put this file in /layouts/shortcodes/load-photoswipe.html
|
|
||||||
Documentation and licence at https://github.com/liwenyip/hugo-easy-gallery/
|
|
||||||
-->
|
|
||||||
|
|
||||||
<!-- prevent this shortcode from being loaded more than once per page -->
|
|
||||||
{{ if not ($.Page.Scratch.Get "photoswipeloaded") }}
|
|
||||||
{{ $.Page.Scratch.Set "photoswipeloaded" 1 }}
|
|
||||||
|
|
||||||
<!--
|
|
||||||
*** jQuery must be loaded before load-photoswipe.js ***
|
|
||||||
- If your template already loads jQuery in the header then you don't need to load it again here.
|
|
||||||
- If your template already loads jQuery in the footer, then you could load load-photoswipe.js from the footer instead
|
|
||||||
-->
|
|
||||||
<script src="https://code.jquery.com/jquery-1.12.4.min.js" integrity="sha256-ZosEbRLbNQzLpnKIkEdrPv7lOy9C27hHQ+Xp8a4MxAQ=" crossorigin="anonymous"></script>
|
|
||||||
<script src="/js/load-photoswipe.js"></script>
|
|
||||||
|
|
||||||
<!-- Photoswipe css/js libraries -->
|
|
||||||
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/photoswipe/4.1.1/photoswipe.min.css" integrity="sha256-sCl5PUOGMLfFYctzDW3MtRib0ctyUvI9Qsmq2wXOeBY=" crossorigin="anonymous" />
|
|
||||||
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/photoswipe/4.1.1/default-skin/default-skin.min.css" integrity="sha256-BFeI1V+Vh1Rk37wswuOYn5lsTcaU96hGaI7OUVCLjPc=" crossorigin="anonymous" />
|
|
||||||
<script src="https://cdnjs.cloudflare.com/ajax/libs/photoswipe/4.1.1/photoswipe.min.js" integrity="sha256-UplRCs9v4KXVJvVY+p+RSo5Q4ilAUXh7kpjyIP5odyc=" crossorigin="anonymous"></script>
|
|
||||||
<script src="https://cdnjs.cloudflare.com/ajax/libs/photoswipe/4.1.1/photoswipe-ui-default.min.js" integrity="sha256-PWHOlUzc96pMc8ThwRIXPn8yH4NOLu42RQ0b9SpnpFk=" crossorigin="anonymous"></script>
|
|
||||||
|
|
||||||
<!-- Root element of PhotoSwipe. Must have class pswp. -->
|
|
||||||
<div class="pswp" tabindex="-1" role="dialog" aria-hidden="true">
|
|
||||||
<!-- Background of PhotoSwipe.
|
|
||||||
It's a separate element, as animating opacity is faster than rgba(). -->
|
|
||||||
<div class="pswp__bg"></div>
|
|
||||||
<!-- Slides wrapper with overflow:hidden. -->
|
|
||||||
<div class="pswp__scroll-wrap">
|
|
||||||
<!-- Container that holds slides.
|
|
||||||
PhotoSwipe keeps only 3 of them in DOM to save memory.
|
|
||||||
Don't modify these 3 pswp__item elements, data is added later on. -->
|
|
||||||
<div class="pswp__container">
|
|
||||||
<div class="pswp__item"></div>
|
|
||||||
<div class="pswp__item"></div>
|
|
||||||
<div class="pswp__item"></div>
|
|
||||||
</div>
|
|
||||||
<!-- Default (PhotoSwipeUI_Default) interface on top of sliding area. Can be changed. -->
|
|
||||||
<div class="pswp__ui pswp__ui--hidden">
|
|
||||||
<div class="pswp__top-bar">
|
|
||||||
<!-- Controls are self-explanatory. Order can be changed. -->
|
|
||||||
<div class="pswp__counter"></div>
|
|
||||||
<button class="pswp__button pswp__button--close" title="Close (Esc)"></button>
|
|
||||||
<button class="pswp__button pswp__button--share" title="Share"></button>
|
|
||||||
<button class="pswp__button pswp__button--fs" title="Toggle fullscreen"></button>
|
|
||||||
<button class="pswp__button pswp__button--zoom" title="Zoom in/out"></button>
|
|
||||||
<!-- Preloader demo http://codepen.io/dimsemenov/pen/yyBWoR -->
|
|
||||||
<!-- element will get class pswp__preloader--active when preloader is running -->
|
|
||||||
<div class="pswp__preloader">
|
|
||||||
<div class="pswp__preloader__icn">
|
|
||||||
<div class="pswp__preloader__cut">
|
|
||||||
<div class="pswp__preloader__donut"></div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="pswp__share-modal pswp__share-modal--hidden pswp__single-tap">
|
|
||||||
<div class="pswp__share-tooltip"></div>
|
|
||||||
</div>
|
|
||||||
<button class="pswp__button pswp__button--arrow--left" title="Previous (arrow left)">
|
|
||||||
</button>
|
|
||||||
<button class="pswp__button pswp__button--arrow--right" title="Next (arrow right)">
|
|
||||||
</button>
|
|
||||||
<div class="pswp__caption">
|
|
||||||
<div class="pswp__caption__center"></div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
{{ end }}
|
|
||||||
@ -6,3 +6,23 @@ code {
|
|||||||
background-color: #EEE
|
background-color: #EEE
|
||||||
}
|
}
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
/* From https://blog.cavelab.dev/2021/04/photo-gallery-posts
|
||||||
|
and then run through sass: */
|
||||||
|
.photo-container {
|
||||||
|
display: flex;
|
||||||
|
flex-wrap: wrap;
|
||||||
|
margin: 0 -40px; }
|
||||||
|
@media (max-width: 899px) {
|
||||||
|
.photo-container {
|
||||||
|
margin: 0; } }
|
||||||
|
.photo-container img {
|
||||||
|
height: auto; /* CMH: needed to add this manually */
|
||||||
|
border-radius: 8px; }
|
||||||
|
.photo-container .photo-item {
|
||||||
|
padding: 2px;
|
||||||
|
width: 50%; }
|
||||||
|
@media (max-width: 683px) {
|
||||||
|
.photo-container .photo-item {
|
||||||
|
width: 100%; } }
|
||||||
|
|
||||||
|
|||||||
@ -1,160 +0,0 @@
|
|||||||
/*
|
|
||||||
Put this file in /static/css/hugo-easy-gallery.css
|
|
||||||
Documentation and licence at https://github.com/liwenyip/hugo-easy-gallery/
|
|
||||||
*/
|
|
||||||
|
|
||||||
|
|
||||||
/*
|
|
||||||
Grid Layout Styles
|
|
||||||
*/
|
|
||||||
.gallery {
|
|
||||||
overflow: hidden;
|
|
||||||
margin: 10px;
|
|
||||||
max-width: 768px;
|
|
||||||
}
|
|
||||||
.gallery .box {
|
|
||||||
float: left;
|
|
||||||
position: relative;
|
|
||||||
/* Default: 1 tile wide */
|
|
||||||
width: 100%;
|
|
||||||
padding-bottom: 100%;
|
|
||||||
}
|
|
||||||
@media only screen and (min-width : 365px) {
|
|
||||||
/* Tablet view: 2 tiles */
|
|
||||||
.gallery .box {
|
|
||||||
width: 50%;
|
|
||||||
padding-bottom: 50%;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@media only screen and (min-width : 480px) {
|
|
||||||
/* Small desktop / ipad view: 3 tiles */
|
|
||||||
.gallery .box {
|
|
||||||
width: 33.3%;
|
|
||||||
padding-bottom: 33.3%; /* */
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@media only screen and (min-width : 9999px) {
|
|
||||||
/* Medium desktop: 4 tiles */
|
|
||||||
.box {
|
|
||||||
width: 25%;
|
|
||||||
padding-bottom: 25%;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/*
|
|
||||||
Transition styles
|
|
||||||
*/
|
|
||||||
.gallery.hover-transition figure,
|
|
||||||
.gallery.hover-effect-zoom .img,
|
|
||||||
.gallery:not(.caption-effect-appear) figcaption,
|
|
||||||
.fancy-figure:not(.caption-effect-appear) figcaption {
|
|
||||||
-webkit-transition: all 0.3s ease-in-out;
|
|
||||||
-moz-transition: all 0.3s ease-in-out;
|
|
||||||
-o-transition: all 0.3s ease-in-out;
|
|
||||||
transition: all 0.3s ease-in-out;
|
|
||||||
}
|
|
||||||
/*
|
|
||||||
figure styles
|
|
||||||
*/
|
|
||||||
figure {
|
|
||||||
position:relative; /* purely to allow absolution positioning of figcaption */
|
|
||||||
overflow: hidden;
|
|
||||||
margin: 0;
|
|
||||||
}
|
|
||||||
.gallery figure {
|
|
||||||
position: absolute;
|
|
||||||
left: 5px;
|
|
||||||
right: 5px;
|
|
||||||
top: 5px;
|
|
||||||
bottom: 5px;
|
|
||||||
}
|
|
||||||
.gallery.hover-effect-grow figure:hover {
|
|
||||||
transform: scale(1.05);
|
|
||||||
}
|
|
||||||
.gallery.hover-effect-shrink figure:hover {
|
|
||||||
transform: scale(0.95);
|
|
||||||
}
|
|
||||||
.gallery.hover-effect-slidedown figure:hover {
|
|
||||||
transform: translateY(5px);
|
|
||||||
}
|
|
||||||
.gallery.hover-effect-slideup figure:hover {
|
|
||||||
transform: translateY(-5px);
|
|
||||||
}
|
|
||||||
|
|
||||||
/*
|
|
||||||
img / a styles
|
|
||||||
*/
|
|
||||||
|
|
||||||
.gallery .img {
|
|
||||||
position: absolute;
|
|
||||||
left: 0;
|
|
||||||
right: 0;
|
|
||||||
top: 0;
|
|
||||||
bottom: 0;
|
|
||||||
background-size: cover;
|
|
||||||
background-position: 50% 50%;
|
|
||||||
background-repeat: no-repeat;
|
|
||||||
}
|
|
||||||
.gallery.hover-effect-zoom figure:hover .img {
|
|
||||||
transform: scale(1.05);
|
|
||||||
}
|
|
||||||
.gallery img {
|
|
||||||
display: none; /* only show the img if not inside a gallery */
|
|
||||||
}
|
|
||||||
figure a {
|
|
||||||
position: absolute;
|
|
||||||
left: 0;
|
|
||||||
right: 0;
|
|
||||||
top: 0;
|
|
||||||
bottom: 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
/*
|
|
||||||
figcaption styles
|
|
||||||
*/
|
|
||||||
.gallery figcaption,
|
|
||||||
.fancy-figure figcaption {
|
|
||||||
position: absolute;
|
|
||||||
bottom: 0;
|
|
||||||
left: 0;
|
|
||||||
right: 0;
|
|
||||||
background: #000;
|
|
||||||
color: #FFF;
|
|
||||||
text-align: center;
|
|
||||||
font-size: 75%; /* change this if you want bigger text */
|
|
||||||
background: rgba(0, 0, 0, 0.5);
|
|
||||||
opacity: 1;
|
|
||||||
cursor: pointer;
|
|
||||||
}
|
|
||||||
.gallery.caption-position-none figcaption,
|
|
||||||
.fancy-figure.caption-position-none figcaption {
|
|
||||||
display: none;
|
|
||||||
}
|
|
||||||
.gallery.caption-position-center figcaption,
|
|
||||||
.fancy-figure.caption-position-center figcaption {
|
|
||||||
top: 0;
|
|
||||||
padding: 40% 5px;
|
|
||||||
}
|
|
||||||
.gallery.caption-position-bottom figcaption,
|
|
||||||
.fancy-figure.caption-position-bottom figcaption {
|
|
||||||
padding: 5px;
|
|
||||||
}
|
|
||||||
.gallery.caption-effect-fade figure:not(:hover) figcaption,
|
|
||||||
.gallery.caption-effect-appear figure:not(:hover) figcaption,
|
|
||||||
.fancy-figure.caption-effect-fade figure:not(:hover) figcaption,
|
|
||||||
.fancy-figure.caption-effect-appear figure:not(:hover) figcaption {
|
|
||||||
background: rgba(0, 0, 0, 0);
|
|
||||||
opacity: 0;
|
|
||||||
}
|
|
||||||
.gallery.caption-effect-slide.caption-position-bottom figure:not(:hover) figcaption,
|
|
||||||
.fancy-figure.caption-effect-slide.caption-position-bottom figure:not(:hover) figcaption {
|
|
||||||
margin-bottom: -100%;
|
|
||||||
}
|
|
||||||
.gallery.caption-effect-slide.caption-position-center figure:not(:hover) figcaption,
|
|
||||||
.fancy-figure.caption-effect-slide.caption-position-center figure:not(:hover) figcaption {
|
|
||||||
top: 100%;
|
|
||||||
}
|
|
||||||
figcaption p {
|
|
||||||
margin: auto; /* override style in theme */
|
|
||||||
}
|
|
||||||
|
|
||||||
@ -1,80 +0,0 @@
|
|||||||
/*
|
|
||||||
Put this file in /static/js/load-photoswipe.js
|
|
||||||
Documentation and licence at https://github.com/liwenyip/hugo-easy-gallery/
|
|
||||||
*/
|
|
||||||
|
|
||||||
/* Show an alert if this js file has been loaded twice */
|
|
||||||
if (window.loadphotoswipejs) {
|
|
||||||
window.alert("You've loaded load-photoswipe.js twice. See https://github.com/liwenyip/hugo-easy-gallery/issues/6")
|
|
||||||
}
|
|
||||||
var loadphotoswipejs = 1
|
|
||||||
|
|
||||||
/* TODO: Make the share function work */
|
|
||||||
$( document ).ready(function() {
|
|
||||||
/*
|
|
||||||
Initialise Photoswipe
|
|
||||||
*/
|
|
||||||
var items = []; // array of slide objects that will be passed to PhotoSwipe()
|
|
||||||
// for every figure element on the page:
|
|
||||||
$('figure').each( function() {
|
|
||||||
if ($(this).attr('class') == 'no-photoswipe') return true; // ignore any figures where class="no-photoswipe"
|
|
||||||
// get properties from child a/img/figcaption elements,
|
|
||||||
var $figure = $(this),
|
|
||||||
$a = $figure.find('a'),
|
|
||||||
$img = $figure.find('img'),
|
|
||||||
$src = $a.attr('href'),
|
|
||||||
$title = $img.attr('alt'),
|
|
||||||
$msrc = $img.attr('src');
|
|
||||||
// if data-size on <a> tag is set, read it and create an item
|
|
||||||
if ($a.data('size')) {
|
|
||||||
var $size = $a.data('size').split('x');
|
|
||||||
var item = {
|
|
||||||
src : $src,
|
|
||||||
w : $size[0],
|
|
||||||
h : $size[1],
|
|
||||||
title : $title,
|
|
||||||
msrc : $msrc
|
|
||||||
};
|
|
||||||
console.log("Using pre-defined dimensions for " + $src);
|
|
||||||
// if not, set temp default size then load the image to check actual size
|
|
||||||
} else {
|
|
||||||
var item = {
|
|
||||||
src : $src,
|
|
||||||
w : 800, // temp default size
|
|
||||||
h : 600, // temp default size
|
|
||||||
title : $title,
|
|
||||||
msrc : $msrc
|
|
||||||
};
|
|
||||||
console.log("Using default dimensions for " + $src);
|
|
||||||
// load the image to check its dimensions
|
|
||||||
// update the item as soon as w and h are known (check every 30ms)
|
|
||||||
var img = new Image();
|
|
||||||
img.src = $src;
|
|
||||||
var wait = setInterval(function() {
|
|
||||||
var w = img.naturalWidth,
|
|
||||||
h = img.naturalHeight;
|
|
||||||
if (w && h) {
|
|
||||||
clearInterval(wait);
|
|
||||||
item.w = w;
|
|
||||||
item.h = h;
|
|
||||||
console.log("Got actual dimensions for " + img.src);
|
|
||||||
}
|
|
||||||
}, 30);
|
|
||||||
}
|
|
||||||
// Save the index of this image then add it to the array
|
|
||||||
var index = items.length;
|
|
||||||
items.push(item);
|
|
||||||
// Event handler for click on a figure
|
|
||||||
$figure.on('click', function(event) {
|
|
||||||
event.preventDefault(); // prevent the normal behaviour i.e. load the <a> hyperlink
|
|
||||||
// Get the PSWP element and initialise it with the desired options
|
|
||||||
var $pswp = $('.pswp')[0];
|
|
||||||
var options = {
|
|
||||||
index: index,
|
|
||||||
bgOpacity: 0.8,
|
|
||||||
showHideOpacity: true
|
|
||||||
}
|
|
||||||
new PhotoSwipe($pswp, PhotoSwipeUI_Default, items, options).init();
|
|
||||||
});
|
|
||||||
});
|
|
||||||
});
|
|
||||||
Loading…
x
Reference in New Issue
Block a user