def initialize(self): self.flags = BitDict( 'KeepScreenRatio', 'FrameTransition', # (HWA only) frame has a transition 'ResampleStretch', # (HWA only) resample while resizing 'GlobalRefresh' # (Mobile) force global refresh )
def write_init(self, writer): data = self.get_data() x_size = max(1, data.readInt()) y_size = max(1, data.readInt()) z_size = max(1, data.readInt()) flags = BitDict('Numeric', 'Text', 'Base1', 'Global') flags.setFlags(data.readInt()) is_numeric = flags['Numeric'] offset = int(flags['Base1']) init = to_c('initialize(%s, %s, %s, %s, %s);', is_numeric, offset, x_size, y_size, z_size) if flags['Global']: glob = self.get_global('ArrayObject::SavedArray') writer.putlnc('global_data = &%s;', glob) writer.putlnc('if (!%s.init) {', glob) writer.indent() writer.putlnc('%s.init = true;', glob) writer.putln(init) writer.dedent() writer.putln('} else {') writer.indent() writer.putlnc('data = %s.value;', glob) writer.end_brace() else: writer.putln(init)
def created(self, data): self.flags = flags = BitDict( 'HorizontalScrollbar', 'HorizontalAutoscroll', 'VerticalScrollbar', 'VerticalAutoscroll', 'ReadOnly', 'Multiline', 'Password', 'Border', 'HideOnStart', 'Uppercase', 'Lowercase', 'Tabstop', 'SystemColor', '3DLook', 'Transparent', None, 'AlignCenter', 'AlignRight') self.width = data.readShort(True) self.height = data.readShort(True) # XXX support unicode when the unicode build is out! self.logFont = LogFont(data, old=True) data.skipBytes(4 * 16) # custom colors? self.foregroundColor = data.readColor() self.backgroundColor = data.readColor() data.skipBytes(40) # text-style? flags.setFlags(data.readInt()) if flags['HideOnStart']: self.parent.visible = False self.enable_mouse() self.widget = self.new(Edit) self.widget.initialize( int(self.x), int(self.y) - self.height, self.width, self.height, self.foregroundColor, self.backgroundColor, self.logFont, flags['Password'], flags['AlignCenter'], flags['AlignRight'], flags['Uppercase'], flags['Lowercase'], flags['ReadOnly'], flags['Multiline'], flags['Transparent'], flags['Border']) self.player.window.push_handlers( on_text_motion=self.widget.on_text_motion, on_text=self.widget.on_text, on_text_motion_select=self.widget.on_text_motion_select)
def write_init(self, writer): data = self.get_data() flags = BitDict('FreeFlag', 'VerticalScrollbar', 'Sort', 'Border', 'HideOnStart', 'SystemColor', '3DLook', 'ScrollToNewline') width = data.readShort() height = data.readShort() is_unicode = self.data.settings.get('unicode', False) font = self.data.new(LogFont, data, old=not is_unicode) font_color = data.readColor() self.data.readString(data, 40) data.skipBytes(16 * 4) back_color = data.readColor() flags.setFlags(data.readInt()) line_count = data.readShort(True) index_offset = -1 if data.readInt() == 1 else 0 data.skipBytes(4 * 3) lines = [] for _ in xrange(line_count): line = self.data.readString(data) writer.putln(to_c('add_line(%r);', line)) if flags['HideOnStart']: writer.putln('set_visible(false);') if flags['Sort']: writer.putln('list_flags |= SORT_LIST;') writer.putlnc('index_offset = current_line = %s;', index_offset)
def write_init(self, writer): data = self.get_data() x_size = max(1, data.readInt()) y_size = max(1, data.readInt()) z_size = max(1, data.readInt()) flags = BitDict('Numeric', 'Text', 'Base1', 'Global') flags.setFlags(data.readInt()) is_numeric = flags['Numeric'] offset = int(flags['Base1']) init = to_c('initialize(%s, %s, %s, %s, %s);', is_numeric, offset, x_size, y_size, z_size) if flags['Global']: writer.putln('static ArrayData static_global_data;') writer.putln('global_data = &static_global_data;') writer.putln('static bool init = false;') writer.putln('if (!init) {') writer.indent() writer.putln('init = true;') writer.putln(init) writer.dedent() writer.putln('} else {') writer.indent() writer.putln('data = static_global_data;') writer.end_brace() else: writer.putln(init)
def initialize(self): # 0x8000 == TimedMovements self.flags = BitDict('DisplayName', 'GrabDesktop', 'KeepDisplay', 'FadeIn', 'FadeOut', 'TotalCollisionMask', 'Password', 'ResizeAtStart', 'DoNotCenter', 'ForceLoadOnCall', 'NoSurface', 'Reserved_1', 'Reserved_2', 'RecordDemo', None, 'TimedMovements')
def created(self, data): self.flags = flags = BitDict('HideOnStart', 'DisableOnStart', 'TextOnLeft', 'Transparent', 'SystemColor') strings = [] width = data.readShort() height = data.readShort() self.buttonType = buttonType = data.readShort() self.buttonCount = buttonCount = data.readShort() flags.setFlags(data.readInt()) self.font = LogFont(data) self.fontColor = data.readColor() self.backColor = data.readColor() if self.flags['SystemColor']: self.backColor = (255, 255, 255) buttonImages = [data.readShort() for _ in xrange(3)] if buttonType in (PUSHBITMAP_BUTTON, PUSHTEXTBITMAP_BUTTON): self.textures = textures = [] for item in buttonImages: textures.append( self.make_image_handle(item) if item != -1 else None) if buttonType == PUSHBITMAP_BUTTON: width = max([item.width for item in textures if item is not None] + [32]) height = max( [item.height for item in textures if item is not None] + [32]) data.readShort() # fourth word in img array data.readInt() # ebtnSecu align = data.readShort() tooltip = '' if buttonType == RADIO_BUTTON: strings = [data.readString() for _ in xrange(buttonCount)] else: strings.append(data.readString()) tooltip = data.readString() self.values = [False for _ in xrange(buttonCount)] self.width = width self.height = height self.strings = strings self.tooltip = tooltip self.enable_mouse() if flags['DisableOnStart']: value = False else: value = True self.enabled = [value for _ in xrange(self.buttonCount)] if flags['HideOnStart']: self.parent.visible = False self.setup()
def initialize(self): self.palette = [] self.flags = BitDict( 'GrabDesktop', 'KeepDisplay', 'BackgroundCollisions', 'DisplayFrameTitle', 'ResizeToScreen', 'ForceLoadOnCall', 'NoDisplaySurface', 'ScreenSaverSetup', 'TimerBasedMovements', 'MochiAds', 'NoGlobalEvents' )
def initialize(self): self.flags = BitDict( 'XCoefficient', 'YCoefficient', 'DoNotSaveBackground', None, #Wrap (Obsolete) 'Visible', # visible 'WrapHorizontally', 'WrapVertically', None, None, None, None, None, None, None, None, None, 'Redraw', 'ToHide', 'ToShow' )
def created(self, data): self.flags = flags = BitDict( 'Resize', 'HideOnStart', 'TransparentBlack', 'TransparentFirstPixel', 'FlippedHorizontally', 'FlippedVertically', 'Resample', 'WrapModeOff', ) self.width = data.readInt() self.height = data.readInt() flags.setFlags(data.readInt(True)) self.transparentColor = data.readColor() imageName = data.readString(260) if imageName != '': self.load(imageName)
def created(self, data): storage = self.get_storage() if storage: self.array = storage['value'] return xDimension = data.readInt() yDimension = data.readInt() zDimension = data.readInt() flags = BitDict('Numeric', 'Text', 'Base1', 'Global') flags.setFlags(data.readInt()) if flags['Base1']: self.arrayX = self.arrayY = self.arrayZ = 1 # yeah, I think this is comprehensive too. self.array = array = MMFArray() if flags['Numeric']: arrayType = 'Numeric' else: arrayType = 'Text' array.flags = flags array.setup(xDimension, yDimension, zDimension, arrayType) self.get_storage()['value'] = array
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
def created(self, data): self.flags = flags = BitDict('FreeFlag', 'VerticalScrollbar', 'Sort', 'Border', 'HideOnStart', 'SystemColor', '3DLook', 'ScrollToNewline') self.width = data.readShort() self.height = data.readShort() # XXX support unicode self.font = font = LogFont(data, old=True) self.fontColor = data.readColor() data.readString(40) data.skipBytes(16 * 4) self.backColor = data.readColor() flags.setFlags(data.readInt()) lineCount = data.readShort(True) self.indexOffset = -1 if data.readInt() == 1 else 0 data.skipBytes(4 * 3) lines = [] for _ in xrange(lineCount): lines.append(data.readString()) if flags['HideOnStart']: self.parent.visible = False self.listObject = self.new(List) self.listObject.initialize(0, 0, self.width, self.height, border=flags['Border'], border3d=flags['3DLook'], scrollBar=flags['VerticalScrollbar'], backColor=self.backColor, font=font, fontColor=self.fontColor) self.enable_mouse() self.listObject.extend(lines)
def write_init(self, writer): data = self.get_data() flags = BitDict('FreeFlag', 'VerticalScrollbar', 'Sort', 'Border', 'HideOnStart', 'SystemColor', '3DLook', 'ScrollToNewline') width = data.readShort() height = data.readShort() # XXX support unicode font = LogFont(data, old=True) font_color = data.readColor() data.readString(40) data.skipBytes(16 * 4) back_color = data.readColor() flags.setFlags(data.readInt()) line_count = data.readShort(True) index_offset = -1 if data.readInt() == 1 else 0 data.skipBytes(4 * 3) lines = [] for _ in xrange(line_count): line = data.readString() writer.putln(to_c('add_line(%r);', line)) if flags['HideOnStart']: writer.putln('set_visible(false);')
def getType(self): header = self.data[:4] if self.data[:4] == 'RIFF': return 'WAV' elif self.data[:4] == 'AIFF': return 'AIFF' elif self.data[:4] == 'OggS': return 'OGG' else: # assume MOD return 'MOD' SOUND_FLAGS = BitDict( 'Wave', 'MIDI', None, None, 'LoadOnCall', 'PlayFromDisk', 'Loaded' ) class SoundItem(BaseSound): handle = None checksum = None references = None flags = None name = None data = None def initialize(self): self.flags = SOUND_FLAGS.copy()
# but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with Anaconda. If not, see <http://www.gnu.org/licenses/>. from chowdren.writers.objects import ObjectWriter from chowdren.common import get_animation_name, to_c, make_color from chowdren.writers.events import (ComparisonWriter, ActionMethodWriter, ConditionMethodWriter, ExpressionMethodWriter, make_table) from mmfparser.bitdict import BitDict FLAGS = BitDict('Resize', 'HideOnStart', 'TransparentBlack', 'TransparentFirstPixel', 'FlippedHorizontally', 'FlippedVertically', 'Resample', 'WrapModeOff') class ActivePicture(ObjectWriter): is_active_picture = True class_name = 'ActivePicture' filename = 'picture' use_alterables = True default_instance = 'default_picture_instance' def write_init(self, writer): data = self.get_data() if self.is_active_picture: width = data.readInt() height = data.readInt()
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with Anaconda. If not, see <http://www.gnu.org/licenses/>. from chowdren.writers.objects import ObjectWriter from chowdren.common import get_animation_name, to_c, make_color from chowdren.writers.events import (ComparisonWriter, ActionMethodWriter, ConditionMethodWriter, ExpressionMethodWriter, make_table, EmptyAction) from mmfparser.data.font import LogFont from mmfparser.bitdict import BitDict BUTTON_FLAGS = BitDict('HideOnStart', 'DisableOnStart', 'TextOnLeft', 'Transparent', 'SystemColor') PUSHTEXT_BUTTON = 0 CHECKBOX_BUTTON = 1 RADIO_BUTTON = 2 PUSHBITMAP_BUTTON = 3 PUSHTEXTBITMAP_BUTTON = 4 BUTTON_BORDER = 1 class ButtonObject(ObjectWriter): class_name = 'ButtonObject' filename = 'buttonext' def write_init(self, writer):
# You should have received a copy of the GNU General Public License # along with Anaconda. If not, see <http://www.gnu.org/licenses/>. from chowdren.writers.objects import ObjectWriter from chowdren.common import get_animation_name, to_c, make_color from chowdren.writers.events import (ComparisonWriter, ActionMethodWriter, ConditionMethodWriter, ExpressionMethodWriter, make_table) from mmfparser.bitdict import BitDict from mmfparser.data.font import LogFont COMBO_FLAGS = BitDict('Simple', 'Dropdown', 'DropdownList', 'ScrollBar', 'Sort', 'HideOnStart', 'SystemColor', 'Scroll', 'OneBase') class ComboBox(ObjectWriter): class_name = 'ComboBox' filename = 'combobox' def write_init(self, writer): data = self.get_data() width = data.readShort(True) height = data.readShort(True) is_unicode = self.data.settings.get('unicode', False) log_font = self.data.new(LogFont, data, old=not is_unicode) font_color = data.readColor() font_style = self.data.readString(data, 40)
def initialize(self): self.flags = BitDict('Numeric', 'Text', 'Base1', 'Global') self.flags.setFlags(0) # to prevent BitDict from complaining :) self.flags['Base1'] = True # default self.flags['Text'] = True # default self.default = ''
from chowdren.writers.objects import ObjectWriter from chowdren.common import get_animation_name, to_c, make_color from chowdren.writers.events import (ComparisonWriter, ActionMethodWriter, ConditionMethodWriter, ExpressionMethodWriter, make_table) from mmfparser.data.font import LogFont from mmfparser.bitdict import BitDict EDIT_FLAGS = BitDict('HorizontalScrollbar', 'HorizontalAutoscroll', 'VerticalScrollbar', 'VerticalAutoscroll', 'ReadOnly', 'Multiline', 'Password', 'Border', 'HideOnStart', 'Uppercase', 'Lowercase', 'Tabstop', 'SystemColor', '3DLook', 'Transparent', None, 'AlignCenter', 'AlignRight') class EditObject(ObjectWriter): class_name = 'EditObject' filename = 'editext' def write_init(self, writer): if not self.has_updates(): return data = self.get_data() width = data.readShort(True) height = data.readShort(True) logFont = LogFont(data, old=True) data.skipBytes(4 * 16) # custom colors? foregroundColor = data.readColor() backgroundColor = data.readColor() data.skipBytes(40) # text-style?
reader.writeColor(self.backColor) reader.writeShort(0) reader.writeInt(self.id) class Int(ParameterCommon): value = None def read(self, reader): self.value = reader.readInt() def write(self, reader): reader.writeInt(self.value) SAMPLE_FLAGS = BitDict( 'Uninterruptible', 'Bad', 'IPhoneAudioPlayer', 'IPhoneOpenAL' ) class Sample(ParameterCommon): handle = None flags = None def initialize(self): self.flags = SAMPLE_FLAGS.copy() def read(self, reader): self.handle = reader.readShort() self.flags.setFlags(reader.readShort(True)) self.name = self.readString(reader)
def created(self): self.flags = BitDict('Wait', 'Hide')
def initialize(self): self.flags = BitDict('Color')
reader.writeColor(self.fontColor) reader.writeColor(self.backColor) reader.writeShort(0) reader.writeInt(self.id) class Int(ParameterCommon): value = None def read(self, reader): self.value = reader.readInt() def write(self, reader): reader.writeInt(self.value) SAMPLE_FLAGS = BitDict( 'Uninterruptible', 'Bad' ) class Sample(ParameterCommon): handle = None flags = None def initialize(self): self.flags = SAMPLE_FLAGS.copy() def read(self, reader): self.handle = reader.readShort() self.flags.setFlags(reader.readShort(True)) self.name = reader.readString()
return instance.x class Expression3(Expression): """ Y Position of hiscore table Return type: Int """ def get(self, instance): return instance.y from mmfparser.data.font import LogFont from mmfparser.bitdict import BitDict HIGHSCORE_FLAGS = BitDict('HideOnStart', 'NameFirst', 'CheckOnStart', 'HideScores', 'FullPath') from mmfparser.player.objects.question import (draw_rectangle, draw_border, X_MARGIN, Y_MARGIN) from pyglet.text import Label from mmfparser.player.ini import FastINI import os from pyglet import gl from pyglet.window import key BOX_WIDTH = 400 BOX_HEIGHT = 70 class DefaultObject(HiddenObject):
def get(self, instance): raise NotImplementedError('%s not implemented' % (str(self))) class Expression14(Expression): """ Files->Get File Size Return type: Int """ def get(self, instance): raise NotImplementedError('%s not implemented' % (str(self))) from mmfparser.bitdict import BitDict FLAGS = BitDict('FilterCharacters', 'NoPadding') global_keys = {} class DefaultObject(HiddenObject): def created(self, data): self.flags = flags = FLAGS.copy() flags.setFlags(data.readInt()) data.skipBytes(4) self.filter = filter = [] while 1: byte = data.read(1) if byte == '\x00': data.skipBytes(1) break
def initialize(self): self.flags = BitDict('Wave', 'MIDI', None, None, 'LoadOnCall', 'PlayFromDisk', 'Loaded')
if index & (1 << 31) != 0: return get_color_tuple(index) try: return COLORS[index] except KeyError: return (0, 0, 0) def read_system_color(reader): return get_system_color(reader.readInt(True)) FLAGS = BitDict('AlignTop', 'AlignVerticalCenter', 'AlignBottom', None, 'AlignLeft', 'AlignHorizontalCenter', 'AlignRight', None, 'Multiline', 'NoPrefix', 'EndEllipsis', 'PathEllipsis', 'Container', 'Contained', 'Hyperlink', None, 'AlignImageTopLeft', 'AlignImageCenter', 'AlignImagePattern', None, 'Button', 'Checkbox', 'ShowButtonBorder', 'ImageCheckbox', 'HideImage', 'ForceClipping', None, None, 'ButtonPressed', 'ButtonHighlighted', 'Disabled') NONE, HYPERLINK, BUTTON, CHECKBOX = xrange(4) class SystemBox(ObjectWriter): class_name = 'SystemBox' filename = 'systembox' use_alterables = True default_instance = 'default_systembox_instance' def write_init(self, writer): data = self.get_data()
def writeKeys(self, reader): self.keys.write(reader) def write(self, reader): reader.writeShort(self.controlType) HEADER_FLAGS = BitDict( 'BorderMax', 'NoHeading', 'Panic', 'SpeedIndependent', 'Stretch', 'MusicOn', # obsolete? 'SoundOn', # obsolete? 'MenuHidden', 'MenuBar', 'Maximize', # maximized at bootup? 'MultiSamples', 'FullscreenAtStart', 'FullscreenSwitch', 'Protected', # wonder... 'Copyright', 'OneFile' # ? ) HEADER_NEW_FLAGS = BitDict( 'SamplesOverFrames', 'RelocFiles', 'RunFrame', 'SamplesWhenNotFocused', 'NoMinimizeBox',
items.append(self.new(CHUNK_LOADERS[id], data)) size = reader.tell() - start reader.seek(start) self.saved = reader.read(size) def write(self, reader): if self.saved is not None: reader.write(self.saved) else: reader.writeByte(0) LAYER_FLAGS = BitDict( 'Visible', 'Locked', 'Obsolete', 'HideAtStart', 'NoBackground', 'WrapHorizontally', 'WrapVertically', 'PreviousEffect' ) class Layer(DataLoader): name = None xCoefficient = None yCoefficient = None flags = None def initialize(self): self.flags = LAYER_FLAGS.copy() def read(self, reader):