LMMS
Loading...
Searching...
No Matches
juce_GraphicsContext.h
Go to the documentation of this file.
1/*
2 ==============================================================================
3
4 This file is part of the JUCE library.
5 Copyright (c) 2022 - Raw Material Software Limited
6
7 JUCE is an open source library subject to commercial or open-source
8 licensing.
9
10 By using JUCE, you agree to the terms of both the JUCE 7 End-User License
11 Agreement and JUCE Privacy Policy.
12
13 End User License Agreement: www.juce.com/juce-7-licence
14 Privacy Policy: www.juce.com/juce-privacy-policy
15
16 Or: You may also use this code under the terms of the GPL v3 (see
17 www.gnu.org/licenses).
18
19 JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER
20 EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE
21 DISCLAIMED.
22
23 ==============================================================================
24*/
25
26namespace juce
27{
28
29//==============================================================================
45{
46public:
47 //==============================================================================
57 explicit Graphics (const Image& imageToDrawOnto);
58
59 //==============================================================================
70 void setColour (Colour newColour);
71
81 void setOpacity (float newOpacity);
82
84 void setGradientFill (const ColourGradient& gradient);
85
87 void setGradientFill (ColourGradient&& gradient);
88
93 void setTiledImageFill (const Image& imageToUse,
94 int anchorX, int anchorY,
95 float opacity);
96
100 void setFillType (const FillType& newFill);
101
102 //==============================================================================
106 void setFont (const Font& newFont);
107
113 void setFont (float newFontHeight);
114
116 Font getCurrentFont() const;
117
130 void drawSingleLineText (const String& text,
131 int startX, int baselineY,
132 Justification justification = Justification::left) const;
133
143 void drawMultiLineText (const String& text,
144 int startX, int baselineY,
145 int maximumLineWidth,
146 Justification justification = Justification::left,
147 float leading = 0.0f) const;
148
158 void drawText (const String& text,
159 int x, int y, int width, int height,
160 Justification justificationType,
161 bool useEllipsesIfTooBig = true) const;
162
172 void drawText (const String& text,
173 Rectangle<int> area,
174 Justification justificationType,
175 bool useEllipsesIfTooBig = true) const;
176
186 void drawText (const String& text,
187 Rectangle<float> area,
188 Justification justificationType,
189 bool useEllipsesIfTooBig = true) const;
190
210 void drawFittedText (const String& text,
211 int x, int y, int width, int height,
212 Justification justificationFlags,
213 int maximumNumberOfLines,
214 float minimumHorizontalScale = 0.0f) const;
215
235 void drawFittedText (const String& text,
236 Rectangle<int> area,
237 Justification justificationFlags,
238 int maximumNumberOfLines,
239 float minimumHorizontalScale = 0.0f) const;
240
241 //==============================================================================
247 void fillAll() const;
248
254 void fillAll (Colour colourToUse) const;
255
256 //==============================================================================
260 void fillRect (Rectangle<int> rectangle) const;
261
265 void fillRect (Rectangle<float> rectangle) const;
266
270 void fillRect (int x, int y, int width, int height) const;
271
275 void fillRect (float x, float y, float width, float height) const;
276
282 void fillRectList (const RectangleList<float>& rectangles) const;
283
289 void fillRectList (const RectangleList<int>& rectangles) const;
290
294 void fillRoundedRectangle (float x, float y, float width, float height,
295 float cornerSize) const;
296
301 float cornerSize) const;
302
305 float checkWidth, float checkHeight,
306 Colour colour1, Colour colour2) const;
307
312 void drawRect (int x, int y, int width, int height, int lineThickness = 1) const;
313
318 void drawRect (float x, float y, float width, float height, float lineThickness = 1.0f) const;
319
324 void drawRect (Rectangle<int> rectangle, int lineThickness = 1) const;
325
330 void drawRect (Rectangle<float> rectangle, float lineThickness = 1.0f) const;
331
335 void drawRoundedRectangle (float x, float y, float width, float height,
336 float cornerSize, float lineThickness) const;
337
342 float cornerSize, float lineThickness) const;
343
344 //==============================================================================
349 void fillEllipse (float x, float y, float width, float height) const;
350
355 void fillEllipse (Rectangle<float> area) const;
356
360 void drawEllipse (float x, float y, float width, float height,
361 float lineThickness) const;
362
366 void drawEllipse (Rectangle<float> area, float lineThickness) const;
367
368 //==============================================================================
374 void drawLine (float startX, float startY, float endX, float endY) const;
375
381 void drawLine (float startX, float startY, float endX, float endY, float lineThickness) const;
382
388 void drawLine (Line<float> line) const;
389
395 void drawLine (Line<float> line, float lineThickness) const;
396
408 void drawDashedLine (Line<float> line,
409 const float* dashLengths, int numDashLengths,
410 float lineThickness = 1.0f,
411 int dashIndexToStartFrom = 0) const;
412
420 void drawVerticalLine (int x, float top, float bottom) const;
421
429 void drawHorizontalLine (int y, float left, float right) const;
430
431 //==============================================================================
433 void fillPath (const Path& path) const;
434
436 void fillPath (const Path& path, const AffineTransform& transform) const;
437
439 void strokePath (const Path& path,
440 const PathStrokeType& strokeType,
441 const AffineTransform& transform = {}) const;
442
450 void drawArrow (Line<float> line,
451 float lineThickness,
452 float arrowheadWidth,
453 float arrowheadLength) const;
454
455
456 //==============================================================================
467
472 void setImageResamplingQuality (const ResamplingQuality newQuality);
473
485 void drawImageAt (const Image& imageToDraw, int topLeftX, int topLeftY,
486 bool fillAlphaChannelWithCurrentBrush = false) const;
487
513 void drawImage (const Image& imageToDraw,
514 int destX, int destY, int destWidth, int destHeight,
515 int sourceX, int sourceY, int sourceWidth, int sourceHeight,
516 bool fillAlphaChannelWithCurrentBrush = false) const;
517
535 void drawImageTransformed (const Image& imageToDraw,
536 const AffineTransform& transform,
537 bool fillAlphaChannelWithCurrentBrush = false) const;
538
552 void drawImage (const Image& imageToDraw, Rectangle<float> targetArea,
554 bool fillAlphaChannelWithCurrentBrush = false) const;
555
577 void drawImageWithin (const Image& imageToDraw,
578 int destX, int destY, int destWidth, int destHeight,
579 RectanglePlacement placementWithinTarget,
580 bool fillAlphaChannelWithCurrentBrush = false) const;
581
582 //==============================================================================
586 Rectangle<int> getClipBounds() const;
587
594 bool clipRegionIntersects (Rectangle<int> area) const;
595
601 bool reduceClipRegion (int x, int y, int width, int height);
602
608 bool reduceClipRegion (Rectangle<int> area);
609
615 bool reduceClipRegion (const RectangleList<int>& clipRegion);
616
622 bool reduceClipRegion (const Path& path, const AffineTransform& transform = AffineTransform());
623
635 bool reduceClipRegion (const Image& image, const AffineTransform& transform);
636
638 void excludeClipRegion (Rectangle<int> rectangleToExclude);
639
641 bool isClipEmpty() const;
642
643 //==============================================================================
648 void saveState();
649
653 void restoreState();
654
660 {
661 public:
664
665 private:
668 };
669
670 //==============================================================================
681 void beginTransparencyLayer (float layerOpacity);
682
687
698 void setOrigin (Point<int> newOrigin);
699
710 void setOrigin (int newOriginX, int newOriginY);
711
720 void addTransform (const AffineTransform& transform);
721
723 void resetToDefaultState();
724
726 bool isVectorDevice() const;
727
728 //==============================================================================
734
737
738private:
739 //==============================================================================
740 std::unique_ptr<LowLevelGraphicsContext> contextHolder;
742
743 bool saveStatePending = false;
744 void saveStateIfPending();
745
747};
748
749} // namespace juce
#define noexcept
Definition DistrhoDefines.h:72
#define final
Definition DistrhoDefines.h:74
static void drawLine(const Point< T > &posStart, const Point< T > &posEnd)
Definition OpenGL.cpp:79
Definition juce_AffineTransform.h:43
Definition juce_ColourGradient.h:38
Definition juce_Colour.h:38
Definition juce_FillType.h:41
Definition juce_Font.h:42
Graphics & context
Definition juce_GraphicsContext.h:666
ScopedSaveState(Graphics &)
Definition juce_GraphicsContext.cpp:859
void setOpacity(float newOpacity)
Definition juce_GraphicsContext.cpp:284
void drawText(const String &text, int x, int y, int width, int height, Justification justificationType, bool useEllipsesIfTooBig=true) const
Definition juce_GraphicsContext.cpp:456
void saveStateIfPending()
Definition juce_GraphicsContext.cpp:235
void drawFittedText(const String &text, int x, int y, int width, int height, Justification justificationFlags, int maximumNumberOfLines, float minimumHorizontalScale=0.0f) const
Definition juce_GraphicsContext.cpp:500
Font getCurrentFont() const
Definition juce_GraphicsContext.cpp:325
void setFont(const Font &newFont)
Definition juce_GraphicsContext.cpp:314
void fillRectList(const RectangleList< float > &rectangles) const
Definition juce_GraphicsContext.cpp:530
ResamplingQuality
Definition juce_GraphicsContext.h:462
@ highResamplingQuality
Definition juce_GraphicsContext.h:465
@ lowResamplingQuality
Definition juce_GraphicsContext.h:463
@ mediumResamplingQuality
Definition juce_GraphicsContext.h:464
void setFillType(const FillType &newFill)
Definition juce_GraphicsContext.cpp:307
void drawArrow(Line< float > line, float lineThickness, float arrowheadWidth, float arrowheadLength) const
Definition juce_GraphicsContext.cpp:672
void setGradientFill(const ColourGradient &gradient)
Definition juce_GraphicsContext.cpp:290
void fillRoundedRectangle(float x, float y, float width, float height, float cornerSize) const
Definition juce_GraphicsContext.cpp:647
void drawRect(int x, int y, int width, int height, int lineThickness=1) const
Definition juce_GraphicsContext.cpp:588
void endTransparencyLayer()
Definition juce_GraphicsContext.cpp:272
LowLevelGraphicsContext & context
Definition juce_GraphicsContext.h:741
void setTiledImageFill(const Image &imageToUse, int anchorX, int anchorY, float opacity)
Definition juce_GraphicsContext.cpp:300
void addTransform(const AffineTransform &transform)
Definition juce_GraphicsContext.cpp:255
void fillRect(Rectangle< int > rectangle) const
Definition juce_GraphicsContext.cpp:510
void drawVerticalLine(int x, float top, float bottom) const
Definition juce_GraphicsContext.cpp:727
void beginTransparencyLayer(float layerOpacity)
Definition juce_GraphicsContext.cpp:266
void drawMultiLineText(const String &text, int startX, int baselineY, int maximumLineWidth, Justification justification=Justification::left, float leading=0.0f) const
Definition juce_GraphicsContext.cpp:382
void fillPath(const Path &path) const
Definition juce_GraphicsContext.cpp:561
Graphics(const Image &imageToDrawOnto)
Definition juce_GraphicsContext.cpp:148
void resetToDefaultState()
Definition juce_GraphicsContext.cpp:161
void drawEllipse(float x, float y, float width, float height, float lineThickness) const
Definition juce_GraphicsContext.cpp:623
void drawSingleLineText(const String &text, int startX, int baselineY, Justification justification=Justification::left) const
Definition juce_GraphicsContext.cpp:331
bool saveStatePending
Definition juce_GraphicsContext.h:743
void fillCheckerBoard(Rectangle< float > area, float checkWidth, float checkHeight, Colour colour1, Colour colour2) const
Definition juce_GraphicsContext.cpp:679
bool isVectorDevice() const
Definition juce_GraphicsContext.cpp:169
void drawHorizontalLine(int y, float left, float right) const
Definition juce_GraphicsContext.cpp:733
void setColour(Colour newColour)
Definition juce_GraphicsContext.cpp:278
std::unique_ptr< LowLevelGraphicsContext > contextHolder
Definition juce_GraphicsContext.h:740
void strokePath(const Path &path, const PathStrokeType &strokeType, const AffineTransform &transform={}) const
Definition juce_GraphicsContext.cpp:573
void fillAll() const
Definition juce_GraphicsContext.cpp:541
void setOrigin(Point< int > newOrigin)
Definition juce_GraphicsContext.cpp:244
void drawRoundedRectangle(float x, float y, float width, float height, float cornerSize, float lineThickness) const
Definition juce_GraphicsContext.cpp:659
void drawDashedLine(Line< float > line, const float *dashLengths, int numDashLengths, float lineThickness=1.0f, int dashIndexToStartFrom=0) const
Definition juce_GraphicsContext.cpp:761
void fillEllipse(float x, float y, float width, float height) const
Definition juce_GraphicsContext.cpp:618
LowLevelGraphicsContext & getInternalContext() const noexcept
Definition juce_GraphicsContext.h:736
Definition juce_Image.h:58
Definition juce_Justification.h:41
@ left
Definition juce_Justification.h:108
Definition juce_Line.h:47
Definition juce_LowLevelGraphicsContext.h:46
Definition juce_Path.h:65
Definition juce_PathStrokeType.h:42
Definition juce_Point.h:42
Definition juce_Rectangle.h:67
Definition juce_RectangleList.h:43
Definition juce_RectanglePlacement.h:40
@ stretchToFit
Definition juce_RectanglePlacement.h:90
Definition juce_String.h:53
int y
Definition inflate.c:1588
unsigned x[BMAX+1]
Definition inflate.c:1586
struct @113205115357366127300225113341150224053346037032::@137033172036070230260373056156374243321245367362 left
struct @113205115357366127300225113341150224053346037032::@137033172036070230260373056156374243321245367362 right
static int int height
Definition pugl.h:1594
static int width
Definition pugl.h:1593
#define JUCE_DECLARE_NON_COPYABLE(className)
#define JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR(className)
#define JUCE_API
Definition juce_StandardHeader.h:152
Definition carla_juce.cpp:31
const char * text
Definition swell-functions.h:167
#define const
Definition zconf.h:137