////////////////////////////////////////////////////////////////////////// // This is brief description of skin engine xml format // ////////////////////////////////////////////////////////////////////////// /************************************************************************\ Common object description format: -------------------------------------------------------------------------- ... <object.name type='glyph'> <fonts> <main effort='255' color='0x000000' alpha='255' effect='none' effect.color='0x000000' effect.alpha='255' /> <second effort='255' color='0x000000' alpha='255' effect='none' effect.color='0x000000' effect.alpha='255' /> <third effort='255' color='0x000000' alpha='255' effect='none' effect.color='0x000000' effect.alpha='255' /> </fonts> <....> </object.name> ... Attributes: type - the type of object: possible values are 'glyph', 'solid', 'gradient', 'none' default is 'none' The 'fonts' section describes modifiers of user font. if specific attribute is not specified - means do not change user setted one. E.g if only 'color' attribute is specified - this color will be used instead of user requested. If several painting are occurs before text rendering - the settings will be accumulated. If several same settings are will be accumulated - the last one will be used as result. But 'effort' attribute is show the '255'-based effort of specified value (for color only) to be combined the old color and new one like: result_color=(old_color*(255-effort)+newcolor*(effort))/255; the resultet color will be same like this opacity effect. Subsections: main - info regarding main font: Nick for contacts or groupname for groups. second - info about second font: Second row line for contacts or group counter third - info about third font: Third row line for contacts, top color of group divider fourth - info about fourth font: Time for contacts or bottom color of group divider Attributes: /************************************************************************\ Glyph object description format: -------------------------------------------------------------------------- ... <object.name type='glyph' opacity='255'> <image file="filename.png" x='0' y='0' width='0' height='0' /> <resize top='0' left='0' bottom='0' right='0' mode='tile' /> <....> </object.name> ... The Glyph Object is described within <object.name> node. Attributes: opacity - object opacity, numeric, [0..255], default is 255. The image is described in <image> subnode. Attributes: file - image file name relative to skin root folder, default is empty - mean internal clist modern skin image. x, y - top left corner of fragment on image map - default are (0,0) width, height - width and height of fragment image, default are image size minus top-left corner coordinate. The second subnode is <resize> - describe how to fill requested area if glyph image is too small: Attributes: top, bottom, left, right- the constant margins on sides, default are 0 mode - the how to fill mode, possible values: tile, vtile, htile, stretch - (tile both directions, tile vertical, tile horizontal, stretch both directions), default is 'stretch' ********** Example of skin *************** <skin> <!-- Skin Info (about, author, etc.) --> ..... <!-- Properties (margins, db settings) --> <skin.properties> .... </skin.properties> <? include="./xml_file_to_be_included.xml" ?> <!-- Objects (objects to be drawn) --> <skin.objects> <object.name type='glyph' opacity='255'> <image file="filename.png" x='0' y='0' width='0' height='0' /> <resize top='0' left='0' bottom='0' right='0' mode='tile' /> <fonts> <main effort='255' color='0x000000' alpha='255' effect='none' effect.color='0x000000' effect.alpha='255' /> <second effort='255' color='0x000000' alpha='255' effect='none' effect.color='0x000000' effect.alpha='255' /> <third effort='255' color='0x000000' alpha='255' effect='none' effect.color='0x000000' effect.alpha='255' /> </fonts> </object.name> ..... </skin.objects> <!-- Selectors (selector what need to be drawn) --> <skin.selectors> .... </skin.selectors> <!-- Buttons --> <skin.buttons> .... </skin.buttons> <!-- Row Layout (layout of row) --> <skin.rowlayout> <tr> <tc valign='vcenter'> <tr valign='vcenter' halign='hcenter'> <tc valign='vcenter' halign='hcenter' draw='avatar' /> <tc mode='layer' valign='bottom' halign='right' draw='icon' /> </tr> </rc> <tc valign='vcenter'> <tr draw='text' /> <tr draw='text2' /> <tr draw='text3' /> </tc> <tc mode='layer' valign='top' halign='right' draw='extra' /> </tr> </skin.rowlayout> ... </skin> \************************************************************************/