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. */
/*****************************************************************************/
|