Exemplo n.º 1
0
 def initialize(self):
     self.palette = []
     self.flags = BitDict('GrabDesktop', 'KeepDisplay',
                          'BackgroundCollisions', 'DisplayFrameTitle',
                          'ResizeToScreen', 'ForceLoadOnCall',
                          'NoDisplaySurface', 'ScreenSaverSetup',
                          'TimerBasedMovements', 'MochiAds',
                          'NoGlobalEvents')
Exemplo n.º 2
0
 def __init__(self, reader):
     self.reader = reader
     self.flags = BitDict(
         'KeepScreenRatio',
         'FrameTransition',  # (HWA only) frame has a transition
         'ResampleStretch',  # (HWA only) resample while resizing
         'GlobalRefresh'  # (Mobile) force global refresh
     )
     self.buildType = None
     self.buildFlags = None
     self.screenRatioTolerance = None
     self.screenAngle = None
Exemplo n.º 3
0
 def __init__(self, reader: ByteIO):
     self.reader = reader
     self.handle = None
     self.name = None
     self.checksum = None
     self.references = None
     self.flags = BitDict(
         'Wave',
         'MIDI',
         None, None,
         'LoadOnCall',
         'PlayFromDisk',
         'Loaded'
     )
     self.data = None
     self.ext = '.mp3'
Exemplo n.º 4
0
    def __init__(self, reader: ByteIO):
        self.reader = reader

        self.flags = BitDict('Color')

        currentPosition = self.reader.tell()
        self.module = self.reader.read(4)
        self.name = self.reader.read(4)
        self.duration = self.reader.read_int32()
        self.flags.setFlags(self.reader.read_uint32())
        self.color = [self.reader.read_uint8() for _ in range(4)]
        nameOffset = self.reader.read_int32()
        parameterOffset = self.reader.read_int32()
        parameterSize = self.reader.read_int32()
        self.reader.seek(currentPosition + nameOffset)
        self.moduleFile = self.reader.read_ascii_string()
        self.reader.seek(currentPosition + parameterOffset)
        self.parameterData = self.reader.read(parameterSize)
Exemplo n.º 5
0
class RTFObject(DataLoader):
    RTF_FLAGS = BitDict(
        'Transparent',
        'VerticalSlider',
        'HorizontalSlider'
    )

    def __init__(self, reader: ByteIO):
        self.reader = reader

        self.options = self.RTF_FLAGS.copy()

        size = self.reader.read_int32()
        self.version = self.reader.read_int32()
        self.options.setFlags(self.reader.read_int32())
        self.backColor = [self.reader.read_uint8() for _ in range(4)]
        self.width = self.reader.read_int32()
        self.height = self.reader.read_int32()
        self.reader.read_bytes(4)
        self.value = self.reader.read(self.reader.read_int32())
Exemplo n.º 6
0
 def __init__(self, reader: ByteIO):
     self.reader = reader
     self.name = ''
     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'
     )
     self.x_coefficient = 0
     self.y_coefficient = 0
     self.number_of_backgrounds = 0
     self.background_index = 0
Exemplo n.º 7
0
 def __init__(self, reader: ByteIO):
     self.reader = reader
     self.width = 0
     self.height = 0
     self.flags = BitDict(
         'DisplayName',
         'GrabDesktop',
         'KeepDisplay',
         'FadeIn',
         'FadeOut',
         'TotalCollisionMask',
         'Password',
         'ResizeAtStart',
         'DoNotCenter',
         'ForceLoadOnCall',
         'NoSurface',
         'Reserved_1',
         'Reserved_2',
         'RecordDemo',
         None,
         'TimedMovements'
     )
     self.background = None
Exemplo n.º 8
0
    def get_type(self):
        reader = ByteIO(byte_object=self.data)
        header = reader.read_fourcc()
        header2 = reader.read_fourcc()
        if header == 'RIFF':
            return 'WAV'
        elif header2 == 'AIFF':
            return 'AIFF'
        elif header == 'OggS':
            return 'OGG'
        else:
            # assume MOD
            return 'MOD'


SOUND_FLAGS = BitDict('Wave', 'MIDI', None, None, 'LoadOnCall', 'PlayFromDisk',
                      'Loaded')


class SoundItem(BaseSound):
    def __init__(self, reader):
        super().__init__(reader)
        self.compressed = not self.settings.get('debug', False)
        self.checksum = None
        self.references = None
        self.flags = SOUND_FLAGS.copy()

    def read(self):
        reader = self.reader
        start = reader.tell()
        self.handle = reader.read_uint32()
        self.checksum = reader.read_int32()
Exemplo n.º 9
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)
Exemplo n.º 10
0
from CTF_ByteIO import ByteIO
from Chunks.Common import ObjectInfoMixin, AceCommon
from Chunks.Paramerers.Parameters import parameter_loaders, get_name
from Loader import DataLoader
from bitdict import BitDict

HEADER = b'ER>>'
EVENT_COUNT = b'ERes'
EVENTGROUP_DATA = b'ERev'
END = b'<<ER'

ACE_FLAGS = BitDict('Repeat', 'Done', 'Default', 'DoneBeforeFadeIn',
                    'NotDoneInStart', 'Always', 'Bad', 'BadObject', None,
                    'Notable')

ACE_OTHERFLAGS = BitDict('Not', 'Notable', 'Monitorable', 'ToDelete',
                         'NewSound')

GROUP_FLAGS = BitDict('Once', 'NotAlways', 'Repeat', 'NoMore', 'Shuffle',
                      'EditorMark', 'UndoMark', 'ComplexGroup', 'Breakpoint',
                      'AlwaysClean', 'OrInGroup', 'StopInGroup', 'OrLogical',
                      'Grouped', 'Inactive', 'NoGood')


class Qualifier(DataLoader, ObjectInfoMixin):
    def __init__(self, reader: ByteIO):
        self.reader = reader
        self.objectInfo = None
        self.type = None
        self.qualifier = None
        self.objects = None
Exemplo n.º 11
0
    NONE_EFFECT: 'None',
    SEMITRANSPARENT_EFFECT: 'Semitransparent',
    INVERTED_EFFECT: 'Inverted',
    XOR_EFFECT: 'XOR',
    AND_EFFECT: 'AND',
    OR_EFFECT: 'OR',
    ADD_EFFECT: 'Add',
    MONOCHROME_EFFECT: 'Monochrome',
    SUBTRACT_EFFECT: 'Subtract',
    SHADER_EFFECT: 'Shader',
    HWA_EFFECT: 'HWA'
}

OBJECT_FLAGS = BitDict(
    'LoadOnCall',
    'Discardable',
    'Global',
    'Reserved_1'
)
(PLAYER, KEYBOARD, CREATE, TIMER, GAME, SPEAKER,
 SYSTEM, QUICKBACKDROP, BACKDROP, ACTIVE, TEXT,
 QUESTION, SCORE, LIVES, COUNTER, RTF, SUBAPPLICATION) = range(-7, 10)


def get_object_type(id):
    if id < EXTENSION_BASE:
        return objectTypes[id]
    else:
        return 'Extension'


class ObjectName(StringChunk):
Exemplo n.º 12
0
    'None',
    'Solid',
    'Gradient',
    'Motif'
]

HORIZONTAL_GRADIENT = 0
VERTICAL_GRADIENT = 1

GRADIENT_TYPES = [
    'Horizontal',
    'Vertical'
]

SHAPE_FLAGS = BitDict(
    'InverseX',
    'InverseY'
)


class AlterableValues(DataLoader):
    def __init__(self, reader: ByteIO):
        self.reader = reader
        self.items = [self.reader.read_int32()
                      for _ in range(self.reader.read_uint16())]


class AlterableStrings(DataLoader):
    def __init__(self, reader: ByteIO):
        self.reader = reader
        self.items = [self.reader.read_ascii_string()
                      for _ in range(self.reader.read_uint16())]
Exemplo n.º 13
0
import os
from math import ceil
from typing import Dict

from PIL import Image

from CTF_ByteIO import ByteIO
from Loader import DataLoader
from ProgressBar import ProgressBar
from bitdict import BitDict

POINT_MODE = 4  # 16 million colors
FIFTEENPOINT_MODE = 6  # 32768 colors

IMAGE_FLAGS = BitDict('RLE', 'RLEW', 'RLET', 'LZX', 'Alpha', 'ACE', 'Mac')


class BasePoint:
    pass


class IndexPoint(BasePoint):
    def __init__(self):
        self.size = 1

    def read(self, data, position) -> int:
        return data[position]


class Point(BasePoint):
    def __init__(self):
Exemplo n.º 14
0
 def initialize(self):
     self.flags = BitDict('Color')
Exemplo n.º 15
0
                      self.parent)
                continue
            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):
        self.name = reader.read(reader.readInt())
        self.flags.setFlags(reader.readInt())
Exemplo n.º 16
0
    'Joystick 1',
    'Joystick 2',
    'Joystick 3',
    'Joystick 4',
    'Keyboard'
]

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',