Krita Source Code Documentation
Loading...
Searching...
No Matches
psd.h
Go to the documentation of this file.
1/*
2 * SPDX-FileCopyrightText: 2010 Boudewijn Rempt <boud@valdyas.org>
3 * SPDX-FileCopyrightText: 2021 L. E. Segovia <amy@amyspark.me>
4 *
5 * SPDX-License-Identifier: GPL-2.0-or-later
6 */
7/*
8 * Constants and defines taken from gimp and psdparse
9 */
10#ifndef PSD_H
11#define PSD_H
12
13#include "kritapsdutils_export.h"
14
15#include <QPair>
16#include <QString>
17#include <QVector>
18#include <cstdint>
19
20#include <KoColor.h>
23#include <KoPattern.h>
26
27const int MAX_CHANNELS = 56;
28
29const int MAX_PSD_SIZE = 30000;
30
31typedef qint32 Fixed; /* Represents a fixed point implied decimal */
32
33enum class psd_byte_order : std::uint_least8_t {
34 psdBigEndian = 0,
37};
38
46
67
69 QString type;
70 QString md5;
71 QString filename;
72 QString name;
73};
74
79{
98}
99
100// EFFECTS
108
114
120
122
128
133
141
143
145
146// GRADIENT MAP
147// Each color stop
149 qint32 location; // Location of color stop
150 qint32 midpoint; // Midpoint of color stop
153};
154
155// Each transparency stop
157 qint32 location; // Location of transparency stop
158 qint32 midpoint; // Midpoint of transparency stop
159 qint8 opacity; // Opacity of transparency stop
160};
161
162// Gradient settings (Photoshop 6.0)
164 bool reverse; // Is gradient reverse
165 bool dithered; // Is gradient dithered
167 quint16 *name; // Name of the gradient: Unicode string, padded
168 qint8 number_color_stops; // Number of color stops to follow
170 qint8 number_transparency_stops; // Number of transparency stops to follow
172 qint8 expansion_count; // Expansion count ( = 2 for Photoshop 6.0)
173 qint8 interpolation; // Interpolation if length above is non-zero
174 qint8 length; // Length (= 32 for Photoshop 6.0)
175 qint8 mode; // Mode for this gradient
176 qint32 random_number_seed; // Random number seed
177 qint8 showing_transparency_flag; // Flag for showing transparency
178 qint8 using_vector_color_flag; // Flag for using vector color
179 qint32 roughness_factor; // Roughness factor
180 QColor min_color;
181 QColor max_color;
182 QColor lookup_table[256];
183};
184
188 quint16 *name; // Name of the gradient: Unicode string, padded
189 qint8 number_color_stops; // Number of color stops to follow
191 qint8 number_transparency_stops; // Number of transparency stops to follow
193};
194
196 psd_color_mode color_mode = Bitmap; // The image mode of the file.
197 quint8 height = 0; // Point: vertical, 2 bytes and horizontal, 2 bytes
198 quint8 width = 0;
199 QString name;
200 QString uuid;
201 qint32 version = 0;
202 quint8 top = 0; // Rectangle: top, left, bottom, right
203 quint8 left = 0;
204 quint8 bottom = 0;
205 quint8 right = 0;
206 qint32 max_channel = 0; // Max channels
207 qint32 channel_number = 0;
209};
210
219
220#define PSD_LOOKUP_TABLE_SIZE 256
221
222// dsdw, isdw: https://www.adobe.com/devnet-apps/photoshop/fileformatashtml/PhotoshopFileFormats.htm#50577409_22203
223class KRITAPSDUTILS_EXPORT psd_layer_effects_shadow_base
224{
225public:
227 : m_invertsSelection(false)
228 , m_edgeHidden(true)
229 , m_effectEnabled(false)
230 , m_blendMode(COMPOSITE_MULT)
231 , m_color(KoColor::fromXML("<color channeldepth='U8'><sRGB r='0.0' g='0.0' b='0.0'/></color>"))
232 , m_nativeColor(KoColor::fromXML("<color channeldepth='U8'><sRGB r='0.0' g='0.0' b='0.0'/></color>"))
233 , m_opacity(75)
234 , m_angle(120)
235 , m_useGlobalLight(true)
236 , m_distance(21)
237 , m_spread(0)
238 , m_size(21)
239 , m_antiAliased(0)
240 , m_noise(0)
241 , m_knocksOut(false)
242 , m_fillType(psd_fill_solid_color)
243 , m_technique(psd_technique_softer)
244 , m_range(100)
245 , m_jitter(0)
246 {
247 for (int i = 0; i < PSD_LOOKUP_TABLE_SIZE; ++i) {
248 m_contourLookupTable[i] = i;
249 }
250 }
251
253
254 QPoint calculateOffset(const psd_layer_effects_context *context) const;
255
257 {
258 m_effectEnabled = value;
259 }
260
261 bool effectEnabled() const
262 {
263 return m_effectEnabled;
264 }
265
266 QString blendMode() const
267 {
268 return m_blendMode;
269 }
270
272 {
273 return m_color;
274 }
275
277 {
278 return m_nativeColor;
279 }
280
281 qint32 opacity() const
282 {
283 return m_opacity;
284 }
285
286 qint32 angle() const
287 {
288 return m_angle;
289 }
290
291 bool useGlobalLight() const
292 {
293 return m_useGlobalLight;
294 }
295
296 qint32 distance() const
297 {
298 return m_distance;
299 }
300
301 qint32 spread() const
302 {
303 return m_spread;
304 }
305
306 qint32 size() const
307 {
308 return m_size;
309 }
310
311 const quint8 *contourLookupTable() const
312 {
313 return m_contourLookupTable;
314 }
315
316 bool antiAliased() const
317 {
318 return m_antiAliased;
319 }
320
321 qint32 noise() const
322 {
323 return m_noise;
324 }
325
326 bool knocksOut() const
327 {
328 return m_knocksOut;
329 }
330
331 bool invertsSelection() const
332 {
333 return m_invertsSelection;
334 }
335
336 bool edgeHidden() const
337 {
338 return m_edgeHidden;
339 }
340
342 {
343 return m_fillType;
344 }
345
347 {
348 return m_technique;
349 }
350
351 qint32 range() const
352 {
353 return m_range;
354 }
355
356 qint32 jitter() const
357 {
358 return m_jitter;
359 }
360
362 return m_gradientLink;
363 }
364
366 {
367 auto source = resourcesInterface->source<KoAbstractGradient>(m_gradientLink.type);
368 return source.bestMatch(m_gradientLink.md5sum, m_gradientLink.filename, m_gradientLink.name);
369 }
370
371public:
372 void setBlendMode(QString value)
373 {
374 m_blendMode = value;
375 }
376
378 {
379 m_color = value;
380 }
381
383 {
384 m_nativeColor = value;
385 }
386
387 void setOpacity(qint32 value)
388 {
389 m_opacity = value;
390 }
391
392 void setAngle(qint32 value)
393 {
394 m_angle = value;
395 }
396
398 {
399 m_useGlobalLight = value;
400 }
401
402 void setDistance(qint32 value)
403 {
404 m_distance = value;
405 }
406
407 void setSpread(qint32 value)
408 {
409 m_spread = value;
410 }
411
412 void setSize(qint32 value)
413 {
414 m_size = value;
415 }
416
417 void setContourLookupTable(const quint8 *value)
418 {
419 memcpy(m_contourLookupTable, value, PSD_LOOKUP_TABLE_SIZE * sizeof(quint8));
420 }
421
423 {
424 m_antiAliased = value;
425 }
426
427 void setNoise(qint32 value)
428 {
429 m_noise = value;
430 }
431
433 {
434 m_knocksOut = value;
435 }
436
438 {
439 m_invertsSelection = value;
440 }
441
443 {
444 m_edgeHidden = value;
445 }
446
448 {
449 m_fillType = value;
450 }
451
453 {
454 m_technique = value;
455 }
456
457 void setRange(qint32 value)
458 {
459 m_range = value;
460 }
461
462 void setJitter(qint32 value)
463 {
464 m_jitter = value;
465 }
466
468 {
469 m_gradientLink.type = value->resourceType().first;
470 m_gradientLink.md5sum = value->md5Sum();
471 m_gradientLink.filename = value->filename();
472 m_gradientLink.name = value->name();
473 }
474
475 virtual void scaleLinearSizes(qreal scale);
476
477private:
478 // internal
481
482private:
483 bool m_effectEnabled; // Effect enabled
484
485 QString m_blendMode; // already in Krita format!
488 qint32 m_opacity; // Opacity as a percent (0...100)
489 qint32 m_angle; // Angle in degrees
490 bool m_useGlobalLight; // Use this angle in all of the layer effects
491 qint32 m_distance; // Distance in pixels
492 qint32 m_spread; // Intensity as a percent
493 qint32 m_size; // Blur value in pixels
494
495 quint8 m_contourLookupTable[PSD_LOOKUP_TABLE_SIZE];
497 qint32 m_noise;
499
500 // for Outer/Inner Glow
503 qint32 m_range;
504 qint32 m_jitter;
506};
507
509{
510public:
514
515 // using psd_layer_effects_shadow_base::setBlendMode;
516 // using psd_layer_effects_shadow_base::setColor;
517 // using psd_layer_effects_shadow_base::setOpacity;
518 // using psd_layer_effects_shadow_base::setAngle;
519 // using psd_layer_effects_shadow_base::setUseGlobalLight;
520 // using psd_layer_effects_shadow_base::setDistance;
521 // using psd_layer_effects_shadow_base::setSpread;
522 // using psd_layer_effects_shadow_base::setSize;
523 // using psd_layer_effects_shadow_base::setContourLookupTable;
524 // using psd_layer_effects_shadow_base::setAntiAliased;
525 // using psd_layer_effects_shadow_base::setNoise;
526
528};
529
531{
532public:
536
537 // using psd_layer_effects_shadow_base::setKnocksOut;
539};
540
541// isdw: https://www.adobe.com/devnet-apps/photoshop/fileformatashtml/PhotoshopFileFormats.htm#50577409_22203
543{
544public:
546 {
547 setKnocksOut(false);
548 setInvertsSelection(true);
549 setEdgeHidden(false);
550 }
551
553};
554
556{
557public:
559 {
560 setKnocksOut(true);
561 setDistance(0);
562 setBlendMode(COMPOSITE_LINEAR_DODGE);
563 setColor(KoColor::fromXML("<color channeldepth='U8'><sRGB r='1.0' g='1.0' b='1.0'/></color>"));
564 }
569
570 // using psd_layer_effects_shadow_base::setBlendMode;
571 // using psd_layer_effects_shadow_base::setColor;
572 // using psd_layer_effects_shadow_base::setOpacity;
573
574 // using psd_layer_effects_shadow_base::setSpread;
575 // using psd_layer_effects_shadow_base::setSize;
576 // using psd_layer_effects_shadow_base::setContourLookupTable;
577 // using psd_layer_effects_shadow_base::setAntiAliased;
578 // using psd_layer_effects_shadow_base::setNoise;
579
580 // using psd_layer_effects_shadow_base::setFillType;
581 // using psd_layer_effects_shadow_base::setTechnique;
582 // using psd_layer_effects_shadow_base::setRange;
583 // using psd_layer_effects_shadow_base::setJitter;
584 // using psd_layer_effects_shadow_base::setGradient;
585};
586
587// oglw: https://www.adobe.com/devnet-apps/photoshop/fileformatashtml/PhotoshopFileFormats.htm#50577409_25738
589{
590public:
592};
593
594// iglw: https://www.adobe.com/devnet-apps/photoshop/fileformatashtml/PhotoshopFileFormats.htm#50577409_27692
596{
597public:
599 : m_source(psd_glow_edge)
600 {
601 setInvertsSelection(true);
602 setEdgeHidden(false);
603 setKnocksOut(false);
604 }
605
607 {
608 return m_source;
609 }
611 {
612 m_source = value;
613 }
615
616private:
618};
619
622 {
623 setInvert(false);
624 setUseGlobalLight(false);
625 setDistance(8);
626 setSize(7);
627 setSpread(0);
628 setKnocksOut(true);
629 setEdgeHidden(false);
631 }
632
636
637 // using psd_layer_effects_shadow_base::setBlendMode;
638 // using psd_layer_effects_shadow_base::setColor;
639 // using psd_layer_effects_shadow_base::setOpacity;
640
641 // // NOTE: no global light setting explicitly!
642 // using psd_layer_effects_shadow_base::setAngle;
643 // using psd_layer_effects_shadow_base::setDistance;
644
645 // using psd_layer_effects_shadow_base::setSize;
646
647 // using psd_layer_effects_shadow_base::setContourLookupTable;
648 // using psd_layer_effects_shadow_base::setAntiAliased;
649
650 bool invert() const
651 {
652 return m_invert;
653 }
654
655 void setInvert(bool value)
656 {
657 m_invert = value;
658 }
659
660private:
662};
663
664// bevl: https://www.adobe.com/devnet-apps/photoshop/fileformatashtml/PhotoshopFileFormats.htm#50577409_31889
669 , m_depth(100)
671 , m_soften(0)
672 ,
673
674 m_altitude(30)
675 ,
676
677 m_glossAntiAliased(false)
678 ,
679
681 , m_highlightColor(KoColor::fromXML("<color channeldepth='U8'><sRGB r='1.0' g='1.0' b='1.0'/></color>"))
683 ,
684
686 , m_shadowColor(KoColor::fromXML("<color channeldepth='U8'><sRGB r='0.0' g='0.0' b='0.0'/></color>"))
687 , m_shadowOpacity(75)
688 ,
689
690 m_contourEnabled(false)
691 , m_contourRange(100)
692 ,
693
694 m_textureEnabled(false)
695 , m_textureScale(100)
696 , m_textureDepth(100)
697 , m_textureInvert(false)
698 ,
699
703 {
704 for (int i = 0; i < PSD_LOOKUP_TABLE_SIZE; ++i) {
706 }
707 }
708
712
713 // using psd_layer_effects_shadow_base::setSize;
714
715 // using psd_layer_effects_shadow_base::setAngle;
716 // using psd_layer_effects_shadow_base::setUseGlobalLight;
717
718 // using psd_layer_effects_shadow_base::setContourLookupTable;
719 // using psd_layer_effects_shadow_base::setAntiAliased;
720
722 {
723 return m_style;
724 }
726 {
727 m_style = value;
728 }
729
731 {
732 return m_technique;
733 }
738
739 int depth() const
740 {
741 return m_depth;
742 }
743 void setDepth(int value)
744 {
745 m_depth = value;
746 }
747
749 {
750 return m_direction;
751 }
756
757 int soften() const
758 {
759 return m_soften;
760 }
761 void setSoften(int value)
762 {
763 m_soften = value;
764 }
765
766 int altitude() const
767 {
768 return m_altitude;
769 }
771 {
773 }
774
775 const quint8 *glossContourLookupTable() const
776 {
778 }
779
781 {
782 memcpy(m_glossContourLookupTable, value, PSD_LOOKUP_TABLE_SIZE * sizeof(quint8));
783 }
784
785 bool glossAntiAliased() const
786 {
787 return m_glossAntiAliased;
788 }
790 {
792 }
793
794 QString highlightBlendMode() const
795 {
797 }
799 {
801 }
802
804 {
805 return m_highlightColor;
806 }
811
812 qint32 highlightOpacity() const
813 {
814 return m_highlightOpacity;
815 }
817 {
819 }
820
821 QString shadowBlendMode() const
822 {
823 return m_shadowBlendMode;
824 }
826 {
828 }
829
831 {
832 return m_shadowColor;
833 }
838
839 qint32 shadowOpacity() const
840 {
841 return m_shadowOpacity;
842 }
844 {
846 }
847
848 bool contourEnabled() const
849 {
850 return m_contourEnabled;
851 }
853 {
855 }
856
857 int contourRange() const
858 {
859 return m_contourRange;
860 }
862 {
864 }
865
866 bool textureEnabled() const
867 {
868 return m_textureEnabled;
869 }
871 {
873 }
874
878
880 {
881 auto source = resourcesInterface->source<KoPattern>(m_texturePatternLink.type);
883 }
884
886 {
887 m_texturePatternLink.type = value->resourceType().first;
889 m_texturePatternLink.filename = value->filename();
891
892 }
893
894 int textureScale() const
895 {
896 return m_textureScale;
897 }
899 {
901 }
902
903 int textureDepth() const
904 {
905 return m_textureDepth;
906 }
908 {
910 }
911
912 bool textureInvert() const
913 {
914 return m_textureInvert;
915 }
917 {
919 }
920
922 {
924 }
929
930 void setTexturePhase(const QPointF &phase)
931 {
932 m_textureHorizontalPhase = phase.x();
933 m_textureVerticalPhase = phase.y();
934 }
935
936 QPointF texturePhase() const
937 {
939 }
940
942 {
944 }
949
951 {
953 }
958
959 void scaleLinearSizes(qreal scale) override
960 {
962 m_soften *= scale;
963 m_textureScale *= scale;
964 }
965
966private:
971 int m_soften; // Blur value in pixels.
972
974
977
978 QString m_highlightBlendMode; // already in Krita format
980 qint32 m_highlightOpacity; // Highlight opacity as a percent
981
982 QString m_shadowBlendMode; // already in Krita format
984 qint32 m_shadowOpacity; // Shadow opacity as a percent
985
988
994
998};
999
1002 : m_scale(100)
1003 , m_alignWithLayer(true)
1004 , m_dither(false)
1005 , m_reverse(false)
1010 , m_verticalPhase(0)
1011 {
1012 setUseGlobalLight(false);
1013 }
1014
1018
1019 // using psd_layer_effects_shadow_base::setBlendMode;
1020 // using psd_layer_effects_shadow_base::setOpacity;
1021
1022 int scale() const
1023 {
1024 return m_scale;
1025 }
1026
1027 bool alignWithLayer() const
1028 {
1029 return m_alignWithLayer;
1030 }
1031
1032 bool dither() const
1033 {
1034 return m_dither;
1035 }
1036
1037 bool reverse() const
1038 {
1039 return m_reverse;
1040 }
1041
1043 {
1044 return m_style;
1045 }
1046
1048 {
1049 return m_gradientXOffset;
1050 }
1051
1053 {
1054 return m_gradientYOffset;
1055 }
1056
1058 return m_patternLink;
1059 }
1060
1062 {
1063 auto source = resourcesInterface->source<KoPattern>(m_patternLink.type);
1065 }
1066
1068 {
1069 return m_horizontalPhase;
1070 }
1071
1072 int verticalPhase() const
1073 {
1074 return m_verticalPhase;
1075 }
1076
1077 // refactor that
1078public:
1079 void setScale(int value)
1080 {
1081 m_scale = value;
1082 }
1083
1085 {
1087 }
1088
1089 void setDither(bool value)
1090 {
1091 m_dither = value;
1092 }
1093
1095 {
1096 m_reverse = value;
1097 }
1098
1100 {
1101 m_style = value;
1102 }
1103
1104 void setGradientOffset(const QPointF &pt)
1105 {
1106 m_gradientXOffset = qRound(pt.x());
1107 m_gradientYOffset = qRound(pt.y());
1108 }
1109
1110 QPointF gradientOffset() const
1111 {
1112 return QPointF(m_gradientXOffset, m_gradientYOffset);
1113 }
1114
1116 {
1117 m_patternLink.type = value->resourceType().first;
1118 m_patternLink.md5sum = value->md5Sum();
1119 m_patternLink.filename = value->filename();
1120 m_patternLink.name = value->name();
1121 }
1122
1123 void setPatternPhase(const QPointF &phase)
1124 {
1125 m_horizontalPhase = phase.x();
1126 m_verticalPhase = phase.y();
1127 }
1128
1129 QPointF patternPhase() const
1130 {
1131 return QPointF(m_horizontalPhase, m_verticalPhase);
1132 }
1133
1139
1140private:
1141 // Gradient+Pattern
1144
1145 // Gradient
1149 int m_gradientXOffset; // 0..100%
1150 int m_gradientYOffset; // 0..100%
1151
1152 // Pattern
1154 int m_horizontalPhase; // 0..100%
1155 int m_verticalPhase; // 0..100%
1156
1157protected:
1161
1162 // must be called in the derived classes' c-tor
1163 // using psd_layer_effects_shadow_base::setFillType;
1164};
1165
1166// sofi: https://www.adobe.com/devnet-apps/photoshop/fileformatashtml/PhotoshopFileFormats.htm#50577409_70055
1169 {
1171 setColor(KoColor::fromXML("<color channeldepth='U8'><sRGB r='1.0' g='1.0' b='1.0'/></color>"));
1172 }
1173
1177
1178 // using psd_layer_effects_shadow_base::setColor;
1179};
1180
1191
1192public:
1196
1197 // using psd_layer_effects_shadow_base::setGradient;
1198 // using psd_layer_effects_shadow_base::setAngle;
1199
1200 // using psd_layer_effects_overlay_base::setReverse;
1201 // using psd_layer_effects_overlay_base::setScale;
1202 // using psd_layer_effects_overlay_base::setAlignWithLayer;
1203 // using psd_layer_effects_overlay_base::setStyle;
1204
1205 // using psd_layer_effects_overlay_base::setGradientOffset;
1206 // using psd_layer_effects_overlay_base::gradientOffset;
1207};
1208
1216
1220
1221 // using psd_layer_effects_overlay_base::setScale;
1222 // using psd_layer_effects_overlay_base::setAlignWithLayer;
1223
1224 // using psd_layer_effects_overlay_base::setPattern;
1225
1226 // using psd_layer_effects_overlay_base::setPatternPhase;
1227 // using psd_layer_effects_overlay_base::patternPhase;
1228
1229private:
1230 // These are unused
1231 /*int m_scale;
1232 bool m_alignWithLayer;
1233 KoPatternSP m_pattern;
1234
1235 int m_horizontalPhase;
1236 int m_verticalPhase;*/
1237};
1238
1242 {
1244 setColor(KoColor::fromXML("<color channeldepth='U8'><sRGB r='0.0' g='0.0' b='0.0'/></color>"));
1245
1246 setAngle(90);
1247 setReverse(false);
1248 setScale(100);
1249 setAlignWithLayer(true);
1251
1252 setScale(100);
1253 setAlignWithLayer(true);
1254 }
1255
1259
1260 // using psd_layer_effects_shadow_base::setFillType;
1261 // using psd_layer_effects_shadow_base::setSize;
1262
1263 // using psd_layer_effects_shadow_base::setColor;
1264
1265 // using psd_layer_effects_shadow_base::setGradient;
1266 // using psd_layer_effects_shadow_base::setAngle;
1267 // using psd_layer_effects_overlay_base::setReverse;
1268 // using psd_layer_effects_overlay_base::setScale;
1269 // using psd_layer_effects_overlay_base::setAlignWithLayer;
1270 // using psd_layer_effects_overlay_base::setStyle;
1271
1272 // using psd_layer_effects_overlay_base::setGradientOffset;
1273 // using psd_layer_effects_overlay_base::gradientOffset;
1274
1275 // using psd_layer_effects_overlay_base::setPattern;
1276
1277 // using psd_layer_effects_overlay_base::setPatternPhase;
1278 // using psd_layer_effects_overlay_base::patternPhase;
1279
1281 {
1282 return m_position;
1283 }
1288
1289private:
1291};
1292
1299QPair<QString, QString> KRITAPSDUTILS_EXPORT psd_colormode_to_colormodelid(psd_color_mode colormode, quint16 channelDepth);
1300
1304QString KRITAPSDUTILS_EXPORT psd_blendmode_to_composite_op(const QString &blendmode);
1305QString KRITAPSDUTILS_EXPORT composite_op_to_psd_blendmode(const QString &compositeOp);
1306
1307
1308#if defined(__clang__) && __clang_major__ < 10
1309inline QDebug &operator<<(QDebug &self, psd_compression_type type)
1310{
1311 self << static_cast<std::uint16_t>(type);
1312 return self;
1313};
1314#endif
1315
1316#endif // PSD_H
float value(const T *src, size_t ch)
QDebug KRITACOMMAND_EXPORT operator<<(QDebug dbg, const KisCumulativeUndoData &data)
KisMagneticGraph::vertex_descriptor source(typename KisMagneticGraph::edge_descriptor e, KisMagneticGraph g)
const QString COMPOSITE_LINEAR_BURN
const QString COMPOSITE_MULT
const QString COMPOSITE_SCREEN
const QString COMPOSITE_LINEAR_DODGE
static KoColor fromXML(const QDomElement &elt, const QString &channelDepthId)
Definition KoColor.cpp:350
Write API docs here.
Definition KoPattern.h:21
A simple wrapper object for the main information about the resource.
psd_glow_source m_source
Definition psd.h:617
void setSource(psd_glow_source value)
Definition psd.h:610
psd_glow_source source() const
Definition psd.h:606
qint32 opacity() const
Definition psd.h:281
psd_fill_type m_fillType
Definition psd.h:501
void setGradient(KoAbstractGradientSP value)
Definition psd.h:467
qint32 range() const
Definition psd.h:351
void setContourLookupTable(const quint8 *value)
Definition psd.h:417
void setColor(KoColor value)
Definition psd.h:377
void setRange(qint32 value)
Definition psd.h:457
virtual void scaleLinearSizes(qreal scale)
Definition psd.cpp:260
qint32 distance() const
Definition psd.h:296
bool useGlobalLight() const
Definition psd.h:291
KoResourceSignature m_gradientLink
Definition psd.h:505
QString blendMode() const
Definition psd.h:266
void setFillType(psd_fill_type value)
Definition psd.h:447
void setNoise(qint32 value)
Definition psd.h:427
bool knocksOut() const
Definition psd.h:326
bool effectEnabled() const
Definition psd.h:261
void setUseGlobalLight(bool value)
Definition psd.h:397
qint32 spread() const
Definition psd.h:301
psd_technique_type technique() const
Definition psd.h:346
void setEffectEnabled(bool value)
Definition psd.h:256
KoColor color() const
Definition psd.h:271
qint32 jitter() const
Definition psd.h:356
qint32 noise() const
Definition psd.h:321
void setEdgeHidden(bool value)
Definition psd.h:442
void setTechnique(psd_technique_type value)
Definition psd.h:452
bool invertsSelection() const
Definition psd.h:331
void setAntiAliased(bool value)
Definition psd.h:422
void setKnocksOut(bool value)
Definition psd.h:432
void setDistance(qint32 value)
Definition psd.h:402
void setInvertsSelection(bool value)
Definition psd.h:437
void setAngle(qint32 value)
Definition psd.h:392
qint32 angle() const
Definition psd.h:286
qint32 size() const
Definition psd.h:306
KoAbstractGradientSP gradient(KisResourcesInterfaceSP resourcesInterface) const
Definition psd.h:365
void setBlendMode(QString value)
Definition psd.h:372
void setNativeColor(KoColor value)
Definition psd.h:382
void setJitter(qint32 value)
Definition psd.h:462
bool edgeHidden() const
Definition psd.h:336
void setOpacity(qint32 value)
Definition psd.h:387
KoColor nativeColor() const
Definition psd.h:276
const quint8 * contourLookupTable() const
Definition psd.h:311
psd_fill_type fillType() const
Definition psd.h:341
bool antiAliased() const
Definition psd.h:316
void setSpread(qint32 value)
Definition psd.h:407
KoResourceSignature gradientLink() const
Definition psd.h:361
void setSize(qint32 value)
Definition psd.h:412
psd_technique_type m_technique
Definition psd.h:502
QString KRITAPSDUTILS_EXPORT psd_blendmode_to_composite_op(const QString &blendmode)
Definition psd.cpp:59
psd_glow_source
Definition psd.h:129
@ psd_glow_edge
Definition psd.h:131
@ psd_glow_center
Definition psd.h:130
psd_byte_order
Definition psd.h:33
QPair< QString, QString > KRITAPSDUTILS_EXPORT psd_colormode_to_colormodelid(psd_color_mode colormode, quint16 channelDepth)
Definition psd.cpp:16
psd_compression_type
Definition psd.h:39
@ RLE
Definition psd.h:41
@ Unknown
Definition psd.h:44
@ ZIPWithPrediction
Definition psd.h:43
@ Uncompressed
Definition psd.h:40
@ ZIP
Definition psd.h:42
psd_direction
Definition psd.h:142
@ psd_direction_up
Definition psd.h:142
@ psd_direction_down
Definition psd.h:142
psd_color_stop_type
Definition psd.h:109
@ psd_color_stop_type_background_Color
Definition psd.h:111
@ psd_color_stop_type_foreground_color
Definition psd.h:110
@ psd_color_stop_type_user_stop
Definition psd.h:112
const int MAX_PSD_SIZE
Definition psd.h:29
psd_section_type
Definition psd.h:144
@ psd_other
Definition psd.h:144
@ psd_open_folder
Definition psd.h:144
@ psd_closed_folder
Definition psd.h:144
@ psd_bounding_divider
Definition psd.h:144
psd_gradient_style
Definition psd.h:101
@ psd_gradient_style_linear
Definition psd.h:102
@ psd_gradient_style_reflected
Definition psd.h:105
@ psd_gradient_style_angle
Definition psd.h:104
@ psd_gradient_style_radial
Definition psd.h:103
@ psd_gradient_style_diamond
Definition psd.h:106
psd_fill_type
Definition psd.h:123
@ psd_fill_solid_color
Definition psd.h:124
@ psd_fill_gradient
Definition psd.h:125
@ psd_fill_pattern
Definition psd.h:126
#define PSD_LOOKUP_TABLE_SIZE
Definition psd.h:220
QString KRITAPSDUTILS_EXPORT composite_op_to_psd_blendmode(const QString &compositeOp)
Definition psd.cpp:150
qint32 Fixed
Definition psd.h:31
psd_technique_type
Definition psd.h:115
@ psd_technique_softer
Definition psd.h:116
@ psd_technique_precise
Definition psd.h:117
@ psd_technique_slope_limit
Definition psd.h:118
psd_bevel_style
Definition psd.h:134
@ psd_bevel_pillow_emboss
Definition psd.h:138
@ psd_bevel_inner_bevel
Definition psd.h:136
@ psd_bevel_stroke_emboss
Definition psd.h:139
@ psd_bevel_outer_bevel
Definition psd.h:135
@ psd_bevel_emboss
Definition psd.h:137
const int MAX_CHANNELS
Definition psd.h:27
psd_color_mode
Definition psd.h:50
@ CMYK64
Definition psd.h:62
@ Lab
Definition psd.h:58
@ RGB
Definition psd.h:54
@ DuoTone
Definition psd.h:57
@ RGB48
Definition psd.h:60
@ Duotone16
Definition psd.h:64
@ CMYK
Definition psd.h:55
@ COLORMODE_UNKNOWN
Definition psd.h:65
@ Gray16
Definition psd.h:59
@ Indexed
Definition psd.h:53
@ MultiChannel
Definition psd.h:56
@ DeepMultichannel
Definition psd.h:63
@ Grayscale
Definition psd.h:52
@ Bitmap
Definition psd.h:51
@ Lab48
Definition psd.h:61
psd_stroke_position
Definition psd.h:121
@ psd_stroke_outside
Definition psd.h:121
@ psd_stroke_inside
Definition psd.h:121
@ psd_stroke_center
Definition psd.h:121
QString name
Definition psd.h:72
QString md5
Definition psd.h:70
QString filename
Definition psd.h:71
QString type
Definition psd.h:69
psd_color_stop_type color_stop_type
Definition psd.h:152
KoColor actual_color
Definition psd.h:151
psd_gradient_color_stop * color_stop
Definition psd.h:190
qint32 name_length
Definition psd.h:187
qint8 number_color_stops
Definition psd.h:189
psd_gradient_transparency_stop * transparency_stop
Definition psd.h:192
qint32 smoothness
Definition psd.h:186
qint8 number_transparency_stops
Definition psd.h:191
quint16 * name
Definition psd.h:188
void setTechnique(psd_technique_type value)
Definition psd.h:734
void setStyle(psd_bevel_style value)
Definition psd.h:725
void setTextureDepth(int value)
Definition psd.h:907
QString shadowBlendMode() const
Definition psd.h:821
psd_technique_type technique() const
Definition psd.h:730
const quint8 * glossContourLookupTable() const
Definition psd.h:775
KoResourceSignature texturePatternLink() const
Definition psd.h:875
void setShadowColor(KoColor value)
Definition psd.h:834
quint8 m_glossContourLookupTable[256]
Definition psd.h:975
qint32 highlightOpacity() const
Definition psd.h:812
psd_bevel_style style() const
Definition psd.h:721
bool contourEnabled() const
Definition psd.h:848
void setTextureScale(int value)
Definition psd.h:898
psd_direction direction() const
Definition psd.h:748
void setTextureEnabled(bool value)
Definition psd.h:870
bool glossAntiAliased() const
Definition psd.h:785
void setDirection(psd_direction value)
Definition psd.h:752
KoPatternSP texturePattern(KisResourcesInterfaceSP resourcesInterface) const
Definition psd.h:879
void setTexturePattern(KoPatternSP value)
Definition psd.h:885
void setHighlightBlendMode(QString value)
Definition psd.h:798
psd_direction m_direction
Definition psd.h:970
void setAltitude(int value)
Definition psd.h:770
KoResourceSignature m_texturePatternLink
Definition psd.h:990
int textureVerticalPhase() const
Definition psd.h:950
bool textureInvert() const
Definition psd.h:912
void setHighlightColor(KoColor value)
Definition psd.h:807
void setTexturePhase(const QPointF &phase)
Definition psd.h:930
void setContourRange(int value)
Definition psd.h:861
qint32 shadowOpacity() const
Definition psd.h:839
bool textureEnabled() const
Definition psd.h:866
void setTextureVerticalPhase(int value)
Definition psd.h:954
bool textureAlignWithLayer() const
Definition psd.h:921
void setShadowBlendMode(QString value)
Definition psd.h:825
void setDepth(int value)
Definition psd.h:743
psd_bevel_style m_style
Definition psd.h:967
void scaleLinearSizes(qreal scale) override
Definition psd.h:959
int textureHorizontalPhase() const
Definition psd.h:941
void setTextureHorizontalPhase(int value)
Definition psd.h:945
QString highlightBlendMode() const
Definition psd.h:794
void setGlossAntiAliased(bool value)
Definition psd.h:789
KoColor shadowColor() const
Definition psd.h:830
KoColor highlightColor() const
Definition psd.h:803
void setTextureAlignWithLayer(bool value)
Definition psd.h:925
psd_technique_type m_technique
Definition psd.h:968
void setShadowOpacity(qint32 value)
Definition psd.h:843
void setSoften(int value)
Definition psd.h:761
void setContourEnabled(bool value)
Definition psd.h:852
void setGlossContourLookupTable(const quint8 *value)
Definition psd.h:780
void setTextureInvert(bool value)
Definition psd.h:916
QPointF texturePhase() const
Definition psd.h:936
void setHighlightOpacity(qint32 value)
Definition psd.h:816
KoPatternSP pattern(KisResourcesInterfaceSP resourcesInterface) const
Definition psd.h:1061
void setReverse(bool value)
Definition psd.h:1094
QPointF gradientOffset() const
Definition psd.h:1110
int gradientXOffset() const
Definition psd.h:1047
int gradientYOffset() const
Definition psd.h:1052
int horizontalPhase() const
Definition psd.h:1067
QPointF patternPhase() const
Definition psd.h:1129
void setAlignWithLayer(bool value)
Definition psd.h:1084
KoResourceSignature patternLink() const
Definition psd.h:1057
KoResourceSignature m_patternLink
Definition psd.h:1153
void setStyle(psd_gradient_style value)
Definition psd.h:1099
bool alignWithLayer() const
Definition psd.h:1027
void scaleLinearSizes(qreal scale) override
Definition psd.h:1134
void setScale(int value)
Definition psd.h:1079
void setDither(bool value)
Definition psd.h:1089
psd_gradient_style style() const
Definition psd.h:1042
psd_gradient_style m_style
Definition psd.h:1148
void setGradientOffset(const QPointF &pt)
Definition psd.h:1104
void setPattern(KoPatternSP value)
Definition psd.h:1115
void setPatternPhase(const QPointF &phase)
Definition psd.h:1123
void setInvert(bool value)
Definition psd.h:655
bool invert() const
Definition psd.h:650
void setPosition(psd_stroke_position value)
Definition psd.h:1284
psd_stroke_position position() const
Definition psd.h:1280
psd_stroke_position m_position
Definition psd.h:1290
QColor lookup_table[256]
Definition psd.h:182
qint8 number_color_stops
Definition psd.h:168
qint8 using_vector_color_flag
Definition psd.h:178
quint16 * name
Definition psd.h:167
psd_gradient_transparency_stop * transparency_stop
Definition psd.h:171
qint32 roughness_factor
Definition psd.h:179
qint8 number_transparency_stops
Definition psd.h:170
qint32 random_number_seed
Definition psd.h:176
psd_gradient_color_stop * color_stop
Definition psd.h:169
qint8 showing_transparency_flag
Definition psd.h:177
qint8 expansion_count
Definition psd.h:172
QVector< QRgb > color_table
Definition psd.h:208
qint32 version
Definition psd.h:201
psd_color_mode color_mode
Definition psd.h:196
quint8 width
Definition psd.h:198
qint32 channel_number
Definition psd.h:207
QString name
Definition psd.h:199
QString uuid
Definition psd.h:200
qint32 max_channel
Definition psd.h:206
quint8 left
Definition psd.h:203
quint8 top
Definition psd.h:202
quint8 bottom
Definition psd.h:204
quint8 height
Definition psd.h:197
quint8 right
Definition psd.h:205