- From: Haeusler Reinhard <reinhard.haeusler@siemens.com>
- Date: Tue, 27 Aug 2002 08:36:42 +0200
- To: "'chris@w3.org'" <chris@w3.org>, "'www-svg@w3.org'" <www-svg@w3.org>
- Message-ID: <C10F60785AE7D211B6E00800060DA391022FEFCB@vieg128a.gud.siemens.at>
Sorry - my English is not perfect ... ;-(
Hello Chris, hello W3 members,
I like the concept of the various XML based languages, especially the vector
graphics format SVG ;-)
But for the pixel graphics there is currently no XML based format available
(only binary formats, like your PNG or the old GIF).
So I suggested a concept for such a pixel format, called PPG (portable pixel
graphics), and I want that to be also an internet standard.
This, because in XHTML documents everyone could include parts with the
graphics data in textual form in the document -
and therefore in the future no one would need to insert references to binary
picture files in XHTML documents.
(Exceptions to this are the binary format JPEG for photos of a camera and
your PNG format for large compressed pixel data.)
Especially I would not need a tool and file for simple graphics elements,
like multi-colored points and so on.
The new format should be interoperable with the already defined standard SVG
- is a mixed use directly possible ?
(E.g. a SVG part which refers to - or already contains - a PPG part.) -
Please give me a hint to this topic - Thanks!
I want you to add this new format to your Web graphics concept, to have the
following list of XML graphic standards:
- XML-based: SVG + PPG
- compressed-binary: JPEG + PNG
The MIME type is currently not registered, but it could be like "image/ppg"
(or similar).
Please send me your suggestions or requests to the below described XML-based
pixel graphics format:
Possibly the name and short hand (or file name extension) is requested to be
an other one (?)
Also possibly the structure of the head (info) part and/or the body (data)
part is requested to be changed generally.
(E.g. instead of the pixel data storage as 'color layer' it could be done as
a direct pixel, similarly to the method used in the PNG format.)
The only things of my suggestion, which should not be changed, are the
manually (without a tool) writeable format and the XML base of it.
Also the support for simple transparency (not variable translucency) should
be a part of this format.
The new pixel graphics format should be the low end graphics format for
simplest usage on Web pages - e.g. for multi-colored points.
Here is now my suggestion and I am looking forward to get your response to
this concept.
--> Many thanks in advance!
Best regards, Reinhard Häusler
mailto:reinhard.haeusler@siemens.com
---
----------------------------------------------------
PPG ... Portable-Pixel-Graphics
----------------------------------------------------
Properties:
The format is XML-based - it should be defined via an DTD or an XML schema -
to be done ;-)
It supports transparent graphics parts, like the old GIF format.
Picture data structure:
- Structure of a whole picture: Every so called 'color layer' of the whole
graphics is stored in one element, called layer.
Every layer contains data in the structure: outer for vertical sequence
- and inner for horizontal sequence.
- Horizontal picture layer structure: Every byte, as sequence of 8 bits
represents 8 pixels (horizontal side by side).
- Vertical picture layer structure: Every line (with horizontal structure)
follows side by side the other one.
Possible there is an better word instead of layer (could be also used for
the XML tag) ... :-)
General structure of the pixel graphics format:
- info part with a data type information (and possible with an to the XML
head part additional semantic version information)
- data part with a color palette (with 'transparent' information) and the
so called 'layer list' (with the pixel informations).
Details of the pixel graphics format:
The mandatory type information contains a slash ('/') separated word of the
format "PPG/<x-pix>x<y-pix>/<bit-depth>",
which means a pixel graphics picture with horizontal <x-pix> pixels,
vertical <y-pix> pixels and color depth of <bit-depth> bits.
The optional version information holds a simple version string.
The mandatory color palette consists of the color definitions (using the
usual HTML 'rgb'-format in textual form - e.g. '#00FF00') and
the only one transparent definition for one of in this color palette defined
colors.
The mandatory layer list consists of a sequence of layer definitions (using
a similar hexadecimal textual form - without the char '#').
Every layer definition consists of a sequence of logical lines, which
themselves consists of a sequence of bytes.
Simple example:
PPG definition for a small pixel graphic (16 x 16 pixels) with 4 colors.
Done in two syntax variants ... :-)
Remark: Currently there is only this example to 'define' the used XML tags -
DTD or XML schema definition for it is to be done!
<?xml version="1.0" encoding="ISO8859-1" ?>
<!-- Example_small.PPG -->
<!-- ================= -->
<!-- Simple Example of a PPG (portable pixel graphics) format file -->
<!-- Reinhard Häusler -->
<!-- Date: 2002-08-26 -->
<!-- ************* -->
<!-- XML like head --> <!-- to be defined - reference to DTD or XML
schema -->
<!-- ************* -->
<ppg>
<info><!-- info part (instead of head) -->
<type>PPG/16x16/2</type><!-- this means: 16 (horizontal) x 16
(vertical) pixels and 2 bit color depth -->
<version>0.0.1</version><!-- no valid version available now - only a
suggestion for working -->
</info>
<data><!-- data part (instead of body) -->
<palette><!-- list of the color definitions and the one transparent
definition -->
<!-- explanation for 'bit sequence': 'ab' means layer 0 is 'a' and
layer 1 is 'b' -->
<color num="0">#000000</color><!-- 0 means the bit sequence '00'
--><!-- black -->
<color num="1">#007700</color><!-- 1 means the bit sequence '01' -->
<color num="2">#007700</color><!-- 2 means the bit sequence '10' -->
<color num="3">#00FF00</color><!-- 3 means the bit sequence '11'
--><!-- green -->
<transparent="0" /><!-- this means: color with num="0" is transparent
-->
<!-- (it could also be empty for no transparent
color) -->
</palette>
<layers><!-- list of layer definitions -->
<layer num="0"><!-- list of pixel lines of layer 0 -->
<b>0FF0</b><b>1FF8</b><b>1FF8</b><b>3FFC</b><!-- byte-sequences 1
to 4 (of layer 0) -->
<b>3FFC</b><b>7FFE</b><b>7FFE</b><b>FFFF</b><!-- byte-sequences 5
to 8 (of layer 0) -->
<b>FFFF</b><b>7FFE</b><b>7FFE</b><b>3FFC</b><!-- byte-sequences 9
to 12 (of layer 0) -->
<b>3FFC</b><b>1FF8</b><b>1FF8</b><b>0FF0</b><!-- byte-sequences 13
to 16 (of layer 0) -->
</layer>
<layer num="1"><!-- list of pixel lines of layer 1 -->
<b>0000</b><b>0000</b><b>0FF0</b><b>1FF8</b><!-- byte-sequences 1
to 4 (of layer 1) -->
<b>1FF8</b><b>3FFC</b><b>3FFC</b><b>7FFE</b><!-- byte-sequences 5
to 8 (of layer 1) -->
<b>7FFE</b><b>3FFC</b><b>3FFC</b><b>1FF8</b><!-- byte-sequences 9
to 12 (of layer 1) -->
<b>1FF8</b><b>0FF0</b><b>0000</b><b>0000</b><!-- byte-sequences 13
to 16 (of layer 1) -->
</layer>
</layers>
</data>
</ppg>
<!-- (C) Reinhard Häusler 2002 -->
A nearly shortest variant of this definition (if the concept above would
generate too much overhead) is shown below - but this is more difficult to
read ;-(
<?xml version="1.0" encoding="ISO8859-1" ?>
<!-- Example_min.PPG -->
<!-- =============== -->
<!-- Reinhard Häusler -->
<!-- Date: 2002-08-26 -->
<ppg>
<i><!-- info -->
<t>PPG/16x16/2</t><!-- type -->
<v>0.0.1</v><!-- version -->
</i>
<d><!-- data -->
<cp><!-- color-palette -->
<c n="0">#000000</c><!-- color 0 -->
<c n="1">#007700</c><!-- color 1 -->
<c n="2">#007700</c><!-- color 2 -->
<c n="3">#00FF00</c><!-- color 3 -->
<t="0" /><!-- transparent -->
</cp>
<ll><!-- layer-list -->
<l n="0"><!-- layer 0 -->
0FF0,1FF8,1FF8,3FFC,<!-- byte-sequences 1 to 4 (of layer 0) -->
3FFC,7FFE,7FFE,FFFF,<!-- byte-sequences 5 to 8 (of layer 0) -->
FFFF,7FFE,7FFE,3FFC,<!-- byte-sequences 9 to 12 (of layer 0) -->
3FFC,1FF8,1FF8,0FF0 <!-- byte-sequences 13 to 16 (of layer 0) -->
</l>
<l n="1"><!-- layer 1 -->
0000,0000,0FF0,1FF8,<!-- byte-sequences 1 to 4 (of layer 1) -->
1FF8,3FFC,3FFC,7FFE,<!-- byte-sequences 5 to 8 (of layer 1) -->
7FFE,3FFC,3FFC,1FF8,<!-- byte-sequences 9 to 12 (of layer 1) -->
1FF8,0FF0,0000,0000 <!-- byte-sequences 13 to 16 (of layer 1) -->
</l>
</ll>
</d>
</ppg>
Many combinations of this two concept versions or even other implementations
are possible.
--> Please make your suggestions to this syntax and/or semantics .... :-)
Reinhard Häusler (mailto:reinhard.haeusler@siemens.com) - 2002-08-26
Received on Tuesday, 27 August 2002 02:36:05 UTC