Code

Change layout to be more space conserving. This allows a larger paper list
[inkscape.git] / src / number-opt-number.h
1 #ifndef SEEN_NUMBER_OPT_NUMBER_H
2 #define SEEN_NUMBER_OPT_NUMBER_H
4 /** \file
5  * <number-opt-number> implementation.
6  */
7 /*
8  * Authors:
9  *   Hugo Rodrigues <haa.rodrigues@gmail.com>
10  *
11  * Copyright (C) 2006 Hugo Rodrigues
12  *
13  * Released under GNU GPL, read the file 'COPYING' for more information
14  */
16 #include <glib.h>
17 #include <glib/gprintf.h>
18 //todo: use glib instead of stdlib
19 #include <stdlib.h>
21 #ifdef HAVE_CONFIG_H
22 #include "config.h"
23 #endif
25 class NumberOptNumber {
27 public:
29     gfloat number; 
31     gfloat optNumber;
33     guint _set : 1;
35     guint optNumber_set : 1;
37     NumberOptNumber()
38     {
39         number = 0.0;
40         optNumber = 0.0;
42         _set = FALSE;
43         optNumber_set = FALSE;
44     }
46     gfloat getNumber()
47     {
48         if(_set)
49             return number;
50         return -1;
51     }
53     gfloat getOptNumber()
54     {
55         if(optNumber_set)
56             return optNumber;
57         return -1;
58     }
60     void setOptNumber(gfloat num)
61     {
62         optNumber_set = true;
63         optNumber = num;
64     }
66     void setNumber(gfloat num)
67     {
68         _set = true;
69         number = num;
70     }
72     gchar *getValueString(gchar *str)
73     {
74         if( _set )
75         {
77             if( optNumber_set )
78             {
79                 g_sprintf(str, "%lf %lf", number, optNumber);
80             }
81             else {
82                 g_sprintf(str, "%lf", number);
83             }
84         }
85         return str;
86     }
88     void set(gchar const *str)
89     {
90         if(!str)
91             return;
93         gchar **values = g_strsplit(str, " ", 2);
95         if( values[0] != NULL )
96         {
97             number = strtof(values[0], NULL);
98             _set = TRUE;
100             if( values[1] != NULL )
101             {
102   //              optNumber = g_ascii_strtod(values[1], NULL);
103                 optNumber = strtof(values[1], NULL);
104                 optNumber_set = TRUE;
105             }
106             else
107                 optNumber_set = FALSE;
108         }
109         else {
110                 _set = FALSE;
111                 optNumber_set = FALSE;
112         }
113     }
115 };
117 #endif /* !SEEN_NUMBER_OPT_NUMBER_H */
119 /*
120   Local Variables:
121   mode:c++
122   c-file-style:"stroustrup"
123   c-file-offsets:((innamespace . 0)(inline-open . 0)(case-label . +))
124   indent-tabs-mode:nil
125   fill-column:99
126   End:
127 */
128 // vim: filetype=cpp:expandtab:shiftwidth=4:tabstop=8:softtabstop=4:encoding=utf-8:textwidth=99 :