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;
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 
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 
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 
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 
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 
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 
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 
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 
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 
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 
1129 
1130 #ifdef __cplusplus
1131 }
1132 
1133 #endif
int col
Definition: graphics.h:19
Definition: algorithm.h:14
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_colormap cmap
Definition: graphics.h:21
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.
AFAPI af_err af_destroy_window(const af_window wind)
C Interface wrapper for destroying a window handle.
Window object to render af::arrays.
Definition: graphics.h:37
AFAPI af_err af_set_title(const af_window wind, const char *const title)
C Interface wrapper for setting window title.
const char * title
Definition: graphics.h:20
AFAPI af_err af_is_window_closed(bool *out, const af_window wind)
C Interface wrapper for checking if window is marked for close.
AFAPI af_err af_show(const af_window wind)
C Interface wrapper for showing a window.
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.
Definition: defines.h:438
A multi dimensional data container.
Definition: array.h:27
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
Definition: defines.h:425
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.
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.
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.
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.
Definition: graphics.h:17
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
Definition: defines.h:63
#define DEPRECATED(msg)
Definition: defines.h:37
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
Definition: defines.h:436
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.
#define AFAPI
Definition: defines.h:31
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.
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.
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.
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.
AFAPI af_err af_grid(const af_window wind, const int rows, const int cols)
C Interface wrapper for grid setup in a window.
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.
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.
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.
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.
AFAPI af_err af_set_size(const af_window wind, const unsigned w, const unsigned h)
C Interface wrapper for setting window position.
void * af_array
Definition: defines.h:222
AFAPI af_err af_set_visibility(const af_window wind, const bool is_visible)
Hide/Show a window.
int row
Definition: graphics.h:18
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
unsigned long long af_window
Definition: graphics.h:15
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.
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.
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.