def compressData(image, compress, nformat, name, backcolor): """ compress data NONE, RLE, JPG, AUTO(minimum size) """ compressType, compressQuality = compress data = [] if compressType == 'AUTO': dataNone, nk = NBitmapsConverter.compressData( image, ('None', None), nformat, name, backcolor) dataRLE, rk = NBitmapsConverter.compressData( image, ('RLE', None), nformat, name, backcolor) dataJPG, jk = NBitmapsConverter.compressData( image, ('JPG', compressQuality), nformat, name, backcolor) min_len = 2**32 for key, dt in [(nk, dataNone), (rk, dataRLE), (jk, dataJPG)]: if len(dt) < min_len: min_len = len(dt) data = dt compressType = key elif compressType == 'JPG': # crete temp path and save image as jpg path = './tmp.jpg' image.save(path, 'JPG', compressQuality) # open file, read data with open(path, 'rb') as f: data = [byte for byte in f.read()] # delete temp file os.remove(path) else: r, g, b = NGL_Colors.getRGB(backcolor) Qbackcolor = QColor(r, g, b) # 1px image and painter for images with alfa img = QImage(1, 1, QImage.Format_ARGB32) painter = QPainter() for y in range(image.height() - 1, -1, -1): for x in range(image.width()): argb_pixel = image.pixel(x, y) alfa = (argb_pixel >> 24) alfa = (argb_pixel >> 24) & 0xFF if alfa == 0xFF: pixelData = NGL_Colors.fromARGB(argb_pixel) else: color = QColor(argb_pixel) color.setAlpha(alfa) pixelData = NBitmapsConverter.mixColors( img, Qbackcolor, color, painter) data.append(pixelData) if compressType == 'RLE': data = rlem_encode(data) return (data, compressType)
def compressData(image, compress, nformat, name, backcolor): """ compress data NONE, RLE, JPG, AUTO(minimum size) """ compressType, compressQuality = compress data = [] if compressType == 'AUTO': dataNone, nk = NBitmapsConverter.compressData(image, ('None', None), nformat, name, backcolor) dataRLE, rk = NBitmapsConverter.compressData(image, ('RLE', None), nformat, name, backcolor) dataJPG, jk = NBitmapsConverter.compressData(image, ('JPG', compressQuality), nformat, name, backcolor) min_len = 2**32 for key, dt in [(nk, dataNone), (rk, dataRLE), (jk, dataJPG)]: if len(dt) < min_len: min_len = len(dt) data = dt compressType = key elif compressType == 'JPG': # crete temp path and save image as jpg path = './tmp.jpg' image.save(path, 'JPG', compressQuality) # open file, read data with open(path, 'rb') as f: data = [byte for byte in f.read()] # delete temp file os.remove(path) else: r, g, b = NGL_Colors.getRGB(backcolor) Qbackcolor = QColor(r, g, b) # 1px image and painter for images with alfa img = QImage(1,1, QImage.Format_ARGB32) painter = QPainter() for y in range(image.height()-1, -1, -1): for x in range(image.width()): argb_pixel = image.pixel(x, y) alfa = (argb_pixel >> 24) alfa = (argb_pixel >> 24) & 0xFF if alfa == 0xFF: pixelData = NGL_Colors.fromARGB(argb_pixel) else: color = QColor(argb_pixel) color.setAlpha(alfa) pixelData = NBitmapsConverter.mixColors(img, Qbackcolor, color, painter) data.append(pixelData) if compressType == 'RLE': data = rlem_encode(data) return (data, compressType)
def doNGLCode(self, **kwargs): import pkg_resources res_path = pkg_resources.resource_filename('ngl_utils', 'templates/fillbar.ntp') with open(res_path, 'rt') as f: template = f.read() # convert coordinates g = self._ngl_geometry() # orientation ori = {1: 'NGL_Horizontal', 2: 'NGL_Vertical'} return template.format(pageName=self._ngl_parent_obj_name(), itemName=self.objectName(), x0=g.x(), y0=g.y(), x1=g.x() + g.width() - 1, y1=g.y() + g.height() - 1, VertHoriz=ori[self.orientation], Level_MIN=self.minimum, Level_MAX=self.maximum, Level=self.level, sfX1=g.x(), sfY1=g.y(), Logarithmic=self.logaritmic, FullScale_dB=self.fullscale_dB, Border=self.border, Markers=self.markers, MarkersColor=hex( NGL_Colors.fromQColor(self.markersColor)), Color=self._ngl_color('color: rgb'))
def doNGLCode(self, **kwargs): import pkg_resources res_path = pkg_resources.resource_filename('ngl_utils', 'templates/fillbar.ntp') with open(res_path, 'rt') as f: template = f.read() # convert coordinates g = self._ngl_geometry() # orientation ori = {1: 'NGL_Horizontal', 2: 'NGL_Vertical'} return template.format( pageName = self._ngl_parent_obj_name(), itemName = self.objectName(), x0 = g.x(), y0 = g.y(), x1 = g.x() + g.width() - 1, y1 = g.y() + g.height() - 1, VertHoriz = ori[self.orientation], Level_MIN = self.minimum, Level_MAX = self.maximum, Level = self.level, sfX1 = g.x(), sfY1 = g.y(), Logarithmic = self.logaritmic, FullScale_dB = self.fullscale_dB, Border = self.border, Markers = self.markers, MarkersColor = hex(NGL_Colors.fromQColor(self.markersColor)), Color = self._ngl_color('color: rgb') )
def _ngl_color(self, id): if self.styleSheet() != "": qcolor = QStyleParser.getColor(self.styleSheet(), id) else: qcolor = QColor(Qt.black) # return string in hex format return hex(NGL_Colors.fromQColor(qcolor))
def mixColors(img, backcolor, color, painter): img.setPixel(0, 0, backcolor.rgb()) painter.begin(img) painter.setPen(color) painter.drawPoint(0, 0) painter.end() return NGL_Colors.fromARGB(img.pixel(0, 0))
def _parsePage(self, uic_page): """ Parse page """ page = { 'class': 'NGL_Page', 'name': uic_page.objectName(), 'width': uic_page.size().width(), 'height': uic_page.size().height()} color = QStyleParser.getColor(uic_page.styleSheet(), 'background-color: rgb') page['background_color'] = NGL_Colors.fromQColor(color) return page
def doNGLCode(self, **kwargs): import pkg_resources res_path = pkg_resources.resource_filename('ngl_utils', 'templates/seekbar.ntp') with open(res_path, 'rt') as f: template = f.read() # convert coordinates g = self._ngl_geometry() # orientation ori = {1: 'NGL_Horizontal', 2: 'NGL_Vertical'} # slider if self.orientation == Qt.Horizontal: slider_size = self._slider_size.width() else: slider_size = self._slider_size.height() return template.format( pageName = self._ngl_parent_obj_name(), itemName = self.objectName(), x0 = g.x(), y0 = g.y(), x1 = g.x() + g.width() - 1, y1 = g.y() + g.height() - 1, slider_size = slider_size, old_posX = '(uint16_t)(65535)', old_posY = '(uint16_t)(65535)', VertHoriz = ori[self.orientation], Level_MIN = self.minimum, Level_MAX = self.maximum, Level = self.level, ShowProgress = self._show_progress, Color = self._ngl_color('color: rgb'), SliderColor = hex(NGL_Colors.fromQColor(self._slider_color)), p_event = self.clickEventName)
def doNGLCode(self, **kwargs): import pkg_resources res_path = pkg_resources.resource_filename('ngl_utils', 'templates/checkbox.ntp') with open(res_path, 'rt') as f: template = f.read() # convert coordinates g = self._ngl_geometry() # get font pointer name _, fontPointerName = NGL_Font.formatQFontName(self.font) # text var __text_var_name = self.objectName().lower() + '_text' __text_var = 'static const char {0}[{1}] = "{2}";'.format(__text_var_name, len(self._text)+1, self._text) __text_pointer = __text_var_name return template.format( pageName = self._ngl_parent_obj_name(), itemName = self.objectName(), text_var = __text_var, x0 = g.x(), y0 = g.y(), x1 = g.x() + g.width() - 1, y1 = g.y() + g.height() - 1, checked = self._checked, font_pointer = fontPointerName.replace('(NGL_Font*)', ''), text_pointer = __text_pointer, color = hex(NGL_Colors.fromQColor(self._color)), text_color = self._ngl_color('color: rgb'), p_event = self.clickEventName )
def doNGLCode(self, **kwargs): import pkg_resources res_path = pkg_resources.resource_filename('ngl_utils', 'templates/checkbox.ntp') with open(res_path, 'rt') as f: template = f.read() # convert coordinates g = self._ngl_geometry() # get font pointer name _, fontPointerName = NGL_Font.formatQFontName(self.font) # text var __text_var_name = self.objectName().lower() + '_text' __text_var = 'static const char {0}[{1}] = "{2}";'.format( __text_var_name, len(self._text) + 1, self._text) __text_pointer = __text_var_name return template.format(pageName=self._ngl_parent_obj_name(), itemName=self.objectName(), text_var=__text_var, x0=g.x(), y0=g.y(), x1=g.x() + g.width() - 1, y1=g.y() + g.height() - 1, checked=self._checked, font_pointer=fontPointerName.replace( '(NGL_Font*)', ''), text_pointer=__text_pointer, color=hex(NGL_Colors.fromQColor(self._color)), text_color=self._ngl_color('color: rgb'), p_event=self.clickEventName)