aboutsummaryrefslogtreecommitdiffstats
path: root/libqpdf/QPDFObjectHandle.cc
diff options
context:
space:
mode:
authorJay Berkenbilt <ejb@ql.org>2018-12-25 01:29:30 +0100
committerJay Berkenbilt <ejb@ql.org>2019-01-01 05:02:43 +0100
commit5059ec0d35547c0b3328c3089221b7cb3c3ac45d (patch)
tree79c93c72f424ef640f83f80d0c2f2d269cf9e2e3 /libqpdf/QPDFObjectHandle.cc
parentdaeb5a85b6ded478aaac942c439ef5fd6bb8874f (diff)
downloadqpdf-5059ec0d35547c0b3328c3089221b7cb3c3ac45d.tar.zst
Add Matrix class under QPDFObjectHandle
Diffstat (limited to 'libqpdf/QPDFObjectHandle.cc')
-rw-r--r--libqpdf/QPDFObjectHandle.cc55
1 files changed, 55 insertions, 0 deletions
diff --git a/libqpdf/QPDFObjectHandle.cc b/libqpdf/QPDFObjectHandle.cc
index d0373d63..51df113c 100644
--- a/libqpdf/QPDFObjectHandle.cc
+++ b/libqpdf/QPDFObjectHandle.cc
@@ -575,6 +575,26 @@ QPDFObjectHandle::isRectangle()
return true;
}
+bool
+QPDFObjectHandle::isMatrix()
+{
+ if (! isArray())
+ {
+ return false;
+ }
+ if (getArrayNItems() != 6)
+ {
+ return false;
+ }
+ for (size_t i = 0; i < 6; ++i)
+ {
+ if (! getArrayItem(i).isNumber())
+ {
+ return false;
+ }
+ }
+ return true;
+}
QPDFObjectHandle::Rectangle
QPDFObjectHandle::getArrayAsRectangle()
@@ -590,6 +610,22 @@ QPDFObjectHandle::getArrayAsRectangle()
return result;
}
+QPDFObjectHandle::Matrix
+QPDFObjectHandle::getArrayAsMatrix()
+{
+ Matrix result;
+ if (isMatrix())
+ {
+ result = Matrix(getArrayItem(0).getNumericValue(),
+ getArrayItem(1).getNumericValue(),
+ getArrayItem(2).getNumericValue(),
+ getArrayItem(3).getNumericValue(),
+ getArrayItem(4).getNumericValue(),
+ getArrayItem(5).getNumericValue());
+ }
+ return result;
+}
+
std::vector<QPDFObjectHandle>
QPDFObjectHandle::getArrayAsVector()
{
@@ -1931,12 +1967,31 @@ QPDFObjectHandle::newArray(Rectangle const& rect)
}
QPDFObjectHandle
+QPDFObjectHandle::newArray(Matrix const& matrix)
+{
+ std::vector<QPDFObjectHandle> items;
+ items.push_back(newReal(matrix.a));
+ items.push_back(newReal(matrix.b));
+ items.push_back(newReal(matrix.c));
+ items.push_back(newReal(matrix.d));
+ items.push_back(newReal(matrix.e));
+ items.push_back(newReal(matrix.f));
+ return newArray(items);
+}
+
+QPDFObjectHandle
QPDFObjectHandle::newFromRectangle(Rectangle const& rect)
{
return newArray(rect);
}
QPDFObjectHandle
+QPDFObjectHandle::newFromMatrix(Matrix const& rect)
+{
+ return newArray(rect);
+}
+
+QPDFObjectHandle
QPDFObjectHandle::newDictionary()
{
return newDictionary(std::map<std::string, QPDFObjectHandle>());