Example #1
0
    def write_init(self, writer):
        data = self.get_data()
        if self.is_active_picture:
            width = data.readInt()
            height = data.readInt()
            flags_int = data.readInt(True)
            transparent_color = data.readColor()
            image = data.readString(260) or None
        else:
            width = data.readShort(True)
            height = data.readShort(True)
            flags_int = data.readShort(True)
            image = data.readString(260) or None
            transparent_color = data.readColor()

        flags = FLAGS.copy()
        flags.setFlags(flags_int)
        visible = not flags['HideOnStart']
        if not flags['TransparentFirstPixel']:
            writer.putln('set_transparent_color(%s);' %
                         make_color(transparent_color))
        writer.putlnc('sprite_col.width = width = %s;', width)
        writer.putlnc('sprite_col.height = height = %s;', height)
        if flags['Resize']:
            writer.putlnc('picture_flags |= FORCE_RESIZE;')
Example #2
0
    def write_init(self, writer):
        text = self.common.text
        lines = [paragraph.value for paragraph in text.items]
        for paragraph in text.items:
            writer.putln(to_c('add_line(%r);', paragraph.value))
        # objects_file.putln('font = font%s' % text.items[0].font)
        writer.putln('width = %s;' % text.width)
        writer.putln('height = %s;' % text.height)
        writer.putln('blend_color = %s;' % make_color(text.items[0].color))
        font = text.items[0].font
        writer.putln('bold = font%s.bold;' % font)
        writer.putln('italic = font%s.italic;' % font)
        writer.putln('font = get_font(font%s.size);' % font)

        paragraph = text.items[0]
        if paragraph.flags['HorizontalCenter']:
            horizontal = 'ALIGN_HCENTER'
        elif paragraph.flags['RightAligned']:
            horizontal = 'ALIGN_RIGHT'
        else:
            horizontal = 'ALIGN_LEFT'
        if paragraph.flags['VerticalCenter']:
            vertical = 'ALIGN_VCENTER'
        elif paragraph.flags['BottomAligned']:
            vertical = 'ALIGN_BOTTOM'
        else:
            vertical = 'ALIGN_TOP'
        writer.putln('alignment = %s | %s;' % (horizontal, vertical))
Example #3
0
    def write_scene(self, data):
        index = self.data.scenes.index(data)

        scene = self.open_code('scene%s.h' % (index+1))
        scene.put_includes('common.h', 'objects.h')

        class_name = 'Scene%s' % (index+1)
        scene.put_class(class_name, 'Scene')

        scene.put_access('public')
        scene.put_line(to_c('%s(GameManager * manager) : '
            'Scene(%r, %s, %s, %s, %s, manager)',
            class_name, data.name, data.width, data.height, 
            make_color(data.background), index))
        scene.start_brace()
        scene.end_brace()

        scene.put_func('void on_start')
        for instance in data.instances:
            scene.put_line('add_object(new %s(%s, %s));' %
                (self.object_type_names[instance.object_type], instance.x, 
                instance.y))
        scene.end_brace()

        scene.end_brace(True)

        scene.close()
Example #4
0
    def write_init(self, writer):
        text = self.common.text
        lines = [paragraph.value for paragraph in text.items]
        for paragraph in text.items:
            writer.putln(to_c('add_line(%r);', paragraph.value))
        # objects_file.putln('font = font%s' % text.items[0].font)
        writer.putln('width = %s;' % text.width)
        writer.putln('height = %s;' % text.height)
        writer.putln('blend_color = %s;' % make_color(text.items[0].color))
        font = text.items[0].font
        writer.putln('bold = font%s.bold;' % font)
        writer.putln('italic = font%s.italic;' % font)
        writer.putln('font = get_font(font%s.size);' % font)

        paragraph = text.items[0]
        if paragraph.flags['HorizontalCenter']:
            horizontal = 'ALIGN_HCENTER'
        elif paragraph.flags['RightAligned']:
            horizontal = 'ALIGN_RIGHT'
        else:
            horizontal = 'ALIGN_LEFT'
        if paragraph.flags['VerticalCenter']:
            vertical = 'ALIGN_VCENTER'
        elif paragraph.flags['BottomAligned']:
            vertical = 'ALIGN_BOTTOM'
        else:
            vertical = 'ALIGN_TOP'
        writer.putln('alignment = %s | %s;' % (horizontal, vertical))
Example #5
0
    def write_init(self, writer):
        data = self.get_data()
        if self.is_active_picture:
            width = data.readInt()
            height = data.readInt()
            flags_int = data.readInt(True)
            transparent_color = data.readColor()
            image = data.readString(260) or None
        else:
            width = data.readShort(True)
            height = data.readShort(True)
            flags_int = data.readShort(True)
            image = data.readString(260) or None
            transparent_color = data.readColor()

        flags = FLAGS.copy()
        flags.setFlags(flags_int)
        visible = not flags['HideOnStart']
        if not flags['TransparentFirstPixel']:
            writer.putln('set_transparent_color(%s);' %
                         make_color(transparent_color))
        writer.putlnc('sprite_col.width = width = %s;', width)
        writer.putlnc('sprite_col.height = height = %s;', height)
        if flags['Resize']:
            writer.putlnc('picture_flags |= FORCE_RESIZE;')
def write(writer, fade, out):
    fade_dir = 1.0 / (fade.duration / 1000.0)
    if not out:
        fade_dir = -fade_dir
    color = fade.color
    fade_type = 'Transition::%s' % FADE_TYPES.get(fade.name, 'FADE')
    writer.putlnc('manager.set_fade(%s, %s, %s);', fade_type,
                  make_color(color), fade_dir)
Example #7
0
def write(writer, fade, out):
    fade_dir = 1.0 / (fade.duration / 1000.0)
    if not out:
        fade_dir = -fade_dir
    color = fade.color
    fade_type = 'Transition::%s' % FADE_TYPES.get(fade.name, 'FADE')
    writer.putlnc('manager.set_fade(%s, %s, %s);', fade_type,
                  make_color(color), fade_dir)
Example #8
0
    def write_init(self, writer):
        shape = self.common.shape
        color1 = shape.color1
        color2 = shape.color2
        fill = shape.getFill()

        if fill == 'Motif':
            try:
                color1 = self.converter.get_solid_image(shape.image)
                fill = 'Solid'
            except KeyError:
                pass

        writer.putln('width = %s;' % self.common.width)
        writer.putln('height = %s;' % self.common.height)
        if fill != 'Motif':
            writer.putln('color = %s;' % make_color(color1))
        if fill == 'Gradient':
            gradient = shape.getGradientType()
            if gradient == 'Horizontal':
                writer.putln('gradient_type = HORIZONTAL_GRADIENT;')
            else:
                writer.putln('gradient_type = VERTICAL_GRADIENT;')
            writer.putln('color2 = %s;' % make_color(color2))
        elif fill == 'Motif':
            self.image = shape.image
            writer.putlnc('image = %s;',
                          self.converter.get_image(shape.image))
        elif color2 is not None:
            raise NotImplementedError
        else:
            writer.putln('gradient_type = NONE_GRADIENT;')

        writer.putlnc('outline = %s;', self.border)
        if self.border:
            writer.putlnc('outline_color = %s;',
                          make_color(self.border_color))

        obstacle_type = self.common.obstacleType
        if obstacle_type == NONE_OBSTACLE:
            return
        writer.putln('collision = new InstanceBox(this);')
        if obstacle_type == LADDER_OBSTACLE:
            writer.putln('collision->flags |= LADDER_OBSTACLE;')
Example #9
0
    def write_init(self, writer):
        shape = self.common.shape
        color1 = shape.color1
        color2 = shape.color2
        fill = shape.getFill()

        if fill == 'Motif':
            try:
                color1 = self.converter.get_solid_image(shape.image)
                fill = 'Solid'
            except KeyError:
                pass

        writer.putln('width = %s;' % self.common.width)
        writer.putln('height = %s;' % self.common.height)
        if fill != 'Motif':
            writer.putln('color = %s;' % make_color(color1))
        if fill == 'Gradient':
            gradient = shape.getGradientType()
            if gradient == 'Horizontal':
                writer.putln('gradient_type = HORIZONTAL_GRADIENT;')
            else:
                writer.putln('gradient_type = VERTICAL_GRADIENT;')
            writer.putln('color2 = %s;' % make_color(color2))
        elif fill == 'Motif':
            self.image = shape.image
            writer.putlnc('image = %s;',
                          self.converter.get_image(shape.image))
        elif color2 is not None:
            raise NotImplementedError
        else:
            writer.putln('gradient_type = NONE_GRADIENT;')

        writer.putlnc('outline = %s;', self.border)
        if self.border:
            writer.putlnc('outline_color = %s;',
                          make_color(self.border_color))

        obstacle_type = self.common.obstacleType
        if obstacle_type == NONE_OBSTACLE:
            return
        writer.putln('collision = new InstanceBox(this);')
        if obstacle_type == LADDER_OBSTACLE:
            writer.putln('collision->flags |= LADDER_OBSTACLE;')
Example #10
0
    def write_init(self, writer):
        shape = self.common.shape
        color1 = shape.color1
        color2 = shape.color2
        fill = shape.getFill()

        if fill == "Motif":
            try:
                color1 = self.converter.get_solid_image(shape.image)
                fill = "Solid"
            except KeyError:
                pass

        writer.putln("width = %s;" % self.common.width)
        writer.putln("height = %s;" % self.common.height)
        if fill != "Motif":
            writer.putln("color = %s;" % make_color(color1))
        if fill == "Gradient":
            gradient = shape.getGradientType()
            if gradient == "Horizontal":
                writer.putln("gradient_type = HORIZONTAL_GRADIENT;")
            else:
                writer.putln("gradient_type = VERTICAL_GRADIENT;")
            writer.putln("color2 = %s;" % make_color(color2))
        elif fill == "Motif":
            self.image = shape.image
            writer.putlnc("image = %s;", self.converter.get_image(shape.image))
        elif color2 is not None:
            raise NotImplementedError
        else:
            writer.putln("gradient_type = NONE_GRADIENT;")

        writer.putlnc("outline = %s;", self.border)
        if self.border:
            writer.putlnc("outline_color = %s;", make_color(self.border_color))

        obstacle_type = self.common.obstacleType
        if obstacle_type == NONE_OBSTACLE:
            return
        writer.putln("collision = new InstanceBox(this);")
        if obstacle_type == LADDER_OBSTACLE:
            writer.putln("collision->flags |= LADDER_OBSTACLE;")
Example #11
0
 def write_init(self, writer):
     data = self.get_data()
     width = data.readInt()
     height = data.readInt()
     self.flags = BitDict(
         'Resize',
         'HideOnStart',
         'TransparentBlack',
         'TransparentFirstPixel',
         'FlippedHorizontally',
         'FlippedVertically',
         'Resample',
         'WrapModeOff',
     )
     self.flags.setFlags(data.readInt(True))
     visible = not self.flags['HideOnStart']
     transparent_color = data.readColor()
     if not self.flags['TransparentFirstPixel']:
         writer.putln('set_transparent_color(%s);' %
                      make_color(transparent_color))
     image = data.readString(260) or None
Example #12
0
 def write_init(self, writer):
     data = self.get_data()
     width = data.readInt()
     height = data.readInt()
     self.flags = BitDict(
         'Resize',
         'HideOnStart',
         'TransparentBlack',
         'TransparentFirstPixel',
         'FlippedHorizontally',
         'FlippedVertically',
         'Resample',
         'WrapModeOff',
     )
     self.flags.setFlags(data.readInt(True))
     visible = not self.flags['HideOnStart']
     transparent_color = data.readColor()
     if not self.flags['TransparentFirstPixel']:
         writer.putln('set_transparent_color(%s);' %
                      make_color(transparent_color))
     image = data.readString(260) or None
Example #13
0
    def write_init(self, writer):
        text = self.common.text
        writer.putln('width = %s;' % text.width)
        writer.putln('height = %s;' % text.height)
        writer.putln('blend_color = %s;' % make_color(text.items[0].color))

        font = text.items[0].font
        font_info = self.converter.fonts[font]

        writer.putlnc('bold = %s;', font_info.isBold())
        writer.putlnc('italic = %s;', bool(font_info.italic))
        writer.putlnc('font_name = %r;', font_info.faceName)

        flags = []
        if font_info.isBold():
            flags.append('FTTextureFont::BOLD')
        flags = ' | '.join(flags)
        if not flags:
            flags = '0'

        writer.putlnc('font = get_font(%s, %s);', font_info.getSize(),
                      flags)

        paragraph = text.items[0]
        if paragraph.flags['HorizontalCenter']:
            horizontal = 'ALIGN_HCENTER'
        elif paragraph.flags['RightAligned']:
            horizontal = 'ALIGN_RIGHT'
        else:
            horizontal = 'ALIGN_LEFT'
        if paragraph.flags['VerticalCenter']:
            vertical = 'ALIGN_VCENTER'
        elif paragraph.flags['BottomAligned']:
            vertical = 'ALIGN_BOTTOM'
        else:
            vertical = 'ALIGN_TOP'
        writer.putln('alignment = %s | %s;' % (horizontal, vertical))
        for paragraph in text.items:
            text = self.converter.config.get_string(paragraph.value)
            writer.putln(to_c('add_line(%r);', text))
Example #14
0
    def write_init(self, writer):
        text = self.common.text
        lines = [paragraph.value for paragraph in text.items]
        writer.putln('width = %s;' % text.width)
        writer.putln('height = %s;' % text.height)
        writer.putln('blend_color = %s;' % make_color(text.items[0].color))

        font = text.items[0].font
        font_info = self.converter.fonts[font]

        writer.putlnc('bold = %s;', font_info.isBold())
        writer.putlnc('italic = %s;', bool(font_info.italic))
        writer.putlnc('font_name = %r;', font_info.faceName)

        flags = []
        if font_info.isBold():
            flags.append('FTTextureFont::BOLD')
        flags = ' | '.join(flags)
        if not flags:
            flags = '0'

        writer.putlnc('font = get_font(%s, %s);', font_info.getSize(),
                      flags)

        paragraph = text.items[0]
        if paragraph.flags['HorizontalCenter']:
            horizontal = 'ALIGN_HCENTER'
        elif paragraph.flags['RightAligned']:
            horizontal = 'ALIGN_RIGHT'
        else:
            horizontal = 'ALIGN_LEFT'
        if paragraph.flags['VerticalCenter']:
            vertical = 'ALIGN_VCENTER'
        elif paragraph.flags['BottomAligned']:
            vertical = 'ALIGN_BOTTOM'
        else:
            vertical = 'ALIGN_TOP'
        writer.putln('alignment = %s | %s;' % (horizontal, vertical))
        for paragraph in text.items:
            writer.putln(to_c('add_line(%r);', paragraph.value))
Example #15
0
    def write_init(self, writer):
        text = self.common.text
        lines = [paragraph.value for paragraph in text.items]
        writer.putln("width = %s;" % text.width)
        writer.putln("height = %s;" % text.height)
        writer.putln("blend_color = %s;" % make_color(text.items[0].color))

        font = text.items[0].font
        font_info = self.converter.fonts[font]

        writer.putlnc("bold = %s;", font_info.isBold())
        writer.putlnc("italic = %s;", bool(font_info.italic))
        writer.putlnc("font_name = %r;", font_info.faceName)

        flags = []
        if font_info.isBold():
            flags.append("FTTextureFont::BOLD")
        flags = " | ".join(flags)
        if not flags:
            flags = "0"

        writer.putlnc("font = get_font(%s, %s);", font_info.getSize(), flags)

        paragraph = text.items[0]
        if paragraph.flags["HorizontalCenter"]:
            horizontal = "ALIGN_HCENTER"
        elif paragraph.flags["RightAligned"]:
            horizontal = "ALIGN_RIGHT"
        else:
            horizontal = "ALIGN_LEFT"
        if paragraph.flags["VerticalCenter"]:
            vertical = "ALIGN_VCENTER"
        elif paragraph.flags["BottomAligned"]:
            vertical = "ALIGN_BOTTOM"
        else:
            vertical = "ALIGN_TOP"
        writer.putln("alignment = %s | %s;" % (horizontal, vertical))
        for paragraph in text.items:
            writer.putln(to_c("add_line(%r);", paragraph.value))
    def write_init(self, writer):
        data = self.get_data()
        # data.skipBytes(4)

        width = data.readShort(True)
        height = data.readShort(True)
        writer.putlnc('width = %s;', width)
        writer.putlnc('height = %s;', height)

        flags = FLAGS.copy()
        flags.setFlags(data.readInt())
        self.show_border = flags['ShowButtonBorder']
        self.image_checkbox = flags['ImageCheckbox']
        if flags['Hyperlink']:
            display_type = HYPERLINK
        elif flags['Button']:
            if flags['Checkbox']:
                display_type = CHECKBOX
            else:
                display_type = BUTTON
        else:
            display_type = NONE
        align_top_left = flags['AlignImageTopLeft']
        align_center = flags['AlignImageCenter']
        pattern = flags['AlignImagePattern']
        fill = read_system_color(data)
        border1 = read_system_color(data)
        border2 = read_system_color(data)
        self.image = data.readShort()

        if self.image == -1:
            writer.putln('image = NULL;')
            writer.putlnc('blend_color = %s;', make_color(fill))
        else:
            writer.putln('image = %s;' % self.converter.get_image(self.image))
            if pattern:
                writer.putln('type = PATTERN_IMAGE;')
            elif align_center:
                writer.putln('type = CENTER_IMAGE;')
            elif align_top_left:
                writer.putln('type = TOPLEFT_IMAGE;')
            else:
                raise NotImplementedError()

        data.skipBytes(2)  # rData_wFree
        text_color = read_system_color(data)
        margin_left = data.readShort()
        margin_top = data.readShort()
        margin_right = data.readShort()
        margin_bottom = data.readShort()

        font = LogFont(data, old=True)
        data.skipBytes(40)  # file.readStringSize(40)
        data.adjust(8)
        text = data.readReader(data.readInt(True)).readString().rsplit(
            '\\n', 1)
        if len(text) == 1:
            text, = text
            tooltip = None
        else:
            text, tooltip = text
        new_width = width - margin_left - margin_right
        new_height = height - margin_top - margin_bottom

        if text:
            writer.putlnc('text = %r;', text)

        if flags['AlignTop']:
            y_align = 'top'
        elif flags['AlignVerticalCenter']:
            y_align = 'center'
        elif flags['AlignBottom']:
            y_align = 'bottom'

        if flags['AlignLeft']:
            x_align = 'left'
        elif flags['AlignHorizontalCenter']:
            x_align = 'center'
        elif flags['AlignRight']:
            x_align = 'right'

        version = data.readInt()
        hyperlink_color = read_system_color(data)
Example #17
0
    def write_init(self, writer):
        common = self.common
        counters = common.counters
        counter = common.counter
        if counters:
            writer.putln('width = %s;' % counters.width)
            writer.putln('height = %s;' % counters.height)
            if counters.integerDigits > 0:
                writer.putlnc('zero_pad = %s;', counters.integerDigits)
            display_type = counters.displayType
            if display_type == NUMBERS:
                writer.putln('type = IMAGE_COUNTER;')
                writer.putln('static Image * counter_images[14];')
                writer.putln('static bool initialized = false;')
                writer.putln('if (!initialized) {')
                writer.indent()
                writer.putln('initialized = true;')
                for char_index, char in enumerate(COUNTER_FRAMES):
                    writer.putlnc(
                        'counter_images[%s] = %s;', char_index,
                        self.converter.get_image(counters.frames[char_index]))
                writer.end_brace()
                writer.putln('images = (Image**)&counter_images;')
                writer.putln('image_count = 14;')
            elif display_type == HORIZONTAL_BAR:
                shape_object = counters.shape
                shape = shape_object.shape
                if shape != RECTANGLE_SHAPE:
                    print 'horizontal rectangle shape not implemented'
                    return
                count_right = counters.inverse
                if count_right:
                    print 'horizontal count direction not implemented'
                    return
                writer.putln('type = HORIZONTAL_LEFT_COUNTER;')
            elif display_type == VERTICAL_BAR:
                shape_object = counters.shape
                shape = shape_object.shape
                if shape != RECTANGLE_SHAPE:
                    print 'vertical rectangle shape not implemented'
                    return
                count_up = counters.inverse
                if not count_up:
                    print 'vertical count direction not implemented'
                    return
                writer.putln('type = VERTICAL_UP_COUNTER;')
            elif display_type == ANIMATION:
                writer.putln('type = ANIMATION_COUNTER;')
                size = len(counters.frames)
                writer.putlnc('static Image * counter_images[%s];', size)
                writer.putlnc('static bool initialized = false;')
                writer.putln('if (!initialized) {')
                writer.indent()
                writer.putln('initialized = true;')
                for index, image in enumerate(counters.frames):
                    image = self.converter.get_image(image)
                    writer.putlnc('counter_images[%s] = %s;', index, image)
                writer.end_brace()
                writer.putln('images = (Image**)&counter_images;')
                writer.putlnc('image_count = %s;', size)
            else:
                print 'type', counters.getDisplayType(), 'not implemented'
                writer.putln('type = HIDDEN_COUNTER;')
                writer.putln('width = height = 0;')

            if display_type in (VERTICAL_BAR, HORIZONTAL_BAR):
                fill_type = shape_object.fillType
                if fill_type == GRADIENT_FILL:
                    if shape_object.getGradientType() == 'Horizontal':
                        writer.putlnc('gradient_type = HORIZONTAL_GRADIENT;')
                    else:
                        writer.putlnc('gradient_type = VERTICAL_GRADIENT;')
                    writer.putlnc('color1 = %s;',
                                  make_color(shape_object.color1))
                    writer.putlnc('color2 = %s;',
                                  make_color(shape_object.color2))
                elif fill_type == SOLID_FILL:
                    writer.putlnc('gradient_type = NONE_GRADIENT;')
                    writer.putlnc('color1 = %s;',
                                  make_color(shape_object.color1))
                else:
                    raise NotImplementedError
        else:
            writer.putln('type = HIDDEN_COUNTER;')
            writer.putln('width = height = 0;')
        writer.putlnc('minimum = %s;', counter.minimum)
        writer.putlnc('maximum = %s;', counter.maximum)

        if self.is_global():
            self.global_name = self.get_global('Counter::SavedCounter')
            writer.putlnc('if (%s.init)', self.global_name)
            writer.indent()
            writer.putlnc('set(%s.value);', self.global_name)
            writer.dedent()
            writer.putln('else')
            writer.indent()
            writer.putlnc('set(%s);', counter.initial)
            writer.dedent()
        else:
            writer.putlnc('set(%s);', counter.initial)
Example #18
0
    def write_init(self, writer):
        data = self.get_data()
        # data.skipBytes(4)

        width = data.readShort(True)
        height = data.readShort(True)
        writer.putlnc("width = %s;", width)
        writer.putlnc("height = %s;", height)

        flags = FLAGS.copy()
        flags.setFlags(data.readInt())
        self.show_border = flags["ShowButtonBorder"]
        self.image_checkbox = flags["ImageCheckbox"]
        if flags["Hyperlink"]:
            display_type = HYPERLINK
        elif flags["Button"]:
            if flags["Checkbox"]:
                display_type = CHECKBOX
            else:
                display_type = BUTTON
        else:
            display_type = NONE
        align_top_left = flags["AlignImageTopLeft"]
        align_center = flags["AlignImageCenter"]
        pattern = flags["AlignImagePattern"]
        fill = read_system_color(data)
        border1 = read_system_color(data)
        border2 = read_system_color(data)
        self.image = data.readShort()

        data.skipBytes(2)  # rData_wFree
        text_color = read_system_color(data)
        margin_left = data.readShort()
        margin_top = data.readShort()
        margin_right = data.readShort()
        margin_bottom = data.readShort()

        font = LogFont(data, old=True)
        data.skipBytes(40)  # file.readStringSize(40)
        data.adjust(8)
        text = data.readReader(data.readInt(True)).readString().rsplit("\\n", 1)
        if len(text) == 1:
            text, = text
            tooltip = None
        else:
            text, tooltip = text
        new_width = width - margin_left - margin_right
        new_height = height - margin_top - margin_bottom

        alignment = []
        if flags["AlignTop"]:
            alignment.append("ALIGN_TOP")
        elif flags["AlignVerticalCenter"]:
            alignment.append("ALIGN_VCENTER")
        elif flags["AlignBottom"]:
            alignment.append("ALIGN_BOTTOM")

        if flags["AlignLeft"]:
            alignment.append("ALIGN_LEFT")
        elif flags["AlignHorizontalCenter"]:
            alignment.append("ALIGN_HCENTER")
        elif flags["AlignRight"]:
            alignment.append("ALIGN_RIGHT")

        if alignment:
            alignment = " | ".join(alignment)
        else:
            alignment = "0"

        if self.image == -1:
            writer.putln("image = NULL;")
            if border1 is None or fill is None:
                color = (0, 0, 0, 0)
            else:
                color = fill + (255,)
            writer.putlnc("box_color = %s;", make_color(color))
            writer.putlnc("blend_color = %s;", make_color(text_color))
            writer.putlnc("alignment = %s;", alignment)
        else:
            writer.putln("image = %s;" % self.converter.get_image(self.image))
            if pattern:
                writer.putln("type = PATTERN_IMAGE;")
            elif align_center:
                writer.putln("type = CENTER_IMAGE;")
            elif align_top_left:
                writer.putln("type = TOPLEFT_IMAGE;")
            else:
                raise NotImplementedError()

        if text:
            writer.putlnc("text = %r;", text)

        version = data.readInt()
        hyperlink_color = read_system_color(data)
Example #19
0
    def write_init(self, writer):
        common = self.common
        counters = common.counters
        counter = common.counter
        if counters:
            writer.putln('width = %s;' % counters.width)
            writer.putln('height = %s;' % counters.height)
            if counters.integerDigits > 0:
                writer.putlnc('zero_pad = %s;', counters.integerDigits)
            display_type = counters.displayType
            if display_type == NUMBERS:
                writer.putln('type = IMAGE_COUNTER;')
                writer.putln('static Image * counter_images[14];')
                writer.putln('static bool initialized = false;')
                writer.putln('if (!initialized) {')
                writer.indent()
                writer.putln('initialized = true;')
                for char_index, char in enumerate(COUNTER_FRAMES):
                    writer.putlnc('counter_images[%s] = %s;', char_index,
                        self.converter.get_image(counters.frames[char_index]))
                writer.end_brace()
                writer.putln('images = (Image**)&counter_images;')
                writer.putln('image_count = 14;')
            elif display_type == HORIZONTAL_BAR:
                shape_object = counters.shape
                shape = shape_object.shape
                if shape != RECTANGLE_SHAPE:
                    print 'horizontal rectangle shape not implemented'
                    return
                count_right = counters.inverse
                if count_right:
                    print 'horizontal count direction not implemented'
                    return
                writer.putln('type = HORIZONTAL_LEFT_COUNTER;')
            elif display_type == VERTICAL_BAR:
                shape_object = counters.shape
                shape = shape_object.shape
                if shape != RECTANGLE_SHAPE:
                    print 'vertical rectangle shape not implemented'
                    return
                count_up = counters.inverse
                if not count_up:
                    print 'vertical count direction not implemented'
                    return
                writer.putln('type = VERTICAL_UP_COUNTER;')
            elif display_type == ANIMATION:
                writer.putln('type = ANIMATION_COUNTER;')
                size = len(counters.frames)
                writer.putlnc('static Image * counter_images[%s];', size)
                writer.putlnc('static bool initialized = false;')
                writer.putln('if (!initialized) {')
                writer.indent()
                writer.putln('initialized = true;')
                for index, image in enumerate(counters.frames):
                    image = self.converter.get_image(image)
                    writer.putlnc('counter_images[%s] = %s;', index, image)
                writer.end_brace()
                writer.putln('images = (Image**)&counter_images;')
                writer.putlnc('image_count = %s;', size)
            else:
                print 'type', counters.getDisplayType(), 'not implemented'
                return
                raise NotImplementedError

            if display_type in (VERTICAL_BAR, HORIZONTAL_BAR):
                fill_type = shape_object.fillType
                if fill_type == GRADIENT_FILL:
                    if shape_object.getGradientType() == 'Horizontal':
                        writer.putlnc('gradient_type = HORIZONTAL_GRADIENT;')
                    else:
                        writer.putlnc('gradient_type = VERTICAL_GRADIENT;')
                    writer.putlnc('color1 = %s;',
                                  make_color(shape_object.color1))
                    writer.putlnc('color2 = %s;',
                                  make_color(shape_object.color2))
                elif fill_type == SOLID_FILL:
                    writer.putlnc('gradient_type = NONE_GRADIENT;')
                    writer.putlnc('color1 = %s;',
                                  make_color(shape_object.color1))
                else:
                    raise NotImplementedError
        else:
            writer.putln('type = HIDDEN_COUNTER;')
            writer.putln('width = height = 0;')
        writer.putlnc('minimum = %s;', counter.minimum)
        writer.putlnc('maximum = %s;', counter.maximum)

        if self.is_global():
            self.global_name = self.get_global('Counter::SavedCounter')
            writer.putlnc('if (%s.init)', self.global_name)
            writer.indent()
            writer.putlnc('set(%s.value);', self.global_name)
            writer.dedent()
            writer.putln('else')
            writer.indent()
            writer.putlnc('set(%s);', counter.initial)
            writer.dedent()
        else:
            writer.putlnc('set(%s);', counter.initial)
Example #20
0
    def write_init(self, writer):
        data = self.get_data()
        # data.skipBytes(4)

        width = data.readShort(True)
        height = data.readShort(True)
        writer.putlnc('width = %s;', width)
        writer.putlnc('height = %s;', height)

        flags = FLAGS.copy()
        flags.setFlags(data.readInt())
        self.show_border = flags['ShowButtonBorder']
        self.image_checkbox = flags['ImageCheckbox']
        if flags['Hyperlink']:
            display_type = HYPERLINK
        elif flags['Button']:
            if flags['Checkbox']:
                display_type = CHECKBOX
            else:
                display_type = BUTTON
        else:
            display_type = NONE

        align_top_left = flags['AlignImageTopLeft']
        align_center = flags['AlignImageCenter']
        pattern = flags['AlignImagePattern']
        fill = read_system_color(data)
        border1 = read_system_color(data)
        border2 = read_system_color(data)
        self.image = data.readShort()


        data.skipBytes(2) # rData_wFree
        text_color = read_system_color(data)
        margin_left = data.readShort()
        margin_top = data.readShort()
        margin_right = data.readShort()
        margin_bottom = data.readShort()

        font = LogFont(data, old=True)
        data.skipBytes(40) # file.readStringSize(40)
        data.adjust(8)
        text = data.readReader(data.readInt(True)).readString().rsplit('\\n',
                                                                       1)
        if len(text) == 1:
            text, = text
            tooltip = None
        else:
            text, tooltip = text
        new_width = width - margin_left - margin_right
        new_height = height - margin_top - margin_bottom

        alignment = []
        if flags['AlignTop']:
            alignment.append('ALIGN_TOP')
        elif flags['AlignVerticalCenter']:
            alignment.append('ALIGN_VCENTER')
        elif flags['AlignBottom']:
            alignment.append('ALIGN_BOTTOM')

        if flags['AlignLeft']:
            alignment.append('ALIGN_LEFT')
        elif flags['AlignHorizontalCenter']:
            alignment.append('ALIGN_HCENTER')
        elif flags['AlignRight']:
            alignment.append('ALIGN_RIGHT')

        if alignment:
            alignment = ' | '.join(alignment)
        else:
            alignment = '0'

        if self.image == -1:
            writer.putln('image = NULL;')
            if border1 is None or fill is None:
                color = (0, 0, 0, 0)
            else:
                color = fill + (255,)
            writer.putlnc('box_color = %s;', make_color(color))
            writer.putlnc('blend_color = %s;', make_color(text_color))
            writer.putlnc('box_flags = %s;', alignment)
        else:
            writer.putln('image = %s;' % self.converter.get_image(self.image))
            if pattern:
                writer.putln('type = PATTERN_IMAGE;')
            elif align_center:
                writer.putln('type = CENTER_IMAGE;')
            elif align_top_left:
                writer.putln('type = TOPLEFT_IMAGE;')
            else:
                raise NotImplementedError()

        if text:
            writer.putlnc('text = %r;', text)

        version = data.readInt()
        hyperlink_color = read_system_color(data)

        if self.converter.config.use_gwen():
            writer.putlnc('margin[0] = %s;', margin_left)
            writer.putlnc('margin[1] = %s;', margin_top)
            writer.putlnc('margin[2] = %s;', margin_right)
            writer.putlnc('margin[3] = %s;', margin_bottom)
            if flags['Button']:
                writer.putlnc('init_button();')
Example #21
0
    def write_init(self, writer):
        data = self.get_data()
        # data.skipBytes(4)

        width = data.readShort(True)
        height = data.readShort(True)
        writer.putlnc('width = %s;', width)
        writer.putlnc('height = %s;', height)

        flags = FLAGS.copy()
        flags.setFlags(data.readInt())
        self.show_border = flags['ShowButtonBorder']
        self.image_checkbox = flags['ImageCheckbox']
        if flags['Hyperlink']:
            display_type = HYPERLINK
        elif flags['Button']:
            if flags['Checkbox']:
                display_type = CHECKBOX
            else:
                display_type = BUTTON
        else:
            display_type = NONE

        align_top_left = flags['AlignImageTopLeft']
        align_center = flags['AlignImageCenter']
        pattern = flags['AlignImagePattern']
        fill = read_system_color(data)
        border1 = read_system_color(data)
        border2 = read_system_color(data)
        self.image = data.readShort()

        data.skipBytes(2)  # rData_wFree
        text_color = read_system_color(data)
        margin_left = data.readShort()
        margin_top = data.readShort()
        margin_right = data.readShort()
        margin_bottom = data.readShort()

        font = LogFont(data, old=True)
        data.skipBytes(40)  # file.readStringSize(40)
        data.adjust(8)
        text = data.readReader(data.readInt(True)).readString().rsplit(
            '\\n', 1)
        if len(text) == 1:
            text, = text
            tooltip = None
        else:
            text, tooltip = text
        new_width = width - margin_left - margin_right
        new_height = height - margin_top - margin_bottom

        alignment = []
        if flags['AlignTop']:
            alignment.append('ALIGN_TOP')
        elif flags['AlignVerticalCenter']:
            alignment.append('ALIGN_VCENTER')
        elif flags['AlignBottom']:
            alignment.append('ALIGN_BOTTOM')

        if flags['AlignLeft']:
            alignment.append('ALIGN_LEFT')
        elif flags['AlignHorizontalCenter']:
            alignment.append('ALIGN_HCENTER')
        elif flags['AlignRight']:
            alignment.append('ALIGN_RIGHT')

        if alignment:
            alignment = ' | '.join(alignment)
        else:
            alignment = '0'

        if self.image == -1:
            writer.putln('image = NULL;')
            if border1 is None or fill is None:
                color = (0, 0, 0, 0)
            else:
                color = fill + (255, )
            writer.putlnc('box_color = %s;', make_color(color))
            writer.putlnc('blend_color = %s;', make_color(text_color))
            writer.putlnc('box_flags = %s;', alignment)
        else:
            writer.putln('image = %s;' % self.converter.get_image(self.image))
            if pattern:
                writer.putln('type = PATTERN_IMAGE;')
            elif align_center:
                writer.putln('type = CENTER_IMAGE;')
            elif align_top_left:
                writer.putln('type = TOPLEFT_IMAGE;')
            else:
                raise NotImplementedError()

        if text:
            writer.putlnc('text = %r;', text)

        version = data.readInt()
        hyperlink_color = read_system_color(data)

        if self.converter.config.use_gwen():
            writer.putlnc('margin[0] = %s;', margin_left)
            writer.putlnc('margin[1] = %s;', margin_top)
            writer.putlnc('margin[2] = %s;', margin_right)
            writer.putlnc('margin[3] = %s;', margin_bottom)
            if flags['Button']:
                writer.putlnc('init_button();')
Example #22
0
    def write_init(self, writer):
        data = self.get_data()
        data.skipBytes(4)
        width = data.readShort()
        height = data.readShort()
        data.skipBytes(128)
        data.skipBytes(4)
        text = fix_string(data.read(1024))
        data.skipBytes(256)
        trans_color = data.readColor()
        char_size = (data.readInt(), data.readInt())
        char_spacing = (data.readInt(), data.readInt())
        char_offset = data.readInt() % 255
        image_size = (data.readInt(), data.readInt())
        image_offset = (data.readInt(), data.readInt())
        flags = data.readInt()
        tab_width = data.readInt()
        image = data.readShort()
        character_map = fix_string(data.read(256))
        data.skipBytes(256)
        data.skipBytes(4096)
        data.skipBytes(1024)
        data.skipBytes(2)
        left = data.readInt()
        top = data.readInt()
        right = data.readInt()
        bottom = data.readInt()
        horizontal_align = data.readInt()
        vertical_align = data.readInt()
        data.skipBytes(4)

        # read animation
        animation_type = data.readByte()
        data.skipBytes(3)
        animation_speed = data.readInt()
        speed_count = data.readInt()
        param = [data.readInt() for _ in xrange(16)]
        options = data.readInt()
        p1 = data.readInt()

        ball_left = data.readInt()
        ball_top = data.readInt()
        ball_right = data.readInt()
        ball_bottom = data.readInt()
        ball_source = (data.readInt(), data.readInt())
        ball_min = (data.readInt(), data.readInt())
        ball_max = (data.readInt(), data.readInt())

        type_name = ANIMATION_NAMES[animation_type]

        if type_name not in ('None', 'Sin Wave'):
            raise NotImplementedError('invalid blitter animation: %s'
                                      % type_name)

        if type_name == 'Sin Wave':
            writer.putln('anim_type = BLITTER_ANIMATION_SINWAVE;')
            writer.putlnc('anim_frame = 0;')
            writer.putlnc('anim_speed = %s;', animation_speed)
            writer.putlnc('wave_freq = %s;', param[1])
            writer.putlnc('wave_height = %s;', param[2])

        writer.putln('width = %s;' % width)
        writer.putln('height = %s;' % height)
        writer.putln('char_width = %s;' % char_size[0])
        writer.putln('char_height = %s;' % char_size[1])
        writer.putlnc('x_spacing = %s;', char_spacing[0])
        writer.putlnc('y_spacing = %s;', char_spacing[1])
        writer.putlnc('char_offset = %s;', char_offset)
        writer.putlnc('x_off = %s;', image_offset[0])
        writer.putlnc('y_off = %s;', image_offset[1])
        writer.putln('image = %s;' % self.converter.get_image(image))
        align_flags = []
        if horizontal_align == 0:
            align_flags.append('ALIGN_LEFT')
        elif horizontal_align == 1:
            align_flags.append('ALIGN_HCENTER')
        elif horizontal_align == 2:
            align_flags.append('ALIGN_RIGHT')
        if vertical_align == 0:
            align_flags.append('ALIGN_TOP')
        elif vertical_align == 1:
            align_flags.append('ALIGN_VCENTER')
        elif vertical_align == 2:
            align_flags.append('ALIGN_BOTTOM')
        if not align_flags:
            align_flags.append('0')
        writer.putln('alignment = %s;' % ' | '.join(align_flags))
        writer.putln('static int charmap[256];')
        writer.putlnc('static std::string charmap_str = %r;', character_map)
        writer.putln('static bool initialized = false;')
        writer.putln('this->charmap = &charmap[0];')
        writer.putln('this->charmap_str = &charmap_str;')
        writer.putln('if (!initialized) {')
        writer.indent()
        writer.putln('initialized = true;')
        writer.putln('initialize(charmap_str);')
        writer.end_brace()
        # other data
        if flags & FLAGS_TRANSPARENT:
            writer.putlnc('transparent_color = %s;', make_color(trans_color))
        writer.putlnc('wrap = %s;', bool(flags & FLAGS_WORDWRAPPING))
        writer.putlnc('set_text(%r);', text)
Example #23
0
    def write_init(self, writer):
        type_name = ANIMATION_NAMES[self.animation_type]

        if type_name not in ('None', 'Sin Wave'):
            print 'invalid blitter animation: %s' % type_name
            # raise NotImplementedError('invalid blitter animation: %s'
            #                           % type_name)

        if type_name == 'Sin Wave':
            writer.putln('anim_type = BLITTER_ANIMATION_SINWAVE;')
            writer.putlnc('anim_frame = 0;')
            writer.putlnc('anim_speed = %s;', self.animation_speed)
            writer.putlnc('wave_freq = %s;', self.param[1])
            writer.putlnc('wave_height = %s;', self.param[2])

        writer.putln('width = %s;' % self.width)
        writer.putln('height = %s;' % self.height)
        writer.putln('char_width = %s;' % self.char_size[0])
        writer.putln('char_height = %s;' % self.char_size[1])
        writer.putlnc('x_spacing = %s;', self.char_spacing[0])
        writer.putlnc('y_spacing = %s;', self.char_spacing[1])
        writer.putlnc('char_offset = %s;', self.char_offset)
        writer.putlnc('x_off = %s;', self.image_offset[0])
        writer.putlnc('y_off = %s;', self.image_offset[1])
        writer.putln('image = %s;' % self.converter.get_image(self.image))
        writer.putlnc('image_width = %s;', self.image_size[0])
        align_flags = []
        if self.horizontal_align == 0:
            align_flags.append('ALIGN_LEFT')
        elif self.horizontal_align == 1:
            align_flags.append('ALIGN_HCENTER')
        elif self.horizontal_align == 2:
            align_flags.append('ALIGN_RIGHT')
        if self.vertical_align == 0:
            align_flags.append('ALIGN_TOP')
        elif self.vertical_align == 1:
            align_flags.append('ALIGN_VCENTER')
        elif self.vertical_align == 2:
            align_flags.append('ALIGN_BOTTOM')
        if not align_flags:
            align_flags.append('0')
        writer.putln('alignment = %s;' % ' | '.join(align_flags))
        writer.putln('static int charmap[256];')
        writer.putln('static bool initialized = false;')
        writer.putln('this->charmap = &charmap[0];')
        interned_map = self.converter.intern_string(self.character_map)
        writer.putlnc('charmap_str = &%s;', interned_map)
        writer.putln('if (!initialized) {')
        writer.indent()
        writer.putln('initialized = true;')
        writer.putln('initialize(*charmap_str);')
        writer.end_brace()
        # other data
        if self.flags & FLAGS_TRANSPARENT:
            writer.putlnc('transparent_color = %s;',
                          make_color(self.trans_color))

        writer.putlnc('wrap = %s;', bool(self.flags & FLAGS_WORDWRAPPING))
        writer.putlnc('set_text(%s);', self.converter.intern_string(self.text))

        writer.putlnc('has_callback = %s;', self.has_callback)