graphics.h Source File

graphics.h
Go to the documentation of this file.
1 /*******************************************************
2 * Copyright (c) 2014, ArrayFire
3 * All rights reserved.
4 *
5 * This file is distributed under 3-clause BSD license.
6 * The complete license agreement can be obtained at:
7 * http://arrayfire.com/licenses/BSD-3-Clause
8 ********************************************************/
9
10 #pragma once
11
12 #include <af/defines.h>
13 #include <af/array.h>
14
15 typedef unsigned long long af_window;
16
17 typedef struct {
18 int row;
19 int col;
20 const char* title;
21 af_colormap cmap;
22 } af_cell;
23
24 #ifdef __cplusplus
25 namespace af
26 {
27
37 class AFAPI Window {
38 private:
39 af_window wnd;
40 /* below attributes are used to track which
41 * cell in the grid is being rendered currently */
42 int _r;
43 int _c;
44 ColorMap _cmap;
45
46 void initWindow(const int width, const int height, const char* const title);
47
48 Window(const Window&); // Prevent copy-construction
49 Window& operator=(const Window&); // Prevent assignment
50
51 public:
58 Window();
59
68 Window(const char* const title);
69
80 Window(const int width, const int height, const char* const title="ArrayFire");
81
91 Window(const af_window wnd);
92
98 ~Window();
99
100 // FIXME handle copying properly
101
107 af_window get() const { return wnd; }
108
117 void setPos(const unsigned x, const unsigned y);
118
126 void setTitle(const char* const title);
127
128 #if AF_API_VERSION >= 31
129
137 void setSize(const unsigned w, const unsigned h);
138 #endif
139
147 void setColorMap(const ColorMap cmap);
148
159 void image(const array& in, const char* title=NULL);
160
161 #if AF_API_VERSION >= 32
162
172 DEPRECATED("Use plot instead")
173 void plot3(const array& in, const char* title=NULL);
174 #endif
175
176 #if AF_API_VERSION >= 34
177
188 void plot(const array& in, const char* const title=NULL);
189 #endif
190
191 #if AF_API_VERSION >= 34
192
204 void plot(const array& X, const array& Y, const array& Z, const char* const title=NULL);
205 #endif
206
218 void plot(const array& X, const array& Y, const char* const title=NULL);
219
220 #if AF_API_VERSION >= 34
221
233 void scatter(const array& in, const af::markerType marker = AF_MARKER_POINT,
234 const char* const title = NULL);
235 #endif
236
237 #if AF_API_VERSION >= 34
238
251 void scatter(const array& X, const array& Y, const array& Z,
252 const af::markerType marker = AF_MARKER_POINT, const char* const title = NULL);
253 #endif
254
255 #if AF_API_VERSION >= 33
256
268 void scatter(const array& X, const array& Y,
269 const af::markerType marker = AF_MARKER_POINT, const char* const title = NULL);
270 #endif
271
272 #if AF_API_VERSION >= 33
273
282 DEPRECATED("Use scatter instead")
283 void scatter3(const array& P, const af::markerType marker = AF_MARKER_POINT,
284 const char* const title = NULL);
285 #endif
286
299 void hist(const array& X, const double minval, const double maxval, const char* const title=NULL);
300
301 #if AF_API_VERSION >= 32
302
312 void surface(const array& S, const char* const title = NULL);
313 #endif
314
315 #if AF_API_VERSION >= 32
316
328 void surface(const array& xVals, const array& yVals, const array& S, const char* const title = NULL);
329 #endif
330
331 #if AF_API_VERSION >= 34
332
348 void vectorField(const array& points, const array& directions, const char* const title = NULL);
349 #endif
350
351 #if AF_API_VERSION >= 34
352
367 void vectorField(const array& xPoints, const array& yPoints, const array& zPoints,
368 const array& xDirs , const array& yDirs , const array& zDirs ,
369 const char* const title = NULL);
370 #endif
371
372 #if AF_API_VERSION >= 34
373
386 void vectorField(const array& xPoints, const array& yPoints,
387 const array& xDirs , const array& yDirs ,
388 const char* const title = NULL);
389 #endif
390
391 #if AF_API_VERSION >= 34
392
405 void setAxesLimits(const array &x, const array &y, const bool exact = false);
406 #endif
407
408 #if AF_API_VERSION >= 34
409
423 void setAxesLimits(const array &x, const array &y, const array &z,
424 const bool exact = false);
425 #endif
426
427 #if AF_API_VERSION >= 34
428
443 void setAxesLimits(const float xmin, const float xmax,
444 const float ymin, const float ymax,
445 const bool exact = false);
446 #endif
447
448 #if AF_API_VERSION >= 34
449
466 void setAxesLimits(const float xmin, const float xmax,
467 const float ymin, const float ymax,
468 const float zmin, const float zmax,
469 const bool exact = false);
470 #endif
471
472 #if AF_API_VERSION >= 34
473
484 void setAxesTitles(const char * const xtitle = "X-Axis",
485 const char * const ytitle = "Y-Axis",
486 const char * const ztitle = "Z-Axis");
487 #endif
488
496 void grid(const int rows, const int cols);
497
504 void show();
505
515 bool close();
516
517 #if AF_API_VERSION >= 33
518
525 void setVisibility(const bool isVisible);
526 #endif
527
540 inline Window& operator()(const int r, const int c) {
541 _r = r; _c = c;
542 return *this;
543 }
544 };
545
546 }
547 #endif
548
549 #ifdef __cplusplus
550 extern "C" {
551 #endif
552
566 AFAPI af_err af_create_window(af_window *out, const int width, const int height, const char* const title);
567
580 AFAPI af_err af_set_position(const af_window wind, const unsigned x, const unsigned y);
581
593 AFAPI af_err af_set_title(const af_window wind, const char* const title);
594
595 #if AF_API_VERSION >= 31
596
608 AFAPI af_err af_set_size(const af_window wind, const unsigned w, const unsigned h);
609 #endif
610
626 AFAPI af_err af_draw_image(const af_window wind, const af_array in, const af_cell* const props);
627
644 DEPRECATED("Use af_draw_plot_nd or af_draw_plot_2d instead")
645 AFAPI af_err af_draw_plot(const af_window wind, const af_array X, const af_array Y, const af_cell* const props);
646
647 #if AF_API_VERSION >= 32
648
663 DEPRECATED("Use af_draw_plot_nd or af_draw_plot_3d instead")
664 AFAPI af_err af_draw_plot3(const af_window wind, const af_array P, const af_cell* const props);
665 #endif
666
667 #if AF_API_VERSION >= 34
668
684 AFAPI af_err af_draw_plot_nd(const af_window wind, const af_array P, const af_cell* const props);
685 #endif
686
687 #if AF_API_VERSION >= 34
688
704 AFAPI af_err af_draw_plot_2d(const af_window wind, const af_array X, const af_array Y,
705 const af_cell* const props);
706 #endif
707
708 #if AF_API_VERSION >= 34
709
726 AFAPI af_err af_draw_plot_3d(const af_window wind,
727 const af_array X, const af_array Y, const af_array Z,
728 const af_cell* const props);
729 #endif
730
731 #if AF_API_VERSION >= 33
732
749 DEPRECATED("Use af_draw_scatter_nd or af_draw_scatter_2d instead")
750 AFAPI af_err af_draw_scatter(const af_window wind, const af_array X, const af_array Y,
751 const af_marker_type marker, const af_cell* const props);
752 #endif
753
754 #if AF_API_VERSION >= 33
755
769 DEPRECATED("Use af_draw_scatter_nd or af_draw_scatter_3d instead")
770 AFAPI af_err af_draw_scatter3(const af_window wind, const af_array P,
771 const af_marker_type marker, const af_cell* const props);
772 #endif
773
774 #if AF_API_VERSION >= 34
775
792 AFAPI af_err af_draw_scatter_nd(const af_window wind, const af_array P,
793 const af_marker_type marker, const af_cell* const props);
794 #endif
795
796 #if AF_API_VERSION >= 34
797
814 AFAPI af_err af_draw_scatter_2d(const af_window wind, const af_array X, const af_array Y,
815 const af_marker_type marker, const af_cell* const props);
816 #endif
817
818 #if AF_API_VERSION >= 34
819
837 AFAPI af_err af_draw_scatter_3d(const af_window wind,
838 const af_array X, const af_array Y, const af_array Z,
839 const af_marker_type marker, const af_cell* const props);
840 #endif
841
859 AFAPI af_err af_draw_hist(const af_window wind, const af_array X, const double minval, const double maxval, const af_cell* const props);
860
861 #if AF_API_VERSION >= 32
862
879 AFAPI af_err af_draw_surface(const af_window wind, const af_array xVals, const af_array yVals, const af_array S, const af_cell* const props);
880 #endif
881
882 #if AF_API_VERSION >= 34
883
906 AFAPI af_err af_draw_vector_field_nd(const af_window wind,
907 const af_array points, const af_array directions,
908 const af_cell* const props);
909 #endif
910
911 #if AF_API_VERSION >= 34
912
932 AFAPI af_err af_draw_vector_field_3d(
933 const af_window wind,
934 const af_array xPoints, const af_array yPoints, const af_array zPoints,
935 const af_array xDirs, const af_array yDirs, const af_array zDirs,
936 const af_cell* const props);
937 #endif
938
939 #if AF_API_VERSION >= 34
940
958 AFAPI af_err af_draw_vector_field_2d(
959 const af_window wind,
960 const af_array xPoints, const af_array yPoints,
961 const af_array xDirs, const af_array yDirs,
962 const af_cell* const props);
963 #endif
964
977 AFAPI af_err af_grid(const af_window wind, const int rows, const int cols);
978
979 #if AF_API_VERSION >= 34
980
999 AFAPI af_err af_set_axes_limits_compute(const af_window wind,
1000 const af_array x, const af_array y, const af_array z,
1001 const bool exact,
1002 const af_cell* const props);
1003 #endif
1004
1005 #if AF_API_VERSION >= 34
1006
1024 AFAPI af_err af_set_axes_limits_2d(const af_window wind,
1025 const float xmin, const float xmax,
1026 const float ymin, const float ymax,
1027 const bool exact,
1028 const af_cell* const props);
1029 #endif
1030
1031 #if AF_API_VERSION >= 34
1032
1052 AFAPI af_err af_set_axes_limits_3d(const af_window wind,
1053 const float xmin, const float xmax,
1054 const float ymin, const float ymax,
1055 const float zmin, const float zmax,
1056 const bool exact,
1057 const af_cell* const props);
1058 #endif
1059
1060 #if AF_API_VERSION >= 34
1061
1073 AFAPI af_err af_set_axes_titles(const af_window wind,
1074 const char * const xtitle,
1075 const char * const ytitle,
1076 const char * const ztitle,
1077 const af_cell* const props);
1078 #endif
1079
1090 AFAPI af_err af_show(const af_window wind);
1091
1104 AFAPI af_err af_is_window_closed(bool *out, const af_window wind);
1105
1106 #if AF_API_VERSION >= 33
1107
1115 AFAPI af_err af_set_visibility(const af_window wind, const bool is_visible);
1116 #endif
1117
1128 AFAPI af_err af_destroy_window(const af_window wind);
1129
1130 #ifdef __cplusplus
1131 }
1132
1133 #endif
af_cell::col
int col
Definition: graphics.h:19
af
Definition: algorithm.h:14
af_set_axes_limits_3d
AFAPI af_err af_set_axes_limits_3d(const af_window wind, const float xmin, const float xmax, const float ymin, const float ymax, const float zmin, const float zmax, const bool exact, const af_cell *const props)
C Interface for setting axes limits for a 3D plot/surface/vector field.
af_cell::cmap
af_colormap cmap
Definition: graphics.h:21
af_draw_hist
AFAPI af_err af_draw_hist(const af_window wind, const af_array X, const double minval, const double maxval, const af_cell *const props)
C Interface wrapper for drawing an array as a histogram.
array.h
af_destroy_window
AFAPI af_err af_destroy_window(const af_window wind)
C Interface wrapper for destroying a window handle.
af::Window
Window object to render af::arrays.
Definition: graphics.h:37
af_set_title
AFAPI af_err af_set_title(const af_window wind, const char *const title)
C Interface wrapper for setting window title.
af_cell::title
const char * title
Definition: graphics.h:20
af_is_window_closed
AFAPI af_err af_is_window_closed(bool *out, const af_window wind)
C Interface wrapper for checking if window is marked for close.
af_show
AFAPI af_err af_show(const af_window wind)
C Interface wrapper for showing a window.
af_set_axes_titles
AFAPI af_err af_set_axes_titles(const af_window wind, const char *const xtitle, const char *const ytitle, const char *const ztitle, const af_cell *const props)
C Interface wrapper for setting axes titles for histogram/plot/surface/vector field.
AF_MARKER_POINT
Definition: defines.h:438
af::array
A multi dimensional data container.
Definition: array.h:27
af_draw_surface
AFAPI af_err af_draw_surface(const af_window wind, const af_array xVals, const af_array yVals, const af_array S, const af_cell *const props)
C Interface wrapper for drawing array&#39;s as a surface.
af_colormap
af_colormap
Definition: defines.h:425
af_draw_plot3
AFAPI af_err af_draw_plot3(const af_window wind, const af_array P, const af_cell *const props)
C Interface wrapper for drawing an array as a plot.
af_create_window
AFAPI af_err af_create_window(af_window *out, const int width, const int height, const char *const title)
C Interface wrapper for creating a window.
af_draw_scatter_nd
AFAPI af_err af_draw_scatter_nd(const af_window wind, const af_array P, const af_marker_type marker, const af_cell *const props)
C Interface wrapper for drawing an array as a plot.
af_set_axes_limits_compute
AFAPI af_err af_set_axes_limits_compute(const af_window wind, const af_array x, const af_array y, const af_array z, const bool exact, const af_cell *const props)
C Interface for setting axes limits for a histogram/plot/surface/vector field.
af_cell
Definition: graphics.h:17
af_draw_vector_field_3d
AFAPI af_err af_draw_vector_field_3d(const af_window wind, const af_array xPoints, const af_array yPoints, const af_array zPoints, const af_array xDirs, const af_array yDirs, const af_array zDirs, const af_cell *const props)
C Interface wrapper for drawing array&#39;s as a 3D vector field.
af_err
af_err
Definition: defines.h:63
DEPRECATED
#define DEPRECATED(msg)
Definition: defines.h:37
defines.h
af_draw_plot_nd
AFAPI af_err af_draw_plot_nd(const af_window wind, const af_array P, const af_cell *const props)
C Interface wrapper for drawing an array as a 2D or 3D plot.
af_marker_type
af_marker_type
Definition: defines.h:436
af_draw_scatter
AFAPI af_err af_draw_scatter(const af_window wind, const af_array X, const af_array Y, const af_marker_type marker, const af_cell *const props)
C Interface wrapper for drawing an array as a plot.
AFAPI
#define AFAPI
Definition: defines.h:31
af_draw_plot
AFAPI af_err af_draw_plot(const af_window wind, const af_array X, const af_array Y, const af_cell *const props)
C Interface wrapper for drawing an array as a plot.
af_draw_plot_2d
AFAPI af_err af_draw_plot_2d(const af_window wind, const af_array X, const af_array Y, const af_cell *const props)
C Interface wrapper for drawing an array as a 2D plot.
af_draw_scatter3
AFAPI af_err af_draw_scatter3(const af_window wind, const af_array P, const af_marker_type marker, const af_cell *const props)
C Interface wrapper for drawing an array as a plot.
af_set_position
AFAPI af_err af_set_position(const af_window wind, const unsigned x, const unsigned y)
C Interface wrapper for setting the start position when window is displayed.
af_grid
AFAPI af_err af_grid(const af_window wind, const int rows, const int cols)
C Interface wrapper for grid setup in a window.
af_draw_vector_field_nd
AFAPI af_err af_draw_vector_field_nd(const af_window wind, const af_array points, const af_array directions, const af_cell *const props)
C Interface wrapper for drawing array&#39;s as a 2D or 3D vector field.
af_draw_scatter_3d
AFAPI af_err af_draw_scatter_3d(const af_window wind, const af_array X, const af_array Y, const af_array Z, const af_marker_type marker, const af_cell *const props)
C Interface wrapper for drawing an array as a 3D plot.
af_draw_image
AFAPI af_err af_draw_image(const af_window wind, const af_array in, const af_cell *const props)
C Interface wrapper for drawing an array as an image.
af_set_axes_limits_2d
AFAPI af_err af_set_axes_limits_2d(const af_window wind, const float xmin, const float xmax, const float ymin, const float ymax, const bool exact, const af_cell *const props)
C Interface for setting axes limits for a 2D histogram/plot/vector field.
af_set_size
AFAPI af_err af_set_size(const af_window wind, const unsigned w, const unsigned h)
C Interface wrapper for setting window position.
af_array
void * af_array
Definition: defines.h:222
af_set_visibility
AFAPI af_err af_set_visibility(const af_window wind, const bool is_visible)
Hide/Show a window.
af_cell::row
int row
Definition: graphics.h:18
af::Window::operator()
Window & operator()(const int r, const int c)
This function is used to keep track of which cell in the grid mode is being currently rendered...
Definition: graphics.h:540
af_window
unsigned long long af_window
Definition: graphics.h:15
af_draw_vector_field_2d
AFAPI af_err af_draw_vector_field_2d(const af_window wind, const af_array xPoints, const af_array yPoints, const af_array xDirs, const af_array yDirs, const af_cell *const props)
C Interface wrapper for drawing array&#39;s as a 2D vector field.
af_draw_scatter_2d
AFAPI af_err af_draw_scatter_2d(const af_window wind, const af_array X, const af_array Y, const af_marker_type marker, const af_cell *const props)
C Interface wrapper for drawing an array as a 2D plot.
af_draw_plot_3d
AFAPI af_err af_draw_plot_3d(const af_window wind, const af_array X, const af_array Y, const af_array Z, const af_cell *const props)
C Interface wrapper for drawing an array as a 3D plot.