~ [ source navigation ] ~ [ diff markup ] ~ [ identifier search ] ~ [ freetext search ] ~ [ file search ] ~

Linux Cross Reference
Tina4/src/covira/voi.c

Version: ~
Architecture: ~ [ i386 ] ~ [ alpha ] ~ [ m68k ] ~ [ mips ] ~ [ ppc ] ~ [ sparc ] ~ [ sparc64 ] ~

  1 /*
  2  *
  3  * voi.c
  4  *
  5  * volume of interest handling functions
  6  *
  7  */
  8 
  9 #include <tina/all_tina.h>
 10 #include <tina/brain.h>
 11 #include <tina/brainfuncs.h>
 12 
 13 Voi *voi_alloc(void)
 14 {
 15     Voi *voi = (Voi *) ralloc(sizeof(Voi));
 16 
 17     voi->string = NULL;
 18     voi->spline = NULL;
 19     voi->snake = NULL;
 20     voi->asnake = 0.25;
 21     return (voi);
 22 }
 23 
 24 void voi_free(Voi * voi)
 25 {
 26     if (voi == NULL)
 27         return;
 28     str_free(voi->string, rfree);
 29     spline2_free(voi->spline);
 30     snake_free(voi->snake);
 31     rfree(voi);
 32 }
 33 
 34 void voi_empty(Voi * voi)
 35 {
 36     if (voi == NULL)
 37         return;
 38     spline2_free(voi->spline);
 39     voi->spline = NULL;
 40     snake_free(voi->snake);
 41     voi->snake = NULL;
 42     str_free(voi->string, rfree);
 43     voi->string = NULL;
 44 }
 45 
 46 void voi_string_changed(Voi * voi)
 47 {
 48     if (voi == NULL)
 49         return;
 50     spline2_free(voi->spline);
 51     voi->spline = NULL;
 52     snake_free(voi->snake);
 53     voi->snake = NULL;
 54     voi->n = 0;
 55 }
 56 
 57 void voi_spline_changed(Voi * voi)
 58 {
 59     if (voi == NULL)
 60         return;
 61     snake_free(voi->snake);
 62     voi->snake = NULL;
 63     str_free(voi->string, rfree);
 64     voi->string = NULL;
 65 }
 66 
 67 void voi_snake_changed(Voi * voi)
 68 {
 69     if (voi == NULL)
 70         return;
 71     spline2_free(voi->spline);
 72     voi->spline = NULL;
 73     str_free(voi->string, rfree);
 74     voi->string = NULL;
 75 }
 76 
 77 Voi *voi_copy(Voi * oldvoi)
 78 {
 79     Voi *voi = (Voi *) ralloc(sizeof(Voi));
 80     voi->string = str2_copy(voi_string_get(oldvoi));
 81     voi->spline = NULL;
 82     voi->snake = NULL;
 83     voi->nspline = oldvoi->nspline;
 84     voi->asnake = oldvoi->asnake;
 85     voi->n = oldvoi->n;
 86     return (voi);
 87 }
 88 
 89 Tstring *voi_string_get(Voi * voi)
 90 {
 91     if (voi == NULL)
 92         return (NULL);
 93 
 94     if (voi->string != NULL)
 95         return (voi->string);
 96 
 97     if (voi->spline != NULL)
 98     {
 99         voi->string = str2_of_spline2(voi->spline);
100         return (voi->string);
101     }
102     if (voi->snake != NULL)
103     {
104         voi->string = str2_of_snake(voi->snake);
105         return (voi->string);
106     }
107     return (NULL);
108 }
109 
110 void voi_string_set(Voi * voi, Tstring * str)
111 {
112     voi_empty(voi);
113     if(str2_area(str) < 0.0)
114         str_reverse(str);
115     voi->string = str;
116 }
117 
118 Spline2 *voi_fixed_spline_get(Voi * voi, int n)
119 {
120     Tstring *string;
121 
122     if (voi == NULL)
123         return (NULL);
124     string = voi_string_get(voi);
125     if (string == NULL)
126         return (NULL);
127     else
128     {
129         voi->spline = spline2_of_str2(string, n);
130         return (voi->spline);
131     }
132 }
133 
134 Spline2 *voi_spline_get(Voi * voi)
135 {
136     Tstring *string;
137 
138     if (voi == NULL)
139         return (NULL);
140     if (voi->spline != NULL)
141         return (voi->spline);
142 
143     string = voi_string_get(voi);
144     if (string == NULL)
145         return (NULL);
146     else
147     {
148         int n = 8;
149         voi->spline = spline2_approx_str2(string, &n, 1.0);
150         return (voi->spline);
151     }
152 }
153 
154 void voi_spline_set(Voi * voi, Spline2 * spline)
155 {
156     voi_empty(voi);
157     voi->spline = spline;
158 }
159 
160 Snake *voi_snake_get(Voi * voi)
161 {
162     Tstring *string;
163 
164     if (voi == NULL)
165         return (NULL);
166     if (voi->snake != NULL)
167         return (voi->snake);
168     string = voi_string_get(voi);
169     if (string == NULL)
170         return (NULL);
171     else
172     {
173         voi->snake = snake_of_str2(string, voi->asnake);
174         return (voi->snake);
175     }
176 }
177 
178 void voi_snake_set(Voi * voi, Snake * snake)
179 {
180     voi_empty(voi);
181     voi->snake = snake;
182 }
183 
184 void voi_shift(Voi * voi, Vec2 dp)
185 {
186     Tstring *string = voi_string_get(voi);
187     str2_translate(string, dp);
188     voi_string_changed(voi);
189 }
190 

~ [ source navigation ] ~ [ diff markup ] ~ [ identifier search ] ~ [ freetext search ] ~ [ file search ] ~

This page was automatically generated by the LXR engine.
Visit the LXR main site for more information.