Draw File Objects
Richard Keefe (1495) 81 posts |
Does anyone know if there is a definitive list of allocated draw file objects, and what os / package they are used / allocated too? Including RiscOS 6’s additional graphics formats? I’ve been trying to find the official documentation that defines the jpeg extension also. |
nemo (145) 2546 posts |
Yes. There is a list. Also bear in mind that drawfile object numbers are 16bit, not 32bit (little known fact). It doesn’t go wrong if you treat them as 32bit, you just might not recognise objects you could have. As for “RiscOS 6” I’ve no idea.
What, the standard RO3 JPEG drawfile object? 16 is it? (I forget). That’s well defined. |
nemo (145) 2546 posts |
Yeah, object 16 is: 0 24 Usual header (Textile has decided to double-space that for reasons I can’t fathom) Vantage’s list of tag and object numbers (now a number of years out of date no doubt): Obj0:Font table Obj1:Text line Obj2:Path Obj3:Old rectangle Obj4:Old ellipse Obj5:Sprite Obj6:Group Obj7:Tag Obj9:Text area ObjA:Text area column ObjB:Draw options ObjC:Transformed text line ObjD:Transformed sprite Obj10:JPEG image Obj4B:Fontician kerning data Obj4D:TechWriter MSWord picture Obj64:DrawPlus library object Obj65/Obj65s:DrawPlus settings Obj66:Vector static replicate Obj67:Vector dynamic replicate Obj68:Vector dynamic component Obj69:Vector mask Obj6A:Vector radiate Obj6B:Vector static skeleton Obj6C:Vector dynamic skeleton ObjF0:Vantage old colour table ObjF1:Paper ObjF2:Vantage old clone Obj43E:View settings Obj43F:Undo buffer Tag100:CC scanner info Tag101:Equasor private info Tag102:Impression EPS Tag103:Artworks something Tag204:Poster border Tag205:Chameleon fancy fill Tag206:Hatchback hatch fill Tag320:VersaTile private info Tag600:Wyddfa colourable object Tag601:Wyddfa colourable path Tag602:Wyddfa alterable text Tag700:TableMate table Tag701:TableMate row Tag702:TableMate cell TagB??:Schema2 object TagD00:ArcWeb thing TagD01:ArcWeb hyperlink TagD02:ArcWeb form icon TagD03:ArcWeb image URL TagD04:ArcWeb background TagD05:ArcWeb client map TagD06:ArcWeb table TagD07:ArcWeb table row TagD08:ArcWeb table cell TagD09:ArcWeb anchor TagD0A:ArcWeb server map TagD0B:ArcWeb form image TagD0C:ArcWeb image place TagD0D:ArcWeb table ok TagD0E:ArcWeb table row ok TagD0F:ArcWeb table cell ok TagD??:Stewart Brodie object TagCCC4:Publisher embedded object TagD40001:Text story TagD40001s:Text stories TagD40002:Text on a curve TagD40002s:Text on curves TagD40003:Clone TagD40004:Clipped object TagD40005:Filled object TagD40006:Fancy text line TagD40007:EPS TagD40008:Cog TagD40009:Regular shape TagD4000A:Button TagD4000B:Distortion TagD4000C:Arrow TagD4000D:Tween TagD4000E:Multiline TagD4000F:Matrix TagD4000Fs:Matrices TagD40010:Object description TagD40011:Linked picture TagD40012:Transparent object TagD40013:Text frame TagD40014:Labelled object TagD40015:Sprite fill TagD40016:Live object TagD40017:Insignia object TagD40018:Shadow object TagD40020:CAD object TagD400F0:Colour table TagD400F2:Genealogy TagD400F3:Clone masters TagD400F4:Guides TagD400F5:Properties TagD400FC:Arrowhead Obj10?/Obj11?/Obj12?/Obj13?:TechSoft internal object Obj14?/Obj15?/Obj16?/Obj17?:Clares unknown object Obj18?/Obj19?/Obj1A?/Obj1B?:Armstrong Walker object Obj1C?/Obj1D?/Obj1E?/Obj1F?:S Kilvington object Obj20?/Obj21?/Obj22?/Obj23?:Computer Concepts object Obj24?/Obj25?/Obj26?/Obj27?:Matrix unknown object Obj28?/Obj29?/Obj2A?/Obj2B?:iSV unknown object Obj2C?/Obj2D?/Obj2E?/Obj2F?:Oak unknown object Obj30?/Obj31?/Obj32?/Obj33?:OMI unknown object Obj34?/Obj35?/Obj36?/Obj37?:ArcWeb unknown object Obj38?/Obj39?/Obj3A?/Obj3B?:LM? unknown object Obj3C?/Obj3D?/Obj3E?/Obj3F?:Kiwi? unknown object Obj40?/Obj41?/Obj42?/Obj43?:Vantage object Tag1??:Computer Concepts unknown tag Tag2??:4Mation unknown tag Tag3??:Oak unknown tag Tag4??:Periscope unknown tag Tag5??:Techsoft unknown tag Tag6??:Wyddfa unknown tag Tag7??:Dalriada unknown tag Tag8??:S Kilvington unknown tag Tag9??:Longman Logotron unknown tag TagA??:Computer Concepts unknown tag TagB??:Clares unknown tag TagC??:Kudlian unknown tag TagD??:ArcWeb unknown tag TagE??:KiwiSoft unknown tag TagF??:Vantage tag Hope that helps. (That list is wildcarded) |
Richard Keefe (1495) 81 posts |
Do RiscOS 5 & 6 have seperate lists. Good too know about the 16bit doc I found said they were 32. Thanks for the info that was exactly what I was looking for. |
nemo (145) 2546 posts |
There are separate lists, but they are supposed to be synchronised regularly. That does require a degree of generosity, courtesy and cooperation that it appears has not always been achieved. I’ve been trying to find the email reply from Alan (who did allocations at the time) confirming my request (ipso facto) that objects be documented as 16bit numbers. Both Vector and Vantage already used the top 16 bits for their own purposes by that stage and Alan agreed that 65K object types was probably enough. As has proven to be the case. I can’t remember off the top of my head what Vector used them for (object locking?), but Vantage used them to encode metadata such as page number, family (like layers), invisibility etc. The idea is that an application could use those 16bits for its own object marking purposes. |
Richard Keefe (1495) 81 posts |
The following link leads me to believe that there may be a png, gif, tiff obj: http://www.apdl.co.uk/riscworld/volume8/issue2/ro6/index.htm Although it could be that riscos 6 can convert back & forwards. |
nemo (145) 2546 posts |
TIFF? I bet large amounts of money it doesn’t support many TIFF formats. :-( GIF? Animated?! Does nobody have a copy of RO6? |
Rick Murray (539) 13840 posts |
You’re asking that here ?!?!? (^_^) |
Steve Pampling (1551) 8170 posts |
It’s a perfectly reasonable question, to which the answer is probably “only a couple of people” rather than “no” I tend to work on acquiring information before deciding to do something and since ROL were as forthcoming with info as they were (not) I do not have a copy. Current development status means I’m not likely to get one either. What would be useful is a number of people checking the features of v6 and looking to replicate in 5.1x (or is that 5.xx since 5.2x may be along soon?) |
Chris Hall (132) 3554 posts |
Does anyone know if there is a definitive list of allocated draw file objects, Only some of such allocations will be ones recognised by the Draw module. There are ones, like text area objects, that have been defined for some time, but which Artworks and Impression Publisher do not handle correctly. Another example is a 256 colour new format sprite embedded in a draw file, which causes Artworks 2.X2 to crash. I would have thought that all draw file objects recognised by the Draw module, e.g. the new JPEG object added in RISC OS 3.6, should be rendered correctly by any application that accepts Draw files as input. |
Robert Hampton (1923) 57 posts |
It’s been a while since I was a Select subscriber, but I seem to remember that Draw used the ImageFileConvert module to convert any “foreign” files (except JPEG of course) to a Sprite and stored the images as a Sprite object internally. The RO6 programmers manuals are online at http://select.riscos.com/prm/ but don’t seem to mention Draw files. |
Raik (463) 2061 posts |
The a9home !Paint and !Draw works on my Beagle. The “ImageFileConvert module” not, I mean. Edit: Works also on my RPi. |
Chris Evans (457) 1614 posts |
Computer Concepts in Impression and possible in some of their other programs had their own ‘GDraw’ a DrawFile renderer. IIRC it used to be faster than Acorn’s and had some other plus points but it also has some Issues! Martin Wuerthner might know more! |
Stuart Swales (1481) 351 posts |
Resurrecting this in case anyone has the definitive answer to how many bits the Draw object field actually is. Looking at Jonathan Marten’s DrawView, which seems to succesfully render Vector & Poster files in addition to plain/compressed Draw, there is Draw::object type = static_cast<Draw::object>(tag & 0x0000FF); // extract 'draw_tagtyp tag' int layer = (tag & 0x00FF00)>>8; // extract 'draw_layer layer' Draw::objflag objflag = static_cast<Draw::objflag>((tag & 0xFF0000)>>16); // extract 'draw_objflags flag' where tag here is the object type word just read |
Dave Symes (425) 156 posts |
I’m here sometimes, and I use RO 6.20 every day. Dave |
nemo (145) 2546 posts |
I’ve still not found the text of the email from Alan confirming my request to truncate the object type to 16bit, but I can confirm that it was dated 8th January 1999: object%=&FFFF :REM As agreed with Pineapple 8/1/99 The important point is that whatever Vector did was unofficial (and you can do what you like in your own program), but the “16bit” declaration was official – it had previously been all 32bits. Note that the !Draw source still refers to the object type as a word. This has been wrong1 since the start of 1999. 1 Yeah but… the result of treating it as a word is to ignore objects that have any of the top 16bits set. These (since ‘99) have been reserved for the use of the file owner – indicated in the DrawFile header. Treating the type as 16bit means Draw would recognise the objects even when adorned. Currently, treating it as a word, such objects will be unrecognised and therefore missing. Ignoring the top 16bits would mean the objects can be recognised, but the visual result may still not be correct – layers may have been intended to be invisible for example; Vantage uses them (indirectly) for page numbers. As I recall, Vector et al do not use those bits when the file is saved as a plain DrawFile… but I may be wrong about that. Vantage definitely does (that’s why it was officially allocated). |