Max 5 API Reference
The JGraphics API provided in Max 5 is an interface for drawing based on the API for the Cairo vector graphics library ( http://en.wikipedia.org/wiki/Cairo_%28graphics%29 , http://cairographics.org/manual/ ). More...
![]() |
Data Structures | |
struct | t_jgraphics_font_extents |
A structure for holding information related to how much space the rendering of a given font will use. More... | |
Modules | |
JSurface | |
A surface is an abstract base class for something you render to. | |
Scalable Vector Graphics | |
JFont | |
JGraphics Matrix Transformations | |
The t_jmatrix is one way to represent a transformation. | |
JPattern | |
A pattern is like a brush that is used to fill a path with. | |
Colors | |
TextField | |
The textfield is a high-level text display object that may be used by a UI object to represent text in a patcher. | |
TextLayout | |
A textlayout is lower-level text rendering object used by higher-level entities such as TextField. | |
Popup Menus | |
Popup menu API so externals can create popup menus that can also be drawn into. | |
Box Layer | |
The boxlayer functions provide way to make it easier to use cached offscreen images (layers) in your drawing. | |
Defines | |
#define | JGRAPHICS_RECT_BOTTOM(rect) (((rect)->y)+((rect)->height)) |
Determine the coordinate of the bottom of a rect. | |
#define | JGRAPHICS_RECT_RIGHT(rect) (((rect)->x)+((rect)->width)) |
Determine the coordinate of the right side of a rect. | |
#define | JGRAPHICS_PI (3.1415926535897932384626433832795028842) |
Utility macro to return the value of Pi. | |
#define | JGRAPHICS_2PI (2. * 3.1415926535897932384626433832795028842) |
Utility macro to return the value of twice Pi. | |
#define | JGRAPHICS_PIOVER2 (0.5 * 3.1415926535897932384626433832795028842) |
Utility macro to return the value of half of Pi. | |
#define | JGRAPHICS_3PIOVER2 ((3.0 * JGRAPHICS_PI) / 2.0) |
Utility macro to return the 270º Case. | |
Typedefs | |
typedef typedefBEGIN_USING_C_LINKAGE struct _jgraphics | t_jgraphics |
An instance of a jgraphics drawing context. | |
typedef struct _jpath | t_jpath |
An instance of a jgraphics path. | |
typedef struct _jtextlayout | t_jtextlayout |
An instance of a jgraphics text layout object. | |
typedef struct _jtransform | t_jtransform |
An instance of a jgraphics transform. | |
typedef struct _jsvg | t_jsvg |
An instance of an SVG object. | |
typedef struct _jpopupmenu | t_jpopupmenu |
An instance of a pop-up menu. | |
Enumerations | |
enum | t_jgraphics_format { JGRAPHICS_FORMAT_ARGB32, JGRAPHICS_FORMAT_RGB24, JGRAPHICS_FORMAT_A8 } |
Enumeration of color formats used by jgraphics surfaces. More... | |
enum | t_jgraphics_fileformat { JGRAPHICS_FILEFORMAT_PNG, JGRAPHICS_FILEFORMAT_JPEG } |
Enumeration of file formats usable for jgraphics surfaces. More... | |
enum | t_jgraphics_text_justification { JGRAPHICS_TEXT_JUSTIFICATION_LEFT = 1, JGRAPHICS_TEXT_JUSTIFICATION_RIGHT = 2, JGRAPHICS_TEXT_JUSTIFICATION_HCENTERED = 4, JGRAPHICS_TEXT_JUSTIFICATION_TOP = 8, JGRAPHICS_TEXT_JUSTIFICATION_BOTTOM = 16, JGRAPHICS_TEXT_JUSTIFICATION_VCENTERED = 32, JGRAPHICS_TEXT_JUSTIFICATION_HJUSTIFIED = 64, JGRAPHICS_TEXT_JUSTIFICATION_CENTERED = JGRAPHICS_TEXT_JUSTIFICATION_HCENTERED + JGRAPHICS_TEXT_JUSTIFICATION_VCENTERED } |
Enumeration of text justification options, which are specified as a bitmask. More... | |
Functions | |
int | jgraphics_round (double d) |
Utility for rounding a double to an int. | |
t_jgraphics * | jgraphics_reference (t_jgraphics *g) |
Get a reference to a graphics context. | |
void | jgraphics_destroy (t_jgraphics *g) |
Release or free a graphics context. | |
void | jgraphics_new_path (t_jgraphics *g) |
Begin a new path. | |
t_jpath * | jgraphics_copy_path (t_jgraphics *g) |
Get a copy of the current path from a context. | |
void | jgraphics_path_destroy (t_jpath *path) |
Release/free a path. | |
void | jgraphics_append_path (t_jgraphics *g, t_jpath *path) |
Add a path to a graphics context. | |
void | jgraphics_close_path (t_jgraphics *g) |
Close the current path in a context. | |
void | jgraphics_path_roundcorners (t_jgraphics *g, double cornerRadius) |
Round out any corners in a path. | |
void | jgraphics_get_current_point (t_jgraphics *g, double *x, double *y) |
Get the current location of the cursor in a graphics context. | |
void | jgraphics_arc (t_jgraphics *g, double xc, double yc, double radius, double angle1, double angle2) |
Add a circular, clockwise, arc to the current path. | |
void | jgraphics_ovalarc (t_jgraphics *g, double xc, double yc, double radiusx, double radiusy, double angle1, double angle2) |
Add a non-circular arc to the current path. | |
void | jgraphics_arc_negative (t_jgraphics *g, double xc, double yc, double radius, double angle1, double angle2) |
Add a circular, counter-clockwise, arc to the current path. | |
void | jgraphics_curve_to (t_jgraphics *g, double x1, double y1, double x2, double y2, double x3, double y3) |
Add a cubic Bezier spline to the current path. | |
void | jgraphics_rel_curve_to (t_jgraphics *g, double x1, double y1, double x2, double y2, double x3, double y3) |
Add a cubic Bezier spline to the current path, using coordinates relative to the current point. | |
void | jgraphics_line_to (t_jgraphics *g, double x, double y) |
Add a line segment to the current path. | |
void | jgraphics_rel_line_to (t_jgraphics *g, double x, double y) |
Add a line segment to the current path, using coordinates relative to the current point. | |
void | jgraphics_move_to (t_jgraphics *g, double x, double y) |
Move the cursor to a new point and begin a new subpath. | |
void | jgraphics_rel_move_to (t_jgraphics *g, double x, double y) |
Move the cursor to a new point and begin a new subpath, using coordinates relative to the current point. | |
void | jgraphics_rectangle (t_jgraphics *g, double x, double y, double width, double height) |
Add a closed rectangle path in the context. | |
void | jgraphics_oval (t_jgraphics *g, double x, double y, double width, double height) |
Deprecated -- do not use. | |
void | jgraphics_rectangle_rounded (t_jgraphics *g, double x, double y, double width, double height, double ovalwidth, double ovalheight) |
Add a closed rounded-rectangle path in the context. | |
void | jgraphics_ellipse (t_jgraphics *g, double x, double y, double width, double height) |
Add a closed elliptical path in the context. | |
void | jgraphics_select_font_face (t_jgraphics *g, const char *family, t_jgraphics_font_slant slant, t_jgraphics_font_weight weight) |
Specify a font for a graphics context. | |
void | jgraphics_select_jfont (t_jgraphics *g, t_jfont *jfont) |
Specify a font for a graphics context by passing a t_jfont object. | |
void | jgraphics_set_font_size (t_jgraphics *g, double size) |
Specify the font size for a context. | |
void | jgraphics_set_underline (t_jgraphics *g, char underline) |
Turn underlining on/off for text in a context. | |
void | jgraphics_show_text (t_jgraphics *g, const char *utf8) |
Display text at the current position in a context. | |
void | jgraphics_font_extents (t_jgraphics *g, t_jgraphics_font_extents *extents) |
Return the extents of the currently selected font for a given graphics context. | |
void | jgraphics_text_measure (t_jgraphics *g, const char *utf8, double *width, double *height) |
Return the height and width of a string given current graphics settings in a context. | |
void | jgraphics_text_measure_wrapped (t_jgraphics *g, const char *utf8, double wrapwidth, long includewhitespace, double *width, double *height, long *numlines) |
Return the height, width, and number of lines that will be used to render a given string. | |
long | jgraphics_system_canantialiastexttotransparentbg () |
Determine if you can anti-alias text to a transparent background. | |
void | jgraphics_user_to_device (t_jgraphics *g, double *x, double *y) |
User coordinates are those passed to drawing functions in a given t_jgraphics context. | |
void | jgraphics_device_to_user (t_jgraphics *g, double *x, double *y) |
User coordinates are those passed to drawing functions in a given t_jgraphics context. | |
void | jgraphics_getfiletypes (void *dummy, long *count, long **filetypes, char *alloc) |
Get a list of of filetypes appropriate for use with jgraphics surfaces. | |
long | jgraphics_rectintersectsrect (t_rect *r1, t_rect *r2) |
Simple utility to test for rectangle intersection. | |
long | jgraphics_rectcontainsrect (t_rect *outer, t_rect *inner) |
Simple utility to test for rectangle containment. | |
void | jgraphics_position_one_rect_near_another_rect_but_keep_inside_a_third_rect (t_rect *positioned_rect, const t_rect *positioned_near_this_rect, const t_rect *keep_inside_this_rect) |
Generate a t_rect according to positioning rules. |
The JGraphics API provided in Max 5 is an interface for drawing based on the API for the Cairo vector graphics library ( http://en.wikipedia.org/wiki/Cairo_%28graphics%29 , http://cairographics.org/manual/ ).
Internally, the drawing is rendered using JUCE ( http://rawmaterialsoftware.com/juce/ ), however JUCE functions cannot be called directly.
#define JGRAPHICS_2PI (2. * 3.1415926535897932384626433832795028842) |
Utility macro to return the value of twice Pi.
Definition at line 65 of file jgraphics.h.
#define JGRAPHICS_3PIOVER2 ((3.0 * JGRAPHICS_PI) / 2.0) |
Utility macro to return the 270º Case.
Definition at line 71 of file jgraphics.h.
#define JGRAPHICS_PI (3.1415926535897932384626433832795028842) |
Utility macro to return the value of Pi.
Definition at line 62 of file jgraphics.h.
#define JGRAPHICS_PIOVER2 (0.5 * 3.1415926535897932384626433832795028842) |
Utility macro to return the value of half of Pi.
Definition at line 68 of file jgraphics.h.
Enumeration of file formats usable for jgraphics surfaces.
JGRAPHICS_FILEFORMAT_PNG |
Portable Network Graphics (PNG) format. |
JGRAPHICS_FILEFORMAT_JPEG |
JPEG format. |
Definition at line 95 of file jgraphics.h.
enum t_jgraphics_format |
Enumeration of color formats used by jgraphics surfaces.
Definition at line 85 of file jgraphics.h.
Enumeration of text justification options, which are specified as a bitmask.
Definition at line 902 of file jgraphics.h.
void jgraphics_append_path | ( | t_jgraphics * | g, | |
t_jpath * | path | |||
) |
Add a path to a graphics context.
g | The graphics context. | |
path | The path to add. |
void jgraphics_arc | ( | t_jgraphics * | g, | |
double | xc, | |||
double | yc, | |||
double | radius, | |||
double | angle1, | |||
double | angle2 | |||
) |
Add a circular, clockwise, arc to the current path.
g | The graphics context. | |
xc | The horizontal coordinate of the arc's center. | |
yc | The vertical coordinate of the arc's center. | |
radius | The radius of the arc. | |
angle1 | The starting angle of the arc in radians. Zero radians is center right (positive x axis). | |
angle2 | The terminal angle of the arc in radians. Zero radians is center right (positive x axis). |
void jgraphics_arc_negative | ( | t_jgraphics * | g, | |
double | xc, | |||
double | yc, | |||
double | radius, | |||
double | angle1, | |||
double | angle2 | |||
) |
Add a circular, counter-clockwise, arc to the current path.
g | The graphics context. | |
xc | The horizontal coordinate of the arc's center. | |
yc | The vertical coordinate of the arc's center. | |
radius | The radius of the arc. | |
angle1 | The starting angle of the arc in radians. Zero radians is center right (positive x axis). | |
angle2 | The terminal angle of the arc in radians. Zero radians is center right (positive x axis). |
void jgraphics_close_path | ( | t_jgraphics * | g | ) |
Close the current path in a context.
This will add a line segment to close current subpath.
g | The graphics context. |
t_jpath* jgraphics_copy_path | ( | t_jgraphics * | g | ) |
Get a copy of the current path from a context.
g | A copy of the current path. |
void jgraphics_curve_to | ( | t_jgraphics * | g, | |
double | x1, | |||
double | y1, | |||
double | x2, | |||
double | y2, | |||
double | x3, | |||
double | y3 | |||
) |
Add a cubic Bezier spline to the current path.
g | The graphics context. | |
x1 | The first control point. | |
y1 | The first control point. | |
x2 | The second control point. | |
y2 | The second control point. | |
x3 | The destination point. | |
y3 | The destination point. |
void jgraphics_destroy | ( | t_jgraphics * | g | ) |
Release or free a graphics context.
g | The context to release. |
void jgraphics_device_to_user | ( | t_jgraphics * | g, | |
double * | x, | |||
double * | y | |||
) |
User coordinates are those passed to drawing functions in a given t_jgraphics context.
Device coordinates refer to patcher canvas coordinates, before any zooming.
void jgraphics_ellipse | ( | t_jgraphics * | g, | |
double | x, | |||
double | y, | |||
double | width, | |||
double | height | |||
) |
Add a closed elliptical path in the context.
g | The graphics context. | |
x | The horizontal origin. | |
y | The vertical origin. | |
width | The width of the rect. | |
height | The height of the rect. |
void jgraphics_font_extents | ( | t_jgraphics * | g, | |
t_jgraphics_font_extents * | extents | |||
) |
Return the extents of the currently selected font for a given graphics context.
g | Pointer to a jgraphics context. | |
extents | The address of a t_jgraphics_font_extents structure to be filled with the results. |
void jgraphics_get_current_point | ( | t_jgraphics * | g, | |
double * | x, | |||
double * | y | |||
) |
Get the current location of the cursor in a graphics context.
g | The graphics context. | |
x | The address of a variable that will be set to the horizontal cursor location upon return. | |
y | The address of a variable that will be set to the vertical cursor location upon return. |
void jgraphics_getfiletypes | ( | void * | dummy, | |
long * | count, | |||
long ** | filetypes, | |||
char * | alloc | |||
) |
Get a list of of filetypes appropriate for use with jgraphics surfaces.
dummy | Unused. | |
count | The address of a variable to be set with the number of types in filetypes upon return. | |
filetypes | The address of a variable that will represent the array of file types upon return. | |
alloc | The address of a char that will be flagged with a 1 or a 0 depending on whether or not memory was allocated for the filetypes member. |
char filename[MAX_PATH_CHARS]; long *type = NULL; long ntype; long outtype; t_max_err err; char alloc; short path; t_jsurface *surface; if (want_to_show_dialog) { jgraphics_getfiletypes(x, &ntype, &type, &alloc); err = open_dialog(filename, &path,(void *)&outtype, (void *)type, ntype); if (err) goto out; } else { strncpy_zero(filename, s->s_name, MAX_PATH_CHARS); err = locatefile_extended(filename, &path, &outtype, type, ntype); if (err) goto out; } surface = jgraphics_image_surface_create_referenced(filename, path); out: if (alloc) sysmem_freeptr((char *)type);
void jgraphics_line_to | ( | t_jgraphics * | g, | |
double | x, | |||
double | y | |||
) |
Add a line segment to the current path.
g | The graphics context. | |
x | The destination point. | |
y | The destination point. |
void jgraphics_move_to | ( | t_jgraphics * | g, | |
double | x, | |||
double | y | |||
) |
Move the cursor to a new point and begin a new subpath.
g | The graphics context. | |
x | The new location. | |
y | The new location. |
void jgraphics_new_path | ( | t_jgraphics * | g | ) |
Begin a new path.
This action clears any current path in the context.
g | The graphics context. |
void jgraphics_oval | ( | t_jgraphics * | g, | |
double | x, | |||
double | y, | |||
double | width, | |||
double | height | |||
) |
Deprecated -- do not use.
Adds a closed oval path in the context, however, it does not scale appropriately.
g | The graphics context. | |
x | The horizontal origin. | |
y | The vertical origin. | |
width | The width of the oval. | |
height | The height of the oval. |
void jgraphics_ovalarc | ( | t_jgraphics * | g, | |
double | xc, | |||
double | yc, | |||
double | radiusx, | |||
double | radiusy, | |||
double | angle1, | |||
double | angle2 | |||
) |
Add a non-circular arc to the current path.
g | The graphics context. | |
xc | The horizontal coordinate of the arc's center. | |
yc | The vertical coordinate of the arc's center. | |
radiusx | The horizontal radius of the arc. | |
radiusy | The vertical radius of the arc. | |
angle1 | The starting angle of the arc in radians. Zero radians is center right (positive x axis). | |
angle2 | The terminal angle of the arc in radians. Zero radians is center right (positive x axis). |
void jgraphics_path_destroy | ( | t_jpath * | path | ) |
Release/free a path.
path | The path to release. |
void jgraphics_path_roundcorners | ( | t_jgraphics * | g, | |
double | cornerRadius | |||
) |
Round out any corners in a path.
This action clears any current path in the context.
g | The graphics context. | |
cornerRadius | The amount by which to round corners. |
void jgraphics_position_one_rect_near_another_rect_but_keep_inside_a_third_rect | ( | t_rect * | positioned_rect, | |
const t_rect * | positioned_near_this_rect, | |||
const t_rect * | keep_inside_this_rect | |||
) |
Generate a t_rect according to positioning rules.
positioned_rect | The address of a valid t_rect whose members will be filled in upon return. | |
positioned_near_this_rect | A pointer to a rect near which this rect should be positioned. | |
keep_inside_this_rect | A pointer to a rect defining the limits within which the new rect must reside. |
void jgraphics_rectangle | ( | t_jgraphics * | g, | |
double | x, | |||
double | y, | |||
double | width, | |||
double | height | |||
) |
Add a closed rectangle path in the context.
g | The graphics context. | |
x | The horizontal origin. | |
y | The vertical origin. | |
width | The width of the rect. | |
height | The height of the rect. |
void jgraphics_rectangle_rounded | ( | t_jgraphics * | g, | |
double | x, | |||
double | y, | |||
double | width, | |||
double | height, | |||
double | ovalwidth, | |||
double | ovalheight | |||
) |
Add a closed rounded-rectangle path in the context.
g | The graphics context. | |
x | The horizontal origin. | |
y | The vertical origin. | |
width | The width of the rect. | |
height | The height of the rect. | |
ovalwidth | The width of the oval used for the round corners. | |
ovalheight | The height of the oval used for the round corners. |
Simple utility to test for rectangle containment.
outer | The address of the first rect for the test. | |
inner | The address of the second rect for the test. |
Simple utility to test for rectangle intersection.
r1 | The address of the first rect for the test. | |
r2 | The address of the second rect for the test. |
t_jgraphics* jgraphics_reference | ( | t_jgraphics * | g | ) |
Get a reference to a graphics context.
When you are done you should release your reference with jgraphics_destroy().
g | The context you wish to reference. |
void jgraphics_rel_curve_to | ( | t_jgraphics * | g, | |
double | x1, | |||
double | y1, | |||
double | x2, | |||
double | y2, | |||
double | x3, | |||
double | y3 | |||
) |
Add a cubic Bezier spline to the current path, using coordinates relative to the current point.
g | The graphics context. | |
x1 | The first control point. | |
y1 | The first control point. | |
x2 | The second control point. | |
y2 | The second control point. | |
x3 | The destination point. | |
y3 | The destination point. |
void jgraphics_rel_line_to | ( | t_jgraphics * | g, | |
double | x, | |||
double | y | |||
) |
Add a line segment to the current path, using coordinates relative to the current point.
g | The graphics context. | |
x | The destination point. | |
y | The destination point. |
void jgraphics_rel_move_to | ( | t_jgraphics * | g, | |
double | x, | |||
double | y | |||
) |
Move the cursor to a new point and begin a new subpath, using coordinates relative to the current point.
g | The graphics context. | |
x | The new location. | |
y | The new location. |
int jgraphics_round | ( | double | d | ) |
Utility for rounding a double to an int.
d | floating-point input. |
void jgraphics_select_font_face | ( | t_jgraphics * | g, | |
const char * | family, | |||
t_jgraphics_font_slant | slant, | |||
t_jgraphics_font_weight | weight | |||
) |
Specify a font for a graphics context.
g | The graphics context. | |
family | The name of the font family (e.g. "Arial"). | |
slant | Define the slant to use for the font. | |
weight | Define the weight to use for the font. |
void jgraphics_select_jfont | ( | t_jgraphics * | g, | |
t_jfont * | jfont | |||
) |
Specify a font for a graphics context by passing a t_jfont object.
g | The graphics context. | |
jfont | A jfont object whose attributes will be copied to the context. |
void jgraphics_set_font_size | ( | t_jgraphics * | g, | |
double | size | |||
) |
Specify the font size for a context.
g | The graphics context. | |
size | The font size. |
void jgraphics_set_underline | ( | t_jgraphics * | g, | |
char | underline | |||
) |
Turn underlining on/off for text in a context.
g | The graphics context. | |
underline | Pass true or false to set the appropriate behavior. |
void jgraphics_show_text | ( | t_jgraphics * | g, | |
const char * | utf8 | |||
) |
Display text at the current position in a context.
g | The graphics context. | |
utf8 | The text to display. |
long jgraphics_system_canantialiastexttotransparentbg | ( | ) |
Determine if you can anti-alias text to a transparent background.
You might want to call this and then disable "useimagebuffer" if false *and* you are rendering text on a transparent background.
void jgraphics_text_measure | ( | t_jgraphics * | g, | |
const char * | utf8, | |||
double * | width, | |||
double * | height | |||
) |
Return the height and width of a string given current graphics settings in a context.
g | Pointer to a jgraphics context. | |
utf8 | A string containing the text whose dimensions we wish to find. | |
width | The address of a variable to be filled with the width of the rendered text. | |
height | The address of a variable to be filled with the height of the rendered text. |
void jgraphics_text_measure_wrapped | ( | t_jgraphics * | g, | |
const char * | utf8, | |||
double | wrapwidth, | |||
long | includewhitespace, | |||
double * | width, | |||
double * | height, | |||
long * | numlines | |||
) |
Return the height, width, and number of lines that will be used to render a given string.
g | Pointer to a jgraphics context. | |
utf8 | A string containing the text whose dimensions we wish to find. | |
wrapwidth | The number of pixels in width at which the text should be wrapped if it is too long. | |
includewhitespace | Set zero to not include white space in the calculation, otherwise set this parameter to 1. | |
width | The address of a variable to be filled with the width of the rendered text. | |
height | The address of a variable to be filled with the height of the rendered text. | |
numlines | The address of a variable to be filled with the number of lines required to render the text. |
void jgraphics_user_to_device | ( | t_jgraphics * | g, | |
double * | x, | |||
double * | y | |||
) |
User coordinates are those passed to drawing functions in a given t_jgraphics context.
Device coordinates refer to patcher canvas coordinates, before any zooming.