1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
|
#include "emb-ellipse.h"
#include "emb-logging.h"
#include <stdlib.h>
/**************************************************/
/* EmbEllipse */
/**************************************************/
double embEllipse_centerX(EmbEllipse ellipse)
{
return ellipse.centerX;
}
double embEllipse_centerY(EmbEllipse ellipse)
{
return ellipse.centerY;
}
double embEllipse_radiusX(EmbEllipse ellipse)
{
return ellipse.radiusX;
}
double embEllipse_radiusY(EmbEllipse ellipse)
{
return ellipse.radiusY;
}
double embEllipse_diameterX(EmbEllipse ellipse)
{
return ellipse.radiusX * 2.0;
}
double embEllipse_diameterY(EmbEllipse ellipse)
{
return ellipse.radiusY * 2.0;
}
double embEllipse_width(EmbEllipse ellipse)
{
return ellipse.radiusX * 2.0;
}
double embEllipse_height(EmbEllipse ellipse)
{
return ellipse.radiusY * 2.0;
}
/**************************************************/
/* EmbEllipseObject */
/**************************************************/
/* Returns an EmbEllipseObject. It is created on the stack. */
EmbEllipseObject embEllipseObject_make(double cx, double cy, double rx, double ry)
{
EmbEllipseObject stackEllipseObj;
stackEllipseObj.ellipse.centerX = cx;
stackEllipseObj.ellipse.centerY = cy;
stackEllipseObj.ellipse.radiusX = rx;
stackEllipseObj.ellipse.radiusY = ry;
return stackEllipseObj;
}
/* Returns a pointer to an EmbEllipseObject. It is created on the heap. The caller is responsible for freeing the allocated memory. */
EmbEllipseObject* embEllipseObject_create(double cx, double cy, double rx, double ry)
{
EmbEllipseObject* heapEllipseObj = (EmbEllipseObject*)malloc(sizeof(EmbEllipseObject));
if(!heapEllipseObj) { embLog_error("emb-ellipse.c embEllipseObject_create(), cannot allocate memory for heapEllipseObj\n"); return 0; }
heapEllipseObj->ellipse.centerX = cx;
heapEllipseObj->ellipse.centerY = cy;
heapEllipseObj->ellipse.radiusX = rx;
heapEllipseObj->ellipse.radiusY = ry;
return heapEllipseObj;
}
/**************************************************/
/* EmbEllipseObjectList */
/**************************************************/
EmbEllipseObjectList* embEllipseObjectList_create(EmbEllipseObject data)
{
EmbEllipseObjectList* heapEllipseObjList = (EmbEllipseObjectList*)malloc(sizeof(EmbEllipseObjectList));
if(!heapEllipseObjList) { embLog_error("emb-ellipse.c embEllipseObjectList_create(), cannot allocate memory for heapEllipseObjList\n"); return 0; }
heapEllipseObjList->ellipseObj = data;
heapEllipseObjList->next = 0;
return heapEllipseObjList;
}
EmbEllipseObjectList* embEllipseObjectList_add(EmbEllipseObjectList* pointer, EmbEllipseObject data)
{
if(!pointer) { embLog_error("emb-ellipse.c embEllipseObjectList_add(), pointer argument is null\n"); return 0; }
if(pointer->next) { embLog_error("emb-ellipse.c embEllipseObjectList_add(), pointer->next should be null\n"); return 0; }
pointer->next = (EmbEllipseObjectList*)malloc(sizeof(EmbEllipseObjectList));
if(!pointer->next) { embLog_error("emb-ellipse.c embEllipseObjectList_add(), cannot allocate memory for pointer->next\n"); return 0; }
pointer = pointer->next;
pointer->ellipseObj = data;
pointer->next = 0;
return pointer;
}
int embEllipseObjectList_count(EmbEllipseObjectList* pointer)
{
int i = 1;
if(!pointer) return 0;
while(pointer->next)
{
pointer = pointer->next;
i++;
}
return i;
}
int embEllipseObjectList_empty(EmbEllipseObjectList* pointer)
{
if(!pointer)
return 1;
return 0;
}
void embEllipseObjectList_free(EmbEllipseObjectList* pointer)
{
EmbEllipseObjectList* tempPointer = pointer;
EmbEllipseObjectList* nextPointer = 0;
while(tempPointer)
{
nextPointer = tempPointer->next;
free(tempPointer);
tempPointer = nextPointer;
}
pointer = 0;
}
/* kate: bom off; indent-mode cstyle; indent-width 4; replace-trailing-space-save on; */
|