17 static std::string_view ToString(T value)
20 static_assert(always_false<T>,
"Unsupported type");
24 static bool TryParse(
const std::string_view& str, T& value)
28 static_assert(always_false<T>,
"Unsupported type");
41 case PdfColorSpaceType::DeviceGray:
42 return "DeviceGray"sv;
43 case PdfColorSpaceType::DeviceRGB:
45 case PdfColorSpaceType::DeviceCMYK:
46 return "DeviceCMYK"sv;
47 case PdfColorSpaceType::CalGray:
49 case PdfColorSpaceType::CalRGB:
53 case PdfColorSpaceType::ICCBased:
55 case PdfColorSpaceType::Indexed:
57 case PdfColorSpaceType::Pattern:
59 case PdfColorSpaceType::Separation:
60 return "Separation"sv;
61 case PdfColorSpaceType::DeviceN:
63 case PdfColorSpaceType::Unknown:
71 if (str ==
"DeviceGray")
73 value = PdfColorSpaceType::DeviceGray;
76 else if (str ==
"DeviceRGB")
78 value = PdfColorSpaceType::DeviceRGB;
81 else if (str ==
"DeviceCMYK")
83 value = PdfColorSpaceType::DeviceCMYK;
86 else if (str ==
"CalGray")
88 value = PdfColorSpaceType::CalGray;
91 else if (str ==
"CalRGB")
93 value = PdfColorSpaceType::CalRGB;
96 else if (str ==
"Lab")
101 else if (str ==
"ICCBased")
103 value = PdfColorSpaceType::ICCBased;
106 else if (str ==
"Indexed")
108 value = PdfColorSpaceType::Indexed;
111 else if (str ==
"Pattern")
113 value = PdfColorSpaceType::Pattern;
116 else if (str ==
"Separation")
118 value = PdfColorSpaceType::Separation;
121 else if (str ==
"DeviceN")
123 value = PdfColorSpaceType::DeviceN;
139 case PdfAnnotationType::Text:
141 case PdfAnnotationType::Link:
143 case PdfAnnotationType::FreeText:
145 case PdfAnnotationType::Line:
147 case PdfAnnotationType::Square:
149 case PdfAnnotationType::Circle:
151 case PdfAnnotationType::Polygon:
153 case PdfAnnotationType::PolyLine:
155 case PdfAnnotationType::Highlight:
156 return "Highlight"sv;
157 case PdfAnnotationType::Underline:
158 return "Underline"sv;
159 case PdfAnnotationType::Squiggly:
161 case PdfAnnotationType::StrikeOut:
162 return "StrikeOut"sv;
163 case PdfAnnotationType::Stamp:
165 case PdfAnnotationType::Caret:
167 case PdfAnnotationType::Ink:
169 case PdfAnnotationType::Popup:
171 case PdfAnnotationType::FileAttachement:
172 return "FileAttachment"sv;
173 case PdfAnnotationType::Sound:
175 case PdfAnnotationType::Movie:
177 case PdfAnnotationType::Widget:
179 case PdfAnnotationType::Screen:
181 case PdfAnnotationType::PrinterMark:
182 return "PrinterMark"sv;
183 case PdfAnnotationType::TrapNet:
185 case PdfAnnotationType::Watermark:
186 return "Watermark"sv;
187 case PdfAnnotationType::Model3D:
189 case PdfAnnotationType::RichMedia:
190 return "RichMedia"sv;
191 case PdfAnnotationType::WebMedia:
193 case PdfAnnotationType::Redact:
195 case PdfAnnotationType::Projection:
196 return "Projection"sv;
207 value = PdfAnnotationType::Text;
210 else if (str ==
"Link"sv)
212 value = PdfAnnotationType::Link;
215 else if (str ==
"FreeText"sv)
217 value = PdfAnnotationType::FreeText;
220 else if (str ==
"Line"sv)
222 value = PdfAnnotationType::Line;
225 else if (str ==
"Square"sv)
227 value = PdfAnnotationType::Square;
230 else if (str ==
"Circle"sv)
232 value = PdfAnnotationType::Circle;
235 else if (str ==
"Polygon"sv)
237 value = PdfAnnotationType::Polygon;
240 else if (str ==
"PolyLine"sv)
242 value = PdfAnnotationType::PolyLine;
245 else if (str ==
"Highlight"sv)
247 value = PdfAnnotationType::Highlight;
250 else if (str ==
"Underline"sv)
252 value = PdfAnnotationType::Underline;
255 else if (str ==
"Squiggly"sv)
257 value = PdfAnnotationType::Squiggly;
260 else if (str ==
"StrikeOut"sv)
262 value = PdfAnnotationType::StrikeOut;
265 else if (str ==
"Stamp"sv)
267 value = PdfAnnotationType::Stamp;
270 else if (str ==
"Caret"sv)
272 value = PdfAnnotationType::Caret;
275 else if (str ==
"Ink"sv)
277 value = PdfAnnotationType::Ink;
280 else if (str ==
"Popup"sv)
282 value = PdfAnnotationType::Popup;
285 else if (str ==
"FileAttachment"sv)
287 value = PdfAnnotationType::FileAttachement;
290 else if (str ==
"Sound"sv)
292 value = PdfAnnotationType::Sound;
295 else if (str ==
"Movie"sv)
297 value = PdfAnnotationType::Movie;
300 else if (str ==
"Widget"sv)
302 value = PdfAnnotationType::Widget;
305 else if (str ==
"Screen"sv)
307 value = PdfAnnotationType::Screen;
310 else if (str ==
"PrinterMark"sv)
312 value = PdfAnnotationType::PrinterMark;
315 else if (str ==
"TrapNet"sv)
317 value = PdfAnnotationType::TrapNet;
320 else if (str ==
"Watermark"sv)
322 value = PdfAnnotationType::Watermark;
325 else if (str ==
"3D"sv)
327 value = PdfAnnotationType::Model3D;
330 else if (str ==
"RichMedia"sv)
332 value = PdfAnnotationType::RichMedia;
335 else if (str ==
"WebMedia"sv)
337 value = PdfAnnotationType::WebMedia;
340 else if (str ==
"Redact"sv)
342 value = PdfAnnotationType::Redact;
345 else if (str ==
"Projection"sv)
347 value = PdfAnnotationType::Projection;
365 case PdfRenderingIntent::AbsoluteColorimetric:
366 return "AbsoluteColorimetric"sv;
367 case PdfRenderingIntent::RelativeColorimetric:
368 return "RelativeColorimetric"sv;
369 case PdfRenderingIntent::Perceptual:
370 return "Perceptual"sv;
371 case PdfRenderingIntent::Saturation:
372 return "Saturation"sv;
373 case PdfRenderingIntent::Unknown:
381 if (str ==
"AbsoluteColorimetric")
383 value = PdfRenderingIntent::AbsoluteColorimetric;
386 else if (str ==
"RelativeColorimetric")
388 value = PdfRenderingIntent::RelativeColorimetric;
391 else if (str ==
"Perceptual")
393 value = PdfRenderingIntent::Perceptual;
396 else if (str ==
"Saturation")
398 value = PdfRenderingIntent::Saturation;
414 case PdfBlendMode::Normal:
416 case PdfBlendMode::Multiply:
418 case PdfBlendMode::Screen:
420 case PdfBlendMode::Overlay:
422 case PdfBlendMode::Darken:
424 case PdfBlendMode::Lighten:
426 case PdfBlendMode::ColorDodge:
427 return "ColorDodge"sv;
428 case PdfBlendMode::ColorBurn:
429 return "ColorBurn"sv;
430 case PdfBlendMode::HardLight:
431 return "HardLight"sv;
432 case PdfBlendMode::SoftLight:
433 return "SoftLight"sv;
434 case PdfBlendMode::Difference:
435 return "Difference"sv;
436 case PdfBlendMode::Exclusion:
437 return "Exclusion"sv;
438 case PdfBlendMode::Hue:
440 case PdfBlendMode::Saturation:
441 return "Saturation"sv;
442 case PdfBlendMode::Color:
444 case PdfBlendMode::Luminosity:
445 return "Luminosity"sv;
446 case PdfBlendMode::Unknown:
452 static bool TryParse(
const std::string_view& str,
PdfBlendMode& value)
456 value = PdfBlendMode::Normal;
459 else if (str ==
"Multiply")
461 value = PdfBlendMode::Multiply;
464 else if (str ==
"Screen")
466 value = PdfBlendMode::Screen;
469 else if (str ==
"Overlay")
471 value = PdfBlendMode::Overlay;
474 else if (str ==
"Darken")
476 value = PdfBlendMode::Darken;
479 else if (str ==
"Lighten")
481 value = PdfBlendMode::Lighten;
484 else if (str ==
"ColorDodge")
486 value = PdfBlendMode::ColorDodge;
489 else if (str ==
"ColorBurn")
491 value = PdfBlendMode::ColorBurn;
494 else if (str ==
"HardLight")
496 value = PdfBlendMode::HardLight;
499 else if (str ==
"SoftLight")
501 value = PdfBlendMode::SoftLight;
504 else if (str ==
"Difference")
506 value = PdfBlendMode::Difference;
509 else if (str ==
"Exclusion")
511 value = PdfBlendMode::Exclusion;
514 else if (str ==
"Hue")
516 value = PdfBlendMode::Hue;
519 else if (str ==
"Saturation")
521 value = PdfBlendMode::Saturation;
524 else if (str ==
"Color")
526 value = PdfBlendMode::Color;
529 else if (str ==
"Luminosity")
531 value = PdfBlendMode::Luminosity;
542 static std::string_view ToString(
PdfOperator value)
557 case PdfOperator::ri:
561 case PdfOperator::gs:
567 case PdfOperator::cm:
581 case PdfOperator::re:
591 case PdfOperator::f_Star:
595 case PdfOperator::B_Star:
599 case PdfOperator::b_Star:
605 case PdfOperator::W_Star:
607 case PdfOperator::BT:
609 case PdfOperator::ET:
611 case PdfOperator::Tc:
613 case PdfOperator::Tw:
615 case PdfOperator::Tz:
617 case PdfOperator::TL:
619 case PdfOperator::Tf:
621 case PdfOperator::Tr:
623 case PdfOperator::Ts:
625 case PdfOperator::Td:
627 case PdfOperator::TD:
629 case PdfOperator::Tm:
631 case PdfOperator::T_Star:
633 case PdfOperator::Tj:
635 case PdfOperator::TJ:
637 case PdfOperator::Quote:
639 case PdfOperator::DoubleQuote:
641 case PdfOperator::d0:
643 case PdfOperator::d1:
645 case PdfOperator::CS:
647 case PdfOperator::cs:
649 case PdfOperator::SC:
651 case PdfOperator::SCN:
653 case PdfOperator::sc:
655 case PdfOperator::scn:
661 case PdfOperator::RG:
663 case PdfOperator::rg:
669 case PdfOperator::sh:
671 case PdfOperator::BI:
673 case PdfOperator::ID:
675 case PdfOperator::EI:
677 case PdfOperator::Do:
679 case PdfOperator::MP:
681 case PdfOperator::DP:
683 case PdfOperator::BMC:
685 case PdfOperator::BDC:
687 case PdfOperator::EMC:
689 case PdfOperator::BX:
691 case PdfOperator::EX:
693 case PdfOperator::Unknown:
699 static bool TryParse(
const std::string_view& str,
PdfOperator& value)
703 value = PdfOperator::w;
708 value = PdfOperator::J;
713 value = PdfOperator::j;
718 value = PdfOperator::M;
723 value = PdfOperator::d;
726 else if (str ==
"ri")
728 value = PdfOperator::ri;
733 value = PdfOperator::i;
736 else if (str ==
"gs")
738 value = PdfOperator::gs;
743 value = PdfOperator::q;
748 value = PdfOperator::Q;
751 else if (str ==
"cm")
753 value = PdfOperator::cm;
758 value = PdfOperator::m;
763 value = PdfOperator::l;
768 value = PdfOperator::c;
773 value = PdfOperator::v;
778 value = PdfOperator::y;
783 value = PdfOperator::h;
786 else if (str ==
"re")
788 value = PdfOperator::re;
793 value = PdfOperator::S;
798 value = PdfOperator::s;
803 value = PdfOperator::f;
808 value = PdfOperator::F;
811 else if (str ==
"f*")
813 value = PdfOperator::f_Star;
818 value = PdfOperator::B;
821 else if (str ==
"B*")
823 value = PdfOperator::B_Star;
828 value = PdfOperator::b;
831 else if (str ==
"b*")
833 value = PdfOperator::b_Star;
838 value = PdfOperator::n;
843 value = PdfOperator::W;
846 else if (str ==
"W*")
848 value = PdfOperator::W_Star;
851 else if (str ==
"BT")
853 value = PdfOperator::BT;
856 else if (str ==
"ET")
858 value = PdfOperator::ET;
861 else if (str ==
"Tc")
863 value = PdfOperator::Tc;
866 else if (str ==
"Tw")
868 value = PdfOperator::Tw;
871 else if (str ==
"Tz")
873 value = PdfOperator::Tz;
876 else if (str ==
"TL")
878 value = PdfOperator::TL;
881 else if (str ==
"Tf")
883 value = PdfOperator::Tf;
886 else if (str ==
"Tr")
888 value = PdfOperator::Tr;
891 else if (str ==
"Ts")
893 value = PdfOperator::Ts;
896 else if (str ==
"Td")
898 value = PdfOperator::Td;
901 else if (str ==
"TD")
903 value = PdfOperator::TD;
906 else if (str ==
"Tm")
908 value = PdfOperator::Tm;
911 else if (str ==
"T*")
913 value = PdfOperator::T_Star;
916 else if (str ==
"Tj")
918 value = PdfOperator::Tj;
921 else if (str ==
"TJ")
923 value = PdfOperator::TJ;
928 value = PdfOperator::Quote;
931 else if (str ==
"\"")
933 value = PdfOperator::DoubleQuote;
936 else if (str ==
"d0")
938 value = PdfOperator::d0;
941 else if (str ==
"d1")
943 value = PdfOperator::d1;
946 else if (str ==
"CS")
948 value = PdfOperator::CS;
951 else if (str ==
"cs")
953 value = PdfOperator::cs;
956 else if (str ==
"SC")
958 value = PdfOperator::SC;
961 else if (str ==
"SCN")
963 value = PdfOperator::SCN;
966 else if (str ==
"sc")
968 value = PdfOperator::sc;
971 else if (str ==
"scn")
973 value = PdfOperator::scn;
978 value = PdfOperator::G;
983 value = PdfOperator::g;
986 else if (str ==
"RG")
988 value = PdfOperator::RG;
991 else if (str ==
"rg")
993 value = PdfOperator::rg;
998 value = PdfOperator::K;
1001 else if (str ==
"k")
1003 value = PdfOperator::k;
1006 else if (str ==
"sh")
1008 value = PdfOperator::sh;
1011 else if (str ==
"BI")
1013 value = PdfOperator::BI;
1016 else if (str ==
"ID")
1018 value = PdfOperator::ID;
1021 else if (str ==
"EI")
1023 value = PdfOperator::EI;
1026 else if (str ==
"Do")
1028 value = PdfOperator::Do;
1031 else if (str ==
"MP")
1033 value = PdfOperator::MP;
1036 else if (str ==
"DP")
1038 value = PdfOperator::DP;
1041 else if (str ==
"BMC")
1043 value = PdfOperator::BMC;
1046 else if (str ==
"BDC")
1048 value = PdfOperator::BDC;
1051 else if (str ==
"EMC")
1053 value = PdfOperator::EMC;
1056 else if (str ==
"BX")
1058 value = PdfOperator::BX;
1061 else if (str ==
"EX")
1063 value = PdfOperator::EX;
1068 value = PdfOperator::Unknown;
1075 struct Convert<PdfALevel>
1077 static std::string_view ToString(PdfALevel value)
1079 using namespace std;
1082 case PdfALevel::L1B:
1084 case PdfALevel::L1A:
1086 case PdfALevel::L2B:
1088 case PdfALevel::L2A:
1090 case PdfALevel::L2U:
1092 case PdfALevel::L3B:
1094 case PdfALevel::L3A:
1096 case PdfALevel::L3U:
1100 case PdfALevel::L4E:
1102 case PdfALevel::L4F:
1109 static bool TryParse(
const std::string_view& str, PdfALevel& value)
1113 value = PdfALevel::L1B;
1116 else if (str ==
"L1A")
1118 value = PdfALevel::L1A;
1121 else if (str ==
"L2B")
1123 value = PdfALevel::L2B;
1126 else if (str ==
"L2A")
1128 value = PdfALevel::L2A;
1131 else if (str ==
"L2U")
1133 value = PdfALevel::L2U;
1136 else if (str ==
"L3B")
1138 value = PdfALevel::L3B;
1141 else if (str ==
"L3A")
1143 value = PdfALevel::L3A;
1146 else if (str ==
"L3U")
1148 value = PdfALevel::L3U;
1151 else if (str ==
"L4")
1153 value = PdfALevel::L4;
1156 else if (str ==
"L4E")
1158 value = PdfALevel::L4E;
1161 else if (str ==
"L4F")
1163 value = PdfALevel::L4F;
1172 struct Convert<PdfUALevel>
1174 static std::string_view ToString(PdfUALevel value)
1176 using namespace std;
1179 case PdfUALevel::L1:
1181 case PdfUALevel::L2:
1188 static bool TryParse(
const std::string_view& str, PdfUALevel& value)
1192 value = PdfUALevel::L1;
1195 else if (str ==
"L2")
1197 value = PdfUALevel::L2;
1205 template<
typename T>
1206 std::string_view ToString(T value)
1208 return Convert<T>::ToString(value);
1211 template<
typename T>
1212 bool TryConvertTo(
const std::string_view& str, T& value)
1215 return Convert<T>::TryParse(str, value);
1218 template<
typename T>
1219 T ConvertTo(
const std::string_view& str)
1222 if (!Convert<T>::TryParse(str, value))
SPDX-FileCopyrightText: (C) 2006 Dominik Seichter domseichter@web.de SPDX-FileCopyrightText: (C) 2020...
SPDX-FileCopyrightText: (C) 2022 Francesco Pretto ceztko@gmail.com SPDX-License-Identifier: LGPL-2....
Definition basetypes.h:16
PdfAnnotationType
The type of the annotation.
Definition PdfDeclarations.h:595
PdfBlendMode
List of defined transparency blending modes.
Definition PdfDeclarations.h:836
PdfRenderingIntent
List of defined Rendering intents.
Definition PdfDeclarations.h:824
@ InvalidEnumValue
An invalid enum value was specified.
PdfOperator
List of PDF stream content operators.
Definition PdfDeclarations.h:726
PdfColorSpaceType
Enum for the colorspaces supported by PDF.
Definition PdfDeclarations.h:359