Beispiel #1
0
    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)
Beispiel #2
0
    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)
Beispiel #3
0
    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'))
Beispiel #4
0
    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')
        )
Beispiel #5
0
    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))
Beispiel #6
0
    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))
Beispiel #7
0
    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))
Beispiel #8
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
Beispiel #9
0
    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)
Beispiel #10
0
    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
        )
Beispiel #11
0
    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)