My Project
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 void* 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  AF_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  AF_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 
543  inline Window& operator()(const int r, const int c) {
544  _r = r; _c = c;
545  return *this;
546  }
547 };
548 
549 }
550 #endif
551 
552 #ifdef __cplusplus
553 extern "C" {
554 #endif
555 
569 AFAPI af_err af_create_window(af_window *out, const int width, const int height, const char* const title);
570 
583 AFAPI af_err af_set_position(const af_window wind, const unsigned x, const unsigned y);
584 
596 AFAPI af_err af_set_title(const af_window wind, const char* const title);
597 
598 #if AF_API_VERSION >= 31
599 
611 AFAPI af_err af_set_size(const af_window wind, const unsigned w, const unsigned h);
612 #endif
613 
629 AFAPI af_err af_draw_image(const af_window wind, const af_array in, const af_cell* const props);
630 
647 AF_DEPRECATED("Use af_draw_plot_nd or af_draw_plot_2d instead")
648 AFAPI af_err af_draw_plot(const af_window wind, const af_array X, const af_array Y, const af_cell* const props);
649 
650 #if AF_API_VERSION >= 32
651 
666 AF_DEPRECATED("Use af_draw_plot_nd or af_draw_plot_3d instead")
667 AFAPI af_err af_draw_plot3(const af_window wind, const af_array P, const af_cell* const props);
668 #endif
669 
670 #if AF_API_VERSION >= 34
671 
687 AFAPI af_err af_draw_plot_nd(const af_window wind, const af_array P, const af_cell* const props);
688 #endif
689 
690 #if AF_API_VERSION >= 34
691 
707 AFAPI af_err af_draw_plot_2d(const af_window wind, const af_array X, const af_array Y,
708  const af_cell* const props);
709 #endif
710 
711 #if AF_API_VERSION >= 34
712 
730  const af_array X, const af_array Y, const af_array Z,
731  const af_cell* const props);
732 #endif
733 
734 #if AF_API_VERSION >= 33
735 
752 AF_DEPRECATED("Use af_draw_scatter_nd or af_draw_scatter_2d instead")
753 AFAPI af_err af_draw_scatter(const af_window wind, const af_array X, const af_array Y,
754  const af_marker_type marker, const af_cell* const props);
755 #endif
756 
757 #if AF_API_VERSION >= 33
758 
772 AF_DEPRECATED("Use af_draw_scatter_nd or af_draw_scatter_3d instead")
773 AFAPI af_err af_draw_scatter3(const af_window wind, const af_array P,
774  const af_marker_type marker, const af_cell* const props);
775 #endif
776 
777 #if AF_API_VERSION >= 34
778 
795 AFAPI af_err af_draw_scatter_nd(const af_window wind, const af_array P,
796  const af_marker_type marker, const af_cell* const props);
797 #endif
798 
799 #if AF_API_VERSION >= 34
800 
817 AFAPI af_err af_draw_scatter_2d(const af_window wind, const af_array X, const af_array Y,
818  const af_marker_type marker, const af_cell* const props);
819 #endif
820 
821 #if AF_API_VERSION >= 34
822 
841  const af_array X, const af_array Y, const af_array Z,
842  const af_marker_type marker, const af_cell* const props);
843 #endif
844 
862 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);
863 
864 #if AF_API_VERSION >= 32
865 
882 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);
883 #endif
884 
885 #if AF_API_VERSION >= 34
886 
910  const af_array points, const af_array directions,
911  const af_cell* const props);
912 #endif
913 
914 #if AF_API_VERSION >= 34
915 
936  const af_window wind,
937  const af_array xPoints, const af_array yPoints, const af_array zPoints,
938  const af_array xDirs, const af_array yDirs, const af_array zDirs,
939  const af_cell* const props);
940 #endif
941 
942 #if AF_API_VERSION >= 34
943 
962  const af_window wind,
963  const af_array xPoints, const af_array yPoints,
964  const af_array xDirs, const af_array yDirs,
965  const af_cell* const props);
966 #endif
967 
980 AFAPI af_err af_grid(const af_window wind, const int rows, const int cols);
981 
982 #if AF_API_VERSION >= 34
983 
1003  const af_array x, const af_array y, const af_array z,
1004  const bool exact,
1005  const af_cell* const props);
1006 #endif
1007 
1008 #if AF_API_VERSION >= 34
1009 
1028  const float xmin, const float xmax,
1029  const float ymin, const float ymax,
1030  const bool exact,
1031  const af_cell* const props);
1032 #endif
1033 
1034 #if AF_API_VERSION >= 34
1035 
1056  const float xmin, const float xmax,
1057  const float ymin, const float ymax,
1058  const float zmin, const float zmax,
1059  const bool exact,
1060  const af_cell* const props);
1061 #endif
1062 
1063 #if AF_API_VERSION >= 34
1064 
1077  const char * const xtitle,
1078  const char * const ytitle,
1079  const char * const ztitle,
1080  const af_cell* const props);
1081 #endif
1082 
1093 AFAPI af_err af_show(const af_window wind);
1094 
1107 AFAPI af_err af_is_window_closed(bool *out, const af_window wind);
1108 
1109 #if AF_API_VERSION >= 33
1110 
1118 AFAPI af_err af_set_visibility(const af_window wind, const bool is_visible);
1119 #endif
1120 
1132 
1133 #ifdef __cplusplus
1134 }
1135 
1136 #endif
void * af_window
Definition: graphics.h:15
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
#define AF_DEPRECATED(msg)
Definition: defines.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.
A multi dimensional data container.
Definition: array.h:26
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's as a surface.
af_colormap
Definition: defines.h:432
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.
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's as a 3D vector field.
af_err
Definition: defines.h:65
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:447
af_window get() const
Definition: graphics.h:107
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'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:224
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:543
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'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.