#ifndef DOC_OUTPUT_H
#define DOC_OUTPUT_H
#include <memory>
struct DocImage;
// Messy
#include "hpdf.h"
class DocOutputPage
{
public:
DocOutputPage(void*);
~DocOutputPage();
HPDF_Page page(); // TODO: remove need for this
float width();
float height();
float textWidth(const char* str);
void setColor(float, float, float);
void setColor(unsigned int color);
void setFontSize(int font, float size);
void drawText(float x, float y, const char* str);
void drawLine(float x1, float y1, float x2, float y2);
void drawRect(float x1, float y1, float w, float h);
void drawImage(DocImage& img, float x1, float y1, float w, float h);
void drawImage(const char* fileName, float x1, float y1, float w, float h);
void drawCircle(float x, float y, float radius);
private:
struct Pimpl;
std::unique_ptr<Pimpl> m_pimpl;
};
class DocOutputDevice
{
public:
DocOutputDevice();
~DocOutputDevice();
DocImage& loadImage(const char* fileName);
void freeImage(DocImage& image);
DocOutputPage* newPage();
void finalize(char* outputBuffer, size_t* size);
void finalize(const char* outputFileName);
private:
struct Pimpl;
std::unique_ptr<Pimpl> m_pimpl;
};
#endif // DOC_OUTPUT_H