//------------------------------------------------ //--- 010 Editor v8.0.1 Binary Template // // File: fdg // Authors: Tiago Conceição //------------------------------------------------ LittleEndian(); struct HEADER { uint Magic ; uint Version ; uint LayerCount ; uint BottomLayersCount ; uint ProjectorType ; uint BottomLayersCount2 ; uint ResolutionX ; uint ResolutionY ; float LayerHeightMilimeter ; float LayerExposureSeconds ; float BottomExposureSeconds ; uint PreviewLargeOffsetAddress ; uint PreviewSmallOffsetAddress ; uint LayersDefinitionOffsetAddress ; uint PrintTime ; uint AntiAliasLevel ; ushort LightPWM ; ushort BottomLightPWM ; uint Padding ; uint Padding ; float TotalHeightMilimeter ; float BedSizeX ; float BedSizeY ; float BedSizeZ ; uint EncryptionKey ; uint AntiAliasLevelInfo ; uint EncryptionMode ; float VolumeMl ; float WeightG ; float CostDollars ; uint MachineNameAddress ; uint MachineNameSize ; float BottomLightOffDelay ; float LightOffDelay ; uint Padding ; float BottomLiftHeight ; float BottomLiftSpeed ; float LiftHeight ; float LiftSpeed ; float RetractSpeed ; uint Padding ; uint Padding ; uint Padding ; uint Padding ; uint Padding ; uint Padding ; uint Padding ; uint TimestampMinutes ; uint SoftwareVersion ; uint Padding ; uint Padding ; uint Padding ; uint Padding ; uint Padding ; uint Padding ; } header; struct PREVIEW { uint ResolutionX ; uint ResolutionY ; uint ImageOffset ; uint ImageLength ; uint Unknown1 ; uint Unknown2 ; uint Unknown3 ; uint Unknown4 ; ubyte Data[ImageLength] ; }; if(header.PreviewLargeOffsetAddress > 0) { FSeek(header.PreviewLargeOffsetAddress); PREVIEW previewLarge ; } if(header.PreviewSmallOffsetAddress > 0) { FSeek(header.PreviewSmallOffsetAddress); PREVIEW previewSmall ; } if(header.MachineNameAddress > 0 && header.MachineNameSize > 0) { FSeek(header.MachineNameAddress); char MachineName[header.MachineNameSize] ; } struct LAYER_DATA { float PositionZ ; float Exposure ; float LightOffSeconds ; uint DataAddress ; uint DataSize ; uint PageNumber ; uint Unknown ; uint Unknown ; uint Unknown ; }; typedef struct(int size) { ubyte layerDataBlock[size] ; } LAYER_RLE; FSeek(header.LayersDefinitionOffsetAddress); struct LAYERS { local int i = 0; local uint currentPos; for( i = 0; i < header.LayerCount; i++ ){ LAYER_DATA layerData ; currentPos = FTell(); FSeek(layerData.PageNumber * 4294967296 + layerData.DataAddress); LAYER_RLE layerRLE(layerData.DataSize); FSeek(currentPos); } } layers;