microvg  5.0.0
microvg
Macros | Functions
microvg_helper.h File Reference

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

#include <stdio.h>
#include <sni.h>
#include "mej_log.h"

Go to the source code of this file.

Macros

#define MEJ_LOG_INFO_MICROVG(fmt, ...)
 
#define MEJ_LOG_ERROR_MICROVG(fmt, ...)   MEJ_LOG(ERROR,MICROVG,fmt, ##__VA_ARGS__ )
 
#define MICROVG_HELPER_NULL_GRADIENT   0
 Set this define to monitor freetype heap evolution. It needs MEJ_LOG_MICROVG and MEJ_LOG_INFO_LEVEL defines to print the heap logs. More...
 
#define FT_FACE_FLAG_COMPLEX_LAYOUT   (((uint32_t)1) << 31)
 Freetype supplementary flag for complex layout Uses a free bit in freetype face flags to convey the complex layout mode information with the freetype face. freetype.h must be checked on freetype update to ensure that this bit is still free.
 
#define M_PI   3.1415926535
 
#define RAD_TO_DEG(r)   ((r) * (180.0f / M_PI))
 
#define DEG_TO_RAD(d)   (((d) * M_PI) / 180.0f)
 
#define JFLOAT_TO_UINT32_t(f)   (*(uint32_t*)&(f))
 
#define UINT32_t_TO_JFLOAT(i)   (*(float*)&(i))
 

Functions

void MICROVG_HELPER_initialize (void)
 
int MICROVG_HELPER_get_utf (unsigned short *text, int length, int *offset)
 Gets the UTF character from a text buffer at the given offset and updates the offset to point to the next character. 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
5.0.0

Definition in file microvg_helper.h.

Macro Definition Documentation

#define MICROVG_HELPER_NULL_GRADIENT   0

Set this define to monitor freetype heap evolution. It needs MEJ_LOG_MICROVG and MEJ_LOG_INFO_LEVEL defines to print the heap logs.

NULL Gradient value

Definition at line 58 of file microvg_helper.h.

Function Documentation

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

Gets the UTF character from a text buffer at the given offset and updates the offset to point to the next character.

Some characters have some special values; they are made up of two Unicode characters in two specific ranges such that the first Unicode character is in one range (for example 0xD800-0xD8FF) and the second Unicode character is in the second range (for example 0xDC00-0xDCFF). This is called a surrogate pair.

If a surrogate pair is incomplete (missing second character), this function returns "0" (error) and does not update the offset.

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

Definition at line 106 of file microvg_helper.c.

106  {
107 
108  unsigned short highPart = GET_NEXT_CHARACTER(textCharRam, length, *offset);
109  int ret = 0; // means "error" (see doc)
110 
111  if ((highPart >= MIN_HIGH_SURROGATE) && (highPart <= MAX_HIGH_SURROGATE)) {
112 
113  if (*offset < (length - 1)) {
114 
115  unsigned short lowPart = GET_NEXT_CHARACTER(textCharRam, length, *(offset) + 1);
116 
117  if ((lowPart >= MIN_LOW_SURROGATE) && (lowPart <= MAX_LOW_SURROGATE)) {
118  *offset += 2;
119 
120  ret = 0;
121  ret += ((int)highPart - (int)MIN_HIGH_SURROGATE);
122  ret <<= (int)10;
123  ret += ((int)lowPart - (int)MIN_LOW_SURROGATE);
124  ret += (int)MIN_SUPPLEMENTARY_CODE_POINT;
125  }
126  // else: invalid surrogate pair
127  }
128  // else: missing second part of surrogate pair
129  }
130  else {
131  *offset += 1;
132 
133  // standard character
134  ret = 0x0000FFFF & (int)highPart;
135  }
136 
137  return ret;
138 }
#define MIN_HIGH_SURROGATE