@guru-ai-product/ai-product-kit 0.2.251113194913 → 0.2.251113205658

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (129) hide show
  1. package/mcp/skills/aipk_init_project/template/AGENTS_TEMPLATE.md +1 -1
  2. package/mcp/src/server.js +1 -1
  3. package/package.json +1 -1
  4. package/skills/aipk_design/GURU_AI.md +119 -7
  5. package/skills/aipk_design/SKILL.md +8 -7
  6. package/skills/aipk_design/{auto_panel_splitter → update-requirements-from-design}/SKILL.md +18 -16
  7. package/skills/aipk_design/update-requirements-from-design/scripts/sharp-runtime/node_modules/.package-lock.json +113 -0
  8. package/skills/aipk_design/update-requirements-from-design/scripts/sharp-runtime/node_modules/@img/colour/LICENSE.md +82 -0
  9. package/skills/aipk_design/update-requirements-from-design/scripts/sharp-runtime/node_modules/@img/colour/README.md +15 -0
  10. package/skills/aipk_design/update-requirements-from-design/scripts/sharp-runtime/node_modules/@img/colour/color.cjs +1594 -0
  11. package/skills/aipk_design/update-requirements-from-design/scripts/sharp-runtime/node_modules/@img/colour/index.cjs +1 -0
  12. package/skills/aipk_design/update-requirements-from-design/scripts/sharp-runtime/node_modules/@img/colour/package.json +45 -0
  13. package/skills/aipk_design/update-requirements-from-design/scripts/sharp-runtime/node_modules/@img/sharp-darwin-arm64/LICENSE +191 -0
  14. package/skills/aipk_design/update-requirements-from-design/scripts/sharp-runtime/node_modules/@img/sharp-darwin-arm64/README.md +18 -0
  15. package/skills/aipk_design/update-requirements-from-design/scripts/sharp-runtime/node_modules/@img/sharp-darwin-arm64/lib/sharp-darwin-arm64.node +0 -0
  16. package/skills/aipk_design/update-requirements-from-design/scripts/sharp-runtime/node_modules/@img/sharp-darwin-arm64/package.json +40 -0
  17. package/skills/aipk_design/update-requirements-from-design/scripts/sharp-runtime/node_modules/@img/sharp-libvips-darwin-arm64/README.md +46 -0
  18. package/skills/aipk_design/update-requirements-from-design/scripts/sharp-runtime/node_modules/@img/sharp-libvips-darwin-arm64/lib/glib-2.0/include/glibconfig.h +220 -0
  19. package/skills/aipk_design/update-requirements-from-design/scripts/sharp-runtime/node_modules/@img/sharp-libvips-darwin-arm64/lib/index.js +1 -0
  20. package/skills/aipk_design/update-requirements-from-design/scripts/sharp-runtime/node_modules/@img/sharp-libvips-darwin-arm64/lib/libvips-cpp.8.17.3.dylib +0 -0
  21. package/skills/aipk_design/update-requirements-from-design/scripts/sharp-runtime/node_modules/@img/sharp-libvips-darwin-arm64/package.json +36 -0
  22. package/skills/aipk_design/update-requirements-from-design/scripts/sharp-runtime/node_modules/@img/sharp-libvips-darwin-arm64/versions.json +30 -0
  23. package/skills/aipk_design/update-requirements-from-design/scripts/sharp-runtime/node_modules/detect-libc/LICENSE +201 -0
  24. package/skills/aipk_design/update-requirements-from-design/scripts/sharp-runtime/node_modules/detect-libc/README.md +163 -0
  25. package/skills/aipk_design/update-requirements-from-design/scripts/sharp-runtime/node_modules/detect-libc/index.d.ts +14 -0
  26. package/skills/aipk_design/update-requirements-from-design/scripts/sharp-runtime/node_modules/detect-libc/lib/detect-libc.js +313 -0
  27. package/skills/aipk_design/update-requirements-from-design/scripts/sharp-runtime/node_modules/detect-libc/lib/elf.js +39 -0
  28. package/skills/aipk_design/update-requirements-from-design/scripts/sharp-runtime/node_modules/detect-libc/lib/filesystem.js +51 -0
  29. package/skills/aipk_design/update-requirements-from-design/scripts/sharp-runtime/node_modules/detect-libc/lib/process.js +24 -0
  30. package/skills/aipk_design/update-requirements-from-design/scripts/sharp-runtime/node_modules/detect-libc/package.json +44 -0
  31. package/skills/aipk_design/update-requirements-from-design/scripts/sharp-runtime/node_modules/semver/LICENSE +15 -0
  32. package/skills/aipk_design/update-requirements-from-design/scripts/sharp-runtime/node_modules/semver/README.md +664 -0
  33. package/skills/aipk_design/update-requirements-from-design/scripts/sharp-runtime/node_modules/semver/bin/semver.js +191 -0
  34. package/skills/aipk_design/update-requirements-from-design/scripts/sharp-runtime/node_modules/semver/classes/comparator.js +143 -0
  35. package/skills/aipk_design/update-requirements-from-design/scripts/sharp-runtime/node_modules/semver/classes/index.js +7 -0
  36. package/skills/aipk_design/update-requirements-from-design/scripts/sharp-runtime/node_modules/semver/classes/range.js +557 -0
  37. package/skills/aipk_design/update-requirements-from-design/scripts/sharp-runtime/node_modules/semver/classes/semver.js +333 -0
  38. package/skills/aipk_design/update-requirements-from-design/scripts/sharp-runtime/node_modules/semver/functions/clean.js +8 -0
  39. package/skills/aipk_design/update-requirements-from-design/scripts/sharp-runtime/node_modules/semver/functions/cmp.js +54 -0
  40. package/skills/aipk_design/update-requirements-from-design/scripts/sharp-runtime/node_modules/semver/functions/coerce.js +62 -0
  41. package/skills/aipk_design/update-requirements-from-design/scripts/sharp-runtime/node_modules/semver/functions/compare-build.js +9 -0
  42. package/skills/aipk_design/update-requirements-from-design/scripts/sharp-runtime/node_modules/semver/functions/compare-loose.js +5 -0
  43. package/skills/aipk_design/update-requirements-from-design/scripts/sharp-runtime/node_modules/semver/functions/compare.js +7 -0
  44. package/skills/aipk_design/update-requirements-from-design/scripts/sharp-runtime/node_modules/semver/functions/diff.js +60 -0
  45. package/skills/aipk_design/update-requirements-from-design/scripts/sharp-runtime/node_modules/semver/functions/eq.js +5 -0
  46. package/skills/aipk_design/update-requirements-from-design/scripts/sharp-runtime/node_modules/semver/functions/gt.js +5 -0
  47. package/skills/aipk_design/update-requirements-from-design/scripts/sharp-runtime/node_modules/semver/functions/gte.js +5 -0
  48. package/skills/aipk_design/update-requirements-from-design/scripts/sharp-runtime/node_modules/semver/functions/inc.js +21 -0
  49. package/skills/aipk_design/update-requirements-from-design/scripts/sharp-runtime/node_modules/semver/functions/lt.js +5 -0
  50. package/skills/aipk_design/update-requirements-from-design/scripts/sharp-runtime/node_modules/semver/functions/lte.js +5 -0
  51. package/skills/aipk_design/update-requirements-from-design/scripts/sharp-runtime/node_modules/semver/functions/major.js +5 -0
  52. package/skills/aipk_design/update-requirements-from-design/scripts/sharp-runtime/node_modules/semver/functions/minor.js +5 -0
  53. package/skills/aipk_design/update-requirements-from-design/scripts/sharp-runtime/node_modules/semver/functions/neq.js +5 -0
  54. package/skills/aipk_design/update-requirements-from-design/scripts/sharp-runtime/node_modules/semver/functions/parse.js +18 -0
  55. package/skills/aipk_design/update-requirements-from-design/scripts/sharp-runtime/node_modules/semver/functions/patch.js +5 -0
  56. package/skills/aipk_design/update-requirements-from-design/scripts/sharp-runtime/node_modules/semver/functions/prerelease.js +8 -0
  57. package/skills/aipk_design/update-requirements-from-design/scripts/sharp-runtime/node_modules/semver/functions/rcompare.js +5 -0
  58. package/skills/aipk_design/update-requirements-from-design/scripts/sharp-runtime/node_modules/semver/functions/rsort.js +5 -0
  59. package/skills/aipk_design/update-requirements-from-design/scripts/sharp-runtime/node_modules/semver/functions/satisfies.js +12 -0
  60. package/skills/aipk_design/update-requirements-from-design/scripts/sharp-runtime/node_modules/semver/functions/sort.js +5 -0
  61. package/skills/aipk_design/update-requirements-from-design/scripts/sharp-runtime/node_modules/semver/functions/valid.js +8 -0
  62. package/skills/aipk_design/update-requirements-from-design/scripts/sharp-runtime/node_modules/semver/index.js +91 -0
  63. package/skills/aipk_design/update-requirements-from-design/scripts/sharp-runtime/node_modules/semver/internal/constants.js +37 -0
  64. package/skills/aipk_design/update-requirements-from-design/scripts/sharp-runtime/node_modules/semver/internal/debug.js +11 -0
  65. package/skills/aipk_design/update-requirements-from-design/scripts/sharp-runtime/node_modules/semver/internal/identifiers.js +29 -0
  66. package/skills/aipk_design/update-requirements-from-design/scripts/sharp-runtime/node_modules/semver/internal/lrucache.js +42 -0
  67. package/skills/aipk_design/update-requirements-from-design/scripts/sharp-runtime/node_modules/semver/internal/parse-options.js +17 -0
  68. package/skills/aipk_design/update-requirements-from-design/scripts/sharp-runtime/node_modules/semver/internal/re.js +223 -0
  69. package/skills/aipk_design/update-requirements-from-design/scripts/sharp-runtime/node_modules/semver/package.json +78 -0
  70. package/skills/aipk_design/update-requirements-from-design/scripts/sharp-runtime/node_modules/semver/preload.js +4 -0
  71. package/skills/aipk_design/update-requirements-from-design/scripts/sharp-runtime/node_modules/semver/range.bnf +16 -0
  72. package/skills/aipk_design/update-requirements-from-design/scripts/sharp-runtime/node_modules/semver/ranges/gtr.js +6 -0
  73. package/skills/aipk_design/update-requirements-from-design/scripts/sharp-runtime/node_modules/semver/ranges/intersects.js +9 -0
  74. package/skills/aipk_design/update-requirements-from-design/scripts/sharp-runtime/node_modules/semver/ranges/ltr.js +6 -0
  75. package/skills/aipk_design/update-requirements-from-design/scripts/sharp-runtime/node_modules/semver/ranges/max-satisfying.js +27 -0
  76. package/skills/aipk_design/update-requirements-from-design/scripts/sharp-runtime/node_modules/semver/ranges/min-satisfying.js +26 -0
  77. package/skills/aipk_design/update-requirements-from-design/scripts/sharp-runtime/node_modules/semver/ranges/min-version.js +63 -0
  78. package/skills/aipk_design/update-requirements-from-design/scripts/sharp-runtime/node_modules/semver/ranges/outside.js +82 -0
  79. package/skills/aipk_design/update-requirements-from-design/scripts/sharp-runtime/node_modules/semver/ranges/simplify.js +49 -0
  80. package/skills/aipk_design/update-requirements-from-design/scripts/sharp-runtime/node_modules/semver/ranges/subset.js +249 -0
  81. package/skills/aipk_design/update-requirements-from-design/scripts/sharp-runtime/node_modules/semver/ranges/to-comparators.js +10 -0
  82. package/skills/aipk_design/update-requirements-from-design/scripts/sharp-runtime/node_modules/semver/ranges/valid.js +13 -0
  83. package/skills/aipk_design/update-requirements-from-design/scripts/sharp-runtime/node_modules/sharp/LICENSE +191 -0
  84. package/skills/aipk_design/update-requirements-from-design/scripts/sharp-runtime/node_modules/sharp/README.md +118 -0
  85. package/skills/aipk_design/update-requirements-from-design/scripts/sharp-runtime/node_modules/sharp/install/build.js +38 -0
  86. package/skills/aipk_design/update-requirements-from-design/scripts/sharp-runtime/node_modules/sharp/install/check.js +14 -0
  87. package/skills/aipk_design/update-requirements-from-design/scripts/sharp-runtime/node_modules/sharp/lib/channel.js +177 -0
  88. package/skills/aipk_design/update-requirements-from-design/scripts/sharp-runtime/node_modules/sharp/lib/colour.js +195 -0
  89. package/skills/aipk_design/update-requirements-from-design/scripts/sharp-runtime/node_modules/sharp/lib/composite.js +212 -0
  90. package/skills/aipk_design/update-requirements-from-design/scripts/sharp-runtime/node_modules/sharp/lib/constructor.js +499 -0
  91. package/skills/aipk_design/update-requirements-from-design/scripts/sharp-runtime/node_modules/sharp/lib/index.d.ts +1971 -0
  92. package/skills/aipk_design/update-requirements-from-design/scripts/sharp-runtime/node_modules/sharp/lib/index.js +16 -0
  93. package/skills/aipk_design/update-requirements-from-design/scripts/sharp-runtime/node_modules/sharp/lib/input.js +809 -0
  94. package/skills/aipk_design/update-requirements-from-design/scripts/sharp-runtime/node_modules/sharp/lib/is.js +143 -0
  95. package/skills/aipk_design/update-requirements-from-design/scripts/sharp-runtime/node_modules/sharp/lib/libvips.js +207 -0
  96. package/skills/aipk_design/update-requirements-from-design/scripts/sharp-runtime/node_modules/sharp/lib/operation.js +1016 -0
  97. package/skills/aipk_design/update-requirements-from-design/scripts/sharp-runtime/node_modules/sharp/lib/output.js +1666 -0
  98. package/skills/aipk_design/update-requirements-from-design/scripts/sharp-runtime/node_modules/sharp/lib/resize.js +595 -0
  99. package/skills/aipk_design/update-requirements-from-design/scripts/sharp-runtime/node_modules/sharp/lib/sharp.js +121 -0
  100. package/skills/aipk_design/update-requirements-from-design/scripts/sharp-runtime/node_modules/sharp/lib/utility.js +291 -0
  101. package/skills/aipk_design/update-requirements-from-design/scripts/sharp-runtime/node_modules/sharp/package.json +202 -0
  102. package/skills/aipk_design/update-requirements-from-design/scripts/sharp-runtime/node_modules/sharp/src/binding.gyp +298 -0
  103. package/skills/aipk_design/update-requirements-from-design/scripts/sharp-runtime/node_modules/sharp/src/common.cc +1130 -0
  104. package/skills/aipk_design/update-requirements-from-design/scripts/sharp-runtime/node_modules/sharp/src/common.h +402 -0
  105. package/skills/aipk_design/update-requirements-from-design/scripts/sharp-runtime/node_modules/sharp/src/metadata.cc +346 -0
  106. package/skills/aipk_design/update-requirements-from-design/scripts/sharp-runtime/node_modules/sharp/src/metadata.h +90 -0
  107. package/skills/aipk_design/update-requirements-from-design/scripts/sharp-runtime/node_modules/sharp/src/operations.cc +499 -0
  108. package/skills/aipk_design/update-requirements-from-design/scripts/sharp-runtime/node_modules/sharp/src/operations.h +137 -0
  109. package/skills/aipk_design/update-requirements-from-design/scripts/sharp-runtime/node_modules/sharp/src/pipeline.cc +1814 -0
  110. package/skills/aipk_design/update-requirements-from-design/scripts/sharp-runtime/node_modules/sharp/src/pipeline.h +408 -0
  111. package/skills/aipk_design/update-requirements-from-design/scripts/sharp-runtime/node_modules/sharp/src/sharp.cc +43 -0
  112. package/skills/aipk_design/update-requirements-from-design/scripts/sharp-runtime/node_modules/sharp/src/stats.cc +186 -0
  113. package/skills/aipk_design/update-requirements-from-design/scripts/sharp-runtime/node_modules/sharp/src/stats.h +62 -0
  114. package/skills/aipk_design/update-requirements-from-design/scripts/sharp-runtime/node_modules/sharp/src/utilities.cc +288 -0
  115. package/skills/aipk_design/update-requirements-from-design/scripts/sharp-runtime/node_modules/sharp/src/utilities.h +22 -0
  116. package/skills/aipk_design/update-requirements-from-design/scripts/sharp-runtime/package-lock.json +529 -0
  117. package/skills/aipk_design/update-requirements-from-design/scripts/sharp-runtime/package.json +5 -0
  118. package/skills/aipk_design/{auto_panel_splitter/scripts/auto_panel_splitter_bundle.js → update-requirements-from-design/scripts/split-design-boards-bundle.js} +10 -1
  119. package/skills/aipk_design/{auto_panel_splitter/scripts/panel_asset_mapper_bundle.js → update-requirements-from-design/scripts/sync-design-to-requirements-bundle.js} +10 -1
  120. package/skills/aipk_development/GURU_AI.md +1 -1
  121. package/skills/aipk_init_project/GURU_AI.md +2 -2
  122. package/skills/aipk_init_project/template/AGENTS_TEMPLATE.md +1 -1
  123. package/skills/aipk_operations/GURU_AI.md +1 -1
  124. package/skills/aipk_requirements/GURU_AI.md +2 -2
  125. package/skills/aipk_requirements/documentation/SKILL.md +23 -1
  126. package/skills/aipk_skill_generate/GURU_AI.md +1 -1
  127. package/skills/aipk_tool_prompts/GURU_AI.md +1 -1
  128. /package/skills/aipk_design/{auto_panel_splitter → update-requirements-from-design}/scripts/auto_panel_splitter.js +0 -0
  129. /package/skills/aipk_design/{auto_panel_splitter → update-requirements-from-design}/scripts/panel_asset_mapper.js +0 -0
@@ -0,0 +1,402 @@
1
+ /*!
2
+ Copyright 2013 Lovell Fuller and others.
3
+ SPDX-License-Identifier: Apache-2.0
4
+ */
5
+
6
+ #ifndef SRC_COMMON_H_
7
+ #define SRC_COMMON_H_
8
+
9
+ #include <atomic>
10
+ #include <string>
11
+ #include <tuple>
12
+ #include <utility>
13
+ #include <vector>
14
+
15
+ #include <napi.h>
16
+ #include <vips/vips8>
17
+
18
+ // Verify platform and compiler compatibility
19
+
20
+ #if (VIPS_MAJOR_VERSION < 8) || \
21
+ (VIPS_MAJOR_VERSION == 8 && VIPS_MINOR_VERSION < 17) || \
22
+ (VIPS_MAJOR_VERSION == 8 && VIPS_MINOR_VERSION == 17 && VIPS_MICRO_VERSION < 3)
23
+ #error "libvips version 8.17.3+ is required - please see https://sharp.pixelplumbing.com/install"
24
+ #endif
25
+
26
+ #if defined(__has_include)
27
+ #if !__has_include(<filesystem>)
28
+ #error "C++17 compiler required - please see https://sharp.pixelplumbing.com/install"
29
+ #endif
30
+ #endif
31
+
32
+ using vips::VImage;
33
+
34
+ namespace sharp {
35
+
36
+ struct InputDescriptor {
37
+ std::string name;
38
+ std::string file;
39
+ bool autoOrient;
40
+ char *buffer;
41
+ VipsFailOn failOn;
42
+ uint64_t limitInputPixels;
43
+ bool unlimited;
44
+ VipsAccess access;
45
+ size_t bufferLength;
46
+ bool isBuffer;
47
+ double density;
48
+ bool ignoreIcc;
49
+ VipsBandFormat rawDepth;
50
+ int rawChannels;
51
+ int rawWidth;
52
+ int rawHeight;
53
+ bool rawPremultiplied;
54
+ int rawPageHeight;
55
+ int pages;
56
+ int page;
57
+ int createChannels;
58
+ int createWidth;
59
+ int createHeight;
60
+ int createPageHeight;
61
+ std::vector<double> createBackground;
62
+ std::string createNoiseType;
63
+ double createNoiseMean;
64
+ double createNoiseSigma;
65
+ std::string textValue;
66
+ std::string textFont;
67
+ std::string textFontfile;
68
+ int textWidth;
69
+ int textHeight;
70
+ VipsAlign textAlign;
71
+ bool textJustify;
72
+ int textDpi;
73
+ bool textRgba;
74
+ int textSpacing;
75
+ VipsTextWrap textWrap;
76
+ int textAutofitDpi;
77
+ bool joinAnimated;
78
+ int joinAcross;
79
+ int joinShim;
80
+ std::vector<double> joinBackground;
81
+ VipsAlign joinHalign;
82
+ VipsAlign joinValign;
83
+ std::string svgStylesheet;
84
+ bool svgHighBitdepth;
85
+ int tiffSubifd;
86
+ int openSlideLevel;
87
+ std::vector<double> pdfBackground;
88
+ bool jp2Oneshot;
89
+
90
+ InputDescriptor():
91
+ autoOrient(false),
92
+ buffer(nullptr),
93
+ failOn(VIPS_FAIL_ON_WARNING),
94
+ limitInputPixels(0x3FFF * 0x3FFF),
95
+ unlimited(false),
96
+ access(VIPS_ACCESS_SEQUENTIAL),
97
+ bufferLength(0),
98
+ isBuffer(false),
99
+ density(72.0),
100
+ ignoreIcc(false),
101
+ rawDepth(VIPS_FORMAT_UCHAR),
102
+ rawChannels(0),
103
+ rawWidth(0),
104
+ rawHeight(0),
105
+ rawPremultiplied(false),
106
+ rawPageHeight(0),
107
+ pages(1),
108
+ page(0),
109
+ createChannels(0),
110
+ createWidth(0),
111
+ createHeight(0),
112
+ createPageHeight(0),
113
+ createBackground{ 0.0, 0.0, 0.0, 255.0 },
114
+ createNoiseMean(0.0),
115
+ createNoiseSigma(0.0),
116
+ textWidth(0),
117
+ textHeight(0),
118
+ textAlign(VIPS_ALIGN_LOW),
119
+ textJustify(false),
120
+ textDpi(72),
121
+ textRgba(false),
122
+ textSpacing(0),
123
+ textWrap(VIPS_TEXT_WRAP_WORD),
124
+ textAutofitDpi(0),
125
+ joinAnimated(false),
126
+ joinAcross(1),
127
+ joinShim(0),
128
+ joinBackground{ 0.0, 0.0, 0.0, 255.0 },
129
+ joinHalign(VIPS_ALIGN_LOW),
130
+ joinValign(VIPS_ALIGN_LOW),
131
+ svgHighBitdepth(false),
132
+ tiffSubifd(-1),
133
+ openSlideLevel(0),
134
+ pdfBackground{ 255.0, 255.0, 255.0, 255.0 },
135
+ jp2Oneshot(false) {}
136
+ };
137
+
138
+ // Convenience methods to access the attributes of a Napi::Object
139
+ bool HasAttr(Napi::Object obj, std::string attr);
140
+ std::string AttrAsStr(Napi::Object obj, std::string attr);
141
+ std::string AttrAsStr(Napi::Object obj, unsigned int const attr);
142
+ uint32_t AttrAsUint32(Napi::Object obj, std::string attr);
143
+ int32_t AttrAsInt32(Napi::Object obj, std::string attr);
144
+ int32_t AttrAsInt32(Napi::Object obj, unsigned int const attr);
145
+ double AttrAsDouble(Napi::Object obj, std::string attr);
146
+ double AttrAsDouble(Napi::Object obj, unsigned int const attr);
147
+ bool AttrAsBool(Napi::Object obj, std::string attr);
148
+ std::vector<double> AttrAsVectorOfDouble(Napi::Object obj, std::string attr);
149
+ std::vector<int32_t> AttrAsInt32Vector(Napi::Object obj, std::string attr);
150
+ template <class T> T AttrAsEnum(Napi::Object obj, std::string attr, GType type) {
151
+ return static_cast<T>(
152
+ vips_enum_from_nick(nullptr, type, AttrAsStr(obj, attr).data()));
153
+ }
154
+
155
+ // Create an InputDescriptor instance from a Napi::Object describing an input image
156
+ InputDescriptor* CreateInputDescriptor(Napi::Object input);
157
+
158
+ enum class ImageType {
159
+ JPEG,
160
+ PNG,
161
+ WEBP,
162
+ JP2,
163
+ TIFF,
164
+ GIF,
165
+ SVG,
166
+ HEIF,
167
+ PDF,
168
+ MAGICK,
169
+ OPENSLIDE,
170
+ PPM,
171
+ FITS,
172
+ EXR,
173
+ JXL,
174
+ RAD,
175
+ DCRAW,
176
+ VIPS,
177
+ RAW,
178
+ UNKNOWN,
179
+ MISSING
180
+ };
181
+
182
+ enum class Canvas {
183
+ CROP,
184
+ EMBED,
185
+ MAX,
186
+ MIN,
187
+ IGNORE_ASPECT
188
+ };
189
+
190
+ // How many tasks are in the queue?
191
+ extern std::atomic<int> counterQueue;
192
+
193
+ // How many tasks are being processed?
194
+ extern std::atomic<int> counterProcess;
195
+
196
+ // Filename extension checkers
197
+ bool IsJpeg(std::string const &str);
198
+ bool IsPng(std::string const &str);
199
+ bool IsWebp(std::string const &str);
200
+ bool IsJp2(std::string const &str);
201
+ bool IsGif(std::string const &str);
202
+ bool IsTiff(std::string const &str);
203
+ bool IsHeic(std::string const &str);
204
+ bool IsHeif(std::string const &str);
205
+ bool IsAvif(std::string const &str);
206
+ bool IsJxl(std::string const &str);
207
+ bool IsDz(std::string const &str);
208
+ bool IsDzZip(std::string const &str);
209
+ bool IsV(std::string const &str);
210
+
211
+ /*
212
+ Trim space from end of string.
213
+ */
214
+ std::string TrimEnd(std::string const &str);
215
+
216
+ /*
217
+ Provide a string identifier for the given image type.
218
+ */
219
+ std::string ImageTypeId(ImageType const imageType);
220
+
221
+ /*
222
+ Determine image format of a buffer.
223
+ */
224
+ ImageType DetermineImageType(void *buffer, size_t const length);
225
+
226
+ /*
227
+ Determine image format of a file.
228
+ */
229
+ ImageType DetermineImageType(char const *file);
230
+
231
+ /*
232
+ Format-specific options builder
233
+ */
234
+ vips::VOption* GetOptionsForImageType(ImageType imageType, InputDescriptor *descriptor);
235
+
236
+ /*
237
+ Open an image from the given InputDescriptor (filesystem, compressed buffer, raw pixel data)
238
+ */
239
+ std::tuple<VImage, ImageType> OpenInput(InputDescriptor *descriptor);
240
+
241
+ /*
242
+ Does this image have an embedded profile?
243
+ */
244
+ bool HasProfile(VImage image);
245
+
246
+ /*
247
+ Get copy of embedded profile.
248
+ */
249
+ std::pair<char*, size_t> GetProfile(VImage image);
250
+
251
+ /*
252
+ Set embedded profile.
253
+ */
254
+ VImage SetProfile(VImage image, std::pair<char*, size_t> icc);
255
+
256
+ /*
257
+ Remove all EXIF-related image fields.
258
+ */
259
+ VImage RemoveExif(VImage image);
260
+
261
+ /*
262
+ Get EXIF Orientation of image, if any.
263
+ */
264
+ int ExifOrientation(VImage image);
265
+
266
+ /*
267
+ Set EXIF Orientation of image.
268
+ */
269
+ VImage SetExifOrientation(VImage image, int const orientation);
270
+
271
+ /*
272
+ Remove EXIF Orientation from image.
273
+ */
274
+ VImage RemoveExifOrientation(VImage image);
275
+
276
+ /*
277
+ Set animation properties if necessary.
278
+ */
279
+ VImage SetAnimationProperties(VImage image, int nPages, int pageHeight, std::vector<int> delay, int loop);
280
+
281
+ /*
282
+ Remove animation properties from image.
283
+ */
284
+ VImage RemoveAnimationProperties(VImage image);
285
+
286
+ /*
287
+ Remove GIF palette from image.
288
+ */
289
+ VImage RemoveGifPalette(VImage image);
290
+
291
+ /*
292
+ Does this image have a non-default density?
293
+ */
294
+ bool HasDensity(VImage image);
295
+
296
+ /*
297
+ Get pixels/mm resolution as pixels/inch density.
298
+ */
299
+ int GetDensity(VImage image);
300
+
301
+ /*
302
+ Set pixels/mm resolution based on a pixels/inch density.
303
+ */
304
+ VImage SetDensity(VImage image, const double density);
305
+
306
+ /*
307
+ Multi-page images can have a page height. Fetch it, and sanity check it.
308
+ If page-height is not set, it defaults to the image height
309
+ */
310
+ int GetPageHeight(VImage image);
311
+
312
+ /*
313
+ Check the proposed format supports the current dimensions.
314
+ */
315
+ void AssertImageTypeDimensions(VImage image, ImageType const imageType);
316
+
317
+ /*
318
+ Called when a Buffer undergoes GC, required to support mixed runtime libraries in Windows
319
+ */
320
+ extern std::function<void(void*, char*)> FreeCallback;
321
+
322
+ /*
323
+ Called with warnings from the glib-registered "VIPS" domain
324
+ */
325
+ void VipsWarningCallback(char const* log_domain, GLogLevelFlags log_level, char const* message, void* ignore);
326
+
327
+ /*
328
+ Pop the oldest warning message from the queue
329
+ */
330
+ std::string VipsWarningPop();
331
+
332
+ /*
333
+ Attach an event listener for progress updates, used to detect timeout
334
+ */
335
+ void SetTimeout(VImage image, int const timeoutSeconds);
336
+
337
+ /*
338
+ Event listener for progress updates, used to detect timeout
339
+ */
340
+ void VipsProgressCallBack(VipsImage *image, VipsProgress *progress, int *timeoutSeconds);
341
+
342
+ /*
343
+ Calculate the (left, top) coordinates of the output image
344
+ within the input image, applying the given gravity during an embed.
345
+ */
346
+ std::tuple<int, int> CalculateEmbedPosition(int const inWidth, int const inHeight,
347
+ int const outWidth, int const outHeight, int const gravity);
348
+
349
+ /*
350
+ Calculate the (left, top) coordinates of the output image
351
+ within the input image, applying the given gravity.
352
+ */
353
+ std::tuple<int, int> CalculateCrop(int const inWidth, int const inHeight,
354
+ int const outWidth, int const outHeight, int const gravity);
355
+
356
+ /*
357
+ Calculate the (left, top) coordinates of the output image
358
+ within the input image, applying the given x and y offsets of the output image.
359
+ */
360
+ std::tuple<int, int> CalculateCrop(int const inWidth, int const inHeight,
361
+ int const outWidth, int const outHeight, int const x, int const y);
362
+
363
+ /*
364
+ Are pixel values in this image 16-bit integer?
365
+ */
366
+ bool Is16Bit(VipsInterpretation const interpretation);
367
+
368
+ /*
369
+ Convert RGBA value to another colourspace
370
+ */
371
+ std::vector<double> GetRgbaAsColourspace(std::vector<double> const rgba,
372
+ VipsInterpretation const interpretation, bool premultiply);
373
+
374
+ /*
375
+ Apply the alpha channel to a given colour
376
+ */
377
+ std::tuple<VImage, std::vector<double>> ApplyAlpha(VImage image, std::vector<double> colour, bool premultiply);
378
+
379
+ /*
380
+ Removes alpha channels, if any.
381
+ */
382
+ VImage RemoveAlpha(VImage image);
383
+
384
+ /*
385
+ Ensures alpha channel, if missing.
386
+ */
387
+ VImage EnsureAlpha(VImage image, double const value);
388
+
389
+ /*
390
+ Calculate the horizontal and vertical shrink factors, taking the canvas mode into account.
391
+ */
392
+ std::pair<double, double> ResolveShrink(int width, int height, int targetWidth, int targetHeight,
393
+ Canvas canvas, bool withoutEnlargement, bool withoutReduction);
394
+
395
+ /*
396
+ Ensure decoding remains sequential.
397
+ */
398
+ VImage StaySequential(VImage image, bool condition = true);
399
+
400
+ } // namespace sharp
401
+
402
+ #endif // SRC_COMMON_H_