Files
pdf/engine/include/pdfengine/content_object.hpp
T

63 lines
1.4 KiB
C++

#pragma once
#include <string>
#include <vector>
#include <memory>
#include <pdfengine/graphics_state.hpp>
namespace pdfengine {
enum class ContentObjectType {
Text,
Path,
Image,
Unknown
};
enum class XObjectType {
Image,
Form,
Pattern,
Unknown
};
class ContentObject {
public:
virtual ~ContentObject() = default;
virtual ContentObjectType getType() const = 0;
};
class TextObject : public ContentObject {
public:
ContentObjectType getType() const override { return ContentObjectType::Text; }
std::string text; // The decoded text string
std::string fontName; // Font resource name (e.g. "F1")
double fontSize = 0.0; // Font size
// Text Transformation Matrix (a, b, c, d, e, f)
// Default is identity matrix: [1 0 0 1 0 0]
double tm[6] = {1.0, 0.0, 0.0, 1.0, 0.0, 0.0};
};
class ImageObject : public ContentObject {
public:
ContentObjectType getType() const override { return ContentObjectType::Image; }
std::string name;
int width = 0;
int height = 0;
std::string colorSpace;
std::string filter;
int bitsPerComponent = 8;
bool hasSoftMask = false;
// Decoded raw pixels (RGBA format for Skia)
std::vector<uint8_t> pixelData;
// The Current Transformation Matrix (CTM) at the time the 'Do' operator was invoked
Matrix transform;
};
} // namespace pdfengine