diff options
author | Walter Bender <walter@sugarlabs.org> | 2010-08-12 22:41:29 (GMT) |
---|---|---|
committer | Walter Bender <walter@sugarlabs.org> | 2010-08-12 22:41:29 (GMT) |
commit | bc6ec37e87d81367f97157dfd3366f4938c8af00 (patch) | |
tree | 1a67a74c70977a1e8c5f45632fac32ddd93d1866 /TurtleArt/tacanvas.py | |
parent | b3d151b60e285339a4f39708f5dce818151a8419 (diff) |
Turtle 'sees'
Diffstat (limited to 'TurtleArt/tacanvas.py')
-rw-r--r-- | TurtleArt/tacanvas.py | 18 |
1 files changed, 18 insertions, 0 deletions
diff --git a/TurtleArt/tacanvas.py b/TurtleArt/tacanvas.py index 667cc0f..72c1c7d 100644 --- a/TurtleArt/tacanvas.py +++ b/TurtleArt/tacanvas.py @@ -566,6 +566,24 @@ class TurtleGraphics: int(w), int(h)), False) + def get_color_index(self, r, g, b, a=0): + """ Find the closest palette entry to the rgb triplet """ + # TODO: Take into account gray and shade levels + min_distance = 1000000 + closest_color = -1 + for i, c in enumerate(color_table): + cr = int((c & 0xff0000) >> 16) + cg = int((c & 0x00ff00) >> 8) + cb = int((c & 0x0000ff)) + distance_squared = ((cr - r) ** 2) + ((cg - g) ** 2) + \ + ((cb - b) ** 2) + if distance_squared == 0: + return i + if distance_squared < min_distance: + min_distance = distance_squared + closest_color = i + return closest_color + def get_pixel(self): """ Read the pixel at x, y """ if self.tw.interactive_mode: |