diff --git a/kidiff_wc.sh b/kidiff_wc.sh index 9232ee7..1305fd0 100755 --- a/kidiff_wc.sh +++ b/kidiff_wc.sh @@ -9,10 +9,16 @@ # TODO Improve diff text parser. Currently difficult to diff as modules have multiple # entries on different layers - need to identify graphic change with # TODO Consider removing filename from display format i.e 'filename-F_Cu' becomes 'F_Cu' id:13 -# TODO Add command line quality option - Quality is dpi. 100 is fast but low quality id:4 +# Add command line quality option - Quality is dpi. 100 is fast but low quality id:4 # 600 is very detailed. 300 is a good compromise. +# TODO Consider alternatve generation orders +# 1. svg > png > compare > crop to comparison image > crop source images to match +# 2. svg > recolour +# 2) SVG 'swap'colours would be simplest but although you can colorise the black +#easily, swaping the white for black seems to be problematic - not sure why +#prob something to do with evenodd -qual="300" +qual="100" # TODO Command line options for selecting which plots id:8 @@ -38,7 +44,7 @@ mkdir $OUTPUT_DIR WEB_DIR="web" mkdir $OUTPUT_DIR/$WEB_DIR cp ~/Kicad/KiCad-Diff/style.css $OUTPUT_DIR/$WEB_DIR/ - +# TODO cat >> $OUTPUT_DIR/$WEB_DIR/style.css <<_EOF_ // _EOF_ # TODO Might need to use a more complex strategy to cope with spaces in filename id:17 # using some varient of 'find . -name "*.pro" -print0 | xargs -0' @@ -64,7 +70,7 @@ Margin="#D357D2" In1_Cu="#C2C200" In2_Cu="#C200C2" Dwgs_User="#0364D3" -Cmts_User="#000085" +Cmts_User="#7AC0F4" Eco1_User="#008500" Eco2_User="#C2C200" B_Fab="#858585" @@ -75,6 +81,12 @@ B_CrtYd="#D3D04B" F_CrtYd="#A7A7A7" +# Do something like this +#layertable = {} +#numlayers = pcbnew.PCB_LAYER_ID_COUNT +#for i in range(numlayers): +# layertable[board.GetLayerName(i)] = i + # These are the colour definitions for the 'solarised' theme from pcbnew. #ColorPCBLayer_F.Cu=rgb(221, 47, 44) #ColorPCBLayer_In3.Cu=rgba(194, 194, 194, 0.800) @@ -203,7 +215,7 @@ done for f in $OUTPUT_DIR/$DIFF_2/*.kicad_pcb; do mkdir -p /tmp/svg/$DIFF_2 - echo "Converting $f to .svg's Files will be saved to /tmp/svg" + echo "Converting $f to .svg: Files will be saved to /tmp/svg" /usr/local/bin/plot_pcbnew.py "$f" "/tmp/svg/$DIFF_2" done @@ -217,12 +229,18 @@ done # a generated svg, pixels should be white.) # # The .png files are created in the output directory. - +# +# BUG The crop size can alter if an item is added or removed on the periphery +# should check that both images are the same size. Provided nothing changes +# around the edges this retains focus and detail on the board. +# Alternativly, would need to scan both images and determine the x+y difference and pad. +# may need to pad both top and bottom - for p in /tmp/svg/$DIFF_1/*.svg; do d=$(basename $p) echo "Converting $p to .png" convert -density $qual -fuzz 1% -trim +repage "$p" "$OUTPUT_DIR/$DIFF_1/${d%%.*}.png" + # convert -density $qual "$p" "$OUTPUT_DIR/$DIFF_1/${d%%.*}.png" convert "$OUTPUT_DIR/$DIFF_1/${d%%.*}.png" -negate "$OUTPUT_DIR/$DIFF_1/${d%%.*}.png" done @@ -230,10 +248,28 @@ for p in /tmp/svg/$DIFF_2/*.svg; do d=$(basename $p) echo "Converting $p to .png" convert -density $qual -fuzz 1% -trim +repage "$p" "$OUTPUT_DIR/$DIFF_2/${d%%.*}.png" + # convert -density $qual "$p" "$OUTPUT_DIR/$DIFF_2/${d%%.*}.png" convert "$OUTPUT_DIR/$DIFF_2/${d%%.*}.png" -negate "$OUTPUT_DIR/$DIFF_2/${d%%.*}.png" done +#for p in $OUTPUT_DIR/$DIFF_1/*.png; do +# d=$(basename $p) +# img1w=$(identify -ping -format '%w' "$p") +# img1h=$(identify -ping -format '%h' "$p") +# img2w=$(identify -ping -format '%w' "$OUTPUT_DIR/$DIFF_2/$d") +# img2h=$(identify -ping -format '%h' "$OUTPUT_DIR/$DIFF_2/$d") + + +#if [ "$img1w" == "$img2w" ] && [ "$img1h" == "$img2h" ] +#then echo "$d - MATCH" +#else +# echo "$d size $img1w x $img1h _" +# echo "$OUTPUT_DIR/$DIFF_2/$d size $img2w x $img2h" +#fi +#done + + # Generate png diffs between DIFF_1 and DIFF_2 ############################################## # @@ -305,15 +341,16 @@ DIFF_1_TIME=$(fossil info $DIFF_1 | grep uuid: | awk -F' ' '{ print $4 }') DIFF_2_DATE=$(fossil info $DIFF_2 | grep uuid: | awk -F' ' '{ print $3 }') DIFF_2_TIME=$(fossil info $DIFF_2 | grep uuid: | awk -F' ' '{ print $4 }') +TITLE=$(cat $OUTPUT_DIR/$DIFF_1/*.kicad_pcb | grep title | sed 's/(title_block//g' | sed 's/title//g') +DATE=$(cat $OUTPUT_DIR/$DIFF_1/*.kicad_pcb | grep date | sed 's/(date //g' | sed 's/)//g') +COMPANY=$(cat $OUTPUT_DIR/$DIFF_1/*.kicad_pcb | grep company | sed 's/(company "//g' | sed 's/")//g') + THICK1=$(cat $OUTPUT_DIR/$DIFF_1/*.kicad_pcb | head -n 10 | grep thickness | sed 's/(thickness //g' | sed 's/)//g') DRAWINGS1=$(cat $OUTPUT_DIR/$DIFF_1/*.kicad_pcb | head -n 10 | grep drawings | sed 's/(drawings //g' | sed 's/)//g') TRACKS1=$(cat $OUTPUT_DIR/$DIFF_1/*.kicad_pcb | head -n 10 | grep tracks | sed 's/(tracks //g' | sed 's/)//g') ZONES1=$(cat $OUTPUT_DIR/$DIFF_1/*.kicad_pcb | head -n 10 | grep zones | sed 's/(zones //g' | sed 's/)//g') MODULES1=$(cat $OUTPUT_DIR/$DIFF_1/*.kicad_pcb | head -n 10 | grep modules | sed 's/(modules //g' | sed 's/)//g') NETS1=$(cat $OUTPUT_DIR/$DIFF_1/*.kicad_pcb | head -n 10 | grep nets | sed 's/(nets //g' | sed 's/)//g') -TITLE1=$(cat $OUTPUT_DIR/$DIFF_1/*.kicad_pcb | grep title | sed 's/(title_block (title "//g' | sed 's/")//g') -DATE1=$(cat $OUTPUT_DIR/$DIFF_1/*.kicad_pcb | grep date | sed 's/(date //g' | sed 's/)//g') -COMPANY1=$(cat $OUTPUT_DIR/$DIFF_1/*.kicad_pcb | grep company | sed 's/(company "//g' | sed 's/")//g') THICK2=$(cat $OUTPUT_DIR/$DIFF_2/*.kicad_pcb | head -n 10 | grep thickness | sed 's/(thickness //g' | sed 's/)//g') DRAWINGS2=$(cat $OUTPUT_DIR/$DIFF_2/*.kicad_pcb | head -n 10 | grep drawings | sed 's/(drawings //g' | sed 's/)//g') @@ -321,9 +358,6 @@ TRACKS2=$(cat $OUTPUT_DIR/$DIFF_2/*.kicad_pcb | head -n 10 | grep tracks | sed ' ZONES2=$(cat $OUTPUT_DIR/$DIFF_2/*.kicad_pcb | head -n 10 | grep zones | sed 's/(zones //g' | sed 's/)//g') MODULES2=$(cat $OUTPUT_DIR/$DIFF_2/*.kicad_pcb | head -n 10 | grep modules | sed 's/(modules //g' | sed 's/)//g') NETS2=$(cat $OUTPUT_DIR/$DIFF_2/*.kicad_pcb | head -n 10 | grep nets | sed 's/(nets //g' | sed 's/)//g') -TITLE2=$(cat $OUTPUT_DIR/$DIFF_2/*.kicad_pcb | grep title | sed 's/(title_block (title "//g' | sed 's/")//g') -DATE2=$(cat $OUTPUT_DIR/$DIFF_2/*.kicad_pcb | grep date | sed 's/(date //g' | sed 's/)//g') -COMPANY2=$(cat $OUTPUT_DIR/$DIFF_2/*.kicad_pcb | grep company | sed 's/(company "//g' | sed 's/")//g') #sed 's/(/
Version +
+ | + + + |
Last updated 5 December 1999
+[Minor corrections 19 September 2004]
+ |
|
+The TITLE is not part of the document text. +Often the title is used by a browser to label the display window. +Some Web search engines only search the title of Web pages. +Therefore the text of the TITLE should be kept short but +sufficient to identify the document. +
+The BASE element provides the absolute URL base to be used for any +relative URL links in this document. +It must be a complete file name, and is usually the original URL of this document. +If this file is moved, having the BASE set to the original URL eliminates +the need to also move all the documents which are identified by relative +URL links in this document. +
+Netscape 2.0 defines the TARGET attribute to define a default named target window for +every link in a document that does not have an explicit TARGET attribute. +
+The META element is used within the HEAD element to embed document meta-information +not defined by other HTML elements. +Such information may be extracted by servers/browsers. +The HTTP-EQUIV attribute binds the element to an HTTP response header. +If not present, the NAME attribute should be used to identify this +meta-information and it should not be used within an HTTP response header. +If the NAME attribute is not present, the name can be assumed equal to the +value of HTTP-EQUIV. +The CONTENT attribute defines the meta-information +content to be associated with the given name and/or HTTP response header. +
+The URL attribute is a Netscape extension. +Netscape 1.1 has added a automatic refresh capability using the META +element by setting the HTTP-EQUIV attribute to "REFRESH", +the CONTENT attribute to a number of seconds, and +the URL attribute to the file to load which defaults to reloading the same file. +Netscape 1.1 also recognizes placing the URL inside the quotes which define the +CONTENT value by using a semicolon following the number of seconds, +then the URL=http://... text. For example: +
+
+Some Web search engines look for the following META elements: +
+
+You can avoid browser caching with one of the following: +
+
+See http://vancouver-webpages.com/META/ +for more details. +
+<!-- comment --> +
+Here comes one now (you should not see "This Is A Comment" below): + +
+Many browsers permit multi-line comments, coded as: +
+<!-- comment
+
...
+
comment -->
+
+Here comes one now (you should not see "This Is A Comment" below): + +
+
<H1>...</H1> | Normal Heading 1Normal |
<H2>...</H2> | Normal Heading 2Normal |
<H3>...</H3> | Normal Heading 3Normal |
<H4>...</H4> | Normal Heading 4Normal |
<H5>...</H5> | Normal Heading 5Normal |
<H6>...</H6> | Normal Heading 6Normal |
Font sizes range from 1 through 7. +The base font size is normally 3; specifying +n or -n adjusts from there.
+ +<FONT SIZE=1>...</FONT> <FONT SIZE="-2">...</FONT> | Normal Equals 1 Normal Normal Minus 2 Normal + |
<FONT SIZE=2>...</FONT> <FONT SIZE="-1">...</FONT> | Normal Equals 2 Normal Normal Minus 1 Normal + |
<FONT SIZE=3>...</FONT> <FONT SIZE="-0">...</FONT> <FONT SIZE="+0">...</FONT> | Normal Equals 3 Normal Normal Minus 0 Normal Normal Plus 0 Normal + |
<FONT SIZE=4>...</FONT> <FONT SIZE="+1">...</FONT> | Normal Equals 4 Normal Normal Plus 1 Normal + |
<FONT SIZE=5>...</FONT> <FONT SIZE="+2">...</FONT> | Normal Equals 5 Normal Normal Plus 2 Normal + |
<FONT SIZE=6>...</FONT> <FONT SIZE="+3">...</FONT> | Normal Equals 6 Normal Normal Plus 3 Normal + |
<FONT SIZE=7>...</FONT> <FONT SIZE="+4">...</FONT> | Normal Equals 7 Normal Normal Plus 4 Normal + |
+<BASEFONT SIZE="+2"> +
<B>...</B> | Normal Bold style + |
<I>...</I> | Normal Italic style + |
<U>...</U> | Normal Underlined style + |
<ABBREV>...</ABBREV> | Normal |
<ACRONYM>...</ACRONYM> | Normal Acronym style Normal + |
<ADDRESS>...</ADDRESS> | Normal Address style Normal + |
<AU>...</AU> | Normal |
<BIG>...</BIG> | Normal Big style Normal + |
<BLINK>...</BLINK> | Normal Normal + |
<CITE>...</CITE> | Normal Citation style Normal + |
<CODE>...</CODE> | Normal Code style Normal
+ |
<DEL>...</DEL> | Normal |
<DFN>...</DFN> | Normal Defining Instance style Normal + |
<EM>...</EM> | Normal Emphasis style Normal + |
<INS>...</INS> | Normal Inserted style Normal + |
<KBD>...</KBD> | Normal Keyboard style Normal + |
<LISTING>...</LISTING> | Normal |
<PERSON>...</PERSON> | Normal |
<PRE>...</PRE> | Normal Preformatted styleNormal + |
<Q>...</Q> | Normal Quotation styleNormal + |
<S>...</S> | Normal |
<SAMP>...</SAMP> | Normal Sample style Normal + |
<SMALL>...</SMALL> | Normal Small style Normal + |
<STRIKE>...</STRIKE> | Normal |
<STRONG>...</STRONG> | Normal Strong style Normal + |
<SUB>...</SUB> | Normal Subscripted style Normal + |
<SUP>...</SUP> | Normal Superscripted style Normal + |
<TT>...</TT> | Normal TeleType style Normal + |
<VAR>...</VAR> | Normal Variable style Normal + |
<XMP>...</XMP> | Normal |
Note: tags within an XMP block are not interpreted!
+ |
Unordered List + |
+<UL> +<LI>Item 1 +<LI>Item 2 +<LI>Item 3 +</UL> + + |
+
| ||||||
Unordered List (multi-level) + |
+<UL> +<LI>Level 1, Item 1 +<UL> +<LI>Level 2, Item 1 +<UL> +<LI>Level 3, Item 1 +<LI>Level 3, Item 2 +</UL> +<LI>Level 2, Item 2 +</UL> +</UL> + + |
+
| ||||||
Unordered List (with option) + | <UL PLAIN> ... </UL> |
+
| ||||||
Unordered List (with options) + | <UL PLAIN COMPACT> ... </UL> |
+
| ||||||
Unordered List (with options) + | <UL PLAIN WRAP=horiz> ... </UL> |
+
| ||||||
Unordered List (with List Heading) + |
+<UL> +<LH>Heading</LH> +<LI>Item 1 +<LI>Item 2 +</UL> + |
+
| ||||||
Unordered List (with bullet style option) + | <UL TYPE=circle> ... </UL> |
+
| ||||||
Unordered List (with bullet style option) + | <UL TYPE=square> ... </UL> |
+
| ||||||
Unordered List (with bullet style option) + | <UL TYPE=disc> ... </UL> |
+
| ||||||
Unordered List (with bullet style options) + |
+<UL> +<LI TYPE=circle>... +<LI TYPE=square>... +<LI TYPE=disc>... +</UL> + |
+
| ||||||
Unordered List (items without list) + |
+<LI>Item 1 +<LI>Item 2 +<LI>Item 3 + |
+Directory List | (like an unordered list) + Items should be less than 20 characters long +
+<DIR> | +<LI>Item 1 +<LI>Item 2 +<LI>Item 3 +</DIR> +
+ | Menu List | (like an unordered list) + Presents an interactive list (?) +
+<MENU> | +<LI>Item 1 +<LI>Item 2 +<LI>Item 3 +</MENU> +
+
+
+ | |
Ordered List + |
+<OL> +<LI>Item 1 +<LI>Item 2 +<LI>Item 3 +</OL> + + |
+
|
Ordered List (multi-level) + |
+<OL> +<LI>Level 1, Item 1 +<OL> +<LI>Level 2, Item 1 +<OL> +<LI>Level 3, Item 1 +<LI>Level 3, Item 2 +</OL> +<LI>Level 2, Item 2 +</OL> +</OL> + + |
+
|
Ordered List (with option) + | <OL TYPE="i"> ... </OL> |
+
|
Ordered List (with options) + | <OL TYPE="I" START=6> ... </OL> |
+
|
Ordered List (with option) + | <OL TYPE="a"> ... </OL> |
+
|
Ordered List (with option) + | <OL TYPE="A"> ... </OL> |
+
|
Definition List |
+<DL> +<DT>Term 1 +<DD>Defn 1 +<DT>Term 2 +<DD>Defn 2 +... +</DL> + |
+
|
Definition List (with option) |
+<DL COMPACT> +<DT>Term 1 +<DD>Defn 1 +<DT>Term 2 +<DD>Defn 2 +... +</DL> + |
+
|
Directory List (like an unordered list) + Items should be less than 20 characters long + |
+<DIR> +<LI>Item 1 +<LI>Item 2 +<LI>Item 3 +</DIR> + |
+ |
Menu List (like an unordered list) + Presents an interactive list (?) + |
+<MENU> +<LI>Item 1 +<LI>Item 2 +<LI>Item 3 +</MENU> + | + + + |
Paragraph | ... <P> ... |
+This is some text repeated a bunch of times.
+This is some text repeated a bunch of times.
+Note that a closing </P> is optional in most browsers, and is not used here.
+Here comes a <P> ...
+ +This is the beginning of another paragraph. +Note that <P> inserts a blank line. +This is some text repeated a bunch of times. +This is some text repeated a bunch of times. +This is some text repeated a bunch of times. + + |
Paragraph (with closing tag) | <P> ... </P> |
+Netscape adds a blank line after a paragraph which ends with a </P>.
+This is some text repeated a bunch of times.
+This is some text repeated a bunch of times.
+Here comes a </P> and then another <P> ...
+ +This is the beginning of another paragraph. +This is some text repeated a bunch of times. +This is some text repeated a bunch of times. +Here comes a </P>. + + |
Break | ... <BR> ... |
+This is some text repeated a bunch of times.
+This is some text repeated a bunch of times.
+Here comes a <BR> ...
+ +Note that <BR> does NOT insert a blank line. +This is some text repeated a bunch of times. +This is some text repeated a bunch of times. + + |
Normal + | ... | +This is some text repeated three times. +This is some text repeated three times. +This is some text repeated three times. + |
No Break + | <NOBR> ... </NOBR> |
+ |
+If necessary, reduce the width of your browser's window. +Notice that NOBR prevents the text from breaking (word-wrapping). +
+In the examples below, there are 52 letters (A through Z repeated twice). +In the first case, there are no spaces; in the second case, there is a +<WBR> word break between the first Z and second A. +
+ABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZ +
+ABCDEFGHIJKLMNOPQRSTUVWXYZ
+If the browser window is wide enough to display the entire word, it appears
+without any space or break.
+If the window is not wide enough, the <WBR> tag
+tells the browser where it may break the word.
+(You may have to reduce the
+width of your browser's window to see the difference.)
+
+This is particularly useful for citing very long URLs.
+
Paragraph (with alignment option) | <P ALIGN=left> ... |
+ +This is some text repeated a bunch of times. +This is some text repeated a bunch of times. +This is some text repeated a bunch of times. +This is some text repeated a bunch of times. +This is some text repeated a bunch of times. + + |
Paragraph (with alignment option) | <P ALIGN=right> ... |
+ +This is some text repeated a bunch of times. +This is some text repeated a bunch of times. +This is some text repeated a bunch of times. +This is some text repeated a bunch of times. +This is some text repeated a bunch of times. + + |
Paragraph (with alignment option) | <P ALIGN=center> ... |
+ +This is some text repeated a bunch of times. +This is some text repeated a bunch of times. +This is some text repeated a bunch of times. +This is some text repeated a bunch of times. +This is some text repeated a bunch of times. + + |
Center | <CENTER> ... </CENTER> |
+A Heading+This is some more text repeated a bunch of times. +This is some text. +This is some text repeated a bunch of times. |
+
+
+
Block Quote | <BLOCKQUOTE> ... </BLOCKQUOTE> |
++Text should be both left- and right-indented. +Some browsers render the text in italics. +Now there is a </BLOCKQUOTE> +immediately followed by a new <BLOCKQUOTE> +and then some more text; +there is NOT a <P>. ++ +This is some text repeated a bunch of times. +This is some text repeated a bunch of times. +This is some text repeated a bunch of times. +This is some text repeated a bunch of times. ++ + |
Block Quote + | <BQ> ... </BQ> |
+ |
Note + | <NOTE> ... </NOTE> |
+ |
Note (with option) + | <NOTE ROLE=tip> ... </NOTE> |
+ |
Note (with option) + | <NOTE ROLE=warning> ... </NOTE> |
+ |
Footnote + | <FN ID="..."> ... </FN> |
+ +This is a normal <P> paragraph with a footnote reference +(coded as <A HREF="#fn1">footnote</A>). +In theory, when you click on the reference, the footnote appears. +Netscape 1.22 and 2.01 do not seem to support this feature. + + |
Banner + | <BANNER> ... </BANNER> |
+ |
Unordered List (with no items) | <UL> ... </UL> |
+
|
Definition List (with no terms) |
+<DL> +<DD>Defn +</DL> + |
+
|
Block Quote | <BLOCKQUOTE> ... </BLOCKQUOTE> |
++Text should be both left- and right-indented. +Some browsers render the text in italics. +This is some text repeated a bunch of times. +This is some text repeated a bunch of times. ++ + |
+<FONT COLOR="#rrggbb">...</FONT> +
+In theory, there are 256 3 or 16,777,216 possible colors. +
+Here are 27 samples of <FONT COLOR="#rrggbb">: +
+ +
+#000000: 000000 Sample (Black) +#000080: 000080 Sample +#0000FF: 0000FF Sample (Blue) +#008000: 008000 Sample +#008080: 008080 Sample +#0080FF: 0080FF Sample +#00FF00: 00FF00 Sample (Green) +#00FF80: 00FF80 Sample +#00FFFF: 00FFFF Sample (Cyan) +#800000: 800000 Sample +#800080: 800080 Sample +#8000FF: 8000FF Sample +#808000: 808000 Sample +#808080: 808080 Sample +#8080FF: 8080FF Sample +#80FF00: 80FF00 Sample +#80FF80: 80FF80 Sample +#80FFFF: 80FFFF Sample +#FF0000: FF0000 Sample (Red) +#FF0080: FF0080 Sample +#FF00FF: FF00FF Sample (Magenta) +#FF8000: FF8000 Sample +#FF8080: FF8080 Sample +#FF80FF: FF80FF Sample +#FFFF00: FFFF00 Sample (Yellow) +#FFFF80: FFFF80 Sample +#FFFFFF: FFFFFF Sample (White) ++ + + +
+<BODY BGCOLOR="#rrggbb"> +
+In theory, there are 256 3 or 16,777,216 possible colors. +
+Another way to look at this: +Doug Jacobson's RGB Hex Triplet Color Chart +
+ +Click on the thumbnail image to see the full chart (61k). + +
+<BODY BGCOLOR="#rrggbb" TEXT="#rrggbb" +LINK="#rrggbb" VLINK="#rrggbb" ALINK="#rrggbb"> +
+
Option | Sets color of... + |
---|---|
BGCOLOR | Background + |
TEXT | Normal text + |
LINK | Link text (unvisited) + |
VLINK | Visited Link text + |
ALINK | Activated Link text (as link is clicked) + |
This is a <TH> Table Heading + |
---|
This is <TD> Table Data + |
This is <TD> Table Data that is long to expand the table horizontally. + |
This is <TD> Table Data + |
The table above is coded as:
+<TABLE BORDER=1>
+
<CAPTION>This is ...</CAPTION>
+
<TH>This is ...
+
<TR><TD>This is ...
+
<TR><TD>This is ...
+
<TR><TD>This is ...
+
</TABLE>
+
+
This is <TD> Table Data that is long to expand the table horizontally. + |
+
This is <TD> Table Data that is long to expand the table horizontally. + |
This | is |
a | table blah blah blah blah blah blah blah blah + |
+
This | is |
a | table blah blah blah blah blah blah blah blah + |
+
This | is |
a | table blah blah blah blah blah blah blah blah + |
+
This | is |
a | table blah blah blah blah blah blah blah blah + |
+
This | is |
a | table blah blah blah blah blah blah blah blah + |
+
This | is |
a | table blah blah blah blah blah blah blah blah + |
+
This | is |
a | table blah blah blah blah blah blah blah blah + |
+
This | is |
a | table blah blah blah blah blah blah blah blah + |
This | is |
a | table blah blah blah blah blah blah + |
+
This | is |
a | table blah blah blah blah blah blah + |
+
This | is |
a | table blah blah blah blah blah blah + |
+
This | is |
a | table blah blah blah blah blah blah + |
+
This | is |
a | table blah blah blah blah blah blah + |
+
This | is |
a | table blah blah blah blah blah blah + |
This | is |
a | table blah blah blah blah blah blah blah blah + |
+
This | is |
a | table blah blah blah blah blah blah blah blah + |
+
This | is |
a | table blah blah blah blah blah blah blah blah + |
This is a <TH> Table Heading + |
---|
This is a <TH ALIGN=left> Table Heading + |
This is a <TH ALIGN=right> Table Heading + |
This is <TD> Table Data that is long to expand the table horizontally. + |
This is <TD> Table Data + |
This is <TD ALIGN=right> Table Data + |
This is <TD ALIGN=center> Table Data + |
+Some text. +Some text. + | <TD VALIGN=top> + | <TD VALIGN=baseline> + |
+This is some text repeated a bunch of times. +This is some text repeated a bunch of times. +This is some text repeated a bunch of times. +This is some text repeated a bunch of times. +This is some text repeated a bunch of times. + | <TD VALIGN=middle> + | <TD VALIGN=bottom> + |
This | is |
a | table blah blah blah blah blah blah blah blah + |
+
This | is |
a | table blah blah blah blah blah blah blah blah + |
+
This | is |
a | table blah blah blah blah blah blah blah blah + |
+
This | is |
a | table blah blah blah blah blah blah blah blah + |
<TD WIDTH="75%"> + | <TD WIDTH="25%"> + |
+
<TD WIDTH=200> + | <TD WIDTH=50> + |
<TD> below + | <TD> below + |
---|---|
blah blah blah blah blah blah blah blah blah blah blah blah blah blah + | blah blah blah blah blah blah blah blah blah blah blah blah blah blah + |
+
<TD> below + | <TD NOWRAP> below + |
---|---|
blah blah blah blah blah blah blah blah blah blah blah blah blah blah + | blah blah blah blah blah blah blah blah blah blah blah blah blah blah + |
This is a <TH COLSPAN=3> Table Heading + | ||
---|---|---|
This is <TD ROWSPAN=2> Table Data + | This is <TD> Table Data + | This is <TD> Table Data + |
This is <TD COLSPAN=2> Table Data + |
The table above is coded as:
+<TABLE BORDER=1>
+
<CAPTION>This is ...</CAPTION>
+
<TH COLSPAN=3>This is ...
+
<TR>
+
<TD ROWSPAN=2>This is ...
+
<TD>This is ...
+
<TD>This is ...
+
<TR>
+
<TD COLSPAN=2>This is ...
+
</TABLE>
+
+
+
+
+You can jump to somewhere else on the current page by first defining an "anchor":
+
+<A NAME="colors"></A>
+
+and then specifying that anchor in the link:
+
+See <A HREF="#colors">Colors</A> above.
+
+
+Or you can jump into the middle of another page by combining a URL and an "anchor":
+
+See <A HREF="aplinfo.html#stschist">STSC History</A>.
+
+
<IMG SRC="undercon.gif"> + | This is +some text with no long words: is is is is is is is is is is +is is is is is is is is is is is is is is is is is is is is is is is. + |
<IMG SRC="undercon.gif" ALIGN=bottom>
+ Aligns bottom of image with baseline of line + | This is +some text with no long words: is is is is is is is is is is +is is is is is is is is is is is is is is is is is is is is is is is. + + |
<IMG SRC="undercon.gif" ALIGN=baseline>
+ Aligns bottom of image with baseline of line +(same as ALIGN=bottom) + | This is +some text with no long words: is is is is is is is is is is +is is is is is is is is is is is is is is is is is is is is is is is. + + |
<IMG SRC="undercon.gif" ALIGN=absbottom>
+ Aligns bottom of image with lowest item on line + | This is +some text with no long words: is is is is is is is is is is +is is is is is is is is is is is is is is is is is is is is is is is. + + |
<IMG SRC="undercon.gif" ALIGN=middle>
+ Aligns middle of image with baseline of text + | This is +some text with no long words: is is is is is is is is is is +is is is is is is is is is is is is is is is is is is is is is is is. + + |
<IMG SRC="undercon.gif" ALIGN=absmiddle>
+ Aligns middle of image with middle of text + | This is +some text with no long words: is is is is is is is is is is +is is is is is is is is is is is is is is is is is is is is is is is. + |
<IMG SRC="undercon.gif" ALIGN=top>
+ Aligns top of image with tallest item on line + | This is +some text with no long words: is is is is is is is is is is +is is is is is is is is is is is is is is is is is is is is is is is. + + |
<IMG SRC="undercon.gif" ALIGN=texttop>
+ Aligns top of image with tallest text on line + | This is +some text with no long words: is is is is is is is is is is +is is is is is is is is is is is is is is is is is is is is is is is. + + |
<IMG SRC="undercon.gif" ALIGN=right> + | +This is some text with no long words: is is is is is is is is is is +is is is is is is is is is is is is is is is is is is is is is is is +is is is is is is is is is is is is is is is is is is is is is is is +is is is is is is is is is is is is is is is is is is is is is is is +is is is is is is is is is is is is is is is is is is is is is is is +is is is is is is is is is is is is is is is is is is is is is is is +is is is is is is is is is is is is is is is is is is is is is is is. + + |
<IMG SRC="undercon.gif" ALIGN=left> + | +This is some text with no long words: is is is is is is is is is is +is is is is is is is is is is is is is is is is is is is is is is is +is is is is is is is is is is is is is is is is is is is is is is is +is is is is is is is is is is is is is is is is is is is is is is is +is is is is is is is is is is is is is is is is is is is is is is is +is is is is is is is is is is is is is is is is is is is is is is is +is is is is is is is is is is is is is is is is is is is is is is is. + + |
<IMG SRC="undercon.gif" ALIGN=left>
+ and <IMG SRC="undercon.gif" ALIGN=right> + | +This is some text with no long words: is is is is is is is is is is +is is is is is is is is is is is is is is is is is is is is is is is +is is is is is is is is is is is is is is is is is is is is is is is +is is is is is is is is is is is is is is is is is is is is is is is +is is is is is is is is is is is is is is is is is is is is is is is +is is is is is is is is is is is is is is is is is is is is is is is +is is is is is is is is is is is is is is is is is is is is is is is. + + |
<IMG SRC="undercon.gif" ALIGN=left BORDER=1> + | +This is some text with no long words: is is is is is is is is is is +is is is is is is is is is is is is is is is is is is is is is is is +is is is is is is is is is is is is is is is is is is is is is is is +is is is is is is is is is is is is is is is is is is is is is is is +is is is is is is is is is is is is is is is is is is is is is is is +is is is is is is is is is is is is is is is is is is is is is is is +is is is is is is is is is is is is is is is is is is is is is is is. + + |
<IMG SRC="undercon.gif" ALIGN=left VSPACE=16 HSPACE=32 BORDER=4> + | +This is some text with no long words: is is is is is is is is is is +is is is is is is is is is is is is is is is is is is is is is is is +is is is is is is is is is is is is is is is is is is is is is is is +is is is is is is is is is is is is is is is is is is is is is is is +is is is is is is is is is is is is is is is is is is is is is is is +is is is is is is is is is is is is is is is is is is is is is is is +is is is is is is is is is is is is is is is is is is is is is is is. + + |
<IMG SRC="nosuch.gif"> + | +This is some text. + + |
<IMG SRC="nosuch.gif" ALT="Ooops">
+ Try this with Netscape's "Auto Load Images" option turned off + | +This is some text. + + |
<IMG SRC="undercon.gif">
+ Image size unknown until browser retrieves file + | + |
<IMG SRC="undercon.gif" WIDTH=40 HEIGHT=40>
+ Browser can allocate space before file is retrieved + | + |
<IMG SRC="undercon.gif" WIDTH=80 HEIGHT=80>
+ Browser scales image to specified size + | + |
<IMG SRC="undercon.gif" WIDTH=20 HEIGHT=20>
+ Browser scales image to specified size + | + |
<IMG SRC="undercon.gif" WIDTH=20 HEIGHT=80>
+ Browser scales image to specified size + | + + |
+
<IMG SRC="internal-gopher-binary"> | page with 0's and 1's | +
<IMG SRC="internal-gopher-index"> | binoculars | +
<IMG SRC="internal-gopher-image"> | page with symbols | +
<IMG SRC="internal-gopher-menu"> | file folder | +
<IMG SRC="internal-gopher-movie"> | strip of film | +
<IMG SRC="internal-gopher-sound"> | page with speaker | +
<IMG SRC="internal-gopher-text"> | page with text | +
<IMG SRC="internal-gopher-telnet"> | PC icon | +
<IMG SRC="internal-gopher-unknown"> | blank page | +
+(Try these on your own server -- each view of this page generated 9 records in
+my server's error log.
RHS 26 July 1999)
+
+If your browser supports client-side image maps, you should see a reference +to GOTOTOP while over the top half of the picture, and GOTOBOTTOM while over the +bottom half. +(These links are not active, so if you actually click on the picture, +you'll get an error message saying that the link cannot be found.) +
+If your browser does not support client-side image maps, if you click on the +picture, nothing will happen. +
+
+
+The HTML code for this is: +
+<IMG SRC=rexc.gif WIDTH=168 HEIGHT=221 USEMAP="#csimap" ALIGN=right> +<MAP NAME="csimap"> +<AREA SHAPE="rect" HREF="GOTOTOP.html" COORDS="0,0,167,110"> +<AREA SHAPE="rect" HREF="GOTOBOTTOM.html" COORDS="0,111,167,220"> +</MAP> +Blah blah blah ++ + + +
+<BODY BACKGROUND="path/filename.gif"> +
+(Personally, I think that the use of this feature is just about as obnoxious +as <BLINK>!) + +
+
+
+The HTML code for this is: +
+<FIG SRC="rexc.gif" WIDTH=168 HEIGHT=221 ALIGN=right> +<OVERLAY SRC="undercon.gif" WIDTH=40 HEIGHT=40 X=64 Y=80> +<CAPTION>This is the caption.</CAPTION> +Blah blah blah +<CREDIT>This is the credit.</CREDIT> +</FIG> ++Thanks to Larry Aronson (author of +HTML3 Manual of Style) +for information on this. + + + + +
+Description Code Entity name +=================================== ============ ============== +quotation mark " --> " " --> " +ampersand & --> & & --> & +less-than sign < --> < < --> < +greater-than sign > --> > > --> > + +Description Char Code Entity name +=================================== ==== ============ ============== +non-breaking space   --> --> +inverted exclamation ¡ ¡ --> ¡ ¡ --> ¡ +cent sign ¢ ¢ --> ¢ ¢ --> ¢ +pound sterling £ £ --> £ £ --> £ +general currency sign ¤ ¤ --> ¤ ¤ --> ¤ +yen sign ¥ ¥ --> ¥ ¥ --> ¥ +broken vertical bar ¦ ¦ --> ¦ ¦ --> ¦ + &brkbar; --> &brkbar; +section sign § § --> § § --> § +umlaut (dieresis) ¨ ¨ --> ¨ ¨ --> ¨ + ¨ --> ¨ +copyright © © --> © © --> © +feminine ordinal ª ª --> ª ª --> ª +left angle quote, guillemotleft « « --> « « --> « +not sign ¬ ¬ --> ¬ ¬ --> ¬ +soft hyphen ­ --> ­ --> +registered trademark ® ® --> ® ® --> ® +macron accent ¯ ¯ --> ¯ ¯ --> ¯ + &hibar; --> &hibar; +degree sign ° ° --> ° ° --> ° +plus or minus ± ± --> ± ± --> ± +superscript two ² ² --> ² ² --> ² +superscript three ³ ³ --> ³ ³ --> ³ +acute accent ´ ´ --> ´ ´ --> ´ +micro sign µ µ --> µ µ --> µ +paragraph sign ¶ ¶ --> ¶ ¶ --> ¶ +middle dot · · --> · · --> · +cedilla ¸ ¸ --> ¸ ¸ --> ¸ +superscript one ¹ ¹ --> ¹ ¹ --> ¹ +masculine ordinal º º --> º º --> º +right angle quote, guillemotright » » --> » » --> » +fraction one-fourth ¼ ¼ --> ¼ ¼ --> ¼ +fraction one-half ½ ½ --> ½ ½ --> ½ +fraction three-fourths ¾ ¾ --> ¾ ¾ --> ¾ +inverted question mark ¿ ¿ --> ¿ ¿ --> ¿ +capital A, grave accent À À --> À À --> À +capital A, acute accent Á Á --> Á Á --> Á +capital A, circumflex accent   -->   -->  +capital A, tilde à à --> à à --> à +capital A, dieresis or umlaut mark Ä Ä --> Ä Ä --> Ä +capital A, ring Å Å --> Å Å --> Å +capital AE diphthong (ligature) Æ Æ --> Æ Æ --> Æ +capital C, cedilla Ç Ç --> Ç Ç --> Ç +capital E, grave accent È È --> È È --> È +capital E, acute accent É É --> É É --> É +capital E, circumflex accent Ê Ê --> Ê Ê --> Ê +capital E, dieresis or umlaut mark Ë Ë --> Ë Ë --> Ë +capital I, grave accent Ì Ì --> Ì Ì --> Ì +capital I, acute accent Í Í --> Í Í --> Í +capital I, circumflex accent Î Î --> Î Î --> Î +capital I, dieresis or umlaut mark Ï Ï --> Ï Ï --> Ï +capital Eth, Icelandic Ð Ð --> Ð Ð --> Ð + Đ --> Đ +capital N, tilde Ñ Ñ --> Ñ Ñ --> Ñ +capital O, grave accent Ò Ò --> Ò Ò --> Ò +capital O, acute accent Ó Ó --> Ó Ó --> Ó +capital O, circumflex accent Ô Ô --> Ô Ô --> Ô +capital O, tilde Õ Õ --> Õ Õ --> Õ +capital O, dieresis or umlaut mark Ö Ö --> Ö Ö --> Ö +multiply sign × × --> × × --> × +capital O, slash Ø Ø --> Ø Ø --> Ø +capital U, grave accent Ù Ù --> Ù Ù --> Ù +capital U, acute accent Ú Ú --> Ú Ú --> Ú +capital U, circumflex accent Û Û --> Û Û --> Û +capital U, dieresis or umlaut mark Ü Ü --> Ü Ü --> Ü +capital Y, acute accent Ý Ý --> Ý Ý --> Ý +capital THORN, Icelandic Þ Þ --> Þ Þ --> Þ +small sharp s, German (sz ligature) ß ß --> ß ß --> ß +small a, grave accent à à --> à à --> à +small a, acute accent á á --> á á --> á +small a, circumflex accent â â --> â â --> â +small a, tilde ã ã --> ã ã --> ã +small a, dieresis or umlaut mark ä ä --> ä ä --> ä +small a, ring å å --> å å --> å +small ae diphthong (ligature) æ æ --> æ æ --> æ +small c, cedilla ç ç --> ç ç --> ç +small e, grave accent è è --> è è --> è +small e, acute accent é é --> é é --> é +small e, circumflex accent ê ê --> ê ê --> ê +small e, dieresis or umlaut mark ë ë --> ë ë --> ë +small i, grave accent ì ì --> ì ì --> ì +small i, acute accent í í --> í í --> í +small i, circumflex accent î î --> î î --> î +small i, dieresis or umlaut mark ï ï --> ï ï --> ï +small eth, Icelandic ð ð --> ð ð --> ð +small n, tilde ñ ñ --> ñ ñ --> ñ +small o, grave accent ò ò --> ò ò --> ò +small o, acute accent ó ó --> ó ó --> ó +small o, circumflex accent ô ô --> ô ô --> ô +small o, tilde õ õ --> õ õ --> õ +small o, dieresis or umlaut mark ö ö --> ö ö --> ö +division sign ÷ ÷ --> ÷ ÷ --> ÷ +small o, slash ø ø --> ø ø --> ø +small u, grave accent ù ù --> ù ù --> ù +small u, acute accent ú ú --> ú ú --> ú +small u, circumflex accent û û --> û û --> û +small u, dieresis or umlaut mark ü ü --> ü ü --> ü +small y, acute accent ý ý --> ý ý --> ý +small thorn, Icelandic þ þ --> þ þ --> þ +small y, dieresis or umlaut mark ÿ ÿ --> ÿ ÿ --> ÿ ++ + +
Thanks to 3wVentures for supporting this site
+ +