Welcome to TiddlyWiki created by Jeremy Ruston, Copyright © 2007 UnaMesa Association
<<showtoc>>
The label //green// is used on a plethora of products and services. A closer look at the appropriateness of its use here is warranted. ~Merriam-Webster includes a [[definition of green|http://www.merriam-webster.com/dictionary/Green]] when used in an environmental context:
>“10…b: concerned with or supporting environmentalism c: tending to preserve environmental quality (as by being recyclable, biodegradable, or nonpolluting)”
and defines “[[environmentalism|http://www.merriam-webster.com/dictionary/environmentalism]]” as:
>“ 2: advocacy of the preservation, restoration, or improvement of the natural environment; //especially//: the movement to control pollution”
Wikipedia uses //green// in its appropriate meaning, as a synonym for “[[environmentally friendly|http://en.wikipedia.org/wiki/Environmentally_friendly]].” Environmentally friendly “goods and services [are] considered to inflict minimal or no harm on the environment”. Wikipedia notes that there is no international standard that defines //green//, leading to ambiguous labeling and confusion for consumers.
Eliminating the use of thinners from oil painting procedures, eliminates the emission of ~VOCs ([[Volatile Organic Compounds|http://en.wikipedia.org/wiki/Volatile_organic_compound]]) as a result of using such procedures. ~VOCs are a component of smog, which is a major cause of respiratory problems. For a discussion of the environmental effects of ~VOCs, try starting with Wikipedia's discussion of [[smog|http://en.wikipedia.org/wiki/Smog]], and investigating the EPA's extensive information on [[ozone|http://epa.gov/reg5oair/naaqs/ozone.html#voc]] and [[VOCs|http://publicaccess.custhelp.com/cgi-bin/publicaccess.cfg/php/enduser/std_adp.php?p_faqid=2121]]. Eliminating the use of thinners, also eliminates the accumulation of dirty thinners as waste by-products. Adapting to thinner-free painting procedures clearly makes the process of creating an oil painting, greener.
These procedures do not address the environmental impact of using of metal-based pigments. Oil painters wash metals into the environment during cleaning, and deposit metals into the environment as waste in paper towels and discarded paintings. Elimination of metal-based pigments is a severe step for artistic reasons (see [[Definitions: Inorganic pigments|Definitions##Inorganic pigments]]). A wide variety of colors are metal-based, many more than the lead, cadmium and mercury based pigments which perhaps have the worst reputation for their negative impact on the environment.
<<tiddler HideTiddlerTags>>
/***
|''Name:''|AccordionMenuPlugin|
|''Description:''|Turn an unordered list into an accordion style menu|
|''Author:''|Saq Imtiaz ( lewcid@gmail.com )|
|''Source:''|http://tw.lewcid.org/#AccordionMenuPlugin|
|''Code Repository:''|http://tw.lewcid.org/svn/plugins|
|''Version:''|2.0|
|''Date:''|03/11/2007|
|''License:''|[[Creative Commons Attribution-ShareAlike 3.0 License|http://creativecommons.org/licenses/by-sa/3.0/]]|
|''~CoreVersion:''|2.2.5|
!!Usage:
* put {{{<<accordion>>}}} on the line after your unordered list
!!Customizing:
* customize the css via the shadow tiddler StyleSheetAccordionMenuPlugin
* or give the list a custom class by passing the classes as parameters to the macro.
** Eg: {{{<<accordion ClassName1 ClassName2>>}}}
!!Examples:
*[[AccordionMenuPluginDemo]]
***/
// /%
//!BEGIN-PLUGIN-CODE
config.macros.accordion={
dropchar : " \u00BB",
handler : function(place,macroName,params,wikifier,paramString,tiddler){
list = findRelated(place.lastChild,"UL","tagName","previousSibling");
if (!list)
return;
addClass(list,"accordion");
if (params.length){
addClass(list,paramString);
}
this.fixLinks(list.childNodes);
},
fixLinks : function(els){
for (var i=0; i<els.length; i++){
if(els[i].tagName.toLowerCase()=="li"){
var link = findRelated(els[i].firstChild,"A","tagName","nextSibling");
if(!link){
var ih = els[i].firstChild.data;
els[i].removeChild(els[i].firstChild);
link = createTiddlyElement(null,"a",null,null,ih+this.dropchar,{href:"javascript:;"});
els[i].insertBefore(link,els[i].firstChild);
}
else{
link.firstChild.data = link.firstChild.data + this.dropchar;
removeClass(link,"tiddlyLinkNonExisting");
}
link.onclick = this.show;
}
}
},
show : function(e){
var list = this.parentNode.parentNode;
var els = list.childNodes;
for (var i=0; i<els.length; i++){
removeClass(els[i],"accordion-active");
}
addClass(this.parentNode,"accordion-active");
}
};
config.shadowTiddlers["StyleSheetAccordionMenuPlugin"] = "/*{{{*/\n"+
"ul.accordion, ul.accordion li, ul.accordion li ul {margin:0; padding:0; list-style-type:none;text-align:left;}\n"+
"ul.accordion li ul {display:none;}\n"+
"ul.accordion li.accordion-active ul {display:block;}\n"+
"\n"+
"ul.accordion li.accordion-active a {cursor:default;}\n"+
"ul.accordion li.accordion-active ul li a{cursor:pointer;}\n"+
"\n"+
"ul.accordion a {display:block; padding:0.5em;}\n"+
"ul.accordion li a.tiddlyLink, ul.accordion li a.tiddlyLinkNonExisting, ul.accordion li a {font-weight:bold;}\n"+
"ul.accordion li a {background:#0066aa; color:#FFF; border-bottom:1px solid #fff;}\n"+
"ul.accordion li.accordion-active a, ul.accordion li a:hover {background:#00558F;color:#FFF;}\n"+
"\n"+
"ul.accordion li ul li{display:inline-block;overflow:hidden;}\n"+
"ul.accordion li.accordion-active ul li {background:#eff3fa; color:#000; padding:0em;}\n"+
"ul.accordion li.accordion-active ul li div {padding:1em 1.5em; background:#eff3fa;}\n"+
"ul.accordion li.accordion-active ul a{background:#eff3fa; color:#000; padding:0.5em 0.5em 0.5em 1.0em;border:none;}\n"+
"ul.accordion li.accordion-active ul a:hover {background:#e0e8f5; color:#000;}\n" +
"/*}}}*/";
store.addNotification("StyleSheetAccordionMenuPlugin",refreshStyles);
//!END-PLUGIN-CODE
// %/
This tutorial would not have come about without [[Eric Angeloch|http://ericangeloch.com/]]. Eric is a wonderful artist, a teacher and the on-site manager of the [[Woodstock School of Art|http://woodstockschoolofart.org/]] in Woodstock, NY, an art school dedicated to providing art instruction by professional artists. Due to Eric’s dangerous and extreme allergic reactions to solvents, a result of years of overexposure to toxic art materials, the school has taken the amazing step of banning all oil painting solvents, thinners or mediums containing turpentine or petroleum distillates (mineral spirits). This rule has become the starting point for research and for learning new perspectives that are interesting, fundamental to the construction of a sound paint film, and ultimately extremely practical.
Since taking Studio Products' [[Technical Course|http://artbootcamp.com/index.php/courses/]] in March of 2008, I have devoted myself to changing my oil painting habits to incorporate a new level of understanding of the materials involved. Many thanks to my teachers [[Hong Nian Zhang|http://www.zhangwoolley.com/]] and [[Lois Woolley|http://www.zhangwoolley.com/]] at the Woodstock School, for being willing to change along with me, for adopting the method of “oiling out” (see [[Oiling Out]]) as our standard, and for requiring students to use [[Basic Oil Medium|Oiling Out##How to make Basic Oil Medium (BOM)]] in our classes. I have been the “cook”, making and bottling the medium in sufficient quantity to supply the class, as well as giving individual demonstrations to new students, and answering their materials questions. It is through my teachers’ willingness to have me serve in this fashion, that the substance of this tutorial was developed.
The internet offers an amazing level of sophistication possible in long-distance teaching and we have tried to take advantage of its capabilities.
<<tiddler HideTiddlerTags>>
(''//Internet Explorer//'' users: the Table of Contents will not function as links. Please read [[Author's Note]].)
<<showtoc>>
!Introduction
Alkyd-based paints and mediums are made from an alkyd base. The word “alkyd” derives from the original name “al-cide”, so-named for the combination of a monostatic alcohol and a polybasic oil, containing acids. The alkyd base which is purchased by art supply companies to make alkyd-based paints and mediums, is manufactured by several major chemical companies. The chemical process for creating this base involves modifying non-drying vegetable oils (see [[Drying Oils]]) with petrochemicals. Some examples of alkyd-based mediums include [[Liquin|http://www.winsornewton.com/products/oils-solvents-mediums-varnishes/oil-colour--oils-solvents-mediums-varnishes/mediums/liquin-original/]] made by Winsor & Newton, [[Galkyd painting medium|http://www.gamblincolors.com/mediums/index.html]] made by Gamblin, and [[Grumbacher Alkyd Painting Medium|http://www.grumbacherart.com/products/mediums/oil/index.html]].
The vegetable oils used to make the alkyd base are the cheapest available, such as tobacco or soya oil. The chemical process applied does not transform these non-drying vegetable oils into drying oils. It changes them into oils that look to the naked eye, somewhat as though they behave like drying oils. At the molecular level, the chemical reaction that occurs during drying of alkyd-based paints and mediums is quite different.
It is important not to build a paint film composed of more than one layer of mixed alkyd- and drying oil-based paints and mediums. The adhesive nature of drying oils during the polymerization process is not sufficiently strong to glue one layer to the next lower, when drying-oil chemistry is mixed with alkyd chemistry in the layer being applied. Delamination problems such as flaking and peeling may occur over time. Alkyds also yellow significantly.
Alkyd-based paints were originally introduced for use in the house-painting industry as replacements for lead-based paints. Within a few years, alkyd-based paints were banned from the industry due to their emissions of ~VOCs ([[Volatile Organic Compounds|http://en.wikipedia.org/wiki/Volatile_organic_compound]]). Innovations for the house-painting industry frequently are adapted to the (much smaller) industry of art painting. The regulation that prohibits alkyd-based paints from being used to make house paint, does not apply to art paint.
!How to use alkyds to create a sound painting
There are several ways to use alkyds in order to create sound paintings.
''//Method One//'': Use all alkyd-based paints with all alkyd-based mediums. The chemistry of using alkyd paints with alkyd mediums supports painting in layers, and paintings so created, whether one layer or many, will be sound.
''//Method Two//'': Combine alkyd-based paints and/or mediums, with drying oil-based paints and/or mediums, in a single “premier coup” layer. Do not paint a second layer.
An example of the creation of such a mixed layer would be made by using all linseed oil-based paints, and the painting medium [[Liquin|http://www.winsornewton.com/products/oils-solvents-mediums-varnishes/oil-colour--oils-solvents-mediums-varnishes/mediums/liquin-original/]].
Or, another example of this sort of mixed layer would be a mixture of alkyd-based paints, with linseed oil-based paints, applied by painting into a couch made of Basic Oil Medium (see [[Oiling Out]]).
''//Method Three//'': Start with one layer of possibly mixed alkyd- and drying oil-based paints and/or mediums. After this layer is allowed to dry, before adding another layer, enhance the natural adhesive strength of the next layer by scuffing or sanding down the surface of the previous. This process is one way of so-called “creating a mechanical bond”. The increased surface area (see below) created by scuffing or sanding, provides many more opportunities for the molecules to bond between layers. A good scuffing tool is a ~Scotch-Brite industrial pad, available in different grades of coarseness from Home Depot and other hardware stores (see [[Materials]]).
!Increasing surface area in order to create a mechanical bond
A “mechanical bond” is a bond between layers that is created through physical hands-on means rather than chemical adhesion. Increasing the surface area of the next lower layer in a paint film, creates many more opportunities for molecular bonding between layers, and thus makes possible stronger adhesion between these layers.
<html>
<div><table width="250" height="166" align="right">
<tr><td><a href="http://www.flickr.com/photos/76314685@N04/7001206555/lightbox/" target="_blank" title="IMG_4420 by RumaraPainting, on Flickr"><img src="http://farm8.staticflickr.com/7231/7001206555_dd92eec08c_o.jpg" width="350" height="233" align="center" alt="IMG_4420"></a></td></tr>
<tr><td>A straight road from A to B</td></tr></table></div>
<br>
<br>
Scuffing or sanding down a paint film will increase its surface area. To see this, first consider an analogy of a road crossing a flat field. Say the road travels straight, between points A and B.
<BR CLEAR=RIGHT>
<div><table width="250" height="166" align="right">
<tr><td><a href="http://www.flickr.com/photos/76314685@N04/7001206603/lightbox/" target="_blank" title="IMG_4421 by RumaraPainting, on Flickr"><img src="http://farm8.staticflickr.com/7196/7001206603_8da3c0b417_o.jpg" width="350" height="233" align="center" alt="IMG_4421"></a></td></tr>
<tr><td>A hilly road from A to B</td></tr></table></div>
<br>
<br>
Now imagine that the distance from A to B was punctuated by high mountains and low valleys. As the crow flies, the distance from A to B is still the same. But in a car on the road, the distance traveled from A to B would be much greater. Extending this situation to three dimensions, a patch of ground that is mountainous has a greater surface area than a flat patch of ground with the same boundaries.
<BR CLEAR=RIGHT>
<div><table width="250" height="166" align="right">
<tr><td><a href="http://www.flickr.com/photos/76314685@N04/7001206639/lightbox/" target="_blank" title="IMG_4422 by RumaraPainting, on Flickr"><img src="http://farm7.staticflickr.com/6113/7001206639_0ba5abff26_o.jpg" width="350" height="233" align="center" alt="IMG_4422"></a></td></tr>
<tr><td>An unscuffed paint film</td></tr></table></div>
<br>
<br>
Analogously, at the microscopic level, an unscuffed film surface would look locally flat.
<BR CLEAR=RIGHT>
<div><table width="250" height="166" align="right">
<tr><td><a href="http://www.flickr.com/photos/76314685@N04/6855089686/lightbox/" target="_blank" title="IMG_4423 by RumaraPainting, on Flickr"><img src="http://farm8.staticflickr.com/7224/6855089686_0c9fae249c_o.jpg" width="350" height="233" align="center" alt="IMG_4423"></a></td></tr>
<tr><td>The scuffed film, with far greater surface area</td></tr></table></div>
<br>
<br>
Scuffing this with a Scotch-Brite would transform its surface at the microscopic level to have a cross section that looks more like hills and valleys.
<BR CLEAR=RIGHT>
</html>
This new surface has a far greater surface area, and many more opportunities for bonding to an added layer. Painting a layer onto a scuffed surface creates much stronger adhesion between layers. Such scuffing will counterbalance the weaker bonding that occurs between two layers when oils have been mixed with alkyds, in one or both layers.
<<tiddler HideTiddlerTags>>
/***
|''Name:''|AnnotationsPlugin|
|''Description:''|Inline annotations for tiddler text.|
|''Author:''|Saq Imtiaz ( lewcid@gmail.com )|
|''Source:''|http://tw.lewcid.org/#AnnotationsPlugin|
|''Code Repository:''|http://tw.lewcid.org/svn/plugins|
|''Version:''|2.0|
|''Date:''||
|''License:''|[[Creative Commons Attribution-ShareAlike 3.0 License|http://creativecommons.org/licenses/by-sa/3.0/]]|
|''~CoreVersion:''|2.2.3|
!!Usage:
*{{{((text to annotate(annotation goes here)}}}
* To include the text being annotated, in the popup as a title, put {{{^}}} as the first letter of the annotation text.
** {{{((text to annotate(^annotation goes here)}}}
!!Examples:
Mouse over, the text below:
* ((banana(the best fruit in the world)))
* ((banana(^ the best fruit in the world)))
***/
// /%
config.formatters.unshift({name:"annotations",match:"\\(\\(",lookaheadRegExp:/\(\((.*?)\((\^?)((?:.|\n)*?)\)\)\)/g,handler:function(w){
this.lookaheadRegExp.lastIndex=w.matchStart;
var _2=this.lookaheadRegExp.exec(w.source);
if(_2&&_2.index==w.matchStart){
var _3=createTiddlyElement(w.output,"span",null,"annosub",_2[1]);
_3.anno=_2[3];
if(_2[2]){
_3.subject=_2[1];
}
_3.onmouseover=this.onmouseover;
_3.onmouseout=this.onmouseout;
_3.ondblclick=this.onmouseout;
w.nextMatch=_2.index+_2[0].length;
}
},onmouseover:function(e){
popup=createTiddlyElement(document.body,"div",null,"anno");
this.popup=popup;
if(this.subject){
wikify("!"+this.subject+"\n",popup);
}
wikify(this.anno,popup);
addClass(this,"annosubover");
Popup.place(this,popup,{x:25,y:7});
},onmouseout:function(e){
removeNode(this.popup);
this.popup=null;
removeClass(this,"annosubover");
}});
setStylesheet(".anno{position:absolute;border:2px solid #000;background-color:#DFDFFF; color:#000;padding:0.5em;max-width:15em;width:expression(document.body.clientWidth > (255/12) *parseInt(document.body.currentStyle.fontSize)?'15em':'auto' );}\n"+".anno h1, .anno h2{margin-top:0;color:#000;}\n"+".annosub{background:#ccc;}\n"+".annosubover{z-index:25; background-color:#DFDFFF;cursor:help;}\n","AnnotationStyles");
// %/
text/plain
.txt .text .js .vbs .asp .cgi .pl
----
text/html
.htm .html .hta .htx .mht
----
text/comma-separated-values
.csv
----
text/javascript
.js
----
text/css
.css
----
text/xml
.xml .xsl .xslt
----
image/gif
.gif
----
image/jpeg
.jpg .jpe .jpeg
----
image/png
.png
----
image/bmp
.bmp
----
image/tiff
.tif .tiff
----
audio/basic
.au .snd
----
audio/wav
.wav
----
audio/x-pn-realaudio
.ra .rm .ram
----
audio/x-midi
.mid .midi
----
audio/mp3
.mp3
----
audio/m3u
.m3u
----
video/x-ms-asf
.asf
----
video/avi
.avi
----
video/mpeg
.mpg .mpeg
----
video/quicktime
.qt .mov .qtvr
----
application/pdf
.pdf
----
application/rtf
.rtf
----
application/postscript
.ai .eps .ps
----
application/wordperfect
.wpd
----
application/mswrite
.wri
----
application/msexcel
.xls .xls3 .xls4 .xls5 .xlw
----
application/msword
.doc
----
application/mspowerpoint
.ppt .pps
----
application/x-director
.swa
----
application/x-shockwave-flash
.swf
----
application/x-zip-compressed
.zip
----
application/x-gzip
.gz
----
application/x-rar-compressed
.rar
----
application/octet-stream
.com .exe .dll .ocx
----
application/java-archive
.jar
/***
|Name|AttachFilePlugin|
|Source|http://www.TiddlyTools.com/#AttachFilePlugin|
|Documentation|http://www.TiddlyTools.com/#AttachFilePluginInfo|
|Version|4.0.0|
|Author|Eric Shulman|
|License|http://www.TiddlyTools.com/#LegalStatements|
|~CoreVersion|2.1|
|Type|plugin|
|Requires|AttachFilePluginFormatters, AttachFileMIMETypes|
|Description|Store binary files as base64-encoded tiddlers with fallback links for separate local and/or remote file storage|
Store or link binary files (such as jpg, gif, pdf or even mp3) within your TiddlyWiki document and then use them as images or links from within your tiddler content.
> Important note: As of version 3.6.0, in order to //render// images and other binary attachments created with this plugin, you must also install [[AttachFilePluginFormatters]], which extends the behavior of the TiddlyWiki core formatters for embedded images ({{{[img[tooltip|image]]}}}), linked embedded images ({{{[img[tooltip|image][link]]}}}), and external/"pretty" links ({{{[[label|link]]}}}), so that these formatter will process references to attachment tiddlers as if a normal file reference had been provided. |
!!!!!Documentation
>see [[AttachFilePluginInfo]]
!!!!!Inline interface (live)
>see [[AttachFile]] (shadow tiddler)
><<tiddler AttachFile>>
!!!!!Revisions
<<<
2009.06.04 [4.0.0] changed attachment storage format to use //sections// instead of embedded substring markers.
|please see [[AttachFilePluginInfo]] for additional revision details|
2005.07.20 [1.0.0] Initial Release
<<<
!!!!!Code
***/
// // version
//{{{
version.extensions.AttachFilePlugin= {major: 4, minor: 0, revision: 0, date: new Date(2009,6,4)};
// shadow tiddler
config.shadowTiddlers.AttachFile="<<attach inline>>";
// add 'attach' backstage task (insert before built-in 'importTask')
if (config.tasks) { // for TW2.2b or above
config.tasks.attachTask = {
text: "attach",
tooltip: "Attach a binary file as a tiddler",
content: "<<attach inline>>"
}
config.backstageTasks.splice(config.backstageTasks.indexOf("importTask"),0,"attachTask");
}
config.macros.attach = {
// // lingo
//{{{
label: "attach file",
tooltip: "Attach a file to this document",
linkTooltip: "Attachment: ",
typeList: "AttachFileMIMETypes",
titlePrompt: " enter tiddler title...",
MIMEPrompt: "<option value=''>select MIME type...</option><option value='editlist'>[edit list...]</option>",
localPrompt: " enter local path/filename...",
URLPrompt: " enter remote URL...",
tiddlerErr: "Please enter a tiddler title",
sourceErr: "Please enter a source path/filename",
storageErr: "Please select a storage method: embedded, local or remote",
MIMEErr: "Unrecognized file format. Please select a MIME type",
localErr: "Please enter a local path/filename",
URLErr: "Please enter a remote URL",
fileErr: "Invalid path/file or file not found",
tiddlerFormat: '!usage\n{{{%0}}}\n%0\n!notes\n%1\n!type\n%2\n!file\n%3\n!url\n%4\n!data\n%5\n',
//}}}
// // macro definition
//{{{
handler:
function(place,macroName,params) {
if (params && !params[0])
{ createTiddlyButton(place,this.label,this.tooltip,this.toggleAttachPanel); return; }
var id=params.shift();
this.createAttachPanel(place,id+"_attachPanel",params);
document.getElementById(id+"_attachPanel").style.position="static";
document.getElementById(id+"_attachPanel").style.display="block";
},
//}}}
//{{{
createAttachPanel:
function(place,panel_id,params) {
if (!panel_id || !panel_id.length) var panel_id="_attachPanel";
// remove existing panel (if any)
var panel=document.getElementById(panel_id); if (panel) panel.parentNode.removeChild(panel);
// set styles for this panel
setStylesheet(this.css,"attachPanel");
// create new panel
var title=""; if (params && params[0]) title=params.shift();
var types=this.MIMEPrompt+this.formatListOptions(store.getTiddlerText(this.typeList)); // get MIME types
panel=createTiddlyElement(place,"span",panel_id,"attachPanel",null);
var html=this.html.replace(/%id%/g,panel_id);
html=html.replace(/%title%/g,title);
html=html.replace(/%disabled%/g,title.length?"disabled":"");
html=html.replace(/%IEdisabled%/g,config.browser.isIE?"disabled":"");
html=html.replace(/%types%/g,types);
panel.innerHTML=html;
if (config.browser.isGecko) { // FF3 FIXUP
document.getElementById("attachSource").style.display="none";
document.getElementById("attachFixPanel").style.display="block";
}
return panel;
},
//}}}
//{{{
toggleAttachPanel:
function (e) {
if (!e) var e = window.event;
var parent=resolveTarget(e).parentNode;
var panel = document.getElementById("_attachPanel");
if (panel==undefined || panel.parentNode!=parent)
panel=config.macros.attach.createAttachPanel(parent,"_attachPanel");
var isOpen = panel.style.display=="block";
if(config.options.chkAnimate)
anim.startAnimating(new Slider(panel,!isOpen,e.shiftKey || e.altKey,"none"));
else
panel.style.display = isOpen ? "none" : "block" ;
e.cancelBubble = true;
if (e.stopPropagation) e.stopPropagation();
return(false);
},
//}}}
//{{{
formatListOptions:
function(text) {
if (!text || !text.trim().length) return "";
// get MIME list content from text
var parts=text.split("\n----\n");
var out="";
for (var p=0; p<parts.length; p++) {
var lines=parts[p].split("\n");
var label=lines.shift(); // 1st line=display text
var value=lines.shift(); // 2nd line=item value
out +='<option value="%1">%0</option>'.format([label,value]);
}
return out;
},
//}}}
// // interface definition
//{{{
css:
".attachPanel { display: none; position:absolute; z-index:10; width:35em; right:105%; top:0em;\
background-color: #eee; color:#000; font-size: 8pt; line-height:110%;\
border:1px solid black; border-bottom-width: 3px; border-right-width: 3px;\
padding: 0.5em; margin:0em; -moz-border-radius:1em;-webkit-border-radius:1em; text-align:left }\
.attachPanel form { display:inline;border:0;padding:0;margin:0; }\
.attachPanel select { width:99%;margin:0px;font-size:8pt;line-height:110%;}\
.attachPanel input { width:98%;padding:0px;margin:0px;font-size:8pt;line-height:110%}\
.attachPanel textarea { width:98%;margin:0px;height:2em;font-size:8pt;line-height:110%}\
.attachPanel table { width:100%;border:0;margin:0;padding:0;color:inherit; }\
.attachPanel tbody, .attachPanel tr, .attachPanel td { border:0;margin:0;padding:0;color:#000; }\
.attachPanel .box { border:1px solid black; padding:.3em; margin:.3em 0px; background:#f8f8f8; \
-moz-border-radius:5px;-webkit-border-radius:5px; }\
.attachPanel .chk { width:auto;border:0; }\
.attachPanel .btn { width:auto; }\
.attachPanel .btn2 { width:49%; }\
",
//}}}
//{{{
html:
'<form>\
attach from source file\
<input type="file" id="attachSource" name="source" size="56"\
onChange="config.macros.attach.onChangeSource(this)">\
<div id="attachFixPanel" style="display:none"><!-- FF3 FIXUP -->\
<input type="text" id="attachFixSource" style="width:90%"\
title="Enter a path/file to attach"\
onChange="config.macros.attach.onChangeSource(this);">\
<input type="button" style="width:7%" value="..."\
title="Enter a path/file to attach"\
onClick="config.macros.attach.askForFilename(document.getElementById(\'attachFixSource\'));">\
</div><!--end FF3 FIXUP-->\
<div class="box">\
<table style="border:0"><tr style="border:0"><td style="border:0;text-align:right;width:1%;white-space:nowrap">\
embed data <input type=checkbox class=chk name="useData" %IEdisabled% \
onclick="if (!this.form.MIMEType.value.length)\
this.form.MIMEType.selectedIndex=this.checked?1:0; "> \
</td><td style="border:0">\
<select size=1 name="MIMEType" \
onchange="this.title=this.value; if (this.value==\'editlist\')\
{ this.selectedIndex=this.form.useData.checked?1:0; story.displayTiddler(null,config.macros.attach.typeList,2); return; }">\
<option value=""></option>\
%types%\
</select>\
</td></tr><tr style="border:0"><td style="border:0;text-align:right;width:1%;white-space:nowrap">\
local link <input type=checkbox class=chk name="useLocal"\
onclick="this.form.local.value=this.form.local.defaultValue=this.checked?config.macros.attach.localPrompt:\'\';"> \
</td><td style="border:0">\
<input type=text name="local" size=15 autocomplete=off value=""\
onchange="this.form.useLocal.checked=this.value.length" \
onkeyup="this.form.useLocal.checked=this.value.length" \
onfocus="if (!this.value.length) this.value=config.macros.attach.localPrompt; this.select()">\
</td></tr><tr style="border:0"><td style="border:0;text-align:right;width:1%;white-space:nowrap">\
remote link <input type=checkbox class=chk name="useURL"\
onclick="this.form.URL.value=this.form.URL.defaultValue=this.checked?config.macros.attach.URLPrompt:\'\';\"> \
</td><td style="border:0">\
<input type=text name="URL" size=15 autocomplete=off value=""\
onfocus="if (!this.value.length) this.value=config.macros.attach.URLPrompt; this.select()"\
onchange="this.form.useURL.checked=this.value.length;"\
onkeyup="this.form.useURL.checked=this.value.length;">\
</td></tr></table>\
</div>\
<table style="border:0"><tr style="border:0"><td style="border:0;text-align:right;vertical-align:top;width:1%;white-space:nowrap">\
notes \
</td><td style="border:0" colspan=2>\
<textarea name="notes" style="width:98%;height:3.5em;margin-bottom:2px"></textarea>\
</td><tr style="border:0"><td style="border:0;text-align:right;width:1%;white-space:nowrap">\
attach as \
</td><td style="border:0" colspan=2>\
<input type=text name="tiddlertitle" size=15 autocomplete=off value="%title%"\
onkeyup="if (!this.value.length) { this.value=config.macros.attach.titlePrompt; this.select(); }"\
onfocus="if (!this.value.length) this.value=config.macros.attach.titlePrompt; this.select()" %disabled%>\
</td></tr></tr><tr style="border:0"><td style="border:0;text-align:right;width:1%;white-space:nowrap">\
add tags \
</td><td style="border:0">\
<input type=text name="tags" size=15 autocomplete=off value="" onfocus="this.select()">\
</td><td style="width:40%;text-align:right;border:0">\
<input type=button class=btn2 value="attach"\
onclick="config.macros.attach.onClickAttach(this)"><!--\
--><input type=button class=btn2 value="close"\
onclick="var panel=document.getElementById(\'%id%\'); if (panel) panel.parentNode.removeChild(panel);">\
</td></tr></table>\
</form>',
//}}}
// // control processing
//{{{
onChangeSource:
function(here) {
var form=here.form;
var list=form.MIMEType;
var theFilename = here.value;
var theExtension = theFilename.substr(theFilename.lastIndexOf('.')).toLowerCase();
// if theFilename is in current document folder, remove path prefix and use relative reference
var h=document.location.href; folder=getLocalPath(decodeURIComponent(h.substr(0,h.lastIndexOf("/")+1)));
if (theFilename.substr(0,folder.length)==folder) theFilename='./'+theFilename.substr(folder.length);
else theFilename='file:///'+theFilename; // otherwise, use absolute reference
theFilename=theFilename.replace(/\\/g,"/"); // fixup: change \ to /
form.useLocal.checked = true;
form.local.value = theFilename;
form.useData.checked = !form.useData.disabled;
list.selectedIndex=1;
for (var i=0; i<list.options.length; i++) // find matching MIME type
if (list.options[i].value.indexOf(theExtension)!=-1) { list.selectedIndex = i; break; }
if (!form.tiddlertitle.disabled)
form.tiddlertitle.value=theFilename.substr(theFilename.lastIndexOf('/')+1); // get tiddlername from filename
},
//}}}
//{{{
onClickAttach:
function (here) {
clearMessage();
// get input values
var form=here.form;
var src=form.source; if (config.browser.isGecko) src=document.getElementById("attachFixSource");
src=src.value!=src.defaultValue?src.value:"";
var when=(new Date()).formatString(config.macros.timeline.dateFormat);
var title=form.tiddlertitle.value;
var local = form.local.value!=form.local.defaultValue?form.local.value:"";
var url = form.URL.value!=form.URL.defaultValue?form.URL.value:"";
var notes = form.notes.value;
var tags = "attachment excludeMissing "+form.tags.value;
var useData=form.useData.checked;
var useLocal=form.useLocal.checked;
var useURL=form.useURL.checked;
var mimetype = form.MIMEType.value.length?form.MIMEType.options[form.MIMEType.selectedIndex].text:"";
// validate checkboxes and get filename
if (useData) {
if (src.length) { if (!theLocation) var theLocation=src; }
else { alert(this.sourceErr); src.focus(); return false; }
}
if (useLocal) {
if (local.length) { if (!theLocation) var theLocation = local; }
else { alert(this.localErr); form.local.focus(); return false; }
}
if (useURL) {
if (url.length) { if (!theLocation) var theLocation = url; }
else { alert(this.URLErr); form.URL.focus(); return false; }
}
if (!(useData||useLocal||useURL))
{ form.useData.focus(); alert(this.storageErr); return false; }
if (!theLocation)
{ src.focus(); alert(this.sourceErr); return false; }
if (!title || !title.trim().length || title==this.titlePrompt)
{ form.tiddlertitle.focus(); alert(this.tiddlerErr); return false; }
// if not already selected, determine MIME type based on filename extension (if any)
if (useData && !mimetype.length && theLocation.lastIndexOf('.')!=-1) {
var theExt = theLocation.substr(theLocation.lastIndexOf('.')).toLowerCase();
var theList=form.MIMEType;
for (var i=0; i<theList.options.length; i++)
if (theList.options[i].value.indexOf(theExt)!=-1)
{ var mimetype=theList.options[i].text; theList.selectedIndex=i; break; }
}
// attach the file
return this.createAttachmentTiddler(src, when, notes, tags, title,
useData, useLocal, useURL, local, url, mimetype);
},
getMIMEType:
function(src,def) {
var ext = src.substr(src.lastIndexOf('.')).toLowerCase();
var list=store.getTiddlerText(this.typeList);
if (!list || !list.trim().length) return def;
// get MIME list content from tiddler
var parts=list.split("\n----\n");
for (var p=0; p<parts.length; p++) {
var lines=parts[p].split("\n");
var mime=lines.shift(); // 1st line=MIME type
var match=lines.shift(); // 2nd line=matching extensions
if (match.indexOf(ext)!=-1) return mime;
}
return def;
},
createAttachmentTiddler:
function (src, when, notes, tags, title, useData, useLocal, useURL, local, url, mimetype, noshow) {
if (useData) { // encode the data
if (!mimetype.length) {
alert(this.MIMEErr);
form.MIMEType.selectedIndex=1; form.MIMEType.focus();
return false;
}
var d = this.readFile(src); if (!d) { return false; }
displayMessage('encoding '+src);
var encoded = this.encodeBase64(d);
displayMessage('file size='+d.length+' bytes, encoded size='+encoded.length+' bytes');
}
var usage=(mimetype.substr(0,5)=="image"?'[img[%0]]':'[[%0|%0]]').format([title]);
var theText=this.tiddlerFormat.format([
usage, notes.length?notes:'//none//', mimetype,
useLocal?local.replace(/\\/g,'/'):'', useURL?url:'',
useData?('data:'+mimetype+';base64,'+encoded):'' ]);
store.saveTiddler(title,title,theText,config.options.txtUserName,new Date(),tags);
var panel=document.getElementById("attachPanel"); if (panel) panel.style.display="none";
if (!noshow) { story.displayTiddler(null,title); story.refreshTiddler(title,null,true); }
displayMessage('attached "'+title+'"');
return true;
},
//}}}
// // base64 conversion
//{{{
encodeBase64:
function (d) {
if (!d) return null;
// encode as base64
var keyStr = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=";
var out="";
var chr1,chr2,chr3="";
var enc1,enc2,enc3,enc4="";
for (var count=0,i=0; i<d.length; ) {
chr1=d.charCodeAt(i++);
chr2=d.charCodeAt(i++);
chr3=d.charCodeAt(i++);
enc1=chr1 >> 2;
enc2=((chr1 & 3) << 4) | (chr2 >> 4);
enc3=((chr2 & 15) << 2) | (chr3 >> 6);
enc4=chr3 & 63;
if (isNaN(chr2)) enc3=enc4=64;
else if (isNaN(chr3)) enc4=64;
out+=keyStr.charAt(enc1)+keyStr.charAt(enc2)+keyStr.charAt(enc3)+keyStr.charAt(enc4);
chr1=chr2=chr3=enc1=enc2=enc3=enc4="";
}
return out;
},
decodeBase64: function(input) {
var out="";
var chr1,chr2,chr3;
var enc1,enc2,enc3,enc4;
var i = 0;
// remove all characters that are not A-Z, a-z, 0-9, +, /, or =
input=input.replace(/[^A-Za-z0-9\+\/\=]/g, "");
do {
enc1=keyStr.indexOf(input.charAt(i++));
enc2=keyStr.indexOf(input.charAt(i++));
enc3=keyStr.indexOf(input.charAt(i++));
enc4=keyStr.indexOf(input.charAt(i++));
chr1=(enc1 << 2) | (enc2 >> 4);
chr2=((enc2 & 15) << 4) | (enc3 >> 2);
chr3=((enc3 & 3) << 6) | enc4;
out=out+String.fromCharCode(chr1);
if (enc3!=64) out=out+String.fromCharCode(chr2);
if (enc4!=64) out=out+String.fromCharCode(chr3);
} while (i<input.length);
return out;
},
//}}}
// // I/O functions
//{{{
readFile: // read local BINARY file data
function(filePath) {
if(!window.Components) { return null; }
try { netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect"); }
catch(e) { alert("access denied: "+filePath); return null; }
var file = Components.classes["@mozilla.org/file/local;1"].createInstance(Components.interfaces.nsILocalFile);
try { file.initWithPath(filePath); } catch(e) { alert("cannot read file - invalid path: "+filePath); return null; }
if (!file.exists()) { alert("cannot read file - not found: "+filePath); return null; }
var inputStream = Components.classes["@mozilla.org/network/file-input-stream;1"].createInstance(Components.interfaces.nsIFileInputStream);
inputStream.init(file, 0x01, 00004, null);
var bInputStream = Components.classes["@mozilla.org/binaryinputstream;1"].createInstance(Components.interfaces.nsIBinaryInputStream);
bInputStream.setInputStream(inputStream);
return(bInputStream.readBytes(inputStream.available()));
},
//}}}
//{{{
writeFile:
function(filepath,data) {
// TBD: decode base64 and write BINARY data to specified local path/filename
return(false);
},
//}}}
//{{{
askForFilename: // for FF3 fixup
function(target) {
var msg=config.messages.selectFile;
if (target && target.title) msg=target.title; // use target field tooltip (if any) as dialog prompt text
// get local path for current document
var path=getLocalPath(document.location.href);
var p=path.lastIndexOf("/"); if (p==-1) p=path.lastIndexOf("\\"); // Unix or Windows
if (p!=-1) path=path.substr(0,p+1); // remove filename, leave trailing slash
var file=""
var result=window.mozAskForFilename(msg,path,file,true); // FF3 FIXUP ONLY
if (target && result.length) // set target field and trigger handling
{ target.value=result; target.onchange(); }
return result;
}
};
//}}}
//{{{
if (window.mozAskForFilename===undefined) { // also defined by CoreTweaks (for ticket #604)
window.mozAskForFilename=function(msg,path,file,mustExist) {
if(!window.Components) return false;
try {
netscape.security.PrivilegeManager.enablePrivilege('UniversalXPConnect');
var nsIFilePicker = window.Components.interfaces.nsIFilePicker;
var picker = Components.classes['@mozilla.org/filepicker;1'].createInstance(nsIFilePicker);
picker.init(window, msg, mustExist?nsIFilePicker.modeOpen:nsIFilePicker.modeSave);
var thispath = Components.classes['@mozilla.org/file/local;1'].createInstance(Components.interfaces.nsILocalFile);
thispath.initWithPath(path);
picker.displayDirectory=thispath;
picker.defaultExtension='';
picker.defaultString=file;
picker.appendFilters(nsIFilePicker.filterAll|nsIFilePicker.filterText|nsIFilePicker.filterHTML);
if (picker.show()!=nsIFilePicker.returnCancel)
var result=picker.file.persistentDescriptor;
}
catch(ex) { displayMessage(ex.toString()); }
return result;
}
}
//}}}
/***
|Name|AttachFilePluginFormatters|
|Source|http://www.TiddlyTools.com/#AttachFilePluginFormatters|
|Version|4.0.1|
|Author|Eric Shulman|
|License|http://www.TiddlyTools.com/#LegalStatements|
|~CoreVersion|2.1.3|
|Type|plugin|
|Description|run-time library for displaying attachment tiddlers|
Runtime processing for //rendering// attachment tiddlers created by [[AttachFilePlugin]]. Attachment tiddlers are tagged with<<tag attachment>>and contain binary file content (e.g., jpg, gif, pdf, mp3, etc.) that has been stored directly as base64 text-encoded data or can be loaded from external files stored on a local filesystem or remote web server. Note: after creating new attachment tiddlers, you can remove [[AttachFilePlugin]], as long as you retain //this// tiddler (so that images can be rendered later on).
!!!!!Formatters
<<<
This plugin extends the behavior of the following TiddlyWiki core "wikify()" formatters:
* embedded images: {{{[img[tooltip|image]]}}}
* linked embedded images: {{{[img[tooltip|image][link]]}}}
* external/"pretty" links: {{{[[label|link]]}}}
''Please refer to AttachFilePlugin (source: http://www.TiddlyTools.com/#AttachFilePlugin) for additional information.''
<<<
!!!!!Revisions
<<<
2009.10.10 [4.0.1] in fileExists(), check for IE to avoid hanging Chrome during startup
2009.06.04 [4.0.0] changed attachment storage format to use //sections// instead of embedded substring markers.
2008.01.08 [*.*.*] plugin size reduction: documentation moved to ...Info
2007.12.04 [*.*.*] update for TW2.3.0: replaced deprecated core functions, regexps, and macros
2007.10.29 [3.7.0] more code reduction: removed upload handling from AttachFilePlugin (saves ~7K!)
2007.10.28 [3.6.0] removed duplicate formatter code from AttachFilePlugin (saves ~10K!) and updated documentation accordingly. This plugin ([[AttachFilePluginFormatters]]) is now //''required''// in order to display attached images/binary files within tiddler content.
2006.05.20 [3.4.0] through 2007.03.01 [3.5.3] sync with AttachFilePlugin
2006.05.13 [3.2.0] created from AttachFilePlugin v3.2.0
<<<
!!!!!Code
***/
// // version
//{{{
version.extensions.AttachFilePluginFormatters= {major: 4, minor: 0, revision: 1, date: new Date(2009,10,10)};
//}}}
//{{{
if (config.macros.attach==undefined) config.macros.attach= { };
//}}}
//{{{
if (config.macros.attach.isAttachment==undefined) config.macros.attach.isAttachment=function (title) {
var tiddler = store.getTiddler(title);
if (tiddler==undefined || tiddler.tags==undefined) return false;
return (tiddler.tags.indexOf("attachment")!=-1);
}
//}}}
//{{{
// test for local file existence - returns true/false without visible error display
if (config.macros.attach.fileExists==undefined) config.macros.attach.fileExists=function(f) {
if(window.Components) { // MOZ
try { netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect"); }
catch(e) { return false; } // security access denied
var file = Components.classes["@mozilla.org/file/local;1"].createInstance(Components.interfaces.nsILocalFile);
try { file.initWithPath(f); }
catch(e) { return false; } // invalid directory
return file.exists();
}
else if (config.browser.isIE) { // IE
var fso = new ActiveXObject("Scripting.FileSystemObject");
return fso.FileExists(f);
}
else return true; // other browsers: assume file exists
}
//}}}
//{{{
if (config.macros.attach.getAttachment==undefined) config.macros.attach.getAttachment=function(title) {
// extract embedded data, local and remote links (if any)
var text=store.getTiddlerText(title,'');
var embedded=store.getTiddlerText(title+'##data','').trim();
var locallink=store.getTiddlerText(title+'##file','').trim();
var remotelink=store.getTiddlerText(title+'##url','').trim();
// backward-compatibility for older attachments (pre 4.0.0)
var startmarker="---BEGIN_DATA---\n";
var endmarker="\n---END_DATA---";
var pos=0; var endpos=0;
if ((pos=text.indexOf(startmarker))!=-1 && (endpos=text.indexOf(endmarker))!=-1)
embedded="data:"+(text.substring(pos+startmarker.length,endpos)).replace(/\n/g,'');
if ((pos=text.indexOf("/%LOCAL_LINK%/"))!=-1)
locallink=text.substring(text.indexOf("|",pos)+1,text.indexOf("]]",pos));
if ((pos=text.indexOf("/%REMOTE_LINK%/"))!=-1)
remotelink=text.substring(text.indexOf("|",pos)+1,text.indexOf("]]",pos));
// if there is a data: URI defined (not supported by IE)
if (embedded.length && !config.browser.isIE) return embedded;
// document is being served remotely... use remote URL (if any) (avoids security alert)
if (remotelink.length && document.location.protocol!="file:")
return remotelink;
// local link only... return link without checking file existence (avoids security alert)
if (locallink.length && !remotelink.length)
return locallink;
// local link, check for file exist... use local link if found
if (locallink.length) {
locallink=locallink.replace(/^\.[\/\\]/,''); // strip leading './' or '.\' (if any)
if (this.fileExists(getLocalPath(locallink))) return locallink;
// maybe local link is relative... add path from current document and try again
var pathPrefix=document.location.href; // get current document path and trim off filename
var slashpos=pathPrefix.lastIndexOf("/"); if (slashpos==-1) slashpos=pathPrefix.lastIndexOf("\\");
if (slashpos!=-1 && slashpos!=pathPrefix.length-1) pathPrefix=pathPrefix.substr(0,slashpos+1);
if (this.fileExists(getLocalPath(pathPrefix+locallink))) return locallink;
}
// no embedded data, no local (or not found), fallback to remote URL (if any)
if (remotelink.length) return remotelink;
// attachment URL doesn't resolve, just return input as is
return title;
}
//}}}
//{{{
if (config.macros.attach.init_formatters==undefined) config.macros.attach.init_formatters=function() {
if (this.initialized) return;
// find the formatter for "image" and replace the handler
for (var i=0; i<config.formatters.length && config.formatters[i].name!="image"; i++);
if (i<config.formatters.length) config.formatters[i].handler=function(w) {
this.lookaheadRegExp.lastIndex = w.matchStart;
var lookaheadMatch = this.lookaheadRegExp.exec(w.source)
if(lookaheadMatch && lookaheadMatch.index == w.matchStart) // Simple bracketted link
{
var e = w.output;
if(lookaheadMatch[5])
{
var link = lookaheadMatch[5];
// ELS -------------
var external=config.formatterHelpers.isExternalLink(link);
if (external)
{
if (config.macros.attach.isAttachment(link))
{
e = createExternalLink(w.output,link);
e.href=config.macros.attach.getAttachment(link);
e.title = config.macros.attach.linkTooltip + link;
}
else
e = createExternalLink(w.output,link);
}
else
e = createTiddlyLink(w.output,link,false,null,w.isStatic);
// ELS -------------
addClass(e,"imageLink");
}
var img = createTiddlyElement(e,"img");
if(lookaheadMatch[1])
img.align = "left";
else if(lookaheadMatch[2])
img.align = "right";
if(lookaheadMatch[3])
img.title = lookaheadMatch[3];
img.src = lookaheadMatch[4];
// ELS -------------
if (config.macros.attach.isAttachment(lookaheadMatch[4]))
img.src=config.macros.attach.getAttachment(lookaheadMatch[4]);
// ELS -------------
w.nextMatch = this.lookaheadRegExp.lastIndex;
}
}
//}}}
//{{{
// find the formatter for "prettyLink" and replace the handler
for (var i=0; i<config.formatters.length && config.formatters[i].name!="prettyLink"; i++);
if (i<config.formatters.length) {
config.formatters[i].handler=function(w) {
this.lookaheadRegExp.lastIndex = w.matchStart;
var lookaheadMatch = this.lookaheadRegExp.exec(w.source);
if(lookaheadMatch && lookaheadMatch.index == w.matchStart) {
var e;
var text = lookaheadMatch[1];
if(lookaheadMatch[3]) {
// Pretty bracketted link
var link = lookaheadMatch[3];
if (config.macros.attach.isAttachment(link)) {
e = createExternalLink(w.output,link);
e.href=config.macros.attach.getAttachment(link);
e.title=config.macros.attach.linkTooltip+link;
}
else e = (!lookaheadMatch[2] && config.formatterHelpers.isExternalLink(link))
? createExternalLink(w.output,link)
: createTiddlyLink(w.output,link,false,null,w.isStatic);
} else {
e = createTiddlyLink(w.output,text,false,null,w.isStatic);
}
createTiddlyText(e,text);
w.nextMatch = this.lookaheadRegExp.lastIndex;
}
}
} // if "prettyLink" formatter found
this.initialized=true;
}
//}}}
//{{{
config.macros.attach.init_formatters(); // load time init
//}}}
//{{{
if (TiddlyWiki.prototype.coreGetRecursiveTiddlerText==undefined) {
TiddlyWiki.prototype.coreGetRecursiveTiddlerText = TiddlyWiki.prototype.getRecursiveTiddlerText;
TiddlyWiki.prototype.getRecursiveTiddlerText = function(title,defaultText,depth) {
return config.macros.attach.isAttachment(title)?
config.macros.attach.getAttachment(title):this.coreGetRecursiveTiddlerText.apply(this,arguments);
}
}
//}}}
<<showtoc>>
''June 19, 2011''
Hello and welcome. This tutorial is a work in progress. All feedback is appreciated.
NOTE: As of June 15, 2011, [[Studio Products|http://store.studioproducts.com/]] no longer exists. This company offered high quality materials for oil painters including paints, mediums, and ingredients for mediums. It was bought out by an undisclosed paint manufacturing company who may market some of Studio Products’ materials under a different name in the future.
The tutorial will have to be rewritten to accommodate this change. I hope to do that this winter. Thank you for your patience.
Thank you.
Rumara Jewett
rumara [at] earthlink [dot] net
''Windows users: we recommend using //Mozilla Firefox// browser''
If using ''//Internet Explorer//'' in ''Windows'', //Table of Contents// links will not jump the user down the page to subsections, and the numerous //cross-links// in the body to a subsection of another page will not work.
In order for Table of Contents entries at the top of each section (and in the [[Table of Contents]] page) to function as links to subsections, ''Windows'' users should use the ''//Mozilla Firefox//'' browser. You can download the free browser from the [[Firefox|http://www.mozilla.com/en-US/firefox/firefox.html]] website.
For Mac users, the site functions seamlessly using either ''//Firefox//'' or ''//Safari//''.
On the Linux platform, ''//Firefox//'' provides seamless navigation of the site.
<<tiddler HideTiddlerTags>>
To contact the author, please email Rumara at:
rumara [at] earthlink [dot] net
Comments are welcome (see [[Author's Note]]).
<<tiddler HideTiddlerTags>>
/***
|Name|CheckboxPlugin|
|Source|http://www.TiddlyTools.com/#CheckboxPlugin|
|Documentation|http://www.TiddlyTools.com/#CheckboxPluginInfo|
|Version|2.4.0|
|Author|Eric Shulman|
|License|http://www.TiddlyTools.com/#LegalStatements|
|~CoreVersion|2.1|
|Type|plugin|
|Description|Add checkboxes to your tiddler content|
This plugin extends the TiddlyWiki syntax to allow definition of checkboxes that can be embedded directly in tiddler content. Checkbox states are preserved by:
* by setting/removing tags on specified tiddlers,
* or, by setting custom field values on specified tiddlers,
* or, by saving to a locally-stored cookie ID,
* or, automatically modifying the tiddler content (deprecated)
When an ID is assigned to the checkbox, it enables direct programmatic access to the checkbox DOM element, as well as creating an entry in TiddlyWiki's config.options[ID] internal data. In addition to tracking the checkbox state, you can also specify custom javascript for programmatic initialization and onClick event handling for any checkbox, so you can provide specialized side-effects in response to state changes.
!!!!!Documentation
>see [[CheckboxPluginInfo]]
!!!!!Revisions
<<<
2008.01.08 [*.*.*] plugin size reduction: documentation moved to [[CheckboxPluginInfo]]
2008.01.05 [2.4.0] set global "window.place" to current checkbox element when processing checkbox clicks. This allows init/beforeClick/afterClick handlers to reference RELATIVE elements, including using "story.findContainingTiddler(place)". Also, wrap handlers in "function()" so "return" can be used within handler code.
|please see [[CheckboxPluginInfo]] for additional revision details|
2005.12.07 [0.9.0] initial BETA release
<<<
!!!!!Code
***/
//{{{
version.extensions.CheckboxPlugin = {major: 2, minor: 4, revision:0 , date: new Date(2008,1,5)};
//}}}
//{{{
config.checkbox = { refresh: { tagged:true, tagging:true, container:true } };
config.formatters.push( {
name: "checkbox",
match: "\\[[xX_ ][\\]\\=\\(\\{]",
lookahead: "\\[([xX_ ])(=[^\\s\\(\\]{]+)?(\\([^\\)]*\\))?({[^}]*})?({[^}]*})?({[^}]*})?\\]",
handler: function(w) {
var lookaheadRegExp = new RegExp(this.lookahead,"mg");
lookaheadRegExp.lastIndex = w.matchStart;
var lookaheadMatch = lookaheadRegExp.exec(w.source)
if(lookaheadMatch && lookaheadMatch.index == w.matchStart) {
// get params
var checked=(lookaheadMatch[1].toUpperCase()=="X");
var id=lookaheadMatch[2];
var target=lookaheadMatch[3];
if (target) target=target.substr(1,target.length-2).trim(); // trim off parentheses
var fn_init=lookaheadMatch[4];
var fn_clickBefore=lookaheadMatch[5];
var fn_clickAfter=lookaheadMatch[6];
var tid=story.findContainingTiddler(w.output); if (tid) tid=tid.getAttribute("tiddler");
var srctid=w.tiddler?w.tiddler.title:null;
config.macros.checkbox.create(w.output,tid,srctid,w.matchStart+1,checked,id,target,config.checkbox.refresh,fn_init,fn_clickBefore,fn_clickAfter);
w.nextMatch = lookaheadMatch.index + lookaheadMatch[0].length;
}
}
} );
config.macros.checkbox = {
handler: function(place,macroName,params,wikifier,paramString,tiddler) {
if(!(tiddler instanceof Tiddler)) { // if no tiddler passed in try to find one
var here=story.findContainingTiddler(place);
if (here) tiddler=store.getTiddler(here.getAttribute("tiddler"))
}
var srcpos=0; // "inline X" not applicable to macro syntax
var target=params.shift(); if (!target) target="";
var defaultState=params[0]=="checked"; if (defaultState) params.shift();
var id=params.shift(); if (id && !id.length) id=null;
var fn_init=params.shift(); if (fn_init && !fn_init.length) fn_init=null;
var fn_clickBefore=params.shift();
if (fn_clickBefore && !fn_clickBefore.length) fn_clickBefore=null;
var fn_clickAfter=params.shift();
if (fn_clickAfter && !fn_clickAfter.length) fn_clickAfter=null;
var refresh={ tagged:true, tagging:true, container:false };
this.create(place,tiddler.title,tiddler.title,0,defaultState,id,target,refresh,fn_init,fn_clickBefore,fn_clickAfter);
},
create: function(place,tid,srctid,srcpos,defaultState,id,target,refresh,fn_init,fn_clickBefore,fn_clickAfter) {
// create checkbox element
var c = document.createElement("input");
c.setAttribute("type","checkbox");
c.onclick=this.onClickCheckbox;
c.srctid=srctid; // remember source tiddler
c.srcpos=srcpos; // remember location of "X"
c.container=tid; // containing tiddler (may be null if not in a tiddler)
c.tiddler=tid; // default target tiddler
c.refresh = {};
c.refresh.container = refresh.container;
c.refresh.tagged = refresh.tagged;
c.refresh.tagging = refresh.tagging;
place.appendChild(c);
// set default state
c.checked=defaultState;
// track state in config.options.ID
if (id) {
c.id=id.substr(1); // trim off leading "="
if (config.options[c.id]!=undefined)
c.checked=config.options[c.id];
else
config.options[c.id]=c.checked;
}
// track state in (tiddlername|tagname) or (fieldname@tiddlername)
if (target) {
var pos=target.indexOf("@");
if (pos!=-1) {
c.field=pos?target.substr(0,pos):"checked"; // get fieldname (or use default "checked")
c.tiddler=target.substr(pos+1); // get specified tiddler name (if any)
if (!c.tiddler || !c.tiddler.length) c.tiddler=tid; // if tiddler not specified, default == container
if (store.getValue(c.tiddler,c.field)!=undefined)
c.checked=(store.getValue(c.tiddler,c.field)=="true"); // set checkbox from saved state
} else {
var pos=target.indexOf("|"); if (pos==-1) var pos=target.indexOf(":");
c.tag=target;
if (pos==0) c.tag=target.substr(1); // trim leading "|" or ":"
if (pos>0) { c.tiddler=target.substr(0,pos); c.tag=target.substr(pos+1); }
if (!c.tag.length) c.tag="checked";
var t=store.getTiddler(c.tiddler);
if (t && t.tags)
c.checked=t.isTagged(c.tag); // set checkbox from saved state
}
}
// trim off surrounding { and } delimiters from init/click handlers
if (fn_init) c.fn_init="(function(){"+fn_init.trim().substr(1,fn_init.length-2)+"})()";
if (fn_clickBefore) c.fn_clickBefore="(function(){"+fn_clickBefore.trim().substr(1,fn_clickBefore.length-2)+"})()";
if (fn_clickAfter) c.fn_clickAfter="(function(){"+fn_clickAfter.trim().substr(1,fn_clickAfter.length-2)+"})()";
c.init=true; c.onclick(); c.init=false; // compute initial state and save in tiddler/config/cookie
},
onClickCheckbox: function(event) {
window.place=this;
if (this.init && this.fn_init) // custom function hook to set initial state (run only once)
{ try { eval(this.fn_init); } catch(e) { displayMessage("Checkbox init error: "+e.toString()); } }
if (!this.init && this.fn_clickBefore) // custom function hook to override changes in checkbox state
{ try { eval(this.fn_clickBefore) } catch(e) { displayMessage("Checkbox onClickBefore error: "+e.toString()); } }
if (this.id)
// save state in config AND cookie (only when ID starts with 'chk')
{ config.options[this.id]=this.checked; if (this.id.substr(0,3)=="chk") saveOptionCookie(this.id); }
if (this.srctid && this.srcpos>0 && (!this.id || this.id.substr(0,3)!="chk") && !this.tag && !this.field) {
// save state in tiddler content only if not using cookie, tag or field tracking
var t=store.getTiddler(this.srctid); // put X in original source tiddler (if any)
if (t && this.checked!=(t.text.substr(this.srcpos,1).toUpperCase()=="X")) { // if changed
t.set(null,t.text.substr(0,this.srcpos)+(this.checked?"X":"_")+t.text.substr(this.srcpos+1),null,null,t.tags);
if (!story.isDirty(t.title)) story.refreshTiddler(t.title,null,true);
store.setDirty(true);
}
}
if (this.field) {
if (this.checked && !store.tiddlerExists(this.tiddler))
store.saveTiddler(this.tiddler,this.tiddler,"",config.options.txtUserName,new Date());
// set the field value in the target tiddler
store.setValue(this.tiddler,this.field,this.checked?"true":"false");
// DEBUG: displayMessage(this.field+"@"+this.tiddler+" is "+this.checked);
}
if (this.tag) {
if (this.checked && !store.tiddlerExists(this.tiddler))
store.saveTiddler(this.tiddler,this.tiddler,"",config.options.txtUserName,new Date());
var t=store.getTiddler(this.tiddler);
if (t) {
var tagged=(t.tags && t.tags.indexOf(this.tag)!=-1);
if (this.checked && !tagged) { t.tags.push(this.tag); store.setDirty(true); }
if (!this.checked && tagged) { t.tags.splice(t.tags.indexOf(this.tag),1); store.setDirty(true); }
}
// if tag state has been changed, update display of corresponding tiddlers (unless they are in edit mode...)
if (this.checked!=tagged) {
if (this.refresh.tagged) {
if (!story.isDirty(this.tiddler)) // the TAGGED tiddler in view mode
story.refreshTiddler(this.tiddler,null,true);
else // the TAGGED tiddler in edit mode (with tags field)
config.macros.checkbox.refreshEditorTagField(this.tiddler,this.tag,this.checked);
}
if (this.refresh.tagging)
if (!story.isDirty(this.tag)) story.refreshTiddler(this.tag,null,true); // the TAGGING tiddler
}
}
if (!this.init && this.fn_clickAfter) // custom function hook to react to changes in checkbox state
{ try { eval(this.fn_clickAfter) } catch(e) { displayMessage("Checkbox onClickAfter error: "+e.toString()); } }
// refresh containing tiddler (but not during initial rendering, or we get an infinite loop!) (and not when editing container)
if (!this.init && this.refresh.container && this.container!=this.tiddler)
if (!story.isDirty(this.container)) story.refreshTiddler(this.container,null,true); // the tiddler CONTAINING the checkbox
return true;
},
refreshEditorTagField: function(title,tag,set) {
var tagfield=story.getTiddlerField(title,"tags");
if (!tagfield||tagfield.getAttribute("edit")!="tags") return; // if no tags field in editor (i.e., custom template)
var tags=tagfield.value.readBracketedList();
if (tags.contains(tag)==set) return; // if no change needed
if (set) tags.push(tag); // add tag
else tags.splice(tags.indexOf(tag),1); // remove tag
for (var t=0;t<tags.length;t++) tags[t]=String.encodeTiddlyLink(tags[t]);
tagfield.value=tags.join(" "); // reassemble tag string (with brackets as needed)
return;
}
}
//}}}
|Name|CheckboxPluginInfo|
|Source|http://www.TiddlyTools.com/#CheckboxPlugin|
|Documentation|http://www.TiddlyTools.com/#CheckboxPluginInfo|
|Version|2.4.0|
|Author|Eric Shulman|
|License|http://www.TiddlyTools.com/#LegalStatements|
|~CoreVersion|2.1|
|Type|documentation|
|Description|documentation for CheckboxPlugin|
This plugin extends the TiddlyWiki syntax to allow definition of checkboxes that can be embedded directly in tiddler content. Checkbox states are preserved by:
* setting/removing tags on specified tiddlers,
* or, setting custom field values on specified tiddlers,
* or, saving to a locally-stored cookie ID,
* or, automatically modifying the tiddler source content (deprecated).
When an ID is assigned to the checkbox, it enables direct programmatic access to the checkbox DOM element, as well as creating an entry in TiddlyWiki's config.options[ID] internal data. In addition to tracking the checkbox state, you can also specify custom javascript for programmatic initialization and onClick event handling for any checkbox, so you can provide specialized side-effects in response to state changes.
!!!!!Inline (wiki syntax) Usage
<<<
//{{{
[ ]or[_] and [x]or[X]
//}}}
Simple checkboxes using 'Inline X' storage. The current unchecked/checked state is indicated by the character between the {{{[}}} and {{{]}}} brackets ("_" means unchecked, "X" means checked). When you click on a checkbox, the current state is retained by directly modifying the tiddler content to place the corresponding "_" or "X" character in between the brackets.
>//''NOTE: 'Inline X' syntax has been deprecated...'' This storage format only works properly for checkboxes that are directly embedded and accessed from content in a single tiddler. However, if that tiddler is 'transcluded' into another (by using the {{{<<tiddler TiddlerName>>}}} macro), the 'Inline X' will be ''erroneously stored in the containing tiddler's source content, resulting in corrupted content in that tiddler.'' For anything but the most simple of "to do list" uses, you should select from the various alternative storage methods described below...//
//{{{
[x=id]
//}}}
Assign an optional ID to the checkbox so you can use {{{document.getElementByID("id")}}} to manipulate the checkbox DOM element, as well as tracking the current checkbox state in {{{config.options["id"]}}}. If the ID starts with "chk" the checkbox state will also be saved in a cookie, so it can be automatically restored whenever the checkbox is re-rendered (overrides any default {{{[x]}}} or {{{[_]}}} value). If a cookie value is kept, the "_" or "X" character in the tiddler content remains unchanged, and is only applied as the default when a cookie-based value is not currently defined.
//{{{
[x(title|tag)] or [x(title:tag)]
//}}}
Initializes and tracks the current checkbox state by setting or removing a particular tag value from a specified tiddler. If you omit the tiddler title (and the | or : separator), the specified tag is assigned to the current tiddler. If you omit the tag value, as in {{{(title|)}}}, the default tag, {{{checked}}}, is assumed. Omitting both the title and tag, {{{()}}}, tracks the checkbox state by setting the "checked" tag on the current tiddler. When tag tracking is used, the "_" or "X" character in the tiddler content remains unchanged, and is not used to set or track the checkbox state. If a tiddler title named in the tag does not exist, the checkbox state defaults to the "inline X" value. If this value is //checked//, or is subsequently changed to //checked//, it will automatically create the missing tiddler and then add the tag to it. //''NOTE: beginning with version 2.1.2 of this plugin, the "|" separator is the preferred separator between the title and tag name, as it avoids syntactic ambiguity when ":" is used within tiddler titles or tag names.''//
//{{{
[x(field@tiddler)]
//}}}
Initializes and tracks the current checkbox state by setting a particular custom field value from a specified tiddler. If you omit the tiddler title (but not the "@" separator), the specified field on the current tiddler is used. If you omit the field name, as in {{{(@tiddler)}}}, a default fieldname of {{{checked}}} is assumed. Omitting both the field and the tiddler title, {{{(@)}}}, defaults to setting the "checked" field on the current tiddler. When field tracking is used, the "_" or "X" character in the tiddler content remains unchanged, and is not used to set or track the checkbox state. If the tiddler title named in the parameter does not exist, the checkbox state defaults to the "inline X" value. If this value is //checked// or is subsequently changed to //checked//, it will automatically create the missing tiddler and then add the field to it.
//{{{
[x{javascript}{javascript}{javascript}]
//}}}
You can define optional javascript code segments to add custom initialization and/or 'onClick' handlers to a checkbox. The current checkbox state (and it's other DOM attributes) can be set or read from within these code segments by reference to a globally-defined context object, "place" (which can also be referenced as "window.place").
The first code segment will be executed when the checkbox is initially displayed, so that you can programmatically determine it's starting checked/unchecked state. The second code segment (if present) is executed whenever the checkbox is clicked, but //before the regular checkbox processing in performed// ("onClickBefore"), so that you can apply programmed responses or intercept and override the checkbox state based on custom logic. The third code segment (if present) is executed whenver the checkbox is clicked, //after the regular checkbox processing has completed// ("onClickAfter"), so that you can include "side-effect" processing based on the checkbox state just applied.
>Note: if you want to use the default checkbox initialization processing with a custom onClickBefore/After function, use this syntax:
>{{{[x(tag){}{javascript}]}}} or {{{[x(tag){}{}{javascript}]}}}
<<<
!!!!!Macro usage
<<<
In addition to embedded checkboxes using the wiki syntax described above, a ''macro-based syntax'' is also provided, for use in templates where wiki syntax cannot be directly used. This macro syntax can also be used in tiddler content, as an alternative to the wiki syntax. When embedded in [[PageTemplate]], [[ViewTemplate]], or [[EditTemplate]] (or custom alternative templates), use the following macro syntax:
//{{{
<span macro="checkbox target checked id onInit onClickBefore onClickAfter"></span>
//}}}
or, when embedded in tiddler content, use the following macro syntax:
//{{{
<<checkbox target checked id onInit onClickBefore onClickAfter>>
//}}}
where:
''target''
>is either a tag reference (e.g., ''tagname|tiddlername'') or a field reference (e.g. ''fieldname@tiddlername''), as described above.
''checked'' (optional)
>is a keyword that sets the initial state of the checkbox to "checked". When omitted, the default checkbox state is "unchecked".
''id'' (optional)
>specifies an internal config.options.* ID, as described above. If the ID begins with "chk", a cookie-based persistent value will be created to track the checkbox state in between sessions.
''onInit'' (optional)
>contains a javascript event handler to be performed when the checkbox is initially rendered (see details above).
''onClickBefore'' and/or ''onClickAfter'' (optional)
>contains a javascript event handler to be performed each time the checkbox is clicked (see details above). //note: to use the default onInit handler with a custom onClickBefore/After handler, use "" (empty quotes) or {} (empty function) as a placeholder for the onInit and/or onClickBefore parameters//
<<<
!!!!!Examples
<<<
''checked and unchecked static default ("inline X") values:''
//{{{
[X] label
[_] label
//}}}
>[X] label
>[_] label
''document-based value (id='demo', no cookie):''
//{{{
[_=demo] label
//}}}
>[_=demo] label
''cookie-based value (id='chkDemo'):''
//{{{
[_=chkDemo] label
//}}}
>[_=chkDemo] label
''tag-based value (TogglyTagging):''
//{{{
[_(CheckboxPluginInfo|demotag)]
[_(CheckboxPluginInfo|demotag){place.refresh.tagged=place.refresh.container=false}]
//}}}
>[_(CheckboxPluginInfo|demotag)] toggle 'demotag' (and refresh tiddler display)
>[_(CheckboxPluginInfo|demotag){place.refresh.tagged=place.refresh.container=false}] toggle 'demotag' (no refresh)
''field-based values:''
//{{{
[_(demofield@CheckboxPluginInfo)] demofield@CheckboxPluginInfo
[_(demofield@)] demofield@ (equivalent to demonfield@ current tiddler)
[_(checked@CheckboxPluginInfo)] checked@CheckboxPluginInfo
[_(@CheckboxPluginInfo)] @CheckboxPluginInfo
[_(@)] @ (equivalent to checked@ current tiddler)
//}}}
>[_(demofield@CheckboxPluginInfo)] demofield@CheckboxPluginInfo
>[_(demofield@)] demofield@ (current tiddler)
>[_(checked@CheckboxPluginInfo)] checked@CheckboxPluginInfo
>[_(@CheckboxPluginInfo)] @CheckboxPluginInfo
>[_(@)] toggle field: @ (defaults to "checked@here")
>click to view current: <<toolbar fields>>
''custom init and onClick functions:''
//{{{
[X{place.checked=true}{alert(place.checked?"on":"off")}] message box with checkbox state
//}}}
>[X{place.checked=true}{alert(place.checked?"on":"off")}] message box with checkbox state
''retrieving option values:''
>config.options['demo']=<script>return config.options['demo']?"true":"false";</script>
>config.options['chkDemo']=<script>return config.options['chkDemo']?"true":"false";</script>
<<<
!!!!!Configuration
<<<
Normally, when a checkbox state is changed, the affected tiddlers are automatically re-rendered, so that any checkbox-dependent dynamic content can be updated. There are three possible tiddlers to be re-rendered, depending upon where the checkbox is placed, and what kind of storage method it is using.
*''container'': the tiddler in which the checkbox is displayed. (e.g., this tiddler)
*''tagged'': the tiddler that is being tagged (e.g., "~MyTask" when tagging "~MyTask:done")
*''tagging'': the "tag tiddler" (e.g., "~done" when tagging "~MyTask:done")
You can set the default refresh handling for all checkboxes in your document by using the following javascript syntax either in a systemConfig plugin, or as an inline script. (Substitute true/false values as desired):
{{{config.checkbox.refresh = { tagged:true, tagging:true, container:true };}}}
You can also override these defaults for any given checkbox by using an initialization function to set one or more of the refresh options. For example:
{{{[_{place.refresh.container=false}]}}}
<<<
!!!!!Revisions
<<<
2008.01.08 [*.*.*] plugin size reduction: documentation moved to [[CheckboxPluginInfo]]
2008.01.05 2.4.0 set global "window.place" to current checkbox element when processing checkbox clicks. This allows init/beforeClick/afterClick handlers to reference RELATIVE elements, including using "story.findContainingTiddler(place)". Also, wrap handlers in "function()" so "return" can be used within handler code.
2008.01.02 2.3.0 split optional custom onClick handling into separate onClickBefore and onClickAfter handlers. The onClickBefore handler permits interception of the click BEFORE the checkbox is set. onClickAfter allows follow-on 'side-effect' processing to occur AFTER the checkbox is set.
2007.12.04 [*.*.*] update for TW2.3.0: replaced deprecated core functions, regexps, and macros
2007.08.06 2.2.5 supress automatic refresh of any tiddler that is currently being edited. Ensures that current tiddler edit sessions are not prematurely discarded (losing any changes). However, if checkbox changes a tag on a tiddler being edited, update the "tags" input field (if any) so that saving the edited tiddler correctly reflects any changes due to checkbox activity... see refreshEditorTagField().
2007.07.13 - 2.2.4 in handler(), fix srctid reference (was "w.tiddler", should have been "w.tiddler.title"). This fixes broken 'inline X' plus fatal macro error when using PartTiddlerPlugin. Thanks to cmari for reporting the problem and UdoBorkowski for finding the code error.
2007.06.21 - 2.2.3 suppress automatic refresh of tiddler when using macro-syntax to prevent premature end of tiddler editing session.
2007.06.20 - 2.2.2 fixed handling for 'inline X' when checkboxes are contained in a 'trancluded' tiddler. Now, regardless of where an inline X checkbox appears, the X will be placed in the originating source tiddler, rather than the tiddler in which the checkbox appears.
2007.06.17 - 2.2.1 Refactored code to add checkbox //macro// syntax for use in templates (e.g., {{{macro="checkbox ..."}}}. Also, code cleanup of existing tag handling.
2007.06.16 - 2.2.0 added support for tracking checkbox states using tiddler fields via "(fieldname@tiddlername)" syntax.
2006.05.04 - 2.1.3 fix use of findContainingTiddler() to check for a non-null return value, so that checkboxes won't crash when used outside of tiddler display context (such as in header, sidebar or mainmenu)
2006.03.11 - 2.1.2 added "|" as delimiter to tag-based storage syntax (e.g. "tiddler|tag") to avoid parsing ambiguity when tiddler titles or tag names contain ":". Using ":" as a delimiter is still supported but is deprecated in favor of the new "|" usage. Based on a problem reported by JeffMason.
2006.02.25 - 2.1.0 added configuration options to enable/disable forced refresh of tiddlers when toggling tags
2006.02.23 - 2.0.4 when toggling tags, force refresh of the tiddler containing the checkbox.
2006.02.23 - 2.0.3 when toggling tags, force refresh of the 'tagged tiddler' so that tag-related tiddler content (such as "to-do" lists) can be re-rendered.
2006.02.23 - 2.0.2 when using tag-based storage, allow use [[ and ]] to quote tiddler or tag names that contain spaces:
{{{[x([[Tiddler with spaces]]:[[tag with spaces]])]}}}
2006.01.10 - 2.0.1 when toggling tags, force refresh of the 'tagging tiddler'. For example, if you toggle the "systemConfig" tag on a plugin, the corresponding "systemConfig" TIDDLER will be automatically refreshed (if currently displayed), so that the 'tagged' list in that tiddler will remain up-to-date.
2006.01.04 - 2.0.0 update for ~TW2.0
2005.12.27 - 1.1.2 Fix lookAhead regExp handling for {{{[x=id]}}}, which had been including the "]" in the extracted ID.
Added check for "chk" prefix on ID before calling saveOptionCookie()
2005.12.26 - 1.1.2 Corrected use of toUpperCase() in tiddler re-write code when comparing {{{[X]}}} in tiddler content with checkbox state. Fixes a problem where simple checkboxes could be set, but never cleared.
2005.12.26 - 1.1.0 Revise syntax so all optional parameters are included INSIDE the [ and ] brackets. Backward compatibility with older syntax is supported, so content changes are not required when upgrading to the current version of this plugin. Based on a suggestion by GeoffSlocock
2005.12.25 - 1.0.0 added support for tracking checkbox state using tags ("TogglyTagging")
Revised version number for official post-beta release.
2005.12.08 - 0.9.3 support separate 'init' and 'onclick' function definitions.
2005.12.08 - 0.9.2 clean up lookahead pattern
2005.12.07 - 0.9.1 only update tiddler source content if checkbox state is actually different. Eliminates unnecessary tiddler changes (and 'unsaved changes' warnings)
2005.12.07 - 0.9.0 initial BETA release
<<<
(''//Internet Explorer//'' users: the Table of Contents will not function as links. Please read [[Author's Note]].)
<<showtoc>>
!Postponing cleaning brushes using Baby Oil Gel
Drying oils, mediums, and paint (which is made with a drying oil binder) will begin to harden on the brush quite quickly after painting. If you don’t have time to clean brushes right after a painting session, squeeze some Baby Oil Gel (see [[Materials]]) onto the brushes and work it into the bristles. This will stop the drying process for several days.
<html>
<div><table width="250" height="166" align="right">
<tr><td><a href="http://www.flickr.com/photos/76314685@N04/7001203025/lightbox/" target="_blank" title="IMG_3515 by RumaraPainting, on Flickr"><img src="http://farm8.staticflickr.com/7201/7001203025_bf1bcf88e9_o.jpg" width="350" height="233" align="center" alt="IMG_3515"></a></td></tr>
<tr><td>Squeezing some Baby Oil Gel onto a paper towel</td></tr></table></div>
<br>
<br>
One easy way to put Baby Oil Gel on the bristles is to squeeze a small lump onto a paper towel.
<BR CLEAR=RIGHT>
<div><table width="250" height="166" align="right">
<tr><td><a href="http://www.flickr.com/photos/76314685@N04/7001203055/lightbox/" target="_blank" title="IMG_3518 by RumaraPainting, on Flickr"><img src="http://farm7.staticflickr.com/6033/7001203055_166a5689ce_o.jpg" width="350" height="233" align="center" alt="IMG_3518"></a></td></tr>
<tr><td>Working the gel into the brush tip</td></tr></table></div>
<br>
<br>
First, wipe and squeeze excess paint off the brush tip with a paper towel. Then, work the tip full of Baby Oil Gel.
<BR CLEAR=RIGHT>
<div><table width="250" height="166" align="right">
<tr><td><a href="http://www.flickr.com/photos/76314685@N04/7001203079/lightbox/" target="_blank" title="IMG_3521 by RumaraPainting, on Flickr"><img src="http://farm8.staticflickr.com/7180/7001203079_fa4a88663c_o.jpg" width="350" height="233" align="center" alt="IMG_3521"></a></td></tr>
<tr><td>A brush tip immersed in the gel; note that there is a good amount of extra gel</td></tr></table></div>
<br>
<br>
Place the brush with the gel-coated brush tip on a paper towel or on a plastic bag, out of the way until ready to clean.
<BR CLEAR=RIGHT>
</html>
Baby Oil Gel can be carried in a plein-air box. After squeegee-ing the brushes in the gel, making sure the bristles are all moistened with the gel, wrap them in a plastic bag for carrying.
<br>
<br>
Be sure to clean the brush fully with soap (see below) within a few days, to keep the paint film free of the other ingredients in the gel.
!Postponing cleaning brushes using a pinceliere
Choose a narrow jar such as a brown glass vitamin jar. Add about an inch of oil, enough to cover the bristles of standing brushes. A good oil to use is safflower, which will not skin over as it ages in contact with air.
<html>
<div><table width="250" height="166" align="right">
<tr><td><a href="http://www.flickr.com/photos/76314685@N04/6855086108/lightbox/" target="_blank" title="IMG_3526 by RumaraPainting, on Flickr"><img src="http://farm7.staticflickr.com/6233/6855086108_72de30072c_o.jpg" width="350" height="233" align="center" alt="IMG_3526"></a></td></tr>
<tr><td>A vitamin jar containing an inch of oil, used for hog bristle brushes</td></tr></table></div>
<br>
<br>
Hog bristle brushes have some stiffness and will stand up easily in oil. Softer hair brushes such as Kolinsky sable, may sit on the bottom of the jar with bristles bent under the weight of the brush, which may deform the brush tip. For such brushes, use a piece of painter’s tape to affix the brush so that the tip avoids contact with the bottom of the jar.
<BR CLEAR=RIGHT>
<div><table width="250" height="166" align="right">
<tr><td><a href="http://www.flickr.com/photos/76314685@N04/6855086136/lightbox/" target="_blank" title="IMG_3532 by RumaraPainting, on Flickr"><img src="http://farm8.staticflickr.com/7213/6855086136_3effbeef69_o.jpg" width="350" height="233" align="center" alt="IMG_3532"></a></td></tr>
<tr><td>The jar of oil, capped</td></tr></table></div>
<br>
<br>
Keep the cap to the jar, as the jar can then be used in a traveling kit.
<BR CLEAR=RIGHT>
</html>
Written records show that early European painters in the 16-17th centuries called a vase of oil used in this way a “pinceliere.”```Ernst van de Wetering, //Rembrandt: The Painter at Work (second revised edition)// (University of California Press, 2009), 24.```
!Cleaning brushes at the end of the work session
Two options for soap are the following: [["The Masters" Brush Cleaner and Preserver|http://generalpencil.com/gpc_products_masters.html]], and Studio Products’ [[Ugly Dog Brush Soap|http://store.studioproducts.com/Ugly-Dog-Brush-Soap-p-16169.html]] (please see [[Author's Note]]).
To clean your brushes, either right after painting, or later in the week (after working Baby Oil Gel into the bristles, or having left the brushes sitting in a pinceliere), set the chosen soap next to a hot water sink.
We will use [["The Masters" Hand Soap|http://generalpencil.com/gpc_products_masters.html]] for this demonstration, but the technique is similar to using other soaps.
<html>
<div><table width="250" height="166" align="right">
<tr><td><a href="http://www.flickr.com/photos/76314685@N04/6855086860/lightbox/" target="_blank" title="IMG_3707 by RumaraPainting, on Flickr"><img src="http://farm7.staticflickr.com/6104/6855086860_08be51125d_o.jpg" width="350" height="233" align="center" alt="IMG_3707"></a></td></tr>
<tr><td>Checking hands for cuts and abrasions</td></tr></table></div>
<br>
<br>
</html>Check your hands for cuts or abrasions. If there are any openings in your skin, you will need to put on safety gloves, such as disposable latex gloves (see [[Materials]]) to prevent heavy metal particles from entering into your body (see [[Heavy Metals Safety]]) through the cut.<html>
<BR CLEAR=RIGHT>
<div><table width="250" height="166" align="right">
<tr><td><a href="http://www.flickr.com/photos/76314685@N04/7001203931/lightbox/" target="_blank" title="IMG_3708 by RumaraPainting, on Flickr"><img src="http://farm7.staticflickr.com/6113/7001203931_dec5ca3cc8_o.jpg" width="350" height="233" align="center" alt="IMG_3708"></a></td></tr>
<tr><td>Checking hands, flip side</td></tr></table></div>
<br>
<br>
<BR CLEAR=RIGHT>
<div><table width="250" height="166" align="right">
<tr><td><a href="http://www.flickr.com/photos/76314685@N04/7001203969/lightbox/" target="_blank" title="IMG_3709 by RumaraPainting, on Flickr"><img src="http://farm8.staticflickr.com/7128/7001203969_f8318ef0fa_o.jpg" width="350" height="233" align="center" alt="IMG_3709"></a></td></tr>
<tr><td>Wipe and squeeze the brush before cleaning</td></tr></table></div>
<br>
<br>
Wipe and squeeze excess paint (or Baby Oil Gel, or oil) off of the brush before cleaning.
<BR CLEAR=RIGHT>
<div><table width="250" height="166" align="right">
<tr><td><a href="http://www.flickr.com/photos/76314685@N04/6855086624/lightbox/" target="_blank" title="IMG_3626 by RumaraPainting, on Flickr"><img src="http://farm8.staticflickr.com/7224/6855086624_3126b02352_o.jpg" width="350" height="233" align="center" alt="IMG_3626"></a></td></tr>
<tr><td>Lathering up</td></tr></table></div>
<br>
<br>
Work up a good lather on your hands.
<BR CLEAR=RIGHT>
<div><table width="250" height="166" align="right">
<tr><td><a href="http://www.flickr.com/photos/76314685@N04/6855086652/lightbox/" target="_blank" title="IMG_3627 by RumaraPainting, on Flickr"><img src="http://farm7.staticflickr.com/6101/6855086652_c6a3764b67_o.jpg" width="350" height="233" align="center" alt="IMG_3627"></a></td></tr>
<tr><td>"Painting" the soap</td></tr></table></div>
<br>
<br>
"Paint" the brush in strokes along the top of the soap. (Note that the texture additive in the hand soap is rough on brush bristles. Use the brush cleaning soaps for soft-bristled brushes.)
<BR CLEAR=RIGHT>
<div><table width="250" height="166" align="right">
<tr><td><a href="http://www.flickr.com/photos/76314685@N04/6855086684/lightbox/" target="_blank" title="IMG_3636 by RumaraPainting, on Flickr"><img src="http://farm8.staticflickr.com/7042/6855086684_2c3812c89c_o.jpg" width="350" height="233" align="center" alt="IMG_3636"></a></td></tr>
<tr><td>Flushing with water</td></tr></table></div>
<br>
<br>
Keep "painting" the soap, while running water over it to clean the released paint.
<BR CLEAR=RIGHT>
<div><table width="250" height="166" align="right">
<tr><td><a href="http://www.flickr.com/photos/76314685@N04/6855760114/lightbox/" target="_blank" title="IMG_3647_REDX by RumaraPainting, on Flickr"><img src="http://farm8.staticflickr.com/7081/6855760114_44512c5f8b_o.jpg" width="350" height="233" align="center" alt="IMG_3647_REDX"></a></td></tr>
<tr><td>Do not twist and press the ferrule onto the soap</td></tr></table></div>
<br>
<br>
Do not press the ferrule onto the soap while splaying out the bristles. This may damage the bristles.
<BR CLEAR=RIGHT>
<div><table width="250" height="166" align="right">
<tr><td><a href="http://www.flickr.com/photos/76314685@N04/6855086716/lightbox/" target="_blank" title="IMG_3650 by RumaraPainting, on Flickr"><img src="http://farm8.staticflickr.com/7240/6855086716_e2fa844121_o.jpg" width="350" height="233" align="center" alt="IMG_3650"></a></td></tr>
<tr><td>Wiggling the soap into the bristles</td></tr></table></div>
<br>
<br>
Then take your brush, and "paint" a soapy palm. Grip the bristles with one hand and wiggle them to work the soap right up the ferrule.
<BR CLEAR=RIGHT>
<div><table width="250" height="166" align="right">
<tr><td><a href="http://www.flickr.com/photos/76314685@N04/7001203757/lightbox/" target="_blank" title="IMG_3656 by RumaraPainting, on Flickr"><img src="http://farm8.staticflickr.com/7264/7001203757_ee1c669693_o.jpg" width="350" height="233" align="center" alt="IMG_3656"></a></td></tr>
<tr><td>Rinsing in warm water</td></tr></table></div>
<br>
<br>
Rinse in warm water and repeat until the water runs clear.
<BR CLEAR=RIGHT>
<br>
<br>
<div>
<table width="400" height="225" align="right">
<tr><td>
<iframe width="400" height="233" src="http://www.youtube.com/embed/XGnzXtlBYrg?rel=0" frameborder="0" allowfullscreen></iframe>
</td></tr>
<tr>
<td>
Hover over video for controls
</td>
</tr>
</table>
</div>
<br>
<br>
<br>
This video shows cleaning a brush with </html>[["The Masters" Hand Soap|http://generalpencil.com/gpc_products_masters.html]]<html>.
<BR CLEAR=RIGHT>
<div><table width="250" height="166" align="right">
<tr><td><a href="http://www.flickr.com/photos/76314685@N04/6855086956/lightbox/" target="_blank" title="IMG_3714 by RumaraPainting, on Flickr"><img src="http://farm8.staticflickr.com/7060/6855086956_8c9704fb7e_o.jpg" width="350" height="233" align="center" alt="IMG_3714"></a></td></tr>
<tr><td>A clean, stained brush</td></tr></table></div>
<br>
<br>
Note that the pigments may have stained the brush. If the water runs through the brush and stays clear at the end of cleaning, the brush is clean.
<BR CLEAR=RIGHT>
<div>
<table width="400" height="225" align="right">
<tr><td>
<iframe width="400" height="233" src="http://www.youtube.com/embed/dv407_Om3xk?rel=0" frameborder="0" allowfullscreen></iframe>
</td></tr>
<tr>
<td>
Hover over video for controls
</td>
</tr>
</table>
</div>
<br>
<br>
<br>
Cleaning a brush with Studio Products’ </html>[[Ugly Dog Brush Soap|http://store.studioproducts.com/Ugly-Dog-Brush-Soap-p-16169.html]] (please see [[Author's Note]])<html> is a similar process. Here is a video showing this process.
<BR CLEAR=RIGHT>
<div><table width="250" height="166" align="right">
<tr><td><a href="http://www.flickr.com/photos/76314685@N04/6855086186/lightbox/" target="_blank" title="IMG_3539 by RumaraPainting, on Flickr"><img src="http://farm8.staticflickr.com/7085/6855086186_a1b2b75239_o.jpg" width="350" height="233" align="center" alt="IMG_3539"></a></td></tr>
<tr><td>Affixing a strip of blue tape onto a strip of paper</td></tr></table></div>
<br>
<br>
In order to dry the brush with its bristles cupped into a nice point, cut a small rectangle of paper about 1” x 2”, smaller if for a tiny brush. Take a piece of painter’s blue tape (see </html>[[Materials]]<html>) and stick it along the bottom of the strip of paper, so that half the tape is showing.
<BR CLEAR=RIGHT>
<br>
Wrap the paper around the brush so that the blue tape wraps around the ferrule or below.
<br>
<br>
<a href="http://www.flickr.com/photos/76314685@N04/6857671082/lightbox/" target="_blank" title="RGP_process_screenshot03 by RumaraPainting, on Flickr"><img src="http://farm8.staticflickr.com/7098/6857671082_d7b4a350da_o.jpg" width="700" height="231" alt="RGP_process_screenshot03"></a>
<br>
<BR CLEAR=LEFT>
<div><table width="250" height="166" align="right">
<tr><td><a href="http://www.flickr.com/photos/76314685@N04/7001203273/lightbox/" target="_blank" title="IMG_3556 by RumaraPainting, on Flickr"><img src="http://farm8.staticflickr.com/7280/7001203273_16e7de9e2c_o.jpg" width="350" height="233" align="center" alt="IMG_3556"></a></td></tr>
<tr><td>Drying the brush, angled downwards</td></tr></table></div>
<br>
<br>
Rest the brush on an angled plane so that any moisture remaining, will dry down and out of the ferrule. Keep the bristle end free, not resting on anything.
<BR CLEAR=RIGHT>
<br>
<br>
Let the brush dry overnight before removing the paper. These small paper wraps can be re-used.
<br>
<br>
<div>
<table width="40" height="70" border="0" align="left" cellpadding="0" cellspacing="12" bgcolor="FFFFFF"><tr>
<tr>
<td>
<IMG SRC="http://www.rumara.com/Sandbox/images/greenpainting/questionmark.gif" ALT="Question" width="40" height="40" border="0" vspace="0" hspace="0" align="center">
</td>
</tr>
</table>
</div>
<strong>"Question: Why not just use Ivory Liquid or Joy to clean oil painting brushes?"</strong>
<br>
Commercial laundry and dish soaps are formulated to cut grease. The soaps formulated for oil painting brushes, contain ingredients that are intended to keep some oil in the bristles. These special cleaners will also condition the brushes so that they stay soft and supple.
<BR CLEAR=LEFT>
</html>
!Cleaning brushes between colors, while working
Using two brushes in each size reduces the degree of cleaning needed when switching colors.
<html>
<div><table width="250" height="166" align="right">
<tr><td><a href="http://www.flickr.com/photos/76314685@N04/6855086326/lightbox/" target="_blank" title="IMG_3559 by RumaraPainting, on Flickr"><img src="http://farm8.staticflickr.com/7081/6855086326_7a4829c47b_o.jpg" width="350" height="233" align="center" alt="IMG_3559"></a></td></tr>
<tr><td>A "light" brush and a "dark" brush</td></tr></table></div>
<br>
<br>
We choose a “light” brush and a “dark” brush in each size. The “light” brush is for light colors and mixes, the dark brush for dark colors and mixes.
<br>
<br>
<BR CLEAR=RIGHT>
<div><table width="250" height="166" align="right">
<tr><td><a href="http://www.flickr.com/photos/76314685@N04/6855086356/lightbox/" target="_blank" title="IMG_3566 by RumaraPainting, on Flickr"><img src="http://farm8.staticflickr.com/7072/6855086356_659d357792_o.jpg" width="350" height="233" align="center" alt="IMG_3566"></a></td></tr>
<tr><td>Folding a paper towel, twice</td></tr></table></div>
<br>
<br>
A fairly clean brush can be obtained just by wiping with a squeeze several times. Take a paper towel (see </html>[[Materials]]<html>) and fold it twice to make a pad.
<BR CLEAR=RIGHT>
<br>
<br>
<div><table width="250" height="166" align="right">
<tr><td><a href="http://www.flickr.com/photos/76314685@N04/6855085882/lightbox/" target="_blank" title="IMG_3503 by RumaraPainting, on Flickr"><img src="http://farm7.staticflickr.com/6050/6855085882_0a15c8e30a_o.jpg" width="350" height="233" align="center" alt="IMG_3503"></a></td></tr>
<tr><td>Wipe and squeeze the brush tip in the towel</td></tr></table></div>
<br>
<br>
Hold the brush with one hand; fold the towel pad around the brush with the other, and wipe and squeeze. Repeat.
<BR CLEAR=RIGHT>
<div><table width="250" height="166" align="right">
<tr><td><a href="http://www.flickr.com/photos/76314685@N04/7001202929/lightbox/" target="_blank" title="IMG_3504 by RumaraPainting, on Flickr"><img src="http://farm8.staticflickr.com/7095/7001202929_8881d1d22c_o.jpg" width="350" height="233" align="center" alt="IMG_3504"></a></td></tr>
<tr><td>Squeezing</td></tr></table></div>
<br>
<br>
<BR CLEAR=RIGHT>
<div><table width="250" height="166" align="right">
<tr><td><a href="http://www.flickr.com/photos/76314685@N04/6855085942/lightbox/" target="_blank" title="IMG_3506 by RumaraPainting, on Flickr"><img src="http://farm8.staticflickr.com/7076/6855085942_ec60cdac8e_o.jpg" width="350" height="233" align="center" alt="IMG_3506"></a></td></tr>
<tr><td>The squeezed off paint</td></tr></table></div>
<br>
<br>
<BR CLEAR=RIGHT>
<div><table width="250" height="166" align="right">
<tr><td><a href="http://www.flickr.com/photos/76314685@N04/6855085974/lightbox/" target="_blank" title="IMG_3508 by RumaraPainting, on Flickr"><img src="http://farm8.staticflickr.com/7127/6855085974_b22b9186f3_o.jpg" width="350" height="233" align="center" alt="IMG_3508"></a></td></tr>
<tr><td>Repeat several times</td></tr></table></div>
<br>
<br>
<BR CLEAR=RIGHT>
<div><table width="250" height="166" align="right">
<tr><td><a href="http://www.flickr.com/photos/76314685@N04/6855086386/lightbox/" target="_blank" title="IMG_3574 by RumaraPainting, on Flickr"><img src="http://farm8.staticflickr.com/7040/6855086386_ece66c4155_o.jpg" width="350" height="233" align="center" alt="IMG_3574"></a></td></tr>
<tr><td>Swishing a brush in a jar of oil</td></tr></table></div>
<br>
<br>
If a cleaner brush is desired, dip the brush bristles in a pinceliere (see </html>[[Cleaning: Postponing cleaning brushes using a pinceliere|Cleaning##Postponing cleaning brushes using a pinceliere]]<html>).
<BR CLEAR=RIGHT>
<div><table width="250" height="166" align="right">
<tr><td><a href="http://www.flickr.com/photos/76314685@N04/7001203423/lightbox/" target="_blank" title="IMG_3580 by RumaraPainting, on Flickr"><img src="http://farm7.staticflickr.com/6105/7001203423_c71d9b5545_o.jpg" width="350" height="233" align="center" alt="IMG_3580"></a></td></tr>
<tr><td>Swishing a dirty brush in a clean puddle of linseed oil on the palette</td></tr></table></div>
<br>
<br>
The oil in the jar, used in this way, will grow grey-brown and dirty. Even a considerably muddied oil however can still be useful as a swish bucket to loosen paint from bristles.
<br>
<br>
If there is not an available container of (potentially dirty) linseed oil, make a small pool of oil on the palette and swish the brush into that.
<BR CLEAR=RIGHT>
</html>
If you paint without gloves, the four-ply towel created for the wipe-squeeze of the dirty brush is usually sufficient to prevent bleed-through onto fingers. Watch your fingers though because occasionally a softer mix with a particularly staining color, or thick blob of paint, squeezes through the 4-ply pad and you will need to get up and wash hands in order to observe safety precautions for metal-based pigments (see [[Heavy Metals Safety]]).
!Reusing the oil in the pinceliere
Early European painters sometimes used the brown/grey slurry that forms in a jar of oil that is used to moisturize and clean brushes, as the basis for an underpainting layer over a white ground.```Wetering, 25.```
If your intention is to use the dirty oil in this way, choose linseed oil in the pinceliere. Linseed oil forms the strongest bonds of any of the drying oils, and this oil will create a nice strong first layer to the paint film.
<html>
<div><table width="250" height="166" align="right">
<tr><td><a href="http://www.flickr.com/photos/76314685@N04/7001203453/lightbox/" target="_blank" title="IMG_3587 by RumaraPainting, on Flickr"><img src="http://farm8.staticflickr.com/7242/7001203453_bce57a1dfb_o.jpg" width="350" height="233" align="center" alt="IMG_3587"></a></td></tr>
<tr><td>Pouring dirty oil from the pinceliere onto a gessoed canvas</td></tr></table></div>
<br>
<br>
When the oil gets thick with paint and has turned a muddy grey-brown, add an umber or sienna to it to adjust its warmth and opacity if desired. Pour some of it over a canvas with a white ground, and rub on with a circular motion. Rub and wipe to make a nice, thin couch.
<BR CLEAR=RIGHT>
</html>
!Cleaning hands while working
Part of studio observation of heavy metals safety may include removing paint smears on hands immediately (see [[Heavy Metals Safety]]).
!!Using baby wipes
For small topical paint smears, a baby wipe may be enough. Baby wipes are made of tissues soaked in gentle detergents, vitamins, fragrance and disodium EDTA. Disodium EDTA is a heavy metal chelating agent. It bonds to heavy metals and helps to lift them off of the skin.
<html>
<div><table width="250" height="166" align="right">
<tr><td><a href="http://www.flickr.com/photos/76314685@N04/7001203479/lightbox/" target="_blank" title="IMG_3603 by RumaraPainting, on Flickr"><img src="http://farm8.staticflickr.com/7042/7001203479_2988a75d33_o.jpg" width="350" height="233" align="center" alt="IMG_3603"></a></td></tr>
<tr><td>Wiping a paint smear with baby wipes</td></tr></table></div>
<br>
<br>
Wiping hands with a baby wipe.
<BR CLEAR=RIGHT>
<div><table width="250" height="166" align="right">
<tr><td><a href="http://www.flickr.com/photos/76314685@N04/6855086532/lightbox/" target="_blank" title="IMG_3611 by RumaraPainting, on Flickr"><img src="http://farm8.staticflickr.com/7050/6855086532_14303778be_o.jpg" width="350" height="233" align="center" alt="IMG_3611"></a></td></tr>
<tr><td>Soft paint may sit deeply in the creases of the skin</td></tr></table></div>
<br>
<br>
Note however that soft paint may sit deeply in the creases of the skin. Check your skin after wiping, to see whether the baby wipe did a complete job. If embedded paint remains, washing with a nail brush and hand soap will take care of it.
<BR CLEAR=RIGHT>
</html>
!!Using a nail brush, and an oil painters’ hand soap
To clean paint out of the creases in your skin, use a soft bristle nail brush (see [[Materials]]), and a hand soap such as The Master’s Hand Soap, or Ugly Dog Painter’s Safety Soap (see [[Materials]]).
<html>
<div><table width="250" height="166" align="right">
<tr><td><a href="http://www.flickr.com/photos/76314685@N04/6855086828/lightbox/" target="_blank" title="IMG_3698 by RumaraPainting, on Flickr"><img src="http://farm8.staticflickr.com/7068/6855086828_b552a55791_o.jpg" width="350" height="233" align="center" alt="IMG_3698"></a></td></tr>
<tr><td>Cleaning using painter's hand soap and a nail brush</td></tr></table></div>
<br>
<br>
Lather up with the soap, and use the nail brush to rub out paint anywhere it has become embedded into the creases of skin.
<BR CLEAR=RIGHT>
Rinse with warm water and repeat if necessary. These soaps contain conditioning oils for brushes and will leave your skin soft after washing.
<div>
<table width="400" height="225" align="right">
<tr><td>
<iframe width="400" height="233" src="http://www.youtube.com/embed/SN5pqBSyRKA?rel=0" frameborder="0" allowfullscreen></iframe>
</td></tr>
<tr>
<td>
Hover over video for controls
</td>
</tr>
</table>
</div>
<br>
<br>
<br>
This video shows scrubbing off a paint smear with a nail brush, using Studio Products’ </html>[[Ugly Dog Painter’s Safety Soap|http://store.studioproducts.com/Ugly-Dog-PAINTERS-SAFETY-SOAP-p-16172.html]] (please see [[Author's Note]])<html>.
<BR CLEAR=RIGHT>
</html>
!Cleaning spills onto clothing
Formulate a lather with one of the brush-washing soaps on the spot in question, and use the nail brush to rub it into the paint. Rinse with water and repeat. Do this immediately if possible, before the paint begins to set up.
!Cleaning dried paint brushes
Try either [["The Masters" Brush Cleaner and Preserver|http://generalpencil.com/gpc_products_masters.html]], or Studio Products’ [[Ugly Dog Brush Soap|http://store.studioproducts.com/Ugly-Dog-Brush-Soap-p-16169.html]] (please see [[Author's Note]]). Work up a lather with the cleaner, wet the brush in water and rub it full of lather. Leave the brush to set for an hour or two, and then rinse. Repeat if necessary.
<html>
<div><table width="250" height="166" align="right">
<tr><td><a href="http://www.flickr.com/photos/76314685@N04/7001203559/lightbox/" target="_blank" title="IMG_3621 by RumaraPainting, on Flickr"><img src="http://farm7.staticflickr.com/6238/7001203559_98fe47232e_o.jpg" width="350" height="233" align="center" alt="IMG_3621"></a></td></tr>
<tr><td>Soaking paint bristles in Turpenoid Natural</td></tr></table></div>
<br>
<br>
Turpenoid Natural is an aggressive brush cleaner, and works well on old dried paint. Pour an amount into a glass jar that will not rise above the ferrule, as this cleaner will eat the paint right off of the brush handle.
<BR CLEAR=RIGHT>
</html>
Let set for an hour or two, and then clean the brush using a brush cleaner like [["The Masters" Brush Cleaner and Preserver|http://generalpencil.com/gpc_products_masters.html]]. It is important to remove Turpenoid Natural from the brush before painting again (see [[Other Mediums: Notes on using Turpenoid Natural|Other Mediums##Notes on using Turpenoid Natural]]).
!Cleaning a (glass) palette
There are many different types of palettes available, including wood, disposable paper, and plastic. We are going to work on cleaning a glass palette enclosed in a Masterson palette box (see [[Materials]]).
<html>
<div><table width="250" height="166" align="right">
<tr><td><a href="http://www.flickr.com/photos/76314685@N04/6855085842/lightbox/" target="_blank" title="IMG_3494 by RumaraPainting, on Flickr"><img src="http://farm7.staticflickr.com/6102/6855085842_dffbda203f_o.jpg" width="350" height="233" align="center" alt="IMG_3494"></a></td></tr>
<tr><td>Pushing a razor scraper across a glass palette</td></tr></table></div>
<br>
<br>
To clean the paint smears and lumps, and pools of mediums off of the glass at the end of the work session, use a razor scraper (see </html>[[Materials]]<html>). Press firmly with the blade and push it away from you across the glass, using it like a snowplow.
<BR CLEAR=RIGHT>
</html>
When the passage of the blade across the glass leaves streaks of paint, it may be time to change blades.
If dry paint remains on the glass, pour on a little oil and wipe it around with a folded blue towel. Try again with the blade.
If the paint remnants are still firmly stuck onto the glass, use some Green Turpenoid, just enough to moisten the dry paint. Let set for an hour or so. Return and scrape clean. Be sure to wipe off all of the Green Turpenoid from the glass, and from the scraper blade, in order to avoid its becoming an ingredient in the paint film (see [[Other Mediums: Notes on using Turpenoid Natural|Other Mediums##Notes on using Turpenoid Natural]]).
<<tiddler HideTiddlerTags>>
Background: #FFF
Foreground: #000
PrimaryPale: #8cf
PrimaryLight: #18f
PrimaryMid: #04b
PrimaryDark: #014
SecondaryPale: #ffc
SecondaryLight: #fe8
SecondaryMid: #db4
SecondaryDark: #841
TertiaryPale: #eee
TertiaryLight: #ccc
TertiaryMid: #999
TertiaryDark: #666
Error: #f88
(''//Internet Explorer//'' users: the Table of Contents will not function as links. Please read [[Author's Note]].)
<<showtoc>>
!Introduction
Sometimes a colored ground is preferred over white. Such a ground may serve as an intermediary color that shows through thin or sketchy paint applications and becomes a part of the visual effect of the final painting. Such grounds may be dull or brightly colored, transparent or opaque, depending on the effect desired.
!Opaque color
Colored grounds that do not show the reflective white of a white ground underneath, and that cover any initial drawing, can be created in several ways.
!!Note: oil over acrylic, not acrylic over oil
An acrylic coating does not have the flexibility of an oil film. The rule of “flexible over inflexible” prohibits acrylic grounds or paints from being applied to create a secure layer over an existing oil coating. Further, acrylic grounds are created with a mechanical tooth that will grab a subsequent oil layer. By contrast, an oil film has a slick and slippery surface that does not allow for proper adherence of a subsequent acrylic layer.
DO NOT COVER AN OLD OIL PAINTING WITH ACRYLIC GESSO.
DO NOT PAINT IN ACRYLICS OVER AN EXISTING OIL PAINTING.
DO NOT COVER AN ~OIL-PRIMED CANVAS WITH AN ACRYLIC LAYER.
!!Colored gesso
Dan Smith and others make a variety of tinted gessos (see [[Materials]]), ranging from yellow ochre, to venetian red, to black. These can be mixed. Acrylic gesso provides a rough working surface (see [[Grounds]]).
!!Tinted gesso
You can also tint your own gesso by adding acrylic tube paint to white or to colored gesso.
!!Acrylic paint
Acrylic-primed canvases that are coated with a layer of acrylic paint, and possibly thinned with an acrylic binding medium, may not achieve the desired level of tooth for proper adhesion of a subsequent layer of oil paint. Acrylic gesso is made with texture additives that provide a mechanical tooth. Acrylic paint does not have these additives, and acrylic paint applied over an acrylic gesso-coated surface may create a very smooth surface layer, depending on the thickness of the acrylic paint layer.
<html>
<div><table width="250" height="166" align="right">
<tr><td><a href="http://www.flickr.com/photos/76314685@N04/6855083798/lightbox/" target="_blank" title="IMG_2894 by RumaraPainting, on Flickr"><img src="http://farm8.staticflickr.com/7230/6855083798_cc50ceda24_o.jpg" width="350" height="233" align="center" alt="IMG_2894"></a></td></tr>
<tr><td>Painting a thin wash of acrylic color over a white pre-stretched surface</td></tr></table></div>
<br>
<br>
A thin acrylic wash over an acrylic gesso coated surface, will maintain more of the acrylic gesso’s tooth, and thus ensure more secure adhesion of a subsequent oil layer.
<BR CLEAR=RIGHT>
<div><table width="250" height="166" align="right">
<tr><td><a href="http://www.flickr.com/photos/76314685@N04/6855083872/lightbox/" target="_blank" title="IMG_2901 by RumaraPainting, on Flickr"><img src="http://farm7.staticflickr.com/6042/6855083872_eb874847b2_o.jpg" width="350" height="233" align="center" alt="IMG_2901"></a></td></tr>
<tr><td>Ingredients of the wash</td></tr></table></div>
<br>
<br>
<BR CLEAR=RIGHT>
</html>
!Transparent color: making an imprimatura
A transparent veil of color over a white ground is called an imprimatura. The brilliant reflectiveness of the white ground, showing through the transparent upper layer, can add a glowing effect.
!!Transparent colors painted and rubbed into a couch
There are many transparent and semi-transparent paints available, in every color (see [[Definitions]]). One way to make a transparent veil of color over a ground, is to make a couch with BOM (see [[Oiling Out]]), and paint into it with a transparent color. Rubbing the paint into the couch with a folded blue towel will make a nice even veil of color.
<html>
<div><table width="250" height="166" align="right">
<tr><td><a href="http://www.flickr.com/photos/76314685@N04/6855083918/lightbox/" target="_blank" title="IMG_2915 by RumaraPainting, on Flickr"><img src="http://farm8.staticflickr.com/7240/6855083918_94718e9676_o.jpg" width="350" height="233" align="center" alt="IMG_2915"></a></td></tr>
<tr><td>Applying BOM</td></tr></table></div>
<br>
<br>
This demo canvas was prepared by brushing a grid in burnt umber into an acrylic pre-primed canvas, scraping it, and allowing to dry. As a first step, we make a couch with BOM.
<BR CLEAR=RIGHT>
<div><table width="250" height="166" align="right">
<tr><td><a href="http://www.flickr.com/photos/76314685@N04/6855083966/lightbox/" target="_blank" title="IMG_2922 by RumaraPainting, on Flickr"><img src="http://farm8.staticflickr.com/7050/6855083966_c593971f89_o.jpg" width="350" height="233" align="center" alt="IMG_2922"></a></td></tr>
<tr><td>Making a couch with the BOM</td></tr></table></div>
<br>
<br>
<BR CLEAR=RIGHT>
<div><table width="250" height="166" align="right">
<tr><td><a href="http://www.flickr.com/photos/76314685@N04/6855084026/lightbox/" target="_blank" title="IMG_2928 by RumaraPainting, on Flickr"><img src="http://farm8.staticflickr.com/7260/6855084026_5a63317fa5_o.jpg" width="350" height="233" align="center" alt="IMG_2928"></a></td></tr>
<tr><td>Painting Cennini Pyrrole Red (T) into the couch</td></tr></table></div>
<br>
<br>
Next, we paint transparent Cennini Pyrrole Red into the couch. Note that the grid lines are not obscured by this transparent paint.
<BR CLEAR=RIGHT>
<div><table width="250" height="166" align="right">
<tr><td><a href="http://www.flickr.com/photos/76314685@N04/7001201087/lightbox/" target="_blank" title="IMG_2931 by RumaraPainting, on Flickr"><img src="http://farm8.staticflickr.com/7199/7001201087_628d2b05d1_o.jpg" width="350" height="233" align="center" alt="IMG_2931"></a></td></tr>
<tr><td>Rubbing the brushmarks out with a folded blue towel</td></tr></table></div>
<br>
<br>
<BR CLEAR=RIGHT>
<div><table width="250" height="166" align="right">
<tr><td><a href="http://www.flickr.com/photos/76314685@N04/7001201143/lightbox/" target="_blank" title="IMG_2933 by RumaraPainting, on Flickr"><img src="http://farm8.staticflickr.com/7249/7001201143_3639df70fc_o.jpg" width="350" height="233" align="center" alt="IMG_2933"></a></td></tr>
<tr><td>An imprimatura</td></tr></table></div>
<br>
<br>
A beautiful, rich red transparent layer - an imprimatura - has been created. The underdrawing in paint remains completely visible.
<BR CLEAR=RIGHT>
</html>
Superpencil drawings will show through lighter transparent colors such as transparent yellow, stil de grain and alizarin orange.
!!Opaque colors painted and rubbed into a couch
A small amount of opaque or semi-opaque color rubbed into a couch can create a semi-transparent layer. This layer won’t obscure a drawing done with paint.
<html>
<div><table width="250" height="166" align="right">
<tr><td><a href="http://www.flickr.com/photos/76314685@N04/6855084204/lightbox/" target="_blank" title="IMG_2935 by RumaraPainting, on Flickr"><img src="http://farm8.staticflickr.com/7251/6855084204_4da676278c_o.jpg" width="350" height="233" align="center" alt="IMG_2935"></a></td></tr>
<tr><td>A painted, scraped and dried burnt umber grid</td></tr></table></div>
<br>
<br>
This canvas was prepared by painting a grid using burnt umber into a BOM couch on an acrylic pre-primed canvas, scraping the grid, and allowing it to dry.
<BR CLEAR=RIGHT>
<div><table width="250" height="166" align="right">
<tr><td><a href="http://www.flickr.com/photos/76314685@N04/6855084262/lightbox/" target="_blank" title="IMG_2944 by RumaraPainting, on Flickr"><img src="http://farm7.staticflickr.com/6226/6855084262_c716c6e9bd_o.jpg" width="350" height="233" align="center" alt="IMG_2944"></a></td></tr>
<tr><td>Making a BOM couch on the canvas</td></tr></table></div>
<br>
<br>
First, we make a couch with BOM on the grid.
<BR CLEAR=RIGHT>
<div><table width="250" height="166" align="right">
<tr><td><a href="http://www.flickr.com/photos/76314685@N04/7001201301/lightbox/" target="_blank" title="IMG_2956 by RumaraPainting, on Flickr"><img src="http://farm8.staticflickr.com/7041/7001201301_ace648652f_o.jpg" width="350" height="233" align="center" alt="IMG_2956"></a></td></tr>
<tr><td>Painting Old Holland Cadmium Red Light (O) into the couch</td></tr></table></div>
<br>
<br>
Next, we paint Old Holland Cadmium Red Light (Opaque) onto the grid. Note that the umber drawing of the grid is somewhat obscured by this opaque paint.
<BR CLEAR=RIGHT>
<div><table width="250" height="166" align="right">
<tr><td><a href="http://www.flickr.com/photos/76314685@N04/7001201339/lightbox/" target="_blank" title="IMG_2960 by RumaraPainting, on Flickr"><img src="http://farm8.staticflickr.com/7248/7001201339_beb8e4ec60_o.jpg" width="350" height="233" align="center" alt="IMG_2960"></a></td></tr>
<tr><td>A semi-transparent veil of color above the umber drawing</td></tr></table></div>
<br>
<br>
Rubbing with a towel creates a thin layer of opaque paint that is semi-transparent.
<BR CLEAR=RIGHT>
</html>
!!Note on thinner washes
Some artists color their grounds by washing the canvas with a solution of a little paint shaken in a jar of thinner, such as turpentine or mineral spirits. Applying pigment in a thinner solution without a binder such as oil or an oil-resin combination leads to a “pastel effect.” The particles of pigment are deposited across the canvas without a binder to hold them in place. When the thinner evaporates, these particles can be lifted by a towel or a loaded brush when applying the next layer.
!!Egg yolk emulsion
Using egg to make paint (egg tempera painting) pre-dates oil painting. Egg was used as an additive to oil paint in emulsions by early masters.```Ernst van de Wetering, //Rembrandt: The Painter at Work (second revised edition)// (University of California Press, 2009), ch. IX.``` An egg yolk emulsion is a transparent layer. Made with oil and thinned with water, it is very lean and makes a good underpainting.
Egg emulsions are made with dry pigment. We choose a non-toxic dry earth pigment.
What follows is a description of the making of an egg yolk emulsion, with accompanying photos. For a video overview, scroll to the bottom of the subsection.
Assemble the following.
!!!Ingredients and equipment
<html>
<div><table width="250" height="166" align="right">
<tr><td><a href="http://www.flickr.com/photos/76314685@N04/7001201367/lightbox/" target="_blank" title="IMG_2965 by RumaraPainting, on Flickr"><img src="http://farm7.staticflickr.com/6107/7001201367_e4d9613af1_o.jpg" width="350" height="233" align="center" alt="IMG_2965"></a></td></tr>
<tr><td>Ingredients and equipment</td></tr></table></div>
</html>
*several eggs at room temperature
*linseed oil
*distilled water
*dry non-toxic earth pigment (for this demo, we choose Sinopia pigment #40391, Raw Sienna from England)
*one stretched pre-primed canvas
*Pyrex bowl
*discard bowl for egg white
*whisk
*spoon
*marble slab
*palette knife
*soft brush
*rubber spatula
(see [[Materials]])
<html>
<BR CLEAR=RIGHT>
</html>
!!!Procedure
<html>
<div><table width="250" height="166" align="right">
<tr><td><a href="http://www.flickr.com/photos/76314685@N04/6855084424/lightbox/" target="_blank" title="IMG_2970 by RumaraPainting, on Flickr"><img src="http://farm8.staticflickr.com/7279/6855084424_04d468ff13_o.jpg" width="350" height="233" align="center" alt="IMG_2970"></a></td></tr>
<tr><td>Passing the yolk from shell to shell</td></tr></table></div>
<br>
<br>
Crack the egg and pass the yolk from shell half to shell half to release most of the white. Discard the white.
<BR CLEAR=RIGHT>
<div><table width="250" height="166" align="right">
<tr><td><a href="http://www.flickr.com/photos/76314685@N04/7001201437/lightbox/" target="_blank" title="IMG_3033 by RumaraPainting, on Flickr"><img src="http://farm8.staticflickr.com/7136/7001201437_6011aa3e99_o.jpg" width="350" height="233" align="center" alt="IMG_3033"></a></td></tr>
<tr><td>Passing the yolk from palm to palm</td></tr></table></div>
<br>
<br>
Slide the yolk into a palm and pass it from palm to palm to rub off the last of the white.
<BR CLEAR=RIGHT>
<div><table width="250" height="166" align="right">
<tr><td><a href="http://www.flickr.com/photos/76314685@N04/7001201481/lightbox/" target="_blank" title="IMG_3044 by RumaraPainting, on Flickr"><img src="http://farm7.staticflickr.com/6104/7001201481_bee420ec4f_o.jpg" width="350" height="233" align="center" alt="IMG_3044"></a></td></tr>
<tr><td>Pinching the yolk sac over the bowl</td></tr></table></div>
<br>
<br>
Hold the yolk above the pyrex bowl.
<BR CLEAR=RIGHT>
<div><table width="250" height="166" align="right">
<tr><td><a href="http://www.flickr.com/photos/76314685@N04/6855084574/lightbox/" target="_blank" title="IMG_3054 by RumaraPainting, on Flickr"><img src="http://farm8.staticflickr.com/7238/6855084574_1eb8313c28_o.jpg" width="350" height="233" align="center" alt="IMG_3054"></a></td></tr>
<tr><td>The soft yolk interior drops into the bowl</td></tr></table></div>
<br>
<br>
Pinch the yolk sac, releasing its contents into the bowl.
<BR CLEAR=RIGHT>
<div><table width="250" height="166" align="right">
<tr><td><a href="http://www.flickr.com/photos/76314685@N04/6855084598/lightbox/" target="_blank" title="IMG_3064 by RumaraPainting, on Flickr"><img src="http://farm8.staticflickr.com/7210/6855084598_29e1467da7_o.jpg" width="350" height="233" align="center" alt="IMG_3064"></a></td></tr>
<tr><td>The yolk sac</td></tr></table></div>
<br>
<br>
Discard the yolk sac.
<BR CLEAR=RIGHT>
<div><table width="250" height="166" align="right">
<tr><td><a href="http://www.flickr.com/photos/76314685@N04/6855084634/lightbox/" target="_blank" title="IMG_3068 by RumaraPainting, on Flickr"><img src="http://farm8.staticflickr.com/7241/6855084634_639dcaf705_o.jpg" width="350" height="233" align="center" alt="IMG_3068"></a></td></tr>
<tr><td>Whisking the yolk</td></tr></table></div>
<br>
<br>
Whisk the yolk in the bowl.
<BR CLEAR=RIGHT>
<div><table width="250" height="166" align="right">
<tr><td><a href="http://www.flickr.com/photos/76314685@N04/6855084676/lightbox/" target="_blank" title="IMG_3125 by RumaraPainting, on Flickr"><img src="http://farm8.staticflickr.com/7262/6855084676_dd708fb790_o.jpg" width="350" height="233" align="center" alt="IMG_3125"></a></td></tr>
<tr><td>Whisking the yolk</td></tr></table></div>
<br>
<br>
Begin to slowly pour oil into the bowl, while whisking.
<BR CLEAR=RIGHT>
<div><table width="250" height="166" align="right">
<tr><td><a href="http://www.flickr.com/photos/76314685@N04/7001201655/lightbox/" target="_blank" title="IMG_3200 by RumaraPainting, on Flickr"><img src="http://farm8.staticflickr.com/7115/7001201655_eede27d4c5_o.jpg" width="350" height="233" align="center" alt="IMG_3200"></a></td></tr>
<tr><td>A mayonnaise-like mixture</td></tr></table></div>
<br>
<br>
Adding oil to egg in this manner makes mayonnaise. Stop when the mixture looks thick and lemony colored, and has the custard-like texture of mayonnaise.
<BR CLEAR=RIGHT>
<div><table width="250" height="166" align="right">
<tr><td><a href="http://www.flickr.com/photos/76314685@N04/6855084762/lightbox/" target="_blank" title="IMG_3223 by RumaraPainting, on Flickr"><img src="http://farm7.staticflickr.com/6109/6855084762_b031b0f2f9_o.jpg" width="350" height="233" align="center" alt="IMG_3223"></a></td></tr>
<tr><td>Mix and stir the mixture into a small pile of pigment</td></tr></table></div>
<br>
<br>
Lift a spoonful of the mix onto the marble slab. Add a spoonful of dry pigment. Mix and stir, pressing the pigment with the palette knife, to form a smooth batter-like mix.
<BR CLEAR=RIGHT>
<div><table width="250" height="166" align="right">
<tr><td><a href="http://www.flickr.com/photos/76314685@N04/6855084788/lightbox/" target="_blank" title="IMG_3244 by RumaraPainting, on Flickr"><img src="http://farm7.staticflickr.com/6045/6855084788_fdd04529d9_o.jpg" width="350" height="233" align="center" alt="IMG_3244"></a></td></tr>
<tr><td>The mixture turns satiny as the granules of pigment get incorporated</td></tr></table></div>
<br>
<br>
The mixture will turn satiny as the granules of pigment get incorporated.
<BR CLEAR=RIGHT>
<div><table width="250" height="166" align="right">
<tr><td><a href="http://www.flickr.com/photos/76314685@N04/7001201851/lightbox/" target="_blank" title="IMG_3280 by RumaraPainting, on Flickr"><img src="http://farm8.staticflickr.com/7221/7001201851_734181e2b6_o.jpg" width="350" height="233" align="center" alt="IMG_3280"></a></td></tr>
<tr><td>Adding water to the emulsion</td></tr></table></div>
<br>
<br>
To create a nice underpainting paint, thin the emulsion with some water.
<BR CLEAR=RIGHT>
<div><table width="250" height="166" align="right">
<tr><td><a href="http://www.flickr.com/photos/76314685@N04/6855084954/lightbox/" target="_blank" title="IMG_3291 by RumaraPainting, on Flickr"><img src="http://farm8.staticflickr.com/7061/6855084954_647ddf7542_o.jpg" width="350" height="233" align="center" alt="IMG_3291"></a></td></tr>
<tr><td>Combine the water and emulsion with the palette knife</td></tr></table></div>
<br>
<br>
Incorporate the water using the palette knife.
<BR CLEAR=RIGHT>
<div><table width="250" height="166" align="right">
<tr><td><a href="http://www.flickr.com/photos/76314685@N04/6855084994/lightbox/" target="_blank" title="IMG_3311 by RumaraPainting, on Flickr"><img src="http://farm8.staticflickr.com/7095/6855084994_f9f9d92394_o.jpg" width="350" height="233" align="center" alt="IMG_3311"></a></td></tr>
<tr><td>Painting the egg emulsion onto the canvas</td></tr></table></div>
<br>
<br>
Use a soft bristled brush to apply this underpainting.
<BR CLEAR=RIGHT>
<br>
This mix will keep for a day or so. The egg will soon rot and the mix will need to be discarded.
<br>
<br>
<div>
<table width="400" height="225" align="right">
<tr><td>
<iframe width="400" height="233" src="http://www.youtube.com/embed/1AYpCWKNd8M?rel=0" frameborder="0" allowfullscreen></iframe>
</td></tr>
<tr>
<td>
Hover over video for controls
</td>
</tr>
</table>
</div>
<br>
<br>
<br>
</html>This video shows making and using an egg yolk emulsion.<html>
<BR CLEAR=RIGHT>
<br>
</html>
<<tiddler HideTiddlerTags>>
config.options.chkShowQuickEdit=true;
/***
// DO NOT WANT TOGGLE BUTTON -- CUSTOMIZED LSJ (2009-11-24)
// createTiddlyButton(r, "toggle", "show/collapse table of contents",
// function() { config.macros.showtoc.toggleElement(this.nextSibling); },
// "toggleButton")
|Name|DcTableOfContentsPlugin|
|Author|[[Doug Compton|http://www.zagware.com/tw/plugins.html#DcTableOfContentsPlugin]]|
|Contributors|[[Lewcid|http://lewcid.org]], [[FND|http://devpad.tiddlyspot.com]], [[ELS|http://www.tiddlytools.com]]|
|Source|[[FND's DevPad|http://devpad.tiddlyspot.com#DcTableOfContentsPlugin]]|
|Version|0.4.1|
|~CoreVersion|2.2|
<<showtoc>>
!Description
This macro will insert a table of contents reflecting the headings that are used in a tiddler and will be automatically updated when you make changes. Each item in the table of contents can be clicked on to jump to that heading. It can be used either inside of select tiddlers or inside a system wide template.
A parameter can be used to show the table of contents of a seperate tiddler, <<showtoc tiddlerTitle>>
It will also place a link beside each header which will jump the screen to the top of the current tiddler. This will only be displayed if the current tiddler is using the <<showtoc>> macro.
The appearance of the table of contents and the link to jump to the top can be modified using CSS. An example of this is given below.
!Usage
!!Only in select tiddlers
The table of contents above is an example of how to use this macro in a tiddler. Just insert <<showtoc>> in a tiddler on a line by itself.
It can also display the table of contents of another tiddler by using the macro with a parameter, <<showtoc tiddlerTitle>>
!!On every tiddler
It can also be used in a template to have it show on every tiddler. An example ViewTemplate is shown below.
//{{{
<div class='toolbar' macro='toolbar -closeTiddler closeOthers +editTiddler permalink references jump'></div>
<div class='title' macro='view title'></div>
<div class='subtitle'>Created <span macro='view created date DD-MM-YY'></span>, updated <span macro='view modified date DD-MM-YY'></span></div>
<div class='tagging' macro='tagging'></div>
<div class='tagged' macro='tags'></div>
<div class="toc" macro='showtoc'></div>
<div class='viewer' macro='view text wikified'></div>
<div class='tagClear'></div>
//}}}
!Examples
If you had a tiddler with the following headings:
{{{
!Heading1a
!!Heading2a
!!Heading2b
!!!Heading3
!Heading1b
}}}
this table of contents would be automatically generated:
* Heading1a
** Heading2a
** Heading2b
*** Heading3
* Heading1b
!Changing how it looks
To modifiy the appearance, you can use CSS similiar to the below.
//{{{
.dcTOC ul {
color: red;
list-style-type: lower-roman;
}
.dcTOC a {
color: green;
border: none;
}
.dcTOC a:hover {
background: white;
border: solid 1px;
}
.dcTOCTop {
font-size: 2em;
color: green;
}
//}}}
!Revision History
!!v0.1.0 (2006-04-07)
* initial release
!!v0.2.0 (2006-04-10)
* added the [top] link on headings to jump to the top of the current tiddler
* appearance can now be customized using CSS
* all event handlers now return false
!!v0.3.0 (2006-04-12)
* added the ability to show the table of contents of a seperate tiddler
* fixed an error when a heading had a ~WikiLink in it
!!v0.3.5 (2007-10-16)
* updated formatter object for compatibility with TiddlyWiki v2.2 (by Lewcid)
!!v0.4.0 (2007-11-14)
* added toggle button for collapsing/expanding table of contents element
* refactored documentation
!To Do
* code sanitizing/rewrite
* documentation refactoring
* use shadow tiddler for styles
!Code
***/
//{{{
version.extensions.DcTableOfContentsPlugin= {
major: 0, minor: 4, revision: 0,
type: "macro",
source: "http://devpad.tiddlyspot.com#DcTableOfContentsPlugin"
};
// Replace heading formatter with our own
for (var n=0; n<config.formatters.length; n++) {
var format = config.formatters[n];
if (format.name == 'heading') {
format.handler = function(w) {
// following two lines is the default handler
var e = createTiddlyElement(w.output, "h" + w.matchLength);
w.subWikifyTerm(e, this.termRegExp); //updated for TW 2.2+
// Only show [top] if current tiddler is using showtoc
if (w.tiddler && w.tiddler.isTOCInTiddler == 1) {
// Create a container for the default CSS values
var c = createTiddlyElement(e, "div");
c.setAttribute("style", "font-size: 0.5em; color: blue;");
// Create the link to jump to the top
createTiddlyButton(c, " [top]", "Go to top of tiddler", window.scrollToTop, "dcTOCTop", null, null);
}
}
break;
}
}
config.macros.showtoc = {
handler: function(place, macroName, params, wikifier, paramString, tiddler) {
var text = "";
var title = "";
var myTiddler = null;
// Did they pass in a tiddler?
if (params.length) {
title = params[0];
myTiddler = store.getTiddler(title);
} else {
myTiddler = tiddler;
}
if (myTiddler == null) {
wikify("ERROR: Could not find " + title, place);
return;
}
var lines = myTiddler .text.split("\n");
myTiddler.isTOCInTiddler = 1;
// Create a parent container so the TOC can be customized using CSS
var r = createTiddlyElement(place, "div", null, "dcTOC");
// create toggle button
// DO NOT WANT TOGGLE BUTTON -- CUSTOMIZED LSJ (2009-11-24)
// createTiddlyButton(r, "toggle", "show/collapse table of contents",
// function() { config.macros.showtoc.toggleElement(this.nextSibling); },
// "toggleButton")
// Create a container so the TOC can be customized using CSS
var c = createTiddlyElement(r, "div");
if (lines != null) {
for (var x=0; x<lines.length; x++) {
var line = lines[x];
if (line.substr(0,1) == "!") {
// Find first non ! char
for (var i=0; i<line.length; i++) {
if (line.substr(i, 1) != "!") {
break;
}
}
var desc = line.substring(i);
// Remove WikiLinks
desc = desc.replace(/\[\[/g, "");
desc = desc.replace(/\]\]/g, "");
text += line.substr(0, i).replace(/[!]/g, '*');
text += '<html><a href="javascript:;" onClick="window.scrollToHeading(\'' + title + '\', \'' + desc+ '\', event)">' + desc+ '</a></html>\n';
}
}
}
wikify(text, c);
}
}
config.macros.showtoc.toggleElement = function(e) {
if(e) {
if(e.style.display != "none") {
e.style.display = "none";
} else {
e.style.display = "";
}
}
};
window.scrollToTop = function(evt) {
if (! evt)
var evt = window.event;
var target = resolveTarget(evt);
var tiddler = story.findContainingTiddler(target);
if (! tiddler)
return false;
window.scrollTo(0, ensureVisible(tiddler));
return false;
};
window.scrollToHeading = function(title, anchorName, evt) {
var tiddler = null;
if (! evt)
var evt = window.event;
if (title) {
story.displayTiddler(store.getTiddler(title), title, null, false);
tiddler = document.getElementById(story.idPrefix + title);
} else {
var target = resolveTarget(evt);
tiddler = story.findContainingTiddler(target);
}
if (tiddler == null)
return false;
var children1 = tiddler.getElementsByTagName("h1");
var children2 = tiddler.getElementsByTagName("h2");
var children3 = tiddler.getElementsByTagName("h3");
var children4 = tiddler.getElementsByTagName("h4");
var children5 = tiddler.getElementsByTagName("h5");
var children = new Array();
children = children.concat(children1, children2, children3, children4, children5);
for (var i = 0; i < children.length; i++) {
for (var j = 0; j < children[i].length; j++) {
var heading = children[i][j].innerHTML;
// Remove all HTML tags
while (heading.indexOf("<") >= 0) {
heading = heading.substring(0, heading.indexOf("<")) + heading.substring(heading.indexOf(">") + 1);
}
// Cut off the code added in showtoc for TOP
heading = heading.substr(0, heading.length-6);
if (heading == anchorName) {
var y = findPosY(children[i][j]);
window.scrollTo(0,y);
return false;
}
}
}
return false
};
//}}}
This tutorial is dedicated to Eric Angeloch, a wonderful professional artist, teacher, school administrator, and my friend and sometime career mentor. Eric lives with a permanent disability as a result of years of overexposure to toxic art materials.
<<tiddler HideTiddlerTags>>
(''//Internet Explorer//'' users: the Table of Contents will not function as links. Please read [[Author's Note]].)
<<showtoc>>
A number of good definitions exist in references. Definitions below are properly footnoted.
!Dead color
"Originally, a term for monochrome underpainting mostly in greys or browns; subsequently the term was used more generally for different types of underpainting."```Ernst van de Wetering, //Rembrandt: The Painter at Work (second revised edition)// (University of California Press, 2009), 322.```
!Drying oils
Vegetable oils that solidify on exposure to light and air to form a tough, durable, nonshrinking, nonspongy and insoluble film, that will however maintain a level of flexibility.```Ralph Mayer, //The Artist’s Handbook of Materials and Techniques: Fifth Edition, Revised and Updated// (Viking Adult, 1985), 465.``` At the molecular level, long chain-shaped molecules combine with oxygen to form a net in an irreversible reaction called polymerization.
!Earth pigments
Pigments ground from natural earths. These include the umbers, siennas, ochres, and “earth” pigments, such as green earth.
!Emulsion
"A suspension of a liquid in another with which it is not miscible e.g. water dispersed in oil. To make an emulsion stable, an emulsifier, or emulsifying agent is required which will from a film round minute globules and prevent them coalescing."```Wetering, 322.```
!Ferrule
<html>
<div><table width="250" height="166" align="right">
<tr><td><a href="http://www.flickr.com/photos/76314685@N04/6855087176/lightbox/" target="_blank" title="IMG_3751 by RumaraPainting, on Flickr"><img src="http://farm8.staticflickr.com/7077/6855087176_3f6d674433_o.jpg" width="350" height="233" align="center" alt="IMG_3751"></a></td></tr>
<tr><td>a paintbrush end, showing the ferrule</td></tr></table></div>
The metal ring binding the bristles of a paintbrush to its handle.
<BR CLEAR=RIGHT>
</html>
!Glazes
"Glazes are simply the binding agents which, with pigment, compose paint, but they are used to make a paint thin and strong enough to permit the artist to brush or rub a //veil// of color onto the surface. Diluting a paint reduces its binding strength, but adding a glaze formula rich in resins enables the artist to follow the traditional procedure of painting fat over lean. Titian was devoted to the beauties of glazes and favored 'thirty or forty.'"```Robert Massey, //Formulas for Painters// (~Watson-Guptill, 1967), 17.```
!Grisaille
Monochrome painting in shades of gray or brown, used as an underpainting
!Grounds
"Grounds are layers, or coats, which are applied to a support to provide a desirable color and surface upon which to paint. Traditionally, most grounds are white (white lead, gesso, etc.) to offer the brightest reflecting surface for the light to act upon. This reflection of light enhances the deep, jewel-like colors produced by applying layers of glazes over the white ground. But many great masters colored their grounds, so it does not follow that the pure white ground is always the best."```Massey, 16.```
!Impasto
"Thick, heavy painting; usually oil painting composed of pronounced bristle-brush strokes or palette-knife applications, which stand out in relief and are plainly apparent to the spectator."```Mayer, 644.```
!Imprimatura
"A veil or thin glaze of color applied to a ground as a preliminary coating."```Mayer, 645.``` "It is usually transparent and therefore preserves the white reflecting power of the ground."```Massey, 17.```
!Inorganic pigments
The inorganic pigments are ground from metals. Examples include chrome (yellow, orange, green), cadmium (yellow, orange, red, green), cobalt (yellow, green, blue), manganese (violet), lead (different forms of lead make flake, Flemish and Cremnitz white; Naples yellow, and the jaune brilliants), mercury (natural vermilion is mercuric sulfide), nickel (yellows), zinc (white), and iron (oxides).
!Medium
"Medium includes all combinations of ingredients suitable for adding to or combining with paint. Generally, a painting medium changes the consistency or make-up of a paint, rendering it more convenient for brushing or applying, or more suitable for the artist’s particular technique, which may require thicker or thinner paint, faster or slower drying, etc."```Massey, 17./%10%/```
The medium can also be the substance used to produce a work of art, as in: “the medium the sculptor chose was marble.”
!(Modern) organic pigments
A collection of synthetic pigments created in laboratory settings beginning in the 19th century. They usually have long complex chemical names, such as [[phthalocyanine|http://en.wikipedia.org/wiki/Phthalocyanine]] (blue or green), [[quinacridone|http://en.wikipedia.org/wiki/Quinacridone]] (red, maroon, brown), [[pyrrole|http://en.wikipedia.org/wiki/Pyrrole]] (red, ruby), arilyde and diarylide (yellow), benzimidazolone (orange), [[perylene|http://en.wikipedia.org/wiki/Perylene]] (crimson), dioxazine (violet), [[anthraquinone|http://en.wikipedia.org/wiki/Anthraquinone]] (blue or red), [[indanthrone|http://en.wikipedia.org/wiki/Indanthrone_blue]] (blue), [[alizarin|http://en.wikipedia.org/wiki/Alizarin]] (yellow, orange, crimson). Paints made from these pigments tend to be transparent, and to have amazing tinting strength.
!Oiling out
Oiling out is the practice of creating a thin sheen of oil (or of oily medium), over a dry layer in order to facilitate the variety of effects possible when painting wet into wet.
!Paint film
The paint film is the coating over the substrate, which composes the painting. It has a laminate structure made up of layers of ground, paint, paint with medium, glaze coatings, varnish, and so on (see [[Introduction]] for a diagram of the cross section).
!Pentimento
Linseed oil based paints become more transparent with age. A re-appearing form that was originally painted over by the artist is called a pentimento (plural: pentimenti). (Wikipedia has a [[nice article|http://en.wikipedia.org/wiki/Pentimento]] on this phenomenon.)
!Pinceliere
"A container filled with oil to prevent brushes from drying out."```Wetering, 323.```
!Polymerization
"A chemical change in which individual molecules of a compounds (monomer) are combined and rearranged as new, long chain molecules of high molecular weight (the polymer)."```Wetering, 323./%20%/```
!Primer
"The white ground or coating applied over a coat of size to a surface to prepare it for painting... This provides a white base and stable structure, and gives suitable texture and absorbency on which to paint."```Wetering, 323./%30%/``` (in this tutorial, ground and primer are used interchangeably)
!Resins
<html>
<div><table width="250" height="166" align="right">
<tr><td><a href="http://www.flickr.com/photos/76314685@N04/6855082994/lightbox/" target="_blank" title="IMG_2562 by RumaraPainting, on Flickr"><img src="http://farm7.staticflickr.com/6237/6855082994_29b54047b7_o.jpg" width="350" height="233" align="center" alt="IMG_2562"></a></td></tr>
<tr><td>Damar resin lump</td></tr></table></div>
</html>Resins are solid or semi-solid viscous substances exuded by trees. Mastic is a resin obtained from the pistachia lentiscus tree, a tree which grows in Meditteranean regions. Damar is a soft resin gathered from the forest trees Shorea and Hopea which grow in Malaya, Borneo, Java and Sumatra.```Mayer, 221.``` Sandarac is a resin that collected from the Calitris quadrivalis tree in North Africa.```Mayer, 225.``` Copal and amber are examples of “fossil resins”, hardened resins collected from long dead trees. Frankincense and juniper gum were also used for painting in the past.```Donald C. Fels Jr., //Lost Secrets of Flemish Painting, Revised Edition 2004// (ISBN 09716500-0-4), 18.```<html>
<BR CLEAR=RIGHT>
</html>
!Oleoresins
<html>
<div><table width="250" height="166" align="right">
<tr><td><a href="http://www.flickr.com/photos/76314685@N04/6855083204/lightbox/" target="_blank" title="IMG_2680 by RumaraPainting, on Flickr"><img src="http://farm8.staticflickr.com/7180/6855083204_b4703ba6d4_o.jpg" width="350" height="233" align="center" alt="IMG_2680"></a></td></tr>
<tr><td>Canada balsam</td></tr></table></div>
</html>Oleoresins are softer exudations from living trees, which are characteristically thick and viscous liquids. Canada balsam is the oleoresin obtained from the balsam fir tree which grows in North America. Larch balsam is the oleoresin obtained from the European larch tree, and is used to make Venice (Venetian) turpentine. Oleoresins are sometimes referred to as turpentines. "Larch balsam" is used interchangeably with "larch turpentine". Strassburg turpentine is another balsam traditionally used for painting.```Fels, 17.```<html>
<BR CLEAR=RIGHT>
</html>
!Substrate
The primary or underlying material on which other materials (coating, paint or treatment) are applied.
!Tinting strength
<html>
<div><table width="250" height="166" align="right">
<tr><td><a href="http://www.flickr.com/photos/76314685@N04/7001198947/lightbox/" target="_blank" title="IMG_2308 by RumaraPainting, on Flickr"><img src="http://farm8.staticflickr.com/7253/7001198947_ee9f1e5621_o.jpg" width="350" height="233" align="center" alt="IMG_2308"></a></td></tr>
<tr><td>Cennini Cobalt Violet Deep, Winsor & Newton Soft Mixing White, Williamsburg Egyptian Violet</td></tr></table></div>
The tinting strength of a particular paint color is its power to color another. This can be measured by adding colored paint to white. In this demonstration of tinting strength, note how a tiny addition of Egyptian Violet (made from dioxazine) darkens the white paint. Cobalt Violet has a much weaker tinting strength, and therefore much less effect on the white.
<BR CLEAR=RIGHT>
</html>
!Tooth
"A degree of close, almost microscopic granular roughness of surface in the ground or under painting."```Mayer, 473.``` Heavy, impasto strokes can have a surface texture which is slick and without tooth. Tooth on a smooth surface can be achieved through abrading the surface with pumice powder, sandpaper or Scotch-brite (see [[Alkyds: Increasing surface area in order to create a mechanical bond|Alkyds##Increasing surface area in order to create a mechanical bond]]).
!Transparent paint
<html>
<div><table width="250" height="166" align="right">
<tr><td><a href="http://www.flickr.com/photos/76314685@N04/6855082888/lightbox/" target="_blank" title="IMG_2555 by RumaraPainting, on Flickr"><img src="http://farm7.staticflickr.com/6113/6855082888_daf133fb29_o.jpg" width="350" height="233" align="center" alt="IMG_2555"></a></td></tr>
<tr><td>Old Holland cadmium yellow extra deep (Opaque) (left); Williamsburg alizarin orange (Transparent) (right); superpencil drawing</td></tr></table></div>
Transparent paint allows light to pass through it and shows an image from the layer underneath, quite clearly. A transparent tube pigment that is painted quite thickly, can however obscure the layer below. To achieve the transparent effect, spread the transparent paint thinly or apply it into a glaze medium. ''Opaque paint'' will obscure the image below it.
<BR CLEAR=RIGHT>
</html>
Manufacturer’s websites contain information on the transparency of different pigments. Paints are rated:
<html>
<a href="http://www.flickr.com/photos/76314685@N04/7004015321/lightbox/" target="_blank" title="RGP_transparencyratingsbox by RumaraPainting, on Flickr"><img src="http://farm8.staticflickr.com/7080/7004015321_850d411951_o.jpg" width="170" height="101" alt="RGP_transparencyratingsbox"></a>
</html>
(Source for icons: [[Winsor & Newton|http://www.winsornewton.com/main.aspx?PageID=32#CB8]]; manufacturer icons vary slightly.)
For example, Williamsburg has a list of [[Williamsburg Yellow Oil Colors|http://www.williamsburgoilpaint.bizland.com/OilColors/Yellowoils.htm]]. Each is marked with a symbol denoting its level of transparency.
Here is the [[Winsor & Newton Colour Chart|http://www.winsornewton.com/products.aspx?PageID=81]] for Artists' Oil Colour, their artist-grade paints. Click on each paint color in turn to see information on that color, including its transparency rating.
Colors on the [[Old Holland color chart|http://www.oldholland.com/pages/english/color_oil.html]] that are transparent have “LAKE” in their name.
!Underpainting
"Underpainting is the first layer of a colored design which is intended either to show through a subsequent layer of paint or to alter the colors applied over it. For example, where the painter intends to have a luminous green in his finished picture, he can use a bright yellow underpaint and then glaze over this with a blue. A sketch or drawing on the ground does not constitute an underpainting."```Massey, 17./%40%/```
!Verdaccio
"Green, flat underpainting used under flesh tones in early Italian painting."```Wetering, 325.```
(For an interesting discussion of this technique, see the following [[article on underpainting|http://www.wetcanvas.com/Articles2/3261/292/]] in wetcanvas.com.)
!Viscosity
"The resistance of a liquid to flow. Thick, heavy liquids have a high viscosity."```Wetering, 325./%50%/```
<<tiddler HideTiddlerTags>>
(''//Internet Explorer//'' users: the Table of Contents will not function as links. Please read [[Author's Note]].)
<<showtoc>>
!Note: the pentimento effect
Linseed oil becomes more transparent with time. Old master paintings in museums sometimes have portions of the drawing that was done on the ground, visible through the paint. This is a similar phenomenon to the shadowy body parts that show through in old paintings. The artist may have first placed a hand, for example, slightly left of the position of the hand in the final version of the painting. The original hand will reappear as subsequent layers turn translucent over generations.
If you suspect that your painting will be enjoyed centuries down the line, keep in mind that your drawing, no matter the medium used, may become part of that visual experience.
!Drawing with paint
(see [[Oiling out: Painting into a couch|Oiling Out##Painting into a couch]])
!Drawing without paint
''//The superpencil//''
Drawing onto canvas before painting is possible, but it is important to choose a drawing material that won’t bleed through subsequent paint layers. Molecules of graphite have a thin disc-like shape that slips and slides upwards easily through subsequent layers as the paint dries. Normal graphite pencils therefore are not a good choice.
The superpencil (see [[Materials]]) was invented for carpenters who need to mark up wallboard and wood that will subsequently be painted. It is easy to draw with this tool on acrylic primed canvases. Oil-primed surfaces that have a nice gentle matte finish will take the pencil well. Drawing with the superpencil does not work on an egg emulsion surface, but a superpencil drawing shows through an egg emulsion coating extremely well.
Artists may wish to create a transparent color layer over the superpencil drawing, that will maintain clarity of the drawing. Superpencil marks will show through a transparent, light colored film created by painting transparent paints into a couch (see [[Colored Grounds]]). Superpencil marks do not show particularly well through darker transparent colors like blues and violets. Experimentation will give a good feel for what paint and how much will obscure superpencil markings.
<html>
<div><table width="250" height="166" align="right">
<tr><td><a href="http://www.flickr.com/photos/76314685@N04/6855083626/lightbox/" target="_blank" title="IMG_2854 by RumaraPainting, on Flickr"><img src="http://farm7.staticflickr.com/6102/6855083626_fb1556331b_o.jpg" width="350" height="233" align="center" alt="IMG_2854"></a></td></tr>
<tr><td>Painting into a superpencil drawing</td></tr></table></div>
<br>
<br>
Superpencil drawings are useful for painting with opaque paint into a drawing outline.
<BR CLEAR=RIGHT>
<br>
Keep in mind that not every opaque paint covers a superpencil mark. Light colors like white, even thickly applied impasto white, do not necessarily cover such marks.
<br>
<br>
<div><table width="250" height="166" align="right">
<tr><td><a href="http://www.flickr.com/photos/76314685@N04/7001200731/lightbox/" target="_blank" title="IMG_2881 by RumaraPainting, on Flickr"><img src="http://farm8.staticflickr.com/7062/7001200731_ac8ae489a6_o.jpg" width="350" height="233" align="center" alt="IMG_2881"></a></td></tr>
<tr><td>Sharpening the superpencil tip with a utility knife</td></tr></table></div>
<br>
<br>
To use the superpencil, carve it to a point with a utility knife. Keep the knife handy as the pencil will dull quickly against an abrasive surface like a canvas covered with acrylic gesso. Every few minutes, check the point and sharpen further if necessary.
<BR CLEAR=RIGHT>
</html>
''//Sanguine//''
Sanguine is the red chalk that is visible sometimes in old master paintings, used as a drawing under the paint. Sanguine will stay fixed underneath a layer of paint. Beautiful drawings are possible with sanguine.
Oiling out over a sanguine drawing, including the rubbing over with a paper towel step, will erase some of the drawing. Some of the sanguine will smear into the towel and out around into the couch, and dry fixed into that layer.
<html>
<div><table width="250" height="166" align="right">
<tr><td><a href="http://www.flickr.com/photos/76314685@N04/7001200685/lightbox/" target="_blank" title="IMG_2860 by RumaraPainting, on Flickr"><img src="http://farm8.staticflickr.com/7058/7001200685_1e21359948_o.jpg" width="350" height="233" align="center" alt="IMG_2860"></a></td></tr>
<tr><td>Sanguine chunks</td></tr></table></div>
<br>
<br>
Natural sanguine chalk arrives in chunks. To draw with sanguine, sharpen a chunk of chalk with a utility knife to a point and draw. Keep sharpening as necessary. You can use a charcoal holder to hold an elongated piece.
<BR CLEAR=RIGHT>
</html>
<<tiddler HideTiddlerTags>>
/***
|''Name:''|DropDownMenuPlugin|
|''Description:''|Create dropdown menus from unordered lists|
|''Author:''|Saq Imtiaz ( lewcid@gmail.com )|
|''Source:''|http://tw.lewcid.org/#DropDownMenuPlugin|
|''Code Repository:''|http://tw.lewcid.org/svn/plugins|
|''Version:''|2.1|
|''Date:''|11/04/2007|
|''License:''|[[Creative Commons Attribution-ShareAlike 3.0 License|http://creativecommons.org/licenses/by-sa/3.0/]]|
|''~CoreVersion:''|2.2.5|
!!Usage:
* create a two-level unordered list using wiki syntax, and place {{{<<dropMenu>>}}} on the line after it.
* to create a vertical menu use {{{<<dropMenu vertical>>}}} instead.
* to assign custom classes to the list, just pass them as parameters to the macro {{{<<dropMenu className1 className2 className3>>}}}
!!Features:
*Supports just a single level of drop-downs, as anything more usually provides a poor experience for the user.
* Very light weight, about 1.5kb of JavaScript and 4kb of CSS.
* Comes with two built in css 'themes', the default horizontal and vertical.
!!Customizing:
* to customize the appearance of the menu's, you can either add a custom class as described above or, you can edit the CSS via the StyleSheetDropDownMenu shadow tiddler.
!!Examples:
* [[DropDownMenuDemo]]
***/
// /%
//!BEGIN-PLUGIN-CODE
config.macros.dropMenu={
dropdownchar: "\u25bc",
handler : function(place,macroName,params,wikifier,paramString,tiddler){
list = findRelated(place.lastChild,"UL","tagName","previousSibling");
if (!list)
return;
addClass(list,"suckerfish");
if (params.length){
addClass(list,paramString);
}
this.fixLinks(list);
},
fixLinks : function(el){
var els = el.getElementsByTagName("li");
for(var i = 0; i < els.length; i++) {
if(els[i].getElementsByTagName("ul").length>0){
var link = findRelated(els[i].firstChild,"A","tagName","nextSibling");
if(!link){
var ih = els[i].firstChild.data;
els[i].removeChild(els[i].firstChild);
var d = createTiddlyElement(null,"a",null,null,ih+this.dropdownchar,{href:"javascript:;"});
els[i].insertBefore(d,els[i].firstChild);
}
else{
link.firstChild.data = link.firstChild.data + this.dropdownchar;
removeClass(link,"tiddlyLinkNonExisting");
}
}
els[i].onmouseover = function() {
addClass(this, "sfhover");
};
els[i].onmouseout = function() {
removeClass(this, "sfhover");
};
}
}
};
config.shadowTiddlers["StyleSheetDropDownMenuPlugin"] =
"/*{{{*/\n"+
"/***** LAYOUT STYLES - DO NOT EDIT! *****/\n"+
"ul.suckerfish, ul.suckerfish ul {\n"+
" margin: 0;\n"+
" padding: 0;\n"+
" list-style: none;\n"+
" line-height:1.4em;\n"+
"}\n\n"+
"ul.suckerfish li {\n"+
" display: inline-block; \n"+
" display: block;\n"+
" float: left; \n"+
"}\n\n"+
"ul.suckerfish li ul {\n"+
" position: absolute;\n"+
" left: -999em;\n"+
"}\n\n"+
"ul.suckerfish li:hover ul, ul.suckerfish li.sfhover ul {\n"+
" left: auto;\n"+
"}\n\n"+
"ul.suckerfish ul li {\n"+
" float: none;\n"+
" border-right: 0;\n"+
" border-left:0;\n"+
"}\n\n"+
"ul.suckerfish a, ul.suckerfish a:hover {\n"+
" display: block;\n"+
"}\n\n"+
"ul.suckerfish li a.tiddlyLink, ul.suckerfish li a, #mainMenu ul.suckerfish li a {font-weight:bold;}\n"+
"/**** END LAYOUT STYLES *****/\n"+
"\n\n"+
"/**** COLORS AND APPEARANCE - DEFAULT *****/\n"+
"ul.suckerfish li a {\n"+
" padding: 0.5em 1.5em;\n"+
" color: #FFF;\n"+
" background: #0066aa;\n"+
" border-bottom: 0;\n"+
" font-weight:bold;\n"+
"}\n\n"+
"ul.suckerfish li:hover a, ul.suckerfish li.sfhover a{\n"+
" background: #00558F;\n"+
"}\n\n"+
"ul.suckerfish li:hover ul a, ul.suckerfish li.sfhover ul a{\n"+
" color: #000;\n"+
" background: #eff3fa;\n"+
" border-top:1px solid #FFF;\n"+
"}\n\n"+
"ul.suckerfish ul li a:hover {\n"+
" background: #e0e8f5;\n"+
"}\n\n"+
"ul.suckerfish li a{\n"+
" width:9em;\n"+
"}\n\n"+
"ul.suckerfish ul li a, ul.suckerfish ul li a:hover{\n"+
" display:inline-block;\n"+
" width:9em;\n"+
"}\n\n"+
"ul.suckerfish li {\n"+
" border-left: 1px solid #00558F;\n"+
"}\n"+
"/***** END COLORS AND APPEARANCE - DEFAULT *****/\n"+
"\n\n"+
"/***** LAYOUT AND APPEARANCE: VERTICAL *****/\n"+
"ul.suckerfish.vertical li{\n"+
" width:10em;\n"+
" border-left: 0px solid #00558f;\n"+
"}\n\n"+
"ul.suckerfish.vertical ul li, ul.suckerfish.vertical li a, ul.suckerfish.vertical li:hover a, ul.suckerfish.vertical li.sfhover a {\n"+
" border-left: 0.8em solid #00558f;\n"+
"}\n\n"+
"ul.suckerfish.vertical li a, ul.suckerfish.vertical li:hover a, ul.suckerfish.vertical li.sfhover a, ul.suckerfish.vertical li.sfhover a:hover{\n"+
" width:8em;\n"+
"}\n\n"+
"ul.suckerfish.vertical {\n"+
" width:10em; text-align:left;\n"+
" float:left;\n"+
"}\n\n"+
"ul.suckerfish.vertical li a {\n"+
" padding: 0.5em 1em 0.5em 1em;\n"+
" border-top:1px solid #fff;\n"+
"}\n\n"+
"ul.suckerfish.vertical, ul.suckerfish.vertical ul {\n"+
" line-height:1.4em;\n"+
"}\n\n"+
"ul.suckerfish.vertical li:hover ul, ul.suckerfish.vertical li.sfhover ul { \n"+
" margin: -2.4em 0 0 10.9em;\n"+
"}\n\n"+
"ul.suckerfish.vertical li:hover ul li a, ul.suckerfish.vertical li.sfhover ul li a {\n"+
" border: 0px solid #FFF;\n"+
"}\n\n"+
"ul.suckerfish.vertical li:hover a, ul.suckerfish.vertical li.sfhover a{\n"+
" padding-right:1.1em;\n"+
"}\n\n"+
"ul.suckerfish.vertical li:hover ul li, ul.suckerfish.vertical li.sfhover ul li {\n"+
" border-bottom:1px solid #fff;\n"+
"}\n\n"+
"/***** END LAYOUT AND APPEARANCE: VERTICAL *****/\n"+
"/*}}}*/";
store.addNotification("StyleSheetDropDownMenuPlugin",refreshStyles);
//!END-PLUGIN-CODE
// %/
(''//Internet Explorer//'' users: the Table of Contents will not function as links. Please read [[Author's Note]].)
<<showtoc>>
!Drying oil chemistry
Drying oils are vegetable oils that transform chemically on exposure to air and light, as they dry. The molecules of the oil, which are chain-shaped (monomers), bond with oxygen from the air and join up with each other to form a closed net. This process, during which monomers combine to form polymers, is called polymerization. The solid resulting is a tough, durable, non-shrinking, non-spongy and flexible film. Essential to this process are the fatty acids in the oils, linolenic and linoleic acids.
A drying oil-based paint layer painted on top of another will bond securely. Linseed and other drying oils are not strong adhesives, but do have adhesive properties that get activated during drying. During the viscous stage that occurs when the drying oil is no longer fully liquid, but is not yet a solid, drying oils do have sufficient adhesive properties to bond strongly to the paint layer or ground below.
Drying oils cannot be brought back to their original state by soaking in chemical thinners. The chemical transformation undergone during drying is irreversible.
!Proper drying and curing environment
An oil paint film dries in days or weeks depending on thickness of paint, but may need up to six months to fully cure. During this time, the painting needs to be left alone in a comfortable environment. Room temperature, with plenty of daylight but not direct sunlight, and comfortable humidity, is the best. Direct sunlight may damage the oils and the drying process. Too dry an environment, too hot an environment, or too wet an environment may also cause problems during the curing process. A good rule of thumb is if you are comfortable as you go about your day, so is the painting, in the location where it is drying.
!Do not freeze your paint
Oil dries slower at a lower temperature. Artists who cool their palette by keeping it in a refrigerator in between work sessions, will find that the paint stays soft longer. However, do not store the palette in a freezer. Oils contain some quantity of water, and freezing a paint made with a drying oil binder, will break some of the hydrocarbon bonds, reducing the ability of the molecules to form a complete net during polymerization. The oil in the paint will still dry, but may form a weaker film.
!Paint with fresh paint
The adhesive properties of drying oils get activated between the liquid and solid states, when the oil is undergoing the chemical transformation called polymerization. It is important to apply fresh paint to the substrate, paint in which the binding oil is still fully fluid, so that the full advantage of the adhesive stage may be applied to the substrate and not to the palette. For proper adhesion between layers, use soft, fresh paint that has not thickened noticeably from its creamy state.
It is also important to avoid painting small clumps of dry paint into the fresh paint layer. Linseed oil-based paints dry by forming a skin first. Dipping a brush into a skinned over, partly dry paint blob may pick up dry clumps of paint. Clumps of dry paint in an otherwise wet layer will inhibit the formation of an even net of bonded molecules during the polymerization process.
As an analogy, imagine mixing broken up (baked) cookie pieces into a cookie batter. Cookies that were then baked from this peculiar mix would have soft portions that were once-cooked, and hard lumps that were the twice-cooked mixed in cookie bits. The characteristic soft, chewy texture with perhaps a crunch from browned edges and bottom, would not happen for this cookie. The drying oil’s “cooking” process is its polymerization. Clumps of polymerized paint, mixed in with soft paint formed of molecules that are still monomers, will together polymerize to form a less well-constructed, weaker film.
!Top three drying oils, a comparison
The following three vegetable oils are all good drying oils for oil painting, but need to be chosen according to purpose.
*Linseed oil dries to make the strongest paint film. However, it also dries to form the darkest paint film. This is the best binder for colored paints but not necessarily for very light paints or whites.
*High-oleic safflower oil (containing a high percentage of linolenic and linoleic acids) is the lightest of the three oils, but it is a bit thinner than linseed oil and doesn’t have the same grab. It will form a slightly weaker film. It also takes slightly longer to dry.
*Walnut oil is the slowest drying of the three. It forms the weakest paint film of the three. But it has a slippery texture that gives paint and mediums good handling qualities.
Poppy oil is not a drying oil. An oil film made from this oil will never completely cure, but remains permanently in a gel-like state. Poppy oil is nonetheless used for making some paints due to its lightness and clarity, which are unmatched by the above drying oils.
<<tiddler HideTiddlerTags>>
<!--{{{-->
<div class='toolbar' macro='toolbar [[ToolbarCommands::EditToolbar]]'></div>
<div class='title' macro='view title'></div>
<div class='editor' macro='edit title'></div>
<div macro='annotations'></div>
<div macro='tiddler QuickEditToolbar'></div>
<span class='toolbar' macro='tiddler QuickEditToolbarCommand'></span>
<div class='editor' macro='edit text'></div>
<div class='editor' macro='edit tags'></div><div class='editorFooter'><span macro='message views.editor.tagPrompt'></span><span macro='tagChooser excludeLists'></span></div>
<!--}}}-->
/***
|''Name:''|FootnotesPlugin|
|''Description:''|Create automated tiddler footnotes.|
|''Author:''|Saq Imtiaz ( lewcid@gmail.com )|
|''Source:''|http://tw.lewcid.org/#FootnotesPlugin|
|''Code Repository:''|http://tw.lewcid.org/svn/plugins|
|''Version:''|2.01|
|''Date:''|10/25/07|
|''License:''|[[Creative Commons Attribution-ShareAlike 3.0 License|http://creativecommons.org/licenses/by-sa/3.0/]]|
|''~CoreVersion:''|2.2.2|
!!Usage:
*To create a footnote, just put the footnote text inside triple backticks.
*Footnotes are numbered automatically, and listed at the bottom of the tiddler.
*{{{Creating a footnote is easy. ```This is the text for my footnote```}}}
*[[Example|FootnotesDemo]]
***/
// /%
//!BEGIN-PLUGIN-CODE
config.footnotesPlugin = {
backLabel: "back",
prompt:"show footnote"
};
config.formatters.unshift( {
name: "footnotes",
match: "```",
lookaheadRegExp: /```((?:.|\n)*?)```/g,
handler: function(w)
{
this.lookaheadRegExp.lastIndex = w.matchStart;
var lookaheadMatch = this.lookaheadRegExp.exec(w.source);
if(lookaheadMatch && lookaheadMatch.index == w.matchStart )
{
var tiddler = story.findContainingTiddler(w.output);
if (!tiddler.notes)
tiddler.notes = [];
var title = tiddler.getAttribute("tiddler");
tiddler.notes.pushUnique(lookaheadMatch[1]);
var pos = tiddler.notes.indexOf(lookaheadMatch[1]) + 1;
createTiddlyButton(w.output,pos,config.footnotesPlugin.prompt,function(){var x = document.getElementById(title+"ftn"+pos);window.scrollTo(0,ensureVisible(x)+(ensureVisible(x)<findScrollY()?(findWindowHeight()-x.offsetHeight):0));return false;},"ftnlink",title+"ftnlink"+pos);
w.nextMatch = lookaheadMatch.index + lookaheadMatch[0].length;
}
}
});
old_footnotes_refreshTiddler = Story.prototype.refreshTiddler;
Story.prototype.refreshTiddler = function(title,template,force)
{
var tiddler = old_footnotes_refreshTiddler.apply(this,arguments);
if (tiddler.notes && tiddler.notes.length)
{
var holder = createTiddlyElement(null,"div",null,"footnoteholder");
var list = createTiddlyElement(holder,"ol",title+"footnoteholder");
for (var i=0; i<tiddler.notes.length; i++)
{
var ftn = createTiddlyElement(list,"li",title+"ftn"+(i+1),"footnote");
wikify(tiddler.notes[i]+" ",ftn);
createTiddlyButton(ftn,"["+config.footnotesPlugin.backLabel+"]",config.footnotesPlugin.backLabel,function(){window.scrollTo(0,ensureVisible(document.getElementById(this.parentNode.id.replace("ftn","ftnlink"))));return false;},"ftnbklink");
}
var count = tiddler.childNodes.length;
for (var j=0; j<count; j++){
if(hasClass(tiddler.childNodes[j],"viewer")){
var viewer = tiddler.childNodes[j];
}
}
viewer.appendChild(holder);
tiddler.notes = [];
}
return tiddler;
};
setStylesheet(
".tiddler a.ftnlink {vertical-align: super; font-size: 0.8em; color:red;}\n"+
".tiddler a.ftnlink:hover, .tiddler .footnoteholder a.ftnbklink:hover{color:#fff;background:red;}\n"+
".tiddler div.footnoteholder{margin:1.8em 1.0em; padding:0.1em 1.0em 0.1em 1.0em ;border-left: 1px solid #ccc;}"+
".tiddler footnoteholder ol {font-size: 0.9em; line-height: 1.2em;}\n"+
".tiddler .footnoteholder li.footnote {margin: 0 0 5px 0;}\n"+
".tiddler .footnoteholder a.ftnbklink{color:red;}\n","FootNotesStyles");
//!END-PLUGIN-CODE
// %/
/***
|Name|FramedLinksPlugin|
|Source|http://www.TiddlyTools.com/#FramedLinksPlugin|
|Version|1.1.1|
|Author|Eric Shulman|
|License|http://www.TiddlyTools.com/#LegalStatements|
|~CoreVersion|2.1|
|Type|plugin|
|Description|clicking an external link opens an IFRAME following the link instead of opening a new tab/window|
This plugin causes clicks on external links to be rendered as inline frames (~IFRAMEs) instead of opening new browser tabs/windows.
!!!!!Usage
<<<
Use standard TiddlyWiki external link syntax into your tiddler content. If {{{chkFramedLinks}}} is enabled or the tiddler is tagged with 'framedLinks' (see Configuration), then whenever you click the external link an IFRAME will be dynamically added to the content. Clicking on the link again removes the IFRAME. Hold down any modifier (shift, control, or alt) while clicking a link ''temporarily'' bypasses the IFRAME handling and use the standard link handling behavior.
<<<
!!!!!Configuration
<<<
<<option chkFramedLinks>> display inline frames for all external links
{{{<<option chkFramedLinks>>}}}
<<option chkFramedLinksTag>> display inline frames for external links in tiddlers tagged with: <<option txtFramedLinksTag>>
{{{<<option chkFramedLinksTag>> <<option txtFramedLinksTag>>}}}
IFRAME size (CSS units: %, em, px, cm, in) - width: <<option txtFrameWidth>> height: <<option txtFrameHeight>>
{{{<<option txtFrameWidth>> <<option txtFrameHeight>>}}}
<<<
!!!!!Examples
<<<
Try these links:
*http://www.TiddlyWiki.com
*http://www.TiddlyTools.com
*http://groups.google.com/group/TiddlyWiki/topics
<<<
!!!!!Revisions
<<<
2008.11.14 [1.1.1] fixed handling for external links embedded in //shadow// tiddlers
2008.09.13 [1.1.0] added support to selectively enable embedded IFRAMEs if the containing tiddler is tagged with 'framedLinks'
2007.11.29 [1.0.5] added slider animation and improved CSS handling for IFRAME height/width to maximize display area
2007.11.29 [1.0.0] initial release
<<<
!!!!!Code
***/
//{{{
version.extensions.FramedLinksPlugin= {major: 1, minor: 1, revision: 1, date: new Date(2008,11,14)};
var co=config.options; // abbreviation
if (co.chkFramedLinks==undefined) co.chkFramedLinks=false;
if (co.chkFramedLinksTag==undefined) co.chkFramedLinksTag=true;
if (co.txtFramedLinksTag==undefined) co.txtFramedLinksTag="framedLinks";
if (co.txtFrameWidth==undefined) co.txtFrameWidth="100%";
if (co.txtFrameHeight==undefined) co.txtFrameHeight="80%";
window.framedLinks_createExternalLink=createExternalLink;
window.createExternalLink=function(place,url)
{
var link=this.framedLinks_createExternalLink.apply(this,arguments);
link.onclick=function(ev) { var e=ev?ev:window.event;
var co=config.options; // abbreviation
var here=story.findContainingTiddler(this);
if (here) var tid=store.getTiddler(here.getAttribute("tiddler"));
var enabled=co.chkFramedLinks || co.chkFramedLinksTag && tid && tid.isTagged(co.txtFramedLinksTag);
if (!enabled || e.ctrlKey || e.shiftKey || e.altKey) return; // BYPASS
var p=this.parentNode;
var f=this.nextSibling?this.nextSibling.firstChild:null; // get the IFRAME... maybe...
var w=co.txtFrameWidth; if (!w || !w.length) w="100%";
var h=co.txtFrameHeight; if (!h || !h.length) h="80%";
if (h.indexOf("%")) h=(findWindowHeight()*h.replace(/%/,"")/100)+"px"; // calc height as % of window
var showing=f && f.nodeName.toUpperCase()=="IFRAME"; // does IFRAME really exist?
var stretchCell=p.nodeName.toUpperCase()=="TD" && w.indexOf("%")!=-1 && w.replace(/%/,"")>=100;
if (!showing) { // create an iframe
link.style.display="block"; // force IFRAME onto line following link
if (stretchCell) { p.setAttribute("savedWidth",p.style.width); p.style.width="100%"; } // adjust TD so IFRAME stretches
var wrapper=createTiddlyElement(null,"span"); // wrapper for slider animation
wrapper.setAttribute("url",this.href); // for async loading of frame after animation completes
var f=createTiddlyElement(wrapper,"iframe"); // create IFRAME
f.style.backgroundColor="#fff"; f.style.width=w; f.style.height=h;
p.insertBefore(wrapper,this.nextSibling);
function loadURL(wrapper) { var f=wrapper.firstChild; var url=wrapper.getAttribute("url");
var d=f.contentDocument?f.contentDocument:(f.contentWindow?f.contentWindow.document:f.document);
d.open(); d.writeln("<html>connecting to "+url+"</html>"); d.close();
try { f.src=url; } // if the iframe can't handle the href
catch(e) { alert(e.description?e.description:e.toString()); } // ... then report the error
window.scrollTo(0,ensureVisible(wrapper));
}
if (!co.chkAnimate) loadURL(wrapper);
else {
var morph=new Slider(wrapper,true);
morph.callback=loadURL;
morph.properties.push({style: 'width', start: 0, end: 100, template: '%0%'});
anim.startAnimating(morph);
}
} else { // remove iframe
link.style.display="inline"; // restore link style
if (stretchCell) p.style.width=p.getAttribute("savedWidth"); // restore previous width of TD
if (!co.chkAnimate) p.removeChild(f.parentNode);
else {
var morph=new Slider(f.parentNode,false,false,"all");
morph.properties.push({style: 'width', start: 100, end: 0, template: '%0%'});
anim.startAnimating(morph);
}
}
e.cancelBubble=true; if (e.stopPropagation) e.stopPropagation(); return false;
}
return link;
}
//}}}
(''//Internet Explorer//'' users: the Table of Contents will not function as links. Please read [[Author's Note]].)
<<showtoc>>
!Introduction
The choice of ground allows for ease of application of the first layer of paint. Ideally a ground has the proper absorbency, and a slightly matte surface with a good tooth, that will grab the first paint layer and bond to it strongly.
Most priming grounds are white. A white ground gives the artist the choice of using that bright base as a reflective surface to catch the light under subsequent layers.
!Acrylic grounds
Acrylic gesso is the norm on the pre-stretched canvases that are widely available in arts supply stores. Commercially available unprimed canvas, linen or cotton duck can be stretched by the artist and then primed with acrylic gesso, without pre-sizing the cloth. One good gesso to use is Dan Smith’s (see [[Materials]]).
!Texture of acrylic gesso
Acrylic gesso is chemically very similar to Elmer’s glue. Gesso has texture additives such as pumice and chalk however that contribute the tooth necessary for proper strong bonding to the first paint layer. Without these additives, an acrylic-primed canvas would have a slippery texture similar to the surface of a pool of dried Elmer’s, and would not bond properly with subsequent layers.
<html>
<div><table width="250" height="166" align="right">
<tr><td><a href="http://www.flickr.com/photos/76314685@N04/6855760032/lightbox/" target="_blank" title="IMG_2689_REDX by RumaraPainting, on Flickr"><img src="http://farm8.staticflickr.com/7231/6855760032_018500f43a_o.jpg" width="350" height="233" align="center" alt="IMG_2689_REDX"></a></td></tr>
<tr><td><FONT COLOR="red">DO NOT</FONT> sand down an acrylic gessoed canvas</td></tr></table></div>
<br>
<br>
<FONT COLOR="red">DO NOT</FONT> sand down an acrylic-primed canvas. Sanding would take away the texture provided by the additives, a texture that provides the necessary tooth for proper bonding.
<BR CLEAR=RIGHT>
<div><table width="250" height="166" align="right">
<tr><td><a href="http://www.flickr.com/photos/76314685@N04/7001204173/lightbox/" target="_blank" title="IMG_3749 by RumaraPainting, on Flickr"><img src="http://farm8.staticflickr.com/7083/7001204173_1cb791aba7_o.jpg" width="350" height="233" align="center" alt="IMG_3749"></a></td></tr>
<tr><td>holding a brush at a 30-45 degree angle</td></tr></table></div>
<br>
<br>
The rough texture of a surface primed with acrylic gesso wears down brushes rapidly. Rubbing a brush back and forth across such a surface is similar to rubbing a piece of wood across sandpaper. This can be turned to good advantage if one uses the brush, held consistently at a 30-45 degree angle from the canvas.
<BR CLEAR=RIGHT>
<div><table width="250" height="166" align="right">
<tr><td><a href="http://www.flickr.com/photos/76314685@N04/7001200795/lightbox/" target="_blank" title="IMG_2887 by RumaraPainting, on Flickr"><img src="http://farm8.staticflickr.com/7064/7001200795_5ed0a77370_o.jpg" width="350" height="233" align="center" alt="IMG_2887"></a></td></tr>
<tr><td>A brush worn down by angled painting of an acrylic gessoed surface</td></tr></table></div>
<br>
<br>
Repetitive motion of the brush against the textured gesso will work the bristles down to a home-made cat’s tongue shape (be sure to flip the brush periodically for even wear on both sides).
<BR CLEAR=RIGHT></html>
!Soundness of acrylic gesso
Acrylics are a relatively modern invention that have not been tested over centuries. We don’t have physical examples to demonstrate the ability of acrylic coatings to withstand atmospheric stresses over time.
One good thing is that conservators are able to replace canvas substrates with relative ease. If the canvas on which a painting was created fails, it is possible to peel the paint film off of the canvas and apply it to a different and more sound surface.
!Oil grounds
Oil grounds offer an entirely different experience of paint application, one that is respectful of brushes, and allows for more detailed effects. During the first several centuries of oil painting, oil grounds were the only grounds available.
Oil grounds must be applied to sized cloth. Sizing a cloth involves drenching it with a natural glue solution. This protective coating keeps the cloth fibers separate from the oil, which would otherwise cause the fibers to rot.
All oil grounds are made with some amount of added thinner, up to a third in volume. Commercial oil primers also contain driers and handling additives like marble dust, as well as a white pigment base. Thinner is added to oil primers for two reasons: to speed drying, and so that the ground layer will take a paint layer while maintaining the “fat over lean” principle.
The handling additives create a somewhat matte finish. Too oily of a primer will make a glossy surface that won’t grab as well. Oil will separate out from commercial oil primers that sit on the shelf for some months or longer. Such primers need to be mixed before application in order to maintain the correct balance of ingredients.
!Oil priming an acrylic primed, pre-stretched canvas
One easy way to create an oil-primed canvas is to take an inexpensive acrylic pre-primed canvas and prime it at home with a commercial oil primer. Some possible choices for oil primers are:
*Williamsburg titanium oil ground, and Williamsburg lead oil ground, both available at [[Jerry's|http://www.jerrysartarama.com/discount-art-supplies/Oil-Color-Paints-and-Mediums/Williamsburg-Oil-Paints-and-Mediums/Williamsburg-Oil-Painting-Grounds-Waxes-and-Glues.htm]]. Mix well before applying. Lead-based white primers offer a different working surface than titanium-based primers. The difference affects handling during application of the subsequent layer, and the choice is a matter of personal taste.
*[[Studio Products’ Titanium & Black Oil Primer|http://store.studioproducts.com/Titanium-Black-Oil-Primer-p-16260.html]] (please see [[Author's Note]]). Black oil is made by cooking lead in oil.
*Studio Products’ Flemish White primer (please see [[Author's Note]]), available by special order in quart size or larger, please call for details. Flemish white is a lead-based bright white. A lead ground offers a special and unique painting surface, preferred by some artists. The form of lead used to make Flemish white offers a ground that is significantly whiter than other lead grounds.
All commercially available oil primers are made with a percentage of thinners. Artists with allergies will need to wear a respirator in order to apply them (see [[Materials]]). The respirator will not address tearing and stinging of eyes. Try working outdoors. Alternative methods of obtaining an oil-primed canvases are suggested below.
Oil-primed canvases take a couple of weeks or longer to dry, and may continue to emit thinner fumes during this time. A drying space that is sealed and separate from the studio space is essential for artists with allergies.
A quick way to apply an even coat of an oil primer, which I learned in The Technical Course (see [[References]], Rob Howard) is with a sponge brush and added turpentine. Studio Products sells cosmetic grade [[triple distilled turpentine|http://store.studioproducts.com/Gum-Turpentine-TRIPLE-DISTILLED-p-16242.html]] (please see [[Author's Note]]).
<html>
<div><table width="250" height="166" align="right">
<tr><td><a href="http://www.flickr.com/photos/76314685@N04/6855083274/lightbox/" target="_blank" title="IMG_2699 by RumaraPainting, on Flickr"><img src="http://farm7.staticflickr.com/6232/6855083274_3a8a6f6fff_o.jpg" width="350" height="233" align="center" alt="IMG_2699"></a></td></tr>
<tr><td>Materials and equipment</td></tr></table></div>
<br>
<br>
Gather together the following: paper towels, can of oil primer, jar of turpentine, sponge brush (available in the paint section of Home Depot and other hardware stores), small and large spatulas, latex gloves, and your acrylic pre-primed canvas.
<BR CLEAR=RIGHT>
<div><table width="250" height="166" align="right">
<tr><td><a href="http://www.flickr.com/photos/76314685@N04/7001200369/lightbox/" target="_blank" title="IMG_2709 by RumaraPainting, on Flickr"><img src="http://farm8.staticflickr.com/7097/7001200369_86ab273c73_o.jpg" width="350" height="233" align="center" alt="IMG_2709"></a></td></tr>
<tr><td>Stirring the oil primer</td></tr></table></div>
<br>
<br>
Stir the oil primer thoroughly before using.
<BR CLEAR=RIGHT>
<div><table width="250" height="166" align="right">
<tr><td><a href="http://www.flickr.com/photos/76314685@N04/7001200467/lightbox/" target="_blank" title="IMG_2726 by RumaraPainting, on Flickr"><img src="http://farm8.staticflickr.com/7081/7001200467_2676274f2e_o.jpg" width="350" height="233" align="center" alt="IMG_2726"></a></td></tr>
<tr><td>A dollop of primer</td></tr></table></div>
<br>
<br>
Use a large spatula (see </html>[[Materials]]<html>) to lift a lump of primer onto the canvas. Experience will give a feel for how much to use. Try starting with approximately a teaspoon per square foot.
<BR CLEAR=RIGHT>
<div><table width="250" height="166" align="right">
<tr><td><a href="http://www.flickr.com/photos/76314685@N04/6855083470/lightbox/" target="_blank" title="IMG_2733 by RumaraPainting, on Flickr"><img src="http://farm7.staticflickr.com/6041/6855083470_e2b4d21562_o.jpg" width="350" height="233" align="center" alt="IMG_2733"></a></td></tr>
<tr><td>A small puddle of turpentine</td></tr></table></div>
<br>
<br>
Pour a small puddle of turpentine onto the primer.
<BR CLEAR=RIGHT>
<div><table width="250" height="166" align="right">
<tr><td><a href="http://www.flickr.com/photos/76314685@N04/6855083518/lightbox/" target="_blank" title="IMG_2749 by RumaraPainting, on Flickr"><img src="http://farm8.staticflickr.com/7187/6855083518_e563775e74_o.jpg" width="350" height="233" align="center" alt="IMG_2749"></a></td></tr>
<tr><td>Mixing the primer with the thinner</td></tr></table></div>
<br>
<br>
Use the sponge brush to mix the primer with the thinner into a slurry.
<BR CLEAR=RIGHT>
<div><table width="250" height="166" align="right">
<tr><td><a href="http://www.flickr.com/photos/76314685@N04/6855083570/lightbox/" target="_blank" title="IMG_2770 by RumaraPainting, on Flickr"><img src="http://farm7.staticflickr.com/6218/6855083570_a7597d698c_o.jpg" width="350" height="233" align="center" alt="IMG_2770"></a></td></tr>
<tr><td>Rubbing the slurry across the canvas</td></tr></table></div>
<br>
<br>
Rub the slurry so created across the surface of the canvas to create an even coat. Add more primer and turp if coverage is incomplete.
<BR CLEAR=RIGHT>
</html>
Allow a month to dry.
!Purchasing oil pre-primed canvases
Oil pre-primed canvases are available from Jerry's and other arts supply stores, made by various manufacturers. It is not possible to purchase pre-primed canvases that have been primed with lead-based oil primers.
!Stretching oil pre-primed canvas
One way to avoid the priming process is to stretch oil-primed canvas purchased by the yard. Artfix offers oil-primed linen by the roll (available from [[Jerry's|http://www.jerrysartarama.com/discount-art-supplies/Canvas-and-Boards/Canvas-Rolls/Artfix-Belgian-Linen-Canvas.htm]]). Several different weaves are offered.
!Paying to have pre-stretched, acrylic-primed canvases coated with oil primer
Another alternative to oil-priming in the studio is to order canvases, sold by the box, and have them shipped to the Studio Products (please see [[Author's Note]]) factory facility in Georgia for them to add a coat of oil-based primer. This makes possible purchasing pre-primed canvases, primed with a lead-based primer (titanium-based is also available).
One interesting note is that modern research shows that in Rembrandt’s time, canvas stretching and priming was performed by local guild craftspeople. So early Dutch oil painters also bought pre-primed canvases (and panels).```Ernst van de Wetering, //Rembrandt: The Painter at Work (second revised edition)// (University of California Press, 2009), 108-9.```
<<tiddler HideTiddlerTags>>
|Name|HTMLFormattingPluginInfo|
|Source|http://www.TiddlyTools.com/#HTMLFormattingPlugin|
|Documentation|http://www.TiddlyTools.com/#HTMLFormattingPluginInfo|
|Version|2.4.0|
|Author|Eric Shulman|
|License|http://www.TiddlyTools.com/#LegalStatements|
|~CoreVersion|2.1|
|Type|documentation|
|Description|documentation for HTMLFormattingPlugin|
The ~HTMLFormatting plugin allows you to freely ''mix wiki-style formatting syntax within HTML formatted content'' by extending the action of the standard TiddlyWiki formatting handler.
!!!!!Usage
<<<
The shorthand Wiki-style formatting syntax of ~TiddlyWiki is very convenient and enables most content to be reasonably well presented. However, there are times when tried-and-true HTML formatting syntax allows more more precise control of the content display.
When a tiddler is about to be displayed, ~TiddlyWiki looks for tiddler content contained within {{{<html>}}} and {{{</html>}}} markers. When present, the TiddlyWiki core simply passes this content directly to the browser's internal "rendering engine" to process as ~HTML-formatted content. However, TiddlyWiki does not also process the HTML source content for any embedded wiki-formatting syntax it may contain. This means that while you can use HTML formatted content, you cannot mix wiki-formatted content within the HTML formatting.
This plugin extends the TiddlyWiki core processing so that, after the HTML formatting has been processed, all the pieces of text occuring within the HTML block are then processed one piece at a time, so that normal wiki-style formatting can be applied to the individual text pieces.
Note: To bypass this extended processing for a specific section of HTML content, embed ''{{{<nowiki>}}}'' //anywhere// inside the {{{<html>...</html>}}} delimiters, and wiki formatting will not be applied to that content.
<<<
!!!!!Line breaks
<<<
One major difference between Wiki formatting and HTML formatting is how "line breaks" are processed. Wiki formatting treats all line breaks as literal content to be displayed //as-is//. However, because HTML normally ignores line breaks and actually processes them as simple "word separators" instead, many people who write HTML include extra line breaks in their documents, just to make the "source code" easier to read.
Even though you can use HTML tags within your tiddler content, the default treatment for line breaks still follows the Wiki-style rule (i.e., all new lines are displayed as-is). When adding HTML content to a tiddler (especially if you cut-and-paste it from another web page), you should take care to avoid adding extra line breaks to the text.
If removing all the extra line breaks from your HTML content would be a big hassle, you can quickly //override the default Wiki-style line break rule// so that the line breaks use the standard HTML rules, by placing ''{{{<hide linebreaks>}}}'' //anywhere// within the HTML content. This automatically converts all line breaks to spaces before rendering the content, so that the literal line breaks will be processed as simple word-breaks instead.
Note: this does //not// alter the actual tiddler content that is stored in the document, just the manner in which it is displayed. Any line breaks contained in the tiddler will still be there when you edit its content. Also, to include a literal line break when the ''<{{{hide linebreaks}}}>'' tag is present, you will need to use a ''<{{{br}}}>'' or ''<{{{p}}}>'' HTML tag instead of simply typing a line break.
<<<
!!!!!How it works
<<<
The TW core support for HTML does not let you put ANY wiki-style syntax (including TW macros) *inside* the {{{<html>...</html>}}} block. Everything between {{{<html>}}} and {{{</html>}}} is handed to the browser for processing and that is it.
However, not all wiki syntax can be safely passed through the browser's parser. Specifically, any TW macros inside the HTML will get 'eaten' by the browser since the macro brackets, {{{<<...>>}}} use the "<" and ">" that normally delimit the HTML/XML syntax recognized by the browser's parser.
Similarly, you can't use InlineJavascript within the HTML because the {{{<script>...</script>}}} syntax will also be consumed by the browser and there will be nothing left to process afterward. Note: unfortunately, even though the browser removes the {{{<script>...</script>}}} sequence, it doesn't actually execute the embedded javascript code that it removes, so any scripts contained inside of <html> blocks in TW are currently being ignored. :-(
As a work-around to allow TW *macros* (but not inline scripts) to exist inside of <html> formatted blocks of content, the plugin first converts the {{{<<}}} and {{{>>}}} into "%%(" and ")%%", making them "indigestible" so they can pass unchanged through the belly of the beast (the browser's HTML parser).
After the browser has done its job, the wiki syntax sequences (including the "undigested" macros) are contained in #text nodes in the browser-generated DOM elements. The plugin then recursively locates and processes each #text node, converts the %%( and )%% back into {{{<<}}} and {{{>>}}}, passes the result to wikify() for further rendering of the wiki-formatted syntax into a containing SPAN that replaces the previous #text node. At the end of this process, none of the encoded %%( and )%% sequences remain in the rendered tiddler output.
<<<
!!!!!Revisions
<<<
2009.01.05 2.4.0 in wikifyTextNodes(), pass w.highlightRegExp and w.tiddler to wikify() so that search term highlighting and tiddler-relative macro processing will work
2008.10.02 2.3.0 added use of {{{<nowiki>}}} marker to bypass all wikification inside a specific HTML block
2008.09.19 2.2.0 in wikifyTextNodes(), don't wikify the contents of STYLE nodes (thanks to MorrisGray for bug report)
2008.04.26 [*.*.*] plugin size reduction: more documentation moved to HTMLFormattingInfo
2008.01.08 [*.*.*] plugin size reduction: documentation moved to HTMLFormattingInfo
2007.12.04 [*.*.*] update for TW2.3.0: replaced deprecated core functions, regexps, and macros
2007.06.14 2.1.5 in formatter, removed call to e.normalize(). Creates an INFINITE RECURSION error in Safari!!!!
2006.09.10 2.1.4 update formatter for 2.1 compatibility (use this.lookaheadRegExp instead of temp variable)
2006.05.28 2.1.3 in wikifyTextNodes(), decode the *value* of TEXTAREA nodes, but don't wikify() its children. (thanks to "ayj" for bug report)
2006.02.19 2.1.2 in wikifyTextNodes(), put SPAN element into tiddler DOM (replacing text node), BEFORE wikifying the text content. This ensures that the 'place' passed to any macros is correctly defined when the macro is evaluated, so that calls to story.findContainingTiddler(place) will work as expected. (Thanks for bug report from GeoffSlocock)
2006.02.05 2.1.1 wrapped wikifier hijack in init function to eliminate globals and avoid FireFox 1.5.0.1 crash bug when referencing globals
2005.12.01 2.1.0 don't wikify #TEXT nodes inside SELECT and TEXTAREA elements
2005.11.06 2.0.1 code cleanup
2005.10.31 2.0.0 replaced hijack wikify() with hijack config.formatters["html"] and simplified recursive WikifyTextNodes() code
2005.10.09 1.0.2 combined documentation and code into a single tiddler
2005.08.05 1.0.1 moved HTML and CSS definitions into plugin code instead of using separate tiddlers
2005.07.26 1.0.1 Re-released as a plugin. Added <{{{html}}}>...</{{{nohtml}}}> and <{{{hide newlines}}}> handling
2005.06.26 1.0.0 Initial Release (as code adaptation - pre-dates TiddlyWiki plugin architecture!!)
<<<
(''//Internet Explorer//'' users: the Table of Contents will not function as links. Please read [[Author's Note]].)
<<showtoc>>
!Introduction
The so-called inorganic pigments are derived from metals. Many metal derivatives are used in the production of these pigments, including derivatives of lead, cadmium, chromium, nickel, cobalt, iron, manganese, zinc, mercury and titanium. Metals tend to accumulate in the body rather than be passed easily in waste or sweat. Some metals are non-toxic in small doses. Some are required in the human diet small amounts for good health (including cobalt, iron, zinc and manganese). Large doses of any metal, however, or a large accumulation built up in the body from small doses over time, can cause a variety of health problems. The most well-publicized metal overdose problems have been in the stories of lead poisoning. Lead is now banned from former common uses that included house paint, solder used for food cans and water pipes, and gasoline. These and other industrial uses of lead contributed to high concentrations of lead in the environment.
A good overview of the various health effects resulting from metals in the body can be found at the [[OSHA website|http://www.osha.gov/SLTC/metalsheavy/index.html]]. Follow the links to find “Public Heath Statements” for individual elements, detailing scientific findings on the wide variety of health issues that result from high concentrations of metals in the body.
Metals do not pass through unbroken skin, because the metal molecules are too large. Metals enter the body through openings in the skin such as mouth, nose, eyes, cuts and abrasions. Because so many paint pigments are made with metals, and because of the wonderful qualities of many of these paints, we operate on the assumption that blanket precautions that avoid any and all pigments entering the body are best. With constant care and attentiveness to avoid metals entering the body when painting, we can use any and all metal-based pigments with complete safety.
Some people have bodies that are very sensitive (see [[Perspectives: Notes on viewing allergic reactions as a message|Perspectives##Notes on viewing allergic reactions as a message]]). The accumulation of metals in the body may engender more health issues, sooner. Other people have bodies that are less sensitive. The decision to adopt careful precautions against metals in pigments entering the body is a personal one. You may choose to relax precautions. If your health shifts significantly after oil painting regularly for several years, you may wish to investigate symptoms of metals poisoning, and to examine your practices.
!Ways that studio paints enter the body
<html>
<div><table width="250" height="166" align="right">
<tr><td><a href="http://www.flickr.com/photos/76314685@N04/7001204509/lightbox/" target="_blank" title="IMG_3777 by RumaraPainting, on Flickr"><img src="http://farm8.staticflickr.com/7080/7001204509_0a91423485_o.jpg" width="350" height="233" align="center" alt="IMG_3777"></a></td></tr>
<tr><td>A paint smear on fingers is OK</td></tr></table></div>
<br>
<br>
A paint smear on a hand clear of cuts and abrasions, is not itself going to enter the body.
<BR CLEAR=RIGHT>
<html>
<div><table width="250" height="166" align="right">
<tr><td><a href="http://www.flickr.com/photos/76314685@N04/6855760086/lightbox/" target="_blank" title="IMG_3784_REDX by RumaraPainting, on Flickr"><img src="http://farm8.staticflickr.com/7139/6855760086_456bf080b3_o.jpg" width="350" height="233" align="center" alt="IMG_3784_REDX"></a></td></tr>
<tr><td>A smear on the lip of a coffee cup may wind up in a mouth</td></tr></table></div>
<br>
<br>
However, where might the paint go from there?
<br>
<br>
<BR CLEAR=RIGHT>
There are many places a smear of paint may go. The simplest way to avoid paint in random places, that may wind up smearing eyes, nose, mouth, or cuts or abrasions, is to carefully avoid paint on the hands.
</html>
!How to avoid paint smears, without gloves
''//Constantly watch for smears on hands//''
The first route towards avoidance is self-awareness. This requires constant checking of one's hands for smears.
''//Do not touch wet paint on canvas or brush tip//''
Try to avoid touching the wet paint film or wet end of the brush. If this practice is important for your artistry, consider wearing gloves.
''//Wash smears immediately//''
As soon as any size paint smear is noted on the skin, take soap and a soft nail brush over to the warm water sink and wash and flush (see [[Cleaning]]).
<html>
<div><table width="250" height="166" align="right">
<tr><td><a href="http://www.flickr.com/photos/76314685@N04/7001203817/lightbox/" target="_blank" title="IMG_3678 by RumaraPainting, on Flickr"><img src="http://farm7.staticflickr.com/6053/7001203817_1462df4823_o.jpg" width="350" height="233" align="center" alt="IMG_3678"></a></td></tr>
<tr><td>Cleaning a paint smear with a nail brush and warm water</td></tr></table></div>
<BR CLEAR=RIGHT>
</html>
''//Keep coffee cup separate from paint//''
It is OK to drink while working, as long as the awareness is maintained of hands so that a smeared hand does not smear the cup. Keep the cup separate from the palette area or anywhere it might pick up smears.
''//Develop a safe procedure for wiping the brush//''
Wiping the brush between colors requires contact with the wet brush end. In order to avoid contact with skin, fold a (blue “shop”) paper towel (see [[Materials]]) two ways to get a pad at least four towels thick.
<html>
<a href="http://www.flickr.com/photos/76314685@N04/7003785263/lightbox/" target="_blank" title="RGP_process_screenshot02 by RumaraPainting, on Flickr"><img src="http://farm7.staticflickr.com/6043/7003785263_cdccecf84a_o.jpg" width="700" height="231" alt="RGP_process_screenshot02"></a>
</html>
Wrap this pad around the brush and squeeze. As soon as the towel is reasonably decorated with paint smears, dispose of it and take another (see [[Cleaning]]).
!How to avoid paint smears, with gloves
A second route towards avoidance is to wear disposable latex gloves (see [[Materials]]).
''//Dispose of the glove pairs frequently//''
<html>
<div><table width="250" height="166" align="right">
<tr><td><a href="http://www.flickr.com/photos/76314685@N04/6855087530/lightbox/" target="_blank" title="IMG_3787 by RumaraPainting, on Flickr"><img src="http://farm8.staticflickr.com/7133/6855087530_a6f9fcbaec_o.jpg" width="350" height="233" align="center" alt="IMG_3787"></a></td></tr>
<tr><td>Paint-smeared, gloved fingers</td></tr></table></div>
<br>
<br>
Dispose of latex gloves when breaking for coffee, lunch or the end of the studio session.
<BR CLEAR=RIGHT>
</html>
''//Watch where gloved hands touch//''
It is important to be aware of where gloved hands go. If you scratch your eye, mouth or nose with a paint-smeared gloved hand, the paint smear can enter the body through those orifices. Therefore, a level of vigilance is still needed when wearing gloves.
''//Drink (and eat) during breaks only//''
<html>
<div><table width="250" height="166" align="right">
<tr><td><a href="http://www.flickr.com/photos/76314685@N04/6855087560/lightbox/" target="_blank" title="IMG_3793 by RumaraPainting, on Flickr"><img src="http://farm7.staticflickr.com/6056/6855087560_645f1d2be1_o.jpg" width="350" height="233" align="center" alt="IMG_3793"></a></td></tr>
<tr><td>Coffee break station, in separate location from painting easel</td></tr></table></div>
<br>
<br>
It is important not to drink coffee with paint-smeared gloved fingers. Therefore, take regular coffee breaks and dispose of gloves before the break.
<BR CLEAR=RIGHT>
<br>
<div>
<table width="40" height="110" border="0" align="left" cellpadding="0" cellspacing="12" bgcolor="FFFFFF"><tr>
<tr>
<td>
<IMG SRC="http://www.rumara.com/Sandbox/images/greenpainting/questionmark.gif" ALT="Question" width="40" height="40" border="0" vspace="0" hspace="0" align="center">
</td>
</tr>
</table>
</div>
<strong>"Wearing latex gloves makes my fingers sweat. They aren’t comfortable."</strong>
<br>
Keep in mind that many professionals, such as in the health care industry, wear disposable latex gloves most of the day. The gloves are lined with a small amount of talcum powder to absorb sweat. Painting safely without gloves requires constant vigilance towards smears on the skin. Might you work at adopting that level of vigilance, slowly and with care, and eventually release yourself from the gloves?
<BR CLEAR=LEFT>
<br>
<br>
<div>
<table width="40" height="50" border="0" align="left" cellpadding="0" cellspacing="12" bgcolor="FFFFFF"><tr>
<tr>
<td>
<IMG SRC="http://www.rumara.com/Sandbox/images/greenpainting/questionmark.gif" ALT="Question" width="40" height="40" border="0" vspace="0" hspace="0" align="center">
</td>
</tr>
</table>
</div>
<strong>"I know myself and I’m a messy person. I just don’t notice when I spill things and smear things."</strong>
<br>
It is important to know yourself and your own habits, and to take precautions accordingly:
<BR CLEAR=LEFT>
<br>
<div><table width="250" height="166" align="right">
<tr><td><a href="http://www.flickr.com/photos/76314685@N04/6855087332/lightbox/" target="_blank" title="IMG_3761 by RumaraPainting, on Flickr"><img src="http://farm8.staticflickr.com/7139/6855087332_58fc8c5308_o.jpg" width="350" height="233" align="center" alt="IMG_3761"></a></td></tr>
<tr><td>Take lunch, and coffee, in a separate location from the painting area</td></tr></table></div>
<br>
<br>
</html>//Remove any food or drink// from the studio work area so that you won’t be tempted to eat or drink while painting. Smears easily transfer to cups and utensils and it is a short trip from these onto lips and into mouth.<html>
<BR CLEAR=RIGHT>
</html>
//Keep hair pulled back// from face from the start of the work session, using clips or a hair net. This is another preventative action to keep hands from reaching to face to pull back hair.
//Keep a box of tissues handy//. This is a preventative to encourage not wiping one’s nose with a hand while painting.
//Wear a smock or painting apron// that covers the body down to sleeve ends and below the knees (see [[Materials]]). These are available from artist supply stores and [[Jerry's|http://www.jerrysartarama.com/discount-art-supplies/Apparel/Artist-Smocks-Original-PaintWear-Full-Length.htm?mybuyscid=6688554485]].
//Change the mentality while painting// to remember that the pigments can cause health issues if handled improperly. Try to adopt a similar vigilance to working with hazards in the home. You probably put on cleaning gloves before using a scouring cleaner in the toilet. You may douse hot match tips before throwing them away. You probably turn off lights before changing (hot) bulbs, pick up potholders before removing dishes from the oven, and so on. Metals do not cause instantaneous negative experiences like stings and burns; their effects occur internally and after long term exposure. Safe actions have an accompanying mentality of self-awareness and vigilance. Try to adopt an aware mentality regarding artist paint, that honors the specifics of the potential hazards while working within the guidelines of very achievable safe behaviors that minimize this potential.
<br>
<html>
<div style="float:left;">
<table width="213" height="142" align="left">
<tr><td><a href="http://www.flickr.com/photos/76314685@N04/6855087922/lightbox/" target="_blank" title="IMG_3947 by RumaraPainting, on Flickr"><img src="http://farm7.staticflickr.com/6102/6855087922_dbeea22d2b_o.jpg" width="213" height="142" align="center" alt="IMG_3947"></a></td></tr>
<tr><td>Care recommended</td></tr>
</table>
<table width="213" height="142" align="left">
<tr><td><a href="http://www.flickr.com/photos/76314685@N04/7001204893/lightbox/" target="_blank" title="IMG_3920 by RumaraPainting, on Flickr"><img src="http://farm8.staticflickr.com/7115/7001204893_c2d5157f35_o.jpg" width="213" height="142" align="center" alt="IMG_3920"></a></td></tr>
<tr><td>Different sort of care recommended</td></tr>
</table>
<table width="213" height="142" align="left">
<tr><td><a href="http://www.flickr.com/photos/76314685@N04/7001205033/lightbox/" target="_blank" title="IMG_3963 by RumaraPainting, on Flickr"><img src="http://farm7.staticflickr.com/6116/7001205033_6d0f1b1f2a_o.jpg" width="213" height="142" align="center" alt="IMG_3963"></a></td></tr>
<tr><td>Different sort of care recommended</td></tr>
</table>
</div>
<BR CLEAR=LEFT>
</html>
!Working with dry pigments
Working with dry pigments that aren’t bound into a wet paste requires a very different and more complex level of vigilance. Particles can get blown into the atmosphere by just walking by a pile of pigment, in an otherwise completely draft-free environment. Tiny particles of cadmium, for example, are lighter than air and do not settle once airborne. They float about, ready to get sucked up by a nearby breath.
Safety gear exists for handling dry pigments, but I am not qualified to discuss the details of such. For the purpose of this tutorial, we will avoid using all pigments except ground earth for the making of egg emulsions (see [[Colored Grounds]]).
<<tiddler HideTiddlerTags>>
/%
!info
|Name|HideTiddlerBackground|
|Source|http://www.TiddlyTools.com/#HideTiddlerBackground|
|Version|2.0.1|
|Author|Eric Shulman|
|License|http://www.TiddlyTools.com/#LegalStatements|
|~CoreVersion|2.1|
|Type|transclusion|
|Description|hide a tiddler's background and border (if any)|
Usage:
<<<
{{{
<<tiddler HideTiddlerBackground>>
<<tiddler HideTiddlerBackground with: TiddlerTitle>>
}}}
<<<
!end
!show
<<tiddler {{
var title="$1";
if (title=='$'+'1')
title=(story.findContainingTiddler(place)||place).getAttribute('tiddler')||'';
var t=story.getTiddler(title); if (t) {
var e=t.getElementsByTagName('*');
for (var i=0; i<e.length; i++) if (hasClass(e[i],'viewer')) {
var s=e[i].style;
s.backgroundImage='none';
s.backgroundColor='transparent';
s.border=s.margin=s.padding='0px';
break;
}
}
'';}}>>
!end
%/<<tiddler {{
var src='HideTiddlerBackground';
src+(tiddler&&tiddler.title==src?'##info':'##show');}}
with: [[$1]]>>
/%
!info
|Name|HideTiddlerTags|
|Source|http://www.TiddlyTools.com/#HideTiddlerTags|
|Version|2.0.1|
|Author|Eric Shulman|
|License|http://www.TiddlyTools.com/#LegalStatements|
|~CoreVersion|2.1|
|Type|transclusion|
|Description|hide a tiddler's 'tagged' and 'tagging' displays (if any)|
Usage:
<<<
{{{
<<tiddler HideTiddlerTags>>
<<tiddler HideTiddlerTags with: TiddlerTitle>>
}}}
<<<
!end
!show
<<tiddler {{
var title="$1";
if (title=='$'+'1') {
var here=story.findContainingTiddler(place);
if (here) title=here.getAttribute('tiddler');
}
var t=story.getTiddler(title); if (t) {
var e=t.getElementsByTagName('*');
for (var i=0; i<e.length; i++)
if (hasClass(e[i],'tagging')||hasClass(e[i],'tagged'))
e[i].style.display='none';
}
'';}}>>
!end
%/<<tiddler {{
var src='HideTiddlerTags';
src+(tiddler&&tiddler.title==src?'##info':'##show');}}
with: [[$1]]>>
/***
|Name:|HideWhenPlugin|
|Description:|Allows conditional inclusion/exclusion in templates|
|Version:|3.1 ($Rev: 3919 $)|
|Date:|$Date: 2008-03-13 02:03:12 +1000 (Thu, 13 Mar 2008) $|
|Source:|http://mptw.tiddlyspot.com/#HideWhenPlugin|
|Author:|Simon Baird <simon.baird@gmail.com>|
|License:|http://mptw.tiddlyspot.com/#TheBSDLicense|
For use in ViewTemplate and EditTemplate. Example usage:
{{{<div macro="showWhenTagged Task">[[TaskToolbar]]</div>}}}
{{{<div macro="showWhen tiddler.modifier == 'BartSimpson'"><img src="bart.gif"/></div>}}}
***/
//{{{
window.hideWhenLastTest = false;
window.removeElementWhen = function(test,place) {
window.hideWhenLastTest = test;
if (test) {
removeChildren(place);
place.parentNode.removeChild(place);
}
};
merge(config.macros,{
hideWhen: { handler: function(place,macroName,params,wikifier,paramString,tiddler) {
removeElementWhen( eval(paramString), place);
}},
showWhen: { handler: function(place,macroName,params,wikifier,paramString,tiddler) {
removeElementWhen( !eval(paramString), place);
}},
hideWhenTagged: { handler: function (place,macroName,params,wikifier,paramString,tiddler) {
removeElementWhen( tiddler.tags.containsAll(params), place);
}},
showWhenTagged: { handler: function (place,macroName,params,wikifier,paramString,tiddler) {
removeElementWhen( !tiddler.tags.containsAll(params), place);
}},
hideWhenTaggedAny: { handler: function (place,macroName,params,wikifier,paramString,tiddler) {
removeElementWhen( tiddler.tags.containsAny(params), place);
}},
showWhenTaggedAny: { handler: function (place,macroName,params,wikifier,paramString,tiddler) {
removeElementWhen( !tiddler.tags.containsAny(params), place);
}},
hideWhenTaggedAll: { handler: function (place,macroName,params,wikifier,paramString,tiddler) {
removeElementWhen( tiddler.tags.containsAll(params), place);
}},
showWhenTaggedAll: { handler: function (place,macroName,params,wikifier,paramString,tiddler) {
removeElementWhen( !tiddler.tags.containsAll(params), place);
}},
hideWhenExists: { handler: function(place,macroName,params,wikifier,paramString,tiddler) {
removeElementWhen( store.tiddlerExists(params[0]) || store.isShadowTiddler(params[0]), place);
}},
showWhenExists: { handler: function(place,macroName,params,wikifier,paramString,tiddler) {
removeElementWhen( !(store.tiddlerExists(params[0]) || store.isShadowTiddler(params[0])), place);
}},
hideWhenTitleIs: { handler: function(place,macroName,params,wikifier,paramString,tiddler) {
removeElementWhen( tiddler.title == params[0], place);
}},
showWhenTitleIs: { handler: function(place,macroName,params,wikifier,paramString,tiddler) {
removeElementWhen( tiddler.title != params[0], place);
}},
'else': { handler: function(place,macroName,params,wikifier,paramString,tiddler) {
removeElementWhen( !window.hideWhenLastTest, place);
}}
});
//}}}
/***
|Name|ImageSizePlugin|
|Source|http://www.TiddlyTools.com/#ImageSizePlugin|
|Version|1.2.1|
|Author|Eric Shulman|
|License|http://www.TiddlyTools.com/#LegalStatements|
|~CoreVersion|2.1|
|Type|plugin|
|Description|adds support for resizing images|
This plugin adds optional syntax to scale an image to a specified width and height and/or interactively resize the image with the mouse.
!!!!!Usage
<<<
The extended image syntax is:
{{{
[img(w+,h+)[...][...]]
}}}
where ''(w,h)'' indicates the desired width and height (in CSS units, e.g., px, em, cm, in, or %). Use ''auto'' (or a blank value) for either dimension to scale that dimension proportionally (i.e., maintain the aspect ratio). You can also calculate a CSS value 'on-the-fly' by using a //javascript expression// enclosed between """{{""" and """}}""". Appending a plus sign (+) to a dimension enables interactive resizing in that dimension (by dragging the mouse inside the image). Use ~SHIFT-click to show the full-sized (un-scaled) image. Use ~CTRL-click to restore the starting size (either scaled or full-sized).
<<<
!!!!!Examples
<<<
{{{
[img(100px+,75px+)[images/meow2.jpg]]
}}}
[img(100px+,75px+)[images/meow2.jpg]]
{{{
[<img(34%+,+)[images/meow.gif]]
[<img(21% ,+)[images/meow.gif]]
[<img(13%+, )[images/meow.gif]]
[<img( 8%+, )[images/meow.gif]]
[<img( 5% , )[images/meow.gif]]
[<img( 3% , )[images/meow.gif]]
[<img( 2% , )[images/meow.gif]]
[img( 1%+,+)[images/meow.gif]]
}}}
[<img(34%+,+)[images/meow.gif]]
[<img(21% ,+)[images/meow.gif]]
[<img(13%+, )[images/meow.gif]]
[<img( 8%+, )[images/meow.gif]]
[<img( 5% , )[images/meow.gif]]
[<img( 3% , )[images/meow.gif]]
[<img( 2% , )[images/meow.gif]]
[img( 1%+,+)[images/meow.gif]]
{{tagClear{
}}}
<<<
!!!!!Revisions
<<<
2009.02.24 [1.2.1] cleanup width/height regexp, use '+' suffix for resizing
2009.02.22 [1.2.0] added stretchable images
2008.01.19 [1.1.0] added evaluated width/height values
2008.01.18 [1.0.1] regexp for "(width,height)" now passes all CSS values to browser for validation
2008.01.17 [1.0.0] initial release
<<<
!!!!!Code
***/
//{{{
version.extensions.ImageSizePlugin= {major: 1, minor: 2, revision: 1, date: new Date(2009,2,24)};
//}}}
//{{{
var f=config.formatters[config.formatters.findByField("name","image")];
f.match="\\[[<>]?[Ii][Mm][Gg](?:\\([^,]*,[^\\)]*\\))?\\[";
f.lookaheadRegExp=/\[([<]?)(>?)[Ii][Mm][Gg](?:\(([^,]*),([^\)]*)\))?\[(?:([^\|\]]+)\|)?([^\[\]\|]+)\](?:\[([^\]]*)\])?\]/mg;
f.handler=function(w) {
this.lookaheadRegExp.lastIndex = w.matchStart;
var lookaheadMatch = this.lookaheadRegExp.exec(w.source)
if(lookaheadMatch && lookaheadMatch.index == w.matchStart) {
var floatLeft=lookaheadMatch[1];
var floatRight=lookaheadMatch[2];
var width=lookaheadMatch[3];
var height=lookaheadMatch[4];
var tooltip=lookaheadMatch[5];
var src=lookaheadMatch[6];
var link=lookaheadMatch[7];
// Simple bracketted link
var e = w.output;
if(link) { // LINKED IMAGE
if (config.formatterHelpers.isExternalLink(link)) {
if (config.macros.attach && config.macros.attach.isAttachment(link)) {
// see [[AttachFilePluginFormatters]]
e = createExternalLink(w.output,link);
e.href=config.macros.attach.getAttachment(link);
e.title = config.macros.attach.linkTooltip + link;
} else
e = createExternalLink(w.output,link);
} else
e = createTiddlyLink(w.output,link,false,null,w.isStatic);
addClass(e,"imageLink");
}
var img = createTiddlyElement(e,"img");
if(floatLeft) img.align="left"; else if(floatRight) img.align="right";
if(width||height) {
var x=width.trim(); var y=height.trim();
var stretchW=(x.substr(x.length-1,1)=='+'); if (stretchW) x=x.substr(0,x.length-1);
var stretchH=(y.substr(y.length-1,1)=='+'); if (stretchH) y=y.substr(0,y.length-1);
if (x.substr(0,2)=="{{")
{ try{x=eval(x.substr(2,x.length-4))} catch(e){displayMessage(e.description||e.toString())} }
if (y.substr(0,2)=="{{")
{ try{y=eval(y.substr(2,y.length-4))} catch(e){displayMessage(e.description||e.toString())} }
img.style.width=x.trim(); img.style.height=y.trim();
config.formatterHelpers.addStretchHandlers(img,stretchW,stretchH);
}
if(tooltip) img.title = tooltip;
// GET IMAGE SOURCE
if (config.macros.attach && config.macros.attach.isAttachment(src))
src=config.macros.attach.getAttachment(src); // see [[AttachFilePluginFormatters]]
else if (config.formatterHelpers.resolvePath) { // see [[ImagePathPlugin]]
if (config.browser.isIE || config.browser.isSafari) {
img.onerror=(function(){
this.src=config.formatterHelpers.resolvePath(this.src,false);
return false;
});
} else
src=config.formatterHelpers.resolvePath(src,true);
}
img.src=src;
w.nextMatch = this.lookaheadRegExp.lastIndex;
}
}
config.formatterHelpers.addStretchHandlers=function(e,stretchW,stretchH) {
e.title=((stretchW||stretchH)?'DRAG=stretch/shrink, ':'')
+'SHIFT-CLICK=show full size, CTRL-CLICK=restore initial size';
e.statusMsg='width=%0, height=%1';
e.style.cursor='move';
e.originalW=e.style.width;
e.originalH=e.style.height;
e.minW=Math.max(e.offsetWidth/20,10);
e.minH=Math.max(e.offsetHeight/20,10);
e.stretchW=stretchW;
e.stretchH=stretchH;
e.onmousedown=function(ev) { var ev=ev||window.event;
this.sizing=true;
this.startX=!config.browser.isIE?ev.pageX:(ev.clientX+findScrollX());
this.startY=!config.browser.isIE?ev.pageY:(ev.clientY+findScrollY());
this.startW=this.offsetWidth;
this.startH=this.offsetHeight;
return false;
};
e.onmousemove=function(ev) { var ev=ev||window.event;
if (this.sizing) {
var s=this.style;
var currX=!config.browser.isIE?ev.pageX:(ev.clientX+findScrollX());
var currY=!config.browser.isIE?ev.pageY:(ev.clientY+findScrollY());
var newW=(currX-this.offsetLeft)/(this.startX-this.offsetLeft)*this.startW;
var newH=(currY-this.offsetTop )/(this.startY-this.offsetTop )*this.startH;
if (this.stretchW) s.width =Math.floor(Math.max(newW,this.minW))+'px';
if (this.stretchH) s.height=Math.floor(Math.max(newH,this.minH))+'px';
clearMessage(); displayMessage(this.statusMsg.format([s.width,s.height]));
}
return false;
};
e.onmouseup=function(ev) { var ev=ev||window.event;
if (ev.shiftKey) { this.style.width=this.style.height=''; }
if (ev.ctrlKey) { this.style.width=this.originalW; this.style.height=this.originalH; }
this.sizing=false;
clearMessage();
return false;
};
e.onmouseout=function(ev) { var ev=ev||window.event;
this.sizing=false;
clearMessage();
return false;
};
}
//}}}
/***
|Name|ImportTiddlersPlugin|
|Source|http://www.TiddlyTools.com/#ImportTiddlersPlugin|
|Documentation|http://www.TiddlyTools.com/#ImportTiddlersPluginInfo|
|Version|4.6.1|
|Author|Eric Shulman|
|License|http://www.TiddlyTools.com/#LegalStatements|
|~CoreVersion|2.1|
|Type|plugin|
|Description|interactive controls for import/export with filtering.|
Combine tiddlers from any two TiddlyWiki documents. Interactively select and copy tiddlers from another TiddlyWiki source document. Includes prompting for skip, rename, merge or replace actions when importing tiddlers that match existing titles. When done, a list of all imported tiddlers is written into [[ImportedTiddlers]].
!!!!!Documentation
<<<
see [[ImportTiddlersPluginInfo]] for details
<<<
!!!!!interactive control panel
<<<
<<importTiddlers inline>>
{{clear{
^^(see also: [[ImportTiddlers]] shadow tiddler)^^}}}
<<<
!!!!!Revisions
<<<
2009.10.10 4.6.1 in createImportPanel, Use {{{window.Components}}} instead of {{{config.browser.isGecko}} to avoid applying FF3 'file browse' fixup in Chrome.
2009.10.06 4.6.0 added createTiddlerFromFile (import text files)
|please see [[ImportTiddlersPluginInfo]] for additional revision details|
2005.07.20 1.0.0 Initial Release
<<<
!!!!!Code
***/
//{{{
version.extensions.ImportTiddlersPlugin= {major: 4, minor: 6, revision: 1, date: new Date(2009,10,10)};
// IE needs explicit global scoping for functions/vars called from browser events
window.onClickImportButton=onClickImportButton;
window.refreshImportList=refreshImportList;
// default cookie/option values
if (!config.options.chkImportReport) config.options.chkImportReport=true;
// default shadow definition
config.shadowTiddlers.ImportTiddlers='<<importTiddlers inline>>';
// use shadow tiddler content in backstage panel
if (config.tasks) config.tasks.importTask.content='<<tiddler ImportTiddlers>>' // TW2.2 or above
//}}}
//{{{
// backward-compatiblity for TW2.0.x and TW1.2.x
if (config.macros.importTiddlers==undefined) config.macros.importTiddlers={};
if (typeof merge=='undefined') {
function merge(dst,src,preserveExisting) {
for(var i in src) { if(!preserveExisting || dst[i] === undefined) dst[i] = src[i]; }
return dst;
}
}
if (config.browser.isGecko===undefined)
config.browser.isGecko=(config.userAgent.indexOf('gecko')!=-1);
//}}}
//{{{
merge(config.macros.importTiddlers,{
$: function(id) { return document.getElementById(id); }, // abbreviation
label: 'import tiddlers',
prompt: 'Copy tiddlers from another document',
openMsg: 'Opening %0',
openErrMsg: 'Could not open %0 - error=%1',
readMsg: 'Read %0 bytes from %1',
foundMsg: 'Found %0 tiddlers in %1',
filterMsg: "Filtered %0 tiddlers matching '%1'",
summaryMsg: '%0 tiddler%1 in the list',
summaryFilteredMsg: '%0 of %1 tiddler%2 in the list',
plural: 's are',
single: ' is',
countMsg: '%0 tiddlers selected for import',
processedMsg: 'Processed %0 tiddlers',
importedMsg: 'Imported %0 of %1 tiddlers from %2',
loadText: 'please load a document...',
closeText: 'close',
doneText: 'done',
startText: 'import',
stopText: 'stop',
local: true, // default to import from local file
src: '', // path/filename or URL of document to import (retrieved from SiteUrl)
proxy: '', // URL for remote proxy script (retrieved from SiteProxy)
useProxy: false, // use specific proxy script in front of remote URL
inbound: null, // hash-indexed array of tiddlers from other document
newTags: '', // text of tags added to imported tiddlers
addTags: true, // add new tags to imported tiddlers
listsize: 10, // # of lines to show in imported tiddler list
importTags: true, // include tags from remote source document when importing a tiddler
keepTags: true, // retain existing tags when replacing a tiddler
sync: false, // add 'server' fields to imported tiddlers (for sync function)
lastFilter: '', // most recent filter (URL hash) applied
lastAction: null, // most recent collision button performed
index: 0, // current processing index in import list
sort: '' // sort order for imported tiddler listbox
});
//}}}
//{{{
// hijack core macro handler
if (config.macros.importTiddlers.coreHandler==undefined)
config.macros.importTiddlers.coreHandler=config.macros.importTiddlers.handler;
config.macros.importTiddlers.handler = function(place,macroName,params,wikifier,paramString,tiddler) {
if (!params[0] || params[0].toLowerCase()=='core') { // default to built in
if (config.macros.importTiddlers.coreHandler)
config.macros.importTiddlers.coreHandler.apply(this,arguments);
else
createTiddlyButton(place,this.label,this.prompt,onClickImportMenu);
} else if (params[0]=='link') { // show link to floating panel
createTiddlyButton(place,params[1]||this.label,params[2]||this.prompt,onClickImportMenu);
} else if (params[0]=='inline') {// show panel as INLINE tiddler content
createImportPanel(place);
this.$('importPanel').style.position='static';
this.$('importPanel').style.display='block';
} else if (config.macros.loadTiddlers)
config.macros.loadTiddlers.handler(place,macroName,params); // any other params: loadtiddlers
}
//}}}
//{{{
// Handle link click to create/show/hide control panel
function onClickImportMenu(e) { var e=e||window.event;
var parent=resolveTarget(e).parentNode;
var panel=document.getElementById('importPanel');
if (panel==undefined || panel.parentNode!=parent) panel=createImportPanel(parent);
var isOpen=panel.style.display=='block';
if(config.options.chkAnimate)
anim.startAnimating(new Slider(panel,!isOpen,false,'none'));
else
panel.style.display=isOpen?'none':'block';
e.cancelBubble = true; if (e.stopPropagation) e.stopPropagation(); return(false);
}
//}}}
//{{{
// Create control panel: HTML, CSS
function createImportPanel(place) {
var cmi=config.macros.importTiddlers; // abbrev
var panel=cmi.$('importPanel');
if (panel) { panel.parentNode.removeChild(panel); }
setStylesheet(store.getTiddlerText('ImportTiddlersPlugin##css'),'importTiddlers');
panel=createTiddlyElement(place,'span','importPanel',null,null)
panel.innerHTML=store.getTiddlerText('ImportTiddlersPlugin##html');
refreshImportList();
if (!cmi.src.length) cmi.src=store.getTiddlerText('SiteUrl')||'';
cmi.$('importSourceURL').value=cmi.src;
if (!cmi.proxy.length) cmi.proxy=store.getTiddlerText('SiteProxy')||'SiteProxy';
cmi.$('importSiteProxy').value=cmi.proxy;
if (window.Components) { // FF3 FIXUP
cmi.$('fileImportSource').style.display='none';
cmi.$('importLocalPanelFix').style.display='block';
}
cmi.$('chkSync').checked=cmi.sync;
cmi.$('chkImportTags').checked=cmi.importTags;
cmi.$('chkKeepTags').checked=cmi.keepTags;
cmi.$('chkAddTags').checked=cmi.addTags;
cmi.$('txtNewTags').value=cmi.newTags;
cmi.$('txtNewTags').style.display=cmi.addTags?'block':'none';
cmi.$('chkSync').checked=cmi.sync;
cmi.$('chkImportReport').checked=config.options.chkImportReport;
return panel;
}
//}}}
//{{{
// process control interactions
function onClickImportButton(which,event) {
var cmi=config.macros.importTiddlers; // abbreviation
var list=cmi.$('importList'); if (!list) return false;
var thePanel=cmi.$('importPanel');
var theCollisionPanel=cmi.$('importCollisionPanel');
var theNewTitle=cmi.$('importNewTitle');
var count=0;
switch (which.id)
{
case 'importFromFile': // show local panel
case 'importFromWeb': // show HTTP panel
cmi.local=(which.id=='importFromFile');
cmi.showPanel('importLocalPanel',cmi.local);
cmi.showPanel('importHTTPPanel',!cmi.local);
break;
case 'importOptions': // show/hide options panel
cmi.showPanel('importOptionsPanel',cmi.$('importOptionsPanel').style.display=='none');
break;
case 'fileImportSource':
case 'importLoad': // load import source into hidden frame
importReport(); // if an import was in progress, generate a report
cmi.inbound=null; // clear the imported tiddler buffer
refreshImportList(); // reset/resize the listbox
if (cmi.src=='') break;
// Load document, read it's DOM and fill the list
cmi.loadRemoteFile(cmi.src,cmi.filterTiddlerList);
break;
case 'importSelectFeed': // select a pre-defined systemServer feed URL
var p=Popup.create(which); if (!p) return false;
var tids=store.getTaggedTiddlers('systemServer');
if (!tids.length)
createTiddlyText(createTiddlyElement(p,'li'),'no pre-defined server feeds');
for (var t=0; t<tids.length; t++) {
var u=store.getTiddlerSlice(tids[t].title,'URL');
var d=store.getTiddlerSlice(tids[t].title,'Description');
if (!d||!d.length) d=store.getTiddlerSlice(tids[t].title,'description');
if (!d||!d.length) d=u;
createTiddlyButton(createTiddlyElement(p,'li'),tids[t].title,d,
function(){
var u=this.getAttribute('url');
document.getElementById('importSourceURL').value=u;
config.macros.importTiddlers.src=u;
document.getElementById('importLoad').onclick();
},
null,null,null,{url:u});
}
Popup.show();
event.cancelBubble = true;
if (event.stopPropagation) event.stopPropagation();
return false;
// create popup with feed list
// onselect, insert feed URL into input field.
break;
case 'importSelectAll': // select all tiddler list items (i.e., not headings)
importReport(); // if an import was in progress, generate a report
for (var t=0,count=0; t < list.options.length; t++) {
if (list.options[t].value=='') continue;
list.options[t].selected=true;
count++;
}
clearMessage(); displayMessage(cmi.countMsg.format([count]));
cmi.$('importStart').disabled=!count;
break;
case 'importSelectNew': // select tiddlers not in current document
importReport(); // if an import was in progress, generate a report
for (var t=0,count=0; t < list.options.length; t++) {
list.options[t].selected=false;
if (list.options[t].value=='') continue;
list.options[t].selected=!store.tiddlerExists(list.options[t].value);
count+=list.options[t].selected?1:0;
}
clearMessage(); displayMessage(cmi.countMsg.format([count]));
cmi.$('importStart').disabled=!count;
break;
case 'importSelectChanges': // select tiddlers that are updated from existing tiddlers
importReport(); // if an import was in progress, generate a report
for (var t=0,count=0; t < list.options.length; t++) {
list.options[t].selected=false;
if (list.options[t].value==''||!store.tiddlerExists(list.options[t].value)) continue;
for (var i=0; i<cmi.inbound.length; i++) // find matching inbound tiddler
{ var inbound=cmi.inbound[i]; if (inbound.title==list.options[t].value) break; }
list.options[t].selected=(inbound.modified-store.getTiddler(list.options[t].value).modified>0); // updated tiddler
count+=list.options[t].selected?1:0;
}
clearMessage(); displayMessage(cmi.countMsg.format([count]));
cmi.$('importStart').disabled=!count;
break;
case 'importSelectDifferences': // select tiddlers that are new or different from existing tiddlers
importReport(); // if an import was in progress, generate a report
for (var t=0,count=0; t < list.options.length; t++) {
list.options[t].selected=false;
if (list.options[t].value=='') continue;
if (!store.tiddlerExists(list.options[t].value)) { list.options[t].selected=true; count++; continue; }
for (var i=0; i<cmi.inbound.length; i++) // find matching inbound tiddler
{ var inbound=cmi.inbound[i]; if (inbound.title==list.options[t].value) break; }
list.options[t].selected=(inbound.modified-store.getTiddler(list.options[t].value).modified!=0); // changed tiddler
count+=list.options[t].selected?1:0;
}
clearMessage(); displayMessage(cmi.countMsg.format([count]));
cmi.$('importStart').disabled=!count;
break;
case 'importApplyFilter': // filter list to include only matching tiddlers
importReport(); // if an import was in progress, generate a report
clearMessage();
if (!cmi.all) // no tiddlers loaded = '0 selected'
{ displayMessage(cmi.countMsg.format([0])); return false; }
var hash=cmi.$('importLastFilter').value;
cmi.inbound=cmi.filterByHash('#'+hash,cmi.all);
refreshImportList(); // reset/resize the listbox
break;
case 'importStart': // initiate the import processing
importReport(); // if an import was in progress, generate a report
cmi.$('importApplyToAll').checked=false;
cmi.$('importStart').value=cmi.stopText;
if (cmi.index>0) cmi.index=-1; // stop processing
else cmi.index=importTiddlers(0); // or begin processing
importStopped();
break;
case 'importClose': // unload imported tiddlers or hide the import control panel
// if imported tiddlers not loaded, close the import control panel
if (!cmi.inbound) { thePanel.style.display='none'; break; }
importReport(); // if an import was in progress, generate a report
cmi.inbound=null; // clear the imported tiddler buffer
refreshImportList(); // reset/resize the listbox
break;
case 'importSkip': // don't import the tiddler
cmi.lastAction=which;
var theItem = list.options[cmi.index];
for (var j=0;j<cmi.inbound.length;j++)
if (cmi.inbound[j].title==theItem.value) break;
var theImported = cmi.inbound[j];
theImported.status='skipped after asking'; // mark item as skipped
theCollisionPanel.style.display='none';
cmi.index=importTiddlers(cmi.index+1); // resume with NEXT item
importStopped();
break;
case 'importRename': // change name of imported tiddler
cmi.lastAction=which;
var theItem = list.options[cmi.index];
for (var j=0;j<cmi.inbound.length;j++)
if (cmi.inbound[j].title==theItem.value) break;
var theImported = cmi.inbound[j];
theImported.status = 'renamed from '+theImported.title; // mark item as renamed
theImported.set(theNewTitle.value,null,null,null,null); // change the tiddler title
theItem.value = theNewTitle.value; // change the listbox item text
theItem.text = theNewTitle.value; // change the listbox item text
theCollisionPanel.style.display='none';
cmi.index=importTiddlers(cmi.index); // resume with THIS item
importStopped();
break;
case 'importMerge': // join existing and imported tiddler content
cmi.lastAction=which;
var theItem = list.options[cmi.index];
for (var j=0;j<cmi.inbound.length;j++)
if (cmi.inbound[j].title==theItem.value) break;
var theImported = cmi.inbound[j];
var theExisting = store.getTiddler(theItem.value);
var theText = theExisting.text+'\n----\n^^merged from: ';
theText +='[['+cmi.src+'#'+theItem.value+'|'+cmi.src+'#'+theItem.value+']]^^\n';
theText +='^^'+theImported.modified.toLocaleString()+' by '+theImported.modifier+'^^\n'+theImported.text;
var theDate = new Date();
var theTags = theExisting.getTags()+' '+theImported.getTags();
theImported.set(null,theText,null,theDate,theTags);
theImported.status = 'merged with '+theExisting.title; // mark item as merged
theImported.status += ' - '+theExisting.modified.formatString('MM/DD/YYYY 0hh:0mm:0ss');
theImported.status += ' by '+theExisting.modifier;
theCollisionPanel.style.display='none';
cmi.index=importTiddlers(cmi.index); // resume with this item
importStopped();
break;
case 'importReplace': // substitute imported tiddler for existing tiddler
cmi.lastAction=which;
var theItem = list.options[cmi.index];
for (var j=0;j<cmi.inbound.length;j++)
if (cmi.inbound[j].title==theItem.value) break;
var theImported = cmi.inbound[j];
var theExisting = store.getTiddler(theItem.value);
theImported.status = 'replaces '+theExisting.title; // mark item for replace
theImported.status += ' - '+theExisting.modified.formatString('MM/DD/YYYY 0hh:0mm:0ss');
theImported.status += ' by '+theExisting.modifier;
theCollisionPanel.style.display='none';
cmi.index=importTiddlers(cmi.index); // resume with THIS item
importStopped();
break;
case 'importListSmaller': // decrease current listbox size, minimum=5
if (list.options.length==1) break;
list.size-=(list.size>5)?1:0;
cmi.listsize=list.size;
break;
case 'importListLarger': // increase current listbox size, maximum=number of items in list
if (list.options.length==1) break;
list.size+=(list.size<list.options.length)?1:0;
cmi.listsize=list.size;
break;
case 'importListMaximize': // toggle listbox size between current and maximum
if (list.options.length==1) break;
list.size=(list.size==list.options.length)?cmi.listsize:list.options.length;
break;
}
}
//}}}
//{{{
config.macros.importTiddlers.showPanel=function(place,show,skipAnim) {
if (typeof place=='string') var place=document.getElementById(place);
if (!place||!place.style) return;
if(!skipAnim && anim && config.options.chkAnimate) anim.startAnimating(new Slider(place,show,false,'none'));
else place.style.display=show?'block':'none';
}
//}}}
//{{{
function refreshImportList(selectedIndex) {
var cmi=config.macros.importTiddlers; // abbrev
var list=cmi.$('importList'); if (!list) return;
// if nothing to show, reset list content and size
if (!cmi.inbound) {
while (list.length > 0) { list.options[0] = null; }
list.options[0]=new Option(cmi.loadText,'',false,false);
list.size=cmi.listsize;
cmi.$('importLoad').disabled=false;
cmi.$('importLoad').style.display='inline';
cmi.$('importStart').disabled=true;
cmi.$('importOptions').disabled=true;
cmi.$('importOptions').style.display='none';
cmi.$('fileImportSource').disabled=false;
cmi.$('importFromFile').disabled=false;
cmi.$('importFromWeb').disabled=false;
cmi.$('importStart').value=cmi.startText;
cmi.$('importClose').value=cmi.doneText;
cmi.$('importSelectPanel').style.display='none';
cmi.$('importOptionsPanel').style.display='none';
return;
}
// there are inbound tiddlers loaded...
cmi.$('importLoad').disabled=true;
cmi.$('importLoad').style.display='none';
cmi.$('importOptions').style.display='inline';
cmi.$('importOptions').disabled=false;
cmi.$('fileImportSource').disabled=true;
cmi.$('importFromFile').disabled=true;
cmi.$('importFromWeb').disabled=true;
cmi.$('importClose').value=cmi.closeText;
if (cmi.$('importSelectPanel').style.display=='none')
cmi.showPanel('importSelectPanel',true);
// get the sort order
if (!selectedIndex) selectedIndex=0;
if (selectedIndex==0) cmi.sort='title'; // heading
if (selectedIndex==1) cmi.sort='title';
if (selectedIndex==2) cmi.sort='modified';
if (selectedIndex==3) cmi.sort='tags';
if (selectedIndex>3) {
// display selected tiddler count
for (var t=0,count=0; t < list.options.length; t++) {
if (!list.options[t].selected) continue;
if (list.options[t].value!='')
count+=1;
else { // if heading is selected, deselect it, and then select and count all in section
list.options[t].selected=false;
for ( t++; t<list.options.length && list.options[t].value!=''; t++) {
list.options[t].selected=true;
count++;
}
}
}
clearMessage(); displayMessage(cmi.countMsg.format([count]));
}
cmi.$('importStart').disabled=!count;
if (selectedIndex>3) return; // no refresh needed
// get the alphasorted list of tiddlers
var tiddlers=cmi.inbound;
tiddlers.sort(function (a,b) {if(a['title'] == b['title']) return(0); else return (a['title'] < b['title']) ? -1 : +1; });
// clear current list contents
while (list.length > 0) { list.options[0] = null; }
// add heading and control items to list
var i=0;
var indent=String.fromCharCode(160)+String.fromCharCode(160);
if (cmi.all.length==tiddlers.length)
var summary=cmi.summaryMsg.format([tiddlers.length,(tiddlers.length!=1)?cmi.plural:cmi.single]);
else
var summary=cmi.summaryFilteredMsg.format([tiddlers.length,cmi.all.length,(cmi.all.length!=1)?cmi.plural:cmi.single]);
list.options[i++]=new Option(summary,'',false,false);
list.options[i++]=new Option(((cmi.sort=='title' )?'>':indent)+' [by title]','',false,false);
list.options[i++]=new Option(((cmi.sort=='modified')?'>':indent)+' [by date]','',false,false);
list.options[i++]=new Option(((cmi.sort=='tags')?'>':indent)+' [by tags]','',false,false);
// output the tiddler list
switch(cmi.sort) {
case 'title':
for(var t = 0; t < tiddlers.length; t++)
list.options[i++] = new Option(tiddlers[t].title,tiddlers[t].title,false,false);
break;
case 'modified':
// sort descending for newest date first
tiddlers.sort(function (a,b) {if(a['modified'] == b['modified']) return(0); else return (a['modified'] > b['modified']) ? -1 : +1; });
var lastSection = '';
for(var t = 0; t < tiddlers.length; t++) {
var tiddler = tiddlers[t];
var theSection = tiddler.modified.toLocaleDateString();
if (theSection != lastSection) {
list.options[i++] = new Option(theSection,'',false,false);
lastSection = theSection;
}
list.options[i++] = new Option(indent+indent+tiddler.title,tiddler.title,false,false);
}
break;
case 'tags':
var theTitles = {}; // all tiddler titles, hash indexed by tag value
var theTags = new Array();
for(var t=0; t<tiddlers.length; t++) {
var title=tiddlers[t].title;
var tags=tiddlers[t].tags;
if (!tags || !tags.length) {
if (theTitles['untagged']==undefined) { theTags.push('untagged'); theTitles['untagged']=new Array(); }
theTitles['untagged'].push(title);
}
else for(var s=0; s<tags.length; s++) {
if (theTitles[tags[s]]==undefined) { theTags.push(tags[s]); theTitles[tags[s]]=new Array(); }
theTitles[tags[s]].push(title);
}
}
theTags.sort();
for(var tagindex=0; tagindex<theTags.length; tagindex++) {
var theTag=theTags[tagindex];
list.options[i++]=new Option(theTag,'',false,false);
for(var t=0; t<theTitles[theTag].length; t++)
list.options[i++]=new Option(indent+indent+theTitles[theTag][t],theTitles[theTag][t],false,false);
}
break;
}
list.selectedIndex=selectedIndex; // select current control item
if (list.size<cmi.listsize) list.size=cmi.listsize;
if (list.size>list.options.length) list.size=list.options.length;
}
//}}}
//{{{
// re-entrant processing for handling import with interactive collision prompting
function importTiddlers(startIndex) {
var cmi=config.macros.importTiddlers; // abbrev
if (!cmi.inbound) return -1;
var list=cmi.$('importList'); if (!list) return;
var t;
// if starting new import, reset import status flags
if (startIndex==0)
for (var t=0;t<cmi.inbound.length;t++)
cmi.inbound[t].status='';
for (var i=startIndex; i<list.options.length; i++) {
// if list item is not selected or is a heading (i.e., has no value), skip it
if ((!list.options[i].selected) || ((t=list.options[i].value)==''))
continue;
for (var j=0;j<cmi.inbound.length;j++)
if (cmi.inbound[j].title==t) break;
var inbound = cmi.inbound[j];
var theExisting = store.getTiddler(inbound.title);
// avoid redundant import for tiddlers that are listed multiple times (when 'by tags')
if (inbound.status=='added')
continue;
// don't import the 'ImportedTiddlers' history from the other document...
if (inbound.title=='ImportedTiddlers')
continue;
// if tiddler exists and import not marked for replace or merge, stop importing
if (theExisting && (inbound.status.substr(0,7)!='replace') && (inbound.status.substr(0,5)!='merge'))
return i;
// assemble tags (remote + existing + added)
var newTags = '';
if (cmi.importTags)
newTags+=inbound.getTags() // import remote tags
if (cmi.keepTags && theExisting)
newTags+=' '+theExisting.getTags(); // keep existing tags
if (cmi.addTags && cmi.newTags.trim().length)
newTags+=' '+cmi.newTags; // add new tags
inbound.set(null,null,null,null,newTags.trim());
// set the status to 'added' (if not already set by the 'ask the user' UI)
inbound.status=(inbound.status=='')?'added':inbound.status;
// set sync fields
if (cmi.sync) {
if (!inbound.fields) inbound.fields={}; // for TW2.1.x backward-compatibility
inbound.fields['server.page.revision']=inbound.modified.convertToYYYYMMDDHHMM();
inbound.fields['server.type']='file';
inbound.fields['server.host']=(cmi.local&&!cmi.src.startsWith('file:')?'file:///':'')+cmi.src;
}
// do the import!
store.suspendNotifications();
store.saveTiddler(inbound.title, inbound.title, inbound.text, inbound.modifier, inbound.modified, inbound.tags, inbound.fields, true, inbound.created);
store.fetchTiddler(inbound.title).created = inbound.created; // force creation date to imported value (needed for TW2.1.x and earlier)
store.resumeNotifications();
}
return(-1); // signals that we really finished the entire list
}
function importStopped() {
var cmi=config.macros.importTiddlers; // abbrev
var list=cmi.$('importList'); if (!list) return;
var theNewTitle=cmi.$('importNewTitle');
if (cmi.index==-1){
cmi.$('importStart').value=cmi.startText;
importReport(); // import finished... generate the report
} else {
// import collision...
// show the collision panel and set the title edit field
cmi.$('importStart').value=cmi.stopText;
cmi.showPanel('importCollisionPanel',true);
theNewTitle.value=list.options[cmi.index].value;
if (cmi.$('importApplyToAll').checked && cmi.lastAction && cmi.lastAction.id!='importRename')
onClickImportButton(cmi.lastAction);
}
}
//}}}
//{{{
function importReport() {
var cmi=config.macros.importTiddlers; // abbrev
if (!cmi.inbound) return;
// if import was not completed, the collision panel will still be open... close it now.
var panel=cmi.$('importCollisionPanel'); if (panel) panel.style.display='none';
// get the alphasorted list of tiddlers
var tiddlers = cmi.inbound;
// gather the statistics
var count=0; var total=0;
for (var t=0; t<tiddlers.length; t++) {
if (!tiddlers[t].status || !tiddlers[t].status.trim().length) continue;
if (tiddlers[t].status.substr(0,7)!='skipped') count++;
total++;
}
// generate a report
if (total) displayMessage(cmi.processedMsg.format([total]));
if (count && config.options.chkImportReport) {
// get/create the report tiddler
var theReport = store.getTiddler('ImportedTiddlers');
if (!theReport) { theReport=new Tiddler(); theReport.title='ImportedTiddlers'; theReport.text=''; }
// format the report content
var now = new Date();
var newText = 'On '+now.toLocaleString()+', '+config.options.txtUserName
newText +=' imported '+count+' tiddler'+(count==1?'':'s')+' from\n[['+cmi.src+'|'+cmi.src+']]:\n';
if (cmi.addTags && cmi.newTags.trim().length)
newText += 'imported tiddlers were tagged with: "'+cmi.newTags+'"\n';
newText += '<<<\n';
for (var t=0; t<tiddlers.length; t++) if (tiddlers[t].status)
newText += '#[['+tiddlers[t].title+']] - '+tiddlers[t].status+'\n';
newText += '<<<\n';
// update the ImportedTiddlers content and show the tiddler
theReport.text = newText+((theReport.text!='')?'\n----\n':'')+theReport.text;
theReport.modifier = config.options.txtUserName;
theReport.modified = new Date();
store.saveTiddler(theReport.title, theReport.title, theReport.text, theReport.modifier, theReport.modified, theReport.tags, theReport.fields);
story.displayTiddler(null,theReport.title,1,null,null,false);
story.refreshTiddler(theReport.title,1,true);
}
// reset status flags
for (var t=0; t<cmi.inbound.length; t++) cmi.inbound[t].status='';
// mark document as dirty and let display update as needed
if (count) { store.setDirty(true); store.notifyAll(); }
// always show final message when tiddlers were actually loaded
if (count) displayMessage(cmi.importedMsg.format([count,tiddlers.length,cmi.src.replace(/%20/g,' ')]));
}
//}}}
//{{{
// // File and XMLHttpRequest I/O
config.macros.importTiddlers.askForFilename=function(here) {
var msg=here.title; // use tooltip as dialog box message
var path=getLocalPath(document.location.href);
var slashpos=path.lastIndexOf('/'); if (slashpos==-1) slashpos=path.lastIndexOf('\\');
if (slashpos!=-1) path = path.substr(0,slashpos+1); // remove filename from path, leave the trailing slash
var file='';
var result='';
if(window.Components) { // moz
try {
netscape.security.PrivilegeManager.enablePrivilege('UniversalXPConnect');
var nsIFilePicker = window.Components.interfaces.nsIFilePicker;
var picker = Components.classes['@mozilla.org/filepicker;1'].createInstance(nsIFilePicker);
picker.init(window, msg, nsIFilePicker.modeOpen);
var thispath = Components.classes['@mozilla.org/file/local;1'].createInstance(Components.interfaces.nsILocalFile);
thispath.initWithPath(path);
picker.displayDirectory=thispath;
picker.defaultExtension='html';
picker.defaultString=file;
picker.appendFilters(nsIFilePicker.filterAll|nsIFilePicker.filterText|nsIFilePicker.filterHTML);
if (picker.show()!=nsIFilePicker.returnCancel) var result=picker.file.persistentDescriptor;
}
catch(e) { alert('error during local file access: '+e.toString()) }
}
else { // IE
try { // XPSP2 IE only
var s = new ActiveXObject('UserAccounts.CommonDialog');
s.Filter='All files|*.*|Text files|*.txt|HTML files|*.htm;*.html|';
s.FilterIndex=3; // default to HTML files;
s.InitialDir=path;
s.FileName=file;
if (s.showOpen()) var result=s.FileName;
}
catch(e) { // fallback
var result=prompt(msg,path+file);
}
}
return result;
}
config.macros.importTiddlers.loadRemoteFile = function(src,callback) {
if (src==undefined || !src.length) return null; // filename is required
var original=src; // URL as specified
var hashpos=src.indexOf('#'); if (hashpos!=-1) src=src.substr(0,hashpos); // URL with #... suffix removed (needed for IE)
clearMessage();
displayMessage(this.openMsg.format([src.replace(/%20/g,' ')]));
if (src.substr(0,5)!='http:' && src.substr(0,5)!='file:') { // if not a URL, read from local filesystem
var txt=loadFile(src);
if (!txt) { // file didn't load, might be relative path.. try fixup
var pathPrefix=document.location.href; // get current document path and trim off filename
var slashpos=pathPrefix.lastIndexOf('/'); if (slashpos==-1) slashpos=pathPrefix.lastIndexOf('\\');
if (slashpos!=-1 && slashpos!=pathPrefix.length-1) pathPrefix=pathPrefix.substr(0,slashpos+1);
src=pathPrefix+src;
if (pathPrefix.substr(0,5)!='http:') src=getLocalPath(src);
var txt=loadFile(src);
}
if (!txt) { // file still didn't load, report error
displayMessage(config.macros.importTiddlers.openErrMsg.format([src.replace(/%20/g,' '),'(filesystem error)']));
} else {
displayMessage(config.macros.importTiddlers.readMsg.format([txt.length,src.replace(/%20/g,' ')]));
if (version.major+version.minor*.1+version.revision*.01!=2.52) txt=convertUTF8ToUnicode(txt);
if (callback) callback(true,original,txt,src,null);
}
} else {
doHttp('GET',src,null,null,config.options.txtRemoteUsername,config.options.txtRemotePassword,callback,original,null);
}
}
config.macros.importTiddlers.readTiddlersFromHTML=function(html){
var remoteStore=new TiddlyWiki();
remoteStore.importTiddlyWiki(html);
return remoteStore.getTiddlers('title');
}
config.macros.importTiddlers.readTiddlersFromCSV=function(CSV){
var remoteStore=new TiddlyWiki();
// GET NAMES
var lines=CSV.replace(/\r/g,'').split('\n');
var names=lines.shift().replace(/"/g,'').split(',');
CSV=lines.join('\n');
// ENCODE commas and newlines within quoted values
var comma='!~comma~!'; var commaRE=new RegExp(comma,'g');
var newline='!~newline~!'; var newlineRE=new RegExp(newline,'g');
CSV=CSV.replace(/"([^"]*?)"/g,
function(x){ return x.replace(/\,/g,comma).replace(/\n/g,newline); });
// PARSE lines
var lines=CSV.split('\n');
for (var i=0; i<lines.length; i++) { if (!lines[i].length) continue;
var values=lines[i].split(',');
// DECODE commas, newlines, and doubled-quotes, and remove enclosing quotes (if any)
for (var v=0; v<values.length; v++)
values[v]=values[v].replace(commaRE,',').replace(newlineRE,'\n')
.replace(/^"|"$/g,'').replace(/""/g,'"');
// EXTRACT tiddler values
var title=''; var text=''; var tags=[]; var fields={};
var created=null; var when=new Date(); var who=config.options.txtUserName;
for (var v=0; v<values.length; v++) { var val=values[v];
if (names[v]) switch(names[v].toLowerCase()) {
case 'title': title=val.replace(/\[\]\|/g,'_'); break;
case 'created': created=new Date(val); break;
case 'modified':when=new Date(val); break;
case 'modifier':who=val; break;
case 'text': text=val; break;
case 'tags': tags=val.readBracketedList(); break;
default: fields[names[v].toLowerCase()]=val; break;
}
}
// CREATE tiddler in temporary store
if (title.length)
remoteStore.saveTiddler(title,title,text,who,when,tags,fields,true,created||when);
}
return remoteStore.getTiddlers('title');
}
config.macros.importTiddlers.createTiddlerFromFile=function(src,txt) {
var t=new Tiddler();
var pos=src.lastIndexOf("/"); if (pos==-1) pos=src.lastIndexOf("\\");
t.title=pos==-1?src:src.substr(pos+1);
t.text=txt;
t.created=t.modified=new Date();
t.modifier=config.options.txtUserName;
if (src.substr(src.length-3,3)=='.js') t.tags=['systemConfig'];
return [t];
}
config.macros.importTiddlers.filterTiddlerList=function(success,params,txt,src,xhr){
var cmi=config.macros.importTiddlers; // abbreviation
var src=src.replace(/%20/g,' ');
if (!success) { displayMessage(cmi.openErrMsg.format([src,xhr.status])); return; }
cmi.all=cmi.readTiddlersFromHTML(txt);
if (!cmi.all||!cmi.all.length) cmi.all=cmi.readTiddlersFromCSV(txt)
if (!cmi.all||!cmi.all.length) cmi.all=cmi.createTiddlerFromFile(src,txt)
var count=cmi.all?cmi.all.length:0;
var querypos=src.lastIndexOf('?'); if (querypos!=-1) src=src.substr(0,querypos);
displayMessage(cmi.foundMsg.format([count,src]));
cmi.inbound=cmi.filterByHash(params,cmi.all); // use full URL including hash (if any)
cmi.$('importLastFilter').value=cmi.lastFilter;
window.refreshImportList(0);
}
config.macros.importTiddlers.filterByHash=function(src,tiddlers){
var hashpos=src.lastIndexOf('#'); if (hashpos==-1) return tiddlers;
var hash=src.substr(hashpos+1); if (!hash.length) return tiddlers;
var tids=[];
var params=hash.parseParams('anon',null,true,false,false);
for (var p=1; p<params.length; p++) {
switch (params[p].name) {
case 'anon':
case 'open':
tids.pushUnique(params[p].value);
break;
case 'tag':
if (store.getMatchingTiddlers) { // for boolean expressions - see MatchTagsPlugin
var r=store.getMatchingTiddlers(params[p].value,null,tiddlers);
for (var t=0; t<r.length; t++) tids.pushUnique(r[t].title);
} else for (var t=0; t<tiddlers.length; t++)
if (tiddlers[t].isTagged(params[p].value))
tids.pushUnique(tiddlers[t].title);
break;
case 'story':
for (var t=0; t<tiddlers.length; t++)
if (tiddlers[t].title==params[p].value) {
tiddlers[t].changed();
for (var s=0; s<tiddlers[t].links.length; s++)
tids.pushUnique(tiddlers[t].links[s]);
break;
}
break;
case 'search':
for (var t=0; t<tiddlers.length; t++)
if (tiddlers[t].text.indexOf(params[p].value)!=-1)
tids.pushUnique(tiddlers[t].title);
break;
}
}
var matches=[];
for (var t=0; t<tiddlers.length; t++)
if (tids.contains(tiddlers[t].title))
matches.push(tiddlers[t]);
displayMessage(config.macros.importTiddlers.filterMsg.format([matches.length,hash]));
config.macros.importTiddlers.lastFilter=hash;
return matches;
}
//}}}
/***
!!!Control panel CSS
//{{{
!css
#importPanel {
display: none; position:absolute; z-index:11; width:35em; right:105%; top:3em;
background-color: #eee; color:#000; font-size: 8pt; line-height:110%;
border:1px solid black; border-bottom-width: 3px; border-right-width: 3px;
padding: 0.5em; margin:0em; -moz-border-radius:1em;-webkit-border-radius:1em;
}
#importPanel a, #importPanel td a { color:#009; display:inline; margin:0px; padding:1px; }
#importPanel table { width:100%; border:0px; padding:0px; margin:0px; font-size:8pt; line-height:110%; background:transparent; }
#importPanel tr { border:0px;padding:0px;margin:0px; background:transparent; }
#importPanel td { color:#000; border:0px;padding:0px;margin:0px; background:transparent; }
#importPanel select { width:100%;margin:0px;font-size:8pt;line-height:110%;}
#importPanel input { width:98%;padding:0px;margin:0px;font-size:8pt;line-height:110%}
#importPanel .box { border:1px solid #000; background-color:#eee; padding:3px 5px; margin-bottom:5px; -moz-border-radius:5px;-webkit-border-radius:5px;}
#importPanel .topline { border-top:1px solid #999; padding-top:2px; margin-top:2px; }
#importPanel .rad { width:auto; }
#importPanel .chk { width:auto; margin:1px;border:0; }
#importPanel .btn { width:auto; }
#importPanel .btn1 { width:98%; }
#importPanel .btn2 { width:48%; }
#importPanel .btn3 { width:32%; }
#importPanel .btn4 { width:23%; }
#importPanel .btn5 { width:19%; }
#importPanel .importButton { padding: 0em; margin: 0px; font-size:8pt; }
#importPanel .importListButton { padding:0em 0.25em 0em 0.25em; color: #000000; display:inline }
#backstagePanel #importPanel { left:10%; right:auto; }
!end
//}}}
!!!Control panel HTML
//{{{
!html
<!-- source and report -->
<table><tr><td align=left>
import from
<input type="radio" class="rad" name="importFrom" id="importFromFile" value="file" CHECKED
onclick="onClickImportButton(this,event)" title="show file controls"> local file
<input type="radio" class="rad" name="importFrom" id="importFromWeb" value="http"
onclick="onClickImportButton(this,event)" title="show web controls"> web server
</td><td align=right>
<input type=checkbox class="chk" id="chkImportReport"
onClick="config.options['chkImportReport']=this.checked;"> create report
</td></tr></table>
<div class="box" id="importSourcePanel" style="margin:.5em">
<div id="importLocalPanel" style="display:block;margin-bottom:2px;"><!-- import from local file -->
enter or browse for source path/filename<br>
<input type="file" id="fileImportSource" size=57 style="width:100%"
onKeyUp="config.macros.importTiddlers.src=this.value"
onChange="config.macros.importTiddlers.src=this.value;document.getElementById('importLoad').onclick()">
<div id="importLocalPanelFix" style="display:none"><!-- FF3 FIXUP -->
<input type="text" id="fileImportSourceFix" style="width:90%"
title="Enter a path/file to import"
onKeyUp="config.macros.importTiddlers.src=this.value"
onChange="config.macros.importTiddlers.src=this.value;document.getElementById('importLoad').onclick()">
<input type="button" id="fileImportSourceFixButton" style="width:7%" value="..."
title="Select a path/file to import"
onClick="var r=config.macros.importTiddlers.askForFilename(this); if (!r||!r.length) return;
document.getElementById('fileImportSourceFix').value=r;
config.macros.importTiddlers.src=r;
document.getElementById('importLoad').onclick()">
</div><!--end FF3 FIXUP-->
</div><!--end local-->
<div id="importHTTPPanel" style="display:none;margin-bottom:2px;"><!-- import from http server -->
<table><tr><td align=left>
enter a URL or <a href="javascript:;" id="importSelectFeed"
onclick="return onClickImportButton(this,event)" title="select a pre-defined 'systemServer' URL">
select a server</a><br>
</td><td align=right>
<input type="checkbox" class="chk" id="importUsePassword"
onClick="config.macros.importTiddlers.usePassword=this.checked;
config.macros.importTiddlers.showPanel('importIDPWPanel',this.checked,true);">password
<input type="checkbox" class="chk" id="importUseProxy"
onClick="config.macros.importTiddlers.useProxy=this.checked;
config.macros.importTiddlers.showPanel('importSiteProxy',this.checked,true);">proxy
</td></tr></table>
<input type="text" id="importSiteProxy" style="display:none;margin-bottom:1px" onfocus="this.select()" value="SiteProxy"
onKeyUp="config.macros.importTiddlers.proxy=this.value"
onChange="config.macros.importTiddlers.proxy=this.value;">
<input type="text" id="importSourceURL" onfocus="this.select()" value="SiteUrl"
onKeyUp="config.macros.importTiddlers.src=this.value"
onChange="config.macros.importTiddlers.src=this.value;">
<div id="importIDPWPanel" style="text-align:center;margin-top:2px;display:none";>
username: <input type=text id="txtImportID" style="width:25%"
onChange="config.options.txtRemoteUsername=this.value;">
password: <input type=password id="txtImportPW" style="width:25%"
onChange="config.options.txtRemotePassword=this.value;">
</div><!--end idpw-->
</div><!--end http-->
</div><!--end source-->
<div class="box" id="importSelectPanel" style="display:none;margin:.5em;">
<table><tr><td align=left>
select:
<a href="javascript:;" id="importSelectAll"
onclick="return onClickImportButton(this)" title="SELECT all tiddlers">
all</a>
<a href="javascript:;" id="importSelectNew"
onclick="return onClickImportButton(this)" title="SELECT tiddlers not already in destination document">
added</a>
<a href="javascript:;" id="importSelectChanges"
onclick="return onClickImportButton(this)" title="SELECT tiddlers that have been updated in source document">
changes</a>
<a href="javascript:;" id="importSelectDifferences"
onclick="return onClickImportButton(this)" title="SELECT tiddlers that have been added or are different from existing tiddlers">
differences</a>
</td><td align=right>
<a href="javascript:;" id="importListSmaller"
onclick="return onClickImportButton(this)" title="SHRINK list size">
– </a>
<a href="javascript:;" id="importListLarger"
onclick="return onClickImportButton(this)" title="GROW list size">
+ </a>
<a href="javascript:;" id="importListMaximize"
onclick="return onClickImportButton(this)" title="MAXIMIZE/RESTORE list size">
= </a>
</td></tr></table>
<select id="importList" size=8 multiple
onchange="setTimeout('refreshImportList('+this.selectedIndex+')',1)">
<!-- NOTE: delay refresh so list is updated AFTER onchange event is handled -->
</select>
<div style="text-align:center">
<a href="javascript:;"
title="click for help using filters..."
onclick="alert('A filter consists of one or more space-separated combinations of: tiddlertitle, tag:[[tagvalue]], tag:[[tag expression]] (requires MatchTagsPlugin), story:[[TiddlerName]], and/or search:[[searchtext]]. Use a blank filter to restore the list of all tiddlers.'); return false;"
>filter</a>
<input type="text" id="importLastFilter" style="margin-bottom:1px; width:65%"
title="Enter a combination of one or more filters. Use a blank filter for all tiddlers."
onfocus="this.select()" value=""
onKeyUp="config.macros.importTiddlers.lastFilter=this.value"
onChange="config.macros.importTiddlers.lastFilter=this.value;">
<input type="button" id="importApplyFilter" style="width:20%" value="apply"
title="filter list of tiddlers to include only those that match certain criteria"
onclick="return onClickImportButton(this)">
</div>
</div><!--end select-->
<div class="box" id="importOptionsPanel" style="text-align:center;margin:.5em;display:none;">
apply tags: <input type=checkbox class="chk" id="chkImportTags" checked
onClick="config.macros.importTiddlers.importTags=this.checked;">from source
<input type=checkbox class="chk" id="chkKeepTags" checked
onClick="config.macros.importTiddlers.keepTags=this.checked;">keep existing
<input type=checkbox class="chk" id="chkAddTags"
onClick="config.macros.importTiddlers.addTags=this.checked;
config.macros.importTiddlers.showPanel('txtNewTags',this.checked,false);
if (this.checked) document.getElementById('txtNewTags').focus();">add tags<br>
<input type=text id="txtNewTags" style="margin-top:4px;display:none;" size=15 onfocus="this.select()"
title="enter tags to be added to imported tiddlers"
onKeyUp="config.macros.importTiddlers.newTags=this.value;
document.getElementById('chkAddTags').checked=this.value.length>0;" autocomplete=off>
<nobr><input type=checkbox class="chk" id="chkSync"
onClick="config.macros.importTiddlers.sync=this.checked;">
link tiddlers to source document (for sync later)</nobr>
</div><!--end options-->
<div id="importButtonPanel" style="text-align:center">
<input type=button id="importLoad" class="importButton btn3" value="open"
title="load listbox with tiddlers from source document"
onclick="onClickImportButton(this)">
<input type=button id="importOptions" class="importButton btn3" value="options..."
title="set options for tags, sync, etc."
onclick="onClickImportButton(this)">
<input type=button id="importStart" class="importButton btn3" value="import"
title="start/stop import of selected source tiddlers into current document"
onclick="onClickImportButton(this)">
<input type=button id="importClose" class="importButton btn3" value="done"
title="clear listbox or hide control panel"
onclick="onClickImportButton(this)">
</div>
<div class="none" id="importCollisionPanel" style="display:none;margin:.5em 0 .5em .5em;">
<table><tr><td style="width:65%" align="left">
<table><tr><td align=left>
tiddler already exists:
</td><td align=right>
<input type=checkbox class="chk" id="importApplyToAll"
onclick="document.getElementById('importRename').disabled=this.checked;"
checked>apply to all
</td></tr></table>
<input type=text id="importNewTitle" size=15 autocomplete=off">
</td><td style="width:34%" align="center">
<input type=button id="importMerge"
class="importButton" style="width:47%" value="merge"
title="append the incoming tiddler to the existing tiddler"
onclick="onClickImportButton(this)"><!--
--><input type=button id="importSkip"
class="importButton" style="width:47%" value="skip"
title="do not import this tiddler"
onclick="onClickImportButton(this)"><!--
--><br><input type=button id="importRename"
class="importButton" style="width:47%" value="rename"
title="rename the incoming tiddler"
onclick="onClickImportButton(this)"><!--
--><input type=button id="importReplace"
class="importButton" style="width:47%" value="replace"
title="discard the existing tiddler"
onclick="onClickImportButton(this)">
</td></tr></table>
</div><!--end collision-->
!end
//}}}
***/
On Sun Nov 22 14:40:24 2009, rumara imported 1 tiddler from
[[http://devpad.tiddlyspot.com/#TiddlerToCPlugin|http://devpad.tiddlyspot.com/#TiddlerToCPlugin]]:
<<<
#[[TiddlerToCPlugin]] - added
<<<
----
On Fri Nov 20 01:07:31 2009, rumara imported 1 tiddler from
[[http://www.tiddlytools.com/#SectionLinksPlugin|http://www.tiddlytools.com/#SectionLinksPlugin]]:
<<<
#[[SectionLinksPlugin]] - added
<<<
/***
|Name|InlineJavascriptPlugin|
|Source|http://www.TiddlyTools.com/#InlineJavascriptPlugin|
|Documentation|http://www.TiddlyTools.com/#InlineJavascriptPluginInfo|
|Version|1.9.5|
|Author|Eric Shulman|
|License|http://www.TiddlyTools.com/#LegalStatements|
|~CoreVersion|2.1|
|Type|plugin|
|Description|Insert Javascript executable code directly into your tiddler content.|
''Call directly into TW core utility routines, define new functions, calculate values, add dynamically-generated TiddlyWiki-formatted output'' into tiddler content, or perform any other programmatic actions each time the tiddler is rendered.
!!!!!Documentation
>see [[InlineJavascriptPluginInfo]]
!!!!!Revisions
<<<
2009.04.11 [1.9.5] pass current tiddler object into wrapper code so it can be referenced from within 'onclick' scripts
2009.02.26 [1.9.4] in $(), handle leading '#' on ID for compatibility with JQuery syntax
|please see [[InlineJavascriptPluginInfo]] for additional revision details|
2005.11.08 [1.0.0] initial release
<<<
!!!!!Code
***/
//{{{
version.extensions.InlineJavascriptPlugin= {major: 1, minor: 9, revision: 5, date: new Date(2009,4,11)};
config.formatters.push( {
name: "inlineJavascript",
match: "\\<script",
lookahead: "\\<script(?: src=\\\"((?:.|\\n)*?)\\\")?(?: label=\\\"((?:.|\\n)*?)\\\")?(?: title=\\\"((?:.|\\n)*?)\\\")?(?: key=\\\"((?:.|\\n)*?)\\\")?( show)?\\>((?:.|\\n)*?)\\</script\\>",
handler: function(w) {
var lookaheadRegExp = new RegExp(this.lookahead,"mg");
lookaheadRegExp.lastIndex = w.matchStart;
var lookaheadMatch = lookaheadRegExp.exec(w.source)
if(lookaheadMatch && lookaheadMatch.index == w.matchStart) {
var src=lookaheadMatch[1];
var label=lookaheadMatch[2];
var tip=lookaheadMatch[3];
var key=lookaheadMatch[4];
var show=lookaheadMatch[5];
var code=lookaheadMatch[6];
if (src) { // external script library
var script = document.createElement("script"); script.src = src;
document.body.appendChild(script); document.body.removeChild(script);
}
if (code) { // inline code
if (show) // display source in tiddler
wikify("{{{\n"+lookaheadMatch[0]+"\n}}}\n",w.output);
if (label) { // create 'onclick' command link
var link=createTiddlyElement(w.output,"a",null,"tiddlyLinkExisting",wikifyPlainText(label));
var fixup=code.replace(/document.write\s*\(/gi,'place.bufferedHTML+=(');
link.code="function _out(place,tiddler){"+fixup+"\n};_out(this,this.tiddler);"
link.tiddler=w.tiddler;
link.onclick=function(){
this.bufferedHTML="";
try{ var r=eval(this.code);
if(this.bufferedHTML.length || (typeof(r)==="string")&&r.length)
var s=this.parentNode.insertBefore(document.createElement("span"),this.nextSibling);
if(this.bufferedHTML.length)
s.innerHTML=this.bufferedHTML;
if((typeof(r)==="string")&&r.length) {
wikify(r,s,null,this.tiddler);
return false;
} else return r!==undefined?r:false;
} catch(e){alert(e.description||e.toString());return false;}
};
link.setAttribute("title",tip||"");
var URIcode='javascript:void(eval(decodeURIComponent(%22(function(){try{';
URIcode+=encodeURIComponent(encodeURIComponent(code.replace(/\n/g,' ')));
URIcode+='}catch(e){alert(e.description||e.toString())}})()%22)))';
link.setAttribute("href",URIcode);
link.style.cursor="pointer";
if (key) link.accessKey=key.substr(0,1); // single character only
}
else { // run script immediately
var fixup=code.replace(/document.write\s*\(/gi,'place.innerHTML+=(');
var c="function _out(place,tiddler){"+fixup+"\n};_out(w.output,w.tiddler);";
try { var out=eval(c); }
catch(e) { out=e.description?e.description:e.toString(); }
if (out && out.length) wikify(out,w.output,w.highlightRegExp,w.tiddler);
}
}
w.nextMatch = lookaheadMatch.index + lookaheadMatch[0].length;
}
}
} )
//}}}
// // Backward-compatibility for TW2.1.x and earlier
//{{{
if (typeof(wikifyPlainText)=="undefined") window.wikifyPlainText=function(text,limit,tiddler) {
if(limit > 0) text = text.substr(0,limit);
var wikifier = new Wikifier(text,formatter,null,tiddler);
return wikifier.wikifyPlain();
}
//}}}
// // GLOBAL FUNCTION: $(...) -- 'shorthand' convenience syntax for document.getElementById()
//{{{
if (typeof($)=='undefined') { function $(id) { return document.getElementById(id.replace(/^#/,'')); } }
//}}}
(''//Internet Explorer//'' users: the Table of Contents will not function as links. Please read [[Author's Note]].)
<<showtoc>>
!Introduction
The fumes of turpentine, a traditional ingredient of oil varnishes, and of petroleum distillates (also called mineral spirits), an ingredient of modern oil mediums and thinners, can cause allergic reactions. These effects vary depending on the person and can include headache, nausea, lightheadedness, wooziness, loss of eye focus, loss of depth perception, tearing and stinging of eyes, etc, ranging to loss of consciousness or more severe effects. This tutorial is intended to detail ways to paint in oils that avoid the use of turpentine and petroleum distillates. We also shy away from Oil of Spike, an essential oil with a strong smell, and we avoid the modern citrus based thinners. We employ materials and methods that ensure the construction of a technically sound paint film. We explore the wide range of effects possible using methods and materials that fit within these restrictions.
!Construction of an oil painting
Oil paintings are constructed in layers. The cross section of a painting, assuming painting onto stretched canvas, looks like some variation of the following (adapted from Mayer```Ralph Mayer, //The Artist’s Handbook of Materials and Techniques: Fifth Edition, Revised and Updated// (Viking Adult, 1985), 499.```):
<html>
<a href="http://www.flickr.com/photos/76314685@N04/6857670964/lightbox/" target="_blank" title="RGP_layersgraphic by RumaraPainting, on Flickr"><img src="http://farm8.staticflickr.com/7042/6857670964_0560fef79c_o.jpg" width="459" height="403" alt="RGP_layersgraphic"></a>
<BR CLEAR=LEFT>
</html>
!Brief historical overview: oil painting and artists’ training in materials
In the early Middle Ages, tempera painting was preferred for artistic purposes and oil painting was known as a medium for decorative painting. Some oil and resin techniques were combined with tempera techniques in the 15th and 16th centuries. During the 16th century, oil painting had evolved to the point where Italian painters like Titian and Tintoretto could work the medium to masterful effect. By the 17th century, painting methods employing the combination of oil grounds, oil paints and varnishes became the widely preferred choice for artists. Research by conservators, the translation of useful period manuscripts, and attempts to recreate historical recipes by modern chemists have yielded a significant degree of understanding of early oil painting materials and techniques.
In the 16th-18th centuries, a portion of the painting studio was devoted to mulling paint and making mediums. Apprenticed at an early age, painters began their training by being taught recipes, laboratory techniques and painting methodology. Painters were guild craftsmen, working in the workshop guild system. Ready-made materials were also available at the time, but apprentices learned to be fluent in the materials of their craft.
By the 19th century, the industrial revolution brought the option of many more ready-made materials to the oil painting community. Painters had been trying to shift into being viewed as intellectuals rather than craftsmen. The availability of more and more ready-made art supplies, allowed painters to work without a grounded understanding of their materials, which supported the shift in reputation. Gradually, the knowledge of materials was left to chemists and industrial manufacturers. The perception of painters as craftsmen shifted to a new recognition of them as members of an elite. Modern painting styles that presented an extreme break from tighter traditional methods, paired with the separation from formal study of materials. By the 1960’s, classes in artist materials were all but eliminated from art schools. Many professional artists today use ready-made materials from art stores without comprehension of the chemistry of their function.
!Technical soundness
The measure of an oil painting’s soundness is its longevity in good condition. A well-constructed oil painting can last, modulo a gentle cleaning, without significant flaking, cracking, peeling, darkening and so on over many generations.
Because the molecular bonds created in the construction of a paint film are too small to be seen, we have to base our methodology on an understanding of the chemistry involved. Without training as a chemist, we rely on experts whom we trust, who have a knowledge of what has worked in the past, and who have a knowledge of the chemical transformations that occur during drying, and of environmental effects over time.
!The analogy of baking a cake
<html>
<div><table width="250" height="166" align="right">
<tr><td><a href="http://www.flickr.com/photos/76314685@N04/7001207509/lightbox/" target="_blank" title="IMG_5070 by RumaraPainting, on Flickr"><img src="http://farm7.staticflickr.com/6235/7001207509_d0ed3c4c9b_o.jpg" width="350" height="233" align="center" alt="IMG_5070"></a></td></tr>
<tr><td>Ingredients and equipment for making a chiffon cake</td></tr></table></div>
<br>
<br>
</html>The chemistry of baking is dependent upon proper ''ingredients'', proper ''proportions'' of ingredients, and proper ''procedure''. The ''ingredients'' for a chiffon cake are cake flour, eggs, sugar, baking powder, salt, oil, lemon zest, vanilla and cream of tartar.<html>
<BR CLEAR=RIGHT>
</html>
We use a recipe from //The Joy of Cooking// (Scribner, 1997) ISBN 0-684-81870-1, p 949. //Joy// discusses the chemistry of chiffon cakes, and the importance of the proper ''ingredients'', in several introductory paragraphs:
>“…choose oil that has as little flavor as possible and contains no silicates (check the ingredients label) [author’s note], as silicates inhibit foaming (of the egg whites) [my note]. Safflower, peanut, corn and sunflower oils are good choices. Since oil does not contribute the flavor of butter, chiffon cakes need lots of flavor from other ingredients, such as tangy citrus juice and zest, spices, chocolate or cocoa, or toasted nuts.
><br>
>Cakes made with oil are specially formulated. Do not try to substitute oil for butter or shortening in other types of cakes, and do not stray from the method for chiffon cakes.”
<html>
<div><table width="250" height="166" align="right">
<tr><td><a href="http://www.flickr.com/photos/76314685@N04/6855090542/lightbox/" target="_blank" title="IMG_5082 by RumaraPainting, on Flickr"><img src="http://farm8.staticflickr.com/7269/6855090542_defe9f5169_o.jpg" width="350" height="233" align="center" alt="IMG_5082"></a></td></tr>
<tr><td>Measuring cups and spoons</td></tr></table></div>
<br>
<br>
</html>The ''proportions'' of flour to leavening are significant. Too much baking powder, and the cake will bubble over and fall in the oven. Too little, and the cake won’t fill the baking pan. The proportion of each ingredient is significant to create a light, moist cake. The number of eggs ensures a light batter with substance – too few eggs and the batter will be heavy, too many and the batter will become more like a soufflé than a cake…and so on.<html>
<BR CLEAR=RIGHT>
<br>
<div><table width="250" height="166" align="right">
<tr><td><a href="http://www.flickr.com/photos/76314685@N04/7001207365/lightbox/" target="_blank" title="IMG_4908 by RumaraPainting, on Flickr"><img src="http://farm8.staticflickr.com/7093/7001207365_9888f083b1_o.jpg" width="350" height="233" align="center" alt="IMG_4908"></a></td></tr>
<tr><td>Rotary beater in the egg whites, which are at stiff peaks</td></tr></table></div>
<br>
<br>
</html>Proper ''procedure'' includes dividing the eggs, and beating the egg whites separately to “stiff peaks” with the cream of tartar. Beating the whites too little, and the cake won’t have its light, airy body. Not dividing the eggs, and the cake will be dense and more like a brownie. Baking the cake at too low a temperature and it will dry out. At too high a temperature, and it will rise too quickly and overrun the pan…<html>
<BR CLEAR=RIGHT>
<br>
One hour after constructing the cake, we will know if we made it correctly.
<br>
<br>
<a href="http://www.flickr.com/photos/76314685@N04/7003785399/lightbox/" target="_blank" title="RGP_process_screenshot05 by RumaraPainting, on Flickr"><img src="http://farm8.staticflickr.com/7195/7003785399_4194301bca_o.jpg" width="700" height="235" alt="RGP_process_screenshot05"></a>
<br>
<BR CLEAR=LEFT>
<br>
<div><table width="250" height="166" align="right">
<tr><td><a href="http://www.flickr.com/photos/76314685@N04/7001204855/lightbox/" target="_blank" title="IMG_3870 by RumaraPainting, on Flickr"><img src="http://farm8.staticflickr.com/7229/7001204855_77057aa2c7_o.jpg" width="350" height="233" align="center" alt="IMG_3870"></a></td></tr>
<tr><td>Ingredients and equipment to make a painting</td></tr></table></div>
<br>
<br>
</html>With oil painting, we won’t know if we created a technically sound painting within the span of our lifetime. The molecular bonds are too tiny for us to see, and the effects that the lack of proper bonding engenders, may be too many years in the future for us to see either. The ''ingredients'' used, the ''proportion'' of ingredients, and the ''procedure'' used to construct the painting, all entail decisions that must be based in a grounded understanding of what will happen over time.<html>
<BR CLEAR=RIGHT>
<br>
<br>
<a href="http://www.flickr.com/photos/76314685@N04/6857671116/lightbox/" target="_blank" title="RGP_process_screenshot04 by RumaraPainting, on Flickr"><img src="http://farm7.staticflickr.com/6044/6857671116_1956bd2ec6_o.jpg" width="700" height="371" alt="RGP_process_screenshot04"></a>
<br>
<BR CLEAR=LEFT>
</html>
What are your goals as an artist? Do you wish to create oil paintings that will last for several generations? You may be comfortable creating art that will last for ten or twenty years without significantly visible change. Some of contemporary art is meant to be transient, lasting weeks or days. [[Christo and Jeanne Claude|http://www.christojeanneclaude.net/]] are one pair of contemporary artists who have worked in this manner; another is artist [[Andy Goldsworthy|http://en.wikipedia.org/wiki/Andy_Goldsworthy]]. Many marvelous effects in painting, and very beautiful and striking art, can be created without working within the restrictions posed by using materials with the aim of longevity.
The aim of this tutorial is to present technical details of options to paint within guidelines that ensure longevity. The knowledge of options can aid in your goals, whether you choose to aim for the longer term, or not.
!Painting without thinners
The most technically sound method of oil painting is to paint with the paint alone. The addition of mediums to the paint, and the variety of ways to use mediums, vastly broadens the optical and handling effects possible with the paint. Many, but not all, traditional oil painting mediums were made with a mix of oil and varnish. Varnishes are made with a combination of oil, resin and thinner. We limit ourselves to oil painting mediums made with just oil and resins. The improvement in the range of possible effects as compared to painting with just paint, is still vast.
<<tiddler HideTiddlerTags>>
<<search>>
[[Author's Note]]
[[Introduction]]
[[Table of Contents]]
[[Definitions]]
[[Drying Oils]]
[[Grounds]]
[[Drawing on Canvas]]
[[Colored Grounds]]
[[Oiling Out]]
[[Other Mediums]]
[[Softening Stiff Paint]]
[[Varnishing]]
[[Reconstituting]]
[[Cleaning]]
[[Heavy Metals Safety]]
[["Green Painting"]]
[[Alkyds]]
[[Perspectives]]
[[Materials]]
[[References]]
[[Acknowledgments]]
[[Dedication]]
[[CONTACT]]
^^Content © 2011 [[Rumara|http://www.rumara.com/]]
site dev, photos & videos:
[[VisualsMeetWords|http://www.visualsmeetwords.com/]]
[img[http://www.tiddlywiki.com/favicon.ico]] [[TiddlyWiki|http://www.tiddlywiki.com]] <<version>>^^
<!--{{{-->
<link rel='alternate' type='application/rss+xml' title='RSS' href='index.xml' />
<link rel="shortcut icon" href="http://homepage.mac.com/rumara/rgpfavicon.png" type="image/x-icon">
<!--}}}-->
(''//Internet Explorer//'' users: the Table of Contents will not function as links. Please read [[Author's Note]].)
<<showtoc>>
!How to buy art materials at the lowest prices
''//From Jerrys and ASW//''
The two mega-discount internet mail-order companies [[Jerry's Artarama|http://www.jerrysartarama.com/]] and [[ASW (Arts Supply Warehouse)|http://www.aswexpress.com/Default.aspx]] offer almost every standard studio item.
In order to get the biggest discounts, the following procedure works well:
1) Make a wish list of materials. Keep this next to your computer.
2) Sign up for both [[Jerry's|http://www.jerrysartarama.com/]] (look in the right column of the home page for “email specials” to sign up) and [[ASW|http://www.aswexpress.com/Default.aspx]] (look at the bottom of the left column of the home page for “join our emailing list”) email specials.
3) Look for the //Sale Announcements//, such as //Spring Sale//, //Back to School Sale//, //Fourth of July Sale//, //Year-end Clearance Sale//, and so on. These sales represent the first level of discount offered. These sales last anywhere from a weekend to a month.
4) Check your email every day. Special discount email promotions, which represent the second level of discount offered (if they occur during a sale such as a //Back to School Sale//), can last as little as 24 hours. These discounts usually take the form of:
a. “15% off an order of $125 or more, offer valid for 48 hours”
b. or, “20% off an order of $150 or more, offer valid for the next 24 hours”,
c. or, “Free Shipping on an order of $99 or more, offer valid for the next 48 hours”, etc.
5) With some luck, some of the items on your wish list will be double-discounted. The first discount price, from the //Back to School// or //Holiday// (etc) promotion, will be listed next to the item; the second level of discount, from the short-term email promotions, is obtained by applying a given promotional code at the time of purchase.
6) Note that Jerry's and ASW have differing shipping policies. ASW currently charges a flat $6.95 for shipping, while Jerry's offers free shipping for orders over $175.
Keep in mind that products from these companies may have been sitting on a warehouse shelf for months or longer. For many products, this won’t make a difference (see [[Perspectives]]).
''//From Studio Products (please see [[Author's Note]])//''
Studio Products runs an [[online forum|http://forums.studioproducts.com/]] where traditional materials and methods of oil painting are discussed. Joining the forum for $70 annual membership fee will enable reading all the forum postings, and in addition, gives (currently) a 24% discount on art supplies purchased at the [[Studio Products store|http://store.studioproducts.com/]] (please see [[Author's Note]]). If you spend $300+ a year on their products, you will come out ahead.
''//From small manufacturers//''
Specialty or smaller mail-order arts supply companies do not offer routine discounts. If you buy enough from them, it might be possible to negotiate a deal, but this is not in my experience.
Examples include:
*[[Alchemist|http://amberalchemy.com/]], offering old master mediums.
*[[Robert Doak|http://robertdoakcolors.com/]], offering special paint colors made from proprietary mixes.
*[[Kremer Pigments|http://www.kremerpigments.com/]], offering ground pigments including a selection of ground minerals like lapis lazuli and paint-making materials and tools, resins and other binding ingredients for making mediums and paints, and other specialty items.
*[[Sinopia Pigments|http://www.sinopia.com/index.aspx]], offering a wide range of ground pigments, binders and other paint-making materials, gold leaf supplies, and more.
!Acrylic gesso
<html>
<div><table width="250" height="166" align="right">
<tr><td><a href="http://www.flickr.com/photos/76314685@N04/6855089098/lightbox/" target="_blank" title="IMG_4345 by RumaraPainting, on Flickr"><img src="http://farm8.staticflickr.com/7245/6855089098_12c0c905f5_o.jpg" width="350" height="233" align="center" alt="IMG_4345"></a></td></tr>
<tr><td>Daniel Smith Acrylic Gesso</td></tr></table></div>
</html>Many acrylic gessoes are available. One good one is [[Daniel Smith Acrylic Gesso|http://www.danielsmith.com/Item--i-G-284-040]] (see [[Grounds]]).<html>
<BR CLEAR=RIGHT>
</html>
!Aprons and smocks
Artists who are vigilant about paint smears may wish to use an artist apron (covers front of body down to knees) or smock (has sleeves). These are available at artist supply stores including [[Jerry's|http://www.jerrysartarama.com/discount-art-supplies/Apparel.htm]].
!Baby Oil Gel
Baby oil that has been slightly gelled. Made by [[Johnson & Johnson|http://www.johnsonsbaby.com/product.do?id=76]], and available at chain drugstores. Useful for keeping brushes soft until washing (see [[Cleaning]]).
!Baby wipes
These soft, oily tissues are useful for wiping paint smears off of skin while working (see [[Cleaning]]). Baby Wipes are available at drugstores like [[Rite Aid|http://www.riteaidonlinestore.com/qxp207847_333181_sespider/rite_aid/sensitive_baby_wipes_fragrance_free.htm]] in a variety of brand names.
!Brush cleaners
One good brush cleaner is [["The Masters" Brush Cleaner and Preserver|http://generalpencil.com/gpc_products_masters.html]], made by General Pencil Company, available at [[Jerry's|http://www.jerrysartarama.com/discount-art-supplies%2fBrush-Washers-and-Cleaning-Supplies%2fBrush-and-Hand-Cleaners%2fMasters-Brush-Cleaner-and-Preserver.htm]].
Another good one is Studio Products’ [[Ugly Dog Brush Soap|http://store.studioproducts.com/Ugly-Dog-Brush-Soap-p-16169.html]] (please see [[Author's Note]]).
!Canada balsam
Canada balsam is sap from the [[balsam fir tree|http://en.wikipedia.org/wiki/Abies_balsamea]]. Unlike larch balsam, this balsam is optically pure, and is used for setting specimens in microscope slides. It is available from [[Studio Products|http://store.studioproducts.com/Canada-Balsam-1oz.-jar-p-16133.html]] (please see [[Author's Note]]) and other sources.
!Canvas scraping knife
<html>
<div><table width="250" height="166" align="right">
<tr><td><a href="http://www.flickr.com/photos/76314685@N04/7001206037/lightbox/" target="_blank" title="IMG_4335 by RumaraPainting, on Flickr"><img src="http://farm8.staticflickr.com/7179/7001206037_9d097c83c4_o.jpg" width="350" height="233" align="center" alt="IMG_4335"></a></td></tr>
<tr><td>Canvas scraping knife</td></tr></table></div>
</html>These knives are designed to remove lumps of dry canvas from a dry painting, without cutting off the paint film down to the canvas fibers (see [[Reconstituting]]). Available from [[Jerry's|http://www.jerrysartarama.com/discount-art-supplies/Brushes-and-Palette-Knives/Palette-Knives/Steel-Canvas-Scrapers-and-Sets/Steel-Canvas-Scraper-Set.htm]] and other art supply stores.<html>
<BR CLEAR=RIGHT>
</html>
!Dropper bottles
These are available from many internet sources, one such is [[SKS Bottle & Packaging|http://www.sks-bottle.com/340c/fin4a.html]].
If you don’t want to invest in a lot of bottles, try your local pharmacist. Ask to buy a few empty dropper bottles (note: they will charge you much more per piece, than ordering online in bulk). Then reuse.
!Dry pigments
Oil paint is made from a mixture of dry pigment, which provides the color, a binding oil such as linseed oil, and additives to improve handling and preserve the paint. Dry pigments used to be hand-ground in a mortar and pestle and varied in coarseness according to the wish of the artist. Modern dry pigment is ground to a uniform coarseness.
Many dry pigments are ground up metals or other substances which when inhaled can have harmful health effects (see [[Heavy Metals Safety]]). I am not familiar with proper safe procedures for handling toxic dry pigments.
[[Sinopia Pigments|http://www.sinopia.com/]] and [[Kremer Pigments|http://www.kremerpigments.com/]] provide a huge range of available dry pigments.
!Glass funnel
It is important to purchase one with the appropriate neck width. If you are using a funnel for decanting BOM into 1-4 oz glass dropper bottles, a 40mm or 50mm neck width will fit nicely into the mouths of the bottles. Glass funnels are standard laboratory equipment and are available from many online sources (such as [[The Science Company|http://secure.sciencecompany.com/Std-Stem-Glass-Funnel-40mm-P6211.aspx]]).
!Hand cleaners
Two good ones are [["The Masters" Hand Soap|http://generalpencil.com/gpc_products_masters.html]] (scroll below the Brush Cleaner), available at [[Jerry's|http://www.jerrysartarama.com/discount-art-supplies/Brush-Washers-and-Cleaning-Supplies/Brush-and-Hand-Cleaners/Masters-Artist-Hand-Soap.htm]]; and Studio Products’ [[Ugly Dog Painter’s Safety Soap|http://store.studioproducts.com/Ugly-Dog-PAINTERS-SAFETY-SOAP-p-16172.html]] (please see [[Author's Note]]), which is specially formulated to attract heavy metal particles.
!Larch balsam
Larch balsam is the thick, viscous, yellow exudation from the [[European Larch tree|http://en.wikipedia.org/wiki/European_Larch]]. Venice Turpentine, or Venetian Turpentine, is derived from this sap. Traditionally, pure balsam (purified but not distilled) was also referred to as turpentine. Larch balsam (called Larch Turpentine) is available from [[Kremer Pigments|http://kremerpigments.com/shopus/index.php?cat=0206&lang=ENG&product=62000]] and other sources.
!Latex gloves
These are available at hardware stores, and home improvement stores like [[Home Depot|http://www.homedepot.com/h_d1/N-5yc1vZ1xie/R-100674087/h_d2/ProductDisplay?langId=-1&storeId=10051&catalogId=10053]]. Several brands are available.
!Linseed oil
[[Special Aged Oil|http://store.studioproducts.com/Special-Aged-Oil-5oz.-bottle-p-16181.html]] (please see [[Author's Note]]) is Studio Products’ brand of regular linseed oil. With over 300 kinds of linseed oil available for industrial use, Studio Products chooses this one to use as the binder for its paints and mediums. Special Aged Oil has the highest percentage of linolenic and linoleic acids of any linseed oil available for industrial use. These fatty acids form links in the web of chemical bonds that is created as the oil polymerizes. More of such fatty acids, means more bonds form during polymerization, forming a stronger paint film.
Other brands of (not Stand or Sun-thickened) linseed oil are good too, such as [[Winsor & Newton Refined Linseed Oil|http://www.winsornewton.com/products/oils-solvents-mediums-varnishes/oil-colour--oils-solvents-mediums-varnishes/drying-oils/refined-linseed-oil/]] which is available at [[Jerry's|http://www.jerrysartarama.com/discount-art-supplies/Oil-Color-Paints-and-Mediums/Winsor-and-Newton-Oil-Colors-and-Mediums/Winsor-and-Newton-Oil-Color-Drying-Oils.htm]], or [[Williamsburg Refined Linseed Oil|http://www.williamsburgoilpaint.bizland.com/Mediums/oils.htm]] also available at [[Jerry's|http://www.jerrysartarama.com/discount-art-supplies/Oil-Color-Paints-and-Mediums/Williamsburg-Oil-Paints-and-Mediums/Williamsburg-Oil-Painting-Mediums.htm]].
!Marble slab
Marble has a tight, non-porous surface. It is important to choose marble for mulling and working pigmented mixtures, rather than for example granite, which has a porous surface and will take pigment into fine veins and cracks, becoming very difficult to clean without thinners.
<html>
<div><table width="250" height="166" align="right">
<tr><td><a href="http://www.flickr.com/photos/76314685@N04/7001204229/lightbox/" target="_blank" title="IMG_3753 by RumaraPainting, on Flickr"><img src="http://farm8.staticflickr.com/7129/7001204229_bce49b0fdc_o.jpg" width="350" height="233" align="center" alt="IMG_3753"></a></td></tr>
<tr><td>A marble slab, slightly stained from use</td></tr></table></div>
<br>
<br>
A good way to start looking for a one-foot square standard sized marble tile, is by looking under “tile” in the yellow pages for a tile specialty store. Home Depot and other major suppliers do not normally sell single tiles. A specialty tile store however may have extra demo tiles, and be willing to sell just one. A marble tile will cost somewhere around $10.
<br>
<br>
Specialty tile stores also may have marble slab remnants with one polished side.
<BR CLEAR=RIGHT>
<div><table width="250" height="166" align="right">
<tr><td><a href="http://www.flickr.com/photos/76314685@N04/6855087240/lightbox/" target="_blank" title="IMG_3757 by RumaraPainting, on Flickr"><img src="http://farm8.staticflickr.com/7182/6855087240_68e1148ca5_o.jpg" width="350" height="233" align="center" alt="IMG_3757"></a></td></tr>
<tr><td>The flip side, showing self-stick felt pads</td></tr></table></div>
</html>Stick several self-stick felt pads (available at [[Home Depot|http://www.homedepot.com/h_d1/N-5yc1vZ1xie/R-100389357/h_d2/ProductDisplay?langId=-1&storeId=10051&catalogId=10053]] and other hardware stores) on the bottom of the tile to act as shock absorbers when placing the tile on the table, and to protect the table from scratches.<html>
<BR CLEAR=RIGHT>
</html>
!Nail brush (soft bristles)
These are available at beauty supply stores (try [[Sally Beauty|http://www.sallybeauty.com/nail-brush/SBS-334004,default,pd.html]]) or cosmetics counters in department stores. Ask for a soft bristled, natural hair brush that will be gentle on skin. Good for cleaning small particles of paint from creases in the skin (see [[Cleaning]]).
!Paint tube
Empty paint tubes useful for tubing fresh paint are available from [[Jerry's|http://www.jerrysartarama.com/discount-art-supplies/Painting-Supplies/Empty-Paint-Tubes.htm]] and other arts supply stores. Standard size paint tubes are 45 ml.
!Painter’s blue tape
This tape is available everywhere that housepaints are sold ([[Home Depot|http://www.homedepot.com/h_d1/N-5yc1vZ1xie/R-100032184/h_d2/ProductDisplay?langId=-1&storeId=10051&catalogId=10053]] carries it). It peels off of most surfaces easily within the first few days after application, without damage to the surface.
!Palettes (airtight plastic)
<html>
<div><table width="250" height="166" align="right">
<tr><td><a href="http://www.flickr.com/photos/76314685@N04/6855087378/lightbox/" target="_blank" title="IMG_3765 by RumaraPainting, on Flickr"><img src="http://farm7.staticflickr.com/6221/6855087378_ce74c8713a_o.jpg" width="350" height="233" align="center" alt="IMG_3765"></a></td></tr>
<tr><td>A Masterson 12x16" palette box</td></tr></table></div>
</html>Masterson palettes close like a Tupperware container, covering wet paint and protecting it somewhat from air and light. Jerry's carries the Masterson brand in a 12x16” size, called an [[Artist’s Palette Seal|http://www.jerrysartarama.com/Painting-Supplies/Palettes/Air-Tight-Palettes/Masterson-Air-Tight-Palettes-and-Accessories]].
<html>
<BR CLEAR=RIGHT>
<div><table width="250" height="166" align="right">
<tr><td><a href="http://www.flickr.com/photos/76314685@N04/6855087406/lightbox/" target="_blank" title="IMG_3767 by RumaraPainting, on Flickr"><img src="http://farm8.staticflickr.com/7272/6855087406_132e75fc06_o.jpg" width="350" height="233" align="center" alt="IMG_3767"></a></td></tr>
<tr><td>The box containing ¼" glass cut to fit</td></tr></table></div>
<br>
<br>
One way to use this box is to have a glass palette cut to size. Visit a local glass shop (ask a hardware store where to go to purchase a piece of cut glass). Ask the glass shop to cut a 12x16" piece of ¼" glass. Ask that a corner approximately ½" deep be cut off, for ease of removing the palette from the box. Ask that the edges be ground for safety.
<br>
<br>
The cost should be around $15.
<BR CLEAR=RIGHT>
<div><table width="250" height="166" align="right">
<tr><td><a href="http://www.flickr.com/photos/76314685@N04/7001205199/lightbox/" target="_blank" title="IMG_3982 by RumaraPainting, on Flickr"><img src="http://farm8.staticflickr.com/7235/7001205199_67272e5477_o.jpg" width="350" height="233" align="center" alt="IMG_3982"></a></td></tr>
<tr><td>A corner of the glass is cut for easy removal from the box</td></tr></table></div>
<br>
<br>
<BR CLEAR=RIGHT>
<div><table width="250" height="166" align="right">
<tr><td><a href="http://www.flickr.com/photos/76314685@N04/7001204469/lightbox/" target="_blank" title="IMG_3771 by RumaraPainting, on Flickr"><img src="http://farm8.staticflickr.com/7047/7001204469_64d1f65d92_o.jpg" width="350" height="233" align="center" alt="IMG_3771"></a></td></tr>
<tr><td>Masterson palette box, brown paper insert, and glass palette insert</td></tr></table></div>
<br>
<br>
Cut a 12x16" piece of brown paper, such as from a shopping bag, or colored grey or brown drawing paper. Insert the paper into the Masterson box. Except for the underpainting, colors rarely get painted over pure white. A colored base under the glass will give a better approximation of how the paint on the palette will show up on the canvas.
<BR CLEAR=RIGHT>
</html>
Then insert the glass palette. Seal on the blue cover. Paint blobs will stay fresher in this box than on a palette completely exposed to air and light. To help the paint stay softer longer, keep the palette box in the refrigerator (NOT the freezer) (see [[Drying Oils]]).
!Palette knives and spatulas
These are available from most art suppliers including [[Jerry's|http://www.jerrysartarama.com/discount-art-supplies/Brushes-and-Palette-Knives/Palette-Knives/Creative-Mark-Painters-Edge-Painting-Knives-and-Sets/Creative-Mark-Painters-Edge-Knives.htm]]. Palette knives range from thin and delicate, to [[large and heavy|http://www.jerrysartarama.com/discount-art-supplies/Brushes-and-Palette-Knives/Palette-Knives/Liquitex-Painting-Knives/Liquitex-Large-Painting-Knives.htm?mybuyscid=6688554485]]. Different brands are available.
!Paper towels
<html>
<div><table width="250" height="166" align="right">
<tr><td><a href="http://www.flickr.com/photos/76314685@N04/7001204995/lightbox/" target="_blank" title="IMG_3962 by RumaraPainting, on Flickr"><img src="http://farm7.staticflickr.com/6096/7001204995_49db6a4217_o.jpg" width="350" height="233" align="center" alt="IMG_3962"></a></td></tr>
<tr><td>Scott Original Blue</td></tr></table></div>
</html>The heaviest, most absorbent paper towels, and the ones that take the longest to disintegrate, are [[Scott Original Blue Shop Towels|http://www.kcdiy.com/diy/products/Shop-Towels.asp]] made by ~Kimberly-Clark. Buy the Original Blue, not the Xtreme (Waffle Weave). The Xtreme (Waffle Weave) are thinner, allow moisture to bleed through quicker. Xtreme (Waffle Weave) towels can be wrung out and re-used. However, the Original Blue are thicker, and form a better barrier against bleed-through.<html>
<BR CLEAR=RIGHT>
<br>
Note that the Original Blue are available at Lowe’s (and other hardware stores), but NOT at Home Depot, which has shifted to carrying exclusively the Xtreme (Waffle Weave).
<br>
<div><table width="250" height="166" align="right">
<tr><td><a href="http://www.flickr.com/photos/76314685@N04/7001204963/lightbox/" target="_blank" title="IMG_3953 by RumaraPainting, on Flickr"><img src="http://farm8.staticflickr.com/7213/7001204963_eccfe42a1f_o.jpg" width="350" height="233" align="center" alt="IMG_3953"></a></td></tr>
<tr><td> Good... Better... Best</td></tr></table></div>
<br>
<br>
</html>Of the supermarket brand towels, the ones that last the longest before shredding are Viva brand. But these do not last nearly as long as Scott Original Blue. Viva brand towels are made by the same company, with the same technology as Scott Original Blue, but with a lower level of absorbency.<html>
<BR CLEAR=RIGHT>
</html>
!Razor scraper
Razor blade scrapers with single-edge razor blade replacements are available at hardware stores, usually in the paint section (these scrapers are used to clean window glass when painting window trim). The blade is retractable by pressing the central button with one’s thumb.
[[Hyde|http://www.hydetools.com/]] is one maker: search for Item #13000, or click [[here|http://www.hydetools.com/data/full_view_cjb.asp?path=%2FCombined%2FForB2B%2F13000.jpg]] to see a photo of the scraper.
<html>
<div><table width="250" height="166" align="right">
<tr><td><a href="http://www.flickr.com/photos/76314685@N04/6855087650/lightbox/" target="_blank" title="IMG_3810 by RumaraPainting, on Flickr"><img src="http://farm8.staticflickr.com/7128/6855087650_bef74787f8_o.jpg" width="350" height="233" align="center" alt="IMG_3810"></a></td></tr>
<tr><td>A dirty scraper and fresh blade</td></tr></table></div>
<br>
<br>
Changing a blade that is full of paint can be difficult.
<BR CLEAR=RIGHT>
<div><table width="250" height="166" align="right">
<tr><td><a href="http://www.flickr.com/photos/76314685@N04/7001204711/lightbox/" target="_blank" title="IMG_3816 by RumaraPainting, on Flickr"><img src="http://farm8.staticflickr.com/7094/7001204711_9943ec77a2_o.jpg" width="350" height="233" align="center" alt="IMG_3816"></a></td></tr>
<tr><td>The slot on the side for the blade to enter</td></tr></table></div>
<br>
<br>
</html>Using the razor scraper to scrape paint off a dirty palette may gum up the casing to some extent and make it difficult to withdraw the blade in order to change it. If the blade seems stuck, look on the edge next to the blade. On one side, there will be an open slot for the old blade to pop out.<html>
<BR CLEAR=RIGHT>
<div><table width="250" height="166" align="right">
<tr><td><a href="http://www.flickr.com/photos/76314685@N04/7001204733/lightbox/" target="_blank" title="IMG_3824 by RumaraPainting, on Flickr"><img src="http://farm8.staticflickr.com/7068/7001204733_b2ab650bc5_o.jpg" width="350" height="233" align="center" alt="IMG_3824"></a></td></tr>
<tr><td>Removing a sticky blade</td></tr></table></div>
<br>
<br>
</html>Turn the scraper so that the open side is facing UP. Press the blade down against the edge of a table (that doesn’t mind being scratched). The blade will pop up.<html>
<BR CLEAR=RIGHT>
<div><table width="250" height="166" align="right">
<tr><td><a href="http://www.flickr.com/photos/76314685@N04/7001204771/lightbox/" target="_blank" title="IMG_3833 by RumaraPainting, on Flickr"><img src="http://farm8.staticflickr.com/7064/7001204771_49c1c82caf_o.jpg" width="350" height="233" align="center" alt="IMG_3833"></a></td></tr>
<tr><td>The blade pops up</td></tr></table></div>
<BR CLEAR=RIGHT>
</html>
!Respirator
A respirator protects from inhalation of dust and fumes. Different respirators are used for different purposes. Artists that are allergic to turpentine and mineral spirits are reacting to organic vapors. Look for a respirator with the “OV” rating, for protection against Organic Vapors. Hardware stores such as [[Home Depot|http://www.homedepot.com/h_d1/N-5yc1vZ1xie/R-100195886/h_d2/ProductDisplay?langId=-1&storeId=10051&catalogId=10053]] carry respirators.
!Sanguine chalk
A natural red chalk mined in Italy. Used for drawings, including on canvas (see [[Drawing on Canvas]]). I have not found a source for natural sanguine chunks in the U.S. One source is [[Earth & Rowan Natural Art Materials|http://www.earthandrowan.com/product.htm]] in Ireland. Carve chunks to a point with a utility knife. An appropriately thin chunk may be used within a charcoal holder, available at [[Jerry's|http://www.jerrysartarama.com/discount-art-supplies/Charcoal/Charcoal-Holder.htm?mybuyscid=6688554485]]. A bit of interesting reading on sanguine for chalk drawings is [[here|http://arts.jrank.org/pages/9540/Chalk.html]].
!Scotch Brite pads
These [[industrial pads|http://www.scotch-brite.com/wps/portal/3M/en_US/Scotch-BriteBrand/Scotch-Brite/Products/Catalog/?PC_7_RJH9U52300V2E0I02BK7KM0GT3_nid=RWGDPNXX08gsBBDGVJTLBMglJC3NXJH2HPbl&prodID=RWGDPNXX08gs&lang=en_US]] are good for scuffing down surfaces such as a lower layer in the paint film, before applying the next layer, in order to increase surface area and thus improve bonding strength (see [[Alkyds]]). Available at Home Depot and other hardware stores.
!Sticky tape for a label
3M brand [[Scotch Painter's Masking Tape for Hard-to-Stick Surfaces 2060|http://www.shop3m.com/3m-scotch-painters-masking-tape-for-hard-to-stick-surfaces-2060-d55mv9wxfl.html?WT.mc_ev=clickthrough&WT.mc_id=3M-com-GoogleOneBox-3M-SCOTCH-PAINTERS-MASKING-TAPE-FOR-HARD-TO-STICK-SURFACES-2060-D55MV9WXFL]] is useful for surfaces that may have been slightly oily. This is available at Home Depot and other hardware stores.
!Superpencil
A pencil made by [[C.H. Hanson|http://www.chhanson.com/superpencil.html]] for carpenters and other craftspeople who need to mark up wallboard, wood and other materials that later will be painted. The superpencil will not bleed through subsequent layers of paint.
!Tube wringer
<html>
<div><table width="250" height="166" align="right">
<tr><td><a href="http://www.flickr.com/photos/76314685@N04/6855089020/lightbox/" target="_blank" title="IMG_4334 by RumaraPainting, on Flickr"><img src="http://farm8.staticflickr.com/7094/6855089020_8b9a6175cb_o.jpg" width="350" height="233" align="center" alt="IMG_4334"></a></td></tr>
<tr><td>Metal tube wringer</td></tr></table></div>
</html>Available from [[Jerry's|http://www.jerrysartarama.com/discount-art-supplies/Painting-Supplies/Tube-Wringers.htm]] and other arts supply stores. The metal tube wringers are more expensive but the plastic ones break. These are very useful for crimping metal paint tubes from the closed end, and squeezing all the way up to remove any bit of useful paint. They are also important for crimping closed the end of tubes when tubing (or retubing) paint.<html>
<BR CLEAR=RIGHT>
</html>
!Turpenoid Natural
Turpenoid Natural is a brush cleaner, available at [[Jerry's|http://www.jerrysartarama.com/discount-art-supplies%2fOil-Color-Paints-and-Mediums%2fWeber-Permalba-Oil-Colors-and-Mediums%2fWeber-Turpenoid-and-Turpenoid-Natural.htm]] and at art supply stores (see [[Other Mediums: Notes on using Turpenoid Natural|Other Mediums##Notes on using Turpenoid Natural]]).
!Wet-sanding sandpaper
<html>
<div><table width="250" height="166" align="right">
<tr><td><a href="http://www.flickr.com/photos/76314685@N04/6855087606/lightbox/" target="_blank" title="IMG_3801 by RumaraPainting, on Flickr"><img src="http://farm8.staticflickr.com/7127/6855087606_fe1d297ce8_o.jpg" width="350" height="233" align="center" alt="IMG_3801"></a></td></tr>
<tr><td>Wet-sand sandpaper</td></tr></table></div>
</html>Wet-sanding sandpaper can be used after soaking the paper in water. This sandpaper is black, rather than brown. Available at hardware and home improvement stores. A commonly available brand is [[Norton|http://www.nortonconsumer.com/SheetsDIY-SandWet.aspx]].<html>
<BR CLEAR=RIGHT>
</html>
<<tiddler HideTiddlerTags>>
/***
|Name|NavigationMacro|
|Created by|SaqImtiaz|
|Location|http://tw.lewcid.org/#NavigationMacro|
|Version|0.3 |
|Requires|~TW2.08+|
!Description:
*Creates Next and Prev buttons on tiddlers, to cycle through tiddlers in order.
**you can create next and previous buttons to navigate through your journals, or the tiddlers of a tutorial.
*You can exclude certain tiddlers, or navigate through tiddlers with a specific tag only.
*The tiddlers can be sorted by modified or created.
*Custom ordering will be available after the release of TW 2.1
*Needs to be added to the ViewTemplate
*Buttons are updated dynamically and are hidden if there is no next or previous tiddler.
!Usage
{{{<<navigation>>}}}
or for more options:
{{{<<navigation sort exclude tag labelPrevious labelNext >>}}}
where sort is ''created'' (default) or ''modified''
exlcude is the tag to exclude.
tag is the tag to navigate through.
labelPrevious is the label for the previous button.
labelNext is the label for the next button.
I recommend adding it to the ViewTemplate in the viewer div:
{{{<div class='viewer'>
<span macro='view text wikified'></span>
<span macro='navigation "" "" plugin'></span></div>}}}
!Example:
The next and previous buttons at the bottom of this tiddler will cycle through all of my extensions for TW.
!History
* 25-06-06 : version 0.3, first release
!Code
***/
//{{{
window.refreshNavLink = function (e) {
var title = e.getAttribute("here");
var sort = e.getAttribute("sort");
var exclude = e.getAttribute("exclude");
if (e.getAttribute("tag")!=undefined) var tag = e.getAttribute("tag");
var navtype = e.getAttribute("navtype");
if (tag) {var tiddlers = store.getTaggedTiddlers(tag,sort);}
else {var tiddlers = store.getTiddlers(sort,exclude);}
for (var g=0; g<tiddlers.length; g++)
{if (title==tiddlers[g].title)
{if(navtype=="next" && !tiddlers[g+1])
e.className += " navNonExisting"
else if (navtype=="prev" && !tiddlers[g-1])
e.className += " navNonExisting"
else e.className = "button";}
}
}
config.refreshers.navLink = function(e,changeList){
refreshNavLink(e);
}
config.macros.navigation={};
config.macros.navigation.handler = function(place,macroName,params,wikifier,paramString,tiddler){
var sort = (params[0] && params[0]!=".")? params[0]: "created";
var exclude =(params[1] && params[1]!=".")? params[1]: undefined;
if (params[2])
{var tag= params[2];
if(tiddler.tags.contains(tag)==false)
return false;
}
var labelPrev = params[3] ? params[3] : "Previous";
var labelNext = params[4] ? params[4] : "Next";
var next = function(e){
if (!e) var e=window.event;
var theTarget = resolveTarget(e);
var navtype = theTarget.getAttribute("navtype");
if (tag) {var tiddlers = store.getTaggedTiddlers(tag,sort);}
else {var tiddlers = store.getTiddlers(sort,exclude);}
for (var g=0; g<tiddlers.length; g++)
{if (tiddler.title==tiddlers[g].title)
{if (navtype == "next")
story.displayTiddler(theTarget,tiddlers[g+1].title)
else if (navtype == "prev")
story.displayTiddler(theTarget,tiddlers[g-1].title)}
}
}
var createNavBtn = function(text,theId,mode){
var nextBtn = createTiddlyButton(place,text,text,next,null,theId);
nextBtn.setAttribute("refresh","navLink");
nextBtn.setAttribute("here",tiddler.title);
nextBtn.setAttribute("sort",sort);
nextBtn.setAttribute("exclude",exclude);
nextBtn.setAttribute("navtype",mode);
if (tag) nextBtn.setAttribute("tag",tag);
refreshNavLink(nextBtn);
}
createNavBtn(labelNext+" ►","NavNext","next");
createNavBtn("◄ "+labelPrev,"NavPrevious","prev");
}
setStylesheet(
"#NavNext {float:right;}\n"+
"#NavPrevious {float:left;}\n"+
".navNonExisting {display:none;}\n"+
"",
"NavMacroStyles");
//}}}
(''//Internet Explorer//'' users: the Table of Contents will not function as links. Please read [[Author's Note]].)
<<showtoc>>
!Introduction
“Oiling out” is a technique that is as old as oil painting. Painting “wet into wet”, meaning with wet paint into wet paint, allows a variety of effects. These effects can be created when painting into a dry layer, by first rubbing on a thin sheen of oily medium. We will make a simple medium that works well for this purpose. Then, we will discuss the effects made possible by painting into this thin sheen, as well as the concept of “fat over lean”, technical soundness of this method, and other related issues.
!How to make Basic Oil Medium (BOM)
This recipe makes 8 2-oz dropper bottles full of BOM.
For a video overview of making and decanting BOM, scroll to the section entitled: "Decanting BOM into bottles".
!!Recipe for BOM
!!!Ingredients and equipment for BOM
*2 cups (not stand, not sun-thickened) linseed oil
*2 tbsp (1 fluid oz) Canada balsam
*2 cup pyrex measuring cup
*long, thin palette knife
Note: use a palette knife that has a long enough blade so that the handle is not submersed in the oil, when the blade rests in a 2 cups of oil in a pyrex cup, such as a 5 ¼ inch knife.
*8 2-oz dropper bottles (or 4 4-oz bottles, or any other combination to hold 16 fluid oz)
*glass funnel
Note: use an appropriate size of funnel for the bottles used. For 2- or 4- ounce glass dropper bottles, a funnel with a good neck width that will fit into the bottle tops is 40mm or 50mm.
*paper towels
*sticky tape, scissors and permanent marker to make a label
(see [[Materials]])
<html>
<div><table width="250" height="166" align="right">
<tr><td><a href="http://www.flickr.com/photos/76314685@N04/6855088242/lightbox/" target="_blank" title="IMG_3989 by RumaraPainting, on Flickr"><img src="http://farm7.staticflickr.com/6224/6855088242_df0083d476_o.jpg" width="350" height="233" align="center" alt="IMG_3989"></a></td></tr>
<tr><td>Ingredients and equipment for making 8 2-oz bottles of BOM</td></tr></table></div>
<BR CLEAR=RIGHT></html>
!!!Procedure
<html>
<div><table width="250" height="166" align="right">
<tr><td><a href="http://www.flickr.com/photos/76314685@N04/7003785067/lightbox/" target="_blank" title="RGP_videoframe1BOM by RumaraPainting, on Flickr"><img src="http://farm8.staticflickr.com/7074/7003785067_924ae195b2_o.jpg" width="350" height="233" align="center" alt="RGP_videoframe1BOM"></a></td></tr>
<tr><td>Pouring the balsam into the oil while stirring continuously</td></tr></table></div>
Pour two cups of linseed oil into the pyrex measuring cup. Open a 1 oz bottle of Canada balsam and hold it above the pyrex measuring cup, holding the palette knife in your other hand (if measuring balsam with a spoon, see note below). Slowly pour the balsam into the oil, creating a very thin stream, stirring completely as you pour. Use the palette knife to scrape out the balsam jar. Scrape off any bits of balsam that stick to the sides of the pyrex, and fold and stir them into the oil.
<br>
<br>
When done, you should have a uniformly cloudy oil, without any visible streaks or blobs of balsam in it.
<br>
<br>
Note: Balsam is very sticky. If measuring the balsam with a tablespoon or teaspoon measure, take the spoon and dip it into the oil first. Use your finger or a paper towel to wipe off most of the oil, leaving a thin sheen on the spoon that won’t adversely affect the measurement. Then slowly pour the balsam into the spoon.
<BR CLEAR=RIGHT></html>
!!Decanting BOM into bottles
<html>
<div><table width="250" height="166" align="right">
<tr><td><a href="http://www.flickr.com/photos/76314685@N04/7003785133/lightbox/" target="_blank" title="RGP_videoframe2BOM by RumaraPainting, on Flickr"><img src="http://farm8.staticflickr.com/7254/7003785133_ee91db024b_o.jpg" width="350" height="233" align="center" alt="RGP_videoframe2BOM"></a></td></tr>
<tr><td>Decanting the BOM</td></tr></table></div>
Place the glass funnel in the mouth of one of the dropper bottles. Slowly pour some medium into the funnel, and wait for it to slide down into the bottle. Repeat until the dropper bottle is just under full. This process requires patience, as the medium takes its time sliding down through the funnel mouth into the jars.
<br>
<br>
Leave a little room at the top before inserting the dropper top. Note that if you fill the jar right up to the top, when you then insert the dropper top, the bottle will overflow. Screw it tight.
<br>
<br>
Use the paper towels to carefully wipe down the full bottles before labeling them. Use the towels to wipe up any spills while still wet. Once the oil and balsam dry, they will be much harder to clean.
<BR CLEAR=RIGHT>
<div><table width="250" height="166" align="right">
<tr><td><a href="http://www.flickr.com/photos/76314685@N04/7001205707/lightbox/" target="_blank" title="IMG_4319 by RumaraPainting, on Flickr"><img src="http://farm8.staticflickr.com/7047/7001205707_fe4710cea5_o.jpg" width="350" height="233" align="center" alt="IMG_4319"></a></td></tr>
<tr><td>Making a label</td></tr></table></div>
<br>
<br>
Make a label by snipping a piece of sticky tape, affixing it to the bottle recording the date and contents with a waterproof marker.
<BR CLEAR=RIGHT>
<div><table width="250" height="166" align="right">
<tr><td><a href="http://www.flickr.com/photos/76314685@N04/6855088892/lightbox/" target="_blank" title="IMG_4323 by RumaraPainting, on Flickr"><img src="http://farm8.staticflickr.com/7074/6855088892_b79bc7792e_o.jpg" width="350" height="233" align="center" alt="IMG_4323"></a></td></tr>
<tr><td>The completed recipe for BOM</td></tr></table></div>
<br>
<br>
<BR CLEAR=RIGHT>
<div>
<table width="400" height="225" align="right">
<tr><td>
<iframe width="400" height="233" src="http://www.youtube.com/embed/UAulHI7dNLE?rel=0" frameborder="0" allowfullscreen></iframe>
</td></tr>
<tr>
<td>
Hover over video for controls
</td>
</tr>
</table>
</div>
<br>
<br>
<br>
This video shows making BOM, decanting into dropper bottles, and labelling.
<BR CLEAR=RIGHT>
</html>
!!Cleaning up
<html>
<div><table width="250" height="166" align="right">
<tr><td><a href="http://www.flickr.com/photos/76314685@N04/7001205631/lightbox/" target="_blank" title="IMG_4176 by RumaraPainting, on Flickr"><img src="http://farm8.staticflickr.com/7234/7001205631_eec2598a0a_o.jpg" width="350" height="233" align="center" alt="IMG_4176"></a></td></tr>
<tr><td>Dish detergent, scrubby sponge and chenille stem</td></tr></table></div>
We use a good grease-cutting dish detergent, a scrubby sponge, a long thin scrubber for funnel neck, and hot water.
<br>
<br>
A modern name for pipe cleaner is chenille stem. These are available at craft stores such as </html>[[A.C. Moore|http://www.acmoore.com/p-27970-chenille-stems-6mm-x-12-100pkg-white.aspx]]<html>. A chenille stem is helpful for scrubbing the narrow neck of the funnel.
<br>
<br>
Clean the materials within a couple hours. Once the oil and balsam start to harden they will become much harder to clean.
<BR CLEAR=RIGHT></html>
!!Adapting the recipe
If you wish to make less at a time, use the conversion 2 tbsp = 6 tsp = 1 fluid oz to adjust the balsam.
|sortable|k
|Recipe Scale|Balsam|Oil|Yield|Visual|h
|Recipe above|2 tbsp balsam|2 cups oil|makes 8 (eight) 2-oz dropper bottles|<html><a href="http://www.flickr.com/photos/76314685@N04/6855088838/lightbox/" target="_blank" title="IMG_4323_T by RumaraPainting, on Flickr"><img src="http://farm8.staticflickr.com/7187/6855088838_cd75498b76_o.jpg" height="50" alt="IMG_4323_T"></a></html>|
|Half the recipe|1 tbsp balsam|1 cup oil|makes 4 (four) 2-oz dropper bottles|<html><a href="http://www.flickr.com/photos/76314685@N04/7001205859/lightbox/" target="_blank" title="IMG_4324_T by RumaraPainting, on Flickr"><img src="http://farm7.staticflickr.com/6043/7001205859_b7567974ef_o.jpg" height="50" alt="IMG_4324_T"></a></html>|
|Quarter the recipe|1½ tsp balsam|½ cup oil|makes 2 (two) 2-oz dropper bottles|<html><a href="http://www.flickr.com/photos/76314685@N04/6855088956/lightbox/" target="_blank" title="IMG_4325_T by RumaraPainting, on Flickr"><img src="http://farm8.staticflickr.com/7189/6855088956_3e5f712794_o.jpg" height="50" alt="IMG_4325_T"></a></html>|
|Sixth of the recipe|1 tsp balsam|1/3 cup oil|makes 1 (one) 2-oz dropper bottle|<html><a href="http://www.flickr.com/photos/76314685@N04/7001205957/lightbox/" target="_blank" title="IMG_4326_T by RumaraPainting, on Flickr"><img src="http://farm8.staticflickr.com/7081/7001205957_568feb7f27_o.jpg" height="50" alt="IMG_4326_T"></a></html>|
!Making a “couch” (or, “oiling out”)
When we “oil out”, we are creating a nice place for the paint to sit. The aptly descriptive synonym “making a couch” comes from Rob Howard of Studio Products (see [[References]]). Starting with an acrylic- or oil-primed stretched canvas, we are going to “make a couch” as our first step before applying paint to the surface.
What follows is a description of making a “couch”, with accompanying photos. For a video overview, scroll to the bottom of the subsection.
!!Ingredients and equipment for a couch
*one stretched primed canvas
*medium in a dropper bottle (for this demo, we are going to use BOM)
*paper towels
(see [[Materials]])
!!Procedure
<html>
<div><table width="250" height="166" align="right">
<tr><td><a href="http://www.flickr.com/photos/76314685@N04/6855080776/lightbox/" target="_blank" title="IMG_1963 by RumaraPainting, on Flickr"><img src="http://farm8.staticflickr.com/7125/6855080776_d158e04755_o.jpg" width="350" height="233" align="center" alt="IMG_1963"></a></td></tr>
<tr><td>Applying BOM with a dropper</td></tr></table></div>
Fill your dropper with BOM. Slowly release it onto your canvas as you run the tip of the dropper across the canvas.
<br>
<br>
Experience will show how much BOM is appropriate. Some (acrylic) pre-primed canvases are very dry and will need repeated applications. Oiling out can require very few drops of medium if the surface is more naturally slick, such as over a scraped intermediate layer of paint.
<BR CLEAR=RIGHT>
<div><table width="250" height="166" align="right">
<tr><td><a href="http://www.flickr.com/photos/76314685@N04/6855080824/lightbox/" target="_blank" title="IMG_1979 by RumaraPainting, on Flickr"><img src="http://farm8.staticflickr.com/7073/6855080824_910b6a1a20_o.jpg" width="350" height="233" align="center" alt="IMG_1979"></a></td></tr>
<tr><td>Spreading BOM with a folded paper towel pad</td></tr></table></div>
<br>
<br>
After you have run the dropper across the canvas a few times, fold up a paper towel into a small pad. Use this pad to smear the BOM with circular swipes, across the face of the canvas.
<BR CLEAR=RIGHT>
<div><table width="250" height="166" align="right">
<tr><td><a href="http://www.flickr.com/photos/76314685@N04/7001197737/lightbox/" target="_blank" title="IMG_1984 by RumaraPainting, on Flickr"><img src="http://farm7.staticflickr.com/6108/7001197737_ebbeeb5caf_o.jpg" width="350" height="233" align="center" alt="IMG_1984"></a></td></tr>
<tr><td>Check the coverage by angling the canvas toward the light</td></tr></table></div>
<br>
<br>
Check your canvas surface by finding an angle to view it that shows which spots have been moistened, and which have not. Repeat the procedure until the entire working surface looks like it has a uniformly thin sheen across it.
<BR CLEAR=RIGHT>
<div><table width="250" height="166" align="right">
<tr><td><a href="http://www.flickr.com/photos/76314685@N04/7001197791/lightbox/" target="_blank" title="IMG_1998 by RumaraPainting, on Flickr"><img src="http://farm8.staticflickr.com/7099/7001197791_3572439f75_o.jpg" width="350" height="233" align="center" alt="IMG_1998"></a></td></tr>
<tr><td>Beading and streaking</td></tr></table></div>
<br>
<br>
Be careful not to leave beading or streaking. If you see any beads or streaks, wipe them out with the pad of paper towel. The layer of BOM should be extremely thin. Rub off any thickness. Imagine the canvas was a stamp and you had licked it. That is how the surface should look.
<BR CLEAR=RIGHT>
<div><table width="250" height="166" align="right">
<tr><td><a href="http://www.flickr.com/photos/76314685@N04/7001197909/lightbox/" target="_blank" title="IMG_2014 by RumaraPainting, on Flickr"><img src="http://farm8.staticflickr.com/7131/7001197909_7ce6645418_o.jpg" width="350" height="233" align="center" alt="IMG_2014"></a></td></tr>
<tr><td>The canvas is almost uniformly covered</td></tr></table></div>
<br>
<br>
Apply more BOM with the dropper and smear, to cover the entire working surface.
<BR CLEAR=RIGHT>
<div><table width="250" height="166" align="right">
<tr><td><a href="http://www.flickr.com/photos/76314685@N04/7001197953/lightbox/" target="_blank" title="IMG_2018 by RumaraPainting, on Flickr"><img src="http://farm7.staticflickr.com/6110/7001197953_9eccffe9e0_o.jpg" width="350" height="233" align="center" alt="IMG_2018"></a></td></tr>
<tr><td>Complete coverage</td></tr></table></div>
<br>
<br>
When the entire working surface shimmers uniformly under the light, we are ready to work.
<BR CLEAR=RIGHT>
<div><table width="250" height="166" align="right">
<tr><td><a href="http://www.flickr.com/photos/76314685@N04/7001197829/lightbox/" target="_blank" title="IMG_2000 by RumaraPainting, on Flickr"><img src="http://farm7.staticflickr.com/6043/7001197829_da699d630c_o.jpg" width="350" height="233" align="center" alt="IMG_2000"></a></td></tr>
<tr><td>A shredded oily paper towel pad</td></tr></table></div>
<br>
<br>
If the paper towel starts shredding, refold it to get a fresh surface. Any blue shreds must be removed from your canvas. Remember the analogy of viewing our paint film as a cake (see </html>[[Introduction]]<html>). We don’t want paper towel shreds in our "cake".
<BR CLEAR=RIGHT>
As a final check to remove any excess BOM, refold the blue towel to make a fresh clean, dry surface. Go over your oiled surface again, to achieve the thinnest oil layer possible.
<BR CLEAR=RIGHT>
<div>
<table width="400" height="225" align="right">
<tr><td>
<iframe width="400" height="233" src="http://www.youtube.com/embed/wI-FX1GXavE?rel=0" frameborder="0" allowfullscreen></iframe>
</td></tr>
<tr>
<td>
Hover over video for controls
</td>
</tr>
</table>
</div>
<br>
<br>
<br>
Here is a video that shows oiling out a small canvas.</strong>
<BR CLEAR=RIGHT>
<br>
<div>
<table width="40" height="70" border="0" align="left" cellpadding="0" cellspacing="12" bgcolor="FFFFFF"><tr>
<tr>
<td>
<IMG SRC="http://www.rumara.com/Sandbox/images/greenpainting/questionmark.gif" ALT="Question" width="40" height="40" border="0" vspace="0" hspace="0" align="center">
</td>
</tr>
</table>
</div>
<strong>"Can I brush on the BOM, instead of running the dropper across the canvas?"</strong>
<br>
You can, but the layer of oil created will be thicker than wanted for a couch. We want a very thin, complete layer. If you brush on the medium, wipe the brush back and forth like the dropper tip. Use a folded blue towel to wipe the brush strokes of BOM in circular motions, then use a fresh side of a folded blue towel to wipe it down again.
<BR CLEAR=LEFT>
<br>
<div><table width="250" height="166" align="right">
<tr><td><a href="http://www.flickr.com/photos/76314685@N04/7001197865/lightbox/" target="_blank" title="IMG_2011 by RumaraPainting, on Flickr"><img src="http://farm8.staticflickr.com/7042/7001197865_1cfd79d0fd_o.jpg" width="350" height="233" align="center" alt="IMG_2011"></a></td></tr>
<tr><td>Brushing BOM onto the surface</td></tr></table></div>
<br>
<br>
<BR CLEAR=RIGHT>
<br>
<div>
<table width="40" height="50" border="0" align="left" cellpadding="0" cellspacing="12" bgcolor="FFFFFF"><tr>
<tr>
<td>
<IMG SRC="http://www.rumara.com/Sandbox/images/greenpainting/questionmark.gif" ALT="Question" width="40" height="40" border="0" vspace="0" hspace="0" align="center">
</td>
</tr>
</table>
</div>
<strong>"Why can’t I just oil up with regular linseed oil?"</strong>
<br>
You can, but regular linseed oil will show a greater tendency to bead up on the canvas surface, and paint stroke edges will feather and bleed into a couch so created (see </html>[[Oiling Out: Oiling out with just oil|Oiling Out##Oiling out with just oil]]<html>).
<BR CLEAR=LEFT></html>
!Painting into a couch
Using a couch facilitates a number of painting effects. These effects vary somewhat, depending on what we choose for making the couch. We choose to use BOM for this discussion.
#Drawing lines with paint
#Filling in areas
#Erasing
#Making a values pattern
#Transitioning between colors
#Notes on volume of paint used
#Length of working time
#Dry time
!!Drawing lines with paint
<html>
<div><table width="250" height="166" align="right">
<tr><td><a href="http://www.flickr.com/photos/76314685@N04/7001198005/lightbox/" target="_blank" title="IMG_2038 by RumaraPainting, on Flickr"><img src="http://farm7.staticflickr.com/6052/7001198005_05106fd75a_o.jpg" width="350" height="233" align="center" alt="IMG_2038"></a></td></tr>
<tr><td>Use one brush (in hand) to paint on the dry side, and use another brush (blue handle) to paint on the oiled side</td></tr></table></div>
The wet surface created by making a couch allows for longer strokes with cleaner edges.
<br>
<br>
Try oiling up half an acrylic pre-primed canvas (we choose acrylic pre-primed canvases because of their easy availability). Dip a brush into a palette blob of an umber, and make a line on the dry half of the canvas. Note the rough edges, and relatively short stroke before the paint runs out. Notice how painting this rough stroke feels.
<br>
<br>
Now take another clean, dry brush. Dip the brush into the umber again, and make a stroke on the oiled half. Notice how painting the cleaner stroke feels.
<BR CLEAR=RIGHT>
<div style="float:left;">
<table width="220" height="146" align="left">
<tr><td><a href="http://www.flickr.com/photos/76314685@N04/7001198059/lightbox/" target="_blank" title="IMG_2044 by RumaraPainting, on Flickr"><img src="http://farm7.staticflickr.com/6098/7001198059_cacb9a07ee_o.jpg" width="330" height="220" align="center" alt="IMG_2044"></a></td></tr>
<tr><td>Drawing with paint on the oiled side</td></tr>
</table>
<table width="220" height="146" align="left">
<tr><td><a href="http://www.flickr.com/photos/76314685@N04/6855081080/lightbox/" target="_blank" title="IMG_2035 by RumaraPainting, on Flickr"><img src="http://farm8.staticflickr.com/7089/6855081080_90d256a2f5_o.jpg" width="330" height="220" align="center" alt="IMG_2035"></a></td></tr>
<tr><td>Drawing with paint on the dry side</td></tr>
</table>
</div>
<BR CLEAR=LEFT>
<div><table width="250" height="166" align="right">
<tr><td><a href="http://www.flickr.com/photos/76314685@N04/6855081172/lightbox/" target="_blank" title="IMG_2052 by RumaraPainting, on Flickr"><img src="http://farm8.staticflickr.com/7184/6855081172_f3d69f6fcf_o.jpg" width="350" height="233" align="center" alt="IMG_2052"></a></td></tr>
<tr><td>Writing with paint</td></tr></table></div>
<br>
<br>
For fun, we extend the drawing by writing below the lines with the appropriate brushes.
<BR CLEAR=RIGHT>
<div style="float:left;">
<table width="220" height="146" align="left">
<tr><td><a href="http://www.flickr.com/photos/76314685@N04/7001198179/lightbox/" target="_blank" title="IMG_2055 by RumaraPainting, on Flickr"><img src="http://farm8.staticflickr.com/7221/7001198179_1d1d3ddabf_o.jpg" width="330" height="220" align="center" alt="IMG_2055"></a></td></tr>
<tr><td>Close up of strokes on the oiled side</td></tr>
</table>
<table width="220" height="146" align="left">
<tr><td><a href="http://www.flickr.com/photos/76314685@N04/6855081206/lightbox/" target="_blank" title="IMG_2054 by RumaraPainting, on Flickr"><img src="http://farm8.staticflickr.com/7269/6855081206_9bed3ab2a6_o.jpg" width="330" height="220" align="center" alt="IMG_2054"></a></td></tr>
<tr><td>Close up of strokes on the dry side</td></tr>
</table>
</div>
<BR CLEAR=LEFT>
</html>
!!Filling in areas
A wet surface facilitates filling in regions. The oil is more fluid than the paint, and settles naturally into the grooves of the surface. Running a loaded brush across the resulting slick surface allows for the paint following the oil into the grooves.
<html>
<div><table width="250" height="166" align="right">
<tr><td><a href="http://www.flickr.com/photos/76314685@N04/6855081314/lightbox/" target="_blank" title="IMG_2060 by RumaraPainting, on Flickr"><img src="http://farm8.staticflickr.com/7187/6855081314_d1eaf74ba7_o.jpg" width="350" height="233" align="center" alt="IMG_2060"></a></td></tr>
<tr><td>Filling in an area on the dry side</td></tr></table></div>
<br>
<br>
Dip your dry side brush into the umber, and fill in a roughly circular patch on the dry side of the canvas.
<BR CLEAR=RIGHT>
<div><table width="250" height="166" align="right">
<tr><td><a href="http://www.flickr.com/photos/76314685@N04/7001198263/lightbox/" target="_blank" title="IMG_2068 by RumaraPainting, on Flickr"><img src="http://farm8.staticflickr.com/7049/7001198263_433fb85463_o.jpg" width="350" height="233" align="center" alt="IMG_2068"></a></td></tr>
<tr><td>Filling in an area on the oiled side</td></tr></table></div>
<br>
<br>
Dip your oiled side brush into the umber, and fill in a roughly circular patch on the wet side of the canvas.
<BR CLEAR=RIGHT>
<div style="float:left;">
<table width="220" height="146" align="left">
<tr><td><a href="http://www.flickr.com/photos/76314685@N04/7001198489/lightbox/" target="_blank" title="IMG_2075 by RumaraPainting, on Flickr"><img src="http://farm8.staticflickr.com/7109/7001198489_bc32cbbc36_o.jpg" width="330" height="220" align="center" alt="IMG_2075"></a></td></tr>
<tr><td>Enlargement of the solid patch on the oiled side</td></tr>
</table>
<table width="220" height="146" align="left">
<tr><td><a href="http://www.flickr.com/photos/76314685@N04/7001198359/lightbox/" target="_blank" title="IMG_2073 by RumaraPainting, on Flickr"><img src="http://farm7.staticflickr.com/6056/7001198359_655ca98a90_o.jpg" width="330" height="220" align="center" alt="IMG_2073"></a></td></tr>
<tr><td>Enlargement of the solid patch on the dry side</td></tr>
</table>
</div>
<BR CLEAR=LEFT>
<br>
Note that on the oiled side, a thinner coat of paint fills the area. Also, note that on the oiled side, coverage is complete. On the dry side, tiny spots of white canvas remain uncovered. It would take extra pressure or scrubbing with the brush on the dry side to really work the paint into every groove.
<div style="float:left;">
<table width="220" height="146" align="left">
<tr><td><a href="http://www.flickr.com/photos/76314685@N04/6855081468/lightbox/" target="_blank" title="IMG_2075_2 by RumaraPainting, on Flickr"><img src="http://farm7.staticflickr.com/6228/6855081468_53b38cf72b_o.jpg" width="330" height="220" align="center" alt="IMG_2075_2"></a></td></tr>
<tr><td>Further magnification of the solid patch on the oiled side</td></tr>
</table>
<table width="220" height="146" align="left">
<tr><td><a href="http://www.flickr.com/photos/76314685@N04/6855081380/lightbox/" target="_blank" title="IMG_2073_2 by RumaraPainting, on Flickr"><img src="http://farm7.staticflickr.com/6212/6855081380_9f5e2d5a0a_o.jpg" width="330" height="220" align="center" alt="IMG_2073_2"></a></td></tr>
<tr><td>Further magnification of the solid patch on the dry side</td></tr>
</table>
</div>
<BR CLEAR=LEFT>
</html>
!!Erasing
Erasing with a paper towel becomes much easier if one oils out before painting.
<html>
<div><table width="250" height="166" align="right">
<tr><td><a href="http://www.flickr.com/photos/76314685@N04/7001198527/lightbox/" target="_blank" title="IMG_2084 by RumaraPainting, on Flickr"><img src="http://farm8.staticflickr.com/7124/7001198527_a73223e96f_o.jpg" width="350" height="233" align="center" alt="IMG_2084"></a></td></tr>
<tr><td>Wiping off the solid patch on the dry side, with a clean, folded paper towel</td></tr></table></div>
<br>
<br>
Use a dry, folded pad of paper towel to wipe off the patch on the dry side.
<BR CLEAR=RIGHT>
<div><table width="250" height="166" align="right">
<tr><td><a href="http://www.flickr.com/photos/76314685@N04/7001198571/lightbox/" target="_blank" title="IMG_2117 by RumaraPainting, on Flickr"><img src="http://farm7.staticflickr.com/6229/7001198571_0f45eb0b0c_o.jpg" width="350" height="233" align="center" alt="IMG_2117"></a></td></tr>
<tr><td>Wiping off the solid patch on the wet side, with a clean, folded paper towel</td></tr></table></div>
<br>
<br>
Refold the towel, or use a fresh folded towel, to wipe off the solid patch on the wet side.
<BR CLEAR=RIGHT>
<div><table width="250" height="166" align="right">
<tr><td><a href="http://www.flickr.com/photos/76314685@N04/7001198611/lightbox/" target="_blank" title="IMG_2130 by RumaraPainting, on Flickr"><img src="http://farm7.staticflickr.com/6229/7001198611_c465b8b621_o.jpg" width="350" height="233" align="center" alt="IMG_2130"></a></td></tr>
<tr><td>The two solid patches, after wiping each one with a dry towel</td></tr></table></div>
<br>
<br>
Note that the paint lifts more easily and cleanly from the wet side.
<BR CLEAR=RIGHT>
<div style="float:left;">
<table width="220" height="146" align="left">
<tr><td><a href="http://www.flickr.com/photos/76314685@N04/7001198671/lightbox/" target="_blank" title="IMG_2131 by RumaraPainting, on Flickr"><img src="http://farm8.staticflickr.com/7065/7001198671_19b24a87b6_o.jpg" width="330" height="220" align="center" alt="IMG_2131"></a></td></tr>
<tr><td>Enlargement of the wiped patch on the wet side</td></tr>
</table>
<table width="220" height="146" align="left">
<tr><td><a href="http://www.flickr.com/photos/76314685@N04/6855081742/lightbox/" target="_blank" title="IMG_2132 by RumaraPainting, on Flickr"><img src="http://farm8.staticflickr.com/7089/6855081742_af4633498f_o.jpg" width="330" height="220" align="center" alt="IMG_2132"></a></td></tr>
<tr><td>Enlargement of the wiped patch on the dry side</td></tr>
</table>
</div>
<BR CLEAR=LEFT></html>
!!Making a values pattern
A couch will facilitate creating a grisaille, verdaccio, or other values pattern. Draw with paint, and fill in areas, then use a clean, folded towel to lift and thin dark areas as desired.
!!Transitioning between colors
Soft shading is possible with the side of the brush on an oiled canvas. The oiled surface facilitates transitions from one color to the next.
<html>
<div style="float:left;">
<table width="220" height="146" align="left">
<tr><td><a href="http://www.flickr.com/photos/76314685@N04/7001198897/lightbox/" target="_blank" title="IMG_2164 by RumaraPainting, on Flickr"><img src="http://farm7.staticflickr.com/6114/7001198897_e4707ee1f0_o.jpg" width="330" height="220" align="center" alt="IMG_2164"></a></td></tr>
<tr><td>Blending two color patches on an oiled canvas</td></tr>
</table>
<table width="220" height="146" align="left">
<tr><td><a href="http://www.flickr.com/photos/76314685@N04/7001198811/lightbox/" target="_blank" title="IMG_2153 by RumaraPainting, on Flickr"><img src="http://farm8.staticflickr.com/7266/7001198811_faa0716b3e_o.jpg" width="330" height="220" align="center" alt="IMG_2153"></a></td></tr>
<tr><td>Blending two color patches on a dry canvas</td></tr>
</table>
</div>
<BR CLEAR=LEFT>
<div style="float:left;">
<table width="220" height="146" align="left">
<tr><td><a href="http://www.flickr.com/photos/76314685@N04/7001198843/lightbox/" target="_blank" title="IMG_2164_2 by RumaraPainting, on Flickr"><img src="http://farm7.staticflickr.com/6102/7001198843_fe95ed7eb1_o.jpg" width="330" height="220" align="center" alt="IMG_2164_2"></a></td></tr>
<tr><td>Enlargement of blending two color patches on an oiled canvas</td></tr>
</table>
<table width="220" height="146" align="left">
<tr><td><a href="http://www.flickr.com/photos/76314685@N04/7001198747/lightbox/" target="_blank" title="IMG_2153_2 by RumaraPainting, on Flickr"><img src="http://farm8.staticflickr.com/7110/7001198747_e7da919fd7_o.jpg" width="330" height="220" align="center" alt="IMG_2153_2"></a></td></tr>
<tr><td>Enlargement of blending two color patches on a dry canvas</td></tr>
</table>
</div>
<BR CLEAR=LEFT>
</html>
!!Notes on the volume of paint used
<html>
Dry surfaces grab more paint. Less paint is needed to cover an oiled surface than a dry surface.
<BR CLEAR=RIGHT></html>
!!Length of working time
<html>
The couch will stay workable for a day or less. After a few hours, depending on atmospheric conditions, the couch will begin to tack up and become less workable as the oil dries.
<BR CLEAR=RIGHT></html>
!!Dry time
<html>
If the layer is scraped (see below: </html>[[Oiling Out: Scraping between layers|Oiling Out##Scraping between layers]]<html>), or if the layer is painted thinly, it will dry in one to three days, depending on atmospheric conditions. Balsam dries faster than oil, so a layer oiled with BOM will dry quicker than one oiled with linseed oil.
<br>
<br>
If the layer contains thick impasto strokes, the dry time will extend accordingly.
<br>
<br>
<div>
<table width="40" height="175" border="0" align="left" cellpadding="0" cellspacing="12" bgcolor="FFFFFF"><tr>
<tr>
<td>
<IMG SRC="http://www.rumara.com/Sandbox/images/greenpainting/questionmark.gif" ALT="Question" width="40" height="40" border="0" vspace="0" hspace="0" align="center">
</td>
</tr>
</table>
</div>
<br>
<strong>"I like to paint thickly because I like stronger colors. If I lay my paint thinly into a couch, the color is weaker."</strong>
<br>
There are so many paints on the market. The question of how much paint is required to tint an area with a particular color is a question of of tinting strength (see </html>[[Definitions]]<html>). Paint made with a pigment of a high tinting strength, can color an area with very little volume.
<br>
<br>
Thicker paint can give a different color effect. An oiled surface takes less paint to cover an area. In an area where thick impasto strokes are desired, consider painting without oiling out (see </html>[[Oiling Out: To oil out or not to oil out|Oiling Out##To oil out or not to oil out]]<html>).
<BR CLEAR=LEFT>
<br>
<br>
<div>
<table width="40" height="115" border="0" align="left" cellpadding="0" cellspacing="12" bgcolor="FFFFFF"><tr>
<tr>
<td>
<IMG SRC="http://www.rumara.com/Sandbox/images/greenpainting/questionmark.gif" ALT="Question" width="40" height="40" border="0" vspace="0" hspace="0" align="center">
</td>
</tr>
</table>
</div>
<br>
<strong>"Where do I find paints with high tinting strength?"</strong>
<br>
Some paints have high tinting strength because they are loaded with pigment. Others have high tinting strength because the pigment base has particularly powerful tinting ability. Compare the tinting effect of adding small amounts of Cennini Cobalt Violet Deep, and Williamsburg Egyptian Violet to Winsor & Newton Soft Mixing White. The Egyptian Violet, a dioxazine based pigment, colors the white far more strongly.
<BR CLEAR=LEFT>
<div><table width="250" height="166" align="right">
<tr><td><a href="http://www.flickr.com/photos/76314685@N04/7001198947/lightbox/" target="_blank" title="IMG_2308 by RumaraPainting, on Flickr"><img src="http://farm8.staticflickr.com/7253/7001198947_ee9f1e5621_o.jpg" width="350" height="233" align="center" alt="IMG_2308"></a></td></tr>
<tr><td>Cennini Cobalt Violet Deep and Williamsburg Egyptian Violet, added to Winsor & Newton Soft Mixing White in equivalently small amounts</td></tr></table></div>
<br>
<br>
<BR CLEAR=RIGHT>
<br>
</html>
One group of paints that tend to have incredibly high tinting strength are the so-called modern organics. These are made from chemical pigments that were developed in laboratories relatively recently, within the past 150 years. They usually have long complex chemical names, such as [[phthalocyanine|http://en.wikipedia.org/wiki/Phthalocyanine]] (blue or green), [[quinacridone|http://en.wikipedia.org/wiki/Quinacridone]] (red, maroon, brown), [[pyrrole|http://en.wikipedia.org/wiki/Pyrrole]] (red, ruby), arilyde and diarylide (yellow), benzimidazolone (orange), [[perylene|http://en.wikipedia.org/wiki/Perylene]] (crimson), dioxazine (violet), [[anthraquinone|http://en.wikipedia.org/wiki/Anthraquinone]] (blue or red), [[indanthrone|http://en.wikipedia.org/wiki/Indanthrone_blue]] (blue), [[alizarin|http://en.wikipedia.org/wiki/Alizarin]] (yellow, orange, crimson). Paints made from these pigments tend to be transparent, and to have amazing tinting strength.<html>
<br>
<br>
</html>Note that the name of the paint does not necessarily describe the coloring compound. To discover the ingredient responsible for the color of a paint, you may check the tube or the manufacturer’s website. For example, reviewing [[Winsor & Newton’s Colour Chart for Artists' Oil Colour|http://www.winsornewton.com/products/oil-colours/artists-oil-colour/colour-chart/]] we see a color called “Bright Red”. Click on this color in the chart, and we see that "[[Bright Red|http://www.winsornewton.com/products/oil-colours/artists-oil-colour/colour-chart/bright-red/]]" is a (transparent) pyrrole pigment.<html>
<br>
<br>
</html>If you find a paint made with one of these pigments, it is likely to be of high tinting strength. Other than that, I do not know how to determine the tinting strength of a particular paint without testing it. Paints of the same name can vary significantly in tinting strength from brand to brand.<html>
<br>
<br>
<div>
<table width="40" height="120" border="0" align="left" cellpadding="0" cellspacing="12" bgcolor="FFFFFF"><tr>
<tr>
<td>
<IMG SRC="http://www.rumara.com/Sandbox/images/greenpainting/questionmark.gif" ALT="Question" width="40" height="40" border="0" vspace="0" hspace="0" align="center">
</td>
</tr>
</table>
</div>
<strong>"I like thick impasto strokes. Thick texture is an effect I’m looking for."</strong>
<br>
Try painting with just paint (see </html>[[Oiling Out: To oil out or not to oil out|Oiling Out##To oil out or not to oil out]]<html>). For technical soundness, try to apply broken strokes of impasto paint laid next to each other, rather than brushing (or applying with a palette knife) a flat impasto area of a single color or of a well-mixed mix. A flat, uniformly thick impasto area will tend to act as a unit in flexing and contracting over time, and may crack against the surface below it. An oil painting with thinly painted areas broken by occasional impasto strokes is well-constructed for durability.</html>```Ralph Mayer, //The Artist’s Handbook of Materials and Techniques: Fifth Edition, Revised and Updated// (Viking Adult, 1985), 204.```<html>
<BR CLEAR=LEFT>
<div><table width="250" height="166" align="right">
<tr><td><a href="http://www.flickr.com/photos/76314685@N04/7001198925/lightbox/" target="_blank" title="IMG_2273 by RumaraPainting, on Flickr"><img src="http://farm8.staticflickr.com/7064/7001198925_c7a1981464_o.jpg" width="350" height="233" align="center" alt="IMG_2273"></a></td></tr>
<tr><td>Broken impasto strokes laid next to each other</td></tr></table></div>
<br>
<br>
<BR CLEAR=RIGHT>
<br>
Applying many small broken strokes next to each other, rather than a flat patch of impasto paint, may create desired artistic effects. The artistry of applying broken, small pieces of color was one used by the Impressionists. A combination of broken colors viewed at a distance can create a blended color quite different from that created if such colors were combined in a homogeneous mix before applying. Another way to create this effect, is to apply mixes of colors to the canvas that are poorly blended, so that the constituent colors show next to each other.</html>```Mayer, 165.```<html>
<BR CLEAR=RIGHT></html>
!Scraping between layers
John Singer Sargent and other famous painters, maintained a practice of scraping down the canvas after a work session, using a painting spatula or palette knife. After scraping, the colors and the ghostly image of the details from the work session are maintained. Every wet sharp edge is softened. Wet adjacent colors blend, and depending on the thickness of each, form broken blended patches along their borders.
If you scrape, wait an hour or two after completing the layer, if possible, while the paint sets up slightly. Less of the detail will be lost in the scraping process. Then run the spatula or knife edge across everywhere there is fresh paint. Pressing on the canvas while scraping will remove all thickness of paint.
<html>
<div><table width="250" height="166" align="right">
<tr><td><a href="http://www.flickr.com/photos/76314685@N04/7001200095/lightbox/" target="_blank" title="IMG_2593 by RumaraPainting, on Flickr"><img src="http://farm8.staticflickr.com/7074/7001200095_070cedd464_o.jpg" width="350" height="233" align="center" alt="IMG_2593"></a></td></tr>
<tr><td>A freshly painted scene</td></tr></table></div>
<br>
<br>
In the demo, we block out a farm scene.
<BR CLEAR=RIGHT>
<div><table width="250" height="166" align="right">
<tr><td><a href="http://www.flickr.com/photos/76314685@N04/6855083086/lightbox/" target="_blank" title="IMG_2601 by RumaraPainting, on Flickr"><img src="http://farm7.staticflickr.com/6036/6855083086_e187acffb6_o.jpg" width="350" height="233" align="center" alt="IMG_2601"></a></td></tr>
<tr><td>Scraping the fresh paint, after waiting an hour for it to set up</td></tr></table></div>
<br>
<br>
After waiting an hour for the layer to set up, we commence scraping.
<BR CLEAR=RIGHT>
<div><table width="250" height="166" align="right">
<tr><td><a href="http://www.flickr.com/photos/76314685@N04/7001200181/lightbox/" target="_blank" title="IMG_2608 by RumaraPainting, on Flickr"><img src="http://farm7.staticflickr.com/6108/7001200181_25f6074ef9_o.jpg" width="350" height="233" align="center" alt="IMG_2608"></a></td></tr>
<tr><td>Scraping the dirt path</td></tr></table></div>
<br>
<br>
We scrape warm, colored areas (like the dirt path) in distinct strokes to maintain some purity of color.
<BR CLEAR=RIGHT>
<div><table width="250" height="166" align="right">
<tr><td><a href="http://www.flickr.com/photos/76314685@N04/6855083176/lightbox/" target="_blank" title="IMG_2638 by RumaraPainting, on Flickr"><img src="http://farm8.staticflickr.com/7192/6855083176_17c23f197d_o.jpg" width="350" height="233" align="center" alt="IMG_2638"></a></td></tr>
<tr><td>The image, fully scraped</td></tr></table></div>
<br>
<br>
The fully scraped painting preserves a fuzzy version of the image, with a flat surface.
<BR CLEAR=RIGHT>
Scraped canvases dry in a day or two. Typically in this method, the final layer of paint over a given region would include impasto strokes. The thick strokes would be added in “master strokes” for effect in choice locations. Sargent’s drapery for example or cheekbones might be painted in thickly, and stand out dramatically against the otherwise flat surface. To achieve a “master stroke” with the perfect placement, dimensions and texture, an individual stroke might be attempted over and over, scraping each time until it comes out just so.
<br>
<br>
Scraped layers do not have enough thickness to flex and contract against lower layers with atmospheric changes over time. A scraped layer is a technically sound layer.</html>```Mayer, 204.```<html>
<BR CLEAR=RIGHT></html>
!Wet-sanding between layers
Another way to keep a painted surface absolutely smooth except for a master stroke, is to wet sand a dry layer (see [[Reconstituting: Preparing the canvas|Reconstituting##Preparing the canvas]]) before painting on the next upper layer.
Note that dry sanding using regular sandpaper would release particles of heavy metals into the atmosphere (see [[Heavy Metals Safety]]). Wet-sanding keeps the particles that are released in a wet slurry.
!Painting the next layer
<html>
<div><table width="250" height="166" align="right">
<tr><td><a href="http://www.flickr.com/photos/76314685@N04/6855082094/lightbox/" target="_blank" title="IMG_2355 by RumaraPainting, on Flickr"><img src="http://farm8.staticflickr.com/7054/6855082094_c8a2cae3e4_o.jpg" width="350" height="233" align="center" alt="IMG_2355"></a></td></tr>
<tr><td>Making a couch over a dry first intermediate layer</td></tr></table></div>
When the painting is dry, start over to create the next layer. Drop on some BOM, smear it in circles with a blue shop towel, and check for uniform coverage.
<BR CLEAR=RIGHT>
<div>
<table width="40" height="100" border="0" align="left" cellpadding="0" cellspacing="12" bgcolor="FFFFFF"><tr>
<tr>
<td>
<IMG SRC="http://www.rumara.com/Sandbox/images/greenpainting/questionmark.gif" ALT="Question" width="40" height="40" border="0" vspace="0" hspace="0" align="center">
</td>
</tr>
</table>
</div>
<br>
<strong>"What if the layer below is still tacky? Can I make a couch over a semi-wet layer of paint?"</strong>
<br>
Rubbing a layer of BOM or other oily medium into a wet layer will destroy the brush work and lift any semi-wet paint onto the paper towel. Painting into a tacky, semi-dry painting is possible, but the ease of painting that characterizes painting into a couch will be gone.
<BR CLEAR=LEFT>
<br>
<div>
<table width="40" height="110" border="0" align="left" cellpadding="0" cellspacing="12" bgcolor="FFFFFF"><tr>
<tr>
<td>
<IMG SRC="http://www.rumara.com/Sandbox/images/greenpainting/questionmark.gif" ALT="Question" width="40" height="40" border="0" vspace="0" hspace="0" align="center">
</td>
</tr>
</table>
</div>
<br>
<strong>"How can I facilitate painting into a tacky, semi-dry layer?"</strong>
<br>
Artists who are not allergic to thinners can use Retouch Varnish sprays. These sprays contain thinners. There is no spray for bringing a tacky painting back into a wet state without the use of thinners. Try adjusting your painting schedule to allow sufficient dry time between layers, and use the breaks for sit-time to let ideas for the next layer mature (see </html>[[Perspectives: Notes on the time and effort required for these methods|Perspectives##Notes on the time and effort required for these methods]]<html>).
<BR CLEAR=LEFT>
</html>
!Notes on “fat over lean”
<html>
One rule that ensures technically sound bonds created between layers is “fat over lean”, or the practice of layering fatter layers above leaner layers. A “fat” layer contains more oil, and/or balsam or resin.
<br>
<br>
<a href="http://www.flickr.com/photos/76314685@N04/6857996792/lightbox/" target="_blank" title="RGP_fatoverleanlayers by RumaraPainting, on Flickr"><img src="http://farm8.staticflickr.com/7263/6857996792_9102542c69_o.jpg" height="460" alt="RGP_fatoverleanlayers"></a>
<br>
<br>
<div><table width="250" height="166" align="right">
<tr><td><a href="http://www.flickr.com/photos/76314685@N04/7001206191/lightbox/" target="_blank" title="IMG_4410 by RumaraPainting, on Flickr"><img src="http://farm8.staticflickr.com/7249/7001206191_82869a0f0c_o.jpg" width="350" height="233" align="center" alt="IMG_4410"></a></td></tr>
<tr><td>A fatter layer (top) flexes and contracts more than a leaner layer (bottom)</td></tr></table></div>
<br>
<br>
As the layers dry, those containing more oil will form more flexible layers. Atmospheric changes create flexing and contracting in drying oils. It is the oils and resins in a layer that flex and contract, not the inert pigment and fillers. A fatter layer will flex and contract more that a leaner layer.
<BR CLEAR=RIGHT>
<br>
An inflexible layer over a flexible layer runs the risk of cracking or peeling.
<br>
<br>
<a href="http://www.flickr.com/photos/76314685@N04/7003785225/lightbox/" target="_blank" title="RGP_process_screenshot01 by RumaraPainting, on Flickr"><img src="http://farm7.staticflickr.com/6215/7003785225_32610e7ba9_o.jpg" width="700" height="271" alt="RGP_process_screenshot01"></a>
<BR CLEAR=LEFT>
<br>
Remembering to paint “flexible over inflexible” will resolve the issues addressed by “fat over lean”.
<br>
<br>
<div><table width="250" height="166" align="right">
<tr><td><a href="http://www.flickr.com/photos/76314685@N04/7001206351/lightbox/" target="_blank" title="IMG_4414 by RumaraPainting, on Flickr"><img src="http://farm8.staticflickr.com/7039/7001206351_bc52ebcb57_o.jpg" width="350" height="233" align="center" alt="IMG_4414"></a></td></tr>
<tr><td>Equally fat layers flex and contract as a unit</td></tr></table></div>
<br>
<br>
Equally flexible, or equally fat layers flex and contract with atmospheric changes as a unit.
<BR CLEAR=RIGHT>
So two more rules that are good to remember while painting, are “fat over equally fat”, or “flexible over equally flexible”.
<br>
<br>
Good rules to remember:</html>
#''Fat over Lean'' (or) ''Fat over Equally Fat''
#''Flexible over Inflexible'' (or) ''Flexible over Equally Flexible''
!Technical soundness issues applied to oiling out
<html>
<div><table width="250" height="166" align="right">
<tr><td><a href="http://www.flickr.com/photos/76314685@N04/7001206401/lightbox/" target="_blank" title="IMG_4415 by RumaraPainting, on Flickr"><img src="http://farm8.staticflickr.com/7060/7001206401_4305c4be56_o.jpg" width="350" height="233" align="center" alt="IMG_4415"></a></td></tr>
<tr><td>A layer of paint and medium (bottom) and a thin layer created by oiling out</td></tr></table></div>
Oiling out properly, so that the layer of oily medium is applied as thinly as possible, bypasses the fat over lean rule as follows. The layer created by oiling out is quite oily, so quite “fat”. But it lacks the bulk to flex and contract on its own, and so rides with the flexing and contracting of the layer below.
<BR CLEAR=RIGHT>
<div><table width="250" height="166" align="right">
<tr><td><a href="http://www.flickr.com/photos/76314685@N04/7001206459/lightbox/" target="_blank" title="IMG_4416 by RumaraPainting, on Flickr"><img src="http://farm8.staticflickr.com/7253/7001206459_282e5f71a8_o.jpg" width="350" height="233" align="center" alt="IMG_4416"></a></td></tr>
<tr><td>A spandex leotard over a superhero's flexing arm will hug the skin</td></tr></table></div>
<br>
<br>
A good analogy is a spandex leotard over a superhero’s muscular arm. As the muscles within flex and contract, the elastic spandex fabric stays hugging the skin.
<BR CLEAR=RIGHT>
<div><table width="250" height="166" align="right">
<tr><td><a href="http://www.flickr.com/photos/76314685@N04/7001206523/lightbox/" target="_blank" title="IMG_4418 by RumaraPainting, on Flickr"><img src="http://farm8.staticflickr.com/7072/7001206523_a1c4edce7b_o.jpg" width="350" height="233" align="center" alt="IMG_4418"></a></td></tr>
<tr><td>Several layers, each created by painting into a couch, above a thicker layer of paint and medium</td></tr></table></div>
<br>
<br>
Multiple layers, each created by painting into a couch, will flex and contract as a unit under the “fat over equally fat” rule.
<BR CLEAR=RIGHT>
</html>
!Adding medium to your paint
As a general rule, add no more than 20% medium to your paint. Many mediums, containing a high quotient of drying oils and resins, yellow over time. Thus we use just enough medium to create desired effects, but no more than that. Thicker glazed layers must be created with yellowing in mind. Darker and warmer colors take a yellowing glaze layer better. Glazes created with linseed stand oil yellow less than those created with regular linseed oil.
!Glazing into the couch
Color can be rubbed into a couch to create a glazed layer. We demonstrate using a BOM couch over a (dry) grisaille.
<html>
<div><table width="250" height="166" align="right">
<tr><td><a href="http://www.flickr.com/photos/76314685@N04/7001207197/lightbox/" target="_blank" title="IMG_4846 by RumaraPainting, on Flickr"><img src="http://farm7.staticflickr.com/6052/7001207197_3bc46807e8_o.jpg" width="350" height="233" align="center" alt="IMG_4846"></a></td></tr>
<tr><td>Applying BOM with a dropper</td></tr></table></div>
<br>
<br>
Make a couch using BOM.
<BR CLEAR=RIGHT>
<div><table width="250" height="166" align="right">
<tr><td><a href="http://www.flickr.com/photos/76314685@N04/6855090264/lightbox/" target="_blank" title="IMG_4858 by RumaraPainting, on Flickr"><img src="http://farm8.staticflickr.com/7109/6855090264_c29d838ce3_o.jpg" width="350" height="233" align="center" alt="IMG_4858"></a></td></tr>
<tr><td>Smear the BOM with a folded towel</td></tr></table></div>
<br>
<br>
<BR CLEAR=RIGHT>
<div><table width="250" height="166" align="right">
<tr><td><a href="http://www.flickr.com/photos/76314685@N04/7001207277/lightbox/" target="_blank" title="IMG_4867 by RumaraPainting, on Flickr"><img src="http://farm7.staticflickr.com/6226/7001207277_3823a3c0c2_o.jpg" width="350" height="233" align="center" alt="IMG_4867"></a></td></tr>
<tr><td>Painting a color into the glaze</td></tr></table></div>
<br>
<br>
Paint a glaze color into the couch. Here, we use Williamsburg Alizarin Orange (T) and a small amount of Cennini Zinc White to give the glaze body.
<BR CLEAR=RIGHT>
<div><table width="250" height="166" align="right">
<tr><td><a href="http://www.flickr.com/photos/76314685@N04/7001207319/lightbox/" target="_blank" title="IMG_4873 by RumaraPainting, on Flickr"><img src="http://farm8.staticflickr.com/7049/7001207319_49eea95083_o.jpg" width="350" height="233" align="center" alt="IMG_4873"></a></td></tr>
<tr><td>The grisaille, partially coated with the colored glaze</td></tr></table></div>
<br>
<br>
Rub and smooth the color with a folded paper towel. The painting is now warmly colored.
<BR CLEAR=RIGHT>
Keep the couch, even as a glaze, very thin. A thick layer of BOM, brushed into with a small amount of paint (which is a very “fat” layer), as the top layer, is a technically sound choice. But linseed oil yellows over time. The thicker the layer of BOM as a top layer, the more pronounced its yellowing over time.
</html>
!To oil out or not to oil out
If you wish to load on thick paint with thick brush strokes and ragged edges, or to paint with a palette knife, you may wish to paint without a couch. A dry canvas will grab more paint and encourage greater volume of paint in a single layer. Experimenting with a couch will give you a good feel for when to use one and when not to use one. Painting just with paint is technically sound.
A couch facilitates making a line drawing with paint, fine detail work, filling in large areas with paint, feathering a painted edge, and other work that doesn’t require thickness.
<html>
<div style="float:left;">
<table width="220" height="146" align="left">
<tr><td><a href="http://www.flickr.com/photos/76314685@N04/7001199563/lightbox/" target="_blank" title="IMG_2424 by RumaraPainting, on Flickr"><img src="http://farm8.staticflickr.com/7133/7001199563_5a63265b9d_o.jpg" width="330" height="220" align="center" alt="IMG_2424"></a></td></tr>
<tr><td>Detail of a painting done without a couch, showing thick impasto paint</td></tr>
</table>
<table width="220" height="146" align="left">
<tr><td><a href="http://www.flickr.com/photos/76314685@N04/7001199509/lightbox/" target="_blank" title="IMG_2424_2 by RumaraPainting, on Flickr"><img src="http://farm8.staticflickr.com/7214/7001199509_c0bf037d48_o.jpg" width="330" height="220" align="center" alt="IMG_2424_2"></a></td></tr>
<tr><td>Closer detail of left</td></tr>
</table>
</div>
<BR CLEAR=LEFT>
<div style="float:left;">
<table width="220" height="146" align="left">
<tr><td><a href="http://www.flickr.com/photos/76314685@N04/7001199687/lightbox/" target="_blank" title="IMG_2436 by RumaraPainting, on Flickr"><img src="http://farm8.staticflickr.com/7230/7001199687_bbf5c89d73_o.jpg" width="330" height="220" align="center" alt="IMG_2436"></a></td></tr>
<tr><td>Detail of a painting done with a couch, showing thick impasto paint</td></tr>
</table>
<table width="220" height="146" align="left">
<tr><td><a href="http://www.flickr.com/photos/76314685@N04/6855082572/lightbox/" target="_blank" title="IMG_2436_2 by RumaraPainting, on Flickr"><img src="http://farm8.staticflickr.com/7266/6855082572_9911fa42bf_o.jpg" width="330" height="220" align="center" alt="IMG_2436_2"></a></td></tr>
<tr><td>Closer detail of left</td></tr>
</table>
</div>
<BR CLEAR=LEFT>
</html>
!Oiling out with just oil
Adding balsam to linseed oil will change its surface tension, making the surface tighter and smoother. Linseed oil alone has a looser surface. Oiling up with just linseed oil creates more of an opportunity for beading and streaking.
<html>
<div><table width="250" height="166" align="right">
<tr><td><a href="http://www.flickr.com/photos/76314685@N04/6855089130/lightbox/" target="_blank" title="IMG_4409 by RumaraPainting, on Flickr"><img src="http://farm8.staticflickr.com/7223/6855089130_14546653be_o.jpg" width="350" height="233" align="center" alt="IMG_4409"></a></td></tr>
<tr><td>The path of a knife tip through peanut butter showing a tiny dam created on each side</td></tr></table></div>
<br>
<br>
Another effect of the change in surface tension due to added balsam, is clean stroke edges. Running a brush through BOM, creates an effect around a stroke of paint like two tiny dams pushed up on either side of the brush. Imagine running a knife tip broadside through a thick layer of peanut butter. The tiny dams prevent the paint stroke from bleeding out into the surrounding couch.
<BR CLEAR=RIGHT>
No such resistance is offered by the surface of linseed oil alone.
<br>
<br>
A stroke of paint through linseed oil will bleed out into the oil.
<BR CLEAR=LEFT>
<br>
<div><table width="250" height="166" align="right">
<tr><td><a href="http://www.flickr.com/photos/76314685@N04/7001199907/lightbox/" target="_blank" title="IMG_2552 by RumaraPainting, on Flickr"><img src="http://farm8.staticflickr.com/7268/7001199907_0546414dda_o.jpg" width="350" height="233" align="center" alt="IMG_2552"></a></td></tr>
<tr><td>Drawing with paint into a BOM couch (left), and a linseed oil couch (right)</td></tr></table></div>
<br>
<br>
Try drawing with paint into a BOM couch (left side of canvas), and a linseed oil couch (right side of canvas).
<BR CLEAR=RIGHT>
<br>
Immediately after making the drawing, the lines of paint in BOM and in linseed oil remain as placed. Enlargements show the fresh strokes of paint.
<br>
<div style="float:left;">
<table width="220" height="146" align="left">
<tr><td><a href="http://www.flickr.com/photos/76314685@N04/7001199729/lightbox/" target="_blank" title="IMG_2542 by RumaraPainting, on Flickr"><img src="http://farm8.staticflickr.com/7090/7001199729_615c746ec3_o.jpg" width="339" height="226" align="center" alt="IMG_2542"></a></td>
<td><a href="http://www.flickr.com/photos/76314685@N04/6855082740/lightbox/" target="_blank" title="IMG_2543 by RumaraPainting, on Flickr"><img src="http://farm8.staticflickr.com/7241/6855082740_3f3330f0a3_o.jpg" width="339" height="226" align="center" alt="IMG_2543"></a></td></tr>
<tr><td><a href="http://www.flickr.com/photos/76314685@N04/7001199877/lightbox/" target="_blank" title="IMG_2547 by RumaraPainting, on Flickr"><img src="http://farm8.staticflickr.com/7237/7001199877_e9248f420b_o.jpg" width="339" height="226" align="center" alt="IMG_2547"></a></td>
<td><a href="http://www.flickr.com/photos/76314685@N04/6855082686/lightbox/" target="_blank" title="IMG_2543_2 by RumaraPainting, on Flickr"><img src="http://farm7.staticflickr.com/6058/6855082686_47969ff069_o.jpg" width="339" height="226" align="center" alt="IMG_2543_2"></a></td></tr>
</table>
</div>
<BR CLEAR=LEFT>
<a href="http://www.flickr.com/photos/76314685@N04/6858021528/lightbox/" target="_blank" title="RGP_24hours by RumaraPainting, on Flickr"><img src="http://farm8.staticflickr.com/7055/6858021528_db2b10d7a7_o.jpg" width="134" alt="RGP_24hours"></a>
<BR CLEAR=LEFT>
<div style="float:left;">
<table width="220" height="146" align="left">
<tr><td><a href="http://www.flickr.com/photos/76314685@N04/7001204105/lightbox/" target="_blank" title="IMG_3734 by RumaraPainting, on Flickr"><img src="http://farm7.staticflickr.com/6097/7001204105_ef7af87b19_o.jpg" width="339" height="226" align="center" alt="IMG_3734"></a></td>
<td><a href="http://www.flickr.com/photos/76314685@N04/6855087006/lightbox/" target="_blank" title="IMG_3725 by RumaraPainting, on Flickr"><img src="http://farm7.staticflickr.com/6093/6855087006_8f9a058e40_o.jpg" width="339" height="226" align="center" alt="IMG_3725"></a></td></tr>
<tr><td><a href="http://www.flickr.com/photos/76314685@N04/6855087116/lightbox/" target="_blank" title="IMG_3738 by RumaraPainting, on Flickr"><img src="http://farm8.staticflickr.com/7062/6855087116_795c1efe1c_o.jpg" width="339" height="226" align="center" alt="IMG_3738"></a></td>
<td><a href="http://www.flickr.com/photos/76314685@N04/6855087042/lightbox/" target="_blank" title="IMG_3726 by RumaraPainting, on Flickr"><img src="http://farm8.staticflickr.com/7179/6855087042_7379fbbaee_o.jpg" width="339" height="226" alt="IMG_3726"></a></td></tr>
</table>
</div>
<BR CLEAR=LEFT>
<br>
After 24 hours, note that the lines drawn into the linseed oil couch have bled out into the oil. The lines drawn into the BOM couch remain set.
</html>
!Choice of balsam
<html>
Canada balsam is amazingly viscous. Larch balsam significantly less expensive, but it is a looser fluid, and a much higher quotient of larch balsam in oil is needed to alter the viscosity of the oil and to create a similar shift in surface tension.
</html>
<<tiddler HideTiddlerTags>>
TiddlyWiki is published under a BSD OpenSourceLicense that gives you the freedom to use it pretty much however you want, including for commercial purposes, as long as you keep my copyright notice. (You can see the full license text by doing a 'view source' in your browser). If you do use TiddlyWiki I'd appreciate a link back to http://www.tiddlywiki.com.
(''//Internet Explorer//'' users: the Table of Contents will not function as links. Please read [[Author's Note]].)
<<showtoc>>
!Reasons to add medium to your paint
Freshly made paint has a texture like crème fraiche or chocolate pudding. It is soft, glossy and easily spreadable. Tube paint should have the same qualities (if it doesn’t we can change it, see [[Softening Stiff Paint]]). With a couch, and nice creamy paint, adding a drop of medium or none to your palette blob is sufficient for ease of application.
The modern custom of using mediums as a diluent in order to facilitate spreadability, derives from manufactured tube paint being made stiffer than traditional fresh paint; and from attributes of the most common painting surface available - pre-stretched, acrylic gessoed canvases. This surface tends to be dry, absorbent, rough-textured, and significantly more difficult to spread paint across than the traditional smooth oil ground.
There are a variety of mediums available that impart a variety of qualities to the paint and the paint film. Mediums make possible improved paint handling; jewel-like, glossy enamel finishes; luminosity and enhanced brilliance of color; soft, matte finishes; extended dry time; ropey texture; impasto texture; fine detail work, effectively preserved; soft veils of color applied in glazes; and shortened dry time, among other special effects.
<html>
<div><table width="250" height="166" align="right">
<tr><td><a href="http://www.flickr.com/photos/76314685@N04/7001205159/lightbox/" target="_blank" title="IMG_3979 by RumaraPainting, on Flickr"><img src="http://farm8.staticflickr.com/7111/7001205159_d59ab04c15_o.jpg" width="350" height="233" align="center" alt="IMG_3979"></a></td></tr>
<tr><td>A collection of thinner-free mediums</td></tr></table></div>
A collection of mediums is pictured in the photo.
<br><br>
<em>Back row</em>: Alchemist's Linseed Oil Thick; linseed oil in a 2-oz dropper bottle; Alchemist's Amber Varnish Clear.
<br><br>
<em>Middle row</em>: Kremer's larch balsam; Cennini Black Oil decanted into a 1-oz dropper bottle, and in its original 5-oz container; Cennini beeswax pellets; BOM in a 2-oz dropper bottle; Cennini Stand Oil; five assorted empty dropper bottles.
<br><br>
<em>Front row</em>: thinner-free Olio Verde substitute (stand oil: black oil, 4:1) in a 1-oz dropper bottle; Cennini Canada balsam; Congo copal medium (Cennini Congo Copal Concentrate: Cennini Special Aged Oil, 1:1); Cennini Congo Copal Concentrate; Alchemist's Amber Varnish Dark; Alchemist's Linseed Oil Thick With Amber; Alchemist's Baroque Oil; Cennini Oil of Clove, decanted into a 1-oz dropper bottle.
<BR CLEAR=RIGHT>
</html>
!Add no more than 20% medium to your paint in intermediate layers of the paint film
A good rule of thumb for medium use is to add no more than 20% to the paint, when painting intermediate layers. Top layers made from fat glazes and little paint are an option, bearing in mind the yellowing quality of linseed oil and some resins.
Adding more than 20% medium can affect the optical quality of the layer. Most mediums are made from linseed oil which yellows over time. Some resins such as copal and amber, can also be quite dark. A low percentage of these ingredients in a layer, will keep colors fresher over time.
!Congo copal
Congo copal is a particularly hard copal, found in a region of the world that is currently unstable. Congo copal is not currently available as an exported product. Congo copal is significantly harder than Manila copal, which is more widely available.
Studio Products makes [[Congo Copal Concentrate|http://store.studioproducts.com/CONGO-Copal-Concentrate-p-16228.html]] (please see [[Author's Note]]) from chunks of Congo copal cooked in oil. For an interesting description of the cooking process, go to Studio Products' page of [[Recipes|http://studioproducts.com/recipes/recipe.html]], and scroll to "Copal Varnish (Basic)".
Thinners used to dilute paint have a dulling effect on the colors, especially those (like odorless mineral spirits) that do not contain any natural resins. Turpentine contains some natural resins that maintain some of the gloss of the paint, and oil of spike lavender also maintains some of the paint’s natural oily finish. Copal has an enamel, high-gloss finish. Adding copal as a diluent to paint, maintains and enhances the gloss of the paint.
Congo copal can be used straight, or mixed with oil. A 1:1 mix of linseed oil and Congo copal makes a nice painting medium.
Fine detail work done with the addition of drops of copal to the paint, will set exactly in place. For fine detail work, try adding a couple drops of Congo copal to your mixes, and painting into a couch made with 1:1 copal/linseed oil medium. The brush strokes will not move during the drying process.
!Black oil
<html>
<div><table width="250" height="166" align="right">
<tr><td><a href="http://www.flickr.com/photos/76314685@N04/7001205085/lightbox/" target="_blank" title="IMG_3968 by RumaraPainting, on Flickr"><img src="http://farm8.staticflickr.com/7053/7001205085_0e0a3b4219_o.jpg" width="350" height="233" align="center" alt="IMG_3968"></a></td></tr>
<tr><td>Black oil, and black oil decanted into a dropper bottle for ease of application</td></tr></table></div>
Black oil is made by cooking a form of lead, called litharge, in oil. Adding a drop or two of black oil to paint on the palette, improves paint handling and dry time. Black oil is relatively dark, and will warm and slightly darken light colors and mixes. It bonds like cement when applied with flake white. Black oil is available from various arts supply companies.
Black oil is easy to use when decanted into a dropper bottle.
<BR CLEAR=RIGHT>
</html>
!!A thinner-free approximation of Olio Verde
Black oil is one ingredient in an old master painting medium called Olio Verde. This medium is made with small amounts of thinners. A thinner-free approximation of Olio Verde can be created by mixing stand oil and black oil at a ratio of 4:1.
!Alchemist’s Linseed Oil Thick, without or With Amber
Donald Fels, founder of [[Alchemist|http://amberalchemy.com/]], wrote his book [[Lost Secrets of Flemish Painting|http://ambervarnish.com/index.php?pr=book]] based on many years of research into period documents, and laboratory experimentation with recreation of old master recipes. The painter [[Frank Mason|http://www.frankmason.org/]] partnered with Donald in testing and using the old master mediums so created (see [[References]]).
Linseed Oil Thick is made from linseed oil and linseed stand oil. When used properly as an ingredient of a paint layer, this medium allows painting a superimposed layer, without disturbing the detail in the layer below, within an hour or less of painting the lower layer. Several layers above the underpainting can thus be added in one day. For a discussion of how to use this medium, see the free booklet //The F.E.L.S. System of Painting in Oil: Directions for Media Use// (if not ordering the starter kit, ask for it separately).
Linseed Oil Thick, either With, or without Amber, can be added by the drop to palette blobs for better handling and faster drying. Amber adds luminosity and depth.
!Alchemist’s Amber Varnish, Dark and Clear
Amber varnish is made by cooking amber in oil. Adding a drop to palette colors and mixes, adds luminosity and depth to the paint film, and improves handling.
Amber varnish can be used as a traditional varnish. It can be applied when the paint film is dry to the touch. The paint film does not have to completely cure before coating the surface with amber varnish. By contrast, the curing process prior to applying regular picture varnish takes several months.
Paintings are coated with picture varnish in order to preserve them. A varnish acts as a barrier to atmospheric stresses. Traditional picture varnish is easily removable, to facilitate cleaning.
Amber varnish is not removable. It forms a permanent part of the paint film. This coating is meant to enhance optical effects as well as protect the painting. Using it is a choice on the part of the artist, to permanently include the optical effects created by amber varnish.
Before applying amber varnish, it is important to clear the surface of any dust and particles. Otherwise, bubbles and bumps can form in the clear varnish layer and will be permanently embedded in the painting.
Here is Donald Fels’ amber varnish application procedure (from the booklet //The F.E.L.S. System of Painting in Oil: Directions for Media Use//, p.11), which is included free in the first order from the Alchemist (if not ordering the starter kit, ask for it separately). Donald offers a choice of walnut oil or linseed. I am adapting his 6-step process, into a 5-step process, and choosing linseed oil.
What follows is a description of applying amber varnish, with accompanying photos. For a video overview, scroll to the bottom of the subsection.
!!Ingredients and equipment for using amber varnish
<html>
<div><table width="250" height="166" align="right">
<tr><td><a href="http://www.flickr.com/photos/76314685@N04/7001205577/lightbox/" target="_blank" title="IMG_4167 by RumaraPainting, on Flickr"><img src="http://farm8.staticflickr.com/7240/7001205577_3edd47f39d_o.jpg" width="350" height="233" align="center" alt="IMG_4167"></a></td></tr>
<tr><td>Ingredients and equipment</td></tr></table></div>
</html>
*Tripoli powder (included in Alchemist orders)
*linseed oil
*a dry (to the touch) painting
*marble slab
*thin palette knife for mixing
*paper towels
(see [[Materials]])<html>
<BR CLEAR=RIGHT>
</html>
!!Procedure for using amber varnish
''//Step One//''
<html>
<div><table width="250" height="166" align="right">
<tr><td><a href="http://www.flickr.com/photos/76314685@N04/7001207587/lightbox/" target="_blank" title="IMG_5411 by RumaraPainting, on Flickr"><img src="http://farm8.staticflickr.com/7081/7001207587_43ec1e6d67_o.jpg" width="350" height="233" align="center" alt="IMG_5411"></a></td></tr>
<tr><td>Oiling out with linseed oil</td></tr></table></div>
</html>Make a couch with linseed oil on the (dry) surface of your painting (see [[Oiling Out]]).<html>
<BR CLEAR=RIGHT>
<div><table width="250" height="166" align="right">
<tr><td><a href="http://www.flickr.com/photos/76314685@N04/7001205269/lightbox/" target="_blank" title="IMG_3997 by RumaraPainting, on Flickr"><img src="http://farm8.staticflickr.com/7083/7001205269_65442fc831_o.jpg" width="350" height="233" align="center" alt="IMG_3997"></a></td></tr>
<tr><td>Tripoli powder</td></tr></table></div>
</html>''//Step Two//''
Put a small pile of Tripoli powder on the marble.
<html>
<BR CLEAR=RIGHT>
<div><table width="250" height="166" align="right">
<tr><td><a href="http://www.flickr.com/photos/76314685@N04/7001205305/lightbox/" target="_blank" title="IMG_4039 by RumaraPainting, on Flickr"><img src="http://farm8.staticflickr.com/7086/7001205305_dd70ef1680_o.jpg" width="350" height="233" align="center" alt="IMG_4039"></a></td></tr>
<tr><td>Mixing the Tripoli powder with linseed oil</td></tr></table></div>
<br>
<br>
Mix some Tripoli powder with linseed oil to a paste, using the palette knife on the marble slab.
<BR CLEAR=RIGHT>
<div><table width="250" height="166" align="right">
<tr><td><a href="http://www.flickr.com/photos/76314685@N04/7001205325/lightbox/" target="_blank" title="IMG_4043 by RumaraPainting, on Flickr"><img src="http://farm8.staticflickr.com/7206/7001205325_96272f8052_o.jpg" width="350" height="233" align="center" alt="IMG_4043"></a></td></tr>
<tr><td>Making a smooth paste</td></tr></table></div>
<br>
<br>
<BR CLEAR=RIGHT>
<div><table width="250" height="166" align="right">
<tr><td><a href="http://www.flickr.com/photos/76314685@N04/6855088628/lightbox/" target="_blank" title="IMG_4170 by RumaraPainting, on Flickr"><img src="http://farm8.staticflickr.com/7136/6855088628_252ffa8a0f_o.jpg" width="350" height="233" align="center" alt="IMG_4170"></a></td></tr>
<tr><td>Tripoli paste on an oil soaked towel</td></tr></table></div>
</html>''//Step Three//''
Place some of this paste on an oil-soaked blue towel.<html>
<BR CLEAR=RIGHT>
<div><table width="250" height="166" align="right">
<tr><td><a href="http://www.flickr.com/photos/76314685@N04/6855088390/lightbox/" target="_blank" title="IMG_4111 by RumaraPainting, on Flickr"><img src="http://farm7.staticflickr.com/6119/6855088390_5c63d4e5ce_o.jpg" width="350" height="233" align="center" alt="IMG_4111"></a></td></tr>
<tr><td>Rubbing in the Tripoli paste</td></tr></table></div>
Gently massage the paste in a circular motion the surface of your painting. Rub the entire surface of the painting with some of the paste.
<BR CLEAR=RIGHT>
<div><table width="250" height="166" align="right">
<tr><td><a href="http://www.flickr.com/photos/76314685@N04/6855088422/lightbox/" target="_blank" title="IMG_4121 by RumaraPainting, on Flickr"><img src="http://farm8.staticflickr.com/7045/6855088422_5d77b7cb02_o.jpg" width="350" height="233" align="center" alt="IMG_4121"></a></td></tr>
<tr><td>An oil-soaked fresh blue towel</td></tr></table></div>
<br>
<br>
When you are done, soak a fresh folded blue towel in oil.
<BR CLEAR=RIGHT>
<div><table width="250" height="166" align="right">
<tr><td><a href="http://www.flickr.com/photos/76314685@N04/6855088480/lightbox/" target="_blank" title="IMG_4133 by RumaraPainting, on Flickr"><img src="http://farm8.staticflickr.com/7195/6855088480_de50ee8467_o.jpg" width="350" height="233" align="center" alt="IMG_4133"></a></td></tr>
<tr><td>Removing the Tripoli paste with the towel</td></tr></table></div>
<br>
<br>
Wipe the Tripoli paste off of the painting, re-folding the towel as it gets covered with paste. Keep re-folding the towel, exchanging it for a fresh oil-soaked folded towel when necessary, until the towel lifts clean from the surface. Using oil-soaked blue towels insures that the cleaned surface, is still coated with a small film of oil (a couch).
<BR CLEAR=RIGHT>
<div><table width="250" height="166" align="right">
<tr><td><a href="http://www.flickr.com/photos/76314685@N04/7001205539/lightbox/" target="_blank" title="IMG_4153 by RumaraPainting, on Flickr"><img src="http://farm8.staticflickr.com/7276/7001205539_9ff7c02682_o.jpg" width="350" height="233" align="center" alt="IMG_4153"></a></td></tr>
<tr><td>Dripping amber varnish onto the painting</td></tr></table></div>
</html>''//Step Four//''
Put some small drops of amber varnish into the thin film of oil remaining on the painting’s surface. Work the varnish into a thin, even coating across the surface, with your first two fingers. <html>
<BR CLEAR=RIGHT>
<div><table width="250" height="166" align="right">
<tr><td><a href="http://www.flickr.com/photos/76314685@N04/6855088726/lightbox/" target="_blank" title="IMG_4178 by RumaraPainting, on Flickr"><img src="http://farm8.staticflickr.com/7069/6855088726_396d3ffc20_o.jpg" width="350" height="233" align="center" alt="IMG_4178"></a></td></tr>
<tr><td>Rubbing in the varnish</td></tr></table></div>
</html>
<html>
<BR CLEAR=RIGHT>
</html>
''//Step Five//''
Allow your painting to dry. This may take two to three weeks, depending on atmospheric conditions.
<html>
<div>
<table width="400" height="225" align="right">
<tr><td>
<iframe width="400" height="233" src="http://www.youtube.com/embed/jO9xVh0GAuE?rel=0" frameborder="0" allowfullscreen></iframe>
</td></tr>
<tr>
<td>
Hover over video for controls
</td>
</tr>
</table>
</div>
<br>
<br>
<br>
</html>This video shows the procedure for applying amber varnish.<html>
<BR CLEAR=RIGHT>
<br>
</html>
!Making and using an isolating layer
One traditional use of amber varnish is as a lower “isolating” layer. The Dutch master painters in the 15th-17th centuries referred to a dull colored underpainting as the “dead colors”. One method to add luminosity and depth to the painting was to coat the dead colors with a layer of amber varnish, and then paint the upper layers, onto this varnish layer.
This layer of varnish is called an “isolating” layer because it acts as a clean separation between the lower layers and subsequent layers. Imagine placing a layer of Saran Wrap over a (dry) lower layer. One could brush onto the Saran Wrap, and wipe off with ease, allowing for experimentation. This intermediate layer of amber varnish, serves a similar function to the Saran Wrap.
Note that a layer of amber varnish will not be affected by subsequent thinned layers.
!Alchemist’s Baroque Oil
<html>
<div><table width="250" height="166" align="right">
<tr><td><a href="http://www.flickr.com/photos/76314685@N04/6855088098/lightbox/" target="_blank" title="IMG_3969 by RumaraPainting, on Flickr"><img src="http://farm7.staticflickr.com/6240/6855088098_305b2352f1_o.jpg" width="350" height="233" align="center" alt="IMG_3969"></a></td></tr>
<tr><td>Alchemist’s Baroque Oil, decanted into a 2-oz dropper bottle for ease of application, and in its original bottle</td></tr></table></div>
</html>This is another old master thinner-free painting medium, made from a 400 year old recipe. Its ingredients are linseed stand oil, mastic tears and Venice turpentine (larch balsam) (see [[Materials]]).<html>
<BR CLEAR=RIGHT>
</html>
Massey has two varnish recipes made from heating these ingredients to combine them. One is quoted as being a 400 year old recipe, with linseed oil / mastic tears / Venice Turpentine in a ratio of 4:2:1.```Robert Massey, //Formulas for Painters// (~Watson-Guptill, 1967), 146.``` The other recipe has those ingredients in the ratio 3:1:3.```Massey, 158.```
Mastic tears are a resin harvested from the tree [[pistacia lentiscus|http://en.wikipedia.org/wiki/Pistacia_lentiscus]] on the Greek island called Chios. They are used as an ingredient in some foods. They are available from food supply companies as well as arts supply companies (for example [[naturalpigments.com|http://www.naturalpigments.com/detail.asp?PRODUCT_ID=510-33MAS10&src=LeftColumnNewArrivals]]).
!Venice turpentine (larch balsam) and oil
Massey has a recipe for a painting medium made by mixing linseed oil with Venice turpentine (larch balsam) at a ratio of 1:4.```Massey, 109.``` Venice turpentine is not as viscous as Canada balsam, but it is still very sticky and looks and smells like Canada balsam.
!Glazing mediums
Glazing mediums allow for the application of thin veils of color as an upper layer. Glaze layers are frequently very fat, being composed of high proportions of oil and resins. We avoid glaze recipes containing thinners, another reason that the glazes listed here are particularly fat.
Glazes can also be used as a layer to paint into with full-bodied paint, adding depth and richness to a surface.
The old master paintings that look like they have been coated with liquid diamonds, such as Vermeer’s painting of “the Milkmaid” (recently seen in the U.S. at the [[Metropolitan Museum of Art|http://www.metmuseum.org/special/se_event.asp?OccurrenceId={EC38F2E1-BA19-4D5F-845F-A5C44CB90A9E}]], on loan to celebrate the quadricentennial of Henry Hudson’s trip up the Hudson River), owe their glowing depth to the use of resins.
To use a glaze medium to create a thin veil of color, apply the glaze onto the surface of the (dry) lower layer with a brush or palette knife. Some glazes are very thick and viscous, and will form a layer that is significantly thicker than a couch made with oil or BOM. A thin couch layer made with, for example, BOM or oil can also be used for glazing (see [[Oiling Out]]).
Paint, dab and rub color into the glaze with a loaded brush. Transparent colors (see [[Definitions]]) make transparent glazes; opaque colors applied thinly make semi-transparent glazes (see [[Colored Grounds]]).
Use the brush, a folded towel, or gloved fingers (see [[Heavy Metals Safety]]) to move and adjust the color in the layer as desired. A fan bristle brush is a good tool for adding color to, lifting color from, and otherwise manipulating color in a glaze layer.
!!Venice turpentine (larch balsam) and stand oil glazing medium
Massey has a recipe for a glazing medium made with Venice turpentine (larch balsam) and stand oil, mixed at a ratio of 1:1.```Massey, 136.```
!!Copal and balsam (glazing) medium
Studio Products has a recipe for a glaze medium that calls for the legitimate use of the word “unctuous” (go to Studio Products' page of [[Recipes|http://studioproducts.com/recipes/recipe.html]], and scroll to "Canada Balsam & Copal"). This medium is made by mixing Canada balsam and Congo Copal Concentrate at a 1:1 ratio. Try applying a thin layer onto a dry canvas with a palette knife and painting into it with full-bodied paint to add luminosity and depth. Such a layer can take one to two weeks to dry, depending on thickness.
Copal is dark, and deepens in color with time. The linseed oil in which it is cooked yellows with time. Bear in mind, when choosing to use this layer to create a top layer, that it will warm and darken somewhat the colors below.
Glazing mediums can be quite thick. A glazing medium made with a significant proportion of balsam, like this one, can be quite sticky. For ease of application, try spreading a glazing medium that is extremely thick and sticky, into a thin couch made with linseed oil or BOM (see [[Oiling Out]]).
!!Canada balsam and stand oil glazing medium
<html>
<div><table width="250" height="166" align="right">
<tr><td><a href="http://www.flickr.com/photos/76314685@N04/6855089726/lightbox/" target="_blank" title="IMG_4441 by RumaraPainting, on Flickr"><img src="http://farm8.staticflickr.com/7059/6855089726_62caeb8c02_o.jpg" width="350" height="233" align="center" alt="IMG_4441"></a></td></tr>
<tr><td>Canada balsam and Cennini's Linseed Stand Oil</td></tr></table></div>
Studio Products has a recipe for a glazing medium (go to Studio Products' page of </html>[[Recipes|http://studioproducts.com/recipes/recipe.html]]<html>, and scroll to "Canada Balsam and Sun-Thickened Oil") made by mixing Canada balsam and stand (or sun-thickened) oil at a 1:1 ratio. This layer can slide somewhat depending on how thickly it is applied, so dry the canvas flat.
<BR CLEAR=RIGHT>
Try brushing on the glaze as a top layer, and painting into it with a transparent color to create a veil of color.
Paint that is lying in this layer may appear to float with a rich glow above the layer below. Consider adding a touch of zinc white to give more solidity to the glaze.
<div><table width="250" height="166" align="right">
<tr><td><a href="http://www.flickr.com/photos/76314685@N04/7001206769/lightbox/" target="_blank" title="IMG_4448 by RumaraPainting, on Flickr"><img src="http://farm7.staticflickr.com/6212/7001206769_9839659533_o.jpg" width="350" height="233" align="center" alt="IMG_4448"></a></td></tr>
<tr><td>A scoop of balsam</td></tr></table></div>
<br>
<br>
To make the glaze, scoop some balsam onto the palette with a palette knife.
<BR CLEAR=RIGHT>
<div><table width="250" height="166" align="right">
<tr><td><a href="http://www.flickr.com/photos/76314685@N04/7001207035/lightbox/" target="_blank" title="IMG_4662 by RumaraPainting, on Flickr"><img src="http://farm8.staticflickr.com/7060/7001207035_8ecd3638c5_o.jpg" width="350" height="233" align="center" alt="IMG_4662"></a></td></tr>
<tr><td>Pouring stand oil</td></tr></table></div>
<br>
<br>
Pour an equivalent size puddle of stand oil next to the balsam.
<BR CLEAR=RIGHT>
<div><table width="250" height="166" align="right">
<tr><td><a href="http://www.flickr.com/photos/76314685@N04/7001207069/lightbox/" target="_blank" title="IMG_4695 by RumaraPainting, on Flickr"><img src="http://farm8.staticflickr.com/7046/7001207069_df520bfbd9_o.jpg" width="350" height="233" align="center" alt="IMG_4695"></a></td></tr>
<tr><td>Mixing the balsam and stand oil</td></tr></table></div>
<br>
<br>
Mix the two with a palette knife.
<BR CLEAR=RIGHT>
<div><table width="250" height="166" align="right">
<tr><td><a href="http://www.flickr.com/photos/76314685@N04/7001207115/lightbox/" target="_blank" title="IMG_4720 by RumaraPainting, on Flickr"><img src="http://farm8.staticflickr.com/7140/7001207115_b3acd648b8_o.jpg" width="350" height="233" align="center" alt="IMG_4720"></a></td></tr>
<tr><td>Brushing color into the glaze</td></tr></table></div>
<br>
<br>
Use the palette knife to apply the glaze layer thinly. Paint into it, and spread the color around using a brush. A fan bristle brush may prove useful for spreading color evenly.
<BR CLEAR=RIGHT>
You may notice tiny bubbles embedded in the glaze, a sign of flecks of dust on the canvas. Consider rubbing the canvas with a Tripoli powder paste (see </html>[[Other Mediums: Alchemist’s Amber Varnish, Dark and Clear|Other Mediums##Alchemist’s Amber Varnish, Dark and Clear]]<html>) first before glazing.
<br>
<br>
An oil couch, such as is created in the amber varnish procedure, will facilitate spreading of this thick glaze.
<div><table width="250" height="166" align="right">
<tr><td><a href="http://www.flickr.com/photos/76314685@N04/6855090196/lightbox/" target="_blank" title="IMG_4791 by RumaraPainting, on Flickr"><img src="http://farm7.staticflickr.com/6233/6855090196_e83c78feb3_o.jpg" width="350" height="233" align="center" alt="IMG_4791"></a></td></tr>
<tr><td>The glaze with color (left color is Cennini Pyrrole Red (T), central color is Williamsburg Alizarin Orange (T), right color is Old Holland Cadmium Yellow Deep Extra (O))</td></tr></table></div>
<br>
<br>
<BR CLEAR=RIGHT>
</html>
!Adding wax to your mediums
Beeswax is a traditional ingredient in oil paint films. Some of the earliest oil paintings that contain wax have survived in good condition for hundreds of years.
Artist grade beeswax is purified, and is translucent and light colored rather than the deep mustard yellow familiar from candles.
Beeswax can be added to paints and painting mediums in its melted form. The wax imparts a matte finish, and adds significant body to the paint. Wax may be added to almost any medium. Wax dries hard in approximately two months. For proper bonding, layers must be painted over a layer containing wax within the window of time before the wax sets. Allow a couple weeks after painting a layer containing wax, to paint another layer on top.
Paintings containing wax cannot be varnished using regular picture varnish.
For a demo, we create a wax medium by melting a few pellets of beeswax in linseed oil.
What follows is a description of melting wax in linseed oil, with accompanying photos. For a video overview, scroll to the bottom of the subsection.
!!Ingredients and equipment for adding wax
*beeswax
*a small jar, 2-4 ounces
*an electric water bath such as the [[Presto Kitchen Kettle Multi-Cooker|http://www.amazon.com/Presto-06000-Kitchen-Kettle-Multi-Cooker/dp/B00006IUWH]], available at home supply stores such as Target.
*linseed oil
(see [[Materials]])
!!Procedure for adding wax
<html>
<div><table width="250" height="166" align="right">
<tr><td><a href="http://www.flickr.com/photos/76314685@N04/7001206817/lightbox/" target="_blank" title="IMG_4536 by RumaraPainting, on Flickr"><img src="http://farm7.staticflickr.com/6239/7001206817_f1a236a95c_o.jpg" width="350" height="233" align="center" alt="IMG_4536"></a></td></tr>
<tr><td>Ingredients and equipment</td></tr></table></div>
<br>
<br>
Gather the ingredients and equipment.
<BR CLEAR=RIGHT>
<div><table width="250" height="166" align="right">
<tr><td><a href="http://www.flickr.com/photos/76314685@N04/7001206857/lightbox/" target="_blank" title="IMG_4551 by RumaraPainting, on Flickr"><img src="http://farm7.staticflickr.com/6091/7001206857_508f52e180_o.jpg" width="350" height="233" align="center" alt="IMG_4551"></a></td></tr>
<tr><td>Beeswax pellets added to linseed oil in a small jar for heating</td></tr></table></div>
<br>
<br>
Put a small helping of beeswax pellets into the jar.
<BR CLEAR=RIGHT>
<div><table width="250" height="166" align="right">
<tr><td><a href="http://www.flickr.com/photos/76314685@N04/6855089880/lightbox/" target="_blank" title="IMG_4559 by RumaraPainting, on Flickr"><img src="http://farm8.staticflickr.com/7239/6855089880_aa3e3300e4_o.jpg" width="350" height="233" align="center" alt="IMG_4559"></a></td></tr>
<tr><td>Set the cooker to 200 degrees, and put the cooker top on</td></tr></table></div>
<br>
<br>
Add an inch or so of water to the cooker, leaving a fair amount of room between the water and the top rim of the jar. Plug in the cooker and set the temperature to 200 degrees. Put the top on and let steam for 5 minutes or so, checking to see when the wax has melted.
<BR CLEAR=RIGHT>
<div><table width="250" height="166" align="right">
<tr><td><a href="http://www.flickr.com/photos/76314685@N04/7001206919/lightbox/" target="_blank" title="IMG_4566 by RumaraPainting, on Flickr"><img src="http://farm7.staticflickr.com/6102/7001206919_5ed9992aaa_o.jpg" width="350" height="233" align="center" alt="IMG_4566"></a></td></tr>
<tr><td>Lift out the hot jar with a folded towel pad</td></tr></table></div>
<br>
<br>
Lift out the hot jar with a folded towel pad.
<BR CLEAR=RIGHT>
<div><table width="250" height="166" align="right">
<tr><td><a href="http://www.flickr.com/photos/76314685@N04/6855089974/lightbox/" target="_blank" title="IMG_4584 by RumaraPainting, on Flickr"><img src="http://farm7.staticflickr.com/6219/6855089974_7669c05af8_o.jpg" width="350" height="233" align="center" alt="IMG_4584"></a></td></tr>
<tr><td>Mix and stir the hot wax and oil</td></tr></table></div>
<br>
<br>
Mix and stir the melted wax into the oil.
<BR CLEAR=RIGHT>
<div><table width="250" height="166" align="right">
<tr><td><a href="http://www.flickr.com/photos/76314685@N04/6855090004/lightbox/" target="_blank" title="IMG_4596 by RumaraPainting, on Flickr"><img src="http://farm8.staticflickr.com/7103/6855090004_6a43072bf5_o.jpg" width="350" height="233" align="center" alt="IMG_4596"></a></td></tr>
<tr><td>Kneading the cooling oil and wax</td></tr></table></div>
<br>
<br>
Pour a spoonful onto the palette. The cold palette will bring the wax/oil mix to a slushy state. Work it with the palette knife to make a smooth butter. Add some to color mixer as desired.
<BR CLEAR=RIGHT>
<div>
<table width="400" height="225" align="right">
<tr><td>
<iframe width="400" height="233" src="http://www.youtube.com/embed/gPJi8-NiGFY?rel=0" frameborder="0" allowfullscreen></iframe>
</td></tr>
<tr>
<td>
Hover over video for controls
</td>
</tr>
</table>
</div>
<br>
<br>
<br>
</html>This video shows creating a medium with beeswax and linseed oil.<html>
<BR CLEAR=RIGHT>
<br>
</html>
!!Venetian medium
When combined with black oil, beeswax makes “Venetian medium”. Early Venetian oil painters made large paintings that were hung high in churches. Light came in from high windows and illuminated the paintings. The paintings’ reflective surfaces, seen from below, obscured the images portrayed. Venetian medium was developed to create a matte finish that would allow the images to be seen.
!Handling qualities of flake white
Flake white is made with a particular form of lead called lead carbonate. It handles differently than other whites. Experimentation will show each artist, whether this creamy white with its distinct handling properties is to be preferred for certain applications.
The color of flake white is recreated in Old Holland’s “Old Holland Yellow Light.” The color of flake white can also be approximated by adding a drop of raw sienna to titanium white. The special handling properties of flake white however cannot be replicated.
!How to achieve brilliance through paint alone
Many paints offer special brilliance and luminosity due to the qualities of the ground pigment used, or due to other additives.
Williamsburg makes a line of paints with added mica flakes called [[Iridescents|http://www.williamsburgoilpaint.bizland.com/OilColors/iridescentoils.htm]]. Mica powder and flakes are available from [[Sinopia|http://www.sinopia.com/]]. Iridescent pigments, and ground metals including pure powdered gold are available from [[Kremer|http://www.kremerpigments.com/]].
The [[Gamblin Radiants series|http://www.gamblincolors.com/artists.grade.oils/radiants/index.html]] glow brightly like neon signs. I am not familiar with the technology behind these colors.
Studio Products makes "[[Optical White|http://store.studioproducts.com/Paint-Optical-White-p-16234.html]]" (please see [[Author's Note]]) by adding nanospheres to the paint. Nanospheres are tiny balls of silica that were developed for auto paints to add brilliance and durability.
Pure mineral pigments are available from [[Kremer|http://kremerpigments.com/shopus/index.php?lang=ENG&list=0101]] like malachite, azurite and lapis, which can be luminous.
Dry pigments pose significant health hazards if used without proper safety precautions. Max Howard, director of Studio Products’ (please see [[Author's Note]]) factory facility in Georgia, accepts orders for custom milling of paint from dry pigments. Prices depend on batch size. A group order to be shared among several artists will lower the price.
!Notes on using Turpenoid Natural
[[Weber Art|http://www.weberart.com/]], makers of Turpenoid (blue can), also make [[Turpenoid Natural|http://www.weberart.com/oil_mediums/turp_nat.html]] (green can). Turpenoid Natural is an aggressive solvent and a good cleaner to use on dried brushes when nothing else works (see [[Cleaning]]).
The [[MSDS for Turpenoid Natural|http://74.125.93.132/search?q=cache:WTYijCSRmAoJ:www.uww.edu/adminaffairs/riskmanagement/msds/files/turpenoid_natural_martin_f._weber_company_3.23.04.pdf+turpenoid+natural+MSDS&cd=3&hl=en&ct=clnk&gl=us]] defines it as non-toxic. The active ingredient is d-limonene, an extract of citrus fruits which is also the active ingredient in citrus-based thinners such as [[Eco House Xtra Mild Citrus Thinner|http://www.eco-house.com/citrus_thinner115.html]]. D-limonene in its concentrated form causes respiratory reactions and skin sensitivities in some people. Gloves are a good precaution. If you experience stinging of eyes or nose as a reaction to its smell, or skin abrasions or burn marks as a result of skin contact, consider using other products. The MSDS defines non-toxic according to a set standard. People who have bodies that are extra sensitive, may experience reactions to lower concentrations of d-limonene than are deemed toxic by the MSDS.
Turpenoid Natural is used by some artists as a painting medium. There are several aspects to this choice to consider.
The manufacturer’s recommendations (read the [[FREE Turpenoid Natural Technical Brochure|http://www.weberart.com/oil_mediums/tech_turp_nat.pdf]], a PDF download from [[weberart.com|http://www.weberart.com/oil_mediums/turp_nat.html]]) explicitly state that:
*Turpenoid Natural cannot be used to create washes or thin glazes
*Turpenoid Natural cannot be used to ‘wet’ a canvas before painting (in other words, do not make a couch [see [[Oiling Out]]] with Turpenoid Natural)
*Turpenoid Natural cannot be used at greater than 25% of paint volume in order for a layer to dry in a reasonable amount of time
*The layer underneath a layer created with Turpenoid Natural, must be fully dry before over painting. Here is an excerpt from the FREE Turpenoid Natural Technical Brochure:
>“If you employ over painting (painting in layers) as a technique, and use Turpenoid Natural as a medium, //each layer of paint must be wholly dry to the touch before applying the next layer//. Thicker areas must be firm to the touch //throughout the entire area// to be over painted. Surface drying or superficial skinning of thicker paint areas is //not// sufficient drying for overpainting. Applying paint mixed with Turpenoid Natural over paint film(s) that is not firm and dry to the touch may create a mottling or rippling effect and may even lift the underlying layer. It may also prolong the drying time of the underlying paint indefinitely. Turpenoid Natural is therefore not recommended for use as a medium with heavy impasto techniques in which over painting is used.” (Note: //italics// exactly as in manufacturer's brochure)
Thus, unlike painting with traditional linseed oil mediums, lower layers cannot be tacky or semi-dry before over painting. Also, unlike painting with traditional linseed oil mediums, layers containing thick impasto strokes should not be over painted, even when dry to the touch (unless one waits the full curing time of several months before over painting).
Another interesting aspect of choosing to add d-limonene to the paint film derives from knowledge of its use in industrial applications. Other art paint thinners including turpentine, toluene, and petroleum distillates (mineral spirits) are used in vastly higher volume by paint manufacturers of paint for industrial applications, than by the art supply industry. The volume of turpentine, for example, used in industry to thin paint far, far outweighs the volume of turpentine used for making art thinners and mediums.
D-limonene is not used at all in industrial applications, as an additive to paint. It is used strictly in its solvent capacity as an additive to cleaners. One possibility is that d-limonene may inhibit the natural bonding that occurs during polymerization of oil paint films. I have found universal agreement among paint makers that work in small companies, that d-limonene should not be added to paint films. I have not found an expert who can explain the chemistry that is behind this precaution.
!Financial considerations
Different mediums get used in different quantities. Oiling out with BOM (see [[Oiling Out]]), for example, takes more volume of medium than does adding a drop or two of Alchemist’s Baroque Oil to paint blobs on the palette (see [[Other Mediums: Alchemist’s Baroque Oil|Other Mediums##Alchemist’s Baroque Oil]]). When comparing costs, it is important to keep this in mind.
Computing the cost of making and bottling a home-made medium, requires including the cost of the ingredients and of the bottle.
''//Cost of materials to make a 2-oz bottle of BOM//''
There are many different linseed oils available. I use Studio Products’ Special Aged Oil (please see [[Author's Note]]). I buy it by the gallon at a bulk discount (see [[Materials]]). The following discussion of costs assumes that the buyer takes advantage of (some of the) discounts that are available.
Cost of raw materials:
|Ingredient|Breakdown of cost|Cost per unit|h
|''LINSEED OIL''|>|>|
|Studio Products’ Special Aged (linseed) Oil (please see [[Author's Note]])|a gallon from Studio Products for $89, including shipping of $9.80 per gal and no tax|$0.77/oz|
|Gamblin Alkali Refined Linseed Oil|a 16-oz container, from Jerry's Artarama online, assuming no shipping (for an order larger than $175, Jerry's does not charge shipping) and no tax|$0.88/oz|
|Williamsburg Linseed Oil (cheapest grade of Williamsburg linseed oil)|a 16 oz container, from Jerry's Artarama online, assuming no shipping (for $175+ order) and no tax|$0.60/oz|
|Winsor & Newton Refined Linseed Oil|a 16.9 oz container from Jerry's Artarama online, assuming no shipping (for $175+ order) and no tax|$0.80/oz|
|''CANADA BALSAM''|>|>|
|Canada balsam|from Studio Products online (please see [[Author's Note]]), including shipping; 1-oz container for $26.60 (member price) plus $2.80 shipping|$29.40/oz|
|''GLASS DROPPER BOTTLE''|>|>|
|Glass dropper bottle|from SKS Bottle & Packaging, including shipping and tax: 48 2-oz glass bottles per case, $48.96 per case, add $7 for shipping and tax|$1.17 per 2-oz glass dropper bottle|
Cost of materials to make one 2-oz dropper bottle of BOM:
|Quantity|Notes|Cost|h
|2 fluid oz linseed oil|using Studio Products' Special Aged Oil (please see [[Author's Note]])|2 x $0.77/oz = $1.54 |
|1/8 oz of Canada balsam|BOM recipe is one part balsam to 16 parts oil|1/8 x $29.40/oz = $3.68|
|One 2-oz dropper bottle||$1.17|
|''Total:''|$1.54 + $3.68 + $1.17 = |$6.39 per 2-oz bottle,<br>or ''$3.20 per oz''<br>(assuming a 2-oz bottle)|
''//Comparison with several commercial mediums available from Jerry's//''
Of the many commercial mediums available, we choose several popular ones to compare. This list is meant to focus on mediums that one would use in higher volume than just a drop or two added to a palette blob of paint.
|Medium|Breakdown of cost|Cost per ounce|h
|BOM|assuming a 2-oz dropper bottle|$3.20/oz|
|Winsor & Newton “Liquin”|assuming a 2.5 oz bottle, purchased online from Jerry's with no shipping ($175+ order) and no tax for $5.51 (see [[Alkyds]])|$2.20/oz|
|Winsor & Newton Artist Painting Medium|assuming a 2.5 oz bottle purchased online from Jerry's with no shipping ($175+ order) and no tax for $6.37|$2.50/oz|
|Gamblin ~Neo-Megilp|assuming an 8-oz bottle, purchased online from Jerry's with no shipping ($175+ order) and no tax for $11.21 (see [[Alkyds]])|$1.40/oz|
|Weber’s Turpenoid Natural|assuming a one gallon can, purchased online from Jerry's with no shipping ($175+ order) and no tax for $50.90 (see [[Other Mediums: Notes on using Turpenoid Natural|Other Mediums##Notes on using Turpenoid Natural]])|$0.40/oz|
''//Comparison with cost of paint//''
|Paint|Breakdown of cost|Cost per ounce|h
|Cost per oz of student grade paint, cheapest color|~Daler-Rowney umber at Jerry's, assuming no shipping (for $175+ order) and no tax, 38 ml for $3.72|$2.65/oz|
''//Comparison with cost of several commercial mediums available from small companies//''
Of the many such mediums available, we choose several. This list is meant to focus on mediums that are normally used in small quantity, for example a drop or two added to a palette blob of paint.
|Medium|Breakdown of cost|Cost per ounce|h
|Studio Products’ Cennini Black Oil (please see [[Author's Note]])|assuming shipping as a part of a larger order, approximately $1; cost of a 5-oz bottle is $17.10 (member price)|$3.62/oz|
|Studio Products’ Congo Copal Concentrate (please see [[Author's Note]])|assuming shipping as a part of a larger order, approximately $1; cost of a 1-oz bottle is $25.04 (member price)|$26.04/oz|
|Alchemist’s Baroque Oil|assuming shipping as part of a larger order, approximately $1; 60-ml bottle for $50|$23.33/oz|
|Alchemist’s Amber Varnish|assuming shipping as part of a larger order, approximately $1; 60-ml bottle for $110|$51.33/oz|
|Alchemist’s Linseed Oil Thick|assuming shipping as part of a larger order, approximately $1; 60-ml bottle for $18|$8.40/oz|
''//Cost of using BOM as a standard medium for oiling out (assuming the artist oils out once per painting session)//''
The artist may choose to oil out sometimes and not others (see [[Oiling Out: To oil out or not to oil out|Oiling Out##To oil out or not to oil out]]); also, the artist may choose to oil out sometimes with other mediums (or just oil). This comparison assumes an extreme, namely that the artist oils out with BOM at least once per day.
|Description|Amount|h
|Number of dropper-fuls from a 2-oz bottle dropper that fill a teaspoon|Approximately 6 dropper-fuls|
|BOM needed to oil out a 24x24 or 24x30 canvas, with one dropper-ful leftover for the palette|1 tsp|
|Volume of BOM needed per day, assuming oiling out one 24x24 or 24x30 area per day, and one dropper-ful for the palette|1 tsp per day|
|Cost of materials to make BOM per oz, assuming a 2-oz dropper bottle|$3.20 per oz|
|Cost of 1 tsp of BOM, assuming materials cost only, made in 2-oz dropper bottle (note that there are 6 tsp per fluid oz)|$0.53 per tsp|
|Cost of BOM used per year, assuming 1 tsp per day, painting 5 days per week, 4 weeks per month, all 12 months of the year|$127.20 per year|
<<tiddler HideTiddlerTags>>
<!--{{{-->
<div class='header'>
<div class='headerShadow'>
<span class='siteTitle' refresh='content' tiddler='SiteTitle'></span>
<span class='siteSubtitle' refresh='content' tiddler='SiteSubtitle'></span>
</div>
<div class='headerForeground'>
<span class='siteTitle' refresh='content' tiddler='SiteTitle'></span>
<span class='siteSubtitle' refresh='content' tiddler='SiteSubtitle'></span>
</div>
</div>
<div id='mainMenu' refresh='content' tiddler='MainMenu'></div>
<div id='sidebar'>
<div id='sidebarOptions' refresh='content' tiddler='SideBarOptions'></div>
<div id='sidebarTabs' refresh='macro' force='true' macro='slider chkSideBarTabs SideBarTabs "index »" "display lists of tiddlers"'></div>
</div>
<div id='displayArea'>
<div id='messageArea'></div>
<div id='tiddlerDisplay'></div>
</div>
<!--}}}-->
(''//Internet Explorer//'' users: the Table of Contents will not function as links. Please read [[Author's Note]].)
<<showtoc>>
!Introduction
In this section I am including some personal comments about various aspects of the mentality of using these methods and materials. These comments are not intended as teaching. Rather they are intended to initiate discussion: between you and me, or you and yourself, or you and friends, or family – or you and the community of people with whom you share your art. This discussion may broaden awareness about oil painting, its history, and the applications of historical materials and methods to modern practices.
!The importance of ease; the option of education
The ability to work with the paint in a natural and relaxed manner, and to create a variety of desired effects with ease, is of paramount importance. The oil painting process needs to be one that affords the painter comfort, joy and the relegation of stress to matching their vision with their creation, rather than struggling with materials and their preparation. Masterpieces in various art forms have been created with unsound use of materials or poor quality materials. A given productive, inspired artist may operate within a mentality of comfort and freedom when creating work without attention to proper use of materials. If necessary, restorers can create longevity where the original construction methods and materials denied it.
That having been said, education illuminates options. Education creates solid ground for informed choices, and respect for the various results of such choices. An artist who uses all varieties of thinners with comfort, and who enjoys the effects created with modern or traditional mediums, without knowledge of their proper use or inherent limitations, may choose to avoid an education in materials and their uses. Many more artists I suspect exist in an educational void by default, as a result of the removal of education in materials from art school curricula, and the resulting lack of informed master artists who participate in the oil painting community as colleagues and master teachers.
Oil painters who pursue education in materials are participants (perhaps not consciously) in the community of modern oil painters who are choosing to adopt a portion of early oil painting studio practices. The blending of modern with traditional practices in terms of acquiring a working knowledge of materials, as well as in terms of using old materials and techniques, is exciting.
!Notes on creativity within the restrictions inherent in proper use of materials
Modern technology offers a range of pigments and many technical advances in paint manufacturing, that together with a grounded comprehension of the limitations, as well as the expansive options of materials and their proper uses, can offer the modern painter an enormous wealth of choices.
Working with fresh paint, the incredible range of well-made colored pigments available today, the option of a couch, a variety of mediums, and knowledge of the proper application of paint and mediums, and of their inherent technical restrictions, can set up the oil painter for springing into the lyrical joy of unfettered creativity. Extraordinary creativity can be achieved within limitations of a medium, or the limitations of natural laws, or of adherence to a certain style. For example, the very traditional Spanish flamenco dance has become a wonderland in modern interpretations done by creative choreographers. Great architects provide comfortable living and working spaces within amazingly unusual structures, built to last using modern materials and techniques. [[Cirque du Soleil|http://www.cirquedusoleil.com/]] creates a modern spectacle of the human body, that would have been beyond the imagination of medieval acrobats. Gravity must still be respected. But the creativity of Cirque du Soleil’s choreography, even while respecting the restrictions of gravity and the dangers of their high-flying effects, can feel unfettered.
!Notes on viewing allergic reactions as a message
Some painters experience physical reactions to the fumes of products containing petroleum distillates, turpentine and/or Oil of Spike (Lavender). Such reactions may include wooziness, lightheadedness, headache, loss of depth perception, loss of hand/eye coordination, loss of eye focus, tearing and stinging of eyes, nausea, etc, ranging to loss of consciousness or more severe reactions. I would like to suggest, if you or anyone in your painting environment experiences any negative physical reactions to these fumes, that you read these symptoms as a message. A negative physical reaction is like a warning flag raised by your body, saying: stop! If you continue to repeat the action that causes this negative reaction, your body may raise a bigger warning flag.
Listen to your body. Some people buy laundry detergent that is “dye- and fragrance-free,” and otherwise can get skin rashes from wearing laundered clothes. Other people use sweet scented laundry detergents with added bleach and ~OxiClean, with complete comfort. Some people get woozy from wearing or being around perfume, other people enjoy strong scents such as perfume or aftershave all day without ill effect. Recognize that the MSDS safety standards for toxic materials are set according to a pre-determined likelihood that a certain concentration of toxic ingredients will have a noticeable physical effect on the user. If you are a person who is extra sensitive to chemical ingredients, you may not be able to handle the level that is deemed safe according to a set standard. One easy approach to handling a sensitive body, is to do one’s best to avoid toxic materials, even in small amounts. If your body has not shown itself to be sensitive to thinners, then there is a wonderfully expanded list of mediums to choose from.
!Notes on the time and effort required for these methods
Transitioning away from using exclusively commercially prepared and pre-packaged oil paints, mediums, varnishes and grounds may seem daunting.
''//Some modern mediums and paints are marketed based on their compositional ability to offer quick drying.//''
Examine your desire for speed and for quick drying. Is this your innate desire, or is it one that has been taught? Remember, the makers of mediums that allow quick drying of layers, want you to believe that you need a layer to dry quickly. The fact that many teachers have trained using these modern quick-drying materials, may further add to this pressure.
The urge for speed would seem more innate to oil painting, if we weren’t living in a lifestyle that is tagged as “modern” where things have to be done quickly. Fast food, ready-to-wear clothes, and Internet shopping with overnight delivery are wonderful when the right amount of thought and perspective goes into these choices. One easy and possibly over-used example is fast food. Occasional drive-through burgers are great, but a diet of nothing but, can lead to health issues that have been documented extensively.
“Alla prima” painting, done in one shot with the freshness and vivid clarity of the experience being portrayed as the artist stands in it, is a fabulous and time-honored way of painting. Painting in layers, with dry time between each layer, allows for “sit-time”, or the time for the artist to step back from the creative process and allow the vision to grow and mature. Painting in layers with sit-time in between is another time-honored process for creating paintings.
Ask yourself about the origin of your need for speed. Is it habit? Does it derive from your colleagues, teachers or classmates? From the friends who share in your passion for painting? Will your artistry be affected negatively, by changing the cadence of your painting? Can you plan your commissions more carefully to avoid last minute pressure? Is it possible for you to retrain yourself to wait a day or several depending on the thickness of the previous layer, before painting the next, and to milk the wait as creative sit-time? As with changing any habit, this may take time, patience, forgiveness along the way, and the willingness to adopt a new mentality as well as a new procedure.
''//Relatively speaking, we aren’t doing much of the work involved in making these mediums.//''
This tutorial presents recipes that rely on refined ingredients available commercially, some in stores and some on the internet. Canada balsam is available purified, packaged in a sealed bottle (without tapping a tree, or refining unclean balsam ourselves). Dry pigment is available already powdered (no need to grind rocks). Congo copal resin is available in the form of copal concentrate (no need to cook copal chunks with oil, it is being done for us - go to Studio Products' page of [[Recipes|http://studioproducts.com/recipes/recipe.html]], and scroll to "Copal Varnish (Basic)").
To emphasize the relative ease of these methods, recall the laborious methods of painters in past centuries. Here is a description by Leonardo da Vinci of how to prepare a wood panel for painting (excerpted in the //Lost Secrets of Flemish Painting, Revised Edition//, Donald C. Fels Jr., 2004, p 109):
>"//Notebooks of Leonardo da Vinci// Translated by Jean Paul Richter, Vol. 1,
>Page 317 note 618 Dover Edition Notebook of Leonardo da Vinci 1920, p.
>319, No. 628
><br>
>TO PREPARE A PANEL FOR PAINTING ON.
><br>
>The panel should be cypress or pear or service-tree or walnut. You must coat it over with mastic and turpentine twice distilled and white or, if you like, lime, and put it in a frame so that it may expand and shrink according to its moisture and dryness. Then give it [a coat] of aqua vitae in which you have dissolved arsenic or [corrosive] sublimate, 2 or 3 times. Then apply boiled linseed oil in such a way as that it may penetrate every part, and before it is cold rub it well with a cloth to dry it. Over this apply liquid varnish and white with a stick, then wash it with urine when it is dry, and dry it again. Then pounce and outline your drawing finely and over it lay a priming of 30 parts of verdigris with one of verdigris with two of yellow."
Note that many art supplies were prepared by apprentices in the guild system of early Dutch oil painting, and many were available for purchase from other guild craftsmen, such as primed canvases and prepared boards```Ernst van de Wetering, //Rembrandt: The Painter at Work (second revised edition)// (University of California Press, 2009), 108-9.```. The master painter did not himself do much of the actual preparation of materials. However, the master painter would have gone through the guild apprenticeship, and would therefore have the understanding of, and the ability to prepare the materials. Many modern master (and other) painters, lack this training and knowledge.
''//Participating in the production of materials for oil painting may have unexpected emotional benefit for the painter.//''
Even the relatively simple procedures we use here, may bring an emotional connectedness to the creation of an oil painting. I recall my grandmother waxing lyrical when Cuisinarts first came out, and suddenly it seemed impossible to cook without them. She spoke of the loss of the feel of the ingredients. Try lovingly chopping several crisp carrots for soup, slight orange stains left on your fingers. Slicing dry, sticky potatoes with their soft, pungent smell. Peeling and dicing cool, slick cucumbers with a paring knife, while discarding their slimy seeds. Therein lies a joyful, intimate pathway for the cook, who may feel more connected with the resulting creation.
Similarly, I have found that even these relatively simple procedures give a more intimate, connected feel to the creation of an oil painting. Rubbing down a canvas – massaging it with a blue towel pad - to cover it with a thin film of oil (see [[Oiling Out]]). The patient process of pouring a thin stream of balsam into refined linseed oil, listening to the clink of the pyrex as I continuously stir with the metal palette knife in the process of making BOM (see [[Oiling Out]]). Folding and pressing oil into stiff paint and scooping the creamy result into a new tube with a paint spatula when retubing Old Holland brand paint (see [[Softening Stiff Paint]]). Applying amber varnish with fingers (see [[Other Mediums]]). Rubbing down the black marble slab with oil, to clean it of pigment and prepare for the next use. Engaging more with the materials, potentially gives a feeling of deeper connectedness and comfort with the creation of an oil painting.
''//Paintings made using these ingredients and methods will last a long time.//''
This may not be a concern of the artist. However, the keepers of the artist’s work, such as friends, family, customers, heirs, or the person who excitedly incorporates a stash of art found in the attic into a modern home, may be grateful to the painter for having created a painting with a long life.
!Gourmet painting
In discussions with various paint makers from small companies, I noted a similar feel to dealing with artisanal bakers and other food retailers from small companies. These paint makers express a sense of pride, and a contagious appreciation of high quality oil painting materials.
I enjoy baking and learned some time ago, to make a Spanish dessert called flan. In France this is called crème caramel, and as such it is served widely in the U.S. At a certain point, I moved to a farm and cared for a flock of laying hens. The range and grain-fed chickens, who happily enjoyed handfuls of scattered corn every morning, provided incredibly tasty eggs. These eggs had firm raw whites, quite different from supermarket eggs’ runny raw whites. The yolks were brilliant orange, apparently due to the handfuls of corn, not pale yellow like the yolks of supermarket eggs. The shells were thick and tough, not soft and brittle like supermarket eggshells.
Traditional custard flan is a simple dessert, made from eggs, milk, sugar, and vanilla. Re-making flan with these special eggs, and switching at the same time to organic milk, organic raw cane sugar, and Penzey’s Madagascar [[double-strength baking vanilla|http://www.penzeys.com/cgi-bin/penzeys/p-penzeysdoublestrengthvanilla.html]], transformed the result. I recall one otherwise taciturn local farmer commenting “you could make a living from this.” Elevating a simple recipe, to a sublime creation, happened through choosing the best available for each ingredient. I also recognized with interest, that the early European flan bakers would have created flans that tasted more like my farm flan than my previous supermarket flans. Early Europeans ate organic food by default, since pesticides and chemical fertilizers had not yet been invented.
There are a myriad of available choices for almost every oil painting “ingredient” and tool, as the Jerry’s catalog makes clear. Many products are available in a gradation of quality. For example, there are well-made tools that will last for many years (such as a metal tube wringer, see [[Materials]]), and tools that break quickly (such as a plastic tube wringer). Consider oils and oil-based mediums and paints. Oils vary in quality. The choice (see [[Materials]]) on the part of Studio Products to use the linseed oil, of the three hundred available for industrial purposes, that contains the highest quotient of the fatty acids that participate in bonding during polymerization, is a reasoned choice. This oil is more expensive, but it creates a stronger paint film.
Some products have a natural shelf life (unlike a tube wringer or painting smock) that only has become apparent to me through talking with the “artisanal” small paint makers. The main chemically active ingredient of paint is vegetable (or nut) oil, and the active ingredients of many mediums are resins, which are tree products. These vegetable and tree products do not have unlimited lives.
Many modern paints are made with the incredible success of the warehouse distribution system (see [[Materials]]) in mind. Paints and mediums, as well as every other arts supply, may sit on warehouse shelves for months or longer before distribution. The warehouse distributors deal in massive volume and specialize in availability, not freshness. To a painter accustomed to paint sealed in tubes, stashed in a studio drawer for possibly years, this may seem normal, not problematic. But here is an interesting perspective. Freshly ground oil paint has a limited shelf life, as I have learned from talking to paint makers. Even paint sealed inside a metal tube, away from air and light, will commence polymerization. Many high-volume paint makers, with an eye towards a long shelf life, add preservatives and texture additives to keep the paint soft over an extended period of time.
Will paint additives that alter its composition to improve its shelf life, be viewed in restrospect in a similar way to the way that food preservatives are now viewed? Chemical food additives have become the subject of scrutiny and care on the part of the consumer and the government. I suspect that down the line, paint additives will become the subject of scrutiny as well.
The way to use pure, fresh paint is to grind your own, or to buy from small paint makers who are happy to discuss their methods and ingredients. I realize that this may sound far-fetched. It reminds me of a visit I made to Brussels, home of fancy Leonidas chocolates. My local hostess suggested a visit to the local Leonidas store. There was a Godiva store in the same square. She explained that she avoids Godiva, who sells chocolates that may be months old. At a Leonidas store, she experienced the best: chocolates made fresh the same day. Never would it have occurred to me that super fresh chocolate could be better than chocolate that had been sitting on a shelf for a few months or a year. But then I had the experience with the hens. Never would it have occurred to me either, that fresh farm eggs could be so much different, and better, than supermarket eggs.
Additionally there is the amorphous and highly personal feel of working with the best ingredients. There can be a gentle, satisfying recognition that there does exist a natural best, and that in choosing to use such an ingredient, I am participating in a cycle that begins with the manufacture and preparation of the best. For those who appreciate, being a part of this cycle can make oil painting feel like a part in a dance that is a connected artistic whole that extends far beyond the painting itself.
<<tiddler HideTiddlerTags>>
/***
|Name|PlayerPlugin|
|Source|http://www.TiddlyTools.com/#PlayerPlugin|
|Version|1.1.4|
|Author|Eric Shulman|
|License|http://www.TiddlyTools.com/#LegalStatements|
|~CoreVersion|2.1|
|Type|plugin|
|Description|Embed a media player in a tiddler|
!!!!!Usage
<<<
{{{<<player [id=xxx] [type] [URL] [width] [height] [autoplay|true|false] [showcontrols|true|false] [extras]>>}}}
''id=xxx'' is optional, and specifies a unique identifier for each embedded player. note: this is required if you intend to display more than one player at the same time.
''type'' is optional, and is one of the following: ''windows'', ''realone'', ''quicktime'', ''flash'', ''image'' or ''iframe''. If the media type is not specified, the plugin automatically detects Windows, Real, QuickTime, Flash video or JPG/GIF images by matching known file extensions and/or specialized streaming-media transfer protocols (such as RTSP:). For unrecognized media types, the plugin displays an error message.
''URL'' is the location of the media content
''width'' and ''height'' are the dimensions of the video display area (in pixels)
''autoplay'' or ''true'' or ''false'' is optional, and specifies whether the media content should begin playing as soon as it is loaded, or wait for the user to press the "play" button. Default is //not// to autoplay.
''showcontrols'' or ''true'' or ''false'' is optional, and specifies whether the embedded media player should display its built-in control panel (e.g., play, pause, stop, rewind, etc), if any. Default is to display the player controls.
''extras'' are optional //pairs// of parameters that can be passed to the embedded player, using the {{{<param name=xxx value=yyy>}}} HTML syntax.
''If you use [[AttachFilePlugin]] to encode and store a media file within your document, you can play embedded media content by using the title of the //attachment tiddler//'' as a parameter in place of the usual reference to an external URL. When playing an attached media content, you should always explicitly specify the media type parameter, because the name used for the attachment tiddler may not contain a known file extension from which a default media type can be readily determined.
<<<
!!!!!Configuration
<<<
Default player size:
width: <<option txtPlayerDefaultWidth>> height: <<option txtPlayerDefaultHeight>>
<<<
!!!!!Examples
<<<
+++[Windows Media]...
Times Square Live Webcam
{{{<<player id=1 http://www.earthcam.com/usa/newyork/timessquare/asx/tsq_stream.asx>>}}}
<<player id=1 http://www.earthcam.com/usa/newyork/timessquare/asx/tsq_stream.asx>>
===
+++[RealOne]...
BBC London: Live and Recorded news
{{{<<player id=2 http://www.bbc.co.uk/london/realmedia/news/tvnews.ram>>}}}
<<player id=2 http://www.bbc.co.uk/london/realmedia/news/tvnews.ram>>
===
+++[Quicktime]...
America Free TV: Classic Comedy
{{{<<player id=3 http://www.americafree.tv/unicast_mov/AmericaFreeTVComedy.mov>>}}}
<<player id=3 http://www.americafree.tv/unicast_mov/AmericaFreeTVComedy.mov>>
===
+++[Flash]...
Asteroids arcade game
{{{<<player id=4 http://www.80smusiclyrics.com/games/asteroids/asteroids.swf 400 300>>}}}
<<player id=4 http://www.80smusiclyrics.com/games/asteroids/asteroids.swf 400 300>>
Google Video
{{{<<player id=5 flash http://video.google.com/googleplayer.swf?videoUrl=http%3A%2F%2Fvp.video.google.com%2Fvideodownload%3Fversion%3D0%26secureurl%3DoQAAAIVnUNP6GYRY8YnIRNPe4Uk5-j1q1MVpJIW4uyEFpq5Si0hcSDuig_JZcB9nNpAhbScm9W_8y_vDJQBw1DRdCVbXl-wwm5dyUiiStl_rXt0ATlstVzrUNC4fkgK_j7nmse7kxojRj1M3eo3jXKm2V8pQjWk97GcksMFFwg7BRAXmRSERexR210Amar5LYzlo9_k2AGUWPLyRhMJS4v5KtDSvNK0neL83ZjlHlSECYXyk%26sigh%3Dmpt2EOr86OAUNnPQ3b9Tr0wnDms%26begin%3D0%26len%3D429700%26docid%3D-914679554478687740&thumbnailUrl=http%3A%2F%2Fvideo.google.com%2FThumbnailServer%3Fcontentid%3De7e77162deb04c42%26second%3D5%26itag%3Dw320%26urlcreated%3D1144620753%26sigh%3DC3fqXPPS1tFiUqLzmkX3pdgYc2Y&playerId=-91467955447868774 400 326>>}}}
<<player id=5 flash http://video.google.com/googleplayer.swf?videoUrl=http%3A%2F%2Fvp.video.google.com%2Fvideodownload%3Fversion%3D0%26secureurl%3DoQAAAIVnUNP6GYRY8YnIRNPe4Uk5-j1q1MVpJIW4uyEFpq5Si0hcSDuig_JZcB9nNpAhbScm9W_8y_vDJQBw1DRdCVbXl-wwm5dyUiiStl_rXt0ATlstVzrUNC4fkgK_j7nmse7kxojRj1M3eo3jXKm2V8pQjWk97GcksMFFwg7BRAXmRSERexR210Amar5LYzlo9_k2AGUWPLyRhMJS4v5KtDSvNK0neL83ZjlHlSECYXyk%26sigh%3Dmpt2EOr86OAUNnPQ3b9Tr0wnDms%26begin%3D0%26len%3D429700%26docid%3D-914679554478687740&thumbnailUrl=http%3A%2F%2Fvideo.google.com%2FThumbnailServer%3Fcontentid%3De7e77162deb04c42%26second%3D5%26itag%3Dw320%26urlcreated%3D1144620753%26sigh%3DC3fqXPPS1tFiUqLzmkX3pdgYc2Y&playerId=-91467955447868774 400 326>>
YouTube Video
{{{<<player id=6 flash http://www.youtube.com/v/OdT9z-JjtJk 400 300>>}}}
<<player id=6 flash http://www.youtube.com/v/OdT9z-JjtJk 400 300>>
===
+++[Still Images]...
GIF (best for illustrations, animations, diagrams, etc.)
{{{<<player id=7 image images/meow.gif auto auto>>}}}
<<player id=7 image images/meow.gif auto auto>>
JPG (best for photographs, scanned images, etc.)
{{{<<player id=8 image images/meow2.jpg 200 150>>}}}
<<player id=8 image images/meow2.jpg 200 150>>
===
<<<
!!!!!Revisions
<<<
2008.05.10 [1.1.4] in handlers(), immediately return if no params (prevents error in macro). Also, refactored auto-detect code to make type mapping configurable.
2007.10.15 [1.1.3] in loadURL(), add recognition for .PNG (still image), fallback to iframe for unrecognized media types
2007.08.31 [1.1.2] added 'click-through' link for JPG/GIF images
2007.06.21 [1.1.1] changed "hidecontrols" param to "showcontrols" and recognize true/false values in addition to 'showcontrols', added "autoplay" param (also recognize true/false values), allow "auto" as value for type param
2007.05.22 [1.1.0] added support for type=="iframe" (displays src URL in an IFRAME)
2006.12.06 [1.0.1] in handler(), corrected check for config.macros.attach (instead of config.macros.attach.getAttachment) so that player plugin will work when AttachFilePlugin is NOT installed. (Thanks to Phillip Ehses for bug report)
2006.11.30 [1.0.0] support embedded media content using getAttachment() API defined by AttachFilePlugin or AttachFilePluginFormatters. Also added support for 'image' type to render JPG/GIF still images
2006.02.26 [0.7.0] major re-write. handles default params better. create/recreate player objects via loadURL() API for use with interactive forms and scripts.
2006.01.27 [0.6.0] added support for 'extra' macro params to pass through to object parameters
2006.01.19 [0.5.0] Initial ALPHA release
2005.12.23 [0.0.0] Started
<<<
!!!!!Code
***/
//{{{
version.extensions.PlayerPlugin= {major: 1, minor: 1, revision: 4, date: new Date(2008,5,10)};
config.macros.player = {};
config.macros.player.html = {};
config.macros.player.handler= function(place,macroName,params) {
if (!params.length) return; // missing parameters - do nothing
var id=null;
if (params[0].substr(0,3)=="id=") id=params.shift().substr(3);
var type="";
if (!params.length) return; // missing parameters - do nothing
var p=params[0].toLowerCase();
if (p=="auto" || p=="windows" || p=="realone" || p=="quicktime" || p=="flash" || p=="image" || p=="iframe")
type=params.shift().toLowerCase();
var url=params.shift(); if (!url || !url.trim().length) url="";
if (url.length && config.macros.attach!=undefined) // if AttachFilePlugin is installed
if ((tid=store.getTiddler(url))!=null && tid.isTagged("attachment")) // if URL is attachment
url=config.macros.attach.getAttachment(url); // replace TiddlerTitle with URL
var width=params.shift();
var height=params.shift();
var autoplay=false;
if (params[0]=='autoplay'||params[0]=='true'||params[0]=='false')
autoplay=(params.shift()!='false');
var show=true;
if (params[0]=='showcontrols'||params[0]=='true'||params[0]=='false')
show=(params.shift()!='false');
var extras="";
while (params[0]!=undefined)
extras+="<param name='"+params.shift()+"' value='"+params.shift()+"'> ";
this.loadURL(place,id,type,url,width,height,autoplay,show,extras);
}
if (config.options.txtPlayerDefaultWidth==undefined) config.options.txtPlayerDefaultWidth="100%";
if (config.options.txtPlayerDefaultHeight==undefined) config.options.txtPlayerDefaultHeight="480"; // can't use "100%"... player height doesn't stretch right :-(
config.macros.player.typeMap={
windows: ['mms', '.asx', '.wvx', '.wmv', '.mp3'],
realone: ['rtsp', '.ram', '.rpm', '.rm', '.ra'],
quicktime: ['.mov', '.qt'],
flash: ['.swf', '.flv'],
image: ['.jpg', '.gif', '.png'],
iframe: ['.htm', '.html', '.shtml', '.php']
};
config.macros.player.loadURL=function(place,id,type,url,width,height,autoplay,show,extras) {
if (id==undefined) id="tiddlyPlayer";
if (!width) var width=config.options.txtPlayerDefaultWidth;
if (!height) var height=config.options.txtPlayerDefaultHeight;
if (url && (!type || !type.length || type=="auto")) { // determine type from URL
u=url.toLowerCase();
var map=config.macros.player.typeMap;
for (var t in map) for (var i=0; i<map[t].length; i++)
if (u.indexOf(map[t][i])!=-1) var type=t;
}
if (!type || !config.macros.player.html[type]) var type="none";
if (!url) var url="";
if (show===undefined) var show=true;
if (!extras) var extras="";
if (type=="none" && url.trim().length) type="iframe"; // fallback to iframe for unrecognized media types
// adjust parameter values for player-specific embedded HTML
switch (type) {
case "windows":
autoplay=autoplay?"1":"0"; // player-specific param value
show=show?"1":"0"; // player-specific param value
break;
case "realone":
autoplay=autoplay?"true":"false";
show=show?"block":"none";
height-=show?60:0; // leave room for controls
break;
case "quicktime":
autoplay=autoplay?"true":"false";
show=show?"true":"false";
break;
case "image":
show=show?"block":"none";
break;
case "iframe":
show=show?"block":"none";
break;
}
// create containing div for player HTML
// and add or replace player in TW DOM structure
var newplayer = document.createElement("div");
newplayer.playerType=type;
newplayer.setAttribute("id",id+"_div");
var existing = document.getElementById(id+"_div");
if (existing && !place) place=existing.parentNode;
if (!existing)
place.appendChild(newplayer);
else {
if (place==existing.parentNode) place.replaceChild(newplayer,existing)
else { existing.parentNode.removeChild(existing); place.appendChild(newplayer); }
}
var html=config.macros.player.html[type];
html=html.replace(/%i%/mg,id);
html=html.replace(/%w%/mg,width);
html=html.replace(/%h%/mg,height);
html=html.replace(/%u%/mg,url);
html=html.replace(/%a%/mg,autoplay);
html=html.replace(/%s%/mg,show);
html=html.replace(/%x%/mg,extras);
newplayer.innerHTML=html;
}
//}}}
// // Player-specific API functions: isReady(id), isPlaying(id), toggleControls(id), showControls(id,flag)
//{{{
// status values:
// Windows: 0=Undefined, 1=Stopped, 2=Paused, 3=Playing, 4=ScanForward, 5=ScanReverse
// 6=Buffering, 7=Waiting, 8=MediaEnded, 9=Transitioning, 10=Ready, 11=Reconnecting
// RealOne: 0=Stopped, 1=Contacting, 2=Buffering, 3=Playing, 4=Paused, 5=Seeking
// QuickTime: 'Waiting', 'Loading', 'Playable', 'Complete', 'Error:###'
// Flash: 0=Loading, 1=Uninitialized, 2=Loaded, 3=Interactive, 4=Complete
config.macros.player.isReady=function(id)
{
var d=document.getElementById(id+"_div"); if (!d) return false;
var p=document.getElementById(id); if (!p) return false;
if (d.playerType=='windows') return !((p.playState==0)||(p.playState==7)||(p.playState==9)||(p.playState==11));
if (d.playerType=='realone') return (p.GetPlayState()>1);
if (d.playerType=='quicktime') return !((p.getPluginStatus()=='Waiting')||(p.getPluginStatus()=='Loading'));
if (d.playerType=='flash') return (p.ReadyState>2);
return true;
}
config.macros.player.isPlaying=function(id)
{
var d=document.getElementById(id+"_div"); if (!d) return false;
var p=document.getElementById(id); if (!p) return false;
if (d.playerType=='windows') return (p.playState==3);
if (d.playerType=='realone') return (p.GetPlayState()==3);
if (d.playerType=='quicktime') return (p.getPluginStatus()=='Complete');
if (d.playerType=='flash') return (p.ReadyState<4);
return false;
}
config.macros.player.showControls=function(id,flag) {
var d=document.getElementById(id+"_div"); if (!d) return false;
var p=document.getElementById(id); if (!p) return false;
if (d.playerType=='windows') { p.ShowControls=flag; p.ShowStatusBar=flag; }
if (d.playerType=='realone') { alert('show/hide controls not available'); }
if (d.playerType=='quicktime') // if player not ready, retry in one second
{ if (this.isReady(id)) p.setControllerVisible(flag); else setTimeout('config.macros.player.showControls("'+id+'",'+flag+')',1000); }
if (d.playerType=='flash') { alert('show/hide controls not available'); }
}
config.macros.player.toggleControls=function(id) {
var d=document.getElementById(id+"_div"); if (!d) return false;
var p=document.getElementById(id); if (!p) return false;
if (d.playerType=='windows') var flag=!p.ShowControls;
if (d.playerType=='realone') var flag=true; // TBD
if (d.playerType=='quicktime') var flag=!p.getControllerVisible();
if (d.playerType=='flash') var flag=true; // TBD
this.showControls(id,flag);
}
config.macros.player.fullScreen=function(id) {
var d=document.getElementById(id+"_div"); if (!d) return false;
var p=document.getElementById(id); if (!p) return false;
if (d.playerType=='windows') p.DisplaySize=3;
if (d.playerType=='realone') p.SetFullScreen();
if (d.playerType=='quicktime') { alert('full screen not available'); }
if (d.playerType=='flash') { alert('full screen not available'); }
}
//}}}
// // Player HTML
//{{{
// placeholder (no player)
config.macros.player.html.none=' \
<table id="%i%" width="%w%" height="%h%" style="background-color:#111;border:0;margin:0;padding:0;"> \
<tr style="background-color:#111;border:0;margin:0;padding:0;"> \
<td width="%w%" height="%h%" style="background-color:#111;color:#ccc;border:0;margin:0;padding:0;text-align:center;"> \
\
%u% \
\
</td></tr></table>';
//}}}
//{{{
// JPG/GIF/PNG still images
config.macros.player.html.image='\
<a href="%u%" target="_blank"><img width="%w%" height="%h%" style="display:%s%;" src="%u%"></a>';
//}}}
//{{{
// IFRAME web page viewer
config.macros.player.html.iframe='\
<iframe id="%i%" width="%w%" height="%h%" style="display:%s%;background:#fff;" src="%u%"></iframe>';
//}}}
//{{{
// Windows Media Player
// v7.1 ID: classid=CLSID:6BF52A52-394A-11d3-B153-00C04F79FAA6
// v9 ID: classid=CLSID:22d6f312-b0f6-11d0-94ab-0080c74c7e95
config.macros.player.html.windows=' \
<object id="%i%" width="%w%" height="%h%" style="margin:0;padding:0;width:%w%;height:%h%px;" \
classid="CLSID:22d6f312-b0f6-11d0-94ab-0080c74c7e95" \
codebase="http://activex.microsoft.com/activex/controls/mplayer/en/nsmp2inf.cab#Version=6,4,5,715" \
align="baseline" border="0" \
standby="Loading Microsoft Windows Media Player components..." \
type="application/x-oleobject"> \
<param name="FileName" value="%u%"> <param name="ShowControls" value="%s%"> \
<param name="ShowPositionControls" value="1"> <param name="ShowAudioControls" value="1"> \
<param name="ShowTracker" value="1"> <param name="ShowDisplay" value="0"> \
<param name="ShowStatusBar" value="1"> <param name="AutoSize" value="1"> \
<param name="ShowGotoBar" value="0"> <param name="ShowCaptioning" value="0"> \
<param name="AutoStart" value="%a%"> <param name="AnimationAtStart" value="1"> \
<param name="TransparentAtStart" value="0"> <param name="AllowScan" value="1"> \
<param name="EnableContextMenu" value="1"> <param name="ClickToPlay" value="1"> \
<param name="InvokeURLs" value="1"> <param name="DefaultFrame" value="datawindow"> \
%x% \
<embed src="%u%" style="margin:0;padding:0;width:%w%;height:%h%px;" \
align="baseline" border="0" width="%w%" height="%h%" \
type="application/x-mplayer2" \
pluginspage="http://www.microsoft.com/windows/windowsmedia/download/default.asp" \
name="%i%" showcontrols="%s%" showpositioncontrols="1" \
showaudiocontrols="1" showtracker="1" showdisplay="0" \
showstatusbar="%s%" autosize="1" showgotobar="0" showcaptioning="0" \
autostart="%a%" autorewind="0" animationatstart="1" transparentatstart="0" \
allowscan="1" enablecontextmenu="1" clicktoplay="0" invokeurls="1" \
defaultframe="datawindow"> \
</embed> \
</object>';
//}}}
//{{{
// RealNetworks' RealOne Player
config.macros.player.html.realone=' \
<table width="%w%" style="border:0;margin:0;padding:0;"><tr style="border:0;margin:0;padding:0;"><td style="border:0;margin:0;padding:0;"> \
<object id="%i%" width="%w%" height="%h%" style="margin:0;padding:0;" \
CLASSID="clsid:CFCDAA03-8BE4-11cf-B84B-0020AFBBCCFA"> \
<PARAM NAME="CONSOLE" VALUE="player"> \
<PARAM NAME="CONTROLS" VALUE="ImageWindow"> \
<PARAM NAME="AUTOSTART" Value="%a%"> \
<PARAM NAME="MAINTAINASPECT" Value="true"> \
<PARAM NAME="NOLOGO" Value="true"> \
<PARAM name="BACKGROUNDCOLOR" VALUE="#333333"> \
<PARAM NAME="SRC" VALUE="%u%"> \
%x% \
<EMBED width="%w%" height="%h%" controls="ImageWindow" type="audio/x-pn-realaudio-plugin" style="margin:0;padding:0;" \
name="%i%" \
src="%u%" \
console=player \
maintainaspect=true \
nologo=true \
backgroundcolor=#333333 \
autostart=%a%> \
</OBJECT> \
</td></tr><tr style="border:0;margin:0;padding:0;"><td style="border:0;margin:0;padding:0;"> \
<object id="%i%_controls" width="%w%" height="60" style="margin:0;padding:0;display:%s%" \
CLASSID="clsid:CFCDAA03-8BE4-11cf-B84B-0020AFBBCCFA"> \
<PARAM NAME="CONSOLE" VALUE="player"> \
<PARAM NAME="CONTROLS" VALUE="All"> \
<PARAM NAME="NOJAVA" Value="true"> \
<PARAM NAME="MAINTAINASPECT" Value="true"> \
<PARAM NAME="NOLOGO" Value="true"> \
<PARAM name="BACKGROUNDCOLOR" VALUE="#333333"> \
<PARAM NAME="SRC" VALUE="%u%"> \
%x% \
<EMBED WIDTH="%w%" HEIGHT="60" NOJAVA="true" type="audio/x-pn-realaudio-plugin" style="margin:0;padding:0;display:%s%" \
controls="All" \
name="%i%_controls" \
src="%u%" \
console=player \
maintainaspect=true \
nologo=true \
backgroundcolor=#333333> \
</OBJECT> \
</td></tr></table>';
//}}}
//{{{
// QuickTime Player
config.macros.player.html.quicktime=' \
<OBJECT ID="%i%" WIDTH="%w%" HEIGHT="%h%" style="margin:0;padding:0;" \
CLASSID="clsid:02BF25D5-8C17-4B23-BC80-D3488ABDDC6B" \
CODEBASE="http://www.apple.com/qtactivex/qtplugin.cab"> \
<PARAM name="SRC" VALUE="%u%"> \
<PARAM name="AUTOPLAY" VALUE="%a%"> \
<PARAM name="CONTROLLER" VALUE="%s%"> \
<PARAM name="BGCOLOR" VALUE="#333333"> \
<PARAM name="SCALE" VALUE="aspect"> \
<PARAM name="SAVEEMBEDTAGS" VALUE="true"> \
%x% \
<EMBED name="%i%" WIDTH="%w%" HEIGHT="%h%" style="margin:0;padding:0;" \
SRC="%u%" \
AUTOPLAY="%a%" \
SCALE="aspect" \
CONTROLLER="%s%" \
BGCOLOR="#333333" \
EnableJavaSript="true" \
PLUGINSPAGE="http://www.apple.com/quicktime/download/"> \
</EMBED> \
</OBJECT>';
//}}}
//{{{
// Flash Player
config.macros.player.html.flash='\
<object id="%i%" width="%w%" height="%h%" style="margin:0;padding:0;" \
classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" \
codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,29,0"> \
<param name="movie" value="%u%"> \
<param name="quality" value="high"> \
<param name="SCALE" value="exactfit"> \
<param name="bgcolor" value="333333"> \
%x% \
<embed name="%i%" src="%u%" style="margin:0;padding:0;" \
height="%h%" width="%w%" quality="high" \
pluginspage="http://www.macromedia.com/go/getflashplayer" \
type="application/x-shockwave-flash" scale="exactfit"> \
</embed> \
</object>';
//}}}
This package provides a toolbar of interactive 'power tools' that you can use while editing a tiddler to quickly insert TiddlyWiki tiddler links, images, macros, etc. or common formatting sequences directly into tiddler content, as well as perform other functions (such as find/replace, sort, split, convert, etc.) that can be used to modify the current tiddler's source content in a variety of ways.
<<tiddler QuickEditToolbar with: show>>
!!!!!Installation:
<<<
Individual ~QuickEdit buttons are defined in separate tiddlers (e.g., [[QuickEdit_replace]]) that have also been //transcluded// into a single toolbar definition named [[QuickEditToolbar]]. You can edit this definition to add, remove, or rearrange the toolbar buttons to best suit your needs, and then embed the [[QuickEditToolbar]] tiddler into your document's [[EditTemplate]], like this:
{{{
<div macro='tiddler QuickEditToolbar'></div>
}}}
Next, in order to support some of the formatting 'shortcuts' provided by the toolbar, add a reference to the shortcuts CSS class definitions in your [[StyleSheet]]:
{{{
[[StyleSheetShortcuts]]
}}}
By default, the QuickEdit toolbar is hidden until you enable it by using the ''toggleQuickEdit'' command, which you can add to the ~EditToolbar definition in [[ToolbarCommands]]:
{{{
|EditToolbar|... toggleQuickEdit ...|
}}}
You can also toggle the ~QuickEdit toolbar display via a single checkbox option that can be added to [[SideBarOptions]] (or any other desired location):
{{{
<<option chkShowQuickEdit>> show QuickEdit toolbar
}}}
Note: You can 'hard-code' the ''chkShowQuickEdit'' setting, so that the toolbar will be //initially// displayed, by creating a tiddler (e.g., ConfigTweaks), tagged with <<tag systemConfig>>, containing:
{{{
config.options.chkShowQuickEdit=true;
}}}
Alternatively, if you want the toolbar to //always// be displayed, regardless of the option setting, you can add a special keyword, ''show'', to the [[EditTemplate]] syntax, like this:
{{{
<div macro='tiddler QuickEditToolbar with: show'></div>
}}}
<<<
/%
|Name|QuickEditToolbar|
|Source|http://www.TiddlyTools.com/#QuickEditToolbar|
|Version|2.4.3|
|Author|Eric Shulman|
|License|http://www.TiddlyTools.com/#LegalStatements|
|~CoreVersion|2.2|
|Type|transclusion|
|Requires|QuickEditPlugin|
|Optional|QuickEdit_*|
|Description|format/insert TiddlyWiki content using toolbar buttons|
Usage:
* install [[QuickEditPlugin]] (runtime support functions)
* add the toolbar to [[EditTemplate]]:
<div macro='tiddler QuickEditToolbar with: show'></div>
* 'show' (optional) forces the toolbar to always be displayed or,
omit keyword and use <<option chkShowQuickEdit>> setting
* selected QuickEdit buttons can also be added individually to the
regular tiddler toolbar by adding references directly in [[EditTemplate]]:
<span class='toolbar' macro='tiddler QuickEdit_...'></span>
* see [[QuickEditPackage]] for additional installation options
%/{{hidden fine center quickEdit{
<<tiddler {{ // show/hide toolbar
var here=story.findContainingTiddler(place); if (here) var tid=here.getAttribute('tiddler');
var show='$1'!='$'+'1'||config.options.chkShowQuickEdit||tid=='QuickEditToolbar';
place.style.display=show?'block':'none';
'';}}>>/%
TOOLBAR DEFINITION - add, remove, or re-order items as desired:
= = = = = = = = = =
%/<<tiddler QuickEdit_replace>>/%
%/<<tiddler QuickEdit_split>>/%
%/<<tiddler QuickEdit_sort>>/%
%/<<tiddler QuickEdit_convert>>/%
%/ /% (SPACER)
%/<<tiddler QuickEdit_link>>/%
%/<<tiddler QuickEdit_insert>>/%
%/<<tiddler QuickEdit_macro>>/%
%/<<tiddler QuickEdit_image>>/%
%/ /% (SPACER)
%/<<tiddler QuickEdit_format>>/%
%/<<tiddler QuickEdit_align>>/%
%/<<tiddler QuickEdit_color>>/%
%/<<tiddler QuickEdit_font>>/%
%/ /% (SPACER)
%/<<tiddler QuickEdit_custom>>/%
%/}}}
/%
|Name|QuickEdit_color|
|Source|http://www.TiddlyTools.com/#QuickEdit_color|
|Version|2.4.3|
|Author|Eric Shulman|
|License|see http://www.TiddlyTools.com/#QuickEditPlugin|
|Type|html|
|Requires|QuickEditPlugin|
|Description|quickedit - text/background color|
Usage: see http://www.TiddlyTools.com/#QuickEditToolbar
%/<html><hide linebreaks><a href="javascript:;" class="tiddlyLink" tabindex="-1"
title="text/background color - @@color:#RGB;background-color:#RGB;...@@"
onclick="var p=Popup.create(this,null,'popup sticky smallform'); if (!p) return false;
p.style.padding='2px';
function hex(d) { return '0123456789ABCDEF'.substr(d,1); }
var fg=createTiddlyElement(p,'select'); fg.button=this;
fg.style.width='12em';
fg.options[0]=new Option('text color...','');
fg.options[1]=new Option('\xa0 or enter a value','_ask');
fg.options[2]=new Option('\xa0 or use default color','');
for (var r=0;r<16;r+=3) for (var g=0;g<16;g+=3) for (var b=0;b<16;b+=3) {
var label=hex(r)+hex(g)+hex(b);
fg.options[fg.length]=new Option(label,'#'+label);
fg.options[fg.length-1].style.color='#'+label;
}
fg.onchange=function(){ var val=this.value;
if (val=='_ask') { val=prompt('Enter a CSS color value');
if (!val||!val.length) return false; }
this.options[0].value=val; this.options[0].text=val.length?'text: '+val:'text color...';
var bg=this.nextSibling;
for (var i=3;i<bg.options.length;i++) bg.options[i].style.color=val;
var preview=this.nextSibling.nextSibling.nextSibling;
var t=config.quickEdit.getSelection(config.quickEdit.getField(this.button));
t=t.replace(/^@@(color\:.+;)?(background-color\:.+;)?/,'').replace(/@@$/,'');
if (!t.length) t='~AaBbCcDdEeFfGgHhIiJj 1234567890';
var fg=this.value; if (fg.length) fg='color:'+fg+';';
var bg=this.nextSibling.value; if (bg.length) bg='background-color:'+bg+';';
if (fg.length||bg.length) t='@@'+fg+bg+t+'@@';
removeChildren(preview); wikify(t,preview);
this.selectedIndex=0; return false;
};
var bg=createTiddlyElement(p,'select'); bg.button=this;
bg.style.width='12em';
bg.options[0]=new Option('background color...','');
bg.options[1]=new Option('\xa0 or enter a value','_ask');
bg.options[2]=new Option('\xa0 or use default color','');
for (var r=0;r<16;r+=3) for (var g=0;g<16;g+=3) for (var b=0;b<16;b+=3) {
var label=hex(15-r)+hex(15-g)+hex(15-b);
bg.options[bg.length]=new Option(label,'#'+label);
bg.options[bg.length-1].style.backgroundColor='#'+label;
}
bg.onchange=function(){ var val=this.value;
if (val=='_ask') { val=prompt('Enter a CSS color value');
if (!val||!val.length) return false; }
this.options[0].value=val;
this.options[0].text=val.length?'background: '+val:'background color...';
var fg=this.previousSibling;
for (var i=3;i<fg.options.length;i++) fg.options[i].style.backgroundColor=val;
var preview=this.nextSibling.nextSibling;
var t=config.quickEdit.getSelection(config.quickEdit.getField(this.button));
t=t.replace(/^@@(color\:.+;)?(background-color\:.+;)?/,'').replace(/@@$/,'');
if (!t.length) t='~AaBbCcDdEeFfGgHhIiJj 1234567890';
var fg=this.previousSibling.value; if (fg.length) fg='color:'+fg+';';
var bg=this.value; if (bg.length) bg='background-color:'+bg+';';
if (fg.length||bg.length) t='@@'+fg+bg+t+'@@';
removeChildren(preview); wikify(t,preview);
this.selectedIndex=0; return false;
};
var b=createTiddlyElement(p,'input',null,null,null,{type:'button'}); b.button=this;
b.value='ok'; b.style.width='4em';
b.onclick=function() {
var fg=this.previousSibling.previousSibling.value; if (fg.length) fg='color:'+fg+';';
var bg=this.previousSibling.value; if (bg.length) bg='background-color:'+bg+';';
var t=config.quickEdit.getSelection(config.quickEdit.getField(this.button));
t=t.replace(/^@@(color\:.+;)?(background-color\:.+;)?/,'').replace(/@@$/,'');
if (fg.length||bg.length) config.quickEdit.setSelection(this.button,'@@'+fg+bg+t+'@@');
Popup.remove(); return false;
};
var preview=createTiddlyElement(p,'div',null,'viewer'); var s=preview.style;
s.border='1px solid'; s.margin='2px'; s.width='24em'; s.padding='3px'; s.MozBorderRadius='3px';
s.overflow='hidden'; s.textAlign='center'; s.whiteSpace='normal';
var t=config.quickEdit.getSelection(config.quickEdit.getField(this));
wikify(t.length?t:'~AaBbCcDdEeFfGgHhIiJj 1234567890',preview);
Popup.show();
event.cancelBubble=true;if(event.stopPropagation)event.stopPropagation();return false;"
>color</a></html>
/%
|Name|QuickEdit_format|
|Source|http://www.TiddlyTools.com/#QuickEdit_format|
|Version|2.4.3|
|Author|Eric Shulman|
|License|see http://www.TiddlyTools.com/#QuickEditPlugin|
|Type|html|
|Requires|QuickEditPlugin|
|Description|quickedit - basic text formats, headings, blockquotes, etc.|
Usage: see http://www.TiddlyTools.com/#QuickEditToolbar
%/<html><hide linebreaks><a href="javascript:;" class="tiddlyLink" tabindex="-1"
title="plain text (remove ALL formatting)" accesskey="P"
onclick="var e=config.quickEdit.getField(this); if (e) e.focus(); var txt=config.quickEdit.getSelection(e);
config.quickEdit.setSelection(e,wikifyPlainText(txt)); return false;"
> ~ </a></html>/%
%/<html><hide linebreaks><a href="javascript:;" class="tiddlyLink" tabindex="-1"
title="''bold''" accesskey="B"
onclick="config.quickEdit.wrapSelection(this,'\x27\x27','\x27\x27'); return false;"
> B </a></html>/%
%/<html><hide linebreaks><a href="javascript:;" class="tiddlyLink" tabindex="-1"
title="//italics//" accesskey="I"
onclick="config.quickEdit.wrapSelection(this,'//','//'); return false;"
> I </a></html>/%
%/<html><hide linebreaks><a href="javascript:;" class="tiddlyLink" tabindex="-1"
title="__underline__" accesskey="U"
onclick="config.quickEdit.wrapSelection(this,'__','__'); return false;"
> U </a></html>/%
%/<html><hide linebreaks><a href="javascript:;" class="tiddlyLink" tabindex="-1"
title="--strikethrough--" accesskey="S"
onclick="config.quickEdit.wrapSelection(this,'--','--'); return false;"
> S </a></html>/%
%/ /% SPACER
%/<html><hide linebreaks><a href="javascript:;" class="tiddlyLink" tabindex="-1"
title="format text"
onclick="var p=Popup.create(this); if (!p) return false; p.className+=' sticky smallform';
var s=createTiddlyElement(p,'select'); s.button=this;
s.options[0]=new Option('select text format...','');
s.options[s.length]=new Option('CSS class wrapper','{{$1{,}}},Enter a CSS classname');
s.options[s.length-1].title='CSS class wrapper - {{classname classname etc{...}}}';
s.options[s.length]=new Option('inline CSS styles','@@$1,@@,Enter CSS (attribute:value;attribute:value;...;)');
s.options[s.length-1].title='inline CSS styles - @@attr:value;attr:value;...@@';
s.options[s.length]=new Option('heading 1','\n!,\n');
s.options[s.length-1].title='H1 heading - !';
s.options[s.length]=new Option('heading 2','\n!!,\n');
s.options[s.length-1].title='H2 heading - !!';
s.options[s.length]=new Option('heading 3','\n!!!,\n');
s.options[s.length-1].title='H3 heading - !!!';
s.options[s.length]=new Option('heading 4','\n!!!!,\n');
s.options[s.length-1].title='H4 heading - !!!!';
s.options[s.length]=new Option('heading 5','\n!!!!!,\n');
s.options[s.length-1].title='H5 heading - !!!!!';
s.options[s.length]=new Option('blockquote','\n\<\<\<\n,\n\<\<\<\n');
s.options[s.length-1].title='indented blockquote - \<\<\<';
s.options[s.length]=new Option('monospaced','{{{,}}}');
s.options[s.length-1].title='inline monospaced text - {{{...}}}';
s.options[s.length]=new Option('plain text','\n{{{\n,\n}}}\n');
s.options[s.length-1].title='multi-line monospaced text box - {{{...}}}';
s.options[s.length]=new Option('superscript','^^,^^');
s.options[s.length-1].title='^^superscript^^';
s.options[s.length]=new Option('subscript','~~,~~');
s.options[s.length-1].title='~~subscript~~';
s.options[s.length]=new Option('HTML','<html>,<\x2fhtml>');
s.options[s.length-1].title='HTML syntax - <html>...<\x2fhtml>';
s.options[s.length]=new Option('comment','/%,%/');
s.options[s.length-1].title='comment (hidden content) - /%...%/';
s.size=s.length;
s.onclick=function(){ if (!this.value.length) return;
var parts=this.value.split(',');
var prefix=parts[0]; var suffix=parts[1]; var ask=parts[2];
if (ask) {
var val=prompt(ask); if (!val) { Popup.remove(); return false; }
prefix=prefix.replace(/\$1/g,val); suffix=suffix.replace(/\$1/g,val);
}
config.quickEdit.wrapSelection(this.button,prefix,suffix);
Popup.remove(); return false;
};
s.onkeyup=config.quickEdit.keyup;
Popup.show();
s.focus();
return config.quickEdit.processed(event);"
>format</a></html>
(''//Internet Explorer//'' users: the Table of Contents will not function as links. Please read [[Author's Note]].)
<<showtoc>>
!Notes on re-using an old canvas
Oil paint becomes translucent with age. The slow transformation over generations from opaque to semi-transparent, will eventually reveal shapes that were painted as lower layers and then covered over by upper layers (see [[Definitions: Pentimento|Definitions##Pentimento]]).
Re-using old canvases sets up future viewers for experiencing this interesting phenomenon.
!Preparing the canvas
Old paintings may have relatively high textured lumps. In order to re-create a smooth starting surface, first remove the high lumps with a canvas scraping knife (see [[Materials]]). Hold the knife away from you, at an angle of 20-30 degrees from the surface. Push it into lumps. Be very careful not to scrape too firmly and lift too much. DO NOT EXPOSE THE CANVAS FIBERS BELOW THE GROUND.
<html>
<div><table width="250" height="166" align="right">
<tr><td><a href="http://www.flickr.com/photos/76314685@N04/7001204805/lightbox/" target="_blank" title="IMG_3863 by RumaraPainting, on Flickr"><img src="http://farm8.staticflickr.com/7108/7001204805_8baa3bc8f0_o.jpg" width="350" height="233" align="center" alt="IMG_3863"></a></td></tr>
<tr><td>Scraping the canvas with a canvas scraping knife</td></tr></table></div>
<br>
<br>
If you accidentally expose the canvas fibers, they will need to be re-sized with rabbitskin glue. Cloth rots on exposure to oil, and the fibers in a cloth substrate must be coated with a barrier to prevent them from coming in contact with the oil in the paint.
<BR CLEAR=RIGHT>
<div><table width="250" height="166" align="right">
<tr><td><a href="http://www.flickr.com/photos/76314685@N04/7001199043/lightbox/" target="_blank" title="IMG_2328 by RumaraPainting, on Flickr"><img src="http://farm8.staticflickr.com/7101/7001199043_7482bfff51_o.jpg" width="350" height="233" align="center" alt="IMG_2328"></a></td></tr>
<tr><td>Folding a piece of 400 grit wet-sand sandpaper</td></tr></table></div>
<br>
<br>
Put an inch or so of water into a bowl or other container. Fold a piece of wet-sand sandpaper, 400 grit (see </html>[[Materials]]<html>) into four.
<BR CLEAR=RIGHT>
<div><table width="250" height="166" align="right">
<tr><td><a href="http://www.flickr.com/photos/76314685@N04/6855081996/lightbox/" target="_blank" title="IMG_2322 by RumaraPainting, on Flickr"><img src="http://farm7.staticflickr.com/6224/6855081996_33a4c85b1c_o.jpg" width="350" height="233" align="center" alt="IMG_2322"></a></td></tr>
<tr><td>Soak the sandpaper for 10-15 minutes</td></tr></table></div>
<br>
<br>
Immerse the wet-sand sandpaper in the water for 10-15 minutes. Note that dry sanding using regular sandpaper would release particles of heavy metals into the atmosphere (see </html>[[Heavy Metals Safety]]<html>). Wet-sanding keeps the particles that are released in a wet slurry.
<BR CLEAR=RIGHT>
<div><table width="250" height="166" align="right">
<tr><td><a href="http://www.flickr.com/photos/76314685@N04/7001199251/lightbox/" target="_blank" title="IMG_2365 by RumaraPainting, on Flickr"><img src="http://farm8.staticflickr.com/7188/7001199251_cf38db5987_o.jpg" width="350" height="233" align="center" alt="IMG_2365"></a></td></tr>
<tr><td>Portion of an old painting</td></tr></table></div>
<br>
<br>
We demonstrate on an old painting showing a flower basket.
<BR CLEAR=RIGHT>
<div><table width="250" height="166" align="right">
<tr><td><a href="http://www.flickr.com/photos/76314685@N04/6855082176/lightbox/" target="_blank" title="IMG_2360 by RumaraPainting, on Flickr"><img src="http://farm7.staticflickr.com/6231/6855082176_44fef2647e_o.jpg" width="350" height="233" align="center" alt="IMG_2360"></a></td></tr>
<tr><td>The paint's texture</td></tr></table></div>
<br>
<br>
Note the texture of the paint.
<BR CLEAR=RIGHT>
<div><table width="250" height="166" align="right">
<tr><td><a href="http://www.flickr.com/photos/76314685@N04/7001199315/lightbox/" target="_blank" title="IMG_2367 by RumaraPainting, on Flickr"><img src="http://farm7.staticflickr.com/6218/7001199315_cc56016c79_o.jpg" width="350" height="233" align="center" alt="IMG_2367"></a></td></tr>
<tr><td>Sanding off the thicker paint strokes</td></tr></table></div>
<br>
<br>
Wearing a pair of latex gloves, take the folded wet-sand sandpaper and rub down the surface anywhere there is low-lying texture.
<BR CLEAR=RIGHT>
<div><table width="250" height="166" align="right">
<tr><td><a href="http://www.flickr.com/photos/76314685@N04/6855082368/lightbox/" target="_blank" title="IMG_2406 by RumaraPainting, on Flickr"><img src="http://farm8.staticflickr.com/7209/6855082368_ce72c06012_o.jpg" width="350" height="233" align="center" alt="IMG_2406"></a></td></tr>
<tr><td>sanding, with slurry developing</td></tr></table></div>
<br>
<br>
A slurry containing the particles of dry paint will form on the surface and around the sandpaper.
<BR CLEAR=RIGHT>
<div><table width="250" height="166" align="right">
<tr><td><a href="http://www.flickr.com/photos/76314685@N04/7001199461/lightbox/" target="_blank" title="IMG_2418 by RumaraPainting, on Flickr"><img src="http://farm8.staticflickr.com/7206/7001199461_d72cd03f34_o.jpg" width="350" height="233" align="center" alt="IMG_2418"></a></td></tr>
<tr><td>Wiping off the slurry with a damp towel</td></tr></table></div>
<br>
<br>
Wipe down the surface with a damp blue towel. When the towel becomes full of slurry, dampen a fresh towel and wipe again.
<BR CLEAR=RIGHT>
<div><table width="250" height="166" align="right">
<tr><td><a href="http://www.flickr.com/photos/76314685@N04/7001199123/lightbox/" target="_blank" title="IMG_2358 by RumaraPainting, on Flickr"><img src="http://farm7.staticflickr.com/6050/7001199123_231fa9d4fd_o.jpg" width="350" height="233" align="center" alt="IMG_2358"></a></td></tr>
<tr><td>Textured paint viewed from the side</td></tr></table></div>
<br>
<br>
Check the surface from the side for lumps. This photo shows the original texture on the flower basket.
<BR CLEAR=RIGHT>
<div><table width="250" height="166" align="right">
<tr><td><a href="http://www.flickr.com/photos/76314685@N04/6855082320/lightbox/" target="_blank" title="IMG_2402 by RumaraPainting, on Flickr"><img src="http://farm8.staticflickr.com/7069/6855082320_f2b48b89cf_o.jpg" width="350" height="233" align="center" alt="IMG_2402"></a></td></tr>
<tr><td>The smoothed surface after wet-sanding</td></tr></table></div>
<br>
<br>
Repeat the wet-sanding until it is smooth.
<BR CLEAR=RIGHT>
</html>
!Tube pigment painted into a couch
In order to create a clean surface, we need to coat the canvas with an opaque solid color layer. For a small canvas, covering with a coat of white tube paint may suffice for re-use. Make a couch with Basic Oil Medium (see [[Oiling Out]]). Paint into it with white tube paint. Choose a titanium or a lead-based white rather than a zinc white, which is a transparent white. Note that some brands of white have higher pigment loads, and better coverage, than others.
!Oil primers
A nice painting ground can be made over the old surface by applying an oil primer. ''DO NOT APPLY AN ACRYLIC GESSO'' (see [[Grounds]]). Acrylic coatings do not adhere properly to oil surfaces.
All commercial oil primers contain some percentage of thinners. Persons with allergies may choose to wear a respirator and take other precautions during use and dry time (see [[Grounds]]).
<<tiddler HideTiddlerTags>>
<<redirect definitions Definitions>>
/***
|Macro|redirect (alias)|
|Author|[[Clint Checketts]] and Paul Petterson|
|Version|1.1 Jan 26, 2006|
|Location|http://checkettsweb.com/styles/themes.htm#RedirectMacro|
|Description|This macro tells TW to find all instances of a word and makes it point to a different link. For example, whenever I put the word 'Clint' in a tiddler I want TiddlyWiki to turn it into a link that points to a tiddler titled 'Clint Checketts' Or the word 'TW' could point to a tiddler called 'TiddlyWiki' It even matches clint (which is lowercase) [[Clint]] leet lEEt LEET|
|Usage|{{{<<redirect TW TiddlyWiki>>}}} |
|Example|<<redirect TW "TiddlyWiki">> <<redirect Clint "Clint Checketts">> (Nothing should appear, its just setting it all up)<<redirectExact lEEt Elite>>|
!Revisions
1.1- Fixed tiddler refresh so a tiddler declaring a redirect will also render the redirect
1.0- Updated to work with TiddlyWiki 2.0 (thanks to Udo Borkowski)
0.9- Original release October 2005
!Code
***/
//{{{
version.extensions.redirectExact = {major: 1, minor: 2, revision: 0, date: new Date(2005,10,24)};
config.macros.redirectExact = {label: "Pickles Rock!"};
config.macros.redirectExact.handler = function(place,macroName,params,wikifier,paramString,tiddler){
config.macros.redirect.handler(place,macroName,params,wikifier,paramString,tiddler);
}
version.extensions.redirect = {major: 1, minor: 2, revision: 0, date: new Date(2005,10,24)};
config.macros.redirect = {label: "Pickles Rock!"};
config.macros.redirect.handler = function(place,macroName,params,wikifier,paramString,tiddler){
var redirectExists = false
// Check to see if the wikifier exists
for (var i=0;i<config.formatters.length;i++)
if (config.formatters[i].name == "redirect"+params[0])
redirectExists = true;
//If it doesn't exist, add it!
if (!redirectExists){
for( var i=0; i<config.formatters.length; i++ )
if ( config.formatters[i].name=='wikiLink') break ;
if ( i >= config.formatters.length ) {
var e = "Can't find formatter for wikiLink!" ;
displayMessage( e ) ;
throw( e ) ;
}
var pattern;
if (macroName == 'redirect'){pattern=params[0].escapeRegExp().replace(/([A-Z])/img, function($1) {return("["+$1.toUpperCase()+$1.toLowerCase()+"]");});
} else {
pattern=params[0].escapeRegExp();
}
config.formatters.splice( i, 0, {
name: "redirect"+params[0],
match: "(?:\\b)(?:\\[\\[)?"+pattern+"(?:\\]\\])?(?:\\b)",
subst: params[1],
handler: function(w) {
var link = createTiddlyLink(w.output,this.subst,false);
w.outputText(link,w.matchStart,w.nextMatch);
}
});
formatter = new Formatter(config.formatters); //update the tiddler
if(tiddler) story.refreshTiddler(tiddler.title,null,true); //refresh tiddler so the new rule is applied
} // End if
}
//}}}
!Books
Donald C. Fels Jr., //Lost Secrets of Flemish Painting, Revised Edition 2004//. Available from [[Alchemist|http://ambervarnish.com/index.php?pr=book]], ISBN 09716500-0-4.
Robert Massey, //Formulas for Painters// (~Watson-Guptill, 1967). [[Amazon|http://www.amazon.com/Formulas-Painters-Robert-Massey/dp/0823018776]], ~ISBN-13: 978-0823018772.
Ralph Mayer, //The Artist’s Handbook of Materials and Techniques: Fifth Edition, Revised and Updated// (Viking Adult, 1985). [[Amazon|http://www.amazon.com/Artists-Handbook-Materials-Techniques-Reference/dp/0670837016/ref=sr_1_1?ie=UTF8&s=books&qid=1261595167&sr=1-1]], ~ISBN-13: 978-0670837014.
Ernst van de Wetering, //Rembrandt: The Painter at Work (second revised edition)// (University of California Press, 2009). [[Amazon|http://www.amazon.com/Rembrandt-Painter-Ernst-van-Wetering/dp/0520258843/ref=sr_1_1?ie=UTF8&s=books&qid=1261596506&sr=1-1]], ~ISBN-13: 978-0520258846.
!Experts
''Rob Howard'', developer and director of [[Studio Products|http://www.studioproducts.com]] (please see [[Author's Note]]), maker of Cennini brand paints and art supplies. In March, 2008 I took the [[Technical Course|http://www.artbootcamp.com/technicalcourse.html]] given by Rob Howard and his assistant ''Kurt Ankeny'' at the then Studio Products quarters in Haverhill, MA. I discovered in Rob an unexpected sort of teacher: an old master style oil painter, combined with a materials engineer. Rob is not available to answer questions on the phone or email, but he is the moderator of the [[Studio Products Forum|http://forums.studioproducts.com/]] and in that capacity, answers many questions.
''Max Howard'', Rob’s son, an industrial chemist by training who manages and directs Studio Products’ (please see [[Author's Note]]) factory facility in Georgia. Max is friendly, professional and incredibly knowledgeable, and is willing to take the time to answer materials questions of customers by phone.
''Donald C. Fels, Jr.'', founder and director of the artists’ supply company [[Alchemist|http://amberalchemy.com/]], "Makers of Historical and Traditional Amber Resin and Natural ~Resin-Based Varnishes and Painting Media." Donald spent the past twenty years researching old master mediums and perfecting the making of them, using classical oil painter [[Frank Mason|http://www.frankmason.org/]] as a tester. He is accessible by phone, willing to answer questions, and is an incredible storehouse of knowledge.
!Online Forum
The [[Studio Products Forum|http://forums.studioproducts.com/]] is a discussion forum moderated by Rob Howard. Users tend to be experienced in traditional oil painting materials and methods, and the questions and comments revolve around exploration of old methods and creation of new methods using traditional materials. Membership is $70 per year, but members also receive an amazing 24% discount at the [[Studio Products store|http://store.studioproducts.com/]] (please see [[Author's Note]]).
I enjoy reading the forum, but I keep in mind that I don’t know most of the contributors’ backgrounds. Many forum members may not be professional paint-makers or restorers, and may not have degrees in industrial chemistry or any similar formal grounding in the science of materials chemistry. Their postings come at the questions more from a user perspective.
!Further interesting reading
Joseph Sheppard, //How to Paint Like the Old Masters// (~Watson-Guptill, 1983). [[Amazon|http://www.amazon.com/How-Paint-Like-Old-Masters/dp/082302671X/ref=sr_1_1?ie=UTF8&s=books&qid=1261597402&sr=1-1]], ~ISBN-13: 978-0823026715.
<<tiddler HideTiddlerTags>>
/***
|Name|SectionLinksPlugin|
|Source|http://www.TiddlyTools.com/#SectionLinksPlugin|
|Documentation|http://www.TiddlyTools.com/#SectionLinksPlugin|
|Version|1.3.4|
|Author|Eric Shulman|
|License|http://www.TiddlyTools.com/#LegalStatements|
|~CoreVersion|2.1|
|Type|plugin|
|Description|allow tiddler sections in TiddlyLinks to be used as anchor points|
This plugin enhances the processing of section references so they can be used in links to auto-scroll to the indicated heading within a tiddler (i.e., similar to the 'anchor' behavior provided in HTML by {{{<a name="foo">}}} and {{{<a href="#foo">...</a>}}})
!!!Usage
<<<
!!!!!{{{<<tiddler>>}}} macro
>The {{{<<tiddler SomeTiddler##SomeSection>>}}} syntax has been extended so that when the tiddler title is omitted or the 'here' keyword is used (e.g., {{{<<tiddler ##SomeSection>>}}} or {{{<<tiddler here##SomeSection>>}}}), then the current containing tiddler is implied by default.
!!!!!~TiddlyLink syntax
>the standard link syntax has been extended so that a section name can included in a tiddler link (e.g., {{{[[SomeTiddler##SomeSection]]}}}). When clicked, the tiddler is displayed and the specified section heading will be automatically scrolled into view. If the tiddler title is omitted or the 'here' keyword is used (e.g., {{{[[##SomeSection]]}}} or {{{[[here##SomeSection]]>>}}}), then the current containing tiddler is implied by default.
!!!!!"""<<sectionTOC>>""" macro
>This macro generates a 'Table of Contents'-style numbered-bullet list with links to all sections within the current tiddler. Simply place the following macro at the //end of the tiddler content// (i.e., following all section headings):
{{{
<<sectionTOC>> or <<sectionTOC className>>
}}}
>Note: The macro must occur at the end of the tiddler in order to locate the rendered section headings that precede it. In addition, to position the macro's //output// within the tiddler, you must create a special 'target element' that uses a specified classname (default='sectionTOC'), like this:
{{{
{{sectionTOC{}}}
}}}
>When the {{{<<sectionTOC>>}}} macro is rendered, it will find the matching 'sectionTOC'-classed element and writes it's output there. You can also add the macro and/or target elements directly to the [[ViewTemplate]] definition, so that every tiddler can automatically display the table of contents:
{{{
<span class='sectionTOC'></span> <!-- target element -->
...
<span macro='sectionTOC'></span> <!-- must be at end of tiddler -->
}}}
<<<
!!!Revisions
<<<
2009.08.21 [1.3.4] added handling to ignore leading/trailing whitespace in section references
2009.08.21 [1.3.3] in createTiddlyLink(), add tiddlyLinkNonExistingSection class if matching section is not found
2009.08.14 [1.3.2] in createTiddlyLink(), don't override core value for ~TiddlyLink attribute
2009.08.02 [1.3.1] in sectionTOC.handler(), trim leading/trailing whitespace from generated section links
2009.08.01 [1.3.0] in scrollToSection(), apply 3-tier section matching (exact, startsWith, contains)
2009.07.06 [1.2.2] fixed displayTiddler() hijack
2009.07.03 [1.2.1] in {{{<<sectionTOC>>}}}, suppress output if target is not found
2009.06.02 [1.2.0] added support for 'here' keyword in {{{[[here##section]]}}} links and {{{<<tiddler here##section>>}}} macro
2009.04.09 [1.1.1] in sectionTOC macro, make target visible when TOC is rendered.
2009.01.18 [1.1.0] added {{{<<sectionTOC>>}}} macro to generate numbered-bullet links to sections of current tiddler
2009.01.06 [1.0.0] converted to stand-alone plugin
2008.10.14 [0.0.0] initial release (as [[CoreTweaks]] #784 - http://trac.tiddlywiki.org/ticket/784)
<<<
!!!Code
***/
//{{{
version.extensions.SectionLinksPlugin= {major: 1, minor: 3, revision: 4, date: new Date(2009,8,21)};
Story.prototype.scrollToSection = function(title,section) {
if (!title||!section) return; var t=this.getTiddler(title); if (!t) return null;
var elems=t.getElementsByTagName('*'); var heads=[];
for (var i=0; i<elems.length; i++)
if (['H1','H2','H3','H4','H5'].contains(elems[i].nodeName)) heads.push(elems[i]);
for (var i=0; i<heads.length; i++)
if (getPlainText(heads[i]).trim()==section) break;
if (i==heads.length) for (var i=0; i<heads.length; i++)
if (getPlainText(heads[i]).trim().startsWith(section)) break;
if (i==heads.length) for (var i=0; i<heads.length; i++)
if (getPlainText(heads[i]).trim().indexOf(section)!=-1) break;
if (i<heads.length) { var h=heads[i];
// if section heading is collapsed, click to expand it - see [[FoldHeadingsPlugin]]
if (hasClass(h,'foldable') && h.nextSibling.style.display=='none') h.onclick();
// scroll *after* tiddler animation
var delay=config.options.chkAnimate?config.animDuration+100:0;
setTimeout('window.scrollTo('+findPosX(h)+','+findPosY(h)+')',delay);
return h;
}
}
//}}}
/***
!!!!core hijacks
***/
/***
!!!!!createTiddlyLink
***/
//{{{
// [[tiddlername##section]] and [[##section]]
if (!window.createTiddlyLink_section)
window.createTiddlyLink_section=window.createTiddlyLink;
window.createTiddlyLink=function(place,title) {
var t=story.findContainingTiddler(place); var tid=t?t.getAttribute('tiddler'):'';
var parts=title.split(config.textPrimitives.sectionSeparator);
var title=parts[0]; var section=parts[1]; if (section) section=section.trim();
if (!title.length || title.toLowerCase()=='here') title=tid; // default=current tiddler
arguments[1]=title;
var btn=createTiddlyLink_section.apply(this,arguments);
if (section) {
btn.setAttribute('section',section);
if (store.getTiddlerText(title+config.textPrimitives.sectionSeparator+section)===null)
addClass(btn,'tiddlyLinkNonExistingSection');
}
return btn;
}
//}}}
/***
!!!!!onClickTiddlerLink
***/
//{{{
if (!window.onClickTiddlerLink_section)
window.onClickTiddlerLink_section=window.onClickTiddlerLink;
window.onClickTiddlerLink=function(ev) {
var e=ev||window.event; var target=resolveTarget(e); var title=null;
while (target!=null && title==null) {
title=target.getAttribute('tiddlyLink');
section=target.getAttribute('section');
target=target.parentNode;
}
var t=story.findContainingTiddler(target); var tid=t?t.getAttribute('tiddler'):'';
if (title!=tid||!section) // avoid excess scrolling for intra-tiddler links
onClickTiddlerLink_section.apply(this,arguments);
story.scrollToSection(title,section);
return false;
}
//}}}
/***
!!!!! displayTiddler
***/
//{{{
if (!Story.prototype.displayTiddler_section)
Story.prototype.displayTiddler_section=Story.prototype.displayTiddler;
Story.prototype.displayTiddler = function(srcElement,tiddler)
{
var title=(tiddler instanceof Tiddler)?tiddler.title:tiddler;
var parts=title.split(config.textPrimitives.sectionSeparator);
var title=parts[0]; var section=parts[1]; if (section) section=section.trim();
if (!title.length || title.toLowerCase()=='here') {
var t=story.findContainingTiddler(place);
title=t?t.getAttribute('tiddler'):'';
}
arguments[1]=title; // default=current tiddler
this.displayTiddler_section.apply(this,arguments);
story.scrollToSection(title,section);
}
//}}}
/***
!!!!!isExternalLink
***/
//{{{
if (!config.formatterHelpers.isExternalLink_section)
config.formatterHelpers.isExternalLink_section=config.formatterHelpers.isExternalLink;
config.formatterHelpers.isExternalLink=function(link) {
if (link.indexOf(config.textPrimitives.sectionSeparator)!=-1) return false;
return config.formatterHelpers.isExternalLink_section.apply(this,arguments);
}
//}}}
/***
!!!!!tiddler.handler
***/
//{{{
if (!config.macros.tiddler.handler_section)
config.macros.tiddler.handler_section=config.macros.tiddler.handler;
config.macros.tiddler.handler=function(place,macroName,params,wikifier,paramString,tiddler)
{
if (!params[0]) return;
var sep=config.textPrimitives.sectionSeparator;
var parts=params[0].split(sep); var tid=parts[0]; var sec=parts[1]; if (sec) sec=sec.trim();
if ((tid.toLowerCase()=='here'||!tid.length) && sec) { // fixup for 'here##section' and '##section'
var here=story.findContainingTiddler(place)
var tid=here?here.getAttribute('tiddler'):tiddler?tiddler.title:'';
arguments[2][0]=tid+sep+sec;
arguments[4]=paramString.replace(new RegExp('(here)?'+sep+sec),tid+sep+sec);
}
config.macros.tiddler.handler_section.apply(this,arguments);
}
//}}}
/***
!!!!sectionTOC macro
***/
//{{{
config.macros.sectionTOC = {
targetClass: 'sectionTOC',
handler: function(place,macroName,params,wikifier,paramString,tiddler) {
var out=[];
var targetClass=params[0]||this.targetClass;
var t=story.findContainingTiddler(place); if (!t) return;
var elems=t.getElementsByTagName('*');
var level=5; // topmost heading level
for (var i=0; i<elems.length; i++) {
var txt=getPlainText(elems[i]).trim();
var link='[['+txt+'|##'+txt+']]';
switch(elems[i].nodeName) {
case 'H1': out.push('#'+link); level=1; break;
case 'H2': out.push('##'+link); level=level<2?level:2; break;
case 'H3': out.push('###'+link); level=level<3?level:3; break;
case 'H4': out.push('####'+link); level=level<4?level:4; break;
case 'H5': out.push('#####'+link); level=level<5?level:5; break;
default: if (hasClass(elems[i],targetClass)) var target=elems[i];
}
}
// trim excess bullet levels
if (level>1) for (var i=0; i<out.length; i++) out[i]=out[i].substr(level-1);
// show numbered list
if (out.length && target) {
if (target.style.display=='none') target.style.display='block';
wikify(out.join('\n'),target);
}
}
}
//}}}
/***
!!!Invoke macro
{{{
<<sectionTOC>>
}}}
***/
// //<<sectionTOC>>
/%
!info
|Name|ShowImage|
|Source|http://www.TiddlyTools.com/#ShowImage|
|Version|1.0.1|
|Author|Eric Shulman|
|License|http://www.TiddlyTools.com/#LegalStatements|
|~CoreVersion|2.1|
|Type|transclusion|
|Description|display attached tiddler image without supporting plugin|
Usage:
<<<
# First, use [[AttachFilePlugin]] to create tiddlers containing base64-encoded image data with a fallback remote URL reference.
# You can then discard the plugin and associated supporting tiddlers ([[AttachFileMIMETypes]], [[AttachFilePluginFormatters]]), leaving only the attachment tiddlers (plus this tiddler, ShowImage, of course).
# Use the following syntax to display the attached images without any plugins:
{{{
<<tiddler ShowImage with: [[TiddlerName]] "tooltip" "width">>
}}}
where:
*''~TiddlerName''<br>title of the attachment tiddler to be displayed
*''tooltip'' //(optional)//<br>mouseover help text for the image (default=attachment title)
*''width'' //(optional)//<br>CSS width measurement - resizes image height proportionally (default=auto)
Note: the fallback remote URL will be used if encoded data is not attached or you are using InternetExplorer, which does not currently support the data:// URI.
<<<
Example:
<<<
{{{
<<tiddler ShowImage with: [[AttachFileSample]] "meow!" "30px">>
}}}
<<tiddler ShowImage with: [[AttachFileSample]] "meow!" "30px">>
<<<
!end
!show
<html><img src="missing.jpg" title="$2" style="width:$3" /></html><<tiddler {{
var src=store.getTiddlerText("$1##data");
if (!src||config.browser.isIE)
src=store.getTiddlerText("$1##url","missing.jpg");
place.lastChild.firstChild.src=src;
}}>>
!end
%/<<tiddler {{"ShowImage##"+("$1"=="$"+"1"?"info":"show")}} with:
[[$1]]
{{"$2"=="$"+"2"?"$1" :"$2"}}
{{"$3"=="$"+"3"?"auto":"$3"}}
>>
<<closeAll>><<permaview>><<newTiddler>><<newJournal "DD MMM YYYY" "journal">><<saveChanges>><<slider chkSliderOptionsPanel OptionsPanel "options »" "Change TiddlyWiki advanced options">>
<<tabs txtMainTab "Timeline" "Timeline" TabTimeline "All" "All tiddlers" TabAll "Tags" "All tags" TabTags "More" "More lists" TabMore>>
/***
LSJ_CUSTOM 091129 setting default as: config.options.chkSinglePageMode=true
|Name|SinglePageModePlugin|
|Source|http://www.TiddlyTools.com/#SinglePageModePlugin|
|Documentation|http://www.TiddlyTools.com/#SinglePageModePluginInfo|
|Version|2.9.6|
|Author|Eric Shulman|
|License|http://www.TiddlyTools.com/#LegalStatements|
|~CoreVersion|2.1|
|Type|plugin|
|Description|Show tiddlers one at a time with automatic permalink, or always open tiddlers at top/bottom of page.|
This plugin allows you to configure TiddlyWiki to navigate more like a traditional multipage web site with only one tiddler displayed at a time.
!!!!!Documentation
>see [[SinglePageModePluginInfo]]
!!!!!Configuration
<<<
<<option chkSinglePageMode>> Display one tiddler at a time
><<option chkSinglePagePermalink>> Automatically permalink current tiddler
><<option chkSinglePageKeepFoldedTiddlers>> Don't close tiddlers that are folded
><<option chkSinglePageKeepEditedTiddlers>> Don't close tiddlers that are being edited
<<option chkTopOfPageMode>> Open tiddlers at the top of the page
<<option chkBottomOfPageMode>> Open tiddlers at the bottom of the page
<<option chkSinglePageAutoScroll>> Automatically scroll tiddler into view (if needed)
Notes:
* The "display one tiddler at a time" option can also be //temporarily// set/reset by including a 'paramifier' in the document URL: {{{#SPM:true}}} or {{{#SPM:false}}}.
* If more than one display mode is selected, 'one at a time' display takes precedence over both 'top' and 'bottom' settings, and if 'one at a time' setting is not used, 'top of page' takes precedence over 'bottom of page'.
* When using Apple's Safari browser, automatically setting the permalink causes an error and is disabled.
<<<
!!!!!Revisions
<<<
2008.10.17 [2.9.6] changed chkSinglePageAutoScroll default to false
| Please see [[SinglePageModePluginInfo]] for previous revision details |
2005.08.15 [1.0.0] Initial Release. Support for BACK/FORWARD buttons adapted from code developed by Clint Checketts.
<<<
!!!!!Code
***/
//{{{
version.extensions.SinglePageModePlugin= {major: 2, minor: 9, revision: 6, date: new Date(2008,10,17)};
//}}}
//{{{
config.paramifiers.SPM = { onstart: function(v) {
config.options.chkSinglePageMode=eval(v);
if (config.options.chkSinglePageMode && config.options.chkSinglePagePermalink && !config.browser.isSafari) {
config.lastURL = window.location.hash;
if (!config.SPMTimer) config.SPMTimer=window.setInterval(function() {checkLastURL();},1000);
}
} };
//}}}
//{{{
if (config.options.chkSinglePageMode==undefined)
/***
LSJ_CUSTOM 091129 setting default: config.options.chkSinglePageMode=true
***/
config.options.chkSinglePageMode=true;
if (config.options.chkSinglePagePermalink==undefined)
config.options.chkSinglePagePermalink=true;
if (config.options.chkSinglePageKeepFoldedTiddlers==undefined)
config.options.chkSinglePageKeepFoldedTiddlers=false;
if (config.options.chkSinglePageKeepEditedTiddlers==undefined)
config.options.chkSinglePageKeepEditedTiddlers=false;
if (config.options.chkTopOfPageMode==undefined)
config.options.chkTopOfPageMode=false;
if (config.options.chkBottomOfPageMode==undefined)
config.options.chkBottomOfPageMode=false;
if (config.options.chkSinglePageAutoScroll==undefined)
config.options.chkSinglePageAutoScroll=false;
//}}}
//{{{
config.SPMTimer = 0;
config.lastURL = window.location.hash;
function checkLastURL()
{
if (!config.options.chkSinglePageMode)
{ window.clearInterval(config.SPMTimer); config.SPMTimer=0; return; }
if (config.lastURL == window.location.hash) return; // no change in hash
var tids=decodeURIComponent(window.location.hash.substr(1)).readBracketedList();
if (tids.length==1) // permalink (single tiddler in URL)
story.displayTiddler(null,tids[0]);
else { // restore permaview or default view
config.lastURL = window.location.hash;
if (!tids.length) tids=store.getTiddlerText("DefaultTiddlers").readBracketedList();
story.closeAllTiddlers();
story.displayTiddlers(null,tids);
}
}
if (Story.prototype.SPM_coreDisplayTiddler==undefined)
Story.prototype.SPM_coreDisplayTiddler=Story.prototype.displayTiddler;
Story.prototype.displayTiddler = function(srcElement,tiddler,template,animate,slowly)
{
var title=(tiddler instanceof Tiddler)?tiddler.title:tiddler;
var tiddlerElem=document.getElementById(story.idPrefix+title); // ==null unless tiddler is already displayed
var opt=config.options;
var single=opt.chkSinglePageMode && !startingUp;
var top=opt.chkTopOfPageMode && !startingUp;
var bottom=opt.chkBottomOfPageMode && !startingUp;
if (single) {
story.forEachTiddler(function(tid,elem) {
// skip current tiddler and, optionally, tiddlers that are folded.
if ( tid==title
|| (opt.chkSinglePageKeepFoldedTiddlers && elem.getAttribute("folded")=="true"))
return;
// if a tiddler is being edited, ask before closing
if (elem.getAttribute("dirty")=="true") {
if (opt.chkSinglePageKeepEditedTiddlers) return;
// if tiddler to be displayed is already shown, then leave active tiddler editor as is
// (occurs when switching between view and edit modes)
if (tiddlerElem) return;
// otherwise, ask for permission
var msg="'"+tid+"' is currently being edited.\n\n";
msg+="Press OK to save and close this tiddler\nor press Cancel to leave it opened";
if (!confirm(msg)) return; else story.saveTiddler(tid);
}
story.closeTiddler(tid);
});
}
else if (top)
arguments[0]=null;
else if (bottom)
arguments[0]="bottom";
if (single && opt.chkSinglePagePermalink && !config.browser.isSafari) {
window.location.hash = encodeURIComponent(String.encodeTiddlyLink(title));
config.lastURL = window.location.hash;
document.title = wikifyPlain("SiteTitle") + " - " + title;
if (!config.SPMTimer) config.SPMTimer=window.setInterval(function() {checkLastURL();},1000);
}
if (tiddlerElem && tiddlerElem.getAttribute("dirty")=="true") { // editing... move tiddler without re-rendering
var isTopTiddler=(tiddlerElem.previousSibling==null);
if (!isTopTiddler && (single || top))
tiddlerElem.parentNode.insertBefore(tiddlerElem,tiddlerElem.parentNode.firstChild);
else if (bottom)
tiddlerElem.parentNode.insertBefore(tiddlerElem,null);
else this.SPM_coreDisplayTiddler.apply(this,arguments); // let CORE render tiddler
} else
this.SPM_coreDisplayTiddler.apply(this,arguments); // let CORE render tiddler
var tiddlerElem=document.getElementById(story.idPrefix+title);
if (tiddlerElem&&opt.chkSinglePageAutoScroll) {
// scroll to top of page or top of tiddler
var isTopTiddler=(tiddlerElem.previousSibling==null);
var yPos=isTopTiddler?0:ensureVisible(tiddlerElem);
// if animating, defer scroll until after animation completes
var delay=opt.chkAnimate?config.animDuration+10:0;
setTimeout("window.scrollTo(0,"+yPos+")",delay);
}
}
if (Story.prototype.SPM_coreDisplayTiddlers==undefined)
Story.prototype.SPM_coreDisplayTiddlers=Story.prototype.displayTiddlers;
Story.prototype.displayTiddlers = function() {
// suspend single/top/bottom modes when showing multiple tiddlers
var opt=config.options;
var saveSPM=opt.chkSinglePageMode; opt.chkSinglePageMode=false;
var saveTPM=opt.chkTopOfPageMode; opt.chkTopOfPageMode=false;
var saveBPM=opt.chkBottomOfPageMode; opt.chkBottomOfPageMode=false;
this.SPM_coreDisplayTiddlers.apply(this,arguments);
opt.chkBottomOfPageMode=saveBPM;
opt.chkTopOfPageMode=saveTPM;
opt.chkSinglePageMode=saveSPM;
}
//}}}
How to paint in oils without petroleum distillates or turpentine<<tiddler ToggleRightSidebar with: ".">>
<html><a href="http://www.rumara.com/" target="_blank"><img src="http://www.rumara.com/Sandbox/images/greenpainting/GreenPainting-banner.gif" style="width: 188px; "/> </a></html>Green Painting
(''//Internet Explorer//'' users: the Table of Contents will not function as links. Please read [[Author's Note]].)
<<showtoc>>
!Introduction
<html>
<div><table width="250" height="166" align="right">
<tr><td><a href="http://www.flickr.com/photos/76314685@N04/7001206479/lightbox/" target="_blank" title="IMG_4417 by RumaraPainting, on Flickr"><img src="http://farm7.staticflickr.com/6220/7001206479_37106c7d78_o.jpg" width="350" height="233" align="center" alt="IMG_4417"></a></td></tr>
<tr><td>Drawing of a glass muller</td></tr></table></div>
Oil paint is made from dry pigment, a drying oil that acts as a binder, and fillers and additives such as marble dust that improve handling. Originally oil paint was made by hand. Pigment was ground in a mortar and pestle to the desired level of coarseness. Oil was added to the pigment and mulled with a tool called a muller made of ground glass or stone. The mulling process lifts the pigment particles into an even and complete suspension in the oil. This suspension is a different state than that achieved by mixing with a palette knife. Properly mulled paint contains far less oil than the paste that is achieved through hand mixing. Properly mulled paint can be spread very thinly in a glaze coating without any particles or clumps showing. Paint that has been made by proper mulling with a muller, contains far less oil than paint that has been made by mixing dry pigment oil with a palette knife. Sinopia has a photo montage of </html>[[making paint with a muller|http://www.sinopia.com/howtomakeoilpaint.aspx]]<html>.
<BR CLEAR=RIGHT>
</html>
Commercial paint is milled by machines. The pressure applied to the pigment and oil during machine-milling is many times more than that that can be applied by hand-mulling. Making paint with a machine creates the same suspension of a pigment in oil, but uses less oil per pigment.
Paintmakers make choices regarding the additives used to improve handling. Marble dust and aluminum stearate are two common choices. Paintmakers also add driers, or extenders to prevent drying and to prolong shelf life. Early artists used paint as soon as it was ground. Many paints now are sold from warehouse suppliers such as Jerry's and ASW (see [[Materials]]). Such paints may sit on shelves for months or longer before being purchased. Without preservatives, this paint might harden in the tube. Drying without air and light won’t happen quickly, but it will happen. The chemical transformation undergone by drying oils during drying is irreversible (see [[Drying Oils]]). Paint sitting on a shelf for some time must be prevented from commencing this process.
!Softening old paint that has become hard
Old paint that has thickened considerably, or become hard, has already partially or completely polymerized. In order for the paint to form a strong paint film, we need to apply it when its oil binder is still in the monomer state at the molecular level (see [[Drying Oils]]). But the drying oil in dry or thickened, pasty, partially dried paint has already passed out of the monomer state.
Crushing up the old paint will not break up all of the molecular bonds formed during polymerization. Crushing the old paint will at best create small chunks of (dried) paint which are made up of clumps of bonded molecules. These chunks will inhibit the formation of an even net of bonds during polymerization (see [[Drying Oils: Paint with fresh paint|Drying Oils##Paint with fresh paint]]). Therefore it is important not to use old paint that has become hard.
!Softening new paint that is too stiff
Old Holland chooses to create new fresh paint that is quite stiff. The stiffness is not natural to the pigments used. Fresh ground paint has a wonderfully soft creamy texture like crème fraiche, fresh homemade mayonnaise, or chocolate pudding. The stiffness of Old Holland fresh paint is due to choices on the part of the makers to use certain bulk additives that create this stiffness.
Old Holland paint has wonderful colors and through some effort, we can adjust its texture by adding some oil and retubing. This procedure can be worth the effort, if a creamy paint is desired for ease of handling and application.
!!Ingredients and equipment
<html>
<div><table width="250" height="166" align="right">
<tr><td><a href="http://www.flickr.com/photos/76314685@N04/7001202793/lightbox/" target="_blank" title="IMG_3487 by RumaraPainting, on Flickr"><img src="http://farm8.staticflickr.com/7056/7001202793_a76dd80fa2_o.jpg" width="350" height="233" align="center" alt="IMG_3487"></a></td></tr>
<tr><td>ingredients and equipment</td></tr></table></div>
</html>
*a tube of Old Holland Paint
*linseed oil
*latex gloves
*marble slab
*a palette knife
*large palette spatula with a straight edge
*empty paint tubes
*paper and scissors
*tube wringer
*sticky tape for a label
(see [[Materials]])
<html><BR CLEAR=RIGHT>
</html>
!!Procedure: making the paint softer
<html>
<div><table width="250" height="166" align="right">
<tr><td><a href="http://www.flickr.com/photos/76314685@N04/6855085026/lightbox/" target="_blank" title="IMG_3321 by RumaraPainting, on Flickr"><img src="http://farm7.staticflickr.com/6120/6855085026_1c8f854fdb_o.jpg" width="350" height="233" align="center" alt="IMG_3321"></a></td></tr>
<tr><td>Squeeze the paint out onto the marble slab</td></tr></table></div>
<br>
<br>
Squeeze the Old Holland paint out onto the marble slab, emptying the tube with the tube wringer.
<BR CLEAR=RIGHT>
<div><table width="250" height="166" align="right">
<tr><td><a href="http://www.flickr.com/photos/76314685@N04/7001201995/lightbox/" target="_blank" title="IMG_3343 by RumaraPainting, on Flickr"><img src="http://farm7.staticflickr.com/6097/7001201995_68b05b5cc8_o.jpg" width="350" height="233" align="center" alt="IMG_3343"></a></td></tr>
<tr><td>A very small pool of oil next to the pigment pile</td></tr></table></div>
<br>
<br>
Pour on a small amount of oil. Start with about 1/2 teaspoon for a 45 ml tube of paint.
<BR CLEAR=RIGHT>
<div><table width="250" height="166" align="right">
<tr><td><a href="http://www.flickr.com/photos/76314685@N04/7001202029/lightbox/" target="_blank" title="IMG_3354 by RumaraPainting, on Flickr"><img src="http://farm8.staticflickr.com/7269/7001202029_e4e3db2f7a_o.jpg" width="350" height="233" align="center" alt="IMG_3354"></a></td></tr>
<tr><td>Use the spatula and the knife to knead and work the oil into the paint</td></tr></table></div>
<br>
<br>
Now use the spatula and the knife to knead and work the oil into the paint. The pigment is already properly in suspension so we do not need to use a muller. Check to see if the desired creamy consistency is achieved.
<BR CLEAR=RIGHT>
Add a little bit more oil and repeat until the paint feels like mayonnaise or chocolate pudding.
</html>
!!Procedure: re-tubing
<html>
<div><table width="250" height="166" align="right">
<tr><td><a href="http://www.flickr.com/photos/76314685@N04/7001202059/lightbox/" target="_blank" title="IMG_3356 by RumaraPainting, on Flickr"><img src="http://farm7.staticflickr.com/6211/7001202059_e3e39994e7_o.jpg" width="350" height="233" align="center" alt="IMG_3356"></a></td></tr>
<tr><td>Cutting the paper</td></tr></table></div>
<br>
<br>
Cut a small piece of paper about 1 inch by 2 ½ inches.
<BR CLEAR=RIGHT>
<div><table width="250" height="166" align="right">
<tr><td><a href="http://www.flickr.com/photos/76314685@N04/7001202105/lightbox/" target="_blank" title="IMG_3357 by RumaraPainting, on Flickr"><img src="http://farm8.staticflickr.com/7118/7001202105_2dc2c8989f_o.jpg" width="350" height="233" align="center" alt="IMG_3357"></a></td></tr>
<tr><td>folding a cut paper piece.</td></tr></table></div>
<br>
<br>
Fold it.
<BR CLEAR=RIGHT>
<div><table width="250" height="166" align="right">
<tr><td><a href="http://www.flickr.com/photos/76314685@N04/7001202155/lightbox/" target="_blank" title="IMG_3358 by RumaraPainting, on Flickr"><img src="http://farm8.staticflickr.com/7097/7001202155_563f29d066_o.jpg" width="350" height="233" align="center" alt="IMG_3358"></a></td></tr>
<tr><td>insert around the open end of the tube to make a collar</td></tr></table></div>
<br>
<br>
Insert around the open end of the tube so that it overlaps, to make a collar. This will help keep the open end slightly cleaner as we fill with paint.
<BR CLEAR=RIGHT>
<div><table width="250" height="166" align="right">
<tr><td><a href="http://www.flickr.com/photos/76314685@N04/6855085218/lightbox/" target="_blank" title="IMG_3407 by RumaraPainting, on Flickr"><img src="http://farm7.staticflickr.com/6101/6855085218_0f1466b8f9_o.jpg" width="350" height="233" align="center" alt="IMG_3407"></a></td></tr>
<tr><td>Piercing the metal seal on the cap end of the tube</td></tr></table></div>
<br>
<br>
Some tubes come with the cap end sealed to keep the paint fresh until use. I haven't been able to fill tubes completely without first piercing this seal, which releases air at the cap end. Using the paint soon afer re-tubing, eliminates the need for the metal seal.
<BR CLEAR=RIGHT>
<div><table width="250" height="166" align="right">
<tr><td><a href="http://www.flickr.com/photos/76314685@N04/6855085252/lightbox/" target="_blank" title="IMG_3413 by RumaraPainting, on Flickr"><img src="http://farm8.staticflickr.com/7114/6855085252_e181dff746_o.jpg" width="350" height="233" align="center" alt="IMG_3413"></a></td></tr>
<tr><td>filling the tube with soft paint with the spatula. Gloved hands.</td></tr></table></div>
<br>
<br>
Using the palette knife, scoop up the soft paint and fill the tube, little by little. Push the palette knife in the tube and work it around a little to release air bubbles as you go.
<BR CLEAR=RIGHT>
<div><table width="250" height="166" align="right">
<tr><td><a href="http://www.flickr.com/photos/76314685@N04/7001202255/lightbox/" target="_blank" title="IMG_3430 by RumaraPainting, on Flickr"><img src="http://farm8.staticflickr.com/7226/7001202255_a6f30f13cf_o.jpg" width="350" height="233" align="center" alt="IMG_3430"></a></td></tr>
<tr><td>rolling a brush handle over it</td></tr></table></div>
<br>
<br>
When the tube is full to about an inch from the top, remove the paper collar and press the open end into a flat sandwich. Press out air with fingers to make a flat section below the paint. Rub the palette knife handle over this flat section to remove any air bubbles.
<BR CLEAR=RIGHT>
<div><table width="250" height="166" align="right">
<tr><td><a href="http://www.flickr.com/photos/76314685@N04/6855085374/lightbox/" target="_blank" title="IMG_3440 by RumaraPainting, on Flickr"><img src="http://farm8.staticflickr.com/7097/6855085374_b6aba13bef_o.jpg" width="350" height="233" align="center" alt="IMG_3440"></a></td></tr>
<tr><td>Rubbing the tube clean with a paper towel</td></tr></table></div>
<br>
<br>
Clean the tube with a paper towel.
<BR CLEAR=RIGHT>
<div><table width="250" height="166" align="right">
<tr><td><a href="http://www.flickr.com/photos/76314685@N04/7001202311/lightbox/" target="_blank" title="IMG_3443 by RumaraPainting, on Flickr"><img src="http://farm8.staticflickr.com/7184/7001202311_9463979709_o.jpg" width="350" height="233" align="center" alt="IMG_3443"></a></td></tr>
<tr><td>Screwing the cap onto the tube</td></tr></table></div>
<br>
<br>
Cap the tube.
<BR CLEAR=RIGHT>
<div><table width="250" height="166" align="right">
<tr><td><a href="http://www.flickr.com/photos/76314685@N04/6855085428/lightbox/" target="_blank" title="IMG_3445 by RumaraPainting, on Flickr"><img src="http://farm7.staticflickr.com/6034/6855085428_eb78ba201b_o.jpg" width="350" height="233" align="center" alt="IMG_3445"></a></td></tr>
<tr><td>folding the first time</td></tr></table></div>
<br>
<br>
Fold a thin strip of tube, about 1/8 inch, twice over at the bottom.
<BR CLEAR=RIGHT>
<div><table width="250" height="166" align="right">
<tr><td><a href="http://www.flickr.com/photos/76314685@N04/6855085456/lightbox/" target="_blank" title="IMG_3446 by RumaraPainting, on Flickr"><img src="http://farm8.staticflickr.com/7269/6855085456_6ccd51079e_o.jpg" width="350" height="233" align="center" alt="IMG_3446"></a></td></tr>
<tr><td>folding the second time</td></tr></table></div>
<br>
<br>
Fold the thin strip over again.
<BR CLEAR=RIGHT>
<div><table width="250" height="166" align="right">
<tr><td><a href="http://www.flickr.com/photos/76314685@N04/7001202427/lightbox/" target="_blank" title="IMG_3448 by RumaraPainting, on Flickr"><img src="http://farm7.staticflickr.com/6233/7001202427_b9d4525f96_o.jpg" width="350" height="233" align="center" alt="IMG_3448"></a></td></tr>
<tr><td>crimping the open end</td></tr></table></div>
<br>
<br>
Use the crimper to press this flattened section, and to roll the crimper until all of the empty section of tube, below the pigment, has been crimped.
<BR CLEAR=RIGHT>
<div><table width="250" height="166" align="right">
<tr><td><a href="http://www.flickr.com/photos/76314685@N04/6855085528/lightbox/" target="_blank" title="IMG_3449 by RumaraPainting, on Flickr"><img src="http://farm7.staticflickr.com/6226/6855085528_03f46cb85e_o.jpg" width="350" height="233" align="center" alt="IMG_3449"></a></td></tr>
<tr><td>The crimped end</td></tr></table></div>
<br>
<br>
<BR CLEAR=RIGHT>
<div><table width="250" height="166" align="right">
<tr><td><a href="http://www.flickr.com/photos/76314685@N04/6855085566/lightbox/" target="_blank" title="IMG_3450 by RumaraPainting, on Flickr"><img src="http://farm8.staticflickr.com/7251/6855085566_86d54c0b1b_o.jpg" width="350" height="233" align="center" alt="IMG_3450"></a></td></tr>
<tr><td>Fold over the crimped end</td></tr></table></div>
<br>
<br>
Fold over the extra crimped section of the tube.
<BR CLEAR=RIGHT>
<div><table width="250" height="166" align="right">
<tr><td><a href="http://www.flickr.com/photos/76314685@N04/7001202523/lightbox/" target="_blank" title="IMG_3452 by RumaraPainting, on Flickr"><img src="http://farm8.staticflickr.com/7199/7001202523_8ab90a5691_o.jpg" width="350" height="233" align="center" alt="IMG_3452"></a></td></tr>
<tr><td>Making a label with sticky tape</td></tr></table></div>
<br>
<br>
Make a label with sticky tape.
<BR CLEAR=RIGHT>
<div><table width="250" height="166" align="right">
<tr><td><a href="http://www.flickr.com/photos/76314685@N04/7001202557/lightbox/" target="_blank" title="IMG_3453 by RumaraPainting, on Flickr"><img src="http://farm7.staticflickr.com/6092/7001202557_146c5be677_o.jpg" width="350" height="233" align="center" alt="IMG_3453"></a></td></tr>
<tr><td>A labeled tube</td></tr></table></div>
<br>
<br>
<BR CLEAR=RIGHT>
</html>
!!Procedure: cleaning the marble slab
<html>
<div><table width="250" height="166" align="right">
<tr><td><a href="http://www.flickr.com/photos/76314685@N04/6855085676/lightbox/" target="_blank" title="IMG_3460 by RumaraPainting, on Flickr"><img src="http://farm8.staticflickr.com/7063/6855085676_f9d3197678_o.jpg" width="350" height="233" align="center" alt="IMG_3460"></a></td></tr>
<tr><td>Scraping the marble slab with the straight edge of the spatula</td></tr></table></div>
<br>
<br>
Use a spatula with an angled edge to scrape off most of the paint.
<BR CLEAR=RIGHT>
<div><table width="250" height="166" align="right">
<tr><td><a href="http://www.flickr.com/photos/76314685@N04/7001202659/lightbox/" target="_blank" title="IMG_3465 by RumaraPainting, on Flickr"><img src="http://farm8.staticflickr.com/7079/7001202659_b2c47057d4_o.jpg" width="350" height="233" align="center" alt="IMG_3465"></a></td></tr>
<tr><td>Wiping down the slab with a paper towel</td></tr></table></div>
<br>
<br>
Wipe off remaining bits of paint with a folded blue towel.
<BR CLEAR=RIGHT>
<div><table width="250" height="166" align="right">
<tr><td><a href="http://www.flickr.com/photos/76314685@N04/6855085738/lightbox/" target="_blank" title="IMG_3477 by RumaraPainting, on Flickr"><img src="http://farm8.staticflickr.com/7251/6855085738_d7a2f1d1eb_o.jpg" width="350" height="233" align="center" alt="IMG_3477"></a></td></tr>
<tr><td>Pouring a little linseed oil onto the slab</td></tr></table></div>
<br>
<br>
Pour a little linseed oil onto the slab.
<BR CLEAR=RIGHT>
<div><table width="250" height="166" align="right">
<tr><td><a href="http://www.flickr.com/photos/76314685@N04/7001202757/lightbox/" target="_blank" title="IMG_3480 by RumaraPainting, on Flickr"><img src="http://farm8.staticflickr.com/7114/7001202757_2b6c2f3846_o.jpg" width="350" height="233" align="center" alt="IMG_3480"></a></td></tr>
<tr><td>Wiping down the oiled marble slab with a blue towel</td></tr></table></div>
<br>
<br>
Wipe it down with a folded blue towel, to clean the rest of the remnants of paint.
<br>
<br>
It is important to clean any pigment completely, so leftover pigment doesn’t pollute the next paint color that winds up on the slab.
<BR CLEAR=RIGHT>
</html>
<<tiddler HideTiddlerTags>>
/***
|Name|StickyPopupPlugin|
|Source|http://www.TiddlyTools.com/#StickyPopupPlugin|
|Version|1.0.1|
|Author|Eric Shulman|
|License|http://www.TiddlyTools.com/#LegalStatements|
|~CoreVersion|2.1|
|Type|plugin|
|Description|allow mouse interactions inside popups without automatically closing them|
Usually, when a TW popup is displayed, it is automatically closed whenever a click occurs //anywhere// in the document, either //inside// or //outside// the popup itself. This plugin makes popups persistent (a.k.a, "sticky"), allowing you to perform multiple mouse interactions on content //inside// the popup (e.g., entering form fields, opening links, selecting text, etc.), remaining visible until you click //outside// the popup or perform an action that opens another popup (only one popup can be displayed at any given time).
!!!!!Configuration
<<<
You can cause popups to behave in a persistent ("sticky") manner simply by selecting the option checkbox below. The selected popup display behavior will be applied to ALL popups in the document automatically.
><<option chkStickyPopups>> make all popups "sticky"
>{{{usage: <<option chkStickyPopups>>}}}
<<<
!!!!!Usage
<<<
If you are developing your own plugins or inline scripts that create popups programmatically using the core function:
{{{
Popup.create(this)
}}}
you can provide additional parameters that specify the desired CSS classname(s) to assign to the popup DOM element. The default class when none is specified is simply "popup". To create a //sticky// popup, simply enter a custom class combination like this:
{{{
Popup.create(this,null,"sticky popup")
}}}
<<<
!!!!!Revisions
<<<
2008.05.16 [1.0.1] added try..catch around addEvent/removeEvent calls to avoid error in Opera
2007.11.25 [1.0.0] initial release - moved from [[CoreTweaks]]
<<<
!!!!!Code
***/
//{{{
version.extensions.StickyPopupPlugin= {major: 1, minor: 0, revision: 1, date: new Date(2008,5,16)};
if (config.options.chkStickyPopups==undefined) config.options.chkStickyPopups=false;
Popup.stickyPopup_onDocumentClick = function(ev)
{
// if click is in a sticky popup, ignore it so popup will remain visible
var e = ev ? ev : window.event; var target = resolveTarget(e);
var p=target; while (p) {
if (hasClass(p,"popup") && (hasClass(p,"sticky")||config.options.chkStickyPopups)) break;
else p=p.parentNode;
}
if (!p) // not in sticky popup (or sticky popups disabled)... use normal click handling
Popup.onDocumentClick(ev);
return true;
};
try{removeEvent(document,"click",Popup.onDocumentClick);}catch(e){};
try{addEvent(document,"click",Popup.stickyPopup_onDocumentClick);}catch(e){};
//}}}
X
<<tiddler HideTiddlerTags>>
.headerShadow {position:relative; padding:0em 0 1em 1em; left:-1px; top:0px;}
.headerForeground {position:absolute; padding: 0em 0 1em 1em; left:-1px; top:0px; }
.header { background-color: #CCFF99; width: 960px; background: url("http://www.rumara.com/Sandbox/images/greenpainting/GreenPainting-headerbackground.gif") no-repeat;}
.frameimg img { border: 1px solid #111; padding: .2em .5em; }
.siteTitle { font-size: 30pt; color: rgb(145,60,145); margin-left: -.33em; }
.siteSubtitle { font-size: 12pt; color: rgb(145,60,145); }
.viewer table {
border:0px solid ButtonFace;
border-collapse: collapse;
margin: 0.5em 0.5em;
}
.viewer div.centeredTable {
text-align: center;
}
.viewer div.centeredTable table {
margin: 0 auto;
text-align: left;
}
.viewer table.borderless,
.viewer table.borderless * {
border: 0;
}
#displayArea {background-color: #FFFFFF; width: 50.50em; }
#mainMenu {font-size: 12pt; border: 1px solid #0028AB; background-color: #FFFFFF; margin: 10px 0px 10px 10px; width: 150px; color: black; text-align: right; }
#commandPanel {background-color: #008800; }
body { font-size: 11pt; background-color: #AADDFF; }
.tiddler { border: 1px solid; margin: 0pt 0px 0px; }
/***
This fixes a problem with the tabs slider
***/
/*{{{*/
#sidebarTabs .button {
margin:0em 0.2em;
padding:0.2em 0.3em;
display:block;
}
/*}}}*/
/***
custom Table of Contents design
***/
.dcTOC ul {
color: black;
list-style-type: lower-alpha;
}
.dcTOC ul ul {
color: black;
list-style-type: lower-roman;
}
.dcTOC ul ul ul {
color: black;
list-style-type: decimal;
}
.dcTOC ul ul ul ul {
color: black;
list-style-type: lower-alpha;
}
.dcTOC a {
color: blue;
border: none;
}
.dcTOC a:hover {
background: white;
border: solid 1px;
}
.dcTOCTop {
font-size: 1.5em;
color: blue;
}
/*{{{*/
/***** LAYOUT STYLES - DO NOT EDIT! *****/
ul.suckerfish, ul.suckerfish ul {
margin: 0;
padding: 0;
list-style: none;
line-height:1.4em;
}
ul.suckerfish li {
display: inline-block;
display: block;
float: left;
}
ul.suckerfish li ul {
position: absolute;
left: -999em;
}
ul.suckerfish li:hover ul, ul.suckerfish li.sfhover ul {
left: auto;
}
ul.suckerfish ul li {
float: none;
border-right: 0;
border-left:0;
}
ul.suckerfish a, ul.suckerfish a:hover {
display: block;
}
ul.suckerfish li a.tiddlyLink, ul.suckerfish li a, #mainMenu ul.suckerfish li a {font-weight:bold;}
/**** END LAYOUT STYLES *****/
/**** COLORS AND APPEARANCE - DEFAULT *****/
ul.suckerfish li a {
padding: 0.5em 1.5em;
color: #FFF;
background: #0066aa;
border-bottom: 0;
font-weight:bold;
}
ul.suckerfish li:hover a, ul.suckerfish li.sfhover a{
background: #00558F;
}
ul.suckerfish li:hover ul a, ul.suckerfish li.sfhover ul a{
color: #000;
background: #eff3fa;
border-top:1px solid #FFF;
}
ul.suckerfish ul li a:hover {
background: #e0e8f5;
}
ul.suckerfish li a{
width:9em;
}
ul.suckerfish ul li a, ul.suckerfish ul li a:hover{
display:inline-block;
width:9em;
}
ul.suckerfish li {
border-left: 1px solid #00558F;
}
/***** END COLORS AND APPEARANCE - DEFAULT *****/
/***** LAYOUT AND APPEARANCE: VERTICAL *****/
ul.suckerfish.vertical li{
width:10em;
border-left: 0px solid #00558f;
}
ul.suckerfish.vertical ul li, ul.suckerfish.vertical li a, ul.suckerfish.vertical li:hover a, ul.suckerfish.vertical li.sfhover a {
border-left: 0.8em solid #00558f;
}
ul.suckerfish.vertical li a, ul.suckerfish.vertical li:hover a, ul.suckerfish.vertical li.sfhover a, ul.suckerfish.vertical li.sfhover a:hover{
width:8em;
}
ul.suckerfish.vertical {
width:10em; text-align:left;
float:left;
}
ul.suckerfish.vertical li a {
padding: 0.5em 1em 0.5em 1em;
border-top:1px solid #fff;
}
ul.suckerfish.vertical, ul.suckerfish.vertical ul {
line-height:1.4em;
}
ul.suckerfish.vertical li:hover ul, ul.suckerfish.vertical li.sfhover ul {
margin: -2.4em 0 0 10.9em;
}
ul.suckerfish.vertical li:hover ul li a, ul.suckerfish.vertical li.sfhover ul li a {
border: 0px solid #FFF;
}
ul.suckerfish.vertical li:hover a, ul.suckerfish.vertical li.sfhover a{
padding-right:1.1em;
}
ul.suckerfish.vertical li:hover ul li, ul.suckerfish.vertical li.sfhover ul li {
border-bottom:1px solid #fff;
}
/***** END LAYOUT AND APPEARANCE: VERTICAL *****/
/*}}}*/
(''//Internet Explorer//'' users: the Table of Contents will not function as links. Please read [[Author's Note]].)
<<showtoc>>
#[[Introduction]]<<showtoc "Introduction">>
#[[Table of Contents]]
#[[Definitions]]<<showtoc "Definitions">>
#[[Drying Oils]]<<showtoc "Drying Oils">>
#[[Grounds]]<<showtoc "Grounds">>
#[[Drawing on Canvas]]<<showtoc "Drawing on Canvas">>
#[[Colored Grounds]]<<showtoc "Colored Grounds">>
#[[Oiling Out]]<<showtoc "Oiling Out">>
#[[Other Mediums]]<<showtoc "Other Mediums">>
#[[Softening Stiff Paint]]<<showtoc "Softening Stiff Paint">>
#[[Varnishing]]<<showtoc "Varnishing">>
#[[Reconstituting]]<<showtoc "Reconstituting">>
#[[Cleaning]]<<showtoc "Cleaning">>
#[[Heavy Metals Safety]]<<showtoc "Heavy Metals Safety">>
#[["Green Painting"]]
#[[Alkyds]]<<showtoc "Alkyds">>
#[[Perspectives]]<<showtoc "Perspectives">>
#[[Materials]]<<showtoc "Materials">>
#[[References]]<<showtoc "References">>
#[[Acknowledgments]]<<showtoc "Acknowledgments">>
#[[Dedication]]<<showtoc "Dedication">>
<<tiddler HideTiddlerTags>>
/***
|''Name:''|TableSortingPlugin|
|''Description:''|Dynamically sort tables by clicking on column headers|
|''Author:''|Saq Imtiaz ( lewcid@gmail.com )|
|''Source:''|http://tw.lewcid.org/#TableSortingPlugin|
|''Code Repository:''|http://tw.lewcid.org/svn/plugins|
|''Version:''|2.02|
|''Date:''|25-01-2008|
|''License:''|[[Creative Commons Attribution-ShareAlike 3.0 License|http://creativecommons.org/licenses/by-sa/3.0/]]|
|''~CoreVersion:''|2.2.3|
!!Usage:
* Make sure your table has a header row
** {{{|Name|Phone Number|Address|h}}}<br> Note the /h/ that denote a header row
* Give the table a class of 'sortable'
** {{{
|sortable|k
|Name|Phone Number|Address|h
}}}<br>Note the /k/ that denotes a class name being assigned to the table.
* To disallow sorting by a column, place {{{<<nosort>>}}} in it's header
* To automatically sort a table by a column, place {{{<<autosort>>}}} in the header for that column
** Or to sort automatically but in reverse order, use {{{<<autosort reverse>>}}}
!!Example:
|sortable|k
|Name |Salary |Extension |Performance |File Size |Start date |h
|ZBloggs, Fred |$12000.00 |1353 |+1.2 |74.2Kb |Aug 19, 2003 21:34:00 |
|ABloggs, Fred |$12000.00 |1353 |1.2 |3350b |09/18/2003 |
|CBloggs, Fred |$12000 |1353 |1.200 |55.2Kb |August 18, 2003 |
|DBloggs, Fred |$12000.00 |1353 |1.2 |2100b |07/18/2003 |
|Bloggs, Fred |$12000.00 |1353 |01.20 |6.156Mb |08/17/2003 05:43 |
|Turvey, Kevin |$191200.00 |2342 |-33 |1b |02/05/1979 |
|Mbogo, Arnold |$32010.12 |2755 |-21.673 |1.2Gb |09/08/1998 |
|Shakespeare, Bill |£122000.00|3211 |6 |33.22Gb |12/11/1961 |
|Shakespeare, Hamlet |£9000 |9005 |-8 |3Gb |01/01/2002 |
|Fitz, Marvin |€3300.30 |5554 |+5 |4Kb |05/22/1995 |
***/
// /%
//!BEGIN-PLUGIN-CODE
config.tableSorting = {
darrow: "\u2193",
uarrow: "\u2191",
getText : function (o) {
var p = o.cells[SORT_INDEX];
return p.innerText || p.textContent || '';
},
sortTable : function (o,rev) {
SORT_INDEX = o.getAttribute("index");
var c = config.tableSorting;
var T = findRelated(o.parentNode,"TABLE");
if(T.tBodies[0].rows.length<=1)
return;
var itm = "";
var i = 0;
while (itm == "" && i < T.tBodies[0].rows.length) {
itm = c.getText(T.tBodies[0].rows[i]).trim();
i++;
}
if (itm == "")
return;
var r = [];
var S = o.getElementsByTagName("span")[0];
c.fn = c.sortAlpha;
if(!isNaN(Date.parse(itm)))
c.fn = c.sortDate;
else if(itm.match(/^[$|£|€|\+|\-]{0,1}\d*\.{0,1}\d+$/))
c.fn = c.sortNumber;
else if(itm.match(/^\d*\.{0,1}\d+[K|M|G]{0,1}b$/))
c.fn = c.sortFile;
for(i=0; i<T.tBodies[0].rows.length; i++) {
r[i]=T.tBodies[0].rows[i];
}
r.sort(c.reSort);
if(S.firstChild.nodeValue==c.darrow || rev) {
r.reverse();
S.firstChild.nodeValue=c.uarrow;
}
else
S.firstChild.nodeValue=c.darrow;
var thead = T.getElementsByTagName('thead')[0];
var headers = thead.rows[thead.rows.length-1].cells;
for(var k=0; k<headers.length; k++) {
if(!hasClass(headers[k],"nosort"))
addClass(headers[k].getElementsByTagName("span")[0],"hidden");
}
removeClass(S,"hidden");
for(i=0; i<r.length; i++) {
T.tBodies[0].appendChild(r[i]);
c.stripe(r[i],i);
for(var j=0; j<r[i].cells.length;j++){
removeClass(r[i].cells[j],"sortedCol");
}
addClass(r[i].cells[SORT_INDEX],"sortedCol");
}
},
stripe : function (e,i){
var cl = ["oddRow","evenRow"];
i&1? cl.reverse() : cl;
removeClass(e,cl[1]);
addClass(e,cl[0]);
},
sortNumber : function(v) {
var x = parseFloat(this.getText(v).replace(/[^0-9.-]/g,''));
return isNaN(x)? 0: x;
},
sortDate : function(v) {
return Date.parse(this.getText(v));
},
sortAlpha : function(v) {
return this.getText(v).toLowerCase();
},
sortFile : function(v) {
var j, q = config.messages.sizeTemplates, s = this.getText(v);
for (var i=0; i<q.length; i++) {
if ((j = s.toLowerCase().indexOf(q[i].template.replace("%0\u00a0","").toLowerCase())) != -1)
return q[i].unit * s.substr(0,j);
}
return parseFloat(s);
},
reSort : function(a,b){
var c = config.tableSorting;
var aa = c.fn(a);
var bb = c.fn(b);
return ((aa==bb)? 0 : ((aa<bb)? -1:1));
}
};
Story.prototype.tSort_refreshTiddler = Story.prototype.refreshTiddler;
Story.prototype.refreshTiddler = function(title,template,force,customFields,defaultText){
var elem = this.tSort_refreshTiddler.apply(this,arguments);
if(elem){
var tables = elem.getElementsByTagName("TABLE");
var c = config.tableSorting;
for(var i=0; i<tables.length; i++){
if(hasClass(tables[i],"sortable")){
var x = null, rev, table = tables[i], thead = table.getElementsByTagName('thead')[0], headers = thead.rows[thead.rows.length-1].cells;
for (var j=0; j<headers.length; j++){
var h = headers[j];
if (hasClass(h,"nosort"))
continue;
h.setAttribute("index",j);
h.onclick = function(){c.sortTable(this); return false;};
h.ondblclick = stopEvent;
if(h.getElementsByTagName("span").length == 0)
createTiddlyElement(h,"span",null,"hidden",c.uarrow);
if(!x && hasClass(h,"autosort")) {
x = j;
rev = hasClass(h,"reverse");
}
}
if(x)
c.sortTable(headers[x],rev);
}
}
}
return elem;
};
setStylesheet("table.sortable span.hidden {visibility:hidden;}\n"+
"table.sortable thead {cursor:pointer;}\n"+
"table.sortable .nosort {cursor:default;}\n"+
"table.sortable td.sortedCol {background:#ffc;}","TableSortingPluginStyles");
function stopEvent(e){
var ev = e? e : window.event;
ev.cancelBubble = true;
if (ev.stopPropagation) ev.stopPropagation();
return false;
}
config.macros.nosort={
handler : function(place){
addClass(place,"nosort");
}
};
config.macros.autosort={
handler : function(place,m,p,w,pS){
addClass(place,"autosort"+" "+pS);
}
};
//!END-PLUGIN-CODE
// %/
((banana(the best fruit in the world)))
((banana(^ the best fruit in the world)))
<<tiddler HideTiddlerTags>>
/***
|Name|TiddlerIconsPlugin|
|Source|http://www.TiddlyTools.com/#TiddlerIconsPlugin|
|Version|2.1.0|
|Author|Eric Shulman|
|License|http://www.TiddlyTools.com/#LegalStatements|
|~CoreVersion|2.1|
|Type|plugin|
|Description|display icons next to tiddler title, based on tiddler's attributes (tags, fields, slices, etc)|
!!!!!Usage
<<<
{{{<<tiddlerIcons>>}}} - shows icons for the current tiddler
or
{{{<<tiddlerIcons =TiddlerName>>}}} - shows icons for the specified tiddler
or
{{{<<tiddlerIcons iconID>>}}} - shows a specific icon
<<<
!!!!!Examples
<<<
{{{
icons for current tiddler: <<tiddlerIcons>>
}}}
icons for current tiddler: <<tiddlerIcons>>
{{{
icons for [[Welcome]] tiddler: <<tiddlerIcons =Welcome>>
}}}
icons for [[Welcome]] tiddler: <<tiddlerIcons =Welcome>>
{{{
All icons:
<<tiddlerIcons recent>> <<tiddlerIcons changed>> <<tiddlerIcons unsaved>> <<tiddlerIcons Trash>>
<<tiddlerIcons tag>> <<tiddlerIcons core>> <<tiddlerIcons systemConfig>> <<tiddlerIcons CSS>>
<<tiddlerIcons html>> <<tiddlerIcons template>> <<tiddlerIcons script>> <<tiddlerIcons attachment>>
<<tiddlerIcons settings>> <<tiddlerIcons pluginInfo>> <<tiddlerIcons faq>> <<tiddlerIcons task>>
}}}
All icons:
<<tiddlerIcons recent>> <<tiddlerIcons changed>> <<tiddlerIcons unsaved>> <<tiddlerIcons Trash>> <<tiddlerIcons tag>> <<tiddlerIcons core>> <<tiddlerIcons systemConfig>> <<tiddlerIcons CSS>> <<tiddlerIcons html>> <<tiddlerIcons template>> <<tiddlerIcons script>> <<tiddlerIcons attachment>> <<tiddlerIcons settings>> <<tiddlerIcons pluginInfo>> <<tiddlerIcons faq>> <<tiddlerIcons task>>
<<<
!!!!!Configuration
<<<
You can add extra icons definitions based on matching tag values. First, import or create a tiddler called [[TiddlerIconsPluginConfig]] and tag it with<<tag systemConfig>>. Then, in that tiddler, use the following code format to //merge// your additional icon definitions into the default {{{config.macros.tiddlerIcons.map}}} object.
{{{
merge(config.macros.tiddlerIcons.map,{
tagvalue: ["tooltip","imagefile"],
tagvalue: ["tooltip","imagefile"],
...
tagvalue: ["tooltip","imagefile"] // note: no comma after last definition
}
}}}
<<<
!!!!!Revisions
<<<
2008.10.02 [2.1.0] added "=TiddlerName" param (shows icons for specified tiddler)
2007.08.01 [2.0.0] converted from inline script
2007.05.28 [1.0.0] initial release (as inline script)
<<<
!!!!!Code
***/
//{{{
version.extensions.TiddlerIconsPlugin= {major: 2, minor: 1, revision: 0, date: new Date(2008,10,2)};
config.macros.tiddlerIcons = {
unknown: "unknown tiddler icon: %0",
map: {
recent: ["this tiddler was UPDATED within the last 10 days","asterisk_yellow.png"],
changed: ["this tiddler was UPDATED after your last visit","star.png"],
unsaved: ["this tiddler has UNSAVED CHANGES","exclamation.png"],
tag: ["this is a TAG tiddler","tag_blue.png"],
html: ["this is an HTML MARKUP tiddler","html.png"]
},
handler: function(place,macroName,params,wikifier,paramString,tiddler) {
var img="[img[%0|%1]]";
var imgs=[]; // collected set of applicable images
var p=params[0]; // abbrev
// if icon keyword was supplied, just show one icon and exit.
if (p&&p.substr(0,1)!="=") {
wikify(this.map[p]?img.format(this.map[p]):this.unknown.format([p]),place);
return;
}
// if TiddlerName was supplied, use that tiddler, otherwise use current tiddler
var here=story.findContainingTiddler(place);
if (!p && !here) return; // not in a tiddler
var title=p?p.substr(1):here.getAttribute('tiddler');
var tid=store.getTiddler(title); if (!tid) return; // tiddler not found
// add 'tag' icon if this tiddler IS a tag
var tags=store.getTags();
for (i=0;i<tags.length;i++) if (tags[i][0]==title) imgs.push(img.format(this.map["tag"]));
if (!tid) { wikify(imgs.join(""),place); return; }
// add 'unsaved', 'changed', or 'recent' icon based on tiddler vs. document date
// (uses config.options.lastSaved, updated by [[UnsavedChangesPlugin]])
if (tid.modified > (config.options.lastSaved?config.options.lastSaved:document.lastModified))
imgs.push(img.format(this.map["unsaved"]));
else {
// add 'changed' icon if tiddler has been modified since last visit
// (uses config.lastVisit, updated by [[VisitCounterPlugin]])
// truncate seconds from last visit timestamp for comparison with tiddler modification timestamp
if (config.lastVisit)
var last=new Date((new Date(config.lastVisit).getTime())-(new Date(config.lastVisit).getSeconds()*1000));
if (tid.modified >= last)
imgs.push(img.format(this.map["changed"]));
else if (tid.modified >= (new Date()).getTime()-86400000*10)
imgs.push(img.format(this.map["recent"])); // add 'recent' icon if tiddler has been modified in last 10 days
}
if (title.substr(0,6)=="Markup")
imgs.push(img.format(this.map["html"]));
// add 'type' icons based on tag(s)... see TiddlerIconsPluginConfig for icon map definitions
// sort tags for consistent icon display order
var tags=[]; for (i=0;i<tid.tags.length;i++) tags.push(tid.tags[i]); tags.sort();
for (var t=0; t<tags.length; t++)
if (this.map[tags[t]]) imgs.push(img.format(this.map[tags[t]]));
wikify(imgs.join(""),place);
}
};
//}}}
/***
|Name|TiddlerToCPlugin|
|Source|[[FND's DevPad|http://devpad.tiddlyspot.com/#TiddlerToCPlugin]]|
|Version|0.7|
|Author|FND|
|Contributors|[[Saq|http://tw.lewcid.org]]|
|License|[[Creative Commons Attribution-ShareAlike 2.5 License|http://creativecommons.org/licenses/by-sa/2.5/]]|
|~CoreVersion|2.1|
|Type|plugin|
|Requires|N/A|
|Overrides|N/A|
|Description|create a table of contents from a tiddler's headings|
!Notes
Doug Compton has written a similar, though much more advanced plugin for this purpose, called [[DcTableOfContentsPlugin|http://devpad.tiddlyspot.com/#DcTableOfContentsPlugin]].
!Usage
Add {{{<<ToC>>}}} to the desired tiddler(s). Alternatively, a parameter can be used to display the table of contents for another tiddler: {{{<<ToC "tiddlerName">>}}}.
The styling can be modified in the [[StyleSheetTableOfContents]] shadow tiddler.
<<ToC>>
!Changelog
!!v0.5a (2007-05-20)
* initial release
!!v0.5b (2007-05-20)
* renamed to TiddlerToCPlugin (to prevent confusion with the existing [[TableOfContentsPlugin|http://tiddlytools.com/#TableOfContentsPlugin]])
!!v0.6 (2007-05-21)
* several bugfixes and significant improvements regarding the macro code (thanks Saq)
!!v0.7 (2007-08-29)
* fixed error for tiddlers not containing any headings
!Issues / To Do
* add links to sections (problematic, as there are no anchors, yet?)
* introduce thresholds (minimum amount of headings to show a ToC, maximum depth)
!Code
***/
//{{{
/*
** Styles (can be customized in the StyleSheetTableOfContents shadow tiddler)
*/
config.shadowTiddlers.StyleSheetTableOfContents = "/*{{{*/\n"
+ ".ToC {\n\tfloat: left; /* auto-width */\n\tmargin: 0 2em 2em 0;\n\tborder: 1px solid #aaa;\n\tpadding: 5px;\n\tbackground-color: #eee;\n}\n\n"
+ ".ToC ol {\n\tmargin: 0 1em;\n}\n\n"
+ "h1 {\n\tclear: left;\n}\n"
+ "/*}}}*/";
store.addNotification("StyleSheetTableOfContents", refreshStyles);
/*
** Macro Code
*/
config.macros.ToC = { label: "Add Table of Contents", prompt: "Add Table of Contents" }; // DEBUG: obsolete?
config.macros.ToC.handler =
function(place, macroName, params, wikifier, paramString, tiddler) {
// process parameters
if (params[0]) { // tiddler name
tiddler = store.getTiddler(params[0]);
}
// create table of contents
generateToC(place, tiddler);
return false; // DEBUG: ?
}
/*
** Main Code
*/
generateToC = function(place, tiddler) {
// retrieve headings
var RegEx = /^!+(.*)$/gim;
var tiddlerContents = tiddler.text.match(RegEx);
// create ToC
if(tiddlerContents) {
var ToC = "";
for(var i = 0; i < tiddlerContents.length; i++) {
ToC += tiddlerContents[i] + "\n";
}
// replace headings markup with list markup
for(var i = 0; i < 6; i++) { // DEBUG: inefficient!? (use a single RegEx instead? problem: JavaScript RegEx limitations)
ToC = ToC.replace(/^(#*)!/gim, "$1#");
}
// add ToC wrapper container
ToC = "{{ToC{\n''Table of Contents''\n" + ToC + "}}}\n";
// add ToC to tiddler
wikify(ToC, place);
}
return false;
}
//}}}
~TiddlyWiki is a complete wiki in a single HTML file. It contains the entire text of the wiki, and all the ~JavaScript, CSS and HTML goodness to be able to display it, and let you edit it or search it - without needing a server. Although, having said that, there are some fine Server Side adaptations out there.
~TiddlyWiki is published under an OpenSourceLicense and maintained by a busy Community of independent developers.
/%
!info
|Name|ToggleRightSidebar|
|Source|http://www.TiddlyTools.com/#ToggleRightSidebar|
|Version|2.0.0|
|Author|Eric Shulman|
|License|http://www.TiddlyTools.com/#LegalStatements|
|~CoreVersion|2.1|
|Type|transclusion|
|Description|show/hide right sidebar (SideBarOptions)|
Usage
<<<
{{{
<<tiddler ToggleRightSidebar>>
<<tiddler ToggleRightSidebar with: label tooltip>>
}}}
Try it: <<tiddler ToggleRightSidebar##show
with: {{config.options.chkShowRightSidebar?'►':'◄'}}>>
<<<
Configuration:
<<<
{{{
config.options.chkShowRightSidebar (true)
config.options.txtToggleRightSideBarLabelShow (◄)
config.options.txtToggleRightSideBarLabelHide (►)
}}}
<<<
!end
!show
<<tiddler {{
var co=config.options;
if (co.chkShowRightSidebar===undefined) co.chkShowRightSidebar=true;
var sb=document.getElementById('sidebar');
var da=document.getElementById('displayArea');
if (sb) {
sb.style.display=co.chkShowRightSidebar?'block':'none';
da.style.marginRight=co.chkShowRightSidebar?'':'1em';
}
'';}}>><html><nowiki><a href='javascript:;' title="$2"
onmouseover="
this.href='javascript:void(eval(decodeURIComponent(%22(function(){try{('
+encodeURIComponent(encodeURIComponent(this.onclick))
+')()}catch(e){alert(e.description?e.description:e.toString())}})()%22)))';"
onclick="
var co=config.options;
var opt='chkShowRightSidebar';
var show=co[opt]=!co[opt];
var sb=document.getElementById('sidebar');
var da=document.getElementById('displayArea');
if (sb) {
sb.style.display=show?'block':'none';
da.style.marginRight=show?'':'1em';
}
saveOptionCookie(opt);
var labelShow=co.txtToggleRightSideBarLabelShow||'◄';
var labelHide=co.txtToggleRightSideBarLabelHide||'►';
if (this.innerHTML==labelShow||this.innerHTML==labelHide)
this.innerHTML=show?labelHide:labelShow;
this.title=(show?'hide':'show')+' right sidebar';
var sm=document.getElementById('storyMenu');
if (sm) config.refreshers.content(sm);
return false;
">$1</a></html>
!end
%/<<tiddler {{
var src='ToggleRightSidebar';
src+(tiddler&&tiddler.title==src?'##info':'##show');
}} with: {{
var co=config.options;
var labelShow=co.txtToggleRightSideBarLabelShow||'◄';
var labelHide=co.txtToggleRightSideBarLabelHide||'►';
'$1'!='$'+'1'?'$1':(co.chkShowRightSidebar?labelHide:labelShow);
}} {{
var tip=(config.options.chkShowRightSidebar?'hide':'show')+' right sidebar';
'$2'!='$'+'2'?'$2':tip;
}}>>
Regular picture varnish contains thinners. Amber varnish does not (see [[Other Mediums: Alchemist’s Amber Varnish, Dark and Clear|Other Mediums##Alchemist’s Amber Varnish, Dark and Clear]]). One option for varnishing is to coat with amber varnish.
<<tiddler HideTiddlerTags>>
<!--{{{-->
<div class='toolbar' macro="showWhen config.options.txtUserName == 'rumara' ">
<span macro='toolbar editTiddler closeTiddler'></span>
</div>
<div class='toolbar' macro="showWhen config.options.txtUserName != 'rumara' ">
<span macro='toolbar'></span>
</div>
<div class='title' macro='view title'></div>
<div class='tagging' macro='tagging'></div>
<div class='tagged' macro='tags'></div>
<div class='viewer' macro='view text wikified'></div>
<div class='tagClear'></div>
<!--}}}-->
if(config.options.txtUserName != "rumara") {
config.options.chkShowRightSidebar=false;
readOnly = true;
showBackstage = false;
}