r3wp [groups: 83 posts: 189283]
  • Home
  • Script library
  • AltME Archive
  • Mailing list
  • Articles Index
  • Site search
 

World: r3wp

[View] discuss view related issues

Henrik
21-Dec-2006
[6467]
is it possible to use any drawing this way and not only kanji/chinese 
chars?
Geomol
21-Dec-2006
[6468]
Someone should train a neural network to make calligraphy, then the 
chinese chars could maybe be made with less information.
Maxim
21-Dec-2006
[6469x2]
eeek  I'm affraid of the amount of neurons needed for such an endeavour 
especially since it would need one output for each pixel...   :-)
probably after a few years of training... it would be able to actually 
draw something ;-)
Henrik
21-Dec-2006
[6471]
I'm always thinking in generalization, creating an easy way to import 
vector drawings in rebol.
Geomol
21-Dec-2006
[6472x3]
Henrik, if info about points or whatever the drawing is made of is 
available, then I see no problem. (If I understand you correctly.)
Clipart is a good example.
What data format is used for clipart? An importer to DRAW dialect 
shouldn't be too big a problem, if the format is easily read.
Henrik
21-Dec-2006
[6475]
yes! I've always wanted to see all that kitchy clipart available 
to Windows users since Windows 3.1...
Geomol
21-Dec-2006
[6476]
There is probably a lot stored in SVG (Scalable Vector Graphics) 
format. There's been talk about that format around here, I think.
Henrik
21-Dec-2006
[6477]
would be nice to integrate this into postscript.r (wink wink) :-)
Geomol
21-Dec-2006
[6478]
yeah! :-)
Maxim
21-Dec-2006
[6479x5]
here is a draw glyph compressor  :-)

rule: [
	any[
		[copy val pair! (
			val: first val
			bignum: max bignum max val/x val/y
			append bin to-binary to-char val/x
			append bin to-binary to-char val/y
		)] |

  [copy val word! (append bin select [curve #{81} line #{82} move #{83}] 
  val )]
	]
]
the above glyph takes up 2223 bytes
oops... forgot to remove bignum check...
rule: [
	any[
		[copy val pair! (
			val: first val
			append bin to-binary to-char val/x
			append bin to-binary to-char val/y
		)] |

  [copy val word! (append bin select [curve #{81} line #{82} move #{83}] 
  val )]
	]
]
to use it:

bin: copy #{}
parse draw-shape-block rule
Geomol
21-Dec-2006
[6484x2]
W3C link to this from their SVG page: http://openclipart.org/cchost/

so there's a lot of clipart in SVG format, I guess. SVG uses XML, 
so it should be easy to import using my RebXML packet. Problem is 
to figure out content  of the format.
Hmm, it seems to be a large format, so it's not a week-end project: 
http://www.w3.org/TR/SVG11/
Henrik
21-Dec-2006
[6486]
isn't shadwolf working on something?
Maxim
21-Dec-2006
[6487]
doesn't Cyphre already have an AGG SVG viewer
Henrik
21-Dec-2006
[6488]
how is the tiger demo done?
Geomol
21-Dec-2006
[6489]
There is a "SVG RENDERER" group here.
Maxim
21-Dec-2006
[6490x2]
my god profiling stuff in REBOL in quite rewarding!
my latest shape compressor is now 2.5 times faster, by using a list! 
instead of a binary while accumulating values, and then converting 
it to binary!
Geomol
21-Dec-2006
[6492]
Can you try a hash!?
Maxim
21-Dec-2006
[6493]
there is no point... since I'm never accessing it... list! is the 
fastest insert series in REBOL
Geomol
21-Dec-2006
[6494]
ok. Do you preallocate space for all the entries beforehand? So it 
doesn't have to expand along the way.
Maxim
21-Dec-2006
[6495x4]
and since I'm only converting it to binary at the end, a lot of GC 
processing is alleviated.
oh, and 1000 of the above glyphs now takes 4.5 seconds to compress... 
imagine if we had rebcode !
lst: make list! 5000

rule: [
	any[
		[copy val pair! (
			insert lst val/1/x
			insert lst val/1/y
		)] |

  [copy val word! (insert  lst select [curve 130 line 131 move 132] 
  val )]
	]
]
parse draw-shape rule
bin: to-binary head lst
clear head lst

lst: head lst  ; a small quirk in list! datatype... it MUST be reset 
to head after a clear.
and 1000 glyphs takes 8.95 MB of RAM which is quite optimal IMHO 
   :-)
Ashley
21-Dec-2006
[6499]
How does that compare with:

	glyph: compress mold draw-blk
	load decompress glyph
Maxim
21-Dec-2006
[6500x4]
didn't try, I was having fun with parsing  ;-)
using compress is 2 times faster but takes up 20% more ram
(in compression)
but there is no comparison in decompression... using decompress  
is 4 times faster so far.. I could probably squeze a bit more more 
out of parse... but not much.
Jerry
21-Dec-2006
[6504x4]
Maxim, it's not "tsai", it's "yung". The meaning is some kind of 
traditional chinese musical instruments. http://www.unicode.org/cgi-bin/GetUnihanData.pl?codepoint=93DE
Henrik, it is possible to draw all the characters this way, not just 
Chinese characters. I am designing my own Text-Rendering System this 
way.
To condense the font data, there is a better way. Almost every Chinese 
character consists of many parts. if reusing the parts, a Chinese 
TTF file can be condensed from 4 MB to 100 KB. However, doing that 
would need lots of analysis of Chinese characters. That's would not 
be easy. Also needed is a part-combining engine.
For example, the left part of the "yung" Chinese character is "jin", 
meaning "gold" or "metal". The left part of any  metal-related character 
is exactually the same as the left part of "yung". There are hundreds 
of such characters. And "metal" is just an example, we also have 
"water", "fire", "soil", "bird", "dog", "hand", "human", "tree" ... 
this list goes on and one.
Graham
21-Dec-2006
[6508]
Presumably that is how it is done.  Divide into radicals, and further 
divide radicals into elemental strokes.
Jerry
21-Dec-2006
[6509]
Graham. That's not how it is done. That's why the Chinese TTF file 
is so big, that's why in two chracters with the same radical, their 
radical part are not exactually the same pixel-by-pixel. These is 
a company doing so though. http://www.hifont.com/.
Graham
21-Dec-2006
[6510x2]
but you can add a scaling factor ..
and a direction
Jerry
21-Dec-2006
[6512]
Scaling factor and direction? I am afraid I dont understand what 
you mean. Anyway, I don't really have time to do the font-compression, 
and it's not practical for me for now. I am trying to change my bitmap-based 
text-rendering REBOL/View component to a vector-based one. I hope 
the performance will not cause too much pain. Considering the complexity 
of Chinese font, the rendering performance is what I am worring about.
Cyphre
22-Dec-2006
[6513x3]
Guys, that's exactly the way I have done 'embedded font' in the quick-hack.r 
demo I reffered some time ago when talking about the fonts. Yes it 
is possible to make any kind of font that way. And yes, DRAW is really 
good as a 'optimal storage' of vectorial data ;)
Jerry, I think you can implement own 'bitmap cache' when rendering 
the text usng vectorial glyphs. The performace will be much better 
in that case.
how is the tiger demo done?
 Yes, it's just converted SVG file to DRAW dialect, nothing more.
Geomol
22-Dec-2006
[6516]
Jerry, what about splitting each chinese character up in strokes. 
Each stroke should just be a number of points giving the position 
of the middle of the stroke from one end to the other. Like when 
a person draw the character with a pen. You start each stroke at 
one point, then you move your hand, sometimes fast, sometimes slow, 
until that stroke is finished. Then the next stroke and so on. The 
rendering engine can then calculate the thickness of the stroke at 
any time from the distance from point to point.