* Copyright 2013, Gerasim Troeglazov, 3dEyes@gmail.com. All rights reserved.
* Distributed under the terms of the MIT License.
*/
#ifndef PSD_WRITER_H
#define PSD_WRITER_H
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
#include <Translator.h>
#include <TranslatorFormats.h>
#include <TranslationDefs.h>
#include <GraphicsDefs.h>
#include <InterfaceDefs.h>
#include <String.h>
#include <DataIO.h>
#include <File.h>
#include <ByteOrder.h>
#include <List.h>
#include "PSDLoader.h"
#include "DataArray.h"
class PSDWriter {
public:
PSDWriter(BPositionIO *stream);
~PSDWriter();
bool IsReady(void);
void SetCompression(int16 compression);
void SetVersion(int16 version);
status_t Encode(BPositionIO *target);
private:
void _WriteInt64ToStream(BPositionIO *stream, int64);
void _WriteUInt64ToStream(BPositionIO *stream, uint64);
void _WriteInt32ToStream(BPositionIO *stream, int32);
void _WriteUInt32ToStream(BPositionIO *stream, uint32);
void _WriteInt16ToStream(BPositionIO *stream, int16);
void _WriteUInt16ToStream(BPositionIO *stream, uint16);
void _WriteInt8ToStream(BPositionIO *stream, int8);
void _WriteUInt8ToStream(BPositionIO *stream, uint8);
void _WriteFillBlockToStream(BPositionIO *stream,
uint8 val, size_t count);
void _WriteBlockToStream(BPositionIO *stream,
uint8 *block, size_t count);
BDataArray* _PackBits(uint8 *buff, int32 len);
status_t _LoadChannelsFromRGBA32(void);
BPositionIO *fStream;
size_t fBitmapDataPos;
BDataArray psdChannel[4];
BDataArray psdByteCounts[4];
color_space fColorSpace;
int32 fInRowBytes;
int16 fChannels;
int16 fAlphaChannel;
int32 fWidth;
int32 fHeight;
int16 fCompression;
int16 fVersion;
bool fReady;
};
#endif