Chapter 3 : Edit icons and skin images.
Requirement
1. Perl Interpreter "ActivePerl" at
www.activestate.com (in Languages -> ActivePerl)
2. Perl script IconPackager for extract icon images and
Perl script SkinPackager for extract skin images. download here
Icon & Skin Packager
3. Image editor like Photoshop.
iconres.ezx is a file that contain all GIF images for use in theme. iconres.ezx was create by icon data (name, size,amount) plus icon images in GIF format. To edit iconres.ezx I use IconPackager to extract it to GIF images. And Repacking them back to iconres.ezx after edit icons. (Iconrestool can use to edit iconres.ezx too. but it limit about 1000 icons in iconres.ezx. E680i orginal iconres.ezx contain 1000 icons. and A780 original iconres.ezx contain 1300 icons.)
How to extract icons from iconres.ezx by IconPackager.
1. Install Active Perl.
2. get the iconres.ezx by extract it from mtf file or copy from original iconres.ezx at /usr/language/icon.
3. copy unpackIconRes.pl and packIconres.pl in to the same folder as iconres.ezx file.
4. click on unpackIconRes.pl and Command prompt will display amount of icons in iconres.ezx file.
5. go into new created folder "icons". there have icon images, header file, and note.txt file.
Now you can edit, and remove icons in icons folder. First change an important icon like Top 5 Button (GNB menu, Addressbook, Message, and Call Pad), Application icon, command icon at Buttombar (Menu, exit, back), or Status icon (Signal, GPRS, real, Baterry indicator) on Top Statusbar. And remove unchanged icon to maintain size of iconres.ezx because phone will use icon from original iconres.ezx instead if icon was not found in theme's iconres.ezx. Becareful about icon filename and icon size. Icon filename is use in icon data table for access icon from phone. Do not change icon filename. And if icon's size was change phone will resize your icon to original size.
How to packing icon into iconres.ezx by IconPackager.
1. click on packIconres.pl Command prompt will display amount of icons in iconres.ezx file.
2. all icon in icons folder will packed into newiconres.ezx file in the same folder as packIconres.pl.
Skin-file is a file that contain image of basic display components such as button, statusbar, buttombar, checkbox, radiobox, dialog border, etc. Skinfile was created in the same metohed like iconres.ezx. so I use SkinPackager to extract skin-image from skin-file. The different from iconres.ezx is all skin component was in 1 PNG image.


How to extract skin-image (*.PNG) from skin-file (*.skn) by SkinPackager.
1. Install Active Perl.
2. get the skin-file (*.skn) by extract it from mtf file or copy from original iconres.ezx at /usr/language/theme/default1
3. rename skin-file to motoskin.skn.
4. copy unpackSkin.pl and packSkin.pl in to the same folder as skin-file.
5. click on unpackSkin.pl and Command prompt will display amount of images in skin-file file.
6. go into new created folder "skins". there have skin-image in PNG format, header file, and note.txt file.
List of skin component on left side from top -left to bottom-right
General_Arrow_Up 20x23
General_Arrow_Up_A 20x23
General_Arrow_Down 20x23
General_Arrow_Down_A 20x23
General_Arrow_Left 20x23
General_Arrow_Left_A 20x23
General_Arrow_Right 20x23
General_Arrow_Right_A 20x23
General_Stretch_Button_S 25x25
General_Stretch_Button_S_A 25x25
Stretch_ProgressBar_Background 30x25
Stretch_ProgressBar_Fillamount 12x21
Stretch_ProgressBar_Fillamount_D 12x21
Stretch_ProgressBar_Background_Small 32x13
Stretch_ProgressBar_Fillamount_Small 17x5
General_Radio_Button_Unselected_A 18x18
General_Radio_Button_Unselected 18x18
General_Radio_Button_Selected_A 18x18
General_Radio_Button_Selected 18x18
General_Check_Box_Unselected_A 20x20
General_Check_Box_Unselected 20x20
General_Select_Box_Selected_A 20x20
General_Select_Box_Selected 20x20
Stretch_ComboBox_Button 20x25
Stretch_ComboBox_Button_A 20x25
Stretch_ComboBox_Button_D 10x25
Stretch_ImageBorder_Topleft 20x25
Stretch_ImageBorder_Bottomright 20x25
Stretch_ComboBox_Border 26x25
Stretch_ScrollbarV_Arrow_Down 20x21
Stretch_ScrollbarV_Arrow_Down_A 20x21
Stretch_ScrollbarV_Arrow_Down_D 20x21
Stretch_ScrollbarV_Background 20x20
Stretch_ScrollbarV_Arrow_Up 20x21
Stretch_ScrollbarV_Arrow_Up_A 20x21
Stretch_ScrollbarV_Arrow_Up_D 20x21
Stretch_ScrollbarV_Foreground 20x20
Stretch_ScrollbarH_Arrow_Down 21x20
Stretch_ScrollbarH_Arrow_Down_A 21x20
Stretch_ScrollbarH_Arrow_Down_D 21x20
Stretch_ScrollbarH_Background 17x20
Stretch_ScrollbarH_Arrow_Down 21x20
Stretch_ScrollbarH_Arrow_Down_A 21x20
Stretch_ScrollbarH_Arrow_Down_D 21x20
Stretch_ScrollbarH_Background 17x20
Stretch_ScrollbarH_Arrow_Up 21x20
Stretch_ScrollbarH_Arrow_Up_A 21x20
Stretch_ScrollbarH_Arrow_Up_D 21x20
Stretch_ScrollbarH_Foreground 17x20
List of skin component on right side from top -left to bottom-right
Sbar_Background 20x26
Cut_Screen_TitleBackground 20x26
Stretch_Menu_RightAngle_1 10x10
Stretch_Menu_RightAngle_2 10x10
Stretch_Menu_RightAngle_3 10x10
Stretch_Menu_RightAngle_4 10x10
Stretch_Menu_TopBorder 10x3
Stretch_Menu_LeftBorder 3x10
Cut_Menu_Seperator 9x2
Stretch_Menu_RightBorder 3x10
Stretch_Menu_BottomBorder 10x3
Stretch_Highlight_TextBackground 10x10
Stretch_Menu_Background 10x10
Call_Keypad_KeyBk 57x35
Call_Keypad_KeyBk_A 57x35
Stretch_Dialog_RightAngle_1 10x10
Stretch_Dialog_RightAngle_2 10x10
Stretch_Dialog_RightAngle_4 10x10
Stretch_Dialog_RightAngle_3 10x10
Stretch_Dialog_TitleBackground 20x26
Stretch_Dialog_LeftBorder 2x10
Stretch_Dialog_TopBorder 20x4
Stretch_Dialog_BottomBorder 20x2
Stretch_Dialog_RightBorder 2x10
Stretch_Dialog_CST 20x34
Stretch_Dialog_CST_D 20x34
Stretch_Dialog_CST_A 20x34
Stretch_CST_A 20x35
Stretch_CST 20x35
Stretch_CST_D 20x35
Skin component was group by name of component, prefix and suffix. such as Arrow, Prograssbar, Radio_Button, Check_Box and Select_Box, ComboBox, Scrollbar, SBar (Top statusbar), Menu (Bottom Left menu), Call_KeyPad_KeyBk, Dialog, CST (Button). And all component have prefiex or suffix like this
General_* = image was use in original size.
Stretch_* = image was stretch before use.
*_A = Active image of components.
*_D = Disable image of components.
And becareful about skin component position that you should guess where 's it. Exacty It was in header of file. but i can't map skin header record to skin image because of some index was difference.
How to packing skin image (*.png) into skin-file (*.skn) by SkinPackager.
1. click on packSkin.pl Command prompt will display amount of image in newmotoskin.skn file.
2. newmotoskin.skn was created at the same folder as packSkin.pl.
After this you can packing/unpacking icon and skin of all themes. Now you can packing it in to Theme for testing. See you in next chapter.