[Python-checkins] CVS: python/dist/src/Tools/pynche ColorDB.py,2.7,2.8

Barry Warsaw bwarsaw@users.sourceforge.net
Tue, 10 Jul 2001 14:38:49 -0700


Update of /cvsroot/python/python/dist/src/Tools/pynche
In directory usw-pr-cvs1:/tmp/cvs-serv29358

Modified Files:
	ColorDB.py 
Log Message:
De-string-module-ification and other Python 2.x improvements.


Index: ColorDB.py
===================================================================
RCS file: /cvsroot/python/python/dist/src/Tools/pynche/ColorDB.py,v
retrieving revision 2.7
retrieving revision 2.8
diff -C2 -r2.7 -r2.8
*** ColorDB.py	1999/04/26 23:17:15	2.7
--- ColorDB.py	2001/07/10 21:38:47	2.8
***************
*** 22,26 ****
  
  import sys
- import string
  import re
  from types import *
--- 22,25 ----
***************
*** 31,34 ****
--- 30,35 ----
  
  DEFAULT_DB = None
+ SPACE = ' '
+ COMMASPACE = ', '
  
  
***************
*** 46,53 ****
  	# key is (red, green, blue) tuple, value is (name, [aliases])
  	self.__byrgb = {}
- 	#
  	# key is name, value is (red, green, blue)
  	self.__byname = {}
- 	#
          # all unique names (non-aliases).  built-on demand
          self.__allnames = None
--- 47,52 ----
***************
*** 57,78 ****
  		break
  	    # get this compiled regular expression from derived class
- ##            print '%3d: %s' % (lineno, line[:-1])
  	    mo = self._re.match(line)
  	    if not mo:
! 		sys.stderr.write('Error in %s, line %d\n' % (fp.name, lineno))
! 		lineno = lineno + 1
  		continue
- 	    #
  	    # extract the red, green, blue, and name
- 	    #
              red, green, blue = self._extractrgb(mo)
              name = self._extractname(mo)
! 	    keyname = string.lower(name)
! ##            print keyname, '(%d, %d, %d)' % (red, green, blue)
! 	    #
! 	    # TBD: for now the `name' is just the first named color with the
  	    # rgb values we find.  Later, we might want to make the two word
  	    # version the `name', or the CapitalizedVersion, etc.
- 	    #
  	    key = (red, green, blue)
  	    foundname, aliases = self.__byrgb.get(key, (name, []))
--- 56,71 ----
  		break
  	    # get this compiled regular expression from derived class
  	    mo = self._re.match(line)
  	    if not mo:
!                 print >> sys.stderr, 'Error in', fp.name, ' line', lineno
! 		lineno += 1
  		continue
  	    # extract the red, green, blue, and name
              red, green, blue = self._extractrgb(mo)
              name = self._extractname(mo)
! 	    keyname = name.lower()
! 	    # BAW: for now the `name' is just the first named color with the
  	    # rgb values we find.  Later, we might want to make the two word
  	    # version the `name', or the CapitalizedVersion, etc.
  	    key = (red, green, blue)
  	    foundname, aliases = self.__byrgb.get(key, (name, []))
***************
*** 80,86 ****
  		aliases.append(name)
  	    self.__byrgb[key] = (foundname, aliases)
- 	    #
  	    # add to byname lookup
- 	    #
  	    self.__byname[keyname] = key
  	    lineno = lineno + 1
--- 73,77 ----
***************
*** 88,92 ****
      # override in derived classes
      def _extractrgb(self, mo):
!         return map(int, mo.group('red', 'green', 'blue'))
  
      def _extractname(self, mo):
--- 79,83 ----
      # override in derived classes
      def _extractrgb(self, mo):
!         return [int(x) for x in mo.group('red', 'green', 'blue')]
  
      def _extractname(self, mo):
***************
*** 105,109 ****
      def find_byname(self, name):
          """Return (red, green, blue) for name"""
! 	name = string.lower(name)
  	try:
  	    return self.__byname[name]
--- 96,100 ----
      def find_byname(self, name):
          """Return (red, green, blue) for name"""
! 	name = name.lower()
  	try:
  	    return self.__byname[name]
***************
*** 113,117 ****
      def nearest(self, red, green, blue):
          """Return the name of color nearest (red, green, blue)"""
! 	# TBD: should we use Voronoi diagrams, Delaunay triangulation, or
  	# octree for speeding up the locating of nearest point?  Exhaustive
  	# search is inefficient, but seems fast enough.
--- 104,108 ----
      def nearest(self, red, green, blue):
          """Return the name of color nearest (red, green, blue)"""
! 	# BAW: should we use Voronoi diagrams, Delaunay triangulation, or
  	# octree for speeding up the locating of nearest point?  Exhaustive
  	# search is inefficient, but seems fast enough.
***************
*** 119,123 ****
  	nearest_name = ''
  	for name, aliases in self.__byrgb.values():
! 	    r, g, b = self.__byname[string.lower(name)]
  	    rdelta = red - r
  	    gdelta = green - g
--- 110,114 ----
  	nearest_name = ''
  	for name, aliases in self.__byrgb.values():
! 	    r, g, b = self.__byname[name.lower()]
  	    rdelta = red - r
  	    gdelta = green - g
***************
*** 137,141 ****
              # sort irregardless of case
              def nocase_cmp(n1, n2):
!                 return cmp(string.lower(n1), string.lower(n2))
              self.__allnames.sort(nocase_cmp)
          return self.__allnames
--- 128,132 ----
              # sort irregardless of case
              def nocase_cmp(n1, n2):
!                 return cmp(n1.lower(), n2.lower())
              self.__allnames.sort(nocase_cmp)
          return self.__allnames
***************
*** 164,168 ****
  
      def _extractname(self, mo):
!         return string.strip(mo.group('name'))
  
  class WebsafeDB(ColorDB):
--- 155,159 ----
  
      def _extractname(self, mo):
!         return mo.group('name').strip()
  
  class WebsafeDB(ColorDB):
***************
*** 173,177 ****
  
      def _extractname(self, mo):
!         return string.upper(mo.group('hexrgb'))
  
  
--- 164,168 ----
  
      def _extractname(self, mo):
!         return mo.group('hexrgb').upper()
  
  
***************
*** 219,225 ****
  
  _namedict = {}
! def rrggbb_to_triplet(color, atoi=string.atoi):
      """Converts a #rrggbb color to the tuple (red, green, blue)."""
-     global _namedict
      rgbtuple = _namedict.get(color)
      if rgbtuple is None:
--- 210,216 ----
  
  _namedict = {}
! 
! def rrggbb_to_triplet(color):
      """Converts a #rrggbb color to the tuple (red, green, blue)."""
      rgbtuple = _namedict.get(color)
      if rgbtuple is None:
***************
*** 229,233 ****
  	green = color[3:5]
  	blue = color[5:7]
! 	rgbtuple = (atoi(red, 16), atoi(green, 16), atoi(blue, 16))
  	_namedict[color] = rgbtuple
      return rgbtuple
--- 220,224 ----
  	green = color[3:5]
  	blue = color[5:7]
!         rgbtuple = int(red, 16), int(green, 16), int(blue, 16)
  	_namedict[color] = rgbtuple
      return rgbtuple
***************
*** 261,266 ****
  
  if __name__ == '__main__':
-     import string
- 
      colordb = get_colordb('/usr/openwin/lib/rgb.txt')
      if not colordb:
--- 252,255 ----
***************
*** 272,276 ****
      print target, ':', red, green, blue, triplet_to_rrggbb(rgbtuple)
      name, aliases = colordb.find_byrgb(rgbtuple)
!     print 'name:', name, 'aliases:', string.join(aliases, ", ")
      r, g, b = (1, 1, 128)			  # nearest to navy
      r, g, b = (145, 238, 144)			  # nearest to lightgreen
--- 261,265 ----
      print target, ':', red, green, blue, triplet_to_rrggbb(rgbtuple)
      name, aliases = colordb.find_byrgb(rgbtuple)
!     print 'name:', name, 'aliases:', COMMASPACE.join(aliases)
      r, g, b = (1, 1, 128)			  # nearest to navy
      r, g, b = (145, 238, 144)			  # nearest to lightgreen
***************
*** 287,289 ****
          aliases = colordb.aliases_of(r, g, b)
          print '%20s: (%3d/%3d/%3d) == %s' % (n, r, g, b,
!                                              string.join(aliases[1:]))
--- 276,278 ----
          aliases = colordb.aliases_of(r, g, b)
          print '%20s: (%3d/%3d/%3d) == %s' % (n, r, g, b,
!                                              SPACE.join(aliases[1:]))