scbpoints.c File Reference

#include "scbpoints.h"
#include "scbtype.h"
#include "scblog.h"
#include "scbconfig.h"
Include dependency graph for scbpoints.c:

Go to the source code of this file.

Defines

#define _GNU_SOURCE

Functions

gboolean erscribble_points_new (ScbPointsPtr ptr, const int initSize)
void erscribble_points_free (ScbPointsPtr ptr)
void erscribble_points_append (ScbPointsPtr points, ScbDevPointPtr point)
int erscribble_points_get_count (ScbPointsPtr ptr)
ScbPointPtr erscribble_points_get_data (ScbPointsPtr ptr)
void erscribble_points_dump (ScbPointsPtr ptr)

Define Documentation

#define _GNU_SOURCE

Copyright (C) 2008 iRex Technologies B.V. All rights reserved.

Definition at line 28 of file scbpoints.c.


Function Documentation

void erscribble_points_append ( ScbPointsPtr  points,
ScbDevPointPtr  point 
)

Definition at line 106 of file scbpoints.c.

References ERSCRIBBLE_RET_IF.

Referenced by erscribble_stroke_add_point().

00107 {
00108     ERSCRIBBLE_RET_IF(NULL == points || NULL == point, "Invalid pointer(s)!");
00109         
00110     // by value. they are binary compatible
00111     g_array_append_val(points->points, *((ScbPointPtr)point));
00112     g_array_append_val(points->pressures, point->pressure);
00113 }

Here is the caller graph for this function:

void erscribble_points_dump ( ScbPointsPtr  ptr  ) 

Definition at line 133 of file scbpoints.c.

References DUMPPRINTF, erscribble_points_get_count(), erscribble_points_get_data(), ERSCRIBBLE_RET_IF, _ScbPoint::x, and _ScbPoint::y.

00134 {
00135     ScbPointPtr point = erscribble_points_get_data(ptr);
00136     ERSCRIBBLE_RET_IF(NULL == point, "");
00137     
00138     int len = erscribble_points_get_count(ptr);
00139     DUMPPRINTF("points count %d. data:", len);
00140     while (len > 0)
00141     {
00142         DUMPPRINTF("(%d, %d)", point->x, point->y);
00143         ++point; --len;
00144     }
00145 }

Here is the call graph for this function:

void erscribble_points_free ( ScbPointsPtr  ptr  ) 

Definition at line 88 of file scbpoints.c.

References ERSCRIBBLE_RET_IF.

Referenced by erscribble_stroke_free().

00089 {
00090     ERSCRIBBLE_RET_IF(NULL == ptr, "Try to release NULL pointer!");
00091 
00092     if (ptr->points != NULL)
00093     {
00094         g_array_free(ptr->points, TRUE);
00095         ptr->points = NULL;
00096     }
00097 
00098     if (ptr->pressures != NULL)
00099     {
00100         g_array_free(ptr->pressures, TRUE);
00101         ptr->pressures = NULL;
00102     }
00103 }

Here is the caller graph for this function:

int erscribble_points_get_count ( ScbPointsPtr  ptr  ) 

Definition at line 116 of file scbpoints.c.

References ERSCRIBBLE_INVALID_COUNT, and ERSCRIBBLE_RET_INT_IF.

Referenced by erscribble_points_dump().

00117 {
00118     ERSCRIBBLE_RET_INT_IF(NULL == ptr, ERSCRIBBLE_INVALID_COUNT, "Attempt to access NULL pointer!");
00119     ERSCRIBBLE_RET_INT_IF(NULL == ptr->points, ERSCRIBBLE_INVALID_COUNT, "Point array is not allocated!");
00120     
00121     // lengths are equal
00122     return ptr->points->len;
00123 }

Here is the caller graph for this function:

ScbPointPtr erscribble_points_get_data ( ScbPointsPtr  ptr  ) 

Definition at line 126 of file scbpoints.c.

References ERSCRIBBLE_RET_NULL_IF.

Referenced by erscribble_points_dump(), and erscribble_stroke_get_point_data().

00127 {
00128     ERSCRIBBLE_RET_NULL_IF(NULL == ptr || NULL == ptr->points, "NULL pointer(s)");
00129     return (ScbPointPtr)ptr->points->data;
00130 }

Here is the caller graph for this function:

gboolean erscribble_points_new ( ScbPointsPtr  ptr,
const int  initSize 
)

Definition at line 69 of file scbpoints.c.

References ERSCRIBBLE_RET_FALSE_IF.

Referenced by erscribble_stroke_new(), and erscribble_stroke_new_with_attributes().

00070 {
00071     ERSCRIBBLE_RET_FALSE_IF(NULL == ptr, "Invalid pointer!");
00072     ERSCRIBBLE_RET_FALSE_IF(initSize <= 0, "Invalid initial size!");
00073         
00074     ptr->points = g_array_sized_new(FALSE, TRUE, sizeof(ScbPoint), initSize);
00075 
00076     ERSCRIBBLE_RET_FALSE_IF(NULL == ptr->points, "Could not allocate enough memory!");
00077     ptr->pressures = g_array_sized_new(FALSE, TRUE, sizeof(int), initSize);
00078     
00079     if (NULL == ptr->pressures)
00080     {
00081         g_free(ptr->points); ptr->points = NULL;
00082         return FALSE;
00083     }
00084     return TRUE;
00085 }

Here is the caller graph for this function:

Generated by  doxygen 1.6.2-20100208