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
|
#include "AfterImageP.h"
#include "etc.h"
#include "ColorGC.h"
/*===========================================================================*/
/* ¥á¥ó¥Ð€ÎŒèÆÀ */
/*===========================================================================*/
int AfterImages_GetArraySize(AfterImages after_images)
{
return (after_images->array_size);
}
int AfterImages_GetNumber(AfterImages after_images)
{
return (after_images->number);
}
XArc * AfterImages_GetArcs(AfterImages after_images)
{
return (after_images->arcs);
}
/*===========================================================================*/
/* ¥ª¥Ö¥ž¥§¥¯¥È€ÎÀžÀ®€Èºïœü */
/*===========================================================================*/
int AfterImages_Initialize(AfterImages after_images,
int size, int number, double * x, double * y,
int x_min, int y_min, int x_max, int y_max,
ObjList list)
{
int i, n, r;
if (number > after_images->array_size) return (1);
r = size / 2;
n = 0;
for (i = 0; i < number; i++) {
if ((x[i] < x_min) || (x[i] > x_max) || (y[i] > y_max)) {
continue;
}
after_images->arcs[n].x = x[i] - r;
after_images->arcs[n].y = y[i] - r;
after_images->arcs[n].width = size;
after_images->arcs[n].height = size;
after_images->arcs[n].angle1 = 0;
after_images->arcs[n].angle2 = 360*64;
n++;
}
after_images->number = n;
after_images->list = list;
after_images->current = ObjList_GetStartEdge(after_images->list);
return (0);
}
AfterImages AfterImages_Create(int size, int number, double * x, double * y,
int x_min, int y_min, int x_max, int y_max,
ObjList list)
{
AfterImages after_images;
after_images = (AfterImages)malloc(sizeof(_AfterImages));
if (after_images == NULL)
Error("AfterImages_Create", "Cannot allocate memory");
after_images->array_size = number;
/* AfterImages ¥ª¥Ö¥ž¥§¥¯¥È€Ï»È€€²ó€·€¹€ë€Î€Ç¡€Ÿ®€µ€€¥µ¥€¥º€Î€â€Î€Ï */
/* ¥á¥â¥ê€ò̵Ầ˿©€Ã€Æ€·€Þ€Š€Î€Ç¡€¥á¥â¥ê€ÎÀáÌó€Î€¿€á¡€€¢€Þ€êŸ®€µ€Ê */
/* ¥µ¥€¥º€Î€â€Î€Ïºî€é€Ê€€€è€Š€Ë€¹€ë¡¥ */
if (after_images->array_size < 30) after_images->array_size = 30;
if (after_images->array_size) {
after_images->arcs =
(XArc *)malloc(sizeof(XArc) * after_images->array_size);
if (after_images->arcs == NULL)
Error("AfterImages_Create", "Cannot allocate memory");
} else after_images->arcs = NULL;
AfterImages_Initialize(after_images, size, number,
x, y, x_min, y_min, x_max, y_max, list);
return (after_images);
}
AfterImages AfterImages_Destroy(AfterImages after_images)
{
if (!after_images) return (NULL);
if (after_images->arcs) free(after_images->arcs);
free(after_images);
return (NULL);
}
/*===========================================================================*/
/* žœºß€Î¿§€ÎÃÍ€òGC€ÇÊÖ€·¡€current €ò°ì€ÄÀè€Ë¿Ê€á€ë¡¥(ºÇžå€Ë€Ï NULL €òÊÖ€¹) */
/*===========================================================================*/
GC AfterImages_GetGC(AfterImages after_images)
{
ColorGC color_gc;
GC gc;
if (after_images->current == NULL) return (NULL);
if (ObjList_IsEnd(after_images->list, after_images->current))
return (NULL);
after_images->current = ObjListData_GetNext(after_images->current);
color_gc = (ColorGC)ObjListData_GetObj(after_images->current);
gc = ColorGC_GetGC(color_gc);
return (gc);
}
/*****************************************************************************/
/* End of File. */
/*****************************************************************************/
|