コード例 #1
0
    def read_object(self, debug_string: str = '') -> Optional[Object]:
        """
        Creates and reads a new object from the stream
        """
        guid = self.read_guid(debug_string)
        res = REGISTRY.create_object(guid)
        if res is not None:
            self.log('** {} **'.format(res.__class__.__name__), 16)
        else:
            self.log('{} not found'.format(debug_string), 16)

        if res is not None:
            self.debug_depth += 1

            version = 1
            compatible_versions = res.compatible_versions()
            if compatible_versions is not None:
                version = self.read_ushort('version')
                if version not in res.compatible_versions():
                    supported_versions = ','.join(
                        [str(v) for v in res.compatible_versions()])
                    raise UnsupportedVersionException(
                        'Cannot read {} version {}, only support version(s): {}'
                        .format(res.__class__.__name__, version,
                                supported_versions))

            res.read(self, version)
            self.log('ended {}'.format(res.__class__.__name__))
            if self.debug:
                print('')
            self.debug_depth -= 1

        return res
コード例 #2
0
    def check_handle(self, file_handle):
        try:
            guid_bin = binascii.hexlify(file_handle.read(16))
            guid = REGISTRY.hex_to_guid(guid_bin)

            # check first in unimplemented types
            if guid in REGISTRY.NOT_IMPLEMENTED_GUIDS:
                return GuidCodeMatch(file_handle.tell() - 16, 16, REGISTRY.NOT_IMPLEMENTED_GUIDS[guid])

            obj = REGISTRY.create_object(guid)
            if obj is None:
                return None
            return GuidCodeMatch(file_handle.tell() - 16, 16, str(obj.__class__.__name__))
        except:  # nopep8, pylint: disable=bare-except
            pass
        return None
コード例 #3
0
ファイル: initalize_registry.py プロジェクト: robbriers/slyr
def initialize_registry():
    """
    Registers all known objects with the registry singleton
    """

    REGISTRY.register(LineTemplate)
    REGISTRY.register(CMYKColor)
    REGISTRY.register(RgbColor)
    REGISTRY.register(HSVColor)
    REGISTRY.register(HSLColor)
    REGISTRY.register(GrayColor)
    REGISTRY.register(LineDecoration)
    REGISTRY.register(SimpleLineDecoration)
    REGISTRY.register(SimpleLineSymbolLayer)
    REGISTRY.register(CartographicLineSymbolLayer)
    REGISTRY.register(MarkerLineSymbolLayer)
    REGISTRY.register(SimpleFillSymbolLayer)
    REGISTRY.register(ColorSymbol)
    REGISTRY.register(ArrowMarkerSymbolLayer)
    REGISTRY.register(CharacterMarkerSymbolLayer)
    REGISTRY.register(SimpleMarkerSymbolLayer)
    REGISTRY.register(Font)
    REGISTRY.register(FillSymbol)
    REGISTRY.register(LineSymbol)
    REGISTRY.register(MarkerSymbol)
    REGISTRY.register(RandomColorRamp)
    REGISTRY.register(PresetColorRamp)
    REGISTRY.register(MultiPartColorRamp)
    REGISTRY.register(AlgorithmicColorRamp)
    REGISTRY.register(GradientFillSymbolLayer)
    REGISTRY.register(LineFillSymbolLayer)
    REGISTRY.register(MarkerFillSymbolLayer)
    REGISTRY.register(HashLineSymbolLayer)
    REGISTRY.register(PictureMarkerSymbolLayer)
コード例 #4
0
def initialize_registry():
    """
    Registers all known objects with the registry singleton
    """

    REGISTRY.register(LineTemplate)
    REGISTRY.register(CMYKColor)
    REGISTRY.register(RgbColor)
    REGISTRY.register(HSVColor)
    REGISTRY.register(HSLColor)
    REGISTRY.register(GrayColor)
    REGISTRY.register(LineDecoration)
    REGISTRY.register(SimpleLineDecoration)
    REGISTRY.register(SimpleLineSymbolLayer)
    REGISTRY.register(CartographicLineSymbolLayer)
    REGISTRY.register(MarkerLineSymbolLayer)
    REGISTRY.register(SimpleFillSymbolLayer)
    REGISTRY.register(ArrowMarkerSymbolLayer)
    REGISTRY.register(CharacterMarkerSymbolLayer)
    REGISTRY.register(SimpleMarkerSymbolLayer)
    REGISTRY.register(Font)
    REGISTRY.register(FillSymbol)
    REGISTRY.register(LineSymbol)
    REGISTRY.register(MarkerSymbol)