def toBytes(self): """ encode to binary data """ io=IO(boolSize=32) io.u32=self.strokeType io.bool=self.closedShape io.u32=self.numFloatsPerPoint io.u32=self.numPoints for gp in self.points: io.addBytes(gp.toBytes()) return io.data
def toBytes(self): """ encode to binary data """ io=IO(boolSize=32) io.sz754=self.name io.u32=self.uniqueId io.bool=self.visible io.bool=self.linked io.u32=len(self.parasites) io.u32=len(self.strokes) for p in self.parasites: io.addBytes(p.toBytes()) for gs in self.strokes: io.addBytes(gs.toBytes()) return io.data
def _propertyEncode_(self,propertyType): """ encode a single property If the property is the same as the default, or not specified, returns empty array """ io=IO(boolSize=32) if propertyType==self.PROP_COLORMAP: if self.colorMap is not None and self.colorMap: io.u32=self.PROP_COLORMAP io.addBytes(self._colormapEncode_()) elif propertyType==self.PROP_ACTIVE_LAYER: if self.selected is not None and self.selected: io.u32=self.PROP_ACTIVE_LAYER elif propertyType==self.PROP_ACTIVE_CHANNEL: if self.selected is not None and self.selected: io.u32=self.PROP_ACTIVE_LAYER elif propertyType==self.PROP_SELECTION: if self.isSelection is not None and self.isSelection: io.u32=self.PROP_SELECTION elif propertyType==self.PROP_FLOATING_SELECTION: if self.selectionAttachedTo is not None: io.u32=self.PROP_FLOATING_SELECTION io.u32=self.selectionAttachedTo elif propertyType==self.PROP_OPACITY: if self.opacity is not None and not isinstance(self.opacity,float): io.u32=self.PROP_OPACITY io.u32=self.opacity elif propertyType==self.PROP_MODE: if self.blendMode is not None: io.u32=self.PROP_MODE io.u32=self.blendMode elif propertyType==self.PROP_VISIBLE: if self.visible is not None and self.visible: io.u32=self.PROP_VISIBLE elif propertyType==self.PROP_LINKED: if self.isLinked is not None and self.isLinked: io.u32=self.PROP_LINKED io.bool=self.isLinked elif propertyType==self.PROP_LOCK_ALPHA: if self.lockAlpha is not None and self.lockAlpha: io.u32=self.PROP_LOCK_ALPHA io.bool=self.lockAlpha elif propertyType==self.PROP_APPLY_MASK: if self.applyMask is not None: io.u32=self.PROP_APPLY_MASK io.bool=self.applyMask elif propertyType==self.PROP_EDIT_MASK: if self.editingMask is not None and self.editingMask: io.u32=self.PROP_EDIT_MASK io.bool=self.editingMask elif propertyType==self.PROP_SHOW_MASK: if self.showMask is not None and self.showMask: io.u32=self.PROP_SHOW_MASK io.bool=self.showMask elif propertyType==self.PROP_SHOW_MASKED: if self.showMasked is not None: io.u32=self.PROP_SHOW_MASKED io.bool=self.showMasked elif propertyType==self.PROP_OFFSETS: if self.xOffset is not None and self.yOffset is not None: io.u32=self.PROP_OFFSETS io.i32=self.xOffset io.i32=self.yOffset elif propertyType==self.PROP_COLOR: if self.color is not None and not self.isFloatColor(self.color): io.u32=self.PROP_COLOR io.byte=self.color[0] io.byte=self.color[1] io.byte=self.color[2] elif propertyType==self.PROP_COMPRESSION: if self.compression is not None: io.u32=self.PROP_COMPRESSION io.u32=self.compression elif propertyType==self.PROP_GUIDES: if self.guidelines is not None and self.guidelines: io.u32=self.PROP_GUIDES io.addBytes(self._guidelinesEncode_()) elif propertyType==self.PROP_RESOLUTION: if self.horizontalResolution is not None and self.verticalResolution is not None: io.u32=self.PROP_RESOLUTION io.u32=self.horizontalResolution io.i32=self.verticalResolution elif propertyType==self.PROP_TATTOO: if self.uniqueId is not None: io.u32=int(self.uniqueId,16) elif propertyType==self.PROP_PARASITES: if self.parasites is not None and self.parasites: io.u32=self.PROP_PARASITES io.addBytes(self._parasitesEncode_()) elif propertyType==self.PROP_UNIT: if self.units is not None: io.u32=self.PROP_UNIT io.u32=self.units elif propertyType==self.PROP_PATHS: if self.paths is not None and self.paths: io.u32=self.PROP_PATHS io.u32=len(self.paths) for path in self.paths: io.addBytes(self._pathEncode_(path)) elif propertyType==self.PROP_USER_UNIT: if self.userUnits is not None: io.u32=self.PROP_USER_UNIT io.addBytes(self._userUnitsEncode_()) elif propertyType==self.PROP_VECTORS: if self.vectors is not None and self.vectors: io.u32=self.PROP_VECTORS io.addBytes(self._vectorsEncode_()) elif propertyType==self.PROP_TEXT_LAYER_FLAGS: if self.textLayerFlags is not None: io.u32=self.PROP_TEXT_LAYER_FLAGS io.u32=self.textLayerFlags elif propertyType==self.PROP_OLD_SAMPLE_POINTS: pass elif propertyType==self.PROP_LOCK_CONTENT: if self.locked is not None and self.locked: io.u32=self.PROP_LOCK_CONTENT io.bool=self.locked elif propertyType==self.PROP_GROUP_ITEM: if self.isGroup is not None and self.isGroup: io.u32=self.PROP_GROUP_ITEM elif propertyType==self.PROP_ITEM_PATH: if self.itemPath is not None: io.u32=self.PROP_ITEM_PATH io.addBytes(self._itemPathEncode_()) elif propertyType==self.PROP_GROUP_ITEM_FLAGS: if self.groupItemFlags is not None: io.u32=self.PROP_GROUP_ITEM_FLAGS io.u32=self.groupItemFlags elif propertyType==self.PROP_LOCK_POSITION: if self.positionLocked is not None and self.positionLocked: io.u32=self.PROP_LOCK_POSITION io.bool=self.positionLocked elif propertyType==self.PROP_FLOAT_OPACITY: if self.opacity is not None and isinstance(self.opacity,float): io.u32=self.PROP_FLOAT_OPACITY io.float32=self.opacity elif propertyType==self.PROP_COLOR_TAG: if self.colorTag is not None: io.u32=self.PROP_COLOR_TAG io.u32=self.colorTag elif propertyType==self.PROP_COMPOSITE_MODE: if self.compositeMode is not None: io.u32=self.PROP_COMPOSITE_MODE io.i32=self.compositeMode elif propertyType==self.PROP_COMPOSITE_SPACE: if self.compositeSpace is not None: io.u32=self.PROP_COMPOSITE_SPACE io.i32=self.compositeSpace elif propertyType==self.PROP_BLEND_SPACE: if self.blendSpace is not None: io.u32=self.PROP_BLEND_SPACE io.u32=self.blendSpace elif propertyType==self.PROP_FLOAT_COLOR: if self.color is not None and self.isFloatColor(self.color): io.u32=self.PROP_FLOAT_COLOR io.float32=self.color[0] io.float32=self.color[1] io.float32=self.color[2] elif propertyType==self.PROP_SAMPLE_POINTS: if self.samplePoints is not None and self.samplePoints: io.u32=self.PROP_SAMPLE_POINTS io.addBytes(self._samplePointsEncode_()) else: raise Exception('Unknown property id '+str(propertyType)) return io.data