/* overlay to default to make theme easier on the eyes, less effects */ #ifndef BG_COLOR #define BG_COLOR 48 48 48 255 #endif #ifndef BG_COLOR_TRANSLUCENT #define BG_COLOR_TRANSLUCENT 48 48 48 200 #endif #ifndef BELL_OVERLAY_COLOR #define BELL_OVERLAY_COLOR 220 220 220 16 #endif collections { group { name: "terminology/background"; #ifndef INHERIT_PROVIDE_OWN_COLORS color_classes { #include "default_colors.in.edc" } #endif images { image: "bg_bevel.png" COMP; image: "bg_shine.png" COMP; image: "bg_glint.png" COMP; image: "bg_led_base.png" COMP; image: "bg_led.png" COMP; image: "bg_led_strobe.png" COMP; image: "pm_shadow.png" COMP; image: "pm_overlay.png" COMP; image: "pm_fill.png" COMP; image: "tab_bg_l0.png" COMP; image: "tab_bg_l1.png" COMP; image: "tab_bg_r0.png" COMP; image: "tab_bg_r1.png" COMP; image: "tab_shad_l0.png" COMP; image: "tab_shad_l1.png" COMP; image: "tab_shad_r0.png" COMP; image: "tab_shad_r1.png" COMP; } sounds { sample { name: "bell" LOSSY 64; source: "bell.wav"; } } script { public message(Msg_Type:type, id, ...) { new r, g, b, a, v; if ((type != MSG_INT) || (id != 1)) return; v = (getarg(2) * 255) / 100; custom_state(PART:"base", "default", 0.0); get_state_val(PART:"base", STATE_COLOR, r, g, b, a); set_state_val(PART:"base", STATE_COLOR, r, g, b, v); set_state(PART:"base", "custom", 0.0); custom_state(PART:"fade", "default", 0.0); get_state_val(PART:"fade", STATE_COLOR, r, g, b, a); set_state_val(PART:"fade", STATE_COLOR, r, g, b, v); set_state(PART:"fade", "custom", 0.0); } } parts { //////////////////////////////////////////////////////////////////// // background handling part { name: "focusclip"; type: RECT; clip_to: "bellclip"; description { state: "default" 0.0; } description { state: "unfocused" 0.0; color: 200 200 200 255; } } program { signal: "focus,in"; source: "terminology"; action: STATE_SET "default" 0.0; transition: ACCELERATE 0.1; target: "focusclip"; } program { signal: "focused,set"; source: "terminology"; action: STATE_SET "default" 0.0; target: "focusclip"; } program { signal: "focus,out"; source: "terminology"; action: STATE_SET "unfocused" 0.0; transition: ACCELERATE 0.1; target: "focusclip"; } part { name: "baseclip"; type: RECT; clip_to: "focusclip"; description { state: "default" 0.0; } description { state: "image" 0.0; inherit: "default" 0.0; color: 255 255 255 0; visible: 0; } description { state: "scale" 0.0; inherit: "default" 0.0; color: 255 255 255 0; visible: 0; } description { state: "edje" 0.0; inherit: "default" 0.0; color: 255 255 255 0; visible: 0; } description { state: "movie" 0.0; inherit: "default" 0.0; color: 255 255 255 0; visible: 0; } } part { name: "base"; type: RECT; mouse_events: 1; clip_to: "baseclip"; description { state: "default" 0.0; color: BG_COLOR; } } part { name: "fade"; type: RECT; description { state: "default" 0.0; } } part { name: "terminology.background"; type: SWALLOW; clip_to: "fade"; description { state: "default" 0.0; } description { state: "image" 0.0; inherit: "default" 0.0; } description { state: "scale" 0.0; inherit: "default" 0.0; } description { state: "edje" 0.0; inherit: "default" 0.0; } description { state: "movie" 0.0; inherit: "default" 0.0; } } program { name: "media_off"; signal: "media,off"; source: "terminology"; action: STATE_SET "default" 0.0; target: "terminology.background"; target: "baseclip"; } program { name: "media_img"; signal: "media,image"; source: "terminology"; action: STATE_SET "image" 0.0; target: "terminology.background"; target: "baseclip"; } program { name: "media_scale"; signal: "media,scale"; source: "terminology"; action: STATE_SET "scale" 0.0; target: "terminology.background"; target: "baseclip"; } program { name: "media_edje"; signal: "media,edje"; source: "terminology"; action: STATE_SET "edje" 0.0; target: "terminology.background"; target: "baseclip"; } program { name: "media_mov"; signal: "media,movie"; source: "terminology"; action: STATE_SET "movie" 0.0; target: "terminology.background"; target: "baseclip"; } part { name: "bellclip"; type: RECT; description { state: "default" 0.0; } description { state: "pulse1" 0.0; inherit: "default" 0.0; color: 200 200 200 255; } description { state: "pulse2" 0.0; inherit: "default" 0.0; } } part { name: "belloverlay"; type: RECT; mouse_events: 0; description { state: "default" 0.0; color: 255 255 255 0; visible: 0; } description { state: "pulse1" 0.0; inherit: "default" 0.0; } description { state: "pulse2" 0.0; inherit: "default" 0.0; color: BELL_OVERLAY_COLOR; visible: 1; } } program { signal: "bell,ring"; source: "terminology"; action: PLAY_SAMPLE "bell" 1.0 ALERT; } program { signal: "bell"; source: "terminology"; action: STATE_SET "default" 0.0; target: "bellclip"; target: "belloverlay"; after: "bellclip_bell.2"; } program { name: "bellclip_bell.2"; action: STATE_SET "pulse1" 0.0; transition: ACCELERATE 0.2; target: "bellclip"; target: "belloverlay"; after: "bellclip_bell.3"; } program { name: "bellclip_bell.3"; action: STATE_SET "pulse2" 0.0; transition: ACCELERATE 0.2; target: "bellclip"; target: "belloverlay"; after: "bellclip_bell.4"; } program { name: "bellclip_bell.4"; action: STATE_SET "default" 0.0; transition: ACCELERATE 0.2; target: "bellclip"; target: "belloverlay"; } //////////////////////////////////////////////////////////////////// // actual text grid for chars, cursors, selectiond etc. goes here part { name: "terminology.content"; type: SWALLOW; description { state: "default" 0.0; } } //////////////////////////////////////////////////////////////////// // indicator of other tabs and control part { name: "tabcount_clip"; type: RECT; description { state: "default" 0.0; color: 255 255 255 0; visible: 0; } description { state: "on" 0.0; inherit: "default" 0.0; visible: 1; color: 255 255 255 255; } } part { name: "terminology.tabmissed.label"; type: TEXT; mouse_events: 0; effect: GLOW; scale: 1; clip_to: "tabcount_clip"; description { state: "default" 0.0; fixed: 1 1; rel1.to: "terminology.tabcount.label"; rel2.to: "terminology.tabcount.label"; rel1.offset: -4 0; rel2.relative: 0.0 1.0; rel2.offset: -5 -1; color: 255 153 51 64; align: 1.0 0.5; text { font: "Sans"; size: 8; align: 1.0 0.5; min: 1 1; ellipsis: 0; } } description { state: "over" 0.0; inherit: "default" 0.0; color: 255 255 64 255; } } part { name: "terminology.tabcount.label"; type: TEXT; mouse_events: 0; scale: 1; clip_to: "tabcount_clip"; description { state: "default" 0.0; fixed: 1 1; rel1.to: "terminology.tabcount.control"; rel2.to: "terminology.tabcount.control"; rel1.relative: -0.2 0.0; rel2.relative: -0.2 1.0; color: 255 255 255 64; align: 1.0 0.5; text { font: "Sans"; size: 8; align: 1.0 0.5; min: 1 1; ellipsis: 0; } } description { state: "over" 0.0; inherit: "default" 0.0; color: 255 255 255 255; } } part { name: "tabcount_r0"; type: RECT; clip_to: "tabcount_clip"; description { state: "default" 0.0; rel1.to: "terminology.tabcount.control"; rel2.to: "terminology.tabcount.control"; rel1.relative: 0.05 0.05; rel2.relative: 0.45 0.45; color: 255 255 255 32; } description { state: "over" 0.0; inherit: "default" 0.0; color: 255 255 255 255; } } part { name: "tabcount_r1"; type: RECT; clip_to: "tabcount_clip"; description { state: "default" 0.0; rel1.to: "terminology.tabcount.control"; rel2.to: "terminology.tabcount.control"; rel1.relative: 0.55 0.05; rel2.relative: 0.95 0.45; color: 255 255 255 32; } description { state: "over" 0.0; inherit: "default" 0.0; color: 255 255 255 255; } } part { name: "tabcount_r2"; type: RECT; clip_to: "tabcount_clip"; description { state: "default" 0.0; rel1.to: "terminology.tabcount.control"; rel2.to: "terminology.tabcount.control"; rel1.relative: 0.05 0.55; rel2.relative: 0.45 0.95; color: 255 255 255 32; } description { state: "over" 0.0; inherit: "default" 0.0; color: 255 255 255 255; } } part { name: "tabcount_r3"; type: RECT; clip_to: "tabcount_clip"; description { state: "default" 0.0; rel1.to: "terminology.tabcount.control"; rel2.to: "terminology.tabcount.control"; rel1.relative: 0.55 0.55; rel2.relative: 0.95 0.95; color: 255 255 255 32; } description { state: "over" 0.0; inherit: "default" 0.0; color: 255 255 255 255; } } part { name: "terminology.tabcount.control"; type: SWALLOW; clip_to: "tabcount_clip"; description { state: "default" 0.0; fixed: 1 1; rel1.relative: 1.0 0.0; rel1.offset: -3 2; rel1.to: "viewregion"; rel2.relative: 1.0 0.0; rel2.offset: -3 2; rel2.to: "viewregion"; align: 1.0 0.0; min: 16 16; } } part { name: "tabcount_ev"; type: RECT; repeat_events: 1; clip_to: "tabcount_clip"; description { state: "default" 0.0; fixed: 1 1; rel1.to: "terminology.tabcount.control"; rel2.to: "terminology.tabcount.control"; color: 0 0 0 0; } } part { name: "terminology.tabregion"; type: SWALLOW; description { state: "default" 0.0; fixed: 1 1; rel1.to: "terminology.content"; rel2.to: "viewregion"; rel2.relative: 1.0 0.0; } } part { name: "viewregion"; type: SWALLOW; description { state: "default" 0.0; fixed: 1 1; rel1.to: "terminology.content"; rel2.to: "terminology.content"; } description { state: "tab" 0.0; inherit: "default" 0.0; rel1.to_y: "tabmiddle"; rel1.relative: 0.0 1.0; } } program { signal: "mouse,in"; source: "tabcount_ev"; action: STATE_SET "over" 0.0; transition: DECELERATE 0.5; target: "tabcount_r0"; target: "tabcount_r1"; target: "tabcount_r2"; target: "tabcount_r3"; target: "terminology.tabcount.label"; target: "terminology.tabmissed.label"; } program { signal: "mouse,out"; source: "tabcount_ev"; action: STATE_SET "default" 0.0; transition: DECELERATE 2.0; target: "tabcount_r0"; target: "tabcount_r1"; target: "tabcount_r2"; target: "tabcount_r3"; target: "terminology.tabcount.label"; target: "terminology.tabmissed.label"; } program { signal: "mouse,clicked,1"; source: "tabcount_ev"; action: SIGNAL_EMIT "tabcount,go" "terminology"; } program { signal: "tabcount,off"; source: "terminology"; action: STATE_SET "default" 0.0; transition: DECELERATE 0.5; target: "tabcount_clip"; } program { signal: "tabcount,on"; source: "terminology"; action: STATE_SET "on" 0.0; transition: DECELERATE 0.5; target: "tabcount_clip"; } program { signal: "tabmissed,off"; source: "terminology"; action: STATE_SET "default" 0.0; transition: DECELERATE 0.5; target: "terminology.tabmissed.label"; } program { signal: "tabmissed,on"; source: "terminology"; action: STATE_SET "over" 0.0; transition: DECELERATE 0.2; target: "terminology.tabmissed.label"; after: "tabmissed2"; } program { name: "tabmissed2"; signal: "tabmissed,on"; source: "terminology"; action: STATE_SET "default" 0.0; transition: DECELERATE 3.0; target: "terminology.tabmissed.label"; } //////////////////////////////////////////////////////////////////// // miniview part { name: "terminology.miniview"; type: SWALLOW; description { state: "default" 0.0; rel1.to_x: "terminology.content"; rel1.to_y: "viewregion"; rel2.to: "terminology.content"; //color: 255 255 255 0; visible: 0; fixed: 1 1; } description { state: "on" 0.0; inherit: "default" 0.0; visible: 1; //color: 255 255 255 255; } } program { signal: "miniview,off"; source: "terminology"; action: STATE_SET "default" 0.0; target: "terminology.miniview"; } program { signal: "miniview,on"; source: "terminology"; action: STATE_SET "on" 0.0; target: "terminology.miniview"; } part { name: "tab_bevel_bg0"; mouse_events: 0; description { state: "default" 0.0; rel1.to: "tableft"; rel2.to_y: "tableft"; rel2.to_x: "tab_bevel_bg1"; rel2.relative: 0.0 1.0; image.normal: "tab_bg_l0.png"; image.border: 2 0 4 4; fill.smooth: 0; visible: 0; fixed: 1 1; } description { state: "tab" 0.0; inherit: "default" 0.0; visible: 1; } } part { name: "tab_bevel_bg1"; mouse_events: 0; description { state: "default" 0.0; rel1.to: "tabmiddle"; rel1.offset: -4 0; rel2.to: "tabmiddle"; align: 0.0 0.0; max: 12 99999; min: 12 0; image.normal: "tab_bg_l1.png"; image.border: 0 0 4 4; fill.smooth: 0; visible: 0; fixed: 1 1; } description { state: "tab" 0.0; inherit: "default" 0.0; visible: 1; } } part { name: "tab_bevel_bg2"; type: SPACER; description { state: "default" 0.0; rel1.to: "tab_bevel_bg1"; rel1.relative: 1.0 0.0; rel2.to: "tab_bevel_bg3"; rel2.relative: 0.0 1.0; fixed: 1 1; } } part { name: "tab_bevel_bg3"; mouse_events: 0; description { state: "default" 0.0; rel1.to: "tabmiddle"; rel2.to: "tabmiddle"; rel2.offset: 3 -1; align: 1.0 0.0; max: 12 99999; min: 12 0; image.normal: "tab_bg_r1.png"; image.border: 0 0 4 4; fill.smooth: 0; visible: 0; fixed: 1 1; } description { state: "tab" 0.0; inherit: "default" 0.0; visible: 1; } } part { name: "tab_bevel_bg4"; mouse_events: 0; description { state: "default" 0.0; rel1.to_y: "tabright"; rel1.to_x: "tab_bevel_bg3"; rel1.relative: 1.0 0.0; rel2.to: "tabright"; image.normal: "tab_bg_r0.png"; image.border: 0 2 4 4; fill.smooth: 0; visible: 0; fixed: 1 1; } description { state: "tab" 0.0; inherit: "default" 0.0; visible: 1; } } part { name: "terminology.tabl.content"; type: SWALLOW; description { state: "default" 0.0; rel1.to: "tableft"; rel2.to: "tableft"; fixed: 1 1; } } part { name: "terminology.tabr.content"; type: SWALLOW; description { state: "default" 0.0; rel1.to: "tabright"; rel2.to: "tabright"; fixed: 1 1; } } //////////////////////////////////////////////////////////////////// // a swallow to hold a finger size rect for min tab size program { signal: "tabbar,on"; source: "terminology"; action: STATE_SET "tab" 0.0; target: "viewregion"; target: "tableft"; target: "tabmiddle"; target: "tabright"; target: "tab_bevel_bg0"; target: "tab_bevel_bg1"; target: "tab_bevel_bg3"; target: "tab_bevel_bg4"; target: "tabtitle"; } program { signal: "tabbar,off"; source: "terminology"; action: STATE_SET "default" 0.0; target: "viewregion"; target: "tableft"; target: "tabmiddle"; target: "tabright"; target: "tab_bevel_bg0"; target: "tab_bevel_bg1"; target: "tab_bevel_bg3"; target: "tab_bevel_bg4"; target: "tabtitle"; } part { name: "terminology.tab"; type: SWALLOW; mouse_events: 0; description { state: "default" 0.0; rel1.relative: 1.0 0.0; rel1.to_x: "terminology.tabl"; rel2.relative: 0.0 0.0; rel2.to_x: "terminology.tabr"; align: 0.5 0.0; visible: 0; fixed: 1 1; } } // some slot for dragable parts to stayt in along top edge of bg part { name: "tabdrag"; type: SPACER; description { state: "default" 0.0; rel2.relative: 1.0 0.0; fixed: 1 1; } } // left boundary of the active tab (ragable 0.0 -> 1.0) part { name: "terminology.tabl"; type: SPACER; dragable.x: 1 1 0; dragable.confine: "tabdrag"; description { state: "default" 0.0; rel2.relative: 1.0 0.0; max: 1 1; fixed: 1 1; } } // right boundary of the active tab (ragable 0.0 -> 1.0) part { name: "terminology.tabr"; type: SPACER; dragable.x: 1 1 0; dragable.confine: "tabdrag"; description { state: "default" 0.0; rel2.relative: 1.0 0.0; max: 1 1; fixed: 1 1; } } part { name: "terminology.tab.title"; type: TEXT; mouse_events: 0; scale: 1; effect: SOFT_SHADOW BOTTOM; mouse_events: 0; description { state: "default" 0.0; color: 255 255 255 255; color3: 0 0 0 18; text { font: "Sans:style=Bold"; size: 10; align: 0.5 0.0; min: 0 1; } align: 0.5 0.0; rel1.to_x: "tab_bevel_bg2"; rel1.offset: 0 2; rel2.to_x: "tab_bevel_bg2"; rel2.offset: -1 2; rel2.relative: 1.0 0.0; visible: 0; fixed: 1 1; } } part { name: "tabtitle"; type: TEXT; mouse_events: 0; scale: 1; mouse_events: 0; description { state: "default" 0.0; color: 255 255 255 255; text { font: "Sans:style=Bold"; size: 10; align: 0.5 0.5; min: 0 1; text_source: "terminology.tab.title"; } align: 0.5 0.5; rel1.to_x: "tab_bevel_bg2"; rel1.to_y: "tabmiddle"; rel2.to_x: "tab_bevel_bg2"; rel2.to_y: "tabmiddle"; visible: 0; fixed: 1 1; } description { state: "tab" 0.0; inherit: "default" 0.0; visible: 1; } } part { name: "tablimit0"; type: SPACER; description { state: "default" 0.0; rel1.to_y: "terminology.tab"; rel1.relative: 0.0 1.0; rel2.to_y: "terminology.tab.title"; align: 0.0 0.0; fixed: 1 1; } } part { name: "tableft"; type: RECT; mouse_events: 0; description { state: "default" 0.0; rel2.to_x: "terminology.tab"; rel2.to_y: "tabmiddle"; rel2.relative: 0.0 1.0; color: 0 0 0 0; visible: 0; fixed: 1 1; } description { state: "tab" 0.0; inherit: "default" 0.0; visible: 1; } } part { name: "tabright"; type: RECT; mouse_events: 0; description { state: "default" 0.0; rel1.to: "terminology.tab"; rel1.relative: 1.0 0.0; rel2.to_y: "tabmiddle"; color: 0 0 0 0; visible: 0; fixed: 1 1; } description { state: "tab" 0.0; inherit: "default" 0.0; visible: 1; } } part { name: "tabmiddle"; type: RECT; description { state: "default" 0.0; rel1.to: "terminology.tab"; rel2.to_x: "terminology.tab"; rel2.to_y: "tablimit0"; rel2.offset: -1 0; color: 0 0 0 0; align: 0.0 0.0; visible: 0; fixed: 1 1; } description { state: "tab" 0.0; inherit: "default" 0.0; visible: 1; } } //////////////////////////////////////////////////////////////////// // a place terminology will place an entry box for internal commands part { name: "cmdclip"; type: RECT; description { state: "default" 0.0; color: 255 255 255 255; rel1.to: "terminology.cmdbox"; rel1.offset: -100 -100; rel2.to: "terminology.cmdbox"; rel2.offset: 99 99; color: 255 255 255 0; visible: 0; } description { state: "visible" 0.0; inherit: "default" 0.0; color: 255 255 255 255; visible: 1; } } part { name: "cmdback"; type: RECT; clip_to: "cmdclip"; description { state: "default" 0.0; color: 255 255 255 255; rel1.to: "terminology.cmdbox"; rel1.offset: -2 -2; rel2.to: "terminology.cmdbox"; rel2.offset: 1 1; } } part { name: "terminology.cmdbox"; type: SWALLOW; clip_to: "cmdclip"; description { state: "default" 0.0; fixed: 1 1; min: 8 8; rel1.relative: 0.0 1.0; rel1.offset: 8 9; rel2.offset: -9 9; align: 0.5 0.0; } description { state: "visible" 0.0; inherit: "default" 0.0; rel1.offset: 8 -9; rel2.offset: -9 -9; align: 0.5 1.0; } } program { name: "cmdshow0"; signal: "cmdbox,show"; source: "terminology"; action: STATE_SET "visible" 0.0; transition: DECELERATE 0.4; target: "cmdclip"; } program { name: "cmdshow"; signal: "cmdbox,show"; source: "terminology"; action: STATE_SET "visible" 0.0; transition: SPRING 0.4 0.5 4; target: "terminology.cmdbox"; } program { name: "cmdhide"; signal: "cmdbox,hide"; source: "terminology"; action: STATE_SET "default" 0.0; transition: ACCELERATE 0.5; target: "terminology.cmdbox"; target: "cmdclip"; } //////////////////////////////////////////////////////////////////// // visual bell - spinning red siren light part { name: "bell_base"; mouse_events: 0; description { state: "default" 0.0; fixed: 1 1; visible: 0; color: 255 255 255 0; min: 32 32; max: 32 32; rel2.offset: -1 -1; align: 1.0 1.0; image.normal: "bg_led_base.png"; } description { state: "visible" 0.0; inherit: "default" 0.0; visible: 1; color: 255 255 255 255; } } part { name: "bell"; mouse_events: 0; description { state: "default" 0.0; fixed: 1 1; visible: 0; color: 255 255 255 0; rel1.to: "bell_base"; rel2.to: "bell_base"; image.normal: "bg_led.png"; } description { state: "visible" 0.0; inherit: "default" 0.0; visible: 1; color: 255 255 255 255; } } part { name: "bell_strobe"; mouse_events: 0; description { state: "default" 0.0; fixed: 1 1; visible: 0; color: 255 255 255 0; rel1.to: "bell"; rel2.to: "bell"; image.normal: "bg_led_strobe.png"; map { on: 1; smooth: 1; rotation.center: "bell"; } } description { state: "spin" 0.0; inherit: "default" 0.0; visible: 1; color: 255 255 255 255; map.rotation.z: 36.0; } description { state: "spin_done" 0.0; inherit: "default" 0.0; visible: 0; color: 255 255 255 0; map.rotation.z: 684.0; } } program { name: "bell0"; signal: "bell"; source: "terminology"; action: STATE_SET "default" 0.0; target: "bell_base"; target: "bell"; target: "bell_strobe"; after: "bell"; } program { name: "bell"; action: STATE_SET "visible" 0.0; target: "bell_base"; after: "bell2"; } program { name: "bell2"; action: STATE_SET "visible" 0.0; transition: DECELERATE 0.1; target: "bell"; after: "bell3"; } program { name: "bell3"; action: STATE_SET "spin" 0.0; transition: LINEAR 0.1; target: "bell_strobe"; after: "bell4.0"; after: "bell4.1"; after: "bell4.2"; } program { name: "bell4.0"; action: STATE_SET "default" 0.0; transition: ACCELERATE 1.2; target: "bell"; } program { name: "bell4.1"; action: STATE_SET "default" 0.0; transition: ACCELERATE 1.6; target: "bell_base"; } program { name: "bell4.2"; action: STATE_SET "spin_done" 0.0; transition: LINEAR 0.9; target: "bell_strobe"; } //////////////////////////////////////////////////////////////////// // popup media over the terminal (until dismissed) part { name: "popmedia_clip"; type: RECT; mouse_events: 1; description { state: "default" 0.0; fixed: 1 1; visible: 0; color: 255 255 255 0; } description { state: "visible" 0.0; inherit: "default" 0.0; visible: 1; color: 255 255 255 255; } } part { name: "popmedia_shadow"; mouse_events: 0; description { state: "default" 0.0; fixed: 1 1; rel1 { to: "terminology.popmedia"; } rel2 { to: "terminology.popmedia"; } image.normal: "pm_shadow.png"; image.border: 64 64 64 64; image.border_scale_by: 0.1; fill.smooth: 0; visible: 0; } description { state: "visible" 0.0; inherit: "default" 0.0; rel1.offset: -32 -32; rel2.offset: 31 31; image.border_scale_by: 1.0; visible: 1; } } part { name: "popmedia_fill"; mouse_events: 0; description { state: "default" 0.0; fixed: 1 1; rel1.to: "terminology.popmedia"; rel2.to: "terminology.popmedia"; image.normal: "pm_fill.png"; fill { size.relative: 0.0 0.0; size.offset: 64 64; } } } part { name: "terminology.popmedia"; type: SWALLOW; clip_to: "popmedia_clip"; description { state: "default" 0.0; fixed: 1 1; rel1.relative: 0.5 0.5; rel2.relative: 0.5 0.5; visible: 0; } description { state: "image" 0.0; inherit: "default" 0.0; rel1.relative: 0.1 0.1; rel2.relative: 0.9 0.9; visible: 1; } description { state: "scale" 0.0; inherit: "default" 0.0; rel1.relative: 0.1 0.1; rel2.relative: 0.9 0.9; visible: 1; } description { state: "edje" 0.0; inherit: "default" 0.0; rel1.relative: 0.1 0.1; rel2.relative: 0.9 0.9; visible: 1; } description { state: "movie" 0.0; inherit: "default" 0.0; rel1.relative: 0.1 0.1; rel2.relative: 0.9 0.9; visible: 1; } } part { name: "popmedia_overlay"; mouse_events: 0; description { state: "default" 0.0; fixed: 1 1; rel1.to: "terminology.popmedia"; rel2.to: "terminology.popmedia"; image.normal: "pm_overlay.png"; fill.smooth: 0; visible: 0; } description { state: "visible" 0.0; inherit: "default" 0.0; visible: 1; } } part { name: "popmedia_bevel"; mouse_events: 0; description { state: "default" 0.0; fixed: 1 1; rel1.to: "terminology.popmedia"; rel2.to: "terminology.popmedia"; image.normal: "bg_bevel.png"; image.border: 3 3 5 3; image.middle: 0; fill.smooth: 0; visible: 0; } description { state: "visible" 0.0; inherit: "default" 0.0; visible: 1; } } part { name: "popmedia_glintclip"; type: RECT; mouse_events: 0; description { state: "default" 0.0; fixed: 1 1; visible: 0; } description { state: "visible" 0.0; inherit: "default" 0.0; visible: 1; } } part { name: "popmedia_glint"; mouse_events: 0; clip_to: "popmedia_glintclip"; description { state: "default" 0.0; fixed: 1 1; min: 79 5; max: 79 5; rel1 { to: "terminology.popmedia"; relative: 0.0 0.0; offset: 0 0; } rel2 { to: "terminology.popmedia"; relative: 1.0 0.0; offset: -1 0; } image.normal: "bg_glint.png"; visible: 0; } description { state: "visible" 0.0; inherit: "default" 0.0; visible: 1; } } part { name: "popmedia_shine"; mouse_events: 0; description { state: "default" 0.0; fixed: 1 1; rel1.to: "terminology.popmedia"; rel2.to: "terminology.popmedia"; image.normal: "bg_shine.png"; fill.smooth: 0; align: 0.5 0.0; aspect: (255/120) (255/120); aspect_preference: HORIZONTAL; visible: 0; } description { state: "visible" 0.0; inherit: "default" 0.0; visible: 1; } } part { name: "popmedia_dismiss"; type: RECT; mouse_events: 1; description { state: "default" 0.0; fixed: 1 1; color: 0 0 0 0; visible: 0; } description { state: "visible" 0.0; inherit: "default" 0.0; visible: 1; } } program { name: "popmedia_dismiss"; signal: "mouse,clicked,*"; source: "popmedia_dismiss"; action: STATE_SET "default" 0.0; transition: DECELERATE 0.5; target: "terminology.popmedia"; target: "popmedia_clip"; target: "popmedia_dismiss"; target: "popmedia_shadow"; target: "popmedia_fill"; target: "popmedia_overlay"; target: "popmedia_bevel"; target: "popmedia_glint"; target: "popmedia_glintclip"; target: "popmedia_shine"; after: "popmedia_dismiss2"; } program { name: "popmedia_dismiss2"; action: SIGNAL_EMIT "popmedia,done" "terminology"; } program { name: "popmedia_off"; signal: "popmedia,off"; source: "terminology"; action: STATE_SET "default" 0.0; transition: DECELERATE 0.2; target: "terminology.popmedia"; target: "popmedia_clip"; target: "popmedia_dismiss"; target: "popmedia_shadow"; target: "popmedia_fill"; target: "popmedia_overlay"; target: "popmedia_bevel"; target: "popmedia_glint"; target: "popmedia_glintclip"; target: "popmedia_shine"; after: "popmedia_dismiss2"; } program { name: "popmedia_img"; signal: "popmedia,image"; source: "terminology"; action: STATE_SET "image" 0.0; transition: DECELERATE 0.2; target: "terminology.popmedia"; } program { name: "popmedia_scale"; signal: "popmedia,scale"; source: "terminology"; action: STATE_SET "scale" 0.0; transition: DECELERATE 0.2; target: "terminology.popmedia"; } program { name: "popmedia_edje"; signal: "popmedia,edje"; source: "terminology"; action: STATE_SET "edje" 0.0; transition: DECELERATE 0.2; target: "terminology.popmedia"; } program { name: "popmedia_mov"; signal: "popmedia,movie"; source: "terminology"; action: STATE_SET "movie" 0.0; transition: DECELERATE 0.2; target: "terminology.popmedia"; } program { name: "popmedia_img2"; signal: "popmedia,image"; source: "terminology"; action: STATE_SET "visible" 0.0; transition: DECELERATE 0.2; target: "popmedia_clip"; target: "popmedia_dismiss"; target: "popmedia_shadow"; target: "popmedia_overlay"; target: "popmedia_bevel"; target: "popmedia_glint"; target: "popmedia_glintclip"; target: "popmedia_shine"; } program { name: "popmedia_scale2"; signal: "popmedia,scale"; source: "terminology"; action: STATE_SET "visible" 0.0; transition: DECELERATE 0.2; target: "popmedia_clip"; target: "popmedia_dismiss"; target: "popmedia_shadow"; target: "popmedia_overlay"; target: "popmedia_bevel"; target: "popmedia_glint"; target: "popmedia_glintclip"; target: "popmedia_shine"; } program { name: "popmedia_edje2"; signal: "popmedia,edje"; source: "terminology"; action: STATE_SET "visible" 0.0; transition: DECELERATE 0.2; target: "popmedia_clip"; target: "popmedia_dismiss"; target: "popmedia_shadow"; target: "popmedia_overlay"; target: "popmedia_bevel"; target: "popmedia_glint"; target: "popmedia_glintclip"; target: "popmedia_shine"; } program { name: "popmedia_mov2"; signal: "popmedia,movie"; source: "terminology"; action: STATE_SET "visible" 0.0; transition: DECELERATE 0.2; target: "popmedia_clip"; target: "popmedia_dismiss"; target: "popmedia_shadow"; target: "popmedia_overlay"; target: "popmedia_bevel"; target: "popmedia_glint"; target: "popmedia_glintclip"; target: "popmedia_shine"; } //////////////////////////////////////////////////////////////////// // overlayed options and controls part { name: "terminology.about"; type: SWALLOW; scale: 1; description { state: "default" 0.0; fixed: 1 1; min: 198 198; max: 198 198; align: 0.5 0.0; visible: 0; rel1.relative: 0.0 1.0; rel2.relative: 1.0 1.0; } description { state: "visible" 0.0; inherit: "default" 0.0; visible: 1; align: 0.5 0.5; rel1.relative: 0.0 0.0; rel2.relative: 1.0 1.0; } } program { name: "ab_show"; signal: "about,show"; source: "terminology"; action: STATE_SET "visible" 0.0; transition: SPRING 1.2 2.0 6; target: "terminology.about"; } program { name: "ab_hide"; signal: "about,hide"; source: "terminology"; action: STATE_SET "default" 0.0; transition: DECELERATE 0.6; target: "terminology.about"; } //////////////////////////////////////////////////////////////////// // swallow to hold invisile rect to click on to dismiss things part { name: "terminology.dismiss"; type: SWALLOW; description { state: "default" 0.0; } } //////////////////////////////////////////////////////////////////// // overlayed options and controls part { name: "terminology.optdetails"; type: SWALLOW; scale: 1; description { state: "default" 0.0; fixed: 1 1; min: 40 40; align: 0.0 0.5; visible: 0; rel1 { relative: 1.0 0.02; offset: 2 2; } rel2 { relative: 1.0 0.98; offset: 2 -3; } } description { state: "visible" 0.0; inherit: "default" 0.0; visible: 1; align: 1.0 0.5; rel1 { relative: 0.1 0.02; offset: 2 2; } rel2 { to_x: "terminology.options"; relative: 0.0 0.98; offset: -3 -3; } } } program { name: "opdt_show"; signal: "optdetails,show"; source: "terminology"; action: STATE_SET "visible" 0.0; transition: DECELERATE 0.4; target: "terminology.optdetails"; } program { name: "opdt_hide"; signal: "optdetails,hide"; source: "terminology"; action: STATE_SET "default" 0.0; transition: DECELERATE 0.2; target: "terminology.optdetails"; after: "opdt_hide2"; } program { name: "opdt_hide2"; action: SIGNAL_EMIT "optdetails,hide,done" "terminology"; } part { name: "terminology.options"; type: SWALLOW; scale: 1; description { state: "default" 0.0; fixed: 1 1; align: 0.0 0.5; visible: 0; rel1.relative: 1.0 0.02; rel2 { relative: 1.0 0.98; offset: -3 -3; } } description { state: "visible" 0.0; inherit: "default" 0.0; visible: 1; align: 1.0 0.5; rel1 { offset: -3 2; } rel2 { offset: -3 -3; } } } program { name: "op_show"; signal: "options,show"; source: "terminology"; action: STATE_SET "visible" 0.0; transition: DECELERATE 0.4; target: "terminology.options"; } program { name: "op_hide"; signal: "options,hide"; source: "terminology"; action: STATE_SET "default" 0.0; transition: DECELERATE 0.6; target: "terminology.options"; } part { name: "terminology.controls"; type: SWALLOW; scale: 1; description { state: "default" 0.0; fixed: 1 1; min: 100 100; align: 0.0 1.0; visible: 0; rel1.relative: 1.0 1.0; rel2.relative: 1.0 1.0; } description { state: "visible" 0.0; inherit: "default" 0.0; align: 1.0 1.0; rel1.offset: -3 -3; rel2.offset: -3 -3; visible: 1; } } program { name: "ct_show"; signal: "controls,show"; source: "terminology"; action: STATE_SET "visible" 0.0; transition: DECELERATE 0.3; target: "terminology.controls"; } program { name: "ct_hide"; signal: "controls,hide"; source: "terminology"; action: STATE_SET "default" 0.0; transition: DECELERATE 0.5; target: "terminology.controls"; } } } group { name: "terminology/tabbar_back"; images { image: "tab_other_l.png" COMP; image: "tab_other_m.png" COMP; image: "tab_other_r.png" COMP; image: "tab_shad_l2.png" COMP; image: "tab_shad_r2.png" COMP; } parts { part { name: "tab_bevel_shad1"; mouse_events: 0; clip_to: "clip"; description { state: "default" 0.0; rel1.to: "tab_base_top1"; rel2.to: "tab_base_top1"; image.normal: "tab_shad_l2.png"; image.border: 0 0 10 10; fill.smooth: 0; } } part { name: "tab_bevel_shad3"; mouse_events: 0; clip_to: "clip"; description { state: "default" 0.0; rel1.to: "tab_base_top3"; rel2.to: "tab_base_top3"; image.normal: "tab_shad_r2.png"; image.border: 0 0 10 10; fill.smooth: 0; } } part { name: "tab_base_top1"; mouse_events: 0; clip_to: "clip"; description { state: "default" 0.0; align: 0.0 0.0; rel1.offset: -4 0; max: 12 99999; min: 12 0; image.normal: "tab_other_l.png"; image.border: 0 0 4 4; fill.smooth: 0; } } part { name: "tab_base_top2"; mouse_events: 0; clip_to: "clip"; description { state: "default" 0.0; rel1.to: "tab_base_top1"; rel1.relative: 1.0 0.0; rel2.to: "tab_base_top3"; rel2.relative: 0.0 1.0; image.normal: "tab_other_m.png"; image.border: 0 0 4 4; fill.smooth: 0; } } part { name: "tab_base_top3"; mouse_events: 0; clip_to: "clip"; description { state: "default" 0.0; align: 1.0 0.0; rel2.offset: 3 -1; max: 12 99999; min: 12 0; image.normal: "tab_base_r1.png"; image.normal: "tab_other_r.png"; image.border: 0 0 4 4; fill.smooth: 0; } } part { name: "terminology.title"; type: TEXT; mouse_events: 0; scale: 1; description { state: "default" 0.0; text { font: "Sans:style=Bold"; size: 10; align: 0.5 0.5; min: 0 1; } align: 0.5 0.5; color: 96 96 96 255; rel1.to: "tab_base_top2"; rel2.to: "tab_base_top2"; } } part { name: "clip"; type: RECT; description { state: "default" 0.0; rel2.offset: -1 -2; } } part { name: "event"; type: RECT; description { state: "default" 0.0; color: 0 0 0 0; } } program { signal: "mouse,clicked,1"; source: "event"; action: SIGNAL_EMIT "tab,activate" "terminology"; } } } ////////////////////////////////////////////////////////////////////////////// //// the cursor to show where text is typed group { name: "terminology/cursor"; images { image: "cr_key.png" COMP; image: "cr_out.png" COMP; } sounds { sample { name: "key-tap1" LOSSY 64; source: "kbd-tap.wav"; } sample { name: "key-tap2" LOSSY 64; source: "kbd-tap2.wav"; } sample { name: "key-tap3" LOSSY 64; source: "kbd-tap3.wav"; } sample { name: "key-tap4" LOSSY 64; source: "kbd-tap4.wav"; } sample { name: "key-tap5" LOSSY 64; source: "kbd-tap5.wav"; } } parts { part { name: "pulsclip"; type: RECT; description { state: "default" 0.0; } description { state: "pulse" 0.0; color: 255 255 255 80; } } part { name: "key"; mouse_events: 0; description { state: "default" 0.0; rel1 { to: "outline"; offset: -5 -5; } rel2 { to: "outline"; offset: 4 4; } image { normal: "cr_key.png"; border: 4 4 4 4; } color: 255 255 255 0; } description { state: "on" 0.0; inherit: "default" 0.0; color: 255 255 255 255; } description { state: "out" 0.0; inherit: "default" 0.0; color: 160 100 255 0; } } part { name: "outline"; mouse_events: 0; clip_to: "pulsclip"; description { state: "default" 0.0; image { normal: "cr_out.png"; border: 3 3 3 3; } color: 255 255 255 64; } description { state: "focused" 0.0; inherit: "default" 0.0; color: 255 255 255 255; } } programs { program { name: "focus_in_noblink"; signal: "focus,in,noblink"; source: "terminology"; action: STATE_SET "focused" 0.0; target: "outline"; } program { name: "focus_in"; signal: "focus,in"; source: "terminology"; action: STATE_SET "focused" 0.0; target: "outline"; after: "pulse-prepare"; } program { name: "pulse-prepare"; action: STATE_SET "default" 0.0; target: "pulsclip"; after: "pulse"; } program { name: "pulse"; action: STATE_SET "pulse" 0.0; transition: DECELERATE 0.5; target: "pulsclip"; after: "pulse2"; } program { name: "pulse2"; action: STATE_SET "default" 0.0; in: 1.5 0.0; transition: DECELERATE 0.5; target: "pulsclip"; after: "pulse"; } program { name: "focus_out"; signal: "focus,out"; source: "terminology"; action: ACTION_STOP; target: "focus_in"; target: "pulse"; target: "pulse2"; after: "focus_out2"; } program { name: "focus_out2"; action: STATE_SET "default" 0.0; target: "outline"; target: "pulsclip"; } program { signal: "key,down"; source: "terminology"; script { new buf[32]; snprintf(buf, 31, "key-down%i", (rand() % 5) + 1); run_program(get_program_id(buf)); } } program { name: "key-down1"; action: PLAY_SAMPLE "key-tap1" 1.0; } program { name: "key-down2"; action: PLAY_SAMPLE "key-tap2" 1.0; } program { name: "key-down3"; action: PLAY_SAMPLE "key-tap3" 1.0; } program { name: "key-down4"; action: PLAY_SAMPLE "key-tap4" 1.0; } program { name: "key-down5"; action: PLAY_SAMPLE "key-tap5" 1.0; } program { name: "key"; signal: "key,down"; source: "terminology"; action: STATE_SET "default" 0.0; target: "key"; after: "key2"; } program { name: "key2"; action: STATE_SET "on" 0.0; target: "key"; after: "key3"; } program { name: "key3"; action: STATE_SET "out" 0.0; transition: DECELERATE 0.3; target: "key"; } } } } ////////////////////////////////////////////////////////////////////////////// //// an object to contain the selection tool used for selecting tabs (with //// a glow grid of terms group { name: "terminology/sel/base"; images { image: "pm_fill.png" COMP; } script { public message(Msg_Type:type, id, ...) { if ((type != MSG_INT) || (id != 1)) return; if (getarg(2) < 100) set_state(PART:"fill", "translucent", 0.0); else set_state(PART:"fill", "default", 0.0); } } parts { //////////////////////////////////////////////////////////////////// // background and shadows part { name: "fill"; mouse_events: 0; description { state: "default" 0.0; image.normal: "pm_fill.png"; fill { size.relative: 0.0 0.0; size.offset: 64 64; } } description { state: "translucent" 0.0; inherit: "default" 0.0; visible: 0; } } program { signal: "translucent,on"; source: "terminology"; action: STATE_SET "translucent" 0.0; target: "fill"; } program { signal: "translucent,off"; source: "terminology"; action: STATE_SET "default" 0.0; target: "fill"; } //////////////////////////////////////////////////////////////////// // content (where the grid of terms goes) part { name: "clip"; type: RECT; description { state: "default" 0.0; } } part { name: "terminology.content"; type: SWALLOW; clip_to: "clip"; description { state: "default" 0.0; } } } } group { name: "terminology/sel/item"; images { image: "bg_bevel.png" COMP; image: "pm_shadow.png" COMP; image: "cr_glow.png" COMP; image: "bg_led_base.png" COMP; image: "bg_led.png" COMP; image: "bg_led_strobe.png" COMP; } parts { //////////////////////////////////////////////////////////////////// // base background and selection image part { name: "clip"; type: RECT; description { state: "default" 0.0; rel1.to: "terminology.content"; rel2.to: "terminology.content"; color: 128 128 128 255; } description { state: "selected" 0.0; inherit: "default" 0.0; color: 255 255 255 255; } } part { name: "shadow"; mouse_events: 0; description { state: "default" 0.0; fixed: 1 1; rel1.to: "terminology.content"; rel2.to: "terminology.content"; rel1.offset: -5 -5; rel2.offset: 4 4; image.normal: "pm_shadow.png"; image.border: 64 64 64 64; image.border_scale_by: 0.1; color: 255 255 255 128; fill.smooth: 0; } description { state: "selected" 0.0; inherit: "default" 0.0; rel1.offset: -40 -40; rel2.offset: 39 39; image.border_scale_by: 1.0; color: 255 255 255 255; } } part { name: "glow"; mouse_events: 0; description { state: "default" 0.0; rel1.to: "terminology.content"; rel2.to: "terminology.content"; rel1.offset: -4 -4; rel2.offset: 3 3; image { normal: "cr_glow.png"; border: 9 9 9 9; } color: 255 255 255 0; } description { state: "selected" 0.0; inherit: "default" 0.0; color: 255 255 255 255; } } //////////////////////////////////////////////////////////////////// // swallowed terminal content + bg inside it part { name: "base"; type: RECT; clip_to: "clip"; description { state: "default" 0.0; color: BG_COLOR; rel1.to: "terminology.content"; rel2.to: "terminology.content"; } } part { name: "terminology.content"; type: SWALLOW; clip_to: "clip"; description { state: "default" 0.0; rel1.relative: 0.1 0.1; rel2.relative: 0.9 0.9; } description { state: "selected" 0.0; inherit: "default" 0.0; rel1.relative: 0.0 0.0; rel2.relative: 1.0 1.0; } } program { signal: "selected"; source: "terminology"; action: STATE_SET "selected" 0.0; transition: DECELERATE 0.2 CURRENT; target: "terminology.content"; target: "terminology.label"; target: "shadow"; target: "clip"; target: "glow"; } program { signal: "selected,start"; source: "terminology"; action: STATE_SET "selected" 0.0; target: "terminology.content"; target: "terminology.label"; target: "shadow"; target: "clip"; target: "glow"; } program { signal: "unselected"; source: "terminology"; action: STATE_SET "default" 0.0; transition: DECELERATE 0.4 CURRENT; target: "terminology.content"; target: "terminology.label"; target: "shadow"; target: "clip"; target: "glow"; } //////////////////////////////////////////////////////////////////// // fancy stuff over the top of the terminal for shading and labelling part { name: "bevel"; mouse_events: 0; description { state: "default" 0.0; fixed: 1 1; rel1.to: "terminology.content"; rel2.to: "terminology.content"; image.normal: "bg_bevel.png"; image.border: 3 3 5 3; image.middle: 0; fill.smooth: 0; } } part { name: "terminology.label"; type: TEXT; mouse_events: 0; scale: 1; description { state: "default" 0.0; rel1.to: "terminology.content"; rel2.to: "terminology.content"; color: 255 255 255 255; align: 0.5 1.0; text { font: "Sans"; size: 10; align: 0.5 1.0; min: 0 1; } } description { state: "selected" 0.0; inherit: "default" 0.0; color: 255 255 255 255; text { font:"Sans:style=Bold"; } } } //////////////////////////////////////////////////////////////////// // visual bell - spinning red siren light part { name: "bell_base"; mouse_events: 0; description { state: "default" 0.0; fixed: 1 1; visible: 0; color: 255 255 255 0; min: 32 32; max: 32 32; rel1.to: "terminology.content"; rel2.to: "terminology.content"; align: 1.0 1.0; image.normal: "bg_led_base.png"; } description { state: "visible" 0.0; inherit: "default" 0.0; visible: 1; color: 255 255 255 255; } } part { name: "bell"; mouse_events: 0; description { state: "default" 0.0; fixed: 1 1; visible: 0; color: 255 255 255 0; rel1.to: "bell_base"; rel2.to: "bell_base"; image.normal: "bg_led.png"; } description { state: "visible" 0.0; inherit: "default" 0.0; visible: 1; color: 255 255 255 255; } } part { name: "bell_strobe"; mouse_events: 0; description { state: "default" 0.0; fixed: 1 1; visible: 0; color: 255 255 255 0; rel1.to: "bell"; rel2.to: "bell"; image.normal: "bg_led_strobe.png"; map { on: 1; smooth: 1; rotation.center: "bell"; } } description { state: "spin" 0.0; inherit: "default" 0.0; visible: 1; color: 255 255 255 255; map.rotation.z: 36.0; } description { state: "spin_done" 0.0; inherit: "spin" 0.0; map.rotation.z: 720.0; } description { state: "spin_done2" 0.0; inherit: "spin" 0.0; map.rotation.z: 1440.0; } } program { signal: "bell"; source: "terminology"; action: STATE_SET "default" 0.0; target: "bell_base"; target: "bell"; target: "bell_strobe"; after: "bell"; } program { name: "bell"; action: STATE_SET "visible" 0.0; target: "bell_base"; after: "bell2"; } program { name: "bell2"; action: STATE_SET "visible" 0.0; transition: DECELERATE 0.1; target: "bell"; after: "bell3"; } program { name: "bell3"; action: STATE_SET "spin" 0.0; transition: LINEAR 0.1; target: "bell_strobe"; after: "bell4.2"; } program { name: "bell4.2"; action: STATE_SET "spin_done" 0.0; transition: LINEAR 0.9; target: "bell_strobe"; after: "bell4.3"; } program { name: "bell4.3"; action: STATE_SET "spin_done2" 0.0; transition: LINEAR 1.0; target: "bell_strobe"; after: "bell4.4"; } program { name: "bell4.4"; action: STATE_SET "spin_done" 0.0; target: "bell_strobe"; after: "bell4.3"; } } } ////////////////////////////////////////////////////////////////////////////// //// an object overlayd on text that is a link group { name: "terminology/link"; images { image: "lk_bottom.png" COMP; } parts { part { name: "bottom"; mouse_events: 0; description { state: "default" 0.0; image.normal: "lk_bottom.png"; image.border: 9 9 0 0; align: 0.5 1.0; min: 20 8; rel1.offset: -6 0; rel1.relative: 0.0 1.0; rel2.offset: 5 0; color: 100 200 255 255; fill.smooth: 0; } } part { name: "event"; type: RECT; mouse_events: 1; repeat_events: 1; description { state: "default" 0.0; color: 0 0 0 0; } } } } }