28namespace Util = MacOSX::Util;
40template<
class SRC,
class DST>
41struct GradientFactory {
46 "GradientFactory::CreateGradient, parameter 'colorSpace' is null");
48 "GradientFactory::CreateGradient, parameter 'extendedColor' is null");
64struct GradientFactory<
DST,
DST> {
69 "GradientFactory::CreateGradient, parameter 'colorSpace' is null");
71 "GradientFactory::CreateGradient, parameter 'extendedColor' is null");
79struct GradientParameters {
118 assert(
nPoints > 2 &&
"FindBoundingBox, invalid number of points in a polygon");
119 assert(
xy !=
nullptr &&
"FindBoundingBox, parameter 'xy' is null");
141template<
class GradientType>
145 GradientParameters ¶ms)
148 "CalculateGradientStartEnd, parameter 'grad' is null");
150 "CalculateGradientStartEnd, invalid destination drawable size");
152 "CalculateGradientStartEnd, parameter 'n' is not a valid number of points");
154 "CalculateGradientStartEnd, parameter 'polygon' is null");
163 if (!bbox.size.width || !bbox.size.height)
169 start.x = bbox.size.width *
start.x + bbox.origin.x;
170 end.x = bbox.size.width *
end.x + bbox.origin.x;
172 start.y = bbox.size.height *
start.y + bbox.origin.y;
173 end.y = bbox.size.height *
end.y + bbox.origin.y;
181 params.fStartPoint =
start;
182 params.fEndPoint =
end;
191 GradientParameters ¶ms)
193 assert(grad !=
nullptr &&
"CalculateGradientRadiuses, parameter 'grad' is null");
195 "CalculateGradientRadiuses, invalid destination drawable size");
197 "CalculateGradientRadiuses, extended radial gradient expected");
198 assert(
n > 2 &&
"CalculateGradientRadiuses, parameter 'n' is not a valid number of points");
200 "CalculateGradientRadiuses, parameter 'polygon' is null");
204 if (!bbox.size.width || !bbox.size.height)
211 const CGFloat
scale = std::max(bbox.size.width, bbox.size.height);
232 GradientParameters ¶ms)
235 "CalculateSimpleRadialGradientParameters, parameter 'grad' is null");
237 "CalculateSimpleRadialGradientParameters, invalid gradient type");
239 "CCalculateSimpleRadialGradientParameters, invalid destination drawable size");
241 "CalculateSimpleRadialGradientParameters, parameter 'n' is not a valid number of points");
243 "CalculateSimpleRadialGradientParameters, parameter 'polygon' is null");
247 if (!bbox.size.width || !bbox.size.height)
255 radius *= std::max(bbox.size.width, bbox.size.height);
256 center.x = bbox.size.width * center.x + bbox.origin.x;
257 center.y = bbox.size.height * center.y + bbox.origin.y;
264 params.fStartPoint = center;
265 params.fStartRadius =
radius;
274 GradientParameters ¶ms)
277 "CalculateGradientParameters, parameter 'extendedColor' is null");
279 "CalculateGradientParameters, invalid destination drawable size");
280 assert(
n > 2 &&
"CalculateGradientParameters, parameter 'n' is not a valid number of points");
282 "CalculateGradientParameters, parameter 'polygon' is null");
296 assert(0 &&
"CalculateGradientParamters, unknown gradient type");
306 assert(ctx !=
nullptr &&
"SetFillColor, ctx parameter is null");
317 const CGFloat alpha = color->
GetAlpha();
329 assert(
data !=
nullptr &&
"DrawPattern, data parameter is null");
330 assert(ctx !=
nullptr &&
"DrawPattern, ctx parameter is null");
335 for (
int i = 30,
y = 0; i >= 0; i -= 2, ++
y) {
337 for (
int j = 0;
j < 8; ++
j, ++
x) {
342 for (
int j = 0;
j < 8; ++
j, ++
x) {
352 assert(ctx !=
nullptr &&
"SetFillPattern, ctx parameter is null");
393 assert(ctx !=
nullptr &&
"SetFillAreaParameters, ctx parameter is null");
400 ::Error(
"SetFillAreaParameters",
"Line color for index %d was not found",
int(
gVirtualX->GetLineColor()));
406 ::Error(
"SetFillAreaParameters",
"Fill color for index %d was not found",
int(
gVirtualX->GetFillColor()));
418 ::Error(
"SetFillAreaParameters",
"SetFillPattern failed");
449 assert(ctx !=
nullptr &&
"DrawFillArea, ctx parameter is null");
450 assert(
xy !=
nullptr &&
"DrawFillArea, xy parameter is null");
455 for (
Int_t i = 1; i <
n; ++i)
484 assert(ctx !=
nullptr &&
"DrawPolygonWithGradientFill, ctx parameter is null");
485 assert(
nPoints != 0 &&
"DrawPolygonWithGradientFill, nPoints parameter is 0");
486 assert(
xy !=
nullptr &&
"DrawPolygonWithGradientFill, xy parameter is null");
488 "DrawPolygonWithGradientFill, extendedColor parameter is null");
495 ::Error(
"DrawPolygonWithGradientFill",
"CGPathCreateMutable failed");
502 ::Error(
"DrawPolygonWithGradientFill",
"CGColorSpaceCreateDeviceRGB failed");
508 if (!gradient.Get()) {
509 ::Error(
"DrawPolygonWithGradientFill",
"CGGradientCreateWithColorComponents failed");
536 GradientParameters params;
541 if (
gr && (params.fStartRadius || params.fEndRadius)) {
544 params.fStartPoint, params.fStartRadius,
549 params.fEndPoint, params.fEndRadius,
555 params.fStartPoint, params.fEndPoint,
const unsigned char gStipples[26][32]
ROOT::Detail::TRangeCast< T, true > TRangeDynCast
TRangeDynCast is an adapter class that allows the typed iteration through a TCollection.
void Error(const char *location, const char *msgfmt,...)
Use this function in case an error occurred.
Option_t Option_t TPoint TPoint const char GetTextMagnitude GetFillStyle GetLineColor GetLineWidth GetMarkerStyle GetTextAlign GetTextColor GetTextSize void data
Option_t Option_t DrawFillArea
Option_t Option_t SetLineColor
Option_t Option_t TPoint TPoint const char x2
Option_t Option_t TPoint TPoint const char x1
Option_t Option_t TPoint xy
Option_t Option_t TPoint TPoint const char mode
Option_t Option_t TPoint TPoint const char y2
Option_t Option_t SetFillColor
Option_t Option_t TPoint TPoint const char y1
TColorGradient extends basic TColor.
ECoordinateMode GetCoordinateMode() const
Get coordinate mode.
The color creation and management class.
virtual void GetRGB(Float_t &r, Float_t &g, Float_t &b) const
static Int_t GetColor(const char *hexcolor)
Static method returning color number for color specified by hex color string of form: "#rrggbb",...
Double_t GetRadius() const
Get radius.
Double_t GetR2() const
Get R2.
const Point & GetCenter() const
Get center.
EGradientType GetGradientType() const
Get gradient type.
void DrawBox(CGContextRef ctx, Int_t x1, Int_t y1, Int_t x2, Int_t y2, bool hollow)
void DrawPattern(void *data, CGContextRef ctx)
Bool_t SetFillAreaParameters(CGContextRef ctx, unsigned *patternIndex)
void DrawPolygonWithGradientFill(CGContextRef ctx, const TColorGradient *extendedColor, const CGSize &sizeOfDrawable, Int_t nPoints, const TPoint *xy, Bool_t drawShadow)
bool SetFillPattern(CGContextRef ctx, const unsigned *patternIndex)
tbb::task_arena is an alias of tbb::interface7::task_arena, which doesn't allow to forward declare tb...