jCode - PilRC
About - Download - Patch-Zone - History - Archive - Manual - Contributors

PilRC v2.7a / PilRCUI
User Manual

Aaron Ardiri (aaron@ardiri.com)
6 Janurary 2001
Check the PilRC Home Page for the latest version.

Description

    PilRC A resource compiler for the Palm Computing Platform
    PilRCUI A form previewer. It launches a window which previews a close approximation of forms as they would appear on the Palm. Clicking in the content window of PilRCUI will cause it to reload the current script.

    NOT UPDATED: - any GUI programmers want to help?

Table of Contents Usage
    pilrc   [-L LANGUAGE] [-I INCLUDE PATH] [-D MACRO(=VAL)] [-R RESFILE] 
            [-q] [-V] [-Fh] [-Fj] [-F5] [-Fg] [-Fkm] [-Fkt] [-allowEditID]
    	file.rcp [output path]
    pilrcui [-L LANGUAGE] file.rcp
    -L LANGUAGE Generate resource files for target language, LANGUAGE.
    -I INCLUDE PATH Search INCLUDE PATH when looking for include or bitmap files.
    NOTE: multiple paths be repeating the -I option.
    -D MACRO[=VAL] Define a pre-processor symbol with an optional value.
    The macros defined with the -D option can be referenced in #ifdef statements in the resource file for conditional compilation.
    NOTE: if no value is specified, the symbol will given the value of 1.
    -R RESFILE Output a .res file specifying all the resources emitted by PilRC.
    -H INCFILE Output a .h file containing auto-generated resource item IDs for resource items that were defined without an ID previously.
    NOTE: If -H is not specified then undefined IDs are considered errors.
    -q Less noisy output, for you minimalists.
    -V Generate M$ (VS-style) warning/error output (default is GNU-style).
    -Fh Use Hebrew font widths for AUTO width calculations.
    -Fj Use Japanese font widths for AUTO width calculations.
    -F5 Use Chinese (Big5) font widhts for AUTO width calcuations.
    -Fg Use Chinese (GB) font widhts for AUTO width calcuations.
    -Fkm Use Korean font widhts for AUTO width calcuations (Hanme font)
    -Fkt Use Korean font widhts for AUTO width calcuations (Hantip font)
    -allowEditID Allow the use of "edit menu" ID values (10000-10007 inclusive).
    file.rcp Input file describing the resources to be emitted. Each resource is written as a separate file in the output path directory. The output filename is constructed by appending the hexcode resource ID to the four character resource type.
    output path Directory where .bin files should be generated.
Example:
    pilrc myprogram.rcp
    pilrc -I c:\resources -L FRENCH myprogram.rcp
    pilrc -I c:\resources -L BIG5 -F5 -R myprogram.res myprogram.rcp c:\output 
Understanding the Manual

Syntax

    Items in all CAPS appear as literals in the file.
    Items enclosed in "<" and ">" are required fields.
    Items enclosed in "[" and "]" are optional fields.

    Each field's required type is indicated by a suffix after the field name (see below for types).

Types
    .i identifier
    example: kFoo
    .c character
    (may contain normal C style character escapes)
    example: "O"
    .s string
    (may contain normal C style character escapes)
    example: "Click Me"
    .ss multi line string
    PilRC will concatenate strings on seperate lines
    example: "Now is the time for all good " \
                    "men to come and aid of their country"
    .n number
    defined constant or simple arithmetic expression. Valid operators are "+", "-", "*" and "/". Precendence is left to right, unless changed with the use of parenthesis.
    NOTE: Math calculations are integer based.
    example: 23
                    12+3+1
                    12*(2+3)
                    'PALM'
    .p position co-ordinate
    may be a number, expression or one of the following keywords.
      AUTO Automatic width or height.
      Value is computed based on the text in the item.
      CENTER Centers the item either horizontally or vertically.
      CENTER@<coord.n> Centers the item at the co-ordinate following.
      RIGHT@<coord.n> Aligns the item at the right co-ordinate following.
      BOTTOM@<coord.n> Aligns the item at the bottom co-ordinate following.
      PREVLEFT Previous items left co-ordinate.
      PREVRIGHT Previous items right co-ordinate.
      PREVTOP Previous items top co-ordinate.
      PREVBOTTOM Previous items bottom co-ordinate.
      PREVWIDTH Previous items width.
      PREVHEIGHT Previous items height.
    example: PREVRIGHT+2
                    CENTER@80/2

    NOTE: AUTO and CENTER are not valid in arithmetic expressions.

Comments

    Single line comments begin with "//".
    Block comments exist between the "/*" and "*/" tokens.

    NOTE: "//" comments within the definition of objects are treated as errors.

Include Files

    The .rcp file may contain #include directives.
    This allows a programmer to have one header file for their project containing pre-defined resource IDs. Source code can reference the symbols as can PilRC.

    PilRC understands three include file formats.

      .h #define <Symbol.i><Value.n>
      .inc <Symbol.i> equ <Value.n>
      .java, .jav package <PackageName>

      public class <ClassName> {
           public static final short <Symbol.i> = <Value.n>;
      }

    Once defined, a symbol can be used in place of any number.
    NOTE: #ifdef derivatives are ignored by PilRC.
Resource Language Reference FORM (tFRM)

    FORM ID <FormResourceId.n> AT (<Left.p> <Top.p> <Width.p> <Height.p>)
      [FRAME] [NOFRAME]
      [MODAL]
      [SAVEBEHIND] [NOSAVEBEHIND]
      [USABLE]
      [HELPID <HelpId.n>]
      [DEFAULTBTNID <BtnId.n>]
      [MENUID <MenuId.n>]
    BEGIN
      <OBJECTS>
    END 
Where <OBJECTS> is one or more of:

    TITLE <Title.s>
    BUTTON <Label.s> ID <Id.n> AT (<Left.p> <Top.p> <Width.p> <Height.p>)
    [USABLE] [NONUSABLE] [DISABLED] [LEFTANCHOR] [RIGHTANCHOR]
    [FRAME] [NOFRAME] [BOLDFRAME] [FONT <FontId.n>]
    [GRAPHICAL] [BITMAPID <BitmapId.n>] [SELECTEDBITMAPID <BitmapId.n>]
    PUSHBUTTON <Label.s> ID <Id.n> AT (<Left.p> <Top.p> <Width.p> <Height.p>)
    [USABLE] [NONUSABLE] [DISABLED] [LEFTANCHOR] [RIGHTANCHOR]
    [FONT <FontId>] [GROUP <GroupId.n>]
    [GRAPHICAL] [BITMAPID <BitmapId.n>] [SELECTEDBITMAPID <BitmapId.n>]
    CHECKBOX <Label.s> ID <Id.n> AT (<Left.p> <Top.p> <Width.p> <Height.p>)
    [USABLE] [NONUSABLE] [DISABLED] [LEFTANCHOR] [RIGHTANCHOR]
    [FONT <FontId.n>] [GROUP <GroupId.n>] [CHECKED]
    POPUPTRIGGER <Label.s> ID <Id.n> AT (<Left.p> <Top.p> <Width.p> <Height.p>)
    [USABLE] [NONUSABLE] [DISABLED] [LEFTANCHOR] [RIGHTANCHOR]
    [FONT <FontId.n>]
    [GRAPHICAL] [BITMAPID <BitmapId.n>] [SELECTEDBITMAPID <BitmapId.n>]
    SELECTORTRIGGER <Label.s> ID <Id.n> AT (<Left.p> <Top.p> <Width.p> <Height.p>)
    [USABLE] [NONUSABLE] [DISABLED] [LEFTANCHOR] [RIGHTANCHOR]
    [FONT <FontId.n>]
    [GRAPHICAL] [BITMAPID <BitmapId.n>] [SELECTEDBITMAPID <BitmapId.n>]
    REPEATBUTTON <Label.s> ID <Id.n> AT (<Left.p> <Top.p> <Width.p> <Height.p>)
    [USABLE] [NONUSABLE] [DISABLED] [LEFTANCHOR] [RIGHTANCHOR]
    [FRAME] [NOFRAME] [BOLDFRAME] [FONT <FontId.n>]
    [GRAPHICAL] [BITMAPID <BitmapId.n>] [SELECTEDBITMAPID <BitmapId.n>]
    LABEL <Label.s> ID <Id.n> AT (<Left.p> <Top.p>)
    [USABLE] [NONUSABLE] [FONT <FontId.n>]
    FIELD ID <Id.n> AT (<Left.p> <Top.p> <Width.p> <Height.p>)
    [USABLE] [NONUSABLE] [DISABLED] [LEFTALIGN] [RIGHTALIGN]
    [FONT <FontId.n>] [EDITABLE] [NONEDITABLE] [UNDERLINED]
    [SINGLELINE] [MULTIPLELINES] [DYNAMICSIZE] [MAXCHARS <MaxChars.n>]
    [AUTOSHIFT] [NUMERIC] [HASSCROLLBAR]
    POPUPLIST ID <Id.n> <ControlId.n> <ListId.n>
    LIST <Item.s> ... <Item.s>
    ID <Id.n> AT (<Left.p> <Top.p> <Width.p> <Height.p>)
    [USABLE] [NONUSABLE] [DISABLED] [VISIBLEITEMS <NumVisItems.n>]
    [FONT <FontId.n>]
    FORMBITMAP AT (<Left.p> <Top.p>)
    [BITMAP <BitmapId.n>] [USABLE] [NONUSABLE]
    GADGET ID <Id.n> AT (<Left.p> <Top.p> <Width.p> <Height.p>)
    [USABLE] [NONUSABLE]
    TABLE ID <Id.n> AT (<Left.p> <Top.p> <Width.p> <Height.p>)
    [ROWS <NumRows.n>] [COLUMNS <NumCols.n>]
    [COLUMNWIDTHS <Col1Width.n> ... <ColNWidth.n>]
    SCROLLBAR ID <Id.n> AT (<Left.p> <Top.p> <Width.p> <Height.p>)
    [USABLE] [NONUSABLE] [VALUE <Value.n>] [MIN <MinValue.n>]
    [MAX <MaxValue.n>] [PAGESIZE <PageSize.n>]
    GRAFFITISTATEINDICATOR AT (<Left.p> <Top.p>)
    SLIDER ID <Id.n> AT (<Left.p> <Top.p> <Width.p> <Height.p>)
    [USABLE] [NONUSABLE] [DISABLED] [VERTICAL] [FEEDBACK]
    [THUMBID <BitmapId.n>] [BACKGROUNDID <BitmapId.n>]
Notes:

  • ID <Id.n> can be replaced with AUTOID. PilRC will assign an identifier for each control which specifies AUTOID. This is useful for controls which you won't refer to within the application (ie: LABEL's). Auto ID's begin at at 9000 and increase sequentially.
  • The bitmap referenced by the FORMBITMAP tag must appear as a seperate resource in the rcp file via the BITMAP tag.
  • MAXCHARS is required for FIELD tag to work properly.
  • Any user defined fonts defined by FONT >= 128 and FONT <= 255 must be before above the FORM definition using the FONT tag.

  • Any translations defined in the must be declared before the FORM definition using the TRANSLATION tag.
Example:

FORM ID 1 AT (2 2 156 156)
  USABLE MODAL 
  HELPID 1 
  MENUID 1
BEGIN
  TITLE "AlarmHack"
  LABEL "Repeat Datebook alarm sound" AUTOID AT (CENTER 16)
  PUSHBUTTON "1" ID 2001 AT (20 PrevBottom+2 12) AUTO GROUP 1
  PUSHBUTTON "2" ID 2002 AT (PrevRight+1 PrevTop PrevWidth PrevHeight) GROUP 1
  PUSHBUTTON "3" ID 2003 AT (PrevRight+1 PrevTop PrevWidth PrevHeight) GROUP 1

  LABEL "times. Ring again every" AUTOID AT (CENTER PrevBottom+2) FONT 0

  PUSHBUTTON "never" ID 3000 AT (13 PrevBottom+2 32 12) GROUP 2
  PUSHBUTTON "10 sec" ID 3001 AT (PrevRight+1 PrevTop PrevWidth PrevHeight) GROUP 2
  PUSHBUTTON "30 sec" ID 3002 AT (PrevRight+1 PrevTop PrevWidth PrevHeight) GROUP 2
  PUSHBUTTON "1 min" ID 3003 AT (PrevRight+1 PrevTop PrevWidth PrevHeight) GROUP 2

  LABEL "Alarm sound:" AUTOID AT (24 PrevBottom+4)
  POPUPTRIGGER "" ID 5000 AT (PrevRight+4 PrevTop 62 AUTO) LEFTANCHOR
  LIST "Standard" "Bleep" ID 6000 AT (PrevLeft PrevTop 52 1) VISIBLEITEMS 2 NONUSABLE
  POPUPLIST ID 5000 6000

  BUTTON "Test" ID 1202 AT (CENTER 138 AUTO AUTO)
  GRAFFITISTATEINDICATOR AT (100 100)
END
MENU (MBAR)

    MENU ID <MenuResourceId.n>
    BEGIN
      <PULLDOWNS>
    END
Where <PULLDOWNS> is one or more of:

    PULLDOWN <PullDownTitle.s>
    BEGIN
      <MENUITEMS>
    END
Where <MENUITEMS> is one or more of:

    MENUITEM <MenuItem.s> ID <MenuItemId.n> [AccelChar.c]
    MENUITEM SEPARATOR 
Example:
    MENU ID 100
    BEGIN
      PULLDOWN "File"
      BEGIN
        MENUITEM "Open..." ID 100 "O"
        MENUITEM SEPARATOR
        MENUITEM "Close..." ID 101 "C"
      END
      PULLDOWN "Options"
      BEGIN
        MENUITEM "Get Info..." ID 200 "I"
      END
    END
ALERT (Talt)

    ALERT ID <AlertResrouceId.n>
      [HELPID <HelpId.n>]
      [DEFAULTBUTTON <ButtonIdx.n>]
      [INFORMATION] [CONFIRMATION] [WARNING] [ERROR]
    BEGIN
      TITLE <Title.s>
      MESSAGE <Message.ss>
      BUTTONS <Button.s> ... <Button.s>
    END
Notes:

  • The DEFAULTBUTTON tag can be used to specify the button number to select if the user switches to another application without pressing any button in the alert. The argument is the index of the button, where the left-most button is at index '0'.

Example:

ALERT ID 1000
  HELPID 100
  DEFAULTBUTTON 1
  CONFIRMATION
BEGIN
  TITLE "AlarmHack"
  MESSAGE "Continuing will cause you 7 years of bad luck\n" \
          "Are you sure?"
  BUTTONS "Ok" "Cancel"
END
VERSION (tver)

    VERSION ID <VersionResourceId.n> <Version.s>
    VERSION <Version.s>
Notes:
  • The ID can be 1 or 1000 - either will be accepted by the default launcher.
Example:
    VERSION ID 1 "1.0 beta"
    VERSION "1.0 beta"
STRING (tSTR)

    STRING ID <StringResourceId.n> <String.ss>
    STRING ID <StringResourceId.n> FILE <StringFile.s>
Example:
    STRING ID 100 "This is a very long string that shows escape characters \n" \
                  "as well as continued .ss syntax strings"
    STRING ID 101 FILE "string.txt"
STRINGTABLE (tSTL)

    STRINGTABLE ID <StringTableResourceId.n> <PrefixString.ss>  ... <String.ss>
Notes:
  • Using the tSTL resource:

    .. in a LIST

      [source.rcp]
      STRINGTABLE stringTableMetric
        "" "Litres" "Meters" "Celsius"    "Newtons"     "Kilograms"
      
      [source.c]
      MemHandle memHandle, memStringList;
      MemPtr    ptrTable;
      UInt16    count;
      
      memHandle = DmGetResource('tSTL', stringTableMetric);
      ptrTable  = (MemPtr)MemHandleLock(memHandle);
      
      // get the string count <-- "messy"
      count     = 
        (*((UInt8 *)(ptrTable + StrLen((Char *)ptrTable) + 1)) << 8) |
         *((UInt8 *)(ptrTable + StrLen((Char *)ptrTable) + 2));
      
      // get the handle to an array of strings
      memStringList = 
        SysFormPointerArrayToStrings(ptrTable + StrLen((Char *)ptrTable) + 3, count);
      
      // NOTE: the "prefix" is ignored here
      ...
      
      MemHandleUnlock(memHandle);
      DmReleaseResource(memHandle); 
    .. to get a single STRING
      [source.rcp]
      STRINGTABLE stringTableTypes
        "Units are:" "Metric" "Imperial"
      
      [source.c]
      Char string[32];
      SysStringByIndex(stringTableTypes, 0, string, 32);
  • a limitation of 384 strings apply

    Example:

      STRINGTABLE ID 100 "" "One" "Two" "Three" "Four" 
      STRINGTABLE ID 100 "-" "One" "Two" "Three" "Four"
    CATEGORIES (tAIS)

      CATEGORIES ID <CategoryResourceId.n> <Category1.s> ... <Category2.s>
    Notes:
    • The CATEGORIES tag can be used to specify the default category names for the application.
      This resource can then be passed to the "CategoryInitialize()" API function function to create the category strings in the application info block.

    Example:
      CATEGORIES ID 100 "Unfiled" "Business" "Personal"
    APPLICATIONICONNAME (tAIN)

      APPLICATIONICONNAME ID <AINResourceId.n> <ApplicationName.s> 
    Example:
      APPLICATIONICONNAME ID 100 "AlarmHack"
    APPLICATION (APPL)

      APPLICATION ID <ApplResourceId.n> <APPL.s>
    Notes:
    • <APPL.s> must be 4 characters long.
    • <APPL.s> represents the creator id for the application, which can be registered at http://www.palm.com/

    Example:

      APPLICATION ID 1 "PALM"
    LAUNCHERCATEGORY (taic)

      LAUNCHERCATEGORY [ID <LaunchCatResourceId.n>] <APPL.s>
    Example:
      LAUNCHERCATEGORY "Games"
      LAUNCHERCATEGORY ID 1000 "Games"
    ICON (tAIB)

      ICON [ID <IconResourceId.n>] <IconFileName.s>
      ICONFAMILY [ID <IconResourceId.n>] 
                 <BitmapFileName.s> ... <BitmapFileName.s> 
                 [NOCOLORTABLE] [COLORTABLE]
                 [TRANSPARENT r g b] [TRANSPARENTINDEX index]
    Notes:

    • The bitmap must be 32x32, 32x22 or 22x22 in dimension.
    • Compression is not available for ICONS.
    • A tAIB resource with ID 1000 is created unless an alternate ID is specified.
    • ICON creates a monochrome icon resource.
    • ICONFAMILY creates a multibit (1bpp, 2bpp, 4bpp and 256 color) icon resources.
    • The inclusion of the bitmap color table is not recommended as it slows down system performance. PilRC implements a simple color table matching algorithm to match the bitmaps colortable to the system palette.
    • When an alternate ID is used for the ICON resource, bitmap size is not checked.
    Example:

      ICON "myicon.bmp"
      ICONFAMILY "icon1bpp.bmp" "icon2bpp.bmp"
      ICONFAMILY "icon1bpp.bmp" "icon2bpp.bmp" "icon4bpp.bmp" "icon8bpp.bmp"
      ICONFAMILY "icon1bpp.bmp" "" "" "icon8bpp.bmp" TRANSPARENTINDEX 255
    SMALLICON (tAIB)

      SMALLICON [ID <IconResourceId.n>] <IconFileName.s>
      SMALLICONFAMILY [ID <IconResourceId.n>] 
                      <BitmapFileName.s> ... <BitmapFileName.s> 
                      [NOCOLORTABLE] [COLORTABLE]
                      [TRANSPARENT r g b] [TRANSPARENTINDEX index]
    Notes:

    • The bitmap must be 15x9 in dimension.
    • Compression is not available for SMALLICONS.
    • A tAIB resource with ID 1001 is created unless an alternate ID is specified.
    • SMALLICON creates a monochrome icon resource.
    • SMALLICONFAMILY creates a multibit (1bpp, 2bpp, 4bpp and 256 color) icon resources.
    • The inclusion of the bitmap color table is not recommended as it slows down system performance. PilRC implements a simple color table matching algorithm to match the bitmaps colortable to the system palette.
    • When an alternate ID is used for the SMALLICON resource, bitmap size is not checked.
    Example:

      SMALLICON "mysmicon.bmp"
      SMALLICONFAMILY "smic1bpp.bmp" "smic2bpp.bmp"
      SMALLICONFAMILY "smic1bpp.bmp" "smic2bpp.bmp" "smic4bpp.bmp" "smic8bpp.bmp"
      SMALLICONFAMILY "smic1bpp.bmp" "" "" "smic8bpp.bmp" TRANSPARENTINDEX 255
    BITMAP (Tbmp)

      BITMAP       [<ResType.s>] ID <BitmapResourceId.n> <BitmapFileName.s> 
                   [NOCOMPRESS] [COMPRESS] [FORCECOMPRESS]
      BITMAPGREY   [<ResType.s>] ID <BitmapResourceId.n> <BitmapFileName.s> 
                   [NOCOMPRESS] [COMPRESS] [FORCECOMPRESS]
      BITMAPGREY16 [<ResType.s>] ID <BitmapResourceId.n> <BitmapFileName.s> 
                   [NOCOMPRESS] [COMPRESS] [FORCECOMPRESS]
      BITMAPCOLOR16 [<ResType.s>] ID <BitmapResourceId.n> <BitmapFileName.s> 
                   [NOCOMPRESS] [COMPRESS] [FORCECOMPRESS]
      BITMAPCOLOR  [<ResType.s>] ID <BitmapResourceId.n> <BitmapFileName.s> 
                   [NOCOLORTABLE] [COLORTABLE]
                   [TRANSPARENT r g b] [TRANSPARENTINDEX index]
                   [NOCOMPRESS] [COMPRESS] [FORCECOMPRESS]
      BITMAPCOLOR16K [<ResType.s>] ID <BitmapResourceId.n> <BitmapFileName.s> 
                   [TRANSPARENT r g b] [NOCOMPRESS] [COMPRESS] [FORCECOMPRESS]
      BITMAPFAMILY [<ResType.s>] ID <BitmapResourceId.n> 
                   <BitmapFileName.s> ... <BitmapFileName.s> 
                   [NOCOLORTABLE] [COLORTABLE]
                   [TRANSPARENT r g b] [TRANSPARENTINDEX index]
                   [NOCOMPRESS] [COMPRESS] [FORCECOMPRESS]
      BITMAPFAMILYSPECIAL [<ResType.s>] ID <BitmapResourceId.n> 
                   <BitmapFileName.s> ... <BitmapFileName.s> 
                   [NOCOLORTABLE] [COLORTABLE]
                   [TRANSPARENT r g b] [TRANSPARENTINDEX index]
                   [NOCOMPRESS] [COMPRESS] [FORCECOMPRESS]
    Notes:

    • BITMAP creates a monochrome bitmap resource.
    • BITMAPGREY creates a 2bpp (4 color grayscale) bitmap resource.
    • BITMAPGREY16 creates a 4bpp (16 color grayscale) bitmap resource.
    • BITMAPCOLOR16 creates a 4bpp (16 color) bitmap resource.
    • BITMAPCOLOR creates a 256 color bitmap resource.
    • BITMAPFAMILY creates a multibit (1bpp, 2bpp, 4bpp and 256 color) icon resources.
    • BITMAPFAMILYSPECIAL creates a multibit (1bpp, 2bpp, 4bpp color and 256 color) icon resources.
    • The inclusion of the bitmap color table is not recommended as it slows down system performance. PilRC implements a simple color table matching algorithm to match the bitmaps colortable to the system palette.
    • 16 COLOR GRAPHICS!
      A new exiting graphics mode is available for application developers who wish to use only a standard 16 color palette (running at 4bpp means half as much memory to copy). BITMAPCOLOR16 and BITMAPFAMILYSPECIAL can be used with the following code:

      {
        UInt32       depth;
        RGBColorType palette[] = {
                                   {  0, 0xff, 0xff, 0xff },
                                   {  1, 0x80, 0x80, 0x80 },
                                   {  2, 0x80, 0x00, 0x00 },
                                   {  3, 0x80, 0x80, 0x00 },
                                   {  4, 0x00, 0x80, 0x00 },
                                   {  5, 0x00, 0x80, 0x80 },
                                   {  6, 0x00, 0x00, 0x80 },
                                   {  7, 0x80, 0x00, 0x80 },
                                   {  8, 0xff, 0x00, 0xff },
                                   {  9, 0xc0, 0xc0, 0xc0 },
                                   { 10, 0xff, 0x00, 0x00 },
                                   { 11, 0xff, 0xff, 0x00 },
                                   { 12, 0x00, 0xff, 0x00 },
                                   { 13, 0x00, 0xff, 0xff },
                                   { 14, 0x00, 0x00, 0xff },
                                   { 15, 0x00, 0x00, 0x00 }
                                 };
      
        // change to 4bpp grayscale
        depth = 4;
        WinScreenMode(winScreenModeSet,NULL,NULL,&depth,NULL);
      
        // and tweak to the 16 color palette
        WinPalette(winPaletteSet,0,16,palette);
      } 
    Example:

      BITMAP        ID 1 "bitmap.bmp" COMPRESS
      BITMAPGREY    ID 2 "bmp2bpp.bmp" COMPRESS
      BITMAPGREY16  ID 3 "bmp4bpp.bmp" COMPRESS
      BITMAPCOLOR16 ID 4 "bmp4bpc.bmp" COMPRESS
      BITMAPCOLOR   ID 4 "bmp8bpp.bmp" COMPRESS COLORTABLE
      BITMAPFAMILY  ID 5 "bmp1bpp.bmp" "bmp2bpp.bmp" COMPRESS
      BITMAPFAMILY  ID 6 "bmp1bpp.bmp" "bmp2bpp.bmp" "bmp4bpp.bmp" "bmp8bpp.bmp" COMPRESS
      BITMAPFAMILY  ID 7 "bmp1bpp.bmp" "" "" "bmp8bpp.bmp" COMPRESS
      BITMAPFAMILY  ID 8 "bmp1bpp.bmp" "" "" "bmp8bpp.bmp" COMPRESS TRANSPARENT 255 255 255
      BITMAPFAMILY  ID 9 "bmp1bpp.bmp" "" "" "bmp8bpp.bmp" COMPRESS TRANSPARENTINDEX 255
    TRAP (TRAP)

      TRAP ID <TrapId.n> <TrapNumber.n>
    Notes: Example:
      TRAP ID 1000 367
    FONT (NFNT)

      FONT ID <FontResourceId.n> FONTID <FontId.n> <FontFileName.s>
    FONT file format

    The file containing the font information is plain ASCII. To understand how it works it is first necessary to understand how a font is arranged in memory. A font consists of four main parts, a header, a bitmap image, a bitmap location table, and an offset/width table. The bitmap image and location table are generated for you 100% automatically.

    The ASCII file consists of two parts, the header and the font data (glyph objects). A full font file is provided with the PilRC distribution.

    The FONT header has the following fields:

      fontType The purpose of this field is unknown.
      The ROM fonts define this value to be 36864.
      maxWidth Defined as "maximum character width".
      If not set it is automatically set to the width of the widest character.
      kernMax Defined as "negative of maximum kern value".
      The purpose of this field is unknown.
      nDescent Defined as "negative of descent".
      The purpose of this field is unknown, and is not used in the ROM fonts.
      fRectWidth Defined as "width of font rectangle".
      If not set it is automatically set to the width of the widest character.
      fRectHeight Defined as "height of font rectangle".
      If not set it is automatically set when the first glyph is defined.
      All characters must be exactly this height.
      ascent The number of rows that make up the ascending part of the glyphs.
      Ascent plus descent equals fRectHeight. This value should be set.
      descent The number of rows that make up the descending part of the glyphs.
      Descent plus ascent equals fRectHeight. This value should be set.
      leading The purpose of this field is unknown.

    Each glyph has a bitmap, offset, and a width associated with it. The width can be overridden, however it is not recommended as it is set automatically. Notes:

    • FONT declarations must be defined before the font is used.
    • <FontId.n> must be between 128 and 255.
    • Custom FONT declarations can only be used on Palm Operating System 3.0 and later.
    • Palm Operating System 2.0 and before
        [source.rcp]
        FONT ID 1000 FONTID 128 "font.txt"
        
        [source.c]
        void *font128;
        font128=MemHandleLock(DmGetResource('NFNT', 1000));
        UICurrentFontPtr = font128;
    • Palm Operating System 3.0+
        [source.rcp]
        FONT ID 1000 FONTID 128 "font.txt"
        
        [source.c]
        FontPtr font128;
        font128=MemHandleLock(DmGetResource('NFNT', 1000));
        FntDefineFont(128, font128);
    • FONT support in PilRC is not complete, and has been reverse engineered.
    HEX

      HEX <ResType.s> ID <ResId.n> <Byte.n> | <String.s>
    Notes:

    • String values within the data DO NOT have implicit null termination. You must add a 0x00 hex value after the string if needed.
    Example:
      HEX "junk" ID 1000 
        0x00 0x00 0x00 0x23 "String" 0x00 "String2" 
        0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00
    DATA

      DATA <ResType.s> ID <ResId.n> <FileName.s>
    Example:
      DATA "junk" ID 1000 "binary.bin"
    INTEGER (tint)

      INTEGER ID <ResId.n> <Value.n>
    Notes:

    • ResLoadConstant(..) API can be used to load the 'tint' resource.
    Example:
      INTEGER ID 1000 1974 
    International Support

      PilRC supports a limited form of international tokenization. It works by substituting strings in the resource definitions with replacements specified in a TRANSLATION section. Multiple translation blocks may be specified in a resource script. The active language is specified with the "-L" flag to PilRC.

      Positioning of controls is a large problem if absolute values are used. It is recommended you use AUTO, CENTER and PREVRIGHT et al when defining the contents of your forms.

    Example:
      pilrc -L FRENCH myscript.rcp res
    TRANSLATION

      TRANSLATION <Language.s>
      BEGIN
        <STRINGTRANSLATIONS>
      END
    Where <STRINGTRANSLATIONS> is one or more of:

      <Original.s> = <Translated.ss>
    Notes:

    • Declare a short keyword for long strings, and define native and foriegn translations for it.

    Example:

      TRANSLATION "FRENCH"
      BEGIN
        "Repeat Datebook alarm sound" = "Répétitions Alarme Agenda"
        "Ring again every" = "Rappel tous les"
      END
    Known Bugs

    • LIST
      • DISABLED does not work.
      • VISIBLEITEMS may be required for list objects to show properly.
    • FIELD
      • MAXCHARS required for field control to accept characters to work.
      • NUMERIC doesn't work in Palm Operating System prior to 3.0
    • FORM
      • Using NOSAVEBEHIND on Palm Operating System prior to 3.0 may cause errors.
    • FONT
      • Developed based on reverse-engineering.
        The complete operation of how Palm handles FONT manipulation is unknown.

    Further Reading

      For Palm Computing Platform reference information, be sure to also visit the following websites:


  • Copyright © 1999-2001, Aaron Ardiri. All rights reserved. Designed for 1024x768 resolution on Netscape or Internet Explorer.

      ICQ:12087036