<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DZone Snippets: palette code</title>
    <link>http://snippets.dzone.com/posts</link>
    <pubDate>Mon, 06 Oct 2008 09:36:50 GMT</pubDate>
    <description>DZone Snippets: palette code</description>
    <item>
      <title>Retrieve the color from an SVG shape</title>
      <link>http://snippets.dzone.com/posts/show/5291</link>
      <description>&lt;code&gt;&lt;br /&gt;    &lt;rect id="c1" x="510"&lt;br /&gt;y="120" width="20px" height="20px" fill="pink" stroke="blue" onclick="setPenColour(evt)"/&gt;&lt;br /&gt;  &lt;![CDATA[&lt;br /&gt;  function setPenColour(evt) {&lt;br /&gt;    m_pen_colour = evt.target.getAttribute('fill');&lt;br /&gt;  }&lt;br /&gt;  ]]&gt;&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;Reference: &lt;br /&gt;&lt;a href="http://www.kevlindev.com/tutorials/basics/index.htm"&gt;Tutorials - SVG&lt;/a&gt; [kevlindev.com]&lt;br /&gt;&lt;a href="http://www.kevlindev.com/tutorials/basics/events/mouse/svg_js/index.htm"&gt;Tutorials - SVG - Events&lt;/a&gt; [kevlindev.com]</description>
      <pubDate>Sun, 30 Mar 2008 14:37:02 GMT</pubDate>
      <guid>http://snippets.dzone.com/posts/show/5291</guid>
      <author>jrobertson (James Robertson)</author>
    </item>
    <item>
      <title>Color picker</title>
      <link>http://snippets.dzone.com/posts/show/1493</link>
      <description>I saw someone write a fileselect dialog a few days ago.&lt;br /&gt;I think we should have more dialog type to use in our apps.&lt;br /&gt;So, I write a color picker code below.&lt;br /&gt;It can be converted easily into a dialog component.&lt;br /&gt;&lt;br /&gt;&lt;code&gt;&lt;br /&gt;// Usual code as always&lt;br /&gt;import e32&lt;br /&gt;from appuifw import *&lt;br /&gt;from key_codes import *&lt;br /&gt;&lt;br /&gt;class Keyboard(object):&lt;br /&gt;    def __init__(self):&lt;br /&gt;        self.state = {}  # is this key pressing ?&lt;br /&gt;        self.buffer= {}  # is it waiting to be processed ?&lt;br /&gt;    def handle_event(self, event): # for event_callback&lt;br /&gt;        code = event['scancode']&lt;br /&gt;        if event['type'] == EEventKeyDown:&lt;br /&gt;            self.buffer[code]= 1   # put into queue&lt;br /&gt;            self.state[code] = 1&lt;br /&gt;        elif event['type'] == EEventKeyUp:&lt;br /&gt;            self.state[code] = 0&lt;br /&gt;    def pressing(self, code):      # just check&lt;br /&gt;        return self.state.get(code,0)&lt;br /&gt;    def pressed(self, code):       # check and process the event&lt;br /&gt;        if self.buffer.get(code,0):&lt;br /&gt;            self.buffer[code] = 0  # take out of queue&lt;br /&gt;            return 1&lt;br /&gt;        return 0&lt;br /&gt;&lt;br /&gt;key = Keyboard()&lt;br /&gt;app.body = canvas = Canvas(event_callback=key.handle_event)&lt;br /&gt;&lt;br /&gt;def quit():&lt;br /&gt;    global running&lt;br /&gt;    running = 0&lt;br /&gt;&lt;br /&gt;app.exit_key_handler = quit&lt;br /&gt;running = 1&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;At first, I wanted to use the &lt;a href=http://www.bigbold.com/snippets/posts/show/1475&gt;standard palette&lt;/a&gt; of s60.&lt;br /&gt;But later decide to just use 216 web-safe colors.&lt;br /&gt;The code is simpler, so the concept is easier to understand.&lt;br /&gt;&lt;code&gt;&lt;br /&gt;ff00 = range(0xff, -1, -0x33)&lt;br /&gt;pal = [(r,g,b) for r in ff00 for g in ff00 for b in ff00]  # web-safe&lt;br /&gt;map_j = range(0,12,2)+range(11,0,-2)  # make better grouping&lt;br /&gt;for j in range(12):&lt;br /&gt;    for i in range(18):&lt;br /&gt;        k = 18*map_j[j] + i&lt;br /&gt;        canvas.rectangle([(9*i+1, 9*j+1), (9*i+9, 9*j+9)], None, pal[k])&lt;br /&gt;&lt;br /&gt;def clear_box(color=0xffffff):&lt;br /&gt;    global x,y&lt;br /&gt;    canvas.rectangle([(9*x, 9*y), (9*x+10, 9*y+10)], color)  # cursor&lt;br /&gt;&lt;br /&gt;x, y = 0, 0&lt;br /&gt;black_white = 0&lt;br /&gt;while running:&lt;br /&gt;    if key.pressed(EScancodeLeftArrow):&lt;br /&gt;        clear_box()&lt;br /&gt;        if x &gt; 0: x -= 1&lt;br /&gt;    if key.pressed(EScancodeRightArrow):&lt;br /&gt;        clear_box()&lt;br /&gt;        if x &lt; 17: x += 1&lt;br /&gt;    if key.pressed(EScancodeUpArrow):&lt;br /&gt;        clear_box()&lt;br /&gt;        if y &gt; 0: y -= 1&lt;br /&gt;    if key.pressed(EScancodeDownArrow):&lt;br /&gt;        clear_box()&lt;br /&gt;        if y &lt; 11: y += 1&lt;br /&gt;    if key.pressed(EScancodeSelect):&lt;br /&gt;        color = pal[18*map_j[y] + x]&lt;br /&gt;        canvas.rectangle([(1,109), (17*9+9,130)], None, color)  # show color&lt;br /&gt;    black_white ^= 0xffffff  # toggle&lt;br /&gt;    clear_box(black_white)&lt;br /&gt;    e32.ao_sleep(0.2)&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;See &lt;a href=http://www.frappr.com/pys60/photo/1357584&gt;Screenshot&lt;/a&gt;.</description>
      <pubDate>Wed, 15 Feb 2006 23:53:25 GMT</pubDate>
      <guid>http://snippets.dzone.com/posts/show/1493</guid>
      <author>korakot (Korakot Chaovavanich)</author>
    </item>
    <item>
      <title>Getting symbian's default palette table</title>
      <link>http://snippets.dzone.com/posts/show/1475</link>
      <description>After a night hacking what is the 8-bit color for mbm format.&lt;br /&gt;I finally found &lt;a href=http://forum.newlc.com/index.php?topic=5744#msg29359&gt;this thead&lt;/a&gt; about standard palette.&lt;br /&gt;&lt;br /&gt;So, I make this pallete mapping table to use with 8-bit icons.&lt;br /&gt;&lt;code&gt;&lt;br /&gt;palette_string = '''0x00000000&lt;br /&gt;0x00CCFFFF&lt;br /&gt;0x0099FFFF&lt;br /&gt;0x0066FFFF&lt;br /&gt;0x0033FFFF&lt;br /&gt;0x0000FFFF&lt;br /&gt;0x00FFCCFF&lt;br /&gt;0x00CCCCFF&lt;br /&gt;0x0099CCFF&lt;br /&gt;0x0066CCFF&lt;br /&gt;0x0033CCFF&lt;br /&gt;0x0000CCFF&lt;br /&gt;0x00FF99FF&lt;br /&gt;0x00CC99FF&lt;br /&gt;0x009999FF&lt;br /&gt;0x006699FF&lt;br /&gt;0x003399FF&lt;br /&gt;0x000099FF&lt;br /&gt;0x00FF66FF&lt;br /&gt;0x00CC66FF&lt;br /&gt;0x009966FF&lt;br /&gt;0x006666FF&lt;br /&gt;0x003366FF&lt;br /&gt;0x000066FF&lt;br /&gt;0x00FF33FF&lt;br /&gt;0x00CC33FF&lt;br /&gt;0x009933FF&lt;br /&gt;0x006633FF&lt;br /&gt;0x003333FF&lt;br /&gt;0x000033FF&lt;br /&gt;0x00FF00FF&lt;br /&gt;0x00CC00FF&lt;br /&gt;0x009900FF&lt;br /&gt;0x006600FF&lt;br /&gt;0x003300FF&lt;br /&gt;0x000000FF&lt;br /&gt;0x00FFFFCC&lt;br /&gt;0x00CCFFCC&lt;br /&gt;0x0099FFCC&lt;br /&gt;0x0066FFCC&lt;br /&gt;0x0033FFCC&lt;br /&gt;0x0000FFCC&lt;br /&gt;0x00FFCCCC&lt;br /&gt;0x00CCCCCC&lt;br /&gt;0x0099CCCC&lt;br /&gt;0x0066CCCC&lt;br /&gt;0x0033CCCC&lt;br /&gt;0x0000CCCC&lt;br /&gt;0x00FF99CC&lt;br /&gt;0x00CC99CC&lt;br /&gt;0x009999CC&lt;br /&gt;0x006699CC&lt;br /&gt;0x003399CC&lt;br /&gt;0x000099CC&lt;br /&gt;0x00FF66CC&lt;br /&gt;0x00CC66CC&lt;br /&gt;0x009966CC&lt;br /&gt;0x006666CC&lt;br /&gt;0x003366CC&lt;br /&gt;0x000066CC&lt;br /&gt;0x00FF33CC&lt;br /&gt;0x00CC33CC&lt;br /&gt;0x009933CC&lt;br /&gt;0x006633CC&lt;br /&gt;0x003333CC&lt;br /&gt;0x000033CC&lt;br /&gt;0x00FF00CC&lt;br /&gt;0x00CC00CC&lt;br /&gt;0x009900CC&lt;br /&gt;0x006600CC&lt;br /&gt;0x003300CC&lt;br /&gt;0x000000CC&lt;br /&gt;0x00FFFF99&lt;br /&gt;0x00CCFF99&lt;br /&gt;0x0099FF99&lt;br /&gt;0x0066FF99&lt;br /&gt;0x0033FF99&lt;br /&gt;0x0000FF99&lt;br /&gt;0x00FFCC99&lt;br /&gt;0x00CCCC99&lt;br /&gt;0x0099CC99&lt;br /&gt;0x0066CC99&lt;br /&gt;0x0033CC99&lt;br /&gt;0x0000CC99&lt;br /&gt;0x00FF9999&lt;br /&gt;0x00CC9999&lt;br /&gt;0x00999999&lt;br /&gt;0x00669999&lt;br /&gt;0x00339999&lt;br /&gt;0x00009999&lt;br /&gt;0x00FF6699&lt;br /&gt;0x00CC6699&lt;br /&gt;0x00996699&lt;br /&gt;0x00666699&lt;br /&gt;0x00336699&lt;br /&gt;0x00006699&lt;br /&gt;0x00FF3399&lt;br /&gt;0x00CC3399&lt;br /&gt;0x00993399&lt;br /&gt;0x00663399&lt;br /&gt;0x00333399&lt;br /&gt;0x00003399&lt;br /&gt;0x00FF0099&lt;br /&gt;0x00CC0099&lt;br /&gt;0x00990099&lt;br /&gt;0x00660099&lt;br /&gt;0x00330099&lt;br /&gt;0x00000099&lt;br /&gt;0x00FFFF66&lt;br /&gt;0x00CCFF66&lt;br /&gt;0x0099FF66&lt;br /&gt;0x0066FF66&lt;br /&gt;0x0033FF66&lt;br /&gt;0x0000FF66&lt;br /&gt;0x00FFCC66&lt;br /&gt;0x00CCCC66&lt;br /&gt;0x0099CC66&lt;br /&gt;0x0066CC66&lt;br /&gt;0x0033CC66&lt;br /&gt;0x0000CC66&lt;br /&gt;0x00FF9966&lt;br /&gt;0x00CC9966&lt;br /&gt;0x00999966&lt;br /&gt;0x00669966&lt;br /&gt;0x00339966&lt;br /&gt;0x00009966&lt;br /&gt;0x00FF6666&lt;br /&gt;0x00CC6666&lt;br /&gt;0x00996666&lt;br /&gt;0x00666666&lt;br /&gt;0x00336666&lt;br /&gt;0x00006666&lt;br /&gt;0x00FF3366&lt;br /&gt;0x00CC3366&lt;br /&gt;0x00993366&lt;br /&gt;0x00663366&lt;br /&gt;0x00333366&lt;br /&gt;0x00003366&lt;br /&gt;0x00FF0066&lt;br /&gt;0x00CC0066&lt;br /&gt;0x00990066&lt;br /&gt;0x00660066&lt;br /&gt;0x00330066&lt;br /&gt;0x00000066&lt;br /&gt;0x00FFFF33&lt;br /&gt;0x00CCFF33&lt;br /&gt;0x0099FF33&lt;br /&gt;0x0066FF33&lt;br /&gt;0x0033FF33&lt;br /&gt;0x0000FF33&lt;br /&gt;0x00FFCC33&lt;br /&gt;0x00CCCC33&lt;br /&gt;0x0099CC33&lt;br /&gt;0x0066CC33&lt;br /&gt;0x0033CC33&lt;br /&gt;0x0000CC33&lt;br /&gt;0x00FF9933&lt;br /&gt;0x00CC9933&lt;br /&gt;0x00999933&lt;br /&gt;0x00669933&lt;br /&gt;0x00339933&lt;br /&gt;0x00009933&lt;br /&gt;0x00FF6633&lt;br /&gt;0x00CC6633&lt;br /&gt;0x00996633&lt;br /&gt;0x00666633&lt;br /&gt;0x00336633&lt;br /&gt;0x00006633&lt;br /&gt;0x00FF3333&lt;br /&gt;0x00CC3333&lt;br /&gt;0x00993333&lt;br /&gt;0x00663333&lt;br /&gt;0x00333333&lt;br /&gt;0x00003333&lt;br /&gt;0x00FF0033&lt;br /&gt;0x00CC0033&lt;br /&gt;0x00990033&lt;br /&gt;0x00660033&lt;br /&gt;0x00330033&lt;br /&gt;0x00000033&lt;br /&gt;0x00FFFF00&lt;br /&gt;0x00CCFF00&lt;br /&gt;0x0099FF00&lt;br /&gt;0x0066FF00&lt;br /&gt;0x0033FF00&lt;br /&gt;0x0000FF00&lt;br /&gt;0x00FFCC00&lt;br /&gt;0x00CCCC00&lt;br /&gt;0x0099CC00&lt;br /&gt;0x0066CC00&lt;br /&gt;0x0033CC00&lt;br /&gt;0x0000CC00&lt;br /&gt;0x00FF9900&lt;br /&gt;0x00CC9900&lt;br /&gt;0x00999900&lt;br /&gt;0x00669900&lt;br /&gt;0x00339900&lt;br /&gt;0x00009900&lt;br /&gt;0x00FF6600&lt;br /&gt;0x00CC6600&lt;br /&gt;0x00996600&lt;br /&gt;0x00666600&lt;br /&gt;0x00336600&lt;br /&gt;0x00006600&lt;br /&gt;0x00FF3300&lt;br /&gt;0x00CC3300&lt;br /&gt;0x00993300&lt;br /&gt;0x00663300&lt;br /&gt;0x00333300&lt;br /&gt;0x00003300&lt;br /&gt;0x00FF0000&lt;br /&gt;0x00CC0000&lt;br /&gt;0x00990000&lt;br /&gt;0x00660000&lt;br /&gt;0x00330000&lt;br /&gt;0x00000000&lt;br /&gt;0x00EEEEEE&lt;br /&gt;0x00DDDDDD&lt;br /&gt;0x00BBBBBB&lt;br /&gt;0x00AAAAAA&lt;br /&gt;0x00888888&lt;br /&gt;0x00777777&lt;br /&gt;0x00555555&lt;br /&gt;0x00444444&lt;br /&gt;0x00222222&lt;br /&gt;0x00111111&lt;br /&gt;0x00000000&lt;br /&gt;0x00000000&lt;br /&gt;0x00000000&lt;br /&gt;0x00000000&lt;br /&gt;0x00000000&lt;br /&gt;0x00000000&lt;br /&gt;0x00000000&lt;br /&gt;0x00000000&lt;br /&gt;0x00000000&lt;br /&gt;0x00000000&lt;br /&gt;0x00000000&lt;br /&gt;0x00000000&lt;br /&gt;0x00000000&lt;br /&gt;0x00000000&lt;br /&gt;0x00000000&lt;br /&gt;0x00000000&lt;br /&gt;0x00000000&lt;br /&gt;0x00000000&lt;br /&gt;0x00000000&lt;br /&gt;0x00000000&lt;br /&gt;0x00000000&lt;br /&gt;0x00000000&lt;br /&gt;0x00000000&lt;br /&gt;0x00000000&lt;br /&gt;0x00000000&lt;br /&gt;0x00000000&lt;br /&gt;0x00000000&lt;br /&gt;0x00000000&lt;br /&gt;0x00000000&lt;br /&gt;0x00FFFFFF'''&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;Split and map them into (RR, GG, BB) array&lt;br /&gt;&lt;code&gt;&lt;br /&gt;palette = [tuple([int(col[i:i+2], 16) for i in range(8,2,-2)]) for col in palette_string.split('\n')]&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;Last night, I lost 3-4 hours figuring if 8-bit is a 8-bit true color.&lt;br /&gt;I should have thought about standard palette and google them eariler.&lt;br /&gt;&lt;br /&gt;updated&lt;br /&gt;=======&lt;br /&gt;I just notice the sequence pattern which should make the code shorter.&lt;br /&gt;&lt;code&gt;&lt;br /&gt;ff00 = range(0xff, -1, -0x33)&lt;br /&gt;palette = [(r,g,b) for r in ff00 for g in ff00 for b in ff00] #0x336699&lt;br /&gt;palette[0] = (0,0,0)&lt;br /&gt;palette += [(17*i,17*i,17*i) for i in (14,13, 11,10, 8,7, 5,4, 2,1)] # grey&lt;br /&gt;palette += [(0,0,0) for i in range(30)]  # empty&lt;br /&gt;palette[-1] = (255,255,255)&lt;br /&gt;&lt;/code&gt;</description>
      <pubDate>Tue, 14 Feb 2006 09:53:58 GMT</pubDate>
      <guid>http://snippets.dzone.com/posts/show/1475</guid>
      <author>korakot (Korakot Chaovavanich)</author>
    </item>
  </channel>
</rss>
