microvg  2.1.0
microvg
Macros | Functions
microvg_helper.c File Reference

MicroEJ MicroVG library low level API: helper to implement library natives methods. More...

#include <LLVG_MATRIX_impl.h>
#include <freetype/internal/ftobjs.h>
#include "microvg_helper.h"
#include "microvg_configuration.h"

Go to the source code of this file.

Macros

#define MIN_HIGH_SURROGATE   ((unsigned short)0xD800)
 
#define MAX_HIGH_SURROGATE   ((unsigned short)0xDBFF)
 
#define MIN_LOW_SURROGATE   ((unsigned short)0xDC00)
 
#define MAX_LOW_SURROGATE   ((unsigned short)0xDFFF)
 
#define MIN_SUPPLEMENTARY_CODE_POINT   0x010000
 
#define GET_NEXT_CHARACTER(t, l, o)   ((o) >= (l) ? (unsigned short)0 : (t)[o])
 
#define IS_SIMPLE_LAYOUT   true
 

Functions

void MICROVG_HELPER_initialize (void)
 
int MICROVG_HELPER_get_utf (unsigned short *textCharRam, int length, int *offset)
 Gets the next UTF character from a text buffer. More...
 
void MICROVG_HELPER_layout_configure (int faceHandle, unsigned short *text, int length)
 
bool MICROVG_HELPER_layout_load_glyph (int *glyph_idx, int *x_advance, int *y_advance, int *x_offset, int *y_offset)
 
jfloat * MICROVG_HELPER_check_matrix (jfloat *matrix)
 
uint32_t MICROVG_HELPER_apply_alpha (uint32_t color, uint32_t alpha)
 

Detailed Description

MicroEJ MicroVG library low level API: helper to implement library natives methods.

Author
MicroEJ Developer Team
Version
2.1.0

Definition in file microvg_helper.c.

Macro Definition Documentation

§ MIN_HIGH_SURROGATE

#define MIN_HIGH_SURROGATE   ((unsigned short)0xD800)

Sanity check between the expected version of the configuration and the actual version of the configuration. If an error is raised here, it means that a new version of the CCO has been installed and the configuration microvg_configuration.h must be updated based on the one provided by the new CCO version.

Definition at line 55 of file microvg_helper.c.

Function Documentation

§ MICROVG_HELPER_get_utf()

int MICROVG_HELPER_get_utf ( unsigned short *  text,
int  length,
int *  offset 
)

Gets the next UTF character from a text buffer.

Parameters
[in]texttext buffer encoded in UTF16 where to read UTF character.
[in]lengthlenght of the text buffer.

Definition at line 101 of file microvg_helper.c.

101  {
102 
103  unsigned short highPart = GET_NEXT_CHARACTER(textCharRam, length, *offset);
104  int ret;
105 
106  if (((highPart >= MIN_HIGH_SURROGATE) && (highPart <= MAX_HIGH_SURROGATE))
107  && (*offset < (length - 1))) {
108 
109  unsigned short lowPart = GET_NEXT_CHARACTER(textCharRam, length, *(offset) + 1);
110 
111  if ((lowPart >= MIN_LOW_SURROGATE) && (lowPart <= MAX_LOW_SURROGATE)) {
112  *offset += 2;
113 
114  ret = 0;
115  ret += ((int)highPart - (int)MIN_HIGH_SURROGATE);
116  ret <<= (int)10;
117  ret += ((int)lowPart - (int)MIN_LOW_SURROGATE);
118  ret += (int)MIN_SUPPLEMENTARY_CODE_POINT;
119  }
120  }
121  else {
122  *offset += 1;
123 
124  // standard character or missing low part
125  ret = 0x0000FFFF & (int)highPart;
126  }
127 
128  return ret;
129 }
#define MIN_HIGH_SURROGATE