Graphics: fix compilation after b27eba71
[scilab.git] / scilab / modules / graphics / src / c / DrawObjects.c
1 /*
2  * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
3  * Copyright (C) 2001-2002 - INRIA - Mathieu Philipe
4  * Copyright (C) 2002-2004 - INRIA - Djalel Abdemouche
5  * Copyright (C) 2004-2006 - INRIA - Fabrice Leray
6  * Copyright (C) 2005 - INRIA - Jean-Baptiste Silvy
7  * Copyright (C) 2010 - DIGITEO - Manuel Juliachs
8  * Copyright (C) 2010 - Paul Griffiths
9  *
10  * Copyright (C) 2012 - 2016 - Scilab Enterprises
11  *
12  * This file is hereby licensed under the terms of the GNU GPL v2.0,
13  * pursuant to article 5.3.4 of the CeCILL v.2.1.
14  * This file was originally licensed under the terms of the CeCILL v2.1,
15  * and continues to be available under such terms.
16  * For more information, see the COPYING file which you should have received
17  * along with this program.
18  *
19  */
20
21 /*------------------------------------------------------------------------
22  *    Graphic library
23  *    newGraph Library header
24  *    Comment:
25  *    This file contains all functions used to Draw the content of a window.
26  *    The main functions is sciDrawObj that draws the objects recursively.
27  ------------------------------------------------------------------------/-*/
28
29 #include <stdio.h>
30 #include <string.h>
31
32 #include "DrawObjects.h"
33 #include "GetProperty.h"
34 #include "SetProperty.h"
35 #include "BuildObjects.h"
36 #include "DestroyObjects.h"
37 #include "PloEch.h"
38 #include "sciprint.h"
39 #include "math_graphics.h"
40 #include "Format.h"
41 #include "HandleManagement.h"
42
43 #include "sci_malloc.h" /* MALLOC */
44 #include "localization.h"
45
46 #include "math.h" /* fabs, floor, log10, pow */
47 #include "BasicAlgos.h"
48
49 #include "getGraphicObjectProperty.h"
50 #include "setGraphicObjectProperty.h"
51 #include "graphicObjectProperties.h"
52 #include "Sciwarning.h"
53 #include "Scierror.h"
54
55 //#include "../../../tclsci/includes/GedManagement.h"
56
57 /* get the displayed bounds of an axis */
58 void sciGetDisplayedBounds(int iSubWinUID,
59                            double      * xmin   ,
60                            double      * xmax   ,
61                            double      * ymin   ,
62                            double      * ymax   ,
63                            double      * zmin   ,
64                            double      * zmax)
65 {
66     /*****************************************************************
67      * get initial bounds
68     *****************************************************************/
69
70     int iZoomEnabled = 0;
71     int* piZoomEnabled = &iZoomEnabled;
72     double* bounds = NULL;
73     int iLogFlag = 0;
74     int *piLogFlag = &iLogFlag;
75
76     getGraphicObjectProperty(iSubWinUID, __GO_ZOOM_ENABLED__, jni_bool, (void **)&piZoomEnabled);
77     if (iZoomEnabled)
78     {
79         getGraphicObjectProperty(iSubWinUID, __GO_ZOOM_BOX__, jni_double_vector, (void **)&bounds);
80     }
81     else
82     {
83         getGraphicObjectProperty(iSubWinUID, __GO_DATA_BOUNDS__, jni_double_vector, (void **)&bounds);
84     }
85
86     if (!bounds)
87     {
88         Scierror(999, _("Could not retrive bounds.\n"));
89         return;
90     }
91
92     *xmin = bounds[0];
93     *xmax = bounds[1];
94     *ymin = bounds[2];
95     *ymax = bounds[3];
96     *zmin = bounds[4];
97     *zmax = bounds[5];
98
99     /*****************************************************************
100      * modify  bounds and aaint  if using log scaling X axis
101      *****************************************************************/
102
103     getGraphicObjectProperty(iSubWinUID, __GO_X_AXIS_LOG_FLAG__, jni_bool, (void **)&piLogFlag);
104     if (iLogFlag == 1)
105     {
106         if (sciGetLogExponent(*xmin, *xmax, xmin, xmax) != 0)
107         {
108             Sciwarning(_("Warning: Can't use Log on X-axis xmin is negative.\n"));
109         }
110     }
111
112     /*****************************************************************
113      * modify  bounds and aaint  if using log scaling Y axis
114      *****************************************************************/
115
116     getGraphicObjectProperty(iSubWinUID, __GO_Y_AXIS_LOG_FLAG__, jni_bool, (void **)&piLogFlag);
117     if (iLogFlag == 1)
118     {
119         if (sciGetLogExponent(*ymin, *ymax, ymin, ymax) != 0)
120         {
121             Sciwarning(_("Warning: Can't use Log on Y-axis ymin is negative.\n"));
122         }
123     }
124
125     /*****************************************************************
126      * modify  bounds and aaint  if using log scaling Z axis
127      *****************************************************************/
128
129     getGraphicObjectProperty(iSubWinUID, __GO_Z_AXIS_LOG_FLAG__, jni_bool, (void **)&piLogFlag);
130     if (iLogFlag == 1)
131     {
132         if (sciGetLogExponent(*zmin, *zmax, zmin, zmax) != 0)
133         {
134             Sciwarning(_("Warning: Can't use Log on Z-axis zmin is negative.\n"));
135         }
136     }
137 }