Mercurial > hg > tilerswift
view colours.py @ 104:dd2a309eefa9
refactor: move widgets into their own module
This allows multiple ROM canvases to be opened at once, and each one
has its own palette, which can change the palette in the tile picker.
author | Jordi Gutiérrez Hermoso <jordigh@octave.org> |
---|---|
date | Sun, 15 Sep 2019 22:03:03 -0400 (2019-09-16) |
parents | 822e2fb5197c |
children | ef1a879802ad |
line wrap: on
line source
from PyQt5 import QtGui as QG, QtCore as QC NES_PALETTE = [ "#7C7C7C", # 00 "#0000FC", # 01 "#0000BC", # 02 "#4428BC", # 03 "#940084", # 04 "#A80020", # 05 "#A81000", # 06 "#881400", # 07 "#503000", # 08 "#007800", # 09 "#006800", # 0A "#005800", # 0B "#004058", # 0C "#000000", # 0D "#000000", # 0E "#000000", # 0F "#BCBCBC", # 10 "#0078F8", # 11 "#0058F8", # 12 "#6844FC", # 13 "#D800CC", # 14 "#E40058", # 15 "#F83800", # 16 "#E45C10", # 17 "#AC7C00", # 18 "#00B800", # 19 "#00A800", # 1A "#00A844", # 1B "#008888", # 1C "#000000", # 1D "#000000", # 1E "#000000", # 1F "#F8F8F8", # 20 "#3CBCFC", # 21 "#6888FC", # 22 "#9878F8", # 23 "#F878F8", # 24 "#F85898", # 25 "#F87858", # 26 "#FCA044", # 27 "#F8B800", # 28 "#B8F818", # 29 "#58D854", # 2A "#58F898", # 2B "#00E8D8", # 2C "#787878", # 2D "#000000", # 2E "#000000", # 2F "#FCFCFC", # 30 "#A4E4FC", # 31 "#B8B8F8", # 32 "#D8B8F8", # 33 "#F8B8F8", # 34 "#F8A4C0", # 35 "#F0D0B0", # 36 "#FCE0A8", # 37 "#F8D878", # 38 "#D8F878", # 39 "#B8F8B8", # 3A "#B8F8D8", # 3B "#00FCFC", # 3C "#F8D8F8", # 3D "#000000", # 3E "#000000", # 3F ] QT_NES_PALETTE = [QG.QColor(color).rgb() for color in NES_PALETTE] TILE_PALETTES = { "Primary": [0x20, 0x16, 0x19, 0x01], "Megaman": [0x20, 0x0f, 0x21, 0x01], "Mario": [0x20, 0x16, 0x36, 0x07], "Link": [0x20, 0x29, 0x37, 0x28], } def is_dark(qt_colour): r, g, b = qt_colour.red(), qt_colour.green(), qt_colour.blue() luminance = (0.2126*r + 0.7152*g + 0.0722*b)/256 return luminance < 0.5 def widget_icon_path(widget): return "darkside" if is_dark(widget.palette().color(QG.QPalette.Background)) else "lightside" def palette_to_qt(palette): return [ QG.QColor(0, 0, 0, 0).rgba() if color_idx is None else QG.QColor(NES_PALETTE[color_idx]).rgb() for color_idx in palette ] def palette_to_pixmap(palette): pixmap = QG.QPixmap(QC.QSize(80, 20)) painter = QG.QPainter(pixmap) palette = [QG.QColor(NES_PALETTE[colour_idx]) for colour_idx in palette] for idx, colour in enumerate(palette): painter.setPen(colour) brush = QG.QBrush() brush.setColor(colour) brush.setStyle(QC.Qt.SolidPattern) painter.setBrush(brush) painter.drawRect(idx*20, 0, idx*20 + 19, 19) return pixmap