tadded 256 color palette, still to be incorporated in GUI - cross-stitch - interactively turn images into patterns for cross stitching
 (HTM) git clone git://src.adamsgaard.dk/cross-stitch
 (DIR) Log
 (DIR) Files
 (DIR) Refs
 (DIR) LICENSE
       ---
 (DIR) commit 503df807a1d7659850deca687081e91fb672272e
 (DIR) parent a6cb3cbb779bbf8269a85093e3e04e04601dc2eb
 (HTM) Author: Anders Damsgaard <anders.damsgaard@geo.au.dk>
       Date:   Sat, 15 Feb 2014 21:11:56 +0100
       
       added 256 color palette, still to be incorporated in GUI
       
       Diffstat:
         A 256-color-rgb.dat                   |     256 +++++++++++++++++++++++++++++++
         A 256-color.dat                       |     256 +++++++++++++++++++++++++++++++
         A convert-hex-to-rgb.py               |      24 ++++++++++++++++++++++++
         M cross-stitch.py                     |      20 ++++++++++++++++++++
       
       4 files changed, 556 insertions(+), 0 deletions(-)
       ---
 (DIR) diff --git a/256-color-rgb.dat b/256-color-rgb.dat
       t@@ -0,0 +1,256 @@
       +0 0 0
       +128 0 0
       +0 128 0
       +128 128 0
       +0 0 128
       +128 0 128
       +0 128 128
       +192 192 192
       +128 128 128
       +255 0 0
       +0 255 0
       +255 255 0
       +0 0 255
       +255 0 255
       +0 255 255
       +255 255 255
       +0 0 0
       +0 0 95
       +0 0 135
       +0 0 175
       +0 0 215
       +0 0 255
       +0 95 0
       +0 95 95
       +0 95 135
       +0 95 175
       +0 95 215
       +0 95 255
       +0 135 0
       +0 135 95
       +0 135 135
       +0 135 175
       +0 135 215
       +0 135 255
       +0 175 0
       +0 175 95
       +0 175 135
       +0 175 175
       +0 175 215
       +0 175 255
       +0 215 0
       +0 215 95
       +0 215 135
       +0 215 175
       +0 215 215
       +0 215 255
       +0 255 0
       +0 255 95
       +0 255 135
       +0 255 175
       +0 255 215
       +0 255 255
       +95 0 0
       +95 0 95
       +95 0 135
       +95 0 175
       +95 0 215
       +95 0 255
       +95 95 0
       +95 95 95
       +95 95 135
       +95 95 175
       +95 95 215
       +95 95 255
       +95 135 0
       +95 135 95
       +95 135 135
       +95 135 175
       +95 135 215
       +95 135 255
       +95 175 0
       +95 175 95
       +95 175 135
       +95 175 175
       +95 175 215
       +95 175 255
       +95 215 0
       +95 215 95
       +95 215 135
       +95 215 175
       +95 215 215
       +95 215 255
       +95 255 0
       +95 255 95
       +95 255 135
       +95 255 175
       +95 255 215
       +95 255 255
       +135 0 0
       +135 0 95
       +135 0 135
       +135 0 175
       +135 0 215
       +135 0 255
       +135 95 0
       +135 95 95
       +135 95 135
       +135 95 175
       +135 95 215
       +135 95 255
       +135 135 0
       +135 135 95
       +135 135 135
       +135 135 175
       +135 135 215
       +135 135 255
       +135 175 0
       +135 175 95
       +135 175 135
       +135 175 175
       +135 175 215
       +135 175 255
       +135 215 0
       +135 215 95
       +135 215 135
       +135 215 175
       +135 215 215
       +135 215 255
       +135 255 0
       +135 255 95
       +135 255 135
       +135 255 175
       +135 255 215
       +135 255 255
       +175 0 0
       +175 0 95
       +175 0 135
       +175 0 175
       +175 0 215
       +175 0 255
       +175 95 0
       +175 95 95
       +175 95 135
       +175 95 175
       +175 95 215
       +175 95 255
       +175 135 0
       +175 135 95
       +175 135 135
       +175 135 175
       +175 135 215
       +175 135 255
       +175 175 0
       +175 175 95
       +175 175 135
       +175 175 175
       +175 175 215
       +175 175 255
       +175 215 0
       +175 215 95
       +175 215 135
       +175 215 175
       +175 215 215
       +175 215 255
       +175 255 0
       +175 255 95
       +175 255 135
       +175 255 175
       +175 255 215
       +175 255 255
       +215 0 0
       +215 0 95
       +215 0 135
       +215 0 175
       +215 0 215
       +215 0 255
       +215 95 0
       +215 95 95
       +215 95 135
       +215 95 175
       +215 95 215
       +215 95 255
       +215 135 0
       +215 135 95
       +215 135 135
       +215 135 175
       +215 135 215
       +215 135 255
       +215 175 0
       +215 175 95
       +215 175 135
       +215 175 175
       +215 175 215
       +215 175 255
       +215 215 0
       +215 215 95
       +215 215 135
       +215 215 175
       +215 215 215
       +215 215 255
       +215 255 0
       +215 255 95
       +215 255 135
       +215 255 175
       +215 255 215
       +215 255 255
       +255 0 0
       +255 0 95
       +255 0 135
       +255 0 175
       +255 0 215
       +255 0 255
       +255 95 0
       +255 95 95
       +255 95 135
       +255 95 175
       +255 95 215
       +255 95 255
       +255 135 0
       +255 135 95
       +255 135 135
       +255 135 175
       +255 135 215
       +255 135 255
       +255 175 0
       +255 175 95
       +255 175 135
       +255 175 175
       +255 175 215
       +255 175 255
       +255 215 0
       +255 215 95
       +255 215 135
       +255 215 175
       +255 215 215
       +255 215 255
       +255 255 0
       +255 255 95
       +255 255 135
       +255 255 175
       +255 255 215
       +255 255 255
       +8 8 8
       +18 18 18
       +28 28 28
       +38 38 38
       +48 48 48
       +58 58 58
       +68 68 68
       +78 78 78
       +88 88 88
       +96 96 96
       +102 102 102
       +118 118 118
       +128 128 128
       +138 138 138
       +148 148 148
       +158 158 158
       +168 168 168
       +178 178 178
       +188 188 188
       +198 198 198
       +208 208 208
       +218 218 218
       +228 228 228
       +238 238 238
 (DIR) diff --git a/256-color.dat b/256-color.dat
       t@@ -0,0 +1,256 @@
       +000000
       +800000
       +008000
       +808000
       +000080
       +800080
       +008080
       +c0c0c0
       +808080
       +ff0000
       +00ff00
       +ffff00
       +0000ff
       +ff00ff
       +00ffff
       +ffffff
       +000000
       +00005f
       +000087
       +0000af
       +0000d7
       +0000ff
       +005f00
       +005f5f
       +005f87
       +005faf
       +005fd7
       +005fff
       +008700
       +00875f
       +008787
       +0087af
       +0087d7
       +0087ff
       +00af00
       +00af5f
       +00af87
       +00afaf
       +00afd7
       +00afff
       +00d700
       +00d75f
       +00d787
       +00d7af
       +00d7d7
       +00d7ff
       +00ff00
       +00ff5f
       +00ff87
       +00ffaf
       +00ffd7
       +00ffff
       +5f0000
       +5f005f
       +5f0087
       +5f00af
       +5f00d7
       +5f00ff
       +5f5f00
       +5f5f5f
       +5f5f87
       +5f5faf
       +5f5fd7
       +5f5fff
       +5f8700
       +5f875f
       +5f8787
       +5f87af
       +5f87d7
       +5f87ff
       +5faf00
       +5faf5f
       +5faf87
       +5fafaf
       +5fafd7
       +5fafff
       +5fd700
       +5fd75f
       +5fd787
       +5fd7af
       +5fd7d7
       +5fd7ff
       +5fff00
       +5fff5f
       +5fff87
       +5fffaf
       +5fffd7
       +5fffff
       +870000
       +87005f
       +870087
       +8700af
       +8700d7
       +8700ff
       +875f00
       +875f5f
       +875f87
       +875faf
       +875fd7
       +875fff
       +878700
       +87875f
       +878787
       +8787af
       +8787d7
       +8787ff
       +87af00
       +87af5f
       +87af87
       +87afaf
       +87afd7
       +87afff
       +87d700
       +87d75f
       +87d787
       +87d7af
       +87d7d7
       +87d7ff
       +87ff00
       +87ff5f
       +87ff87
       +87ffaf
       +87ffd7
       +87ffff
       +af0000
       +af005f
       +af0087
       +af00af
       +af00d7
       +af00ff
       +af5f00
       +af5f5f
       +af5f87
       +af5faf
       +af5fd7
       +af5fff
       +af8700
       +af875f
       +af8787
       +af87af
       +af87d7
       +af87ff
       +afaf00
       +afaf5f
       +afaf87
       +afafaf
       +afafd7
       +afafff
       +afd700
       +afd75f
       +afd787
       +afd7af
       +afd7d7
       +afd7ff
       +afff00
       +afff5f
       +afff87
       +afffaf
       +afffd7
       +afffff
       +d70000
       +d7005f
       +d70087
       +d700af
       +d700d7
       +d700ff
       +d75f00
       +d75f5f
       +d75f87
       +d75faf
       +d75fd7
       +d75fff
       +d78700
       +d7875f
       +d78787
       +d787af
       +d787d7
       +d787ff
       +d7af00
       +d7af5f
       +d7af87
       +d7afaf
       +d7afd7
       +d7afff
       +d7d700
       +d7d75f
       +d7d787
       +d7d7af
       +d7d7d7
       +d7d7ff
       +d7ff00
       +d7ff5f
       +d7ff87
       +d7ffaf
       +d7ffd7
       +d7ffff
       +ff0000
       +ff005f
       +ff0087
       +ff00af
       +ff00d7
       +ff00ff
       +ff5f00
       +ff5f5f
       +ff5f87
       +ff5faf
       +ff5fd7
       +ff5fff
       +ff8700
       +ff875f
       +ff8787
       +ff87af
       +ff87d7
       +ff87ff
       +ffaf00
       +ffaf5f
       +ffaf87
       +ffafaf
       +ffafd7
       +ffafff
       +ffd700
       +ffd75f
       +ffd787
       +ffd7af
       +ffd7d7
       +ffd7ff
       +ffff00
       +ffff5f
       +ffff87
       +ffffaf
       +ffffd7
       +ffffff
       +080808
       +121212
       +1c1c1c
       +262626
       +303030
       +3a3a3a
       +444444
       +4e4e4e
       +585858
       +606060
       +666666
       +767676
       +808080
       +8a8a8a
       +949494
       +9e9e9e
       +a8a8a8
       +b2b2b2
       +bcbcbc
       +c6c6c6
       +d0d0d0
       +dadada
       +e4e4e4
       +eeeeee
 (DIR) diff --git a/convert-hex-to-rgb.py b/convert-hex-to-rgb.py
       t@@ -0,0 +1,24 @@
       +#!/usr/bin/env python
       +import numpy
       +
       +_NUMERALS = '0123456789abcdefABCDEF'
       +_HEXDEC = {v: int(v, 16) for v in (x+y for x in _NUMERALS for y in
       +    _NUMERALS)}
       +LOWERCASE, UPPERCASE = 'x', 'X'
       +
       +def rgb(triplet):
       +        return (_HEXDEC[triplet[0:2]], _HEXDEC[triplet[2:4]],
       +                _HEXDEC[triplet[4:6]])
       +
       +#hexlist = numpy.loadtxt('./256-color.dat')
       +rgblist = numpy.empty((256,3))
       +fin = open('./256-color.dat')
       +i = 0
       +for line in fin:
       +    #print line,
       +    rgbval = rgb(line)
       +    #print rgbval
       +    rgblist[i,:] = rgbval
       +    i += 1
       +
       +numpy.savetxt('256-color-rgb.dat', rgblist, fmt='%d')
 (DIR) diff --git a/cross-stitch.py b/cross-stitch.py
       t@@ -14,6 +14,26 @@ import matplotlib.backends.backend_wxagg
        import matplotlib.pyplot
        import wx
        
       +class Palette:
       +    def __init__(self, type='256colors'):
       +        if type == '256colors':
       +            self.rgblist = numpy.loadtxt('./256-color-rgb.dat')
       +
       +    def nearest256color(self, rgbval):
       +        ibest = -1
       +        min_misfit2 = float(inf)
       +        for i in range(self.rgblist):
       +            palettecolor = self.rgblist[i]
       +            misfit2 = (rgbval[0] - float(palettecolor[0]))**2 + \
       +                    (rgbval[1] - float(palettecolor[1]))**2 + \
       +                    (rgbval[2] - float(palettecolor[2]))**2
       +            if misfit2 < min_misfit2:
       +                ibest = i
       +                min_misfit2 = misfit2
       +        return numpy.array((palettecolor[ibest,0], palettecolor[ibest,1],
       +            palettecolor[ibest,2]))
       +
       +
        class CrossStitch:
        
            def __init__(self):