REBOL [
Title: "Make html figures page"
Purpose: {Select images one at a time, transform to base 64
encoding, embed in a web page with a caption. The purpose of
this is to make an html page of figures that can be referred
to from other documents that aren't friendly to images.}
]
;; [---------------------------------------------------------------------------]
;; [ This program is a documentation aid. ]
;; [ It is for a situation where documentation must be written in text files ]
;; [ but we would like the ability to refer to graphic images. ]
;; [ This program requests the name of an image file and transforms that ]
;; [ file into base 64 encoding. Then it adds that base 64 image to an ]
;; [ html file as an embedded image. This process is repeated until the ]
;; [ final result is an html page of images with captions that is a companion ]
;; [ to a text document that refers to those images. ]
;; [---------------------------------------------------------------------------]
CURRENT-FILE: none
CURRENT-FILE-BINARY: none
HTML-HEADING: "Figures"
HTML-TITLE: "Figures"
HTML-BASE64-IMAGE: none
HTML-CAPTION: ""
HTML-SUFFIX: ""
HTML-STARTED: false
HTML-PAGE: ""
HTML-FILEID: none
HTML-TEMPLATE-HEAD: {
<%HTML-TITLE%>
<%HTML-HEADING%>
}
HTML-TEMPLATE-FOOT: {
}
HTML-TEMPLATE-FIGURE: {
<%HTML-CAPTION%>
}
QUIT-BUTTON: does [
quit
]
CHOOSE-FILE-BUTTON: does [
if not CURRENT-FILE: request-file/only [
alert "No file requested."
exit
]
HTML-SUFFIX: suffix? CURRENT-FILE
replace HTML-SUFFIX "." ""
system/options/binary-base: 64
CURRENT-FILE-BINARY: read/binary CURRENT-FILE
save clipboard:// CURRENT-FILE-BINARY
HTML-BASE64-IMAGE: read clipboard://
replace HTML-BASE64-IMAGE "64#{" ""
replace HTML-BASE64-IMAGE "}" ""
MAIN-IMAGE/image: load CURRENT-FILE
show MAIN-IMAGE
]
EMBED-BUTTON: does [
if not CURRENT-FILE [
alert "No image loaded."
exit
]
HTML-CAPTION: get-face MAIN-CAPTION
if equal? "" HTML-CAPTION [
alert "No caption specified"
exit
]
if not HTML-STARTED [
HTML-HEADING: get-face MAIN-HEADING
append HTML-PAGE build-markup HTML-TEMPLATE-HEAD
HTML-STARTED: true
]
append HTML-PAGE build-markup HTML-TEMPLATE-FIGURE
alert "OK"
]
SAVE-HTML-BUTTON: does [
if not HTML-FILEID: request-file/only/save [
alert "No save file requested"
exit
]
append HTML-PAGE build-markup HTML-TEMPLATE-FOOT
write HTML-FILEID HTML-PAGE
alert "Saved"
]
CLEAR-HTML-BUTTON: does [
HTML-PAGE: copy ""
HTML-STARTED: false
MAIN-IMAGE/image: none
show MAIN-IMAGE
]
MAIN-WINDOW: layout [
across
label "Page title"
MAIN-HEADING: field 500 HTML-HEADING
return
MAIN-IMAGE: image 800x600 'aspect
return
label "Image caption: "
MAIN-CAPTION: field 500
return
button "Quit" [QUIT-BUTTON]
button "Choose file" [CHOOSE-FILE-BUTTON]
button "Embed" [EMBED-BUTTON]
button "Save html" [SAVE-HTML-BUTTON]
button "Clear html" [CLEAR-HTML-BUTTON]
]
view center-face MAIN-WINDOW