
Styles are OmniRemote's way of handling images.  These images
can be used for buttons and backgrounds.  There are currently
4 different types of styles which each contain a different
number of images (bitmaps).  The list below shows the number
of bitmaps that a style contains and a description of that type
of style:


1  Screen background, button background or a simple rectangular
     button with square corners and no transparent areas.
2  A button with transparent areas. (such as a round button or
     a button with rounded corners)
8  A rectangular button frame with square corners and no
     transparent areas.
16 A rectangular button frame with transparent areas.  (such
     as the default OmniRemote buttons which have rounded
     corners)


Buttons made from 1 or 2 bitmaps do not resize conveniently.
When resized they simply tile - repeating the same pattern
over and over.  If you wanted to make a simple rectangular
button with a repeating pattern on it, this could resize well.
If you made a circular button this way, the user would need to
always make the buttons the size of the circle.  If the user
tried to make the circle button 50% taller and 50% wider,
they might expect a bigger circle, but they would end up with
the original circle with two half circles next to it (one on
the right and one below).

Button frames are a way of working around this problem somewhat,
however it still isn't possible to make a circle that resizes
properly.  (though possibly in the future)

A button frame is a rectangular frame (like a picture frame)
made from eight bitmaps.  There are 4 corner bitmaps and 4
edge bitmaps.  When the frame is expanded the edge bitmaps
tile to whatever length is needed.  The corners remain the same
size.

The difference between a 1 bitmap style and a 2 bitmaps style
(or the difference between 8 and 16) is the addition of
transparency.  This is done through the use of a transparency
mask.  A transparency mask is a simple black and white (2 color)
bitmap which indicates where the transparent areas are.  In a
style with transparency The bitmaps are paired together so that
every bitmap has an associated transparency mask.  All of the
areas which you want to be transparent should be pure white in
your bitmap and black in the transparency mask.  Any areas that
you don't want to be transparent should be white in the
transparency mask.

The bitmaps in a 16 bitmap style are in the following order:

1 Upper left corner
2 upper edge
3 upper right corner
4 left edge
5 right edge
6 lower left corner
7 lower edge
8 lower right corner

9  transparency mask for bitmap 1
10 transparency mask for bitmap 2
11 transparency mask for bitmap 3
12 transparency mask for bitmap 4
13 transparency mask for bitmap 5
14 transparency mask for bitmap 6
15 transparency mask for bitmap 7
16 transparency mask for bitmap 8

In an 8 bitmap style use 1-8 from the above list.

In a 2 bitmap style the first bitmap is your image and the
second is its transparency mask.


There are some rules about the sizes of bitmaps:

  The transparency mask must always be the same size as its
  associated image.

  All 4 corners must be the same size.

  The left and right edges must be the same width as the corners.

  The top and bottom edges must be the same height as the corners.


These rules can be broken, but things may not appear as you
expected.


Bitmaps can be made in the following color modes:

2 colors
4 colors
16 colors
256 colors

Using the wrong color mode for a device may not look as good, it
also may draw more slowly.  Bitmap families are supported
(to create styles that work well in all color modes) if you know
how to create them.  This issue is beyond the scope of this
document.

Transparency maps should always be in 2 color mode.

Compression is allowed, however it may not be supported on all
Palm devices.  (i.e. older devices)


So now that you know what to create, here's how to import it
into your OmniRemote database.

You will need to create a Palm resource database containing the
bitmaps, HotSync it onto your Palm and then import them by
launching OmniRemote and clicking:

Menu|Advanced|Styles|Import

The resource database can either have a type/creator of:

'DATA' / 'olHa'  or  'RESO' / 'pRES'
and the IDs of the bitmaps start at 3000

If you don't know what this means, don't worry about it.

If you only want to import a screen background containing a
single bitmap that is 160x160 pixels (the size of most screens)
then you can do it using a simple third-party Java tool called
Open Logo Hack Creator.  This tool wasn't intended for use with
OmniRemote, but it works - and it's Java!  Everybody loves Java,
right?  (don't answer that)

You can search for Open Logo Hack on Palmgear or other sites.

Simply add in your image, set the color mode and compression,
generate the .pdb file and install.  (then import in OmniRemote)

Which types of files are supported by Java can vary, for example
it wouldn't open .BMP files for me, so I converted them to .PNG


If you want to do something more complicated that doesn't involve
160x160 images then read on and I'll explain how to create your
Palm file with PilRC.

PilRC can be downloaded from Palm.com or other locations, it's
open source, cross platform and there are pre-compiled versions
for Windows available.  (but be warned, you still need to use the
command prompt!)

Create a text file with a convenient name (this will be the name
of your resulting database) in the same folder as PilRC.

For a simple 1 bitmap style, the text file should say something
like:


VERSION "1.0"

BITMAPCOLOR  ID 3000 "c:\\temp\\aq1.bmp"  NOCOMPRESS


BITMAPCOLOR can be any of the following:

BITMAP		(2 colors)
BITMAPGREY	(4 colors)
BITMAPGREY16	(16 colors)
BITMAPCOLOR	(256 colors)

Between the quotes is the path and filename for your bitmap
file.  I used .BMP format, I'm not sure if other formats
are supported (see PilRC documentation).  Notice that double
backslashes are needed if you use backslashes in your path.

NOCOMPRESS can also be COMPRESS (not sure if there are other
possible settings).


A more complicated example below for a 16 bitmap style (but
still relatively simple)

VERSION "1.0"

BITMAPCOLOR  ID 3000 "c:\\temp\\aq1.bmp"  NOCOMPRESS
BITMAPCOLOR  ID 3001 "c:\\temp\\aq2.bmp"  NOCOMPRESS
BITMAPCOLOR  ID 3002 "c:\\temp\\aq3.bmp"  NOCOMPRESS
BITMAPCOLOR  ID 3003 "c:\\temp\\aq4.bmp"  NOCOMPRESS
BITMAPCOLOR  ID 3004 "c:\\temp\\aq5.bmp"  NOCOMPRESS
BITMAPCOLOR  ID 3005 "c:\\temp\\aq6.bmp"  NOCOMPRESS
BITMAPCOLOR  ID 3006 "c:\\temp\\aq7.bmp"  NOCOMPRESS
BITMAPCOLOR  ID 3007 "c:\\temp\\aq8.bmp"  NOCOMPRESS
BITMAP  ID 3008 "c:\\temp\\aq9.bmp"  NOCOMPRESS
BITMAP  ID 3009 "c:\\temp\\aq10.bmp"  NOCOMPRESS
BITMAP  ID 3010 "c:\\temp\\aq11.bmp"  NOCOMPRESS
BITMAP  ID 3011 "c:\\temp\\aq12.bmp"  NOCOMPRESS
BITMAP  ID 3012 "c:\\temp\\aq13.bmp"  NOCOMPRESS
BITMAP  ID 3013 "c:\\temp\\aq14.bmp"  NOCOMPRESS
BITMAP  ID 3014 "c:\\temp\\aq15.bmp"  NOCOMPRESS
BITMAP  ID 3015 "c:\\temp\\aq16.bmp"  NOCOMPRESS


Now that you have created that file, go to your command prompt,
cd into the folder where all that stuff is and type:

pilrc -ro filename


(where filename is the name of the text file you just created)

The file it creates is a Palm resource database but it has a
funny file extension (.ro).  Rename it so that it ends in .PRC
then you will be able to HotSync it onto your Palm and import
it into OmniRemote.



A few notes:

1. It may be tempting to make bitmaps extremely small to save space.
For example if you wanted a green background you could make a
one pixel bitmap (that is green) and let OmniRemote tile it to
cover the whole screen.  Or you could do something similar with
the edge bitmaps of a frame, making them a thin slice and letting
OmniRemote tile them.  These practices are not recommended because
tiling is slow.  A larger bitmap will draw much faster.  Of course
lots of 160x160 bitmaps aren't recommended either, because they
take up too much space on the Palm (the user could easily run out
of memory).  Strive for a balance between speed and storage.


2. Working with these small bitmaps you may find that a program
like Paint Shop Pro which does not do anti-aliasing may be easier
to use than a program like PhotoShop which does.

3. If you want to create styles on the Palm itself, there is a tool
called rsrcEdit. It was formerly developed by Individeo, and now
Quartus supports this product. 
