frob is currently certified at Journeyer level.

Name: Valek Filippov
Member since: 2005-11-08 14:57:30
Last Login: 2007-09-02 03:28:44

FOAF RDF Share This


Recent blog entries by frob

Syndication: RSS 2.0
8 Jul 2007 (updated 10 Jul 2007 at 04:28 UTC) »
pycairo snippet

On the way to Visio VSD/VSS viewer I need some way to load images in different formats into cairo context.
cworth pointed me to the right way to achieve it in C.
pyvsdump is in pythonese, so I made a small test and converted it to this 'snippet'.
It loads image file into memory (to emulate loading from parsed VSD) and after that display it.
Enjoy =)

[take a file]


#!/usr/bin/env python
import sys
import gtk
import cairo

def expose (da, event,pixbuf): ctx = da.window.cairo_create() ct = gtk.gdk.CairoContext(ctx) ct.set_source_pixbuf(pixbuf,0,0) ctx.paint() ctx.stroke()

def main(): filename = sys.argv[1] input = open(filename) imagebuf = pixbufloader = gtk.gdk.PixbufLoader() pixbufloader.write(imagebuf) pixbufloader.close() pixbuf = pixbufloader.get_pixbuf() imgw=pixbuf.get_width() imgh=pixbuf.get_height() win = gtk.Window() win.connect('destroy', gtk.main_quit) win.set_default_size(imgw, imgh) da = gtk.DrawingArea() win.add(da) da.connect('expose_event', expose, pixbuf) win.show_all() gtk.main()

if __name__ == '__main__': if len(sys.argv) != 2: program = sys.argv[0] print program +':', 'usage:', program, '<filename>' sys.exit(0) else: main()

Import of CorelDraw (.cdr) files for linux.
Unstable but workable build of the sK1 available in SVN.

CDR files importer is included, so 'made with prepress in mind' files of version 7 to 13 /aka X3/ can be opened in sK1 now.

Opening CDR files in linux
Igor made a presentation of sK1 with CDR opening.
For demonstration purposes really complex map of the rare animals distribution in Ukraine was choosen.
Some Scribus Team peoples were interested, so I translated most of the format description into plain English.

RevEngeLog for the last days:
- <arrw> (arrow descriptions),
- <loda> type 0x14 (Polygones),
- <outl> dash descriptions,
- rounding corners for rectangles,
- how <loda> type 5 is linked to <bmp >,

I'm going to RE stars, spirals and other fancy tools in a day or two after testing files will be available.

3 May 2007 (updated 3 May 2007 at 06:27 UTC) »
C0relDraw VS Visi0
The process of CDR file format reverse engineering seems to be more clear and quick than it was for VSD/VSS.
Possible reasons for that are:
- format of their containers
- LZW implementation in use
- 'object models'
- code for file format research

CDR uses (slightly modified) RIFF with standard LZW. Also there are clearly identifiable pointers to 'document-wise' parts like fills and outlines parameters.

VSD uses OLE with 'customized' LZW version. There are a lot of entities there (I had ever asked native speakers to suggest some good names for different kind of 'peaces'). The relations mostly aren't clear.

A lot of time was wasted to find out LZW options (VSD). cdr_explorer (and therefore sK1 importer) uses zlib functions (CDR).

RIFF leaves some place to guess about chunk content because of meaningful names (<obj >, <DISP>, <IKEY>, <bmp >, <fntd> can you guess what it is?).
In VSD _some_ parts of 'Visio Document Object Model' can be found from the 'type value in the pointer to stream', also one have to map chunk numbers to types.

For vsd/vss I stole some code from libgsf, but my ability to adapt it is quite restricted. And I gave up all attempts to make something useful in C with GObject.
For cdr Igor Novikov made a cdr_explorer, that is really nice and handy.

So there are some details about the formats:
vsd and cdr (WARNING! Coarse (Russian) language. Viewer discretion is advised! =)

For now CDR files (ver.7 to ver. X3) can be opened in sK1. Igor Novikov is going to make two presentations about it at LGM-2

What could be my next target?
Well... there are some things to research in CDR ;-)
And show-stopper is not me (there are no more cdr files prepared to make meaningful conclusions.) Maybe or maybe not we will complete most of this job at LGM-2.

Alexandre Prokoudine suggested that it could be interesting to dig into photoshop related formats.
Jody pointed to PPT.
So I'm encouraging Igor Novikov to extend cdr_explorer with support for OLE.
It will help us to finish with VSD/VSS (and maybe create some kind of viewer
for a time while Ian Redfern implement VSD->..->Dia convertor)
and provide a base for possible treatment of PPT.
I would rather work with PPT because I know who will be responsible for utilization of the collected data =).
And I believe that nobody really need any data about PSD format and related staff.

vsdump team is double-sized. Max Kosmach makes some patches here and there,
he also forces me to make vsdump output more close to VDX.

svudump will be renamed
sK1 team asked me to include svudump to their code.
After quick consultation with svu, I need to rename this code to something.
Igor Novikov (sK1) suggested a 'cdr_thumbnail'.
Accidently 'cdr' isn't only C0relDr@w file format, but also widely used for 'compact disk [recordable]'.

I'm going to attend LGM2 in Montreal this May.

17 older entries...


Others have certified frob as follows:

  • pabs3 certified frob as Journeyer

[ Certification disabled because you're not logged in. ]

New Advogato Features

New HTML Parser: The long-awaited libxml2 based HTML parser code is live. It needs further work but already handles most markup better than the original parser.

Keep up with the latest Advogato features by reading the Advogato status blog.

If you're a C programmer with some spare time, take a look at the mod_virgule project page and help us with one of the tasks on the ToDo list!

Share this page