Exemple #1
0
def Texture2HSV(tx, pos):
  'Given a texture and a vexor position, return a color.'
  h,s,v = textures2hsv[tx]
  if tx in (simulation.Textures.BULKHEAD, simulation.Textures.DECK):
    tupity = vexor5.uniform3coloring(pos)
    #h,s,v = (h, s, v + tupity*16 )
    h,s,v = (sevenHueMap[tupity], s*3, v)
  return (h,s,v)
Exemple #2
0
 def paint(self, painter, option, widget=0):
   # TODO: For a given zoom level and rotation and cell contents,
   # cache tile rendering in a bitmap.  Since many tiles are often identical
   # this should provide a substatial speedup.
   # TODO: Strategy: Using the given painter's transformation,
   # extract size and orientation, then reset the transform and
   # either blit from cache or manually scale and rotate painting into
   # a QPixMap, and then blit it.
   # TODO: Extend the above technique so that in the same way, alpha-masked
   # pixmaps of the various component drawing operations are cached.
   lod = option.levelOfDetailFromTransform(painter.worldTransform())
   if lod != GraphicsTileItem._oldLOD:
     GraphicsTileItem._oldLOD = lod
     print "GraphicsTileItem level of detail = {0}".format(lod)
   #painter.resetTransform()  # restore to device coordinates, 1 = 1 pixel
   #key = (self._renderSpec, lod, orientation)
   #if key in self._renderCache:
   #  bitBlt
   #else:
   #  pixm = QPixMap(svgr.defaultSize())
   #  painter = QPainter(pixm)
   if lod >= 23:
     painter.setClipPath(self.hexagon_qpainterpath)
   painter.setPen(QtCore.Qt.NoPen)
   for (renderObj, arg) in self._renderSpec:
     if renderObj == simulation.RenderObjects.BG:
       painter.setBrush(QBrush(QtGui.QColor.fromHsv(*Texture2HSV(arg, self._cell.Pos()))))
       if self.isSelected():
         painter.setPen(self.selectionPen)
       elif lod >= 23:
         painter.setPen(self.pen())
       painter.drawConvexPolygon(self.polygon())
       painter.setPen(QtCore.Qt.NoPen)
     elif renderObj == simulation.RenderObjects.TARGETING:
       brush = QBrush(QtGui.QColor(255,127,0), QtCore.Qt.Dense4Pattern)
       brush.setTransform(QtGui.QTransform.fromScale(.1,.1))
       painter.setBrush(brush)
       painter.drawConvexPolygon(self.polygon())
     elif renderObj == simulation.RenderObjects.NPC or renderObj == simulation.RenderObjects.PLAYER:
       painter.setBrush(QtGui.QColor.fromHsv(*arg))
       r = simulation.CELL_APOTHEM*3/4.0
       painter.drawEllipse(QPointF(0,0), r, r)
   if False:
     # paint some debugging text
     painter.setPen(QtCore.Qt.white)
     painter.setBrush(self.brush())
     #painter.setFont(QtGui.QFont("Helvetica", 8))
     scale = .02
     painter.scale(scale,scale)
     r = QtCore.QRectF(-.5/scale,-.5/scale,1/scale,1/scale)
     #txt = "{0},{1},{2}".format(self._cell.Pos().x, self._cell.Pos().y, self._cell.Pos().z)
     txt = "{0}".format( vexor5.uniform3coloring(self._cell.Pos()) )
     #txt = str(self._cell._region)
     painter.drawText(r, QtCore.Qt.AlignCenter, txt)