home *** CD-ROM | disk | FTP | other *** search
/ NetNews Usenet Archive 1992 #31 / NN_1992_31.iso / spool / comp / sys / acorn / tech / 1144 < prev    next >
Encoding:
Internet Message Format  |  1993-01-01  |  29.3 KB

  1. Path: sparky!uunet!pipex!demon!kernow.demon.co.uk!vulch
  2. Newsgroups: comp.sys.acorn.tech
  3. From: vulch@kernow.demon.co.uk (Anthony Frost)
  4. Reply-To: vulch@kernow.demon.co.uk
  5. Subject: New Template format discussion document
  6. Organization: VCS Kernow
  7. X-Mailer: ReaderS for the Acorn Archimedes
  8. Date: Fri, 1 Jan 1993 20:04:48 +0000
  9. Message-ID: <930101200448@kernow.demon.co.uk>
  10. Sender: usenet@demon.co.uk
  11. Lines: 712
  12.  
  13. Following the discussion before christmas about Template files, I've been
  14. asked to post the following by Tim Browse, author of !Glazier. He has given
  15. a couple of addresses he can be reached at, in addition if you want to mail
  16. to TimB@kernow.demon.co.uk I'll forward things to him.
  17.  
  18.          Anthony
  19.  
  20. ---------------------------------------------------------------------------
  21.  
  22. WARNING - THIS IS A LONG MESSAGE !
  23.  
  24. IGNORE IF YOU'RE NOT INTERESTED IN A NEW TEMPLATE FILE FORMAT.
  25.  
  26. Proposed Glass File Format
  27. ==========================
  28.  
  29. This file/message concerns the proposal of a new Template file format.
  30.  
  31. The present Risc OS format for window and icon definitions, while useful,
  32. can be restricting, and a standard for centralising resources would be
  33. a boon to many people.  In the absence of action by Acorn, I've decided to
  34. come up with standard for people to comment on, partly encouraged by a
  35. number of other people expressing a desire for such a facility.
  36. (By 'absence of action by Acorn', I mean that when I asked for a filetype
  37. to do this, no-one at Acorn said "Hang on, we're about to do something like
  38. that!", and, as I assume this is half the point of Acorn being the
  39. organisation that allocates filetypes, I guess nothing is happening soon.
  40. This may be a nave assumption but it's all I've got to go on. I guess if I
  41. asked Acorn outright (like I did about C++ etc) I'd get the usual "Acorn has
  42. a continuous product upgrade policy blahblahblah" (like I got about C++
  43. etc).
  44.  
  45. I'd certainly welcome comment from Acorn, but I'm not holding my breath.
  46.  
  47. The filetype is called, in case you're wondering, "Glass".  This is because
  48. it was obtained to be used by my freeware Template editor 'Glazier' (plug).
  49. However, I see no reason to restrict its use in any way.  The name stays,
  50. though :-)
  51.  
  52. Objectives
  53. ~~~~~~~~~~
  54.  
  55. * An alternative to the current Template file.
  56.  
  57. * Facility to hold information about entities other than windows and icons
  58.   e.g. menus, icon names, meta-icons etc.
  59.  
  60. * Make it simple to use, namely:
  61.  
  62.   + Provide a template editor that can create Glass files and convert 
  63.     Glass <-> Template files.
  64.  
  65.   + Provide support code to use any special features (e.g. meta-icons,
  66.     position independent menus etc)
  67.  
  68.   + Provide a program to create Template files from Glass files so Risc OS
  69.     Lib will work ok, and generally ease the transition.
  70.  
  71. * Reasonably efficient format, within reason - e.g. 32-bit words will be
  72.   used for number storage as opposed to bytes - I think we can handle an
  73.   overhead of a few hundred bytes in our files (at worst). Unless lots of
  74.   numbers are stored.
  75.  
  76. * Make it an extensible tagged file format.  Divide information into chunks,
  77.   and have keys + file offsets to find them.  Then if you don't understand a
  78.   certain chunk, it's ignored.  Also, a chunk must only contain relative
  79.   file offsets *within* itself so that chunks may just be copied verbatim
  80.   from one file to another.  This means someone could write a simple filter
  81.   to map the font chunk entries to different fonts and still preserve the
  82.   rest of the Glass data. i.e. it should be possible to divide up the chunks
  83.   of a Glass format file, and write them back in any order and the file
  84.   would still be a legal Glass file, as long as the header entries point to
  85.   the correct data.
  86.  
  87. * As you may have noticed, the above is very similar to Acorn's chunk file
  88.   format, and hence I propose to get an official chunk prefix from Acorn,
  89.   and use the Chunk file format.  The format of the chunks themselves will
  90.   of course be defined by myself and others.
  91.   The reason I intend to use the chunk file format is that everything it
  92.   does is needed by Glass files, and I see no reason to re-invent wheels.
  93.   A filetype is still needed so I and all the other lazy people can just
  94.   double click on the file to edit it :-)
  95.   A considerable amount of file structure will be present in the chunks
  96.   themselves, and it may seem unncessary to bother with chunk files with
  97.   this first standard, but bear in mind that this format is meant to be
  98.   extended.  If you feel strongly that chunk files should not be used, I
  99.   am open to suggestions.
  100.   Remember that if this standard is adopted, you're stuck with it - so it
  101.   had better be able to handle what you might want to do in the future.
  102.  
  103. * Make people *want* to use it by providing features they want(!)
  104.  
  105. * Where necessary, a chunk will be timestamped to indicate when it was
  106.   last edited. This may seem strange but it's necessary.
  107.   Consider the following:
  108.  
  109.   Without timestamps
  110.   ~~~~~~~~~~~~~~~~~~
  111.   Kate edits a window definition by moving an icon.
  112.   Kate tests new layout.
  113.   Kate edits source to add a new feature.
  114.   Kate makes the project, only to find that because the Glass file
  115.    has been edited, amu thinks the icon header file should be regenerated,
  116.    and it is, and so half the source is re-compiled as a result.
  117.   Kate yawns a lot.
  118.  
  119.   With timestamps, whatever program generates header files from Glass files
  120.   (a command line version will be available for use with amu) will only
  121.   generate from those chunks that, according to the chunks' timestamps, are
  122.   newer than the files they generate.
  123.   This means that in the above example, the icon header file is not
  124.   re-created, and so only the source that needs to be is compiled.
  125.   I don't care if you don't like this - I need it so it's going in!
  126.  
  127.   The timestamp will have to go at the head of the chunk itself as Acorn's
  128.   chunk file format doesn't support this, but I don't consider that a good
  129.   enough reason to discard the chunk format. Tell me if you disagree.
  130.  
  131.   Obviously, this assumes some intelligence on the part of the Template
  132.   Editor, but that shouldn't be too much of a problem.
  133.  
  134. * Don't use icon validation strings - there's already too much crap in them.
  135.  
  136. * Structure the file so that it's reasonably quick to load. i.e. don't
  137.   make it necessary to have to guess memory requirements (can you say
  138.   Wimp_LoadTemplate?) or to do excessive disc thrashing.
  139.   I have, in a number of places, made various trade-offs between
  140.   efficiency and convenience.
  141.  
  142. To establish a standard
  143. ~~~~~~~~~~~~~~~~~~~~~~~
  144. I have a filetype allocated from Acorn for this purpose.  I'd rather obtain
  145. a consensus of opinion on the subject than impose my own ideas (barring
  146. time-stamping of chunks - that's going in no matter what! :-).
  147.  
  148. For this reason, this message will be posted to comp.sys.acorn for comment,
  149. and publicised anywhere else I can think of.
  150. Please feel free to show this to anyone who may be interested or have some
  151. ideas, or may even be doing the same thing themselves - let's not waste
  152. effort!
  153.  
  154. If you see anything missing, or horrific causes for concern re: efficiency
  155. or you think that 40 characters is too much/little for window identifiers,
  156. or if
  157. you find anything that's just plain wrong, please tell me.  Just try not to
  158. prefix your communications with "You wazzocking great twonk!" or similar, as
  159. defenestration often offends.
  160.  
  161. For the first standard, the objective is simple.  The format will allow
  162. storage of Templates as in a normal Template file, and also a system for
  163. naming Icons, so that names rather than icon numbers can be used to identify
  164. icons in programs.
  165. Most programmers use #defines (or their equivalent) instead of numbers at
  166. the moment, but this will automate the process, by generating one or more
  167. header files containing the #defines/equates necessary.
  168. The programmer would use a template editor to associate names with icons.
  169.  
  170. The reasoning behind this is:
  171.  
  172. * People are more likely to adopt a standard if it is initially simple and
  173.   provides some feature they like (e.g. like saving them the trouble of
  174.   checking icon numbers). I certainly need it - some of Glazier's windows
  175.   have in excess of 100 icons.
  176.  
  177. * People are more likely to *comment* on a standard if the basic framework
  178.   is put in place and then extensions are added as and when required.
  179.   People are, I think, less likely to wade through a 35-page document that
  180.   comes at them from nowhere, like some electronic custard pie.  And if
  181.   people don't comment on it, some important feature may be missed,
  182.   causing the standard to fall from favour, and hence from use.
  183.  
  184. * If a simple standard is put forward, it will be agreed on reasonably
  185.   quickly (I hope!) and it can start to be used. If some huge standard is
  186.   introduced it will be argued over for ages and will probably die.  I don't
  187.   want this - I want something I can use, without having to keep on
  188.   re-inventing wheels. This concept may pass over the heads of ARM
  189.   assembler programmers ;-)
  190.  
  191. * I don't have time at present to think in depth about all the features
  192.   required and produce a *complete* standard.  And if I can't think about
  193.   it in depth, I'll probably get it wrong, and I don't want to do that.
  194.  
  195. * The important thing is to have an extensible standard!  Chunk files
  196.   make this possible.
  197.  
  198.                                                                  
  199. The Proposed Standard
  200. =====================
  201.  
  202. Basic Format
  203. ~~~~~~~~~~~~
  204. As mentioned, the file will be a chunk file as specified in the Acorn C
  205. (and,
  206. I assume, Objasm) manuals.  For Desktop C, it's on pp226-228 of the "Acorn
  207. Desktop Development Environment" manual.  If anyone doesn't have access to
  208. it
  209. I'm sure myself or someone else could outline the format if necessary.
  210.  
  211. In this explanation, the chunk file offset for Glass files is assumed to
  212. be "GLS_". This depends on Acorn. In fact, if they get unhelpful, I'll
  213. just use it anyway - won't really make much difference as the file will
  214. be filetyped too.
  215.  
  216. Chunks in Glass files
  217. ~~~~~~~~~~~~~~~~~~~~~
  218.  
  219. Name       Use
  220. ~~~~       ~~~
  221. GLS_INFO   Miscellaneous info about this file and the Glass version it
  222.            conforms to.
  223. GLS_FONT   Maps fonthandles used in Glass file to Risc OS font names.
  224. GLS_WIND   Window and icon definitions (much the same as Templates)
  225. GLS_NAME   Names used to refer to icons.
  226.  
  227. Chunk formats
  228. ~~~~~~~~~~~~~
  229.  
  230. Bear in mind throughout these descriptions that we know the total size
  231. of each chunk from the chunk file header.
  232.  
  233. Also, please bear in mind that although some structures may seem slightly
  234. wasteful of memory, this is the format of a disc file, and these wastages
  235. may not necessarily translate into memory wastages (e.g. indexes will only
  236. be used while loading the file, and then discarded).
  237.  
  238. GLS_INFO
  239. ========
  240.         Chunk    Field  Field Name &
  241.         Offset:  Size:  Meaning:
  242.  
  243.         0        4      Info_GlassVersion
  244.                         This is the version of the Glass Format that this
  245.                         file conforms to.  An unsigned word, at present
  246.                         assigned as follows:
  247.  
  248.                         MSB  LSB
  249.                         AAAABBCC
  250.  
  251.                         where:
  252.                         AA = reserved
  253.                         BB = Major version number
  254.                         CC = Minor version number
  255.  
  256.                         So version 2.12 would be encoded as &0000020C.
  257.  
  258.         4        16     Info_Reserved
  259.                         Reserved bytes - should be 0.
  260.  
  261.         20       ?      Info_CreatorName
  262.                         A null-terminated string indicating the program
  263.                         that created this Glass file.
  264.                         e.g. "TemplateEd" or "Glazier"
  265.  
  266. Comments
  267. ~~~~~~~~
  268. None.
  269.  
  270.  
  271. GLS_FONT
  272. ========
  273.         Chunk    Field  Field Name &
  274.         Offset:  Size:  Meaning:
  275. Header:
  276.         0        4      Font_Num (0 => no fonts used in Glass file)
  277.                         Number of font handles defined in this chunk.
  278.                         Font handles always numbered 0 to Font_Num-1.
  279.         4        16     Font_Reserved
  280.                         Reserved bytes - should be 0.
  281.         20              Start of font handle index - see below.
  282.  
  283. Font handle index:
  284.         i+0      4      Font_Offset 0
  285.                         Chunk offset to font data for handle 0.
  286.         i+4      4      Font_Offset 1
  287.                         Chunk offset to font data for handle 1.
  288.         ...
  289.        i+(n-1*4) 4      Font_Offset n-1
  290.                         Chunk offset to font data for handle n-1.
  291.  
  292. Font data entries: (pointed to by index entries)
  293.         d+0      4      Font_XSize
  294.                         x point size * 16
  295.         d+4      4      Font_YSize
  296.                         y point size * 16
  297.         d+8      ?      Font_Name
  298.                         A null-terminated string.
  299.                         (e.g. "Trinity.Medium.Italic\0")
  300.  
  301. Comments
  302. ~~~~~~~~
  303. None.
  304.  
  305.  
  306. GLS_WIND
  307. ========
  308.         Chunk    Field  Field
  309.         Offset:  Size:  Meaning:
  310. Header:
  311.         0        4      Wind_NumWindows - number of windows defined in
  312.                         this chunk.
  313.         4        4      Wind_WindDefnSize
  314.                         Size of the Wind_WindDefn Fields in window data
  315.                         blocks (see below).
  316.                         At present 88, but may change.
  317.         8        4      Wind_IconDefnSize
  318.                         Size of the IconDefn fields in window data
  319.                         blocks (see below).
  320.                         At present 32, but may change.
  321.         12       4      Wind_IndDataOffset
  322.                         Chunk offset of indirected data table for this
  323.                         window.
  324.         16      16      Wind_Reserved
  325.                         Reserved bytes - should be 0.
  326.         32
  327. Index:
  328.         i+0      40     Wind_Id
  329.                         A null-terminated string identifying the window.
  330.                         e.g. "ProgInfo".
  331.         i+40     4      Wind_Offset
  332.                         Chunk offset for data for this window entry.
  333.         i+44     4      Wind_Size
  334.                         Size of data for this window entry
  335.         i+48     16     Wind_Reserved
  336.                         Reserved bytes - should be 0.
  337.         i+64            Start of next index entry (i.e. Wind_Id).
  338.  
  339. Window Data blocks:
  340.         d+0      88     Wind_WindDefn
  341.                         A window definition block as passed to the SWI
  342.                         Wimp_CreateWindow, with the exceptions noted below.
  343.         d+88     32     Wind_IconDefn 0
  344.                         Icon definition for first icon of this
  345.                         window (if any).  Block is as passed to the SWI
  346.                         Wimp_CreateIcon, with the exceptions noted below.
  347.         d+120    32     Wind_IconDefn 1
  348.                         etc...
  349.  
  350.  
  351. Indirected Data tables:
  352.         t+0      4      Ind_NumEntries
  353.                         Number of data entries in this table.
  354.         t+4      4      Ind_ChunkOffset 0
  355.                         Chunk offset for indirected data entry 0            
  356.            t+8      4      Ind_ChunkOffset 1
  357.                         Chunk offset for indirected data entry 1
  358.         ...
  359.         t+       4      Ind_ChunkOffset Ind_NumEntries-1
  360.  4*Ind_NumEntries       Chunk offset for indirected data entry number
  361.                         (Ind_NumEntries-1).
  362.  
  363. Indirected Data blocks:
  364.         id+0      ?     Ind_Data
  365.                         Can be a validation string, or text string,
  366.                         or sprite name.  Null-terminated - NOT control
  367.                         terminated!
  368.  
  369. Comments
  370. ~~~~~~~~
  371. Window data blocks
  372. ~~~~~~~~~~~~~~~~~~
  373. Offsets in these blocks should not be taken to be valid forever - use
  374. Wind_WindDefnSize and Wind_IconDefnSize to ensure any embarrassments are
  375. avoided.
  376.  
  377. Window data blocks need not be in the order they appear in the index, so
  378. long as the chunk offsets are correct.  They need not be contiguous in the
  379. chunk either.
  380.  
  381.  
  382. The exceptions in window/icon definition blocks are as follows:
  383.  
  384. Sprite area control block pointers
  385. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  386. In Glass files, two possible values are used:
  387. 0 => Local application sprite area
  388. 1 => Wimp sprite area
  389.  
  390. Indirected data
  391. ~~~~~~~~~~~~~~~
  392. When indirected icons (including the window title bar) occur, the datum for
  393. a sprite name, text buffer or a validation string is actually an index
  394. into the indirected data table. Use this datum to find the chunk offset
  395. of the data.
  396.  
  397. E.g.
  398. An indirected text icon has a validation string entry of 2.  Look up the
  399. third entry (as index starts from 0) in the indirected table index.  This
  400. gives the chunk offset of the data.  Thus looking in the file at position
  401. (ChunkStart+ChunkOffset) will yield the required data.
  402. This additional level of indirection is intended to make it slightly easier
  403. to generate Glass files (as you'll know if you've ever tried to generate
  404. Template files :-( ).
  405.  
  406. Font handles
  407. ~~~~~~~~~~~~
  408. These are, of course, the internal font handles used throughout the
  409. Glass file, and not font handles as understood by the Risc OS FontManager
  410. module.  The GLS_FONT chunk can be used to convert them to real font
  411. handles - this will usually be done by the library routines that support
  412. Glass files.
  413.  
  414.  
  415. GLS_NAME
  416. ========
  417.         Chunk    Field  Field
  418.         Offset:  Size:  Meaning:
  419. Header:
  420.         0        5      Name_TimeStamp
  421.                         Standard 5-byte Risc OS Time stamp.
  422.                         See Risc OS 2 PRMs, p550, "Real time".
  423.         5        4      Name_IconPrefix
  424.                         Chunk offset of null-terminated string specifying
  425.                         the global prefix for icon names.
  426.                         0 => no prefix.                                     
  427.                    9        4      Name_IconSuffix
  428.                         Chunk offset of null-terminated string specifying
  429.                         the global suffix for icon names.
  430.                         0 => no suffix.
  431.         13
  432.  
  433. Window name block: (assuming n icons in window)
  434.         w+0      40     Name_WindowId
  435.                         Window Id of the window this naming block refers
  436.                         to. (see GLS_WIND chunk details).
  437.         w+40     4      Name_WindowPrefix
  438.                         Chunk offset of null-terminated string specifying
  439.                         the prefix for names of icons in this window.
  440.                         0 => no prefix.
  441.         w+44     4      Name_WindowSuffix
  442.                         Chunk offset of null-terminated string specifying
  443.                         the suffix for names of icons in this window.
  444.                         0 => no suffix.
  445.         w+48     4      Name_IconName 0
  446.                         Chunk offset of null-terminated string specifying
  447.                         the name of icon 0 of this window
  448.                         0 => anonymous icon
  449.         w+52     4      Name_IconName 1
  450.                         Chunk offset of null-terminated string specifying
  451.                         the name of icon 1 of this window
  452.                         0 => anonymous icon
  453.         ...
  454.       w+48+4*n   4      Name_IconName n-1
  455.                         Chunk offset of null-terminated string specifying
  456.                         the name of icon (n-1) of this window
  457.                         0 => anonymous icon
  458.       w+52+4*n   ?      Data for icon names...
  459.  
  460. Comments
  461. ~~~~~~~~
  462. There is a window name block for each window that contains icons referenced
  463. by name.  Hence a window with no icons referenced by name (eg a window with
  464. no icons such as Edit's main window) would not have a window name block.
  465.  
  466. Icon names have 5 components, all but one of which, the actual icon
  467. name, may be null.  An full icon name is a string constructed as follows:
  468.  
  469.    Name_IconPrefix   +
  470.    Name_WindowPrefix +
  471.    Name_IconName     +
  472.    Name_WindowSuffix +
  473.    Name_IconSuffix
  474.  
  475. This allows for (almost) any naming scheme the user can think of.
  476.  
  477. e.g. The scheme I use at present in Glazier would be defined as:
  478.  
  479. Name_IconPrefix = "ICON_"
  480. Name_IconSuffix = ""
  481.  
  482. And for the ProgInfo window:
  483.  
  484. Name_WindowPrefix = "PROGINFO_"
  485. Name_WindowSuffix = ""
  486.  
  487. And Icon names...
  488.  
  489. Name_IconName = "VERSION"
  490.  
  491. giving a name of "ICON_PROGINFO_VERSION", which is what I in fact use.
  492.  
  493. Thus any naming scheme can be used, or, if the user sets all suffixes and
  494. prefixes to be null, they can just use a unique name for each icon in the
  495. program.  Or they could have:
  496.  
  497. IconOK
  498. IconCANCEL
  499.  
  500. or
  501.  
  502. OkButton_windowQUIT
  503. CancelButton_windowQUIT
  504.  
  505. or anything really...
  506.  
  507.                            End Of Proposed Standard
  508.  
  509.                                ------ oOo ------
  510.  
  511.  
  512. Just so we're clear, my philosophy is as follows:
  513.  
  514. I would like to see something on the Arc which is an extension of the
  515. Template concept.  Templates are already very useful (much better than the
  516. way X windows does things) - something along the lines of MS-Windows
  517. resources would be nice, although I'd prefer it to be not quite as grotesque
  518. and obscene to use (I fight with Borland C++/MS-Windows for a living).
  519.  
  520. I have written a freeware template editor, Glazier (which I may have
  521. mentioned before :-) which will support as many features of the Glass
  522. format as I have time for. I will probably provide the source as freeware
  523. at some point so you can add your own features if you so desire, and
  524. possibly send them to me for inclusion in a future release.  The source is
  525. in C, and uses the DeskLib library (try changing from RiscOSLib to DeskLib
  526. for your next project - it's like taking off a strait-jacket).
  527.  
  528. The Glass format will be completely public, and if someone wants to
  529. implement a feature I consider relevant to it, I won't put up too much
  530. opposition, even if Glazier isn't updated to use it. I may object if I think
  531. it could or should be done better some other way.
  532.  
  533. I am *not* interested in a "my template editor is better than your template
  534. editor" argument (users of Arcade BBS may detect an undercurrent here).
  535.  
  536. I am *not* interested in slagging off Acorn for the fun of it (well, maybe
  537. just a bit), although it would have been nice for them to have introduced
  538. larger data blocks for icons in Risc OS 3.
  539.  
  540. I am keen to get a group of people involved in this (so far, it's me and
  541. thee, TMOTA) as I do have other things to do (like writing programs using
  542. the fantabulous new Glass format), so the more the merrier, as long as it's
  543. organised properly.  As I have the filetype, I'll be the moderator for the
  544. time being.  This may change if someone really keen comes along.
  545.  
  546. I'm not interested in crippling other author's template editors etc - if I
  547. implement a new feature, I'll distribute the source to whoever's interested
  548. so they can see how it works easily, and can use the source in their own
  549. programs (as long as (a) it's non-commercial or (b) they get my written
  550. permission first).
  551.  
  552. While we're at it, I'm useless at defining icons - anyone feel like defining
  553. one for Glass files?  I've had a go, but my effort's a bit specific to
  554. Glazier.
  555.  
  556.  
  557. +=============+
  558. |FLAME WARNING|
  559. +=============+
  560.  
  561. Could we PLEASE have a little restraint in quoting on comp.sys.acorn???
  562.  
  563. Your message should ideally contain no more than one third quoted material
  564. (unless your message is short ie <20 lines in which case two thirds is about
  565. right).
  566.  
  567. Some people have to *PAY* to read comp.sys.acorn and seeing the
  568. point-and-grunt users who have fallen into a University quoting banal (and
  569. frankly very tedious after the third time of seeing them) signatures to
  570. three levels of nesting is rather frustrating. Is it ever necessary to quote
  571. a signature???
  572.  
  573. If you wonder why British Telecom (substitute local Telephonic Company here)
  574. makes so much damn money, it's partly down to you!  I know some people think
  575. big signatures are great but most people grew out of them ages ago (I must
  576. admit I never found them appealing).
  577.  
  578. Here's a good rule of thumb:
  579. Count the characters you typed in response to a message, and then count the
  580. characters involved any quoting and signatures (including yours). If the
  581. percentage of junk out of total message size is more than 50%, do something
  582. about it.
  583.  
  584. The worst case I saw at University was a message of about 1000 characters,
  585. of which 3 were relevant(!)
  586.  
  587. +==========+
  588. |FLAME ENDS|
  589. +==========+
  590.  
  591. Having said that, sorry this is such a long message, but it's a bit tricky
  592. to
  593. define a standard otherwise.
  594.  
  595. Some individual messages:
  596. =========================
  597.  
  598. To Jason Williams:
  599. ~~~~~~~~~~~~~~~~~~
  600. Thanks for forgetting my name (:-) and for the ideas on menus etc - I may
  601. even get around to it one day.  I'm sure you'll have a lot to say on this
  602. standard :-)
  603. Feel free to post Glazier to comp.mumble.binaries/newky server/wherever - I
  604. don't mind and I'd rather people didn't have to use FormEd >:-)
  605. You may find some people hate it mind you - some people have said it's awful
  606. to use; FormEd is much better; Glazier's full of bugs and I should junk it 
  607. and re-write it from scratch.  It's funny, but I've never seen such
  608. vitriolic
  609. reactions to a piece of FREE software before - is there something about
  610. Template Editors that really gets the blood of a manly Archimedes programmer
  611. boiling? :-)
  612.  
  613. To D.Pead:
  614. ~~~~~~~~~~
  615. > The problem with using a new template file standard is (a) I don't think
  616. > you could ever get it to work with RISC-OS lib without horrendous kludges.
  617. > (Yes, RISC-OS Lib is c**p, but I wrote a few programs before I realised
  618. > that and I don't fancy re-writing them!) and (b) If those lads and lasses
  619. > at Acorn & Norcroft sort us out with a nice C++ compiler and class
  620. > library, you'd be back to square one.
  621.  
  622. (a) I don't agree with this. I originally conceived this for use with
  623.     RISC_OSlib.
  624.     You just have a Glass file containing the templates and icon names in
  625. one
  626.     place.  Part of the make process could be to generate a 'vanilla' Acorn
  627.     Template file and a header file for icon name constants.  There's no
  628.     reason why this should then not be used with Risc OS Lib.  The point is
  629.     that the Glass file is the repository for resources - whether it's
  630.     actually used directly at run-time is not important.
  631.     The important thing is automating things that the programmer shouldn't
  632.     have to worry about.
  633.     Note that when using RISC_OSlib the Glass file would not need to be
  634.     distributed with the final program, only the Template file.  A program
  635.     that used Glass-specific features, on the other hand, would have the
  636.     Glass file but probably not the Template file.
  637.     You don't have to worry about redundant information being in the Glass
  638.     file of your final application (e.g. icon names) cos you can just filter
  639.     it out, and very easily too, due to the autonomous nature of the chunks.
  640.  
  641. (b) Quite possibly, but the classes would still be based on Risc OS windows,
  642.     and all we're really providing is a more convenient way of using
  643.     resources. Icon name constants etc would still be needed.
  644.     Hopefully, Acorn might be a bit more professional and provide the
  645.     library sources (seeing how much they charge for Desktop C), so Glass
  646.     features could be added with a minimum of fuss, as long as the code is
  647.     reasonably modular, like RISC_OSlib...ahhh...oh dear...damage alert!
  648.  
  649. To Dick Alstein:
  650. ~~~~~~~~~~~~~~~~
  651. I did get your message, but my reply bounced. I'd like to see a copy of your
  652. editor; I'll send you the latest version of Glazier in return.
  653.  
  654. To John Tytgat:
  655. ~~~~~~~~~~~~~~~
  656. I gave a copy of Glazier to a member of BASS at the meet after the '92 BAU
  657. show.  He said he wrote !Dissi - I thought this was you? Do you really have
  658. such a short memory, or was it not you, and BASS members just don't talk to
  659. each other? :-)  He even looked like the picture of you in the info window
  660. of Dissi...
  661.  
  662.  
  663. Scene of the Crime
  664. ==================
  665. If anyone wants to contact me, I read comp.sys.acorn, but usually don't post
  666. to it (my local feed is read-only). I am omni-present on Arcade BBS's
  667. message areas (in the words of another user :-).
  668. Arcade is a UK ANSI board: 081-654-2212/081-655-4412, most speeds.
  669. Prefix with international code if outside UK, and probably lose the 0 from
  670. the front of 081 too, I shouldn't wonder.
  671.  
  672. Failing that you might be able to get me on internet:
  673.  
  674. tb@liszt.thorn-emi-crl.co.uk
  675.  
  676. which probably won't work, but this might:
  677.  
  678. tb%liszt.thorn-emi-crl.co.uk@ukc.ac.uk
  679.  
  680. (I am indebted to Andy Mell for this information).
  681.  
  682. Failing that, Snailmail:
  683.  
  684. 1, Arkle House,
  685. 6, Chiltern View Road,
  686. Uxbridge, 
  687. Middlesex.
  688. UB8 2PA
  689. United Kingdom.
  690.  
  691. I think that's it - I await your comments - I hope they are as interesting
  692. as some very interesting things.  When I've got a reasonable number of
  693. ideas,
  694. I'll collect them altogether, throw away any I didn't think of (ha ha, only
  695. kidding) and post the results.  When we eventually agree on a format, I'll
  696. post the filetype+format and an example file or two.
  697.  
  698. Cheers,
  699.  
  700. Tim Browse
  701.  
  702. PS. Note short signature. I know I provided a lot of contact points which
  703. could have gone in a signature, but they're not normally needed.  What's
  704. wrong with people asking for contacts when they're needed? Hasn't anyone
  705. ever heard of providing/using resources on demand? Are there any computer
  706. scientists out there?
  707.  
  708. PPS. Stop press: I just uploaded this to Arcade BBS and here's some things
  709. I've already thought of that are missing/wrong: :-(
  710.  
  711. GLS_NAME chunk:
  712. No room for expansion in header.
  713. Need filenames to specify where icon constants should go. Need a global one,
  714. and one for each window. This allows for putting all icon names into one 
  715. file, or for having different headers for each window. 
  716.  
  717. Time-stamps: may as well time-stamp all chunks just to keep it simple, and
  718. also to avoid unnecessary re-generation of template files.
  719.  
  720. Round time-stamp fields up to 8 bytes so that when headers are loaded into
  721. memory, words are actually word-aligned - bit obvious this one! (blush)
  722.  
  723.                           ...message ends...
  724.  
  725.