esorcerer contains a very powerful, fully 32-bit Data Editor, which you can
use to edit arbitrary binary resource or data fork data in a structured manner.
The Data Editor parses the data of a given type
by following a set of instructions that declares the structure to use.
Each set of instructions is called a template. Each template is itself
kept in a resource, and Resorcerer provides a dedicated Template Editor for creating, viewing,
and maintaining templates.
Resorcerer looks for standard templates for commonly edited system or application resources
in its own templates folder, shipped with the application. You can also keep templates for
your private resources types in a Private Templates folder, or you can keep one right in the
same file as the custom resource it describes (Resorcerer will use it first before looking
elsewhere).
Each template is stored
in a resource of type 'TMPL'. The first 4 characters of the 'TMPL' resource's
name uniquely identify the type of data structure the template declares.
The 'TMPL' resource is itself a binary data structure. It is nothing more than an arbitrarily long repeated list of entries called fields, where each field consists of two parts:
The Pascal string is called the field's label. It consists of an unsigned length
byte followed by that many bytes of data. The label primarily serves to identify
for the user of the Data Editor what each parsed data field's purpose is. Occasionally,
the label has certain special characteristics for the benefit of the Data Editor's
parser, but in general it is equivalent to a comment in a compiled language.
The four-byte constant, or type, encodes the size and manner of presentation of the next data field
to be parsed from the data. There are over 120 defined field types in Resorcerer, described below.
There are no pad bytes anywhere in the 'TMPL' structure, so a 4-byte type field can occur
at any byte position in the template.
The above-described template structure was first implemented in Apple's ResEdit
resource editor in the mid-80's.
ResEdit supports 35 four-byte field types with which you can define and then directly edit
various simple data structures.
Although these field types suffice to describe a minimal set of standard Macintosh resources,
in the ensuing decade developers have needed to create much larger and more complicated
data structures than ResEdit can support.
Fortunately, if you've invested time in creating your own ResEdit templates, Resorcerer won't let you down.
The parsing engine in Resorcerer's Data Editor completely supports ResEdit-style 'TMPL' resources,
at the same time as significantly enhancing the kinds of data that you parse and edit.
The Data Editor's interface is fairly different from ResEdit's, but much faster and more powerful. Unlike ResEdit, the Data
Editor in Resorcerer is also completely 32-bit so it can handle very large resources quickly and easily.
If you would like to try the Resorcerer template system out (as well as the rest of the program), first
download our demo.
Then try opening the special 'Demo' 128 resource in the accompanying file, "Resorcerer TMPL Demo".
Resorcerer's extended field types provide support for
The following tables list all Resorcerer-supported template field types, as of version 2.0.
Those types that will only work in Resorcerer are noted in red.
All types marked Both will also work in ResEdit templates.
Resorcerer | |||
Resorcerer | |||
Resorcerer | |||
Bit and Bit Field Types (parsing proceeds from high-order bits first)
Resorcerer | |||
Resorcerer | |||
Resorcerer | |||
Resorcerer | |||
Resorcerer | |||
Resorcerer | |||
Resorcerer |
Miscellaneous Graphic and System Field Types
Resorcerer | |||
Resorcerer | |||
Resorcerer | |||
Resorcerer | |||
Resorcerer | |||
Resorcerer | |||
Resorcerer | |||
Resorcerer | |||
Resorcerer |
* You can configure Resorcerer to use any 16-bit non-zero value when setting a BOOL field to true.
** The 'PNT ' field type ends in a space character.
Floating and Fixed Point Field Types
Resorcerer | |||
Resorcerer | |||
Resorcerer | |||
Resorcerer | |||
Resorcerer | |||
Resorcerer | |||
Resorcerer | |||
Resorcerer | |||
Resorcerer | |||
Resorcerer |
ASCII Text String Field Types
Resorcerer | |||
Resorcerer | |||
Resorcerer | |||
Resorcerer |
* This field type's behavior is configurable between ResEdit-style and Resorcerer's more consistent style.
Hexadecimal Dump Field Types
Resorcerer | |||
Resorcerer | |||
Resorcerer | |||
Resorcerer | |||
Resorcerer | |||
Resorcerer | |||
Resorcerer | |||
* This field type's behavior is more general in Resorcerer's Data Editor than in ResEdit's
Skip Offset Field Types (automatically computed)
Resorcerer | |||
Resorcerer | |||
Resorcerer | |||
Resorcerer | |||
Resorcerer | |||
Resorcerer | |||
Resorcerer |
Symbolic Constants and Comments
Resorcerer | |||
Resorcerer |
Counted Lists/Arrays
Resorcerer | |||
Resorcerer | |||
Resorcerer | |||
Resorcerer | |||
Resorcerer | |||
Resorcerer | |||
Resorcerer | |||
Resorcerer |
Key Values for Subsequent Variant Items
Resorcerer | |||
Resorcerer | |||
Resorcerer | |||
Resorcerer | |||
Resorcerer | |||
Resorcerer | |||
Resorcerer | |||
Resorcerer | |||
Resorcerer | |||
Resorcerer | |||
Resorcerer | |||
Resorcerer | |||
Resorcerer | |||
Resorcerer |
Alignment Field Types (Uneditable)
Resorcerer | |||
Resorcerer |
Filler Field Types (Uneditable)
Resorcerer |
Inserting New Data Fields in Existing Resources
Resorcerer | |||
Resorcerer | |||
Resorcerer | |||
Resorcerer | |||
Resorcerer | |||
Resorcerer | |||
Resorcerer |
Deleting Old Data Fields from Existing Resources
Resorcerer | |||
Resorcerer | |||
Resorcerer | |||
Resorcerer | |||
Resorcerer | |||
Resorcerer | |||
Resorcerer |
Big and Little-Endian Parsing
Resorcerer | |||
Resorcerer |
Pre- and Post-Processing Data with Code Filters
Resorcerer |
For resources that can't be fully described by the above language, you can use Resorcerer's resource
filtering system to pre- and post-process resources to make them temporarily editable.
Thus, nearly all possible data structures (that have anything in them worth editing) are
interactively editable with Resorcerer. This includes:
This system lets you design a template for those parts of a resource that
humans should attend to, and an algorithmic code resource for those structural parts of a
resource that the computer is better at attending to. Because the filter code need have no
user-interface, filters are much easier to create as code resources than a complete ResEdit
editor might be. A filter's sole responsibility is to convert one handle of data into another
handle of data, and then back again.
For instance, Resorcerer's Data Editor lets you open any of the standard color QuickDraw resources
with indexed pixmaps ('crsr', 'cicn', or 'ppat') in them in order to see their color
tables. The various templates that parse the QuickDraw resources are filtered, so that they can
perform proper computations for pixmap data sizes, etc. that would otherwise be impossible in a
standard non-filtered template.
Home Page | Ordering | 125 Ways | Free Demos |