31#define WARN_ABOUT_NON_POSTSCRIPT_OPERATIONS 0
34#if JUCE_DEBUG && WARN_ABOUT_NON_POSTSCRIPT_OPERATIONS
35 #define notPossibleInPostscriptAssert jassertfalse
37 #define notPossibleInPostscriptAssert
42 const String& documentTitle,
43 const int totalWidth_,
44 const int totalHeight_)
45 :
out (resultingPostScript),
53 const float scale =
jmin ((520.0f / (
float) totalWidth_), (750.0f / (
float)
totalHeight));
55 out <<
"%!PS-Adobe-3.0 EPSF-3.0"
56 "\n%%BoundingBox: 0 0 600 824"
58 "\n%%Creator: Raw Material Software Limited - JUCE"
59 "\n%%Title: " << documentTitle <<
60 "\n%%CreationDate: none"
61 "\n%%LanguageLevel: 2"
64 "\n%%BeginResource: JRes"
65 "\n/bd {bind def} bind def"
66 "\n/c {setrgbcolor} bd"
71 "\n/cp {closepath} bd"
72 "\n/pr {3 index 3 index moveto 1 index 0 rlineto 0 1 index rlineto pop neg 0 rlineto pop pop closepath} bd"
73 "\n/doclip {initclip newpath} bd"
74 "\n/endclip {clip newpath} bd"
81 "\n%%EndPageSetup\n\n"
82 <<
"40 800 translate\n"
83 << scale <<
' ' << scale <<
" scale\n\n";
119 return stateStack.getLast()->clip.clipTo (clipRegion);
201 if (++itemsOnLine == 6)
207 out <<
i.getX() <<
' ' << -
i.getY() <<
' '
208 <<
i.getWidth() <<
' ' << -
i.getHeight() <<
" pr ";
224 <<
String (
c.getFloatGreen(), 3) <<
' '
225 <<
String (
c.getFloatBlue(), 3) <<
" c\n";
247 if (++itemsOnLine == 4)
253 switch (
i.elementType)
271 const float cp1x = lastX + (
i.x1 - lastX) * 2.0f / 3.0f;
272 const float cp1y = lastY + (
i.y1 - lastY) * 2.0f / 3.0f;
273 const float cp2x = cp1x + (
i.x2 - lastX) / 3.0f;
274 const float cp2y = cp1y + (
i.y2 - lastY) / 3.0f;
310 << trans.
mat00 <<
' '
311 << trans.
mat10 <<
' '
312 << trans.
mat01 <<
' '
313 << trans.
mat11 <<
' '
314 << trans.
mat02 <<
' '
315 << trans.
mat12 <<
" ] concat ";
340 if (
stateStack.getLast()->fillType.isColour())
345 auto r2 =
r.translated ((
float)
stateStack.getLast()->xOffset,
348 out <<
r2.getX() <<
' ' << -
r2.getBottom() <<
' ' <<
r2.getWidth() <<
' ' <<
r2.getHeight() <<
" rectfill\n";
366 if (
stateStack.getLast()->fillType.isColour())
371 p.applyTransform (
t.translated ((
float)
stateStack.getLast()->xOffset,
379 else if (
stateStack.getLast()->fillType.isGradient())
390 p.applyTransform (
t.translated ((
float)
stateStack.getLast()->xOffset, (
float)
stateStack.getLast()->yOffset));
395 auto bounds =
stateStack.getLast()->clip.getBounds();
400 out << bounds.getX() <<
' ' << -bounds.getBottom() <<
' ' << bounds.getWidth() <<
' ' << bounds.getHeight() <<
" rectfill\n";
408 const int sx,
const int sy,
409 const int maxW,
const int maxH)
const
420 for (
int y =
h; --
y >= 0;)
422 for (
int x = 0;
x <
w; ++
x)
426 if (
x >= sx &&
y >= sy)
453 if (charsOnLine > 100)
481 for (
auto&
i : imageClip)
483 if (++itemsOnLine == 6)
489 out <<
i.getX() <<
' ' <<
i.getY() <<
' ' <<
i.getWidth() <<
' ' <<
i.getHeight() <<
" pr ";
492 out <<
" clip newpath\n";
494 out <<
w <<
' ' <<
h <<
" scale\n";
495 out <<
w <<
' ' <<
h <<
" 8 [" <<
w <<
" 0 0 -" <<
h <<
' ' << (
int) 0 <<
' ' <<
h <<
" ]\n";
499 out <<
"false 3 colorimage grestore\n";
508 p.addLineSegment (line, 1.0f);
Type jmin(const Type a, const Type b)
Definition MathsFunctions.h:60
static String toHexString(int number)
Definition String.cpp:1830
Definition juce_Colour.h:38
uint8 getBlue() const noexcept
Definition juce_Colour.h:178
uint8 getGreen() const noexcept
Definition juce_Colour.h:173
uint8 getRed() const noexcept
Definition juce_Colour.h:168
Definition juce_FillType.h:41
Definition juce_Font.h:42
Typeface::Ptr getTypefacePtr() const
Definition juce_Font.cpp:509
float getHeight() const noexcept
Definition juce_Font.cpp:735
float getHorizontalScale() const noexcept
Definition juce_Font.cpp:678
ResamplingQuality
Definition juce_GraphicsContext.h:462
Definition juce_Image.h:310
uint8 * getPixelPointer(int x, int y) const noexcept
Definition juce_Image.h:334
Definition juce_Image.h:58
int getWidth() const noexcept
Definition juce_Image.cpp:271
bool isRGB() const noexcept
Definition juce_Image.cpp:276
bool isARGB() const noexcept
Definition juce_Image.cpp:275
int getHeight() const noexcept
Definition juce_Image.cpp:272
void createSolidAreaMask(RectangleList< int > &result, float alphaThreshold) const
Definition juce_Image.cpp:567
void writeClip()
Definition juce_LowLevelGraphicsPostScriptRenderer.cpp:189
void fillRect(const Rectangle< int > &, bool replaceExistingContents) override
Definition juce_LowLevelGraphicsPostScriptRenderer.cpp:333
void setInterpolationQuality(Graphics::ResamplingQuality) override
Definition juce_LowLevelGraphicsPostScriptRenderer.cpp:328
bool needToClip
Definition juce_LowLevelGraphicsPostScriptRenderer.h:89
bool isVectorDevice() const override
Definition juce_LowLevelGraphicsPostScriptRenderer.cpp:87
bool clipToRectangle(const Rectangle< int > &) override
Definition juce_LowLevelGraphicsPostScriptRenderer.cpp:110
void setFont(const Font &) override
Definition juce_LowLevelGraphicsPostScriptRenderer.cpp:513
void restoreState() override
Definition juce_LowLevelGraphicsPostScriptRenderer.cpp:172
Colour lastColour
Definition juce_LowLevelGraphicsPostScriptRenderer.h:90
void writeXY(float x, float y) const
Definition juce_LowLevelGraphicsPostScriptRenderer.cpp:229
void writeImage(const Image &, int sx, int sy, int maxW, int maxH) const
Definition juce_LowLevelGraphicsPostScriptRenderer.cpp:407
void drawGlyph(int glyphNumber, const AffineTransform &) override
Definition juce_LowLevelGraphicsPostScriptRenderer.cpp:523
void setOrigin(Point< int >) override
Definition juce_LowLevelGraphicsPostScriptRenderer.cpp:92
void beginTransparencyLayer(float) override
Definition juce_LowLevelGraphicsPostScriptRenderer.cpp:180
void saveState() override
Definition juce_LowLevelGraphicsPostScriptRenderer.cpp:167
int totalHeight
Definition juce_LowLevelGraphicsPostScriptRenderer.h:88
void writePath(const Path &) const
Definition juce_LowLevelGraphicsPostScriptRenderer.cpp:235
Rectangle< int > getClipBounds() const override
Definition juce_LowLevelGraphicsPostScriptRenderer.cpp:149
void clipToPath(const Path &, const AffineTransform &) override
Definition juce_LowLevelGraphicsPostScriptRenderer.cpp:128
bool clipRegionIntersects(const Rectangle< int > &) override
Definition juce_LowLevelGraphicsPostScriptRenderer.cpp:144
void drawImage(const Image &, const AffineTransform &) override
Definition juce_LowLevelGraphicsPostScriptRenderer.cpp:464
void clipToImageAlpha(const Image &, const AffineTransform &) override
Definition juce_LowLevelGraphicsPostScriptRenderer.cpp:138
OwnedArray< SavedState > stateStack
Definition juce_LowLevelGraphicsPostScriptRenderer.h:105
bool clipToRectangleList(const RectangleList< int > &) override
Definition juce_LowLevelGraphicsPostScriptRenderer.cpp:116
const Font & getFont() override
Definition juce_LowLevelGraphicsPostScriptRenderer.cpp:518
int totalWidth
Definition juce_LowLevelGraphicsPostScriptRenderer.h:88
void setFill(const FillType &) override
Definition juce_LowLevelGraphicsPostScriptRenderer.cpp:319
LowLevelGraphicsPostScriptRenderer(OutputStream &resultingPostScript, const String &documentTitle, int totalWidth, int totalHeight)
Definition juce_LowLevelGraphicsPostScriptRenderer.cpp:41
void endTransparencyLayer() override
Definition juce_LowLevelGraphicsPostScriptRenderer.cpp:184
bool isClipEmpty() const override
Definition juce_LowLevelGraphicsPostScriptRenderer.cpp:155
void writeColour(Colour colour)
Definition juce_LowLevelGraphicsPostScriptRenderer.cpp:215
void fillRectList(const RectangleList< float > &) override
Definition juce_LowLevelGraphicsPostScriptRenderer.cpp:358
void writeTransform(const AffineTransform &) const
Definition juce_LowLevelGraphicsPostScriptRenderer.cpp:307
OutputStream & out
Definition juce_LowLevelGraphicsPostScriptRenderer.h:87
void addTransform(const AffineTransform &) override
Definition juce_LowLevelGraphicsPostScriptRenderer.cpp:102
void setOpacity(float) override
Definition juce_LowLevelGraphicsPostScriptRenderer.cpp:324
float getPhysicalPixelScaleFactor() override
Definition juce_LowLevelGraphicsPostScriptRenderer.cpp:108
void drawLine(const Line< float > &) override
Definition juce_LowLevelGraphicsPostScriptRenderer.cpp:505
void excludeClipRectangle(const Rectangle< int > &) override
Definition juce_LowLevelGraphicsPostScriptRenderer.cpp:122
void fillPath(const Path &, const AffineTransform &) override
Definition juce_LowLevelGraphicsPostScriptRenderer.cpp:364
Definition juce_OutputStream.h:38
Definition juce_Path.h:725
@ quadraticTo
Definition juce_Path.h:745
@ closePath
Definition juce_Path.h:747
@ lineTo
Definition juce_Path.h:744
@ cubicTo
Definition juce_Path.h:746
@ startNewSubPath
Definition juce_Path.h:743
Definition juce_Path.h:65
Definition juce_PixelFormats.h:59
Definition juce_PixelFormats.h:354
Definition juce_Point.h:42
constexpr bool isOrigin() const noexcept
Definition juce_Point.h:61
ValueType y
Definition juce_Point.h:247
ValueType x
Definition juce_Point.h:246
Definition juce_Rectangle.h:67
Definition juce_RectangleList.h:43
Definition juce_String.h:53
virtual bool getOutlineForGlyph(int glyphNumber, Path &path)=0
UINT_D64 w
Definition inflate.c:942
struct huft * t
Definition inflate.c:943
int y
Definition inflate.c:1588
register unsigned i
Definition inflate.c:1575
unsigned x[BMAX+1]
Definition inflate.c:1586
static void r2(register WDL_FFT_REAL *a)
Definition fft.c:1089
#define notPossibleInPostscriptAssert
Definition juce_LowLevelGraphicsPostScriptRenderer.cpp:37
const Colour transparentWhite
Definition juce_Colours.h:41
const Colour white
Definition juce_Colours.h:180
Definition carla_juce.cpp:31
unsigned char uint8
Definition juce_MathsFunctions.h:37
@ list
Definition juce_AccessibilityRole.h:56
#define true
Definition ordinals.h:82
Definition juce_LowLevelGraphicsPostScriptRenderer.h:94
SavedState()
Definition juce_LowLevelGraphicsPostScriptRenderer.cpp:161
int yOffset
Definition juce_LowLevelGraphicsPostScriptRenderer.h:100
int xOffset
Definition juce_LowLevelGraphicsPostScriptRenderer.h:100
uch * p
Definition crypt.c:594
return c
Definition crypt.c:175
int r
Definition crypt.c:458
uch h[RAND_HEAD_LEN]
Definition crypt.c:459
typedef int(UZ_EXP MsgFn)()