add source codes
This commit is contained in:
parent
4d27951ea6
commit
9d7d9073a5
90
include/app_flow/kdp2_inf_app_yolo.h
Normal file
90
include/app_flow/kdp2_inf_app_yolo.h
Normal file
@ -0,0 +1,90 @@
|
||||
#ifndef KDP2_INF_APP_YOLO_H
|
||||
#define KDP2_INF_APP_YOLO_H
|
||||
|
||||
#include <stdint.h>
|
||||
#include "kp_struct.h"
|
||||
|
||||
#define KDP2_INF_ID_APP_YOLO 11
|
||||
#define KDP2_JOB_ID_APP_YOLO_CONFIG_POST_PROC 100 // handle set or get
|
||||
|
||||
typedef struct
|
||||
{
|
||||
uint32_t model_id; // specify model id
|
||||
kp_normalize_mode_t model_norm; // specify model normalization
|
||||
} __attribute__((aligned(4))) kp_app_yolo_config_t;
|
||||
|
||||
/**
|
||||
* @brief describe a yolo post-process configurations for yolo v5 series
|
||||
*/
|
||||
typedef struct
|
||||
{
|
||||
float prob_thresh;
|
||||
float nms_thresh;
|
||||
uint32_t max_detection_per_class;
|
||||
uint16_t anchor_row;
|
||||
uint16_t anchor_col;
|
||||
uint16_t stride_size;
|
||||
uint16_t reserved_size;
|
||||
uint32_t data[40];
|
||||
} __attribute__((aligned(4))) kp_app_yolo_post_proc_config_t;
|
||||
|
||||
// align to YOLO_V5_MAX_BOX_NUM in post_utils.h
|
||||
#define YOLO_GOOD_BOX_MAX_SCPU 500 /**< maximum number of bounding boxes for Yolo models */
|
||||
|
||||
/**
|
||||
* @brief describe a yolo output result after post-processing
|
||||
* The object name corresponding to class_num in each boxex are listed in the document in Kneron Document Center
|
||||
* Please visit https://doc.kneron.com/ -> Kneron PLUS - C -> Appendix -> Yolo Object Name Mapping
|
||||
*/
|
||||
typedef struct
|
||||
{
|
||||
uint32_t class_count; /**< total class count */
|
||||
uint32_t box_count; /**< boxes of all classes */
|
||||
kp_bounding_box_t boxes[YOLO_GOOD_BOX_MAX_SCPU]; /**< box information */
|
||||
} __attribute__((aligned(4))) kp_app_yolo_result_t;
|
||||
|
||||
/********** KDP2_INF_ID_APP_YOLO **********/
|
||||
|
||||
// post-proc config data struct shared for setting or getting
|
||||
typedef struct
|
||||
{
|
||||
/* header stamp is necessary for data transfer between host and device */
|
||||
kp_inference_header_stamp_t header_stamp;
|
||||
uint32_t set_or_get; // get = 0, set = 1
|
||||
uint32_t model_id;
|
||||
uint32_t param_size;
|
||||
uint8_t param_data[200]; // contains kp_app_yolo_post_proc_config_*** body
|
||||
|
||||
} __attribute__((aligned(4))) kdp2_ipc_app_yolo_post_proc_config_t;
|
||||
|
||||
// input header for 'Kneron APP Yolo Inference'
|
||||
typedef struct
|
||||
{
|
||||
/* header stamp is necessary for data transfer between host and device */
|
||||
kp_inference_header_stamp_t header_stamp;
|
||||
|
||||
uint32_t inf_number;
|
||||
uint32_t width;
|
||||
uint32_t height;
|
||||
uint32_t channel;
|
||||
uint32_t model_id;
|
||||
uint32_t image_format; // kp_image_format_t
|
||||
uint32_t model_normalize; // kp_normalize_mode_t
|
||||
|
||||
} __attribute__((aligned(4))) kdp2_ipc_app_yolo_inf_header_t;
|
||||
|
||||
// result (header + data) for 'Kneron APP Yolo Inference'
|
||||
typedef struct
|
||||
{
|
||||
/* header stamp is necessary for data transfer between host and device */
|
||||
kp_inference_header_stamp_t header_stamp;
|
||||
uint32_t inf_number;
|
||||
kp_app_yolo_result_t yolo_data;
|
||||
|
||||
} __attribute__((aligned(4))) kdp2_ipc_app_yolo_result_t;
|
||||
|
||||
void kdp2_app_yolo_config_post_process_parameters(int job_id, int num_input_buf, void **inf_input_buf_list);
|
||||
void kdp2_app_yolo_inference(int job_id, int num_input_buf, void **inf_input_buf_list);
|
||||
void kdp2_app_yolo_inference_deinit();
|
||||
|
||||
#endif
|
||||
92
include/app_flow/pre_post_proc/demo_post_utils.h
Normal file
92
include/app_flow/pre_post_proc/demo_post_utils.h
Normal file
@ -0,0 +1,92 @@
|
||||
/*
|
||||
* Utility function headers for the postprocess functions.
|
||||
*
|
||||
* Copyright (C) 2021 Kneron, Inc. All rights reserved.
|
||||
*
|
||||
*/
|
||||
#ifndef DEMO_POST_UTILS_H
|
||||
#define DEMO_POST_UTILS_H
|
||||
|
||||
#include <stdlib.h>
|
||||
#include <stdio.h>
|
||||
#include "utils.h"
|
||||
|
||||
#define YOLO_BOX_FIX_CH (5)
|
||||
|
||||
#define YOLO_V5_O0_GRID_W (60)
|
||||
#define YOLO_V5_O0_GRID_H (32)
|
||||
#define YOLO_V5_O0_GRID_MAX (YOLO_V5_O0_GRID_W * YOLO_V5_O0_GRID_H)
|
||||
#define YOLO_V5_O1_GRID_W (30)
|
||||
#define YOLO_V5_O1_GRID_H (16)
|
||||
#define YOLO_V5_O1_GRID_MAX (YOLO_V5_O1_GRID_W * YOLO_V5_O1_GRID_H)
|
||||
#define YOLO_V5_O2_GRID_W (15)
|
||||
#define YOLO_V5_O2_GRID_H (8)
|
||||
#define YOLO_V5_O2_GRID_MAX (YOLO_V5_O2_GRID_W * YOLO_V5_O2_GRID_H)
|
||||
#define YOLO_V5_CELL_BOX_NUM (3)
|
||||
#define YOLO_V5_MAX_BOX_NUM MIN(500, MAX(MAX(YOLO_V5_O1_GRID_MAX, YOLO_V5_O2_GRID_MAX), YOLO_V5_O0_GRID_MAX) * YOLO_V5_CELL_BOX_NUM)
|
||||
|
||||
#define KDP_COL_MIN 16 /* Bytes, i.e. 128 bits */
|
||||
|
||||
#define NMS_ALL_CLASS (0)
|
||||
#define NMS_GROUP_CLASS (1)
|
||||
#define NMS_SINGLE_CLASS (2)
|
||||
|
||||
// thresholds for various solutions
|
||||
// prob_thresh is the score threshold
|
||||
// nms_thresh is the iou threshold
|
||||
|
||||
extern float nms_thresh_yolov5;
|
||||
extern float prob_thresh_yolov5;
|
||||
extern const float anchors_yolov5[3][3][2];
|
||||
|
||||
// how a output node layout
|
||||
struct output_node {
|
||||
int8_t *base_ptr;
|
||||
uint32_t ch;
|
||||
uint32_t row;
|
||||
uint32_t col;
|
||||
uint32_t col_len;
|
||||
uint32_t radix;
|
||||
float scale;
|
||||
};
|
||||
|
||||
/* Shared global variable area among models */
|
||||
struct yolo_v5_post_globals_s {
|
||||
struct bounding_box_s bboxes[YOLO_V5_MAX_BOX_NUM];
|
||||
struct bounding_box_s result_tmp_s[YOLO_V5_MAX_BOX_NUM];
|
||||
};
|
||||
|
||||
struct yolo_v5_post_globals_s *yolov5_gp;
|
||||
|
||||
struct yolo_v5_post_globals_s *get_yolov5_gp();
|
||||
void free_gp(void *gp);
|
||||
|
||||
// conversion functions
|
||||
float do_div_scale(float v, int div, float scale);
|
||||
float do_div_scale_optim(float v, float scale);
|
||||
uint32_t round_up(uint32_t num);
|
||||
|
||||
// bounding box helpers
|
||||
int int_comparator(const void *pa, const void *pb);
|
||||
int float_comparator(float a, float b);
|
||||
int box_score_comparator(const void *pa, const void *pb);
|
||||
int box_lm_score_comparator(const void *pa, const void *pb);
|
||||
float box_intersection(struct bounding_box_s *a, struct bounding_box_s *b);
|
||||
float box_union(struct bounding_box_s *a, struct bounding_box_s *b);
|
||||
float box_iou(struct bounding_box_s *a, struct bounding_box_s *b);
|
||||
float box_area(struct bounding_box_s *box);
|
||||
float box_lm_area(struct bounding_box_landmark_s *box);
|
||||
float overlap(float l1, float r1, float l2, float r2);
|
||||
|
||||
// functions to get parameters from 520/720 specific structures to common structure
|
||||
uint32_t get_index(struct output_node node, uint32_t ch_idx, uint32_t row_idx, uint32_t col_idx);
|
||||
int8_t *get_data(struct output_node node, uint32_t ch_idx, uint32_t row_idx, uint32_t col_idx);
|
||||
void get_output_node(struct output_node *out_node, struct kdp_image_s *image_p, int node_num);
|
||||
|
||||
// more bounding box helpers
|
||||
int nms_bbox(struct bounding_box_s *potential_boxes, struct bounding_box_s *temp_results,
|
||||
int class_num, int good_box_count, int max_boxes, int single_class_max_boxes, struct bounding_box_s *results,
|
||||
float score_thresh, float iou_thresh, float nms_mode);
|
||||
void remap_bbox(struct kdp_image_s *image_p, int index, struct bounding_box_s *box, int need_scale);
|
||||
|
||||
#endif
|
||||
29
include/app_flow/pre_post_proc/stdc_app.h
Normal file
29
include/app_flow/pre_post_proc/stdc_app.h
Normal file
@ -0,0 +1,29 @@
|
||||
/*
|
||||
* STDC inference application header for KL630 host_stream
|
||||
*/
|
||||
#ifndef STDC_APP_H
|
||||
#define STDC_APP_H
|
||||
|
||||
#include <stdint.h>
|
||||
#include "kp_struct.h"
|
||||
#include "stdc_post_process.h"
|
||||
|
||||
/* Inference request header sent from host to device */
|
||||
typedef struct {
|
||||
kp_inference_header_stamp_t header_stamp;
|
||||
uint32_t width;
|
||||
uint32_t height;
|
||||
uint32_t model_id;
|
||||
float fps;
|
||||
} __attribute__((aligned(4))) stdc_inf_header_t;
|
||||
|
||||
/* Inference result sent from device back to host */
|
||||
typedef struct {
|
||||
kp_inference_header_stamp_t header_stamp;
|
||||
stdc_result_t stdc_result;
|
||||
} __attribute__((aligned(4))) stdc_inf_result_t;
|
||||
|
||||
void stdc_inference(int job_id, int num_input_buf, void **inf_input_buf_list);
|
||||
void stdc_inference_deinit(void);
|
||||
|
||||
#endif /* STDC_APP_H */
|
||||
106
include/app_flow/pre_post_proc/stdc_post_process.h
Normal file
106
include/app_flow/pre_post_proc/stdc_post_process.h
Normal file
@ -0,0 +1,106 @@
|
||||
/*
|
||||
* STDC Segmentation Post-Processing for KL630
|
||||
* Matches Python stdc630inference.py logic
|
||||
*/
|
||||
#ifndef STDC_POST_PROCESS_H
|
||||
#define STDC_POST_PROCESS_H
|
||||
|
||||
#include <stdint.h>
|
||||
#include "ncpu_gen_struct.h"
|
||||
|
||||
/* Job ID - must match host_stream.ini [nnm] JobId */
|
||||
#define STDC_JOB_ID 200
|
||||
|
||||
/* Model ID from readme.txt */
|
||||
#define STDC_MODEL_ID 32769
|
||||
|
||||
/* Number of segmentation classes */
|
||||
#define STDC_NUM_CLASSES 8
|
||||
|
||||
/* Maximum seg map pixels (safe upper bound: 128 cols × 64 rows) */
|
||||
#define STDC_SEG_MAP_MAX 8192
|
||||
|
||||
/* Class indices (from Python CLASS_LABELS dict) */
|
||||
#define STDC_CLASS_BUNKER 0
|
||||
#define STDC_CLASS_CAR 1
|
||||
#define STDC_CLASS_GRASS 2
|
||||
#define STDC_CLASS_GREENERY 3
|
||||
#define STDC_CLASS_PERSON 4
|
||||
#define STDC_CLASS_POND 5
|
||||
#define STDC_CLASS_ROAD 6
|
||||
#define STDC_CLASS_TREE 7
|
||||
|
||||
/* Warning thresholds (from Python code) */
|
||||
#define STDC_WARNING_SECONDS 2.0f
|
||||
#define STDC_MOTION_THRESHOLD 3.0f
|
||||
#define STDC_TREE_GROWTH_THR 0.05f
|
||||
#define THR_GRASS_ROI 0.30f /* grass ratio in forward ROI */
|
||||
#define THR_CAR_GLOBAL 0.05f
|
||||
#define THR_PERSON_GLOBAL 0.01f
|
||||
#define THR_GREENERY_GLOBAL 0.20f
|
||||
#define THR_BUNKER_GLOBAL 0.01f
|
||||
#define THR_POND_GLOBAL 0.01f
|
||||
#define THR_TREE_DENSE 0.30f
|
||||
|
||||
/* Collision ROI boundaries (fraction of image) - from Python COL_ROI_* */
|
||||
#define COL_ROI_LEFT 0.25f
|
||||
#define COL_ROI_RIGHT 0.75f
|
||||
#define COL_ROI_TOP 0.25f
|
||||
#define COL_ROI_BOTTOM 0.70f
|
||||
|
||||
#define THR_PERSON_COLLISION 0.01f
|
||||
#define THR_CAR_COLLISION 0.05f
|
||||
#define THR_TREE_COLLISION 0.20f
|
||||
#define THR_BUNKER_COLLISION 0.01f
|
||||
#define THR_POND_COLLISION 0.01f
|
||||
|
||||
/* Forward ROI trapezoid - from Python roi_pts */
|
||||
#define FWD_ROI_TOP_LEFT 0.45f
|
||||
#define FWD_ROI_TOP_RIGHT 0.55f
|
||||
#define FWD_ROI_BOTTOM_LEFT 0.30f
|
||||
#define FWD_ROI_BOTTOM_RIGHT 0.70f
|
||||
#define FWD_ROI_TOP 0.55f
|
||||
#define FWD_ROI_BOTTOM 0.95f
|
||||
|
||||
typedef struct {
|
||||
float fps;
|
||||
} stdc_post_proc_params_t;
|
||||
|
||||
/* Per-class analysis result */
|
||||
typedef struct {
|
||||
float class_ratio[STDC_NUM_CLASSES]; /* global ratio per class */
|
||||
float grass_roi_ratio; /* grass ratio in forward ROI */
|
||||
float tree_roi_ratio; /* tree ratio in forward ROI */
|
||||
float tree_roi_growth; /* delta vs previous frame */
|
||||
float col_person_ratio; /* collision ROI ratios */
|
||||
float col_car_ratio;
|
||||
float col_tree_ratio;
|
||||
float col_bunker_ratio;
|
||||
float col_pond_ratio;
|
||||
float grass_duration_sec; /* consecutive on-grass duration */
|
||||
float motion_diff; /* mean luma diff in forward ROI */
|
||||
uint8_t is_moving; /* 1 if ROI motion exceeds threshold */
|
||||
uint8_t on_grass; /* 1 if on_grass detected */
|
||||
uint8_t grass_warning; /* 1 if on grass for warning duration */
|
||||
uint8_t person_warning; /* 1 if person > threshold */
|
||||
uint8_t car_warning; /* 1 if car > threshold */
|
||||
uint8_t greenery_warning; /* 1 if greenery > threshold */
|
||||
uint8_t bunker_warning; /* 1 if bunker > threshold */
|
||||
uint8_t pond_warning; /* 1 if pond > threshold */
|
||||
uint8_t collision_risk; /* 1 if collision risk in center ROI */
|
||||
uint8_t tree_approaching; /* 1 if tree ROI grows too fast */
|
||||
uint8_t tree_dense; /* 1 if tree dense area */
|
||||
uint32_t frame_count; /* analyzed frame count */
|
||||
uint32_t seg_width; /* segmentation output width */
|
||||
uint32_t seg_height; /* segmentation output height */
|
||||
} stdc_analysis_t;
|
||||
|
||||
typedef struct {
|
||||
stdc_analysis_t analysis;
|
||||
uint8_t seg_map[STDC_SEG_MAP_MAX]; /* argmax class per pixel, row-major */
|
||||
} stdc_result_t;
|
||||
|
||||
/* Post-processing function - matches VMF NNM post_proc_func signature */
|
||||
int stdc_post_process(int model_id, struct kdp_image_s *image_p);
|
||||
|
||||
#endif /* STDC_POST_PROCESS_H */
|
||||
76
include/common/base.h
Normal file
76
include/common/base.h
Normal file
@ -0,0 +1,76 @@
|
||||
/**
|
||||
* @file base.h
|
||||
* @brief Basic utils & struct
|
||||
* @copyright (c) 2018 Kneron Inc. All right reserved.
|
||||
*/
|
||||
|
||||
#ifndef __BASE_H__
|
||||
#define __BASE_H__
|
||||
|
||||
#include <stdint.h>
|
||||
|
||||
#ifndef BIT
|
||||
#define BIT(x) (0x01U << (x))
|
||||
#endif
|
||||
|
||||
#define BIT0 0x00000001
|
||||
#define BIT1 0x00000002
|
||||
#define BIT2 0x00000004
|
||||
#define BIT3 0x00000008
|
||||
#define BIT4 0x00000010
|
||||
#define BIT5 0x00000020
|
||||
#define BIT6 0x00000040
|
||||
#define BIT7 0x00000080
|
||||
#define BIT8 0x00000100
|
||||
#define BIT9 0x00000200
|
||||
#define BIT10 0x00000400
|
||||
#define BIT11 0x00000800
|
||||
#define BIT12 0x00001000
|
||||
#define BIT13 0x00002000
|
||||
#define BIT14 0x00004000
|
||||
#define BIT15 0x00008000
|
||||
#define BIT16 0x00010000
|
||||
#define BIT17 0x00020000
|
||||
#define BIT18 0x00040000
|
||||
#define BIT19 0x00080000
|
||||
#define BIT20 0x00100000
|
||||
#define BIT21 0x00200000
|
||||
#define BIT22 0x00400000
|
||||
#define BIT23 0x00800000
|
||||
#define BIT24 0x01000000
|
||||
#define BIT25 0x02000000
|
||||
#define BIT26 0x04000000
|
||||
#define BIT27 0x08000000
|
||||
#define BIT28 0x10000000
|
||||
#define BIT29 0x20000000
|
||||
#define BIT30 0x40000000
|
||||
#define BIT31 0x80000000
|
||||
|
||||
|
||||
#define STS_OK 0
|
||||
#define STS_ERR_NORMAL 1
|
||||
#define STS_ERR_CRC 2
|
||||
|
||||
#ifndef TYPE_DEFINED
|
||||
#ifndef u8
|
||||
typedef unsigned char u8;
|
||||
#endif
|
||||
|
||||
#ifndef u16
|
||||
typedef unsigned short u16;
|
||||
#endif
|
||||
|
||||
#ifndef u32
|
||||
typedef unsigned int u32;
|
||||
#endif
|
||||
|
||||
#ifndef s16
|
||||
typedef short s16;
|
||||
#endif
|
||||
|
||||
#ifndef s32
|
||||
typedef int s32;
|
||||
#endif
|
||||
#define TYPE_DEFINED
|
||||
#endif
|
||||
#endif
|
||||
163
include/common/extend_intf.h
Normal file
163
include/common/extend_intf.h
Normal file
@ -0,0 +1,163 @@
|
||||
#ifndef __EXTEND_INTERFACE_H__
|
||||
#define __EXTEND_INTERFACE_H__
|
||||
|
||||
/******************************************************
|
||||
This is the IPC interface to support extended features without NPU involvement.
|
||||
Such as: IE operation, auxiliary computation, etc.
|
||||
******************************************************/
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
#include "stdint.h"
|
||||
|
||||
#ifndef BOOLEAN_DEFINED
|
||||
#ifndef boolean
|
||||
typedef char boolean;
|
||||
#endif
|
||||
#define BOOLEAN_DEFINED
|
||||
#endif
|
||||
|
||||
#define MAX_INT_FOR_ALIGN 0x10000000
|
||||
|
||||
/*************************************************************************
|
||||
IE interfaces
|
||||
**************************************************************************/
|
||||
|
||||
#define CFG_IE_MESH_POINTS_ONLINE (DISABLE)
|
||||
|
||||
typedef enum {
|
||||
OPERATION_FAILED = -1, /* Failure in doing operation */
|
||||
OPERATION_SUCCESS = 1, /* Operation Succeded */
|
||||
OPERATION_INVALID_PARM, /* Inavlid parameter provided */
|
||||
OPERATION_NOT_SUPPORTED, /* Parameter/operation not supported */
|
||||
OPERATION_ALIGN_32 = MAX_INT_FOR_ALIGN
|
||||
} ext_oper_sts_t;
|
||||
|
||||
typedef enum {
|
||||
IE_OPS_MODE_ROTATION = 0x1,
|
||||
IE_OPS_MODE_DEWARP = 0x2,
|
||||
IE_OPS_MODE_AFFINE = 0x4,
|
||||
IE_OPS_MODE_ALIGN_32 = MAX_INT_FOR_ALIGN
|
||||
} ie_ops_mode_t;
|
||||
|
||||
typedef enum {
|
||||
IE_ANGLE_OF_ROTATION_0 = 0,
|
||||
IE_ANGLE_OF_ROTATION_90 = 1,
|
||||
IE_ANGLE_OF_ROTATION_180 = 2,
|
||||
IE_ANGLE_OF_ROTATION_270 = 3,
|
||||
IE_ANGEL_OF_ROTATE_ALIGN_32 = MAX_INT_FOR_ALIGN
|
||||
} ie_angle_of_rotation_t;
|
||||
|
||||
struct ie_control_points_info {
|
||||
uint8_t x;
|
||||
uint8_t y;
|
||||
};
|
||||
|
||||
struct ie_control_points {
|
||||
uint8_t cols;
|
||||
uint8_t rows;
|
||||
struct ie_control_points_info infos[64];
|
||||
};
|
||||
|
||||
struct ie_affine_matrix {
|
||||
float val[2][3];
|
||||
};
|
||||
|
||||
typedef struct ie_input_img_cfg {
|
||||
uint32_t imgfmt;
|
||||
uint32_t pad_mode;
|
||||
int width;
|
||||
int height;
|
||||
int stride;
|
||||
/* Crop parameters or other purposes */
|
||||
int crop_top;
|
||||
int crop_bottom;
|
||||
int crop_left;
|
||||
int crop_right;
|
||||
|
||||
/* Pad parameters or other purposes */
|
||||
int pad_top;
|
||||
int pad_bottom;
|
||||
int pad_left;
|
||||
int pad_right;
|
||||
|
||||
int flip_face;
|
||||
} ie_input_img_cfg_t;
|
||||
|
||||
typedef struct ie_output_img_cfg {
|
||||
uint32_t imgfmt;
|
||||
int width;
|
||||
int height;
|
||||
int stride;
|
||||
} ie_output_img_cfg_t;
|
||||
|
||||
typedef struct ie_ops_params {
|
||||
ie_ops_mode_t ops_mode __attribute__((aligned (4)));
|
||||
union {
|
||||
ie_angle_of_rotation_t angle_of_rotation __attribute__((aligned (4)));
|
||||
struct ie_affine_matrix affine;
|
||||
#if CFG_IE_MESH_POINTS_ONLINE == ENABLE
|
||||
struct ie_control_points ctrlps;
|
||||
#endif
|
||||
} u;
|
||||
} ie_ops_params_t;
|
||||
|
||||
typedef struct ie_config {
|
||||
ie_ops_params_t ops_params;
|
||||
ie_input_img_cfg_t input_cfg;
|
||||
ie_output_img_cfg_t output_cfg;
|
||||
} ie_config_t;
|
||||
|
||||
typedef struct {
|
||||
int frame_seq;
|
||||
ie_config_t ie_cfg;
|
||||
uint32_t in_buf_addr;
|
||||
uint32_t in_buf_len;
|
||||
uint32_t out_buf_addr;
|
||||
uint32_t out_buf_len;
|
||||
} ie_oper_params_t;
|
||||
|
||||
typedef struct {
|
||||
int rslt_type;
|
||||
ext_oper_sts_t sts;
|
||||
|
||||
/* output buf */
|
||||
uint32_t out_buf_addr;
|
||||
uint32_t out_filled_len;
|
||||
|
||||
int32_t seq_num;
|
||||
} ie_oper_result_t;
|
||||
|
||||
/*************************************************************************
|
||||
Auxilary Computation Interfaces
|
||||
**************************************************************************/
|
||||
|
||||
typedef struct aux_compute_s {
|
||||
int compute_type;
|
||||
} aux_compute_config_t;
|
||||
|
||||
typedef struct {
|
||||
int frame_seq;
|
||||
aux_compute_config_t aux_compute_cfg;
|
||||
uint32_t in_buf_addr;
|
||||
uint32_t in_buf_len;
|
||||
uint32_t out_buf_addr;
|
||||
uint32_t out_buf_len;
|
||||
} aux_compute_params_t;
|
||||
|
||||
typedef struct {
|
||||
int rslt_type;
|
||||
ext_oper_sts_t sts;
|
||||
|
||||
/* output buf */
|
||||
uint32_t out_buf_addr;
|
||||
uint32_t out_filled_len;
|
||||
|
||||
int32_t seq_num;
|
||||
} aux_compute_result_t;
|
||||
|
||||
|
||||
#endif
|
||||
|
||||
598
include/common/ipc.h
Normal file
598
include/common/ipc.h
Normal file
@ -0,0 +1,598 @@
|
||||
/* Copyright (c) 2020 Kneron, Inc. All Rights Reserved.
|
||||
*
|
||||
* The information contained herein is property of Kneron, Inc.
|
||||
* Terms and conditions of usage are described in detail in Kneron
|
||||
* STANDARD SOFTWARE LICENSE AGREEMENT.
|
||||
*
|
||||
* Licensees are granted free, non-transferable use of the information.
|
||||
* NO WARRANTY of ANY KIND is provided. This heading must NOT be removed
|
||||
* from the file.
|
||||
*/
|
||||
|
||||
/******************************************************************************
|
||||
* Filename:
|
||||
* ---------
|
||||
* ipc.h
|
||||
*
|
||||
* Description:
|
||||
* ------------
|
||||
*
|
||||
*
|
||||
******************************************************************************/
|
||||
|
||||
#ifndef _IPC_H_
|
||||
#define _IPC_H_
|
||||
|
||||
/******************************************************************************
|
||||
Head Block of The File
|
||||
******************************************************************************/
|
||||
|
||||
#include <stdint.h>
|
||||
#include "model_type.h"
|
||||
#include "model_res.h"
|
||||
#include "base.h"
|
||||
//#include "extend_intf.h"
|
||||
|
||||
#ifndef BOOLEAN_DEFINED
|
||||
#ifndef boolean
|
||||
typedef char boolean;
|
||||
#endif
|
||||
#define BOOLEAN_DEFINED
|
||||
#endif
|
||||
|
||||
#if _BOARD_SN720HAPS_H_ == 1
|
||||
#define ADDR_ADJUST_OFFSET_FOR_HAPS 0x01d2b000
|
||||
|
||||
// Sec 2: Constant Definitions, Imported Symbols, miscellaneous
|
||||
/* IPC memory */
|
||||
//----------------------------
|
||||
|
||||
/* Used for KL720 */
|
||||
#define SCPU_IPC_MEM_ADDR (0x85060000 + ADDR_ADJUST_OFFSET_FOR_HAPS)
|
||||
#define SCPU_IPC_MEM_ADDR2 (0x85061000 + ADDR_ADJUST_OFFSET_FOR_HAPS)
|
||||
#define IPC_NPU_REQ_IMG_MSG_ADDR (SCPU_IPC_MEM_ADDR2+0x100)
|
||||
|
||||
#else
|
||||
#include "membase.h"
|
||||
|
||||
#define SCPU_IPC_MEM_ADDR DDR_MEM_IPC_ADDR
|
||||
#define SCPU_IPC_MEM_ADDR2 (SCPU_IPC_MEM_ADDR + 0x1C00)
|
||||
|
||||
#endif
|
||||
|
||||
#define SCPU2NCPU_ID ('s'<<24 | 'c'<<16 | 'p'<<8 | 'u')
|
||||
#define NCPU2SCPU_ID ('n'<<24 | 'c'<<16 | 'p'<<8 | 'u')
|
||||
|
||||
#define MULTI_MODEL_MAX 16 /* Max active models in memory */
|
||||
#define IPC_IMAGE_ACTIVE_MAX 2 /* Max active images for NCPU/NPU */
|
||||
#define IPC_IMAGE_MAX 10 /* Max cycled buffer for images */
|
||||
#define IPC_MODEL_MAX (MULTI_MODEL_MAX * IPC_IMAGE_ACTIVE_MAX)
|
||||
|
||||
/* Image process cmd_flags set by scpu, TODO: Check all state command */
|
||||
#define IMAGE_STATE_INACTIVE 0
|
||||
#define IMAGE_STATE_ACTIVE 1
|
||||
#define IMAGE_STATE_NPU_DONE 2
|
||||
#define IMAGE_STATE_DONE 3
|
||||
#define IMAGE_STATE_JPEG_ENC_DONE 4
|
||||
#define IMAGE_STATE_JPEG_DEC_DONE 5
|
||||
#define IMAGE_STATE_ERR_DSP_BUSY 6
|
||||
#define IMAGE_STATE_JPEG_ENC_FAIL 7
|
||||
#define IMAGE_STATE_JPEG_DEC_FAIL 8
|
||||
#define IMAGE_STATE_RECEIVING 9 //need check with mozart firmware
|
||||
#define IMAGE_STATE_TOF_DEC_DONE 10
|
||||
#define IMAGE_STATE_TOF_DEC_FAIL 11
|
||||
|
||||
/* Image process status set by ncpu */
|
||||
#define IMAGE_STATE_IDLE 0
|
||||
#define IMAGE_STATE_NPU_BUSY 1
|
||||
//#define IMAGE_STATE_NPU_DONE 2
|
||||
#define IMAGE_STATE_POST_PROCESSING IMAGE_STATE_NPU_DONE
|
||||
#define IMAGE_STATE_POST_PROCESSING_DONE 3
|
||||
//#define IMAGE_STATE_DONE IMAGE_STATE_POST_PROCESSING_DONE
|
||||
#define IMAGE_STATE_ERR (-1)
|
||||
#define IMAGE_STATE_TIMEOUT (7)
|
||||
|
||||
/* Image format flags and config values */
|
||||
typedef enum {
|
||||
/* normalization control
|
||||
* ------------------*/
|
||||
IMAGE_FORMAT_SUB128 = (int)BIT31, /* 1: sub 128 for each value */
|
||||
IMAGE_FORMAT_RIGHT_SHIFT_ONE_BIT = BIT22, /* 1: right shift for 1-bit (normalization)*/
|
||||
|
||||
|
||||
/* cv rotate control
|
||||
* ------------------*/
|
||||
IMAGE_FORMAT_ROT_MASK = (BIT30 | BIT29),
|
||||
IMAGE_FORMAT_ROT_SHIFT = 29,
|
||||
/* -- setting values of ROT -- */
|
||||
IMAGE_FORMAT_ROT_CLOCKWISE = 0x01, /* ROT 90 */
|
||||
IMAGE_FORMAT_ROT_COUNTER_CLOCKWISE = 0x02, /* ROT 270 */
|
||||
IMAGE_FORMAT_ROT_180 = 0x03, // TODO, ROT 180
|
||||
|
||||
|
||||
/* flow control
|
||||
* ------------------*/
|
||||
//IMAGE_FORMAT_RAW_OUTPUT = BIT28 !!! move to "bypass control"
|
||||
IMAGE_FORMAT_PARALLEL_PROC = BIT27, /* 1: parallel execution of NPU and NCPU */
|
||||
//IMAGE_FORMAT_NOT_KEEP_RATIO = BIT26, // TODO, duplicated
|
||||
|
||||
//IMAGE_FORMAT_MODEL_AGE_GENDER = BIT24, // TODO, should remove
|
||||
|
||||
|
||||
/* scale/crop control
|
||||
* -------------------*/
|
||||
//IMAGE_FORMAT_RIGHT_SHIFT_ONE_BIT = BIT22, !!! move to "normalization functions"
|
||||
IMAGE_FORMAT_SYMMETRIC_PADDING = BIT21, /* 1: symmetic padding;
|
||||
0: corner padding */
|
||||
|
||||
IMAGE_FORMAT_CHANGE_ASPECT_RATIO = BIT20, /* 1: scale without padding;
|
||||
0: scale with padding */
|
||||
|
||||
|
||||
/* flow control - 2
|
||||
* ------------------*/
|
||||
IMAGE_FORMAT_BYPASS_PRE = BIT19, /* 1: bypass pre-process */
|
||||
IMAGE_FORMAT_BYPASS_NPU_OP = BIT18, /* 1: bypass NPU OP */
|
||||
IMAGE_FORMAT_BYPASS_CPU_OP = BIT17, /* 1: bypass CPU OP */
|
||||
|
||||
IMAGE_FORMAT_BYPASS_POST = BIT16, /* 1: bypass post-process (output NPU result directly) */
|
||||
IMAGE_FORMAT_RAW_OUTPUT = BIT28, /* 1: bypass post-process (include meta data for data parsing )*/
|
||||
|
||||
|
||||
/* supported image foramts BIT7 - BIT0
|
||||
* --------------------------------------*/
|
||||
IMAGE_FORMAT_NPU = 0x00FF, /* settings: NPU_FORMAT_XXXX */
|
||||
|
||||
} dsp_img_fmt_t;
|
||||
|
||||
/*********************************************
|
||||
* settings for IMAGE_FORMAT_NPU
|
||||
*********************************************/
|
||||
#define NPU_FORMAT_RGBA8888 0x00
|
||||
#define NPU_FORMAT_YUV422 0x10 /* similiar to Y0CBY1CR */
|
||||
#define NPU_FORMAT_NIR 0x20
|
||||
|
||||
/* Determine the exact format with the data byte sequence in DDR memory:
|
||||
* [lowest byte]...[highest byte]
|
||||
*/
|
||||
#define NPU_FORMAT_YCBCR422 0x30 /* alias of CRY1CBY0 */
|
||||
#define NPU_FORMAT_YCBCR422_CRY1CBY0 0x30
|
||||
#define NPU_FORMAT_YCBCR422_CBY1CRY0 0x31
|
||||
#define NPU_FORMAT_YCBCR422_Y1CRY0CB 0x32
|
||||
#define NPU_FORMAT_YCBCR422_Y1CBY0CR 0x33
|
||||
#define NPU_FORMAT_YCBCR422_CRY0CBY1 0x34
|
||||
#define NPU_FORMAT_YCBCR422_CBY0CRY1 0x35
|
||||
#define NPU_FORMAT_YCBCR422_Y0CRY1CB 0x36
|
||||
#define NPU_FORMAT_YCBCR422_Y0CBY1CR 0x37 /* Y0CbY1CrY2CbY3Cr... */
|
||||
|
||||
#define NPU_FORMAT_YUV444 0x40
|
||||
#define NPU_FORMAT_YCBCR444 0x50
|
||||
#define NPU_FORMAT_RGB565 0x60
|
||||
#define NPU_FORMAT_YUV420 0x70
|
||||
// ------------------------------------------
|
||||
|
||||
#define MAX_CNN_NODES 45 //NetputNode, CPU nodes, Out Nodes, etc
|
||||
#define MAX_OUT_NODES 40 //max Out Nodes
|
||||
|
||||
#define MAX_INT_FOR_ALIGN 0x10000000
|
||||
#define NCPU_CLOCK_CNT_PER_MS 500000
|
||||
|
||||
#define KP_DEBUG_BUF_SIZE (8 * 1024 * 1024) // FIXME, max is 1920x1080 RGB8888
|
||||
|
||||
/******************************************************************************
|
||||
Declaration of External Variables & Functions
|
||||
******************************************************************************/
|
||||
// Sec 3: declaration of external variable
|
||||
|
||||
// Sec 4: declaration of external function prototype
|
||||
|
||||
/******************************************************************************
|
||||
Declaration of data structure
|
||||
******************************************************************************/
|
||||
// Sec 5: structure, uniou, enum, linked list
|
||||
/* Model structure */
|
||||
typedef struct kdp_model_s {
|
||||
/* Model type */
|
||||
uint32_t model_type; //defined in model_type.h
|
||||
|
||||
/* Model version */
|
||||
uint32_t model_version;
|
||||
|
||||
/* Input in memory */
|
||||
uint32_t input_mem_addr;
|
||||
int32_t input_mem_len;
|
||||
|
||||
/* Output in memory */
|
||||
uint32_t output_mem_addr;
|
||||
int32_t output_mem_len;
|
||||
|
||||
/* Working buffer */
|
||||
uint32_t buf_addr;
|
||||
int32_t buf_len;
|
||||
|
||||
/* command.bin in memory */
|
||||
uint32_t cmd_mem_addr;
|
||||
int32_t cmd_mem_len;
|
||||
|
||||
/* weight.bin in memory */
|
||||
uint32_t weight_mem_addr;
|
||||
int32_t weight_mem_len;
|
||||
|
||||
/* setup.bin in memory */
|
||||
uint32_t setup_mem_addr;
|
||||
int32_t setup_mem_len;
|
||||
} kdp_model_t;
|
||||
|
||||
typedef struct kdp_model_s kdp_model_info_t;
|
||||
|
||||
/* Result structure of a model */
|
||||
typedef struct result_buf_s {
|
||||
int32_t model_id;
|
||||
uint32_t result_mem_addr;
|
||||
int32_t result_mem_len;
|
||||
int32_t result_ret_len;
|
||||
} result_buf_t;
|
||||
|
||||
#define MAX_PARAMS_LEN 40 /* uint32_t */
|
||||
#define MAX_INPUT_NODE_COUNT 5
|
||||
|
||||
/* Parameter structure of a raw image */
|
||||
typedef struct parameter_s {
|
||||
/* Crop parameters or other purposes */
|
||||
int crop_top;
|
||||
int crop_bottom;
|
||||
int crop_left;
|
||||
int crop_right;
|
||||
|
||||
/* Pad parameters or other purposes */
|
||||
int pad_top;
|
||||
int pad_bottom;
|
||||
int pad_left;
|
||||
int pad_right;
|
||||
|
||||
float scale_width;
|
||||
float scale_height;
|
||||
|
||||
/* IE driver padding mode for pre-processing
|
||||
0:change aspect ratio(no padding).
|
||||
1:keep aspect ratio, allow scaling, pad corner(right or bottom)
|
||||
2:keep aspect ratio, allow scaling, pad center(top/down or right/left)
|
||||
3:keep aspect ratio, not allow scaling, pad corner(right or bottom)
|
||||
4:keep aspect ratio, not allow scaling, pad center(top/down, or right/left)
|
||||
*/
|
||||
uint32_t ie_pad_mode;
|
||||
int32_t angle;
|
||||
int flip_face;
|
||||
} parameter_t;
|
||||
|
||||
typedef struct kdp_img_info_s {
|
||||
/* input image in memory */
|
||||
uint32_t image_mem_addr;
|
||||
int32_t image_mem_len;
|
||||
|
||||
/* raw image dimensions */
|
||||
uint32_t input_row;
|
||||
uint32_t input_col;
|
||||
uint32_t input_channel;
|
||||
|
||||
/* Raw image format and pre-process flags
|
||||
* refer to dsp_img_fmt_t
|
||||
*/
|
||||
uint32_t format;
|
||||
|
||||
/* Parameter structure */
|
||||
struct parameter_s params_s;
|
||||
} kdp_img_info_t;
|
||||
|
||||
struct kdp_img_cfg {
|
||||
uint32_t num_image;
|
||||
kdp_img_info_t image_list[MAX_INPUT_NODE_COUNT];
|
||||
uint32_t inf_format;
|
||||
uint32_t image_buf_active_index; // scpu_to_ncpu->active_img_index
|
||||
};
|
||||
|
||||
struct kdp_crop_box_s {
|
||||
int32_t top;
|
||||
int32_t bottom;
|
||||
int32_t left;
|
||||
int32_t right;
|
||||
};
|
||||
|
||||
struct kdp_pad_value_s {
|
||||
int32_t pad_top;
|
||||
int32_t pad_bottom;
|
||||
int32_t pad_left;
|
||||
int32_t pad_right;
|
||||
};
|
||||
|
||||
typedef struct {
|
||||
uint32_t w;
|
||||
uint32_t h;
|
||||
uint32_t c;
|
||||
} img_dim_t;
|
||||
|
||||
/* scpu_to_ncpu: cmd */
|
||||
typedef enum {
|
||||
CMD_INVALID,
|
||||
CMD_INIT,
|
||||
CMD_RUN_NPU,
|
||||
CMD_SLEEP_NPU,
|
||||
CMD_JPEG_ENCODE,
|
||||
CMD_JPEG_DECODE,
|
||||
CMD_CROP_RESIZE,
|
||||
CMD_TOF_DECODE,
|
||||
CMD_SCPU_NCPU_TOTAL,
|
||||
CMD_ALIGN_32 = MAX_INT_FOR_ALIGN,
|
||||
} scpu_ncpu_cmd_t;
|
||||
|
||||
/* in every IPC interrupt triggered by NCPU, SCPU check in_comm_p to see the data type */
|
||||
typedef enum {
|
||||
NCPU_REQUEST_NEW_IMG = 1,
|
||||
NCPU_EXEC_RESULT,
|
||||
MSG_ALIGN_32 = MAX_INT_FOR_ALIGN,
|
||||
} ncpu_scpu_ipc_msg_type_t;
|
||||
|
||||
/* overall SCPU/DSP status*/
|
||||
typedef enum {
|
||||
NCPU_STS_READY = 0, //DSP is ready to run new task
|
||||
NCPU_STS_BUSY, // one of CNN/JPEG ENC/JPEG DEC is running, cannot accept new task now
|
||||
NCPU_STS_INVALID_PARAM, // invalid IPC parameters
|
||||
STS_ALIGN_32 = MAX_INT_FOR_ALIGN,
|
||||
} ncpu_status_t;
|
||||
|
||||
typedef enum {
|
||||
POST_PROC_FAIL = -1,
|
||||
POST_PROC_SUCCESS = 0,
|
||||
RET_ALIGN_32 = MAX_INT_FOR_ALIGN,
|
||||
} post_proc_return_sts_t;
|
||||
|
||||
/* Raw image structure */
|
||||
typedef struct kdp_img_raw_s {
|
||||
/* Image state: 1 = active, 0 = inactive */
|
||||
int state;
|
||||
|
||||
/* Image sequence number */
|
||||
int seq_num;
|
||||
|
||||
/* Image ref index */
|
||||
int ref_idx;
|
||||
|
||||
/* List of raw images */
|
||||
uint32_t num_image;
|
||||
kdp_img_info_t image_list[MAX_INPUT_NODE_COUNT];
|
||||
|
||||
/* Parallel and raw output flags
|
||||
* refer to dsp_img_fmt_t
|
||||
*/
|
||||
uint32_t inf_format;
|
||||
|
||||
/* Shared parameters for raw image */
|
||||
uint32_t ext_params[MAX_PARAMS_LEN];
|
||||
|
||||
struct result_buf_s result;
|
||||
|
||||
/* Test: SCPU total */
|
||||
uint32_t tick_start;
|
||||
uint32_t tick_end;
|
||||
uint32_t tick_got_ncpu_ack;
|
||||
|
||||
/* Test: NCPU processes */
|
||||
uint32_t tick_start_parse;
|
||||
uint32_t tick_end_parse;
|
||||
uint32_t tick_start_inproc;
|
||||
uint32_t tick_end_inproc;
|
||||
uint32_t tick_start_pre;
|
||||
uint32_t tick_end_pre;
|
||||
uint32_t tick_start_npu;
|
||||
uint32_t tick_cnn_interrupt_rvd;
|
||||
uint32_t tick_end_npu;
|
||||
uint32_t tick_start_post;
|
||||
uint32_t tick_end_post;
|
||||
uint32_t tick_start_dram_copy;
|
||||
uint32_t tick_end_dram_copy;
|
||||
uint32_t tick_rslt_got_scpu_ack;
|
||||
uint32_t tick_ncpu_img_req;
|
||||
uint32_t tick_ncpu_img_ack;
|
||||
uint32_t tick_last_img_req;
|
||||
} kdp_img_raw_t;
|
||||
|
||||
/* Image result structure */
|
||||
typedef struct kdp_img_result_s {
|
||||
post_proc_return_sts_t status __attribute__((aligned (4)));
|
||||
/* Image sequence number */
|
||||
int seq_num;
|
||||
|
||||
/* result memory addr */
|
||||
//dummy information
|
||||
uint32_t result_mem_addr;
|
||||
} kdp_img_result_t;
|
||||
|
||||
typedef struct {
|
||||
uint32_t fmt;
|
||||
|
||||
parameter_t param;
|
||||
|
||||
img_dim_t src_dim;
|
||||
img_dim_t dst_dim;
|
||||
|
||||
uint32_t src_addr;
|
||||
uint32_t src_data_len;
|
||||
|
||||
uint32_t dst_addr;
|
||||
uint32_t dst_buf_size;
|
||||
uint32_t dst_filled_len;
|
||||
|
||||
int32_t seq_num;
|
||||
|
||||
int32_t bUseHwInproc; /* 1: use NPU HW inproc; 0: use DSP SW solution */
|
||||
|
||||
uint32_t tmp_buf_addr; /* this tmp_buf_addr is needed for SW crop/resize, not for HW inproc */
|
||||
|
||||
} crop_resize_param_t;
|
||||
|
||||
typedef enum {
|
||||
CROP_RESIZE_OPERATION_FAILED = -1, /* Failure in doing operation */
|
||||
CROP_RESIZE_OPERATION_SUCCESS = 1, /* Operation Succeded */
|
||||
CROP_RESIZE_OPERATION_INVALID_PARM, /* Inavlid parameter provided */
|
||||
RESIZE_ALIGN_32 = MAX_INT_FOR_ALIGN,
|
||||
} crop_resize_oper_sts_t;
|
||||
|
||||
typedef struct {
|
||||
|
||||
int32_t rslt_type; //NCPU_TO_SCPU_RESULT_TYPE
|
||||
|
||||
crop_resize_oper_sts_t sts __attribute__((aligned (4)));
|
||||
|
||||
/* output buf */
|
||||
uint32_t out_addr;
|
||||
uint32_t out_len;
|
||||
|
||||
int32_t seq_num;
|
||||
|
||||
} crop_resize_result_t;
|
||||
|
||||
/* Structure of nCPU->sCPU IPC Message data */
|
||||
typedef struct ncpu_to_scpu_req_img_s {
|
||||
int32_t bHandledByScpu;
|
||||
int32_t ipc_type; //ncpu_scpu_ipc_msg_type_t
|
||||
int32_t sts; //ncpu_status_t
|
||||
} ncpu_to_scpu_req_img_t;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
int model_id;
|
||||
uint32_t tick_before_preprocess;
|
||||
uint32_t sum_ticks_preprocess;
|
||||
|
||||
uint32_t tick_before_inference;
|
||||
uint32_t sum_ticks_inference;
|
||||
|
||||
uint32_t tick_before_postprocess;
|
||||
uint32_t sum_ticks_postprocess;
|
||||
|
||||
uint32_t tick_before_cpu_op;
|
||||
uint32_t sum_ticks_cpu_op;
|
||||
uint32_t sum_cpu_op_count;
|
||||
|
||||
uint32_t sum_frame_count;
|
||||
} kp_model_profile_t;
|
||||
|
||||
/* Structure of sCPU->nCPU Message */
|
||||
typedef struct scpu_to_ncpu_s {
|
||||
uint32_t id; /* = 'scpu' */
|
||||
volatile uint32_t bNcpuReceived;
|
||||
uint32_t cmd; // scpu_ncpu_cmd_t
|
||||
|
||||
/*
|
||||
* debug control flags (dbg.h):
|
||||
* bits 19-16: scpu debug level
|
||||
* bits 03-00: ncpu debug level
|
||||
*/
|
||||
uint32_t debug_flags;
|
||||
uint32_t kp_dbg_checkpoinots;
|
||||
|
||||
/* Active models in memory and running */
|
||||
int32_t num_models; //usually, num_models=1 (only one active model)
|
||||
struct kdp_model_s models[IPC_MODEL_MAX]; //to save active modelInfo
|
||||
int32_t models_type[IPC_MODEL_MAX]; //to save model type
|
||||
int32_t model_slot_index;
|
||||
|
||||
/* working buffer in case in-proc is necessary, raw img will copy to here for in-proc,
|
||||
in-proc output will be placed in the input mem address in setup.bin */
|
||||
uint32_t input_mem_addr2;
|
||||
int32_t input_mem_len2;
|
||||
|
||||
/* Memory for DME */
|
||||
uint32_t output_mem_addr2;
|
||||
int32_t output_mem_len2;
|
||||
|
||||
/* Memory for post processing (shared) */
|
||||
uint32_t output_mem_addr3;
|
||||
|
||||
kdp_img_raw_t *pRawimg; //SCPU need to alloc for every image
|
||||
uint32_t ncpu_img_req_msg_addr; // ncpu_to_scpu_req_img_t *, SCPU always get result from here
|
||||
|
||||
uint32_t log_buf_base;
|
||||
int32_t log_buf_len;
|
||||
|
||||
/* support features extension or for standalone non-cnn features */
|
||||
void* pExtInParam; //pointer to extended parameter data structure
|
||||
int32_t nLenExtInParam; //length of extended parameter data structure
|
||||
|
||||
void* pExtOutRslt; //pointer to extended feature result data structure
|
||||
int32_t nLenExtOutRslt; //Length of extended feature result data
|
||||
|
||||
void* pCpuNodeBuffer; // pointer to working buffer for Cpu Node
|
||||
int32_t nLenCpuNodeBuffer; // Length of working buffer for Cpu Node
|
||||
|
||||
/* Raw image information */
|
||||
struct kdp_img_raw_s raw_images[IPC_IMAGE_MAX];
|
||||
|
||||
/* Memory for post processing (shared) */
|
||||
uint32_t output_mem_addr4;
|
||||
|
||||
void * kp_dbg_buffer;
|
||||
|
||||
uint32_t kp_dbg_enable_profile; // 1: enable, 0: disable
|
||||
kp_model_profile_t kp_model_profile_records[MULTI_MODEL_MAX];
|
||||
} scpu_to_ncpu_t;
|
||||
|
||||
typedef enum {
|
||||
NCPU_NONE_RESULT = -1,
|
||||
NCPU_POSTPROC_RESULT = 1,
|
||||
NCPU_JPEG_ENC_RESULT,
|
||||
NCPU_JPEG_DEC_RESULT,
|
||||
NCPU_CROP_RESIZE_RESULT,
|
||||
NCPU_TOF_DEC_RESULT,
|
||||
NCPU_RESULT_TYPE_MAX,
|
||||
RES_ALIGN_32 = MAX_INT_FOR_ALIGN,
|
||||
} ncpu_to_scpu_result_type;
|
||||
|
||||
/* Structure of nCPU->sCPU IPC Message data */
|
||||
typedef struct ncpu_to_scpu_postproc_result_s {
|
||||
int32_t model_slot_index; // RUN which model for this image
|
||||
kdp_img_result_t img_result;
|
||||
uint32_t OrigRawImgAddr;
|
||||
} ncpu_to_scpu_postproc_result_t;
|
||||
|
||||
typedef struct ncpu_to_scpu_s {
|
||||
volatile boolean print_log;
|
||||
uint8_t *p_log_buf_base;
|
||||
uint32_t id; /* = 'ncpu' */
|
||||
int32_t bHandledByScpu;
|
||||
ncpu_scpu_ipc_msg_type_t ipc_type __attribute__((aligned (4))); //ncpu_scpu_ipc_msg_type_t
|
||||
ncpu_status_t sts __attribute__((aligned (4))); //overall NCPU/DSP status
|
||||
ncpu_to_scpu_result_type out_type __attribute__((aligned (4)));
|
||||
|
||||
ncpu_to_scpu_postproc_result_t postproc;
|
||||
uint32_t extRsltAddr;
|
||||
|
||||
ncpu_to_scpu_req_img_t req_img;
|
||||
volatile int32_t kp_dbg_status;
|
||||
} ncpu_to_scpu_result_t;
|
||||
|
||||
/*50k log buffer*/
|
||||
#define MAX_LOG_LENGTH 256
|
||||
#define LOG_QUEUE_NUM 200
|
||||
#define FLAG_LOGGER_SCPU_IN (1U << 0)
|
||||
#define FLAG_LOGGER_NCPU_IN (1U << 1)
|
||||
|
||||
enum {
|
||||
LOGGER_SCPU_IN = 0,
|
||||
LOGGER_NCPU_IN,
|
||||
LOGGER_OUT,
|
||||
LOGGER_TOTAL
|
||||
};
|
||||
|
||||
typedef struct {
|
||||
volatile boolean init_done;
|
||||
volatile boolean willing[LOGGER_TOTAL];
|
||||
volatile uint8_t w_idx;
|
||||
volatile uint8_t r_idx;
|
||||
volatile uint8_t turn;
|
||||
uint8_t *p_msg;
|
||||
} logger_mgt_t;
|
||||
|
||||
|
||||
#endif //_IPC_H_
|
||||
|
||||
73
include/common/kneron_pre_post_proc_params.h
Normal file
73
include/common/kneron_pre_post_proc_params.h
Normal file
@ -0,0 +1,73 @@
|
||||
/*
|
||||
* Header for pre post process parameters.
|
||||
*
|
||||
* Copyright (C) 2022 Kneron, Inc. All rights reserved.
|
||||
*
|
||||
*/
|
||||
#ifndef KNERON_PRE_POST_PROC_PARAMS_H
|
||||
#define KNERON_PRE_POST_PROC_PARAMS_H
|
||||
|
||||
#include <stdint.h>
|
||||
#include <stdbool.h>
|
||||
|
||||
#include "model_res.h"
|
||||
|
||||
typedef struct {
|
||||
float prob_thresh;
|
||||
float nms_thresh;
|
||||
uint32_t max_detection_per_class;
|
||||
uint16_t anchor_row;
|
||||
uint16_t anchor_col;
|
||||
uint16_t stride_size;
|
||||
uint16_t reserved_size;
|
||||
uint32_t data[40];
|
||||
} kneron_pre_post_proc_params_yolo_t;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
// pre-proc config
|
||||
struct {
|
||||
uint32_t x;
|
||||
uint32_t y;
|
||||
} landmark[4]; /**< license plate corner landmark */
|
||||
|
||||
bool enable_hw_inproc; /**< to enable hw inproc or run warp perspective transform instead */
|
||||
|
||||
// post-proc config
|
||||
bool is_maxpool_in_model; /**< is maxpool layer in ocr model */
|
||||
uint32_t ocr_rule_base_code; /**< ocr rule base code for ocr correction (ref: enum OCR_RULE_BASE_CODE) */
|
||||
uint32_t max_ocr_number; /**< max number of detected characters */
|
||||
float ocr_score_threshold; /**< score threshold for ocr character filter */
|
||||
float ocr_iou_threshold; /**< IoU threshold for ocr character bounding box filter */
|
||||
} kneron_pre_post_proc_params_car_plate_t;
|
||||
|
||||
|
||||
typedef struct
|
||||
{
|
||||
// pre-proc config
|
||||
float lm_result[LANDMARK_POINTS * 2]; /**< face landmark */
|
||||
int flip_face; /**< is face flip (0: not flip; 1: flip) */
|
||||
|
||||
// post-proc config
|
||||
int run_sigmoid; /**< do sigmoid in post-processing (0: disable; 1: enable) */
|
||||
} kneron_pre_post_proc_params_fr_t;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
// pre-proc config
|
||||
float lm_result[LANDMARK_POINTS * 2]; /**< face landmark */
|
||||
int flip_face; /**< is face flip (0: not flip; 1: flip) */
|
||||
int is_masked; /**< is face masked (0: unmasked; 1: masked) */
|
||||
|
||||
// post-proc config
|
||||
int run_sigmoid; /**< do sigmoid in post-processing (0: disable; 1: enable) */
|
||||
} kneron_pre_post_proc_params_fr_mask_t;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
// post-proc config
|
||||
float prob_threshold; /**< probability threshold */
|
||||
float iou_threshold; /**< IoU threshold */
|
||||
} kneron_pre_post_proc_params_fcos_det_t;
|
||||
|
||||
#endif // KNERON_PRE_POST_PROC_PARAMS_H
|
||||
45
include/common/kp_config.h
Normal file
45
include/common/kp_config.h
Normal file
@ -0,0 +1,45 @@
|
||||
/*
|
||||
*******************************************************************************
|
||||
* Copyright (c) 2010-2022 VATICS(KNERON) Inc. All rights reserved.
|
||||
*
|
||||
* +-----------------------------------------------------------------+
|
||||
* | THIS SOFTWARE IS FURNISHED UNDER A LICENSE AND MAY ONLY BE USED |
|
||||
* | AND COPIED IN ACCORDANCE WITH THE TERMS AND CONDITIONS OF SUCH |
|
||||
* | A LICENSE AND WITH THE INCLUSION OF THE THIS COPY RIGHT NOTICE. |
|
||||
* | THIS SOFTWARE OR ANY OTHER COPIES OF THIS SOFTWARE MAY NOT BE |
|
||||
* | PROVIDED OR OTHERWISE MADE AVAILABLE TO ANY OTHER PERSON. THE |
|
||||
* | OWNERSHIP AND TITLE OF THIS SOFTWARE IS NOT TRANSFERRED. |
|
||||
* | |
|
||||
* | THE INFORMATION IN THIS SOFTWARE IS SUBJECT TO CHANGE WITHOUT |
|
||||
* | ANY PRIOR NOTICE AND SHOULD NOT BE CONSTRUED AS A COMMITMENT BY |
|
||||
* | VATICS(KNERON) INC. |
|
||||
* +-----------------------------------------------------------------+
|
||||
*
|
||||
*******************************************************************************
|
||||
*/
|
||||
#ifndef KP_CONFIG_H
|
||||
#define KP_CONFIG_H
|
||||
|
||||
/**
|
||||
* @file kp_config.h
|
||||
* @brief KL630 global config
|
||||
* @version 2.0
|
||||
* @date 2022-09-15
|
||||
* @note This file must be decoupled from "kl630/kdp_apps/kmdw/libvmf_nnm/usb_companion/kmdw_cmd_handler_630.c" & "kl630/kdp_apps/SPL_Internal"
|
||||
*
|
||||
* @copyright Copyright (c) 2022 Kneron Inc. All rights reserved.
|
||||
*/
|
||||
|
||||
#pragma once
|
||||
|
||||
#define BOOT_CONFIG_FILE_PATH "/mnt/flash/plus/boot_config.conf"
|
||||
#define FLASH_NEF_PATH "/mnt/flash/plus/kp_model/models_630.nef"
|
||||
#define UPLOAD_KP_FW_TAR_PATH "/tmp/kp_firmware.tar"
|
||||
#define KP_FW_PARTITION_PATH_BASE "/mnt/flash/plus/kp_firmware/kp_firmware"
|
||||
#define UPLOAD_KP_LOADER_TAR_PATH "/tmp/kp_loader.tar"
|
||||
#define KP_LOADER_EXE_PATH "/kp_loader/bin/kp_loader"
|
||||
#define KP_LOADER_PARTITION_PATH_BASE "/mnt/flash/plus/kp_loader/kp_loader"
|
||||
#define KP_FW_PATH "/tmp/plus"
|
||||
#define KP_FW_EXE_PATH "/tmp/plus/kp_firmware/bin/kp_firmware"
|
||||
|
||||
#endif
|
||||
918
include/common/kp_struct.h
Normal file
918
include/common/kp_struct.h
Normal file
@ -0,0 +1,918 @@
|
||||
/*
|
||||
*******************************************************************************
|
||||
* Copyright (c) 2010-2022 VATICS(KNERON) Inc. All rights reserved.
|
||||
*
|
||||
* +-----------------------------------------------------------------+
|
||||
* | THIS SOFTWARE IS FURNISHED UNDER A LICENSE AND MAY ONLY BE USED |
|
||||
* | AND COPIED IN ACCORDANCE WITH THE TERMS AND CONDITIONS OF SUCH |
|
||||
* | A LICENSE AND WITH THE INCLUSION OF THE THIS COPY RIGHT NOTICE. |
|
||||
* | THIS SOFTWARE OR ANY OTHER COPIES OF THIS SOFTWARE MAY NOT BE |
|
||||
* | PROVIDED OR OTHERWISE MADE AVAILABLE TO ANY OTHER PERSON. THE |
|
||||
* | OWNERSHIP AND TITLE OF THIS SOFTWARE IS NOT TRANSFERRED. |
|
||||
* | |
|
||||
* | THE INFORMATION IN THIS SOFTWARE IS SUBJECT TO CHANGE WITHOUT |
|
||||
* | ANY PRIOR NOTICE AND SHOULD NOT BE CONSTRUED AS A COMMITMENT BY |
|
||||
* | VATICS(KNERON) INC. |
|
||||
* +-----------------------------------------------------------------+
|
||||
*
|
||||
*******************************************************************************
|
||||
*/
|
||||
#ifndef KP_STRUCT_H
|
||||
#define KP_STRUCT_H
|
||||
|
||||
/**
|
||||
* @file kp_struct.h
|
||||
* @brief Kneron PLUS data structure
|
||||
* @version 0.1
|
||||
* @date 2021-03-22
|
||||
*
|
||||
* @copyright Copyright (c) 2021 Kneron Inc. All rights reserved.
|
||||
*/
|
||||
|
||||
#pragma once
|
||||
|
||||
#include <stdint.h>
|
||||
#include <stdbool.h>
|
||||
|
||||
#define APP_PADDING_BYTES 28 /**< Default padding size */
|
||||
#define MAX_INPUT_NODE_COUNT 5 /**< Supported maximum count of the model input node */
|
||||
|
||||
#define KDP2_MAGIC_TYPE_COMMAND 0xAB67CD13 /**< Magic number for data check */
|
||||
#define KDP2_MAGIC_TYPE_INFERENCE 0x11FF22AA /**< Magic number for data check */
|
||||
#define KDP2_MAGIC_TYPE_CUSTOMIZED 0x11FF33CC /**< Magic number for customized data */
|
||||
#define KDP2_MAGIC_TYPE_CHECKPOINT_DATA 0x34ABF977 /**< Magic number for debug checkpoint data */
|
||||
|
||||
|
||||
/**
|
||||
* @brief return code of most APIs.
|
||||
*/
|
||||
enum KP_API_RETURN_CODE
|
||||
{
|
||||
KP_SUCCESS = 0,
|
||||
|
||||
/* libusb error code */
|
||||
KP_ERROR_USB_IO_N1 = -1,
|
||||
KP_ERROR_USB_INVALID_PARAM_N2 = -2,
|
||||
KP_ERROR_USB_ACCESS_N3 = -3,
|
||||
KP_ERROR_USB_NO_DEVICE_N4 = -4,
|
||||
KP_ERROR_USB_NOT_FOUND_N5 = -5,
|
||||
KP_ERROR_USB_BUSY_N6 = -6,
|
||||
KP_ERROR_USB_TIMEOUT_N7 = -7,
|
||||
KP_ERROR_USB_OVERFLOW_N8 = -8,
|
||||
KP_ERROR_USB_PIPE_N9 = -9,
|
||||
KP_ERROR_USB_INTERRUPTED_N10 = -10,
|
||||
KP_ERROR_USB_NO_MEM_N11 = -11,
|
||||
KP_ERROR_USB_NOT_SUPPORTED_N12 = -12,
|
||||
KP_ERROR_USB_OTHER_N99 = -99,
|
||||
|
||||
/* libwdi error code (remapping from: kneron_plus/thirdparty/windows/include/libwdi.h) */
|
||||
KP_ERROR_WDI_BEGIN = -200,
|
||||
KP_ERROR_WDI_IO_N1 = -201,
|
||||
KP_ERROR_WDI_INVALID_PARAM_N2 = -202,
|
||||
KP_ERROR_WDI_ACCESS_N3 = -203,
|
||||
KP_ERROR_WDI_NO_DEVICE_N4 = -204,
|
||||
KP_ERROR_WDI_NOT_FOUND_N5 = -205,
|
||||
KP_ERROR_WDI_BUSY_N6 = -206,
|
||||
KP_ERROR_WDI_TIMEOUT_N7 = -207,
|
||||
KP_ERROR_WDI_OVERFLOW_N8 = -208,
|
||||
KP_ERROR_WDI_PENDING_INSTALLATION_N9 = -209,
|
||||
KP_ERROR_WDI_INTERRUPTED_N10 = -210,
|
||||
KP_ERROR_WDI_RESOURCE_N11 = -211,
|
||||
KP_ERROR_WDI_NOT_SUPPORTED_N12 = -212,
|
||||
KP_ERROR_WDI_EXISTS_N13 = -213,
|
||||
KP_ERROR_WDI_USER_CANCEL_N14 = -214,
|
||||
KP_ERROR_WDI_NEEDS_ADMIN_N15 = -215,
|
||||
KP_ERROR_WDI_WOW64_N16 = -216,
|
||||
KP_ERROR_WDI_INF_SYNTAX_N17 = -217,
|
||||
KP_ERROR_WDI_CAT_MISSING_N18 = -218,
|
||||
KP_ERROR_WDI_UNSIGNED_N19 = -219,
|
||||
KP_ERROR_WDI_OTHER_N99 = -299,
|
||||
|
||||
/* host error code */
|
||||
KP_ERROR_MEMORY_ALLOCATION_FAILURE_9 = 9,
|
||||
KP_ERROR_DEVICE_NOT_EXIST_10 = 10,
|
||||
KP_ERROR_DEVICE_INCORRECT_RESPONSE_11 = 11,
|
||||
KP_ERROR_INVALID_PARAM_12 = 12,
|
||||
KP_ERROR_SEND_DESC_FAIL_13 = 13,
|
||||
KP_ERROR_SEND_DATA_FAIL_14 = 14,
|
||||
KP_ERROR_SEND_DATA_TOO_LARGE_15 = 15,
|
||||
KP_ERROR_RECV_DESC_FAIL_16 = 16,
|
||||
KP_ERROR_RECV_DATA_FAIL_17 = 17,
|
||||
KP_ERROR_RECV_DATA_TOO_LARGE_18 = 18,
|
||||
KP_ERROR_FW_UPDATE_FAILED_19 = 19,
|
||||
KP_ERROR_FILE_OPEN_FAILED_20 = 20,
|
||||
KP_ERROR_INVALID_MODEL_21 = 21,
|
||||
KP_ERROR_IMAGE_RESOLUTION_TOO_SMALL_22 = 22,
|
||||
KP_ERROR_IMAGE_INVALID_WIDTH_23 = 23,
|
||||
KP_ERROR_INVALID_FIRMWARE_24 = 24,
|
||||
KP_ERROR_RESET_FAILED_25 = 25,
|
||||
KP_ERROR_DEVICES_NUMBER_26 = 26,
|
||||
KP_ERROR_CONFIGURE_DEVICE_27 = 27,
|
||||
KP_ERROR_CONNECT_FAILED_28 = 28,
|
||||
KP_ERROR_DEVICE_GROUP_MIX_PRODUCT_29 = 29,
|
||||
KP_ERROR_RECEIVE_INCORRECT_HEADER_STAMP_30 = 30,
|
||||
KP_ERROR_RECEIVE_SIZE_MISMATCH_31 = 31,
|
||||
KP_ERROR_RECEIVE_JOB_ID_MISMATCH_32 = 32,
|
||||
KP_ERROR_INVALID_CUSTOMIZED_JOB_ID_33 = 33,
|
||||
KP_ERROR_FW_LOAD_FAILED_34 = 34,
|
||||
KP_ERROR_MODEL_NOT_LOADED_35 = 35,
|
||||
KP_ERROR_INVALID_CHECKPOINT_DATA_36 = 36,
|
||||
KP_DBG_CHECKPOINT_END_37 = 37,
|
||||
KP_ERROR_INVALID_HOST_38 = 38,
|
||||
KP_ERROR_MEMORY_FREE_FAILURE_39 = 39,
|
||||
KP_ERROR_USB_BOOT_LOAD_SECOND_MODEL_40 = 40,
|
||||
KP_ERROR_CHECK_FW_VERSION_FAILED_41 = 41,
|
||||
KP_ERROR_FIFOQ_INPUT_BUFF_COUNT_NOT_ENOUGH_42 = 42,
|
||||
KP_ERROR_FIFOQ_SETTING_FAILED_43 = 43,
|
||||
KP_ERROR_UNSUPPORTED_DEVICE_44 = 44,
|
||||
KP_ERROR_IMAGE_INVALID_HEIGHT_45 = 45,
|
||||
KP_ERROR_ADJUST_DDR_HEAP_FAILED_46 = 46,
|
||||
KP_ERROR_DEVICE_NOT_ACCESSIBLE_47 = 47,
|
||||
|
||||
KP_ERROR_OTHER_99 = 99,
|
||||
|
||||
/* firmware error code */
|
||||
KP_FW_ERROR_UNKNOWN_APP = 100,
|
||||
KP_FW_INFERENCE_ERROR_101 = 101,
|
||||
KP_FW_DDR_MALLOC_FAILED_102 = 102,
|
||||
KP_FW_INFERENCE_TIMEOUT_103 = 103,
|
||||
KP_FW_LOAD_MODEL_FAILED_104 = 104,
|
||||
KP_FW_CONFIG_POST_PROC_ERROR_MALLOC_FAILED_105 = 105,
|
||||
KP_FW_CONFIG_POST_PROC_ERROR_NO_SPACE_106 = 106,
|
||||
KP_FW_IMAGE_SIZE_NOT_MATCH_MODEL_INPUT_107 = 107,
|
||||
KP_FW_NOT_SUPPORT_PREPROCESSING_108 = 108,
|
||||
KP_FW_GET_MODEL_INFO_FAILED_109 = 109,
|
||||
KP_FW_WRONG_INPUT_BUFFER_COUNT_110 = 110,
|
||||
KP_FW_INVALID_PRE_PROC_MODEL_INPUT_SIZE_111 = 111,
|
||||
KP_FW_INVALID_INPUT_CROP_PARAM_112 = 112,
|
||||
KP_FW_ERROR_FILE_OPEN_FAILED_113 = 113,
|
||||
KP_FW_ERROR_FILE_STATE_FAILED_114 = 114,
|
||||
KP_FW_ERROR_FILE_READ_FAILED_115 = 115,
|
||||
KP_FW_ERROR_FILE_WRITE_FAILED_116 = 116,
|
||||
KP_FW_ERROR_FILE_CHMOD_FAILED_117 = 117,
|
||||
KP_FW_ERROR_FILE_FAILED_OTHER_118 = 118,
|
||||
KP_FW_ERROR_INVALID_BOOT_CONFIG_119 = 119,
|
||||
KP_FW_ERROR_LOADER_ERROR_120 = 120,
|
||||
KP_FW_ERROR_POSIX_SPAWN_FAILED_121 = 121,
|
||||
KP_FW_ERROR_USB_SEND_FAILED_122 = 122,
|
||||
KP_FW_ERROR_USB_RECEIVE_FAILED_123 = 123,
|
||||
KP_FW_ERROR_HANDLE_NOT_READY_124 = 124,
|
||||
KP_FW_FIFOQ_ACCESS_FAILED_125 = 125,
|
||||
KP_FW_FIFOQ_NOT_READY_126 = 126,
|
||||
KP_FW_ERROR_FILE_SEEK_FAILED_127 = 127,
|
||||
KP_FW_ERROR_FILE_FLUSH_FAILED_128 = 128,
|
||||
KP_FW_ERROR_FILE_SYNC_FAILED_129 = 129,
|
||||
KP_FW_ERROR_FILE_CLOSE_FAILED_130 = 130,
|
||||
KP_FW_ERROR_MODEL_EXIST_CPU_NODE_131 = 131,
|
||||
KP_FW_ERROR_MODEL_EXIST_CONST_INPU_NODE_132 = 132,
|
||||
|
||||
/* ncpu error code (sync with ipc.h) */
|
||||
KP_FW_NCPU_ERR_BEGIN = 200,
|
||||
KP_FW_NCPU_INVALID_IMAGE_201 = 201,
|
||||
KP_FW_NCPU_INPROC_FAILED_202 = 202,
|
||||
|
||||
/* firmware eFuse error code */
|
||||
KP_FW_EFUSE_CAN_NOT_BURN_300 = 300,
|
||||
KP_FW_EFUSE_PROTECTED_301 = 301,
|
||||
KP_FW_EFUSE_OTHER_302 = 302,
|
||||
|
||||
/* firmware APP error code */
|
||||
/* mask_fdfr error code */
|
||||
KP_FW_APP_MASK_FDFR_ENROLL_WITH_MASKED_FACE_10000 = 10000,
|
||||
|
||||
/* seg error code */
|
||||
KP_FW_APP_SEG_INSUFFICIENT_RESULT_BUFFER_SIZE_10001 = 10001,
|
||||
};
|
||||
|
||||
/**
|
||||
* @brief enum for USB speed mode
|
||||
*/
|
||||
typedef enum
|
||||
{
|
||||
KP_USB_SPEED_UNKNOWN = 0,
|
||||
KP_USB_SPEED_LOW = 1,
|
||||
KP_USB_SPEED_FULL = 2,
|
||||
KP_USB_SPEED_HIGH = 3,
|
||||
KP_USB_SPEED_SUPER = 4,
|
||||
} kp_usb_speed_t;
|
||||
|
||||
/**
|
||||
* @brief enum for USB PID(Product ID)
|
||||
*/
|
||||
typedef enum
|
||||
{
|
||||
KP_DEVICE_KL520 = 0x100, /**< KL520 USB PID */
|
||||
KP_DEVICE_KL720 = 0x720, /**< KL720 USB PID */
|
||||
KP_DEVICE_KL720_LEGACY = 0x200, /**< KL720 Legacy USB PID */
|
||||
KP_DEVICE_KL530 = 0x530, /**< KL530 USB PID */
|
||||
KP_DEVICE_KL730 = 0x730, /**< KL730 USB PID */
|
||||
KP_DEVICE_KL630 = 0x630, /**< KL630 USB PID */
|
||||
KP_DEVICE_KL540 = 0x540, /**< KL540 USB PID */
|
||||
} kp_product_id_t;
|
||||
|
||||
/**
|
||||
* @brief reset mode
|
||||
*/
|
||||
typedef enum
|
||||
{
|
||||
KP_RESET_REBOOT = 0, /**< Higheset level to reset Kneron device. Kneron device would disconnect after this reset. */
|
||||
KP_RESET_INFERENCE = 1, /**< Soft reset: reset inference FIFO queue. */
|
||||
KP_RESET_SHUTDOWN = 2, /**< Shut down Kneron device. For KL520, only useful if HW circuit supports (ex. 96 bord), dongle is not supported. For KL720, this function is not supported. */
|
||||
KP_RESET_REBOOT_SYSTEM = 3, /**< Reboot entire system */
|
||||
} kp_reset_mode_t;
|
||||
|
||||
/**
|
||||
* @brief enum for generic raw data channel ordering
|
||||
*/
|
||||
typedef enum
|
||||
{
|
||||
KP_CHANNEL_ORDERING_HCW = 0, /**< KL520 default, height/channel/width in order */
|
||||
KP_CHANNEL_ORDERING_CHW = 1, /**< KL720 default, channel/height/width in order */
|
||||
KP_CHANNEL_ORDERING_HWC = 2, /**< TensorFlow style, height/width/channel in order */
|
||||
} kp_channel_ordering_t;
|
||||
|
||||
/**
|
||||
* @brief enum for fixed-point data type
|
||||
*/
|
||||
typedef enum
|
||||
{
|
||||
KP_FIXED_POINT_DTYPE_UNKNOWN = 0, /**< unknown data type */
|
||||
KP_FIXED_POINT_DTYPE_INT8 = 1, /**< represent one fixed-point value by 8-bit data type */
|
||||
KP_FIXED_POINT_DTYPE_INT16 = 2, /**< represent one fixed-point value by 16-bit data type */
|
||||
} kp_fixed_point_dtype_t;
|
||||
|
||||
/**
|
||||
* @brief information of device (USB)
|
||||
*/
|
||||
typedef struct
|
||||
{
|
||||
uint32_t port_id; /**< an unique ID representing for a Kneron device, can be used as input while connecting devices */
|
||||
uint16_t vendor_id; /**< supposed to be 0x3231. */
|
||||
uint16_t product_id; /**< enum kp_product_id_t. */
|
||||
int link_speed; /**< enum kp_usb_speed_t. */
|
||||
uint32_t kn_number; /**< KN number. */
|
||||
bool isConnectable; /**< indicate if this device is connectable. */
|
||||
char port_path[20]; /**< "busNo-hub_portNo-device_portNo"
|
||||
ex: "1-2-3", means bus 1 - (hub) port 2 - (device) port 3 */
|
||||
char firmware[30]; /**< Firmware description. */
|
||||
} __attribute__((aligned(4))) kp_device_descriptor_t;
|
||||
|
||||
/**
|
||||
* @brief information of connected devices from USB perspectives.
|
||||
*/
|
||||
typedef struct
|
||||
{
|
||||
int num_dev; /**< connected devices */
|
||||
kp_device_descriptor_t device[]; /**< real index range from 0 ~ (num_dev-1) */
|
||||
} __attribute__((aligned(4))) kp_devices_list_t;
|
||||
|
||||
/**
|
||||
* @brief image format supported for inference.
|
||||
*/
|
||||
typedef enum
|
||||
{
|
||||
KP_IMAGE_FORMAT_UNKNOWN = 0x0,
|
||||
KP_IMAGE_FORMAT_RGB565 = 0x60, /**< RGB565 16bits */
|
||||
KP_IMAGE_FORMAT_RGBA8888 = 0x0D, /**< RGBA8888 32bits */
|
||||
KP_IMAGE_FORMAT_YUYV = 0x2F, /**< YUYV 16bits */
|
||||
KP_IMAGE_FORMAT_YCBCR422_CRY1CBY0 = 0x30, /**< YCbCr422 (order: CrY1CbY0) 16bits */
|
||||
KP_IMAGE_FORMAT_YCBCR422_CBY1CRY0 = 0x31, /**< YCbCr422 (order: CbY1CrY0) 16bits */
|
||||
KP_IMAGE_FORMAT_YCBCR422_Y1CRY0CB = 0x32, /**< YCbCr422 (order: Y1CrY0Cb) 16bits */
|
||||
KP_IMAGE_FORMAT_YCBCR422_Y1CBY0CR = 0x33, /**< YCbCr422 (order: Y1CbY0Cr) 16bits */
|
||||
KP_IMAGE_FORMAT_YCBCR422_CRY0CBY1 = 0x34, /**< YCbCr422 (order: CrY0CbY1) 16bits */
|
||||
KP_IMAGE_FORMAT_YCBCR422_CBY0CRY1 = 0x35, /**< YCbCr422 (order: CbY0CrY1) 16bits */
|
||||
KP_IMAGE_FORMAT_YCBCR422_Y0CRY1CB = 0x36, /**< YCbCr422 (order: Y0CrY1Cb) 16bits */
|
||||
KP_IMAGE_FORMAT_YCBCR422_Y0CBY1CR = 0x37, /**< YCbCr422 (order: Y0CbY1Cr) 16bits */
|
||||
KP_IMAGE_FORMAT_RAW8 = 0x20, /**< RAW 8bits */
|
||||
KP_IMAGE_FORMAT_YUV420 = 0x70, /**< YUV420 (planar) 12bits (KL630 only) */
|
||||
} kp_image_format_t;
|
||||
|
||||
/**
|
||||
* @brief npu raw data layout format for tensors.
|
||||
*/
|
||||
typedef enum
|
||||
{
|
||||
KP_MODEL_TENSOR_DATA_LAYOUT_UNKNOWN = 0,
|
||||
KP_MODEL_TENSOR_DATA_LAYOUT_4W4C8B = 1, /**< width: 4 bits, channel: 4 bits, depth: 8 bits */
|
||||
KP_MODEL_TENSOR_DATA_LAYOUT_1W16C8B = 2, /**< width: 1 bits, channel: 16 bits, depth: 8 bits */
|
||||
KP_MODEL_TENSOR_DATA_LAYOUT_16W1C8B = 3, /**< width: 16 bits, channel: 4 bits, depth: 8 bits */
|
||||
KP_MODEL_TENSOR_DATA_LAYOUT_8W1C16B = 4, /**< width: 8 bits, channel: 1 bits, depth: 16 bits */
|
||||
} kp_model_tensor_data_layout_t;
|
||||
|
||||
/**
|
||||
* @brief model target chip.
|
||||
*/
|
||||
typedef enum
|
||||
{
|
||||
KP_MODEL_TARGET_CHIP_UNKNOWN = 0,
|
||||
KP_MODEL_TARGET_CHIP_KL520 = 1, /**< model for kl520 */
|
||||
KP_MODEL_TARGET_CHIP_KL720 = 2, /**< model for kl720 */
|
||||
KP_MODEL_TARGET_CHIP_KL530 = 3, /**< model for kl530 */
|
||||
KP_MODEL_TARGET_CHIP_KL730 = 4, /**< model for kl730 */
|
||||
KP_MODEL_TARGET_CHIP_KL630 = 5, /**< model for kl630 */
|
||||
KP_MODEL_TARGET_CHIP_KL540 = 6, /**< model for kl540 */
|
||||
} kp_model_target_chip_t;
|
||||
|
||||
/**
|
||||
* @brief a basic descriptor for nef schema version
|
||||
*/
|
||||
typedef struct
|
||||
{
|
||||
uint32_t major; /**< major number */
|
||||
uint32_t minor; /**< minor number */
|
||||
uint32_t revision; /**< revision number */
|
||||
} __attribute__((packed, aligned(4))) kp_nef_schema_version_t;
|
||||
|
||||
/**
|
||||
* @brief a basic descriptor for setup.bin schema version
|
||||
*/
|
||||
typedef struct
|
||||
{
|
||||
uint32_t major; /**< major number */
|
||||
uint32_t minor; /**< minor number */
|
||||
uint32_t revision; /**< revision number */
|
||||
} __attribute__((packed, aligned(4))) kp_setup_bin_schema_version_t;
|
||||
|
||||
/**
|
||||
* @brief a basic descriptor for setup.bin file schema version
|
||||
*/
|
||||
typedef struct
|
||||
{
|
||||
uint32_t major; /**< major number */
|
||||
uint32_t minor; /**< minor number */
|
||||
uint32_t revision; /**< revision number */
|
||||
} __attribute__((packed, aligned(4))) kp_file_schema_version_t;
|
||||
|
||||
/**
|
||||
* @brief a basic descriptor for a fixed-point quantization information
|
||||
*/
|
||||
typedef struct
|
||||
{
|
||||
float scale; /**< scale of node */
|
||||
int32_t radix; /**< radix of node */
|
||||
} __attribute__((packed, aligned(4))) kp_quantized_fixed_point_descriptor_t;
|
||||
|
||||
/**
|
||||
* @brief a basic descriptor for quantization parameters
|
||||
*/
|
||||
typedef struct
|
||||
{
|
||||
uint32_t quantized_fixed_point_descriptor_num; /**< numbers of fixed-point quantization information */
|
||||
kp_quantized_fixed_point_descriptor_t* quantized_fixed_point_descriptor; /**< array of fixed-point quantization information */
|
||||
} __attribute__((packed, aligned(4))) kp_quantization_parameters_t;
|
||||
|
||||
/**
|
||||
* @brief a basic descriptor for a node in model
|
||||
*/
|
||||
typedef struct
|
||||
{
|
||||
uint32_t index; /**< index of node */
|
||||
char* name; /**< name of node */
|
||||
uint32_t shape_npu_len; /**< length of npu shape */
|
||||
uint32_t* shape_npu; /**< npu shape */
|
||||
uint32_t shape_onnx_len; /**< length of onnx shape */
|
||||
uint32_t* shape_onnx; /**< onnx shape */
|
||||
uint32_t data_layout; /**< npu memory layout */
|
||||
kp_quantization_parameters_t quantization_parameters; /**< quantization parameters */
|
||||
} __attribute__((packed, aligned(4))) kp_tensor_descriptor_t;
|
||||
|
||||
/**
|
||||
* @brief a basic descriptor for a model
|
||||
*/
|
||||
typedef struct
|
||||
{
|
||||
uint32_t target; /**< target chip of model */
|
||||
uint32_t version; /**< version of model */
|
||||
uint32_t id; /**< id of model */
|
||||
uint32_t input_nodes_num; /**< number of model input nodes */
|
||||
kp_tensor_descriptor_t* input_nodes; /**< array of model output node information */
|
||||
uint32_t output_nodes_num; /**< number of model output nodes */
|
||||
kp_tensor_descriptor_t* output_nodes; /**< array of model output node information */
|
||||
kp_setup_bin_schema_version_t setup_bin_schema_version; /**< schema version of setup.bin */
|
||||
kp_file_schema_version_t file_schema_version; /**< file schema version of setup.bin */
|
||||
uint32_t max_raw_out_size; /**< needed raw output buffer size for this model */
|
||||
} __attribute__((packed, aligned(4))) kp_single_model_descriptor_t;
|
||||
|
||||
/**
|
||||
* @brief a basic descriptor for a NEF metadata
|
||||
*/
|
||||
typedef struct
|
||||
{
|
||||
uint32_t kn_num; /**< target KN number device of encrypted all models */
|
||||
char* toolchain_version; /**< toolchain version of all models */
|
||||
char* compiler_version; /**< compiler version of all models */
|
||||
kp_nef_schema_version_t nef_schema_version; /**< schema version of nef */
|
||||
char* platform; /**< usb dongle, 96 board, etc. */
|
||||
} __attribute__((packed, aligned(4))) kp_model_nef_metadata_t;
|
||||
|
||||
/**
|
||||
* @brief a basic descriptor for a NEF
|
||||
*/
|
||||
typedef struct
|
||||
{
|
||||
uint32_t magic; /**< magic number for model_nef_descriptor (0x5AA55AA5) */
|
||||
kp_model_nef_metadata_t metadata; /**< nef metadata */
|
||||
uint32_t target; /**< target chip of all models (1: KL520, 2: KL720, etc.) */
|
||||
uint32_t crc; /**< crc of all models */
|
||||
uint32_t num_models; /**< number of models */
|
||||
kp_single_model_descriptor_t* models; /**< model descriptors */
|
||||
} __attribute__((packed, aligned(4))) kp_model_nef_descriptor_t;
|
||||
|
||||
/**
|
||||
* @brief attribute for configuring ddr
|
||||
*/
|
||||
typedef struct
|
||||
{
|
||||
uint32_t model_size; /**< DDR space for model */
|
||||
uint32_t input_buffer_size; /**< input buffer size for FIFO queue */
|
||||
uint32_t input_buffer_count; /**< input buffer count for FIFO queue */
|
||||
uint32_t result_buffer_size; /**< result buffer size for FIFO queue */
|
||||
uint32_t result_buffer_count; /**< result buffer count for FIFO queue */
|
||||
} __attribute__((aligned(4))) kp_ddr_manage_attr_t;
|
||||
|
||||
/**
|
||||
* @brief a handle represent connected Kneron device.
|
||||
*/
|
||||
typedef struct
|
||||
{
|
||||
int timeout; /**< global timeout value for all USB communications with the device */
|
||||
int num_device; /**< number of devices in device group */
|
||||
kp_product_id_t product_id; /**< enum kp_product_id_t */
|
||||
kp_model_nef_descriptor_t loaded_model_desc; /**< a basic descriptor for a NEF */
|
||||
kp_ddr_manage_attr_t ddr_attr; /**< attribute for configuring ddr */
|
||||
} __attribute__((aligned(4))) kp_device_group_s;
|
||||
|
||||
/**
|
||||
* @brief a pointer handle represent connected Kneron device.
|
||||
*/
|
||||
typedef kp_device_group_s *kp_device_group_t;
|
||||
|
||||
/**
|
||||
* @brief normalization mode
|
||||
*/
|
||||
typedef enum
|
||||
{
|
||||
KP_NORMALIZE_DISABLE = 0xFF, /**< disable normalize */
|
||||
KP_NORMALIZE_KNERON = 0x1, /**< RGB/256 - 0.5, refer to the toolchain manual */
|
||||
KP_NORMALIZE_TENSOR_FLOW = 0x2, /**< RGB/127.5 - 1.0, refer to the toolchain manual */
|
||||
KP_NORMALIZE_YOLO = 0x3, /**< RGB/255.0, refer to the toolchain manual */
|
||||
KP_NORMALIZE_CUSTOMIZED_DEFAULT = 0x4, /**< customized, default, refer to the toolchain manual */
|
||||
KP_NORMALIZE_CUSTOMIZED_SUB128 = 0x5, /**< customized, subtract 128, refer to the toolchain manual */
|
||||
KP_NORMALIZE_CUSTOMIZED_DIV2 = 0x6, /**< customized, divide by 2, refer to the toolchain manual */
|
||||
KP_NORMALIZE_CUSTOMIZED_SUB128_DIV2 = 0x7, /**< customized, subtract 128 and divide by 2, refer to the toolchain manual */
|
||||
} kp_normalize_mode_t;
|
||||
|
||||
/**
|
||||
* @brief resize mode
|
||||
*/
|
||||
typedef enum
|
||||
{
|
||||
KP_RESIZE_DISABLE = 0x1, /**< Disable Resize in Pre-process */
|
||||
KP_RESIZE_ENABLE = 0x2, /**< Enable Resize in Pre-process */
|
||||
} kp_resize_mode_t;
|
||||
|
||||
/**
|
||||
* @brief rotation mode
|
||||
*/
|
||||
typedef enum
|
||||
{
|
||||
KP_ROT_0_DEGRESS = 0x0, /**< Disable Rotation in Pre-process */
|
||||
KP_ROT_90_DEGRESS = 0x1, /**< Enable Rotation 90 Degress in Pre-process */
|
||||
KP_ROT_270_DEGRESS = 0x2, /**< Enable Rotation 270 Degress in Pre-process */
|
||||
KP_ROT_180_DEGRESS = 0x3, /**< Enable Rotation 180 Degress in Pre-process */
|
||||
KP_ROT_MAX_NUM,
|
||||
} kp_rotation_mode_t;
|
||||
|
||||
/**
|
||||
* @brief padding mode
|
||||
*/
|
||||
typedef enum
|
||||
{
|
||||
KP_PADDING_DISABLE = 0x1, /**< Disable Padding in Pre-process */
|
||||
KP_PADDING_CORNER = 0x2, /**< Using Corner Padding in Pre-process */
|
||||
KP_PADDING_SYMMETRIC = 0x3, /**< Using Symmetric Padding in Pre-process */
|
||||
} kp_padding_mode_t;
|
||||
|
||||
/**
|
||||
* @brief data structure for inference configurations
|
||||
*/
|
||||
typedef struct
|
||||
{
|
||||
bool enable_frame_drop; /**< enable this to keep inference non-blocking by dropping oldest and unprocessed frames */
|
||||
} __attribute__((aligned(4))) kp_inf_configuration_t;
|
||||
|
||||
/**
|
||||
* @brief data structure for a crop
|
||||
*/
|
||||
typedef struct
|
||||
{
|
||||
uint32_t crop_number; /**< index number */
|
||||
|
||||
uint32_t x1; /**< top-left corner: x */
|
||||
uint32_t y1; /**< top-left corner: y */
|
||||
uint32_t width; /**< width */
|
||||
uint32_t height; /**< height */
|
||||
} __attribute__((packed, aligned(4))) kp_inf_crop_box_t, VMF_NNM_INF_CROP_BOX_T;
|
||||
|
||||
/**
|
||||
* @brief hardware pre-process related value for raw output result
|
||||
*
|
||||
*/
|
||||
typedef struct
|
||||
{
|
||||
uint32_t img_width; /**< image width before hardware pre-process */
|
||||
uint32_t img_height; /**< image height before hardware pre-process */
|
||||
uint32_t resized_img_width; /**< image width after resize */
|
||||
uint32_t resized_img_height; /**< image height after resize */
|
||||
uint32_t pad_top; /**< pixels padding on top */
|
||||
uint32_t pad_bottom; /**< pixels padding on bottom */
|
||||
uint32_t pad_left; /**< pixels padding on left */
|
||||
uint32_t pad_right; /**< pixels padding on right */
|
||||
uint32_t model_input_width; /**< model required input width */
|
||||
uint32_t model_input_height; /**< model required input height */
|
||||
kp_inf_crop_box_t crop_area; /**< info of crop area (may not be the same as input due to hw limit) */
|
||||
} __attribute__((packed, aligned(4))) kp_hw_pre_proc_info_t;
|
||||
|
||||
#define MAX_CROP_BOX 4 /**< MAX crop count */
|
||||
|
||||
/**
|
||||
* @brief inference RAW descriptor for one image
|
||||
*/
|
||||
typedef struct
|
||||
{
|
||||
uint32_t width; /**< image width */
|
||||
uint32_t height; /**< image height */
|
||||
uint32_t resize_mode; /**< resize mode, refer to kp_resize_mode_t */
|
||||
uint32_t padding_mode; /**< padding mode, refer to kp_resize_mode_t */
|
||||
uint32_t image_format; /**< image format, refer to kp_image_format_t */
|
||||
uint32_t normalize_mode; /**< inference normalization, refer to kp_normalize_mode_t */
|
||||
uint32_t crop_count; /**< crop count */
|
||||
kp_inf_crop_box_t inf_crop[MAX_CROP_BOX]; /**< box information to crop */
|
||||
uint8_t *image_buffer; /**< image buffer */
|
||||
} __attribute__((packed, aligned(4))) kp_generic_input_node_image_t;
|
||||
|
||||
/**
|
||||
* @brief inference RAW descriptor for one image under bypass pre process
|
||||
*
|
||||
*/
|
||||
typedef struct
|
||||
{
|
||||
uint32_t buffer_size; /**< buffer size */
|
||||
uint8_t *buffer; /**< buffer of input data*/
|
||||
} __attribute__((packed, aligned(4))) kp_generic_input_node_data_t;
|
||||
|
||||
/**
|
||||
* @brief inference descriptor for images
|
||||
*/
|
||||
typedef struct
|
||||
{
|
||||
uint32_t inference_number; /**< inference sequence number */
|
||||
uint32_t model_id; /**< target inference model ID */
|
||||
uint32_t num_input_node_image; /**< number of images for input nodes */
|
||||
kp_generic_input_node_image_t input_node_image_list[MAX_INPUT_NODE_COUNT]; /**< list of image data for each input node(maps to input nodes order of model) */
|
||||
} __attribute__((packed, aligned(4))) kp_generic_image_inference_desc_t;
|
||||
|
||||
/**
|
||||
* @brief inference RAW output descriptor
|
||||
*/
|
||||
typedef struct
|
||||
{
|
||||
uint32_t inference_number; /**< inference sequence number */
|
||||
uint32_t crop_number; /**< crop box sequence number */
|
||||
uint32_t num_output_node; /**< total number of output nodes */
|
||||
uint32_t product_id; /**< product id, refer to kp_product_id_t */
|
||||
uint32_t num_pre_proc_info; /**< number of pre_proc_info is available */
|
||||
kp_hw_pre_proc_info_t pre_proc_info[MAX_INPUT_NODE_COUNT]; /**< hardware pre-process related value */
|
||||
} __attribute__((packed, aligned(4))) kp_generic_image_inference_result_header_t;
|
||||
|
||||
/**
|
||||
* @brief inference descriptor for multiple input images bypass pre-processing
|
||||
*/
|
||||
typedef struct
|
||||
{
|
||||
uint32_t inference_number; /**< inference sequence number */
|
||||
uint32_t model_id; /**< target inference model ID */
|
||||
uint32_t num_input_node_data; /**< number of data for input nodes */
|
||||
kp_generic_input_node_data_t input_node_data_list[MAX_INPUT_NODE_COUNT]; /**< list of data for each input node(maps to input nodes order of model) */
|
||||
} __attribute__((packed, aligned(4))) kp_generic_data_inference_desc_t;
|
||||
|
||||
/**
|
||||
* @brief inference RAW output descriptor for multiple input and bypass pre-processing
|
||||
*/
|
||||
typedef struct
|
||||
{
|
||||
uint32_t inference_number; /**< inference sequence number */
|
||||
uint32_t crop_number; /**< crop box sequence number */
|
||||
uint32_t num_output_node; /**< total number of output nodes */
|
||||
uint32_t product_id; /**< product id, refer to kp_product_id_t */
|
||||
} __attribute__((packed, aligned(4))) kp_generic_data_inference_result_header_t;
|
||||
|
||||
/**
|
||||
* @brief Metadata of RAW node output in fixed-point format
|
||||
*/
|
||||
typedef struct
|
||||
{
|
||||
uint32_t height; /**< node height */
|
||||
uint32_t channel; /**< node channel */
|
||||
uint32_t width; /**< node width, should be aligned to 16 bytes for futher processing due to low level output */
|
||||
int32_t radix; /**< radix for fixed/floating point conversion */
|
||||
float scale; /**< scale for fixed/floating point conversion */
|
||||
uint32_t data_layout; /**< npu memory layout (ref. kp_model_tensor_data_layout_t) */
|
||||
} __attribute__((aligned(4))) kp_inf_raw_fixed_node_metadata_t;
|
||||
|
||||
/**
|
||||
* @brief RAW node output in raw fixed-point format (with width padding and device channel ordering)
|
||||
*/
|
||||
typedef struct
|
||||
{
|
||||
kp_inf_raw_fixed_node_metadata_t metadata; /**< metadata of RAW node output in fixed-point format */
|
||||
uint32_t num_data; /**< total number of fixed-poiont values, should be
|
||||
metadata->width (aligned to 16 bytes) * metadata->height * metadata->channel */
|
||||
int8_t *data; /**< array of fixed-point values*/
|
||||
} __attribute__((aligned(4))) kp_inf_raw_fixed_node_output_t;
|
||||
|
||||
/**
|
||||
* @brief data of fixed-point values in 8-bits/16-bits (depended on fixed_point_dtype)
|
||||
*/
|
||||
typedef union
|
||||
{
|
||||
int8_t int8[1]; /**< array of fixed-point values in 8-bits */
|
||||
int16_t int16[1]; /**< array of fixed-point values in 16-bits */
|
||||
} fixed_node_output_data_t;
|
||||
|
||||
/**
|
||||
* @brief RAW node output in fixed-point format
|
||||
*/
|
||||
typedef struct
|
||||
{
|
||||
uint32_t width; /**< node width */
|
||||
uint32_t height; /**< node height */
|
||||
uint32_t channel; /**< node channel */
|
||||
int32_t radix; /**< radix for fixed/floating point conversion */
|
||||
float scale; /**< scale for fixed/floating point conversion */
|
||||
float factor; /**< conversion factor for fixed-point to floating-point conversion - formula: 1 / (scale * (2 ^ radix)) */
|
||||
uint32_t fixed_point_dtype; /**< enum kp_fixed_point_dtype_t */
|
||||
uint32_t num_data; /**< total number of fixed-point values */
|
||||
fixed_node_output_data_t data; /**< data of fixed-point values in 8-bits/16-bits (depended on fixed_point_dtype) ref. fixed_node_output_data_t */
|
||||
} __attribute__((aligned(4))) kp_inf_fixed_node_output_t;
|
||||
|
||||
/**
|
||||
* @brief RAW node output in floating-point format
|
||||
*/
|
||||
typedef struct
|
||||
{
|
||||
uint32_t width; /**< node width */
|
||||
uint32_t height; /**< node height */
|
||||
uint32_t channel; /**< node channel */
|
||||
uint32_t num_data; /**< total number of floating-point values */
|
||||
float data[]; /**< array of floating-point values */
|
||||
} __attribute__((aligned(4))) kp_inf_float_node_output_t;
|
||||
|
||||
/**
|
||||
* @brief describe a bounding box
|
||||
*/
|
||||
typedef struct
|
||||
{
|
||||
float x1; /**< top-left corner: x */
|
||||
float y1; /**< top-left corner: y */
|
||||
float x2; /**< bottom-right corner: x */
|
||||
float y2; /**< bottom-right corner: y */
|
||||
float score; /**< probability score */
|
||||
int32_t class_num; /**< class # (of many) with highest probability */
|
||||
} __attribute__((aligned(4))) kp_bounding_box_t;
|
||||
|
||||
#define YOLO_GOOD_BOX_MAX 500 /**< maximum number of bounding boxes for Yolo models */
|
||||
|
||||
/**
|
||||
* @brief describe a yolo output result after post-processing
|
||||
*/
|
||||
typedef struct
|
||||
{
|
||||
uint32_t class_count; /**< total class count detectable by model */
|
||||
uint32_t box_count; /**< boxes of all classes */
|
||||
kp_bounding_box_t boxes[YOLO_GOOD_BOX_MAX]; /**< box information */
|
||||
} __attribute__((aligned(4))) kp_yolo_result_t;
|
||||
|
||||
#define LAND_MARK_POINTS 5 /**< the number of land marks points */
|
||||
|
||||
/**
|
||||
* @brief decribe a point
|
||||
*/
|
||||
typedef struct
|
||||
{
|
||||
uint32_t x; /**< x value */
|
||||
uint32_t y; /**< y value */
|
||||
} __attribute__((aligned(4))) kp_point_t;
|
||||
|
||||
/**
|
||||
* @brief describe a landmark
|
||||
*/
|
||||
typedef struct
|
||||
{
|
||||
kp_point_t marks[LAND_MARK_POINTS]; /**< landmark points */
|
||||
float score; /**< score of this landmark */
|
||||
float blur; /**< blur score of this landmark */
|
||||
int32_t class_num; /**< class number */
|
||||
} __attribute__((aligned(4))) kp_landmark_result_t;
|
||||
|
||||
#define FR_FEAT_LENGTH 256 /**< the length of one feature map */
|
||||
|
||||
/**
|
||||
* @brief describe a feature map
|
||||
*/
|
||||
typedef struct {
|
||||
float feature_map[FR_FEAT_LENGTH]; /**< feature map in floating point */
|
||||
int8_t feature_map_fixed[FR_FEAT_LENGTH]; /**< feature map in fixed point */
|
||||
} __attribute__((aligned(4))) kp_fr_result_t;
|
||||
|
||||
/**
|
||||
* @brief describe a classification result
|
||||
*/
|
||||
typedef struct
|
||||
{
|
||||
int32_t class_num; /**< class # (of many) with highest probability */
|
||||
float score; /**< probability score */
|
||||
} __attribute__((aligned(4))) kp_classification_result_t;
|
||||
|
||||
/**
|
||||
* @brief describe version string
|
||||
*/
|
||||
typedef struct
|
||||
{
|
||||
uint8_t reserved; /**< for backward compatibility */
|
||||
uint8_t major; /**< major number */
|
||||
uint8_t minor; /**< minor number */
|
||||
uint8_t update; /**< update number */
|
||||
uint32_t build; /**< build number */
|
||||
} __attribute__((aligned(4))) kp_firmware_version_t;
|
||||
|
||||
/**
|
||||
* @brief describe system information
|
||||
*/
|
||||
typedef struct
|
||||
{
|
||||
uint32_t kn_number; /**< Chip K/N number */
|
||||
kp_firmware_version_t firmware_version; /**< FW version */
|
||||
} __attribute__((aligned(4))) kp_system_info_t;
|
||||
|
||||
/**
|
||||
* @brief header stamp for user-defined data transfer
|
||||
*/
|
||||
typedef struct
|
||||
{
|
||||
uint32_t magic_type; /**< must be 'KDP2_MAGIC_TYPE_XXXXXX' */
|
||||
uint32_t total_size; /**< total size of user-defined header data struct and data (image) */
|
||||
uint32_t job_id; /**< user-defined ID to synchronize with firmware side, must >= 1000 */
|
||||
uint32_t status_code; /**< this field is valid only for result data, refer to KP_API_RETURN_CODE */
|
||||
uint32_t total_image; /**< total number of images for this inference */
|
||||
uint32_t image_index; /**< the index of the image in this transmission */
|
||||
} __attribute__((aligned(4))) kp_inference_header_stamp_t;
|
||||
|
||||
/**
|
||||
* @brief Inference debug checkpoints in bit-fields format
|
||||
*/
|
||||
typedef enum
|
||||
{
|
||||
KP_DBG_CHECKPOINT_BEFORE_PREPROCESS = 0x1 << 0, /**< Checkpoint data(image) at before-pre_processing stage */
|
||||
KP_DBG_CHECKPOINT_AFTER_PREPROCESS = 0x1 << 1, /**< Checkpoint data(image) at after-pre_processing stage */
|
||||
KP_DBG_CHECKPOINT_AFTER_INFERENCE = 0x1 << 2, /**< Checkpoint data(fixed-point raw) at after-inference stage */
|
||||
KP_DBG_CHECKPOINT_BEFORE_CPU_OP = 0x1 << 3, /**< Checkpoint data(cpu operation) at before-cpu operation stage */
|
||||
KP_DBG_CHECKPOINT_AFTER_CPU_OP = 0x1 << 4, /**< Checkpoint data(cpu operation) at after-cpu operation stage */
|
||||
} kp_dbg_checkpoint_flag_t;
|
||||
|
||||
/**
|
||||
* @brief Inference debug data structure represents for "before-pre_process"
|
||||
*/
|
||||
typedef struct
|
||||
{
|
||||
kp_inference_header_stamp_t header_stamp; /**< magic_type = 'KDP2_MAGIC_TYPE_CHECKPOINT_DATA' */
|
||||
uint32_t checkpoint_tag; /**< refer to kp_dbg_checkpoint_flag_t */
|
||||
uint32_t img_x; /**< image position X */
|
||||
uint32_t img_y; /**< image position Y */
|
||||
uint32_t img_width; /**< image width in pixels */
|
||||
uint32_t img_height; /**< image height in pixels */
|
||||
uint32_t img_format; /**< image format, refer to kp_image_format_t */
|
||||
int target_inf_model; /**< inferencing model */
|
||||
uint32_t img_index; /**< index of input image */
|
||||
uint8_t image[]; /**< image raw data */
|
||||
} __attribute__((aligned(4))) kp_dbg_checkpoint_data_before_preprocess_t;
|
||||
|
||||
/**
|
||||
* @brief Inference debug data structure represents for "after-pre_process"
|
||||
*/
|
||||
typedef struct
|
||||
{
|
||||
kp_inference_header_stamp_t header_stamp; /**< magic_type = 'KDP2_MAGIC_TYPE_CHECKPOINT_DATA' */
|
||||
uint32_t checkpoint_tag; /**< refer to kp_dbg_checkpoint_flag_t */
|
||||
uint32_t img_width; /**< image width in pixels */
|
||||
uint32_t img_height; /**< image height in pixels */
|
||||
uint32_t img_format; /**< image format, refer to kp_image_format_t */
|
||||
int target_inf_model; /**< inferencing model */
|
||||
uint32_t img_index; /**< index of input image */
|
||||
uint8_t image[]; /**< image raw data */
|
||||
} __attribute__((aligned(4))) kp_dbg_checkpoint_data_after_preprocess_t;
|
||||
|
||||
/**
|
||||
* @brief Inference debug data structure represents for "after-inference"
|
||||
*/
|
||||
typedef struct
|
||||
{
|
||||
kp_inference_header_stamp_t header_stamp; /**< magic_type = 'KDP2_MAGIC_TYPE_CHECKPOINT_DATA' */
|
||||
uint32_t checkpoint_tag; /**< refer to kp_dbg_checkpoint_flag_t */
|
||||
int target_inf_model; /**< inferencing model */
|
||||
uint32_t num_nodes; /**< number of output nodes */
|
||||
kp_inf_raw_fixed_node_metadata_t node_metadata[50]; /**< output node metada */
|
||||
uint32_t total_output_size; /**< total raw output size in bytes */
|
||||
uint8_t raw_output[]; /**< truly raw output from NPU */
|
||||
} __attribute__((aligned(4))) kp_dbg_checkpoint_data_after_inference_t;
|
||||
|
||||
/**
|
||||
* @brief Inference debug data structure represents for "before-cpu operation"
|
||||
*/
|
||||
typedef struct
|
||||
{
|
||||
kp_inference_header_stamp_t header_stamp; /**< magic_type = 'KDP2_MAGIC_TYPE_CHECKPOINT_DATA' */
|
||||
uint32_t checkpoint_tag; /**< refer to kp_dbg_checkpoint_flag_t */
|
||||
int target_inf_model; /**< inferencing model */
|
||||
uint32_t num_nodes; /**< number of output nodes */
|
||||
kp_inf_raw_fixed_node_metadata_t node_metadata[50]; /**< output node metada */
|
||||
uint32_t total_output_size; /**< total raw output size in bytes */
|
||||
uint8_t raw_output[]; /**< truly raw output from NPU */
|
||||
} __attribute__((aligned(4))) kp_dbg_checkpoint_data_before_cpu_op_t;
|
||||
|
||||
/**
|
||||
* @brief Inference debug data structure represents for "after-cpu operation"
|
||||
*/
|
||||
typedef struct
|
||||
{
|
||||
kp_inference_header_stamp_t header_stamp; /**< magic_type = 'KDP2_MAGIC_TYPE_CHECKPOINT_DATA' */
|
||||
uint32_t checkpoint_tag; /**< refer to kp_dbg_checkpoint_flag_t */
|
||||
int target_inf_model; /**< inferencing model */
|
||||
uint32_t num_nodes; /**< number of output nodes */
|
||||
kp_inf_raw_fixed_node_metadata_t node_metadata[50]; /**< output node metada */
|
||||
uint32_t total_output_size; /**< total raw output size in bytes */
|
||||
uint8_t raw_output[]; /**< truly raw output from NPU */
|
||||
} __attribute__((aligned(4))) kp_dbg_checkpoint_data_after_cpu_op_t;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
uint32_t model_id; /**< model ID */
|
||||
uint32_t inf_count; /**< number of inference */
|
||||
uint32_t cpu_op_count; /**< number of cpu operation per inference */
|
||||
float avg_pre_process_ms; /**< average pre-process time in milliseconds */
|
||||
float avg_inference_ms; /**< average inference time in milliseconds */
|
||||
float avg_cpu_op_ms; /**< average cpu operation time per-inference in milliseconds */
|
||||
float avg_cpu_op_per_cpu_node_ms; /**< average cpu operation time per-cpu node in milliseconds */
|
||||
float avg_post_process_ms; /**< average post-process time in milliseconds */
|
||||
} kp_profile_model_statistics_t;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
int num_model_profiled; /**< number of models profiled */
|
||||
kp_profile_model_statistics_t model_st[16]; /**< refer to kp_profile_model_statistics_t */
|
||||
} __attribute__((aligned(4))) kp_profile_data_t;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
uint32_t model_id; /**< model ID */
|
||||
uint32_t f0;
|
||||
uint32_t f1;
|
||||
uint32_t f2;
|
||||
uint32_t f3;
|
||||
uint32_t f4;
|
||||
uint32_t f5;
|
||||
uint32_t f6;
|
||||
uint32_t f7;
|
||||
} kp_npu_performance_monitor_statistics_t;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
uint32_t npu_clock_rate; /**< NPU clock rate */
|
||||
int num_model_profiled; /**< number of models profiled */
|
||||
kp_npu_performance_monitor_statistics_t model_st[16]; /**< refer to kp_npu_performance_monitor_statistics_t */
|
||||
} __attribute__((aligned(4))) kp_performance_monitor_data_t;
|
||||
|
||||
/**
|
||||
* @brief Describe DDR memory space current configuration
|
||||
*/
|
||||
typedef struct
|
||||
{
|
||||
uint32_t ddr_available_begin; /**< Available DDR space begin address */
|
||||
uint32_t ddr_available_end; /**< Available DDR space end address */
|
||||
uint32_t ddr_model_end; /**< Model used DDR space end address */
|
||||
uint32_t ddr_fifoq_allocated; /**< Whether FIFO queue has been configured */
|
||||
} __attribute__((aligned(4))) kp_available_ddr_config_t;
|
||||
|
||||
/**
|
||||
* @brief Describe FIFO Queue current configuration
|
||||
*/
|
||||
typedef struct
|
||||
{
|
||||
uint32_t fifoq_input_buf_count; /**< Input buffer count for FIFO queue, 0 if FIFO queue has not been set */
|
||||
uint32_t fifoq_input_buf_size; /**< Input buffer size for FIFO queue, 0 if FIFO queue has not been set */
|
||||
uint32_t fifoq_result_buf_count; /**< Input buffer count for FIFO queue, 0 if FIFO queue has not been set */
|
||||
uint32_t fifoq_result_buf_size; /**< Input buffer size for FIFO queue, 0 if FIFO queue has not been set */
|
||||
} __attribute__((aligned(4))) kp_fifo_queue_config_t;
|
||||
|
||||
|
||||
#endif
|
||||
99
include/common/membase.h
Normal file
99
include/common/membase.h
Normal file
@ -0,0 +1,99 @@
|
||||
/* Copyright (c) 2020 Kneron, Inc. All Rights Reserved.
|
||||
*
|
||||
* The information contained herein is property of Kneron, Inc.
|
||||
* Terms and conditions of usage are described in detail in Kneron
|
||||
* STANDARD SOFTWARE LICENSE AGREEMENT.
|
||||
*
|
||||
* Licensees are granted free, non-transferable use of the information.
|
||||
* NO WARRANTY of ANY KIND is provided. This heading must NOT be removed
|
||||
* from the file.
|
||||
*/
|
||||
|
||||
/******************************************************************************
|
||||
* Filename:
|
||||
* ---------
|
||||
* membase.h
|
||||
*
|
||||
* Description:
|
||||
* ------------
|
||||
*
|
||||
*
|
||||
******************************************************************************/
|
||||
|
||||
#ifndef _MEMBASE_H_
|
||||
#define _MEMBASE_H_
|
||||
|
||||
/******************************************************************************
|
||||
Head Block of The File
|
||||
******************************************************************************/
|
||||
// Sec 0: Comment block of the file
|
||||
|
||||
// Sec 1: Include File
|
||||
|
||||
// Sec 2: Constant Definitions, Imported Symbols, miscellaneous
|
||||
|
||||
#define SPIF_XIP_BASE 0x10000000
|
||||
|
||||
#define SiRAM_MEM_BASE 0x1FF80000
|
||||
#define SiRAM_MEM_SIZE 0x40000 //256KB
|
||||
#define SdRAM_MEM_BASE 0x1FFC0000
|
||||
#define SdRAM_MEM_SIZE 0x18000 //96KB
|
||||
|
||||
#define NiRAM_MEM_BASE 0x80000000
|
||||
#define NiRAM_MEM_SIZE 0x00000000 //0
|
||||
#define NdRAM_MEM_BASE 0x6F200000
|
||||
#define NdRAM_MEM_SIZE 0x10000 //64KB
|
||||
#define NCPU_FW_SIZE 0x200000 //2MB
|
||||
#define NCPU_FW_IRAM_SIZE NiRAM_MEM_SIZE
|
||||
#define NCPU_FW_DDR_BASE (0x80000000 + NiRAM_MEM_SIZE)
|
||||
#define NCPU_FW_DDR_SIZE (NCPU_FW_SIZE-NCPU_FW_IRAM_SIZE) //2MB - 128KB
|
||||
#define NPRAM_MEM_BASE 0x70000000
|
||||
#define NPRAM_MEM_SIZE 0x80000 //512KB
|
||||
|
||||
// IPC memory: 8KB
|
||||
#define DDR_MEM_IPC_ADDR 0x8021E000
|
||||
|
||||
//DDR memory address space means the addressing capability.
|
||||
//For KL720, it's 1.75G bytes.
|
||||
//The physical DDR size is determined by the DDR chip(s) in the silicon package.
|
||||
//For example, Winbond 128MBytes, Micron 1GBytes
|
||||
//DDR size will be different from projects.
|
||||
#define DDR_MEM_PHY_BASE 0x80000000 // DDR physical address base
|
||||
#define DDR_MEM_BASE 0x80220000 // for all models and heap
|
||||
#define DDR_MEM_SIZE 0x8000000 // chip default 128MB
|
||||
|
||||
/******************************************************************************
|
||||
Declaration of External Variables & Functions
|
||||
******************************************************************************/
|
||||
// Sec 3: declaration of external variable
|
||||
|
||||
// Sec 4: declaration of external function prototype
|
||||
|
||||
/******************************************************************************
|
||||
Declaration of data structure
|
||||
******************************************************************************/
|
||||
// Sec 5: structure, uniou, enum, linked list
|
||||
|
||||
/******************************************************************************
|
||||
Declaration of Global Variables & Functions
|
||||
******************************************************************************/
|
||||
// Sec 6: declaration of global variable
|
||||
|
||||
// Sec 7: declaration of global function prototype
|
||||
|
||||
/******************************************************************************
|
||||
Declaration of static Global Variables & Functions
|
||||
******************************************************************************/
|
||||
// Sec 8: declaration of static global variable
|
||||
|
||||
// Sec 9: declaration of static function prototype
|
||||
|
||||
/******************************************************************************
|
||||
// Sec 10: C Functions
|
||||
******************************************************************************/
|
||||
|
||||
|
||||
|
||||
|
||||
#endif //_MEMBASE_H_
|
||||
|
||||
422
include/common/model_parser_api.h
Normal file
422
include/common/model_parser_api.h
Normal file
@ -0,0 +1,422 @@
|
||||
#ifndef __MODEL_PARSER_API_H__
|
||||
#define __MODEL_PARSER_API_H__
|
||||
|
||||
/* --------------------------------------------------------------------------
|
||||
* Copyright (c) 2018-2021 Kneron Inc. All rights reserved.
|
||||
*
|
||||
* Name: model_parser_api.h
|
||||
* Purpose: Kneron model parser API
|
||||
*
|
||||
*---------------------------------------------------------------------------*/
|
||||
|
||||
#include <stdint.h>
|
||||
|
||||
typedef enum {
|
||||
DEFAULT_TGT,
|
||||
KL520_TGT,
|
||||
KL720_TGT,
|
||||
KL530_TGT,
|
||||
KL730_TGT,
|
||||
KL630_TGT,
|
||||
KL540_TGT,
|
||||
} mdl_target_t;
|
||||
|
||||
typedef enum {
|
||||
MDL_IN_NODE,
|
||||
MDL_OUT_NODE,
|
||||
MDL_CPU_NODE,
|
||||
MDL_CONST_NODE,
|
||||
TOTAL_MDL_NODES
|
||||
} mdl_node_type_t;
|
||||
|
||||
typedef enum {
|
||||
MDL_SEQ_DEFAULT,
|
||||
MDL_SEG_INPUT,
|
||||
MDL_SEG_OUTPUT,
|
||||
MDL_SEG_WORK,
|
||||
MDL_SEG_CMD,
|
||||
MDL_SEG_WT,
|
||||
MDL_SEG_SETUP,
|
||||
TOTAL_SEGS
|
||||
} mdl_seg_type_t;
|
||||
|
||||
typedef enum {
|
||||
MDL_ENCY_NON,
|
||||
MDL_ENCY_EFUSE,
|
||||
MDL_ENCY_CUSTKEY
|
||||
} mdl_encrypt_mode_t;
|
||||
|
||||
typedef enum {
|
||||
DRAM_FMT_UNKNOWN = -1,
|
||||
/* conv format */
|
||||
DRAM_FMT_1W16C8B = 0,
|
||||
DRAM_FMT_1W16C8BHL = 1,
|
||||
DRAM_FMT_4W4C8B = 2,
|
||||
DRAM_FMT_4W4C8BHL = 3,
|
||||
DRAM_FMT_16W1C8B = 4,
|
||||
DRAM_FMT_16W1C8BHL = 5,
|
||||
DRAM_FMT_8W1C16B = 6,
|
||||
/* psum data format */
|
||||
DRAM_FMT_PS_1W16C24B = 7,
|
||||
/* row format */
|
||||
DRAM_FMT_RAW8B = 100,
|
||||
DRAM_FMT_RAW16B = 101,
|
||||
DRAM_FMT_RAW_FLOAT = 102
|
||||
} mdl_dram_data_fmt_t;
|
||||
|
||||
typedef enum {
|
||||
DT_None,
|
||||
DT_Int8,
|
||||
DT_Int16,
|
||||
DT_Int32,
|
||||
DT_Int64,
|
||||
DT_UInt8,
|
||||
DT_UInt16,
|
||||
DT_Uint32,
|
||||
DT_UInt64,
|
||||
DT_Float,
|
||||
DT_Bfloat16,
|
||||
DT_Double
|
||||
} mdl_data_type_t;
|
||||
|
||||
typedef enum {
|
||||
ADDR_MODE_DEFAULT,
|
||||
ADDR_MODE_ABS,
|
||||
ADDR_MODE_REL,
|
||||
} mdl_addr_mode_t;
|
||||
|
||||
typedef void * node_hdl_t;
|
||||
typedef void * tensor_hdl_t;
|
||||
typedef void * cpu_operator_hdl_t;
|
||||
typedef void * session_hdl_t;
|
||||
typedef void * param_hdl_t;
|
||||
|
||||
typedef struct {
|
||||
uint32_t batch;
|
||||
uint32_t ch;
|
||||
uint32_t h;
|
||||
uint32_t w;
|
||||
} mdl_shape_t;
|
||||
|
||||
typedef struct {
|
||||
uint32_t ch;
|
||||
float scale;
|
||||
int32_t radix;
|
||||
} mdl_quant_factor_t;
|
||||
|
||||
|
||||
/*********************************************************************************
|
||||
Control Functions
|
||||
**********************************************************************************/
|
||||
/**
|
||||
Setup one parsing session
|
||||
|
||||
[In]: setup_addr - address of the setup.bin
|
||||
|
||||
Return: session handle; NULL - fail
|
||||
*/
|
||||
session_hdl_t mdl_parser_open(uint32_t setup_addr, void * pModel);
|
||||
|
||||
/**
|
||||
Close one parsing session
|
||||
|
||||
[In]: session - session handle
|
||||
|
||||
Return: 0 - success; -1 - fail
|
||||
*/
|
||||
int mdl_parser_close(session_hdl_t session);
|
||||
|
||||
/*********************************************************************************
|
||||
Global Properties Inqury APIs
|
||||
**********************************************************************************/
|
||||
|
||||
/**
|
||||
query the hardware target supported by this model
|
||||
|
||||
[In]: session_hdl - the parse session handle
|
||||
|
||||
Return: supported hardware target ID
|
||||
*/
|
||||
mdl_target_t mdl_parse_get_target_id(session_hdl_t session_hdl);
|
||||
|
||||
/**
|
||||
query the encryption mode of this model
|
||||
|
||||
[In]: session_hdl - the parse session handle
|
||||
|
||||
Return: encryption mode
|
||||
*/
|
||||
mdl_encrypt_mode_t mdl_parse_get_ency_mode(session_hdl_t session_hdl);
|
||||
|
||||
/**
|
||||
obtain encryption key of this model
|
||||
|
||||
[In]: session_hdl - the parse session handle
|
||||
[Out]: key - point to encryption key vector flatbuffers_uint8_vec_t
|
||||
|
||||
Return: 0 - success; -1 - encryption key does not exist
|
||||
*/
|
||||
int mdl_parse_get_ency_key(session_hdl_t session_hdl, const void **key);
|
||||
|
||||
/**
|
||||
query the addressing mode of this model
|
||||
|
||||
[In]: session_hdl - the parse session handle
|
||||
|
||||
Return: addressing mode
|
||||
*/
|
||||
mdl_addr_mode_t mdl_parse_get_addressing_mode(session_hdl_t session_hdl);
|
||||
|
||||
/**
|
||||
query the segment address for the specified segment
|
||||
|
||||
[In]: session_hdl - the parse session handle
|
||||
[In]: seg - segment ID
|
||||
|
||||
Return: segment address
|
||||
*/
|
||||
uint32_t mdl_parse_get_seg_addr(session_hdl_t session_hdl, mdl_seg_type_t seg);
|
||||
|
||||
/*********************************************************************************
|
||||
Node Utility APIs
|
||||
**********************************************************************************/
|
||||
|
||||
/**
|
||||
obtain the node handle for the specified node type
|
||||
this handle is used for further access to this node properties
|
||||
|
||||
[In]: session_hdl - the parse session handle
|
||||
[In]: node_type - node ID
|
||||
|
||||
Return: node handle; -1 if that node does not exist (especially CPU node)
|
||||
*/
|
||||
node_hdl_t mdl_parse_get_node(session_hdl_t session_hdl, mdl_node_type_t node_type);
|
||||
|
||||
/**
|
||||
query the Tensor total count for inputs for the specified node
|
||||
|
||||
[In]: hdl - handle of the node
|
||||
|
||||
Return: Tensor count(0 - inputs Tensor does not existing)
|
||||
*/
|
||||
int mdl_parse_get_inputs_tensor_cnt(node_hdl_t hdl);
|
||||
|
||||
/**
|
||||
query the Tensor total count for outputs for the specified node
|
||||
|
||||
[In]: hdl - handle of the node
|
||||
|
||||
Return: Tensor count (0 - outputs Tensor does not existing)
|
||||
*/
|
||||
int mdl_parse_get_outputs_tensor_cnt(node_hdl_t hdl);
|
||||
|
||||
/**
|
||||
query the Tensor total count for const inputs for the specified node
|
||||
|
||||
[In]: hdl - handle of the node
|
||||
|
||||
Return: Tensor count (0 - outputs Tensor does not existing)
|
||||
*/
|
||||
int mdl_parse_get_consts_tensor_cnt(node_hdl_t hdl);
|
||||
|
||||
/**
|
||||
obtain the inputs Tensor table for the specified node
|
||||
|
||||
[In]: hdl - handle of the node
|
||||
|
||||
Return: point to Tensor table; NULL for none
|
||||
*/
|
||||
tensor_hdl_t mdl_parse_get_inputs_tensor_hdl(node_hdl_t hdl);
|
||||
|
||||
/**
|
||||
obtain the outputs Tensor table for the specified node
|
||||
|
||||
[In]: hdl - handle of the node
|
||||
|
||||
Return: handle to Tensor table; NULL for none
|
||||
*/
|
||||
tensor_hdl_t mdl_parse_get_outputs_tensor_hdl(node_hdl_t hdl);
|
||||
|
||||
/**
|
||||
obtain the const inputs Tensor table for the specified node
|
||||
|
||||
[In]: hdl - handle of the node
|
||||
|
||||
Return: handle to Tensor table; NULL for none
|
||||
*/
|
||||
tensor_hdl_t mdl_parse_get_consts_tensor_hdl(node_hdl_t hdl);
|
||||
|
||||
/*********************************************************************************
|
||||
Tensor Utility APIs
|
||||
**********************************************************************************/
|
||||
|
||||
/**
|
||||
query the NPU output data format in DRAM for the specified tensor table
|
||||
|
||||
[In]: hdl - handle of the tensor table
|
||||
[In]: idx - index of Tensor vector
|
||||
|
||||
Return: NPU data format
|
||||
*/
|
||||
mdl_dram_data_fmt_t mdl_parse_get_fmt(tensor_hdl_t hdl, int idx);
|
||||
|
||||
/**
|
||||
query the NPU output data shape (b,c,h,w) for the specified tensor table
|
||||
|
||||
[In]: hdl - handle of the tensor table
|
||||
[In]: idx - index of Tensor vector
|
||||
[Out]: point to the Shape data (mdl_shape_t)
|
||||
|
||||
Return: 0 - sucess; -1 - fail
|
||||
*/
|
||||
int mdl_parse_get_shape(tensor_hdl_t hdl, int idx, mdl_shape_t *pShape);
|
||||
|
||||
/**
|
||||
query the NPU output data address for the specified tensor table
|
||||
|
||||
[In]: session - parse session handle
|
||||
[In]: hdl - handle of the tensor table
|
||||
[In]: idx - index of Tensor vector
|
||||
|
||||
Return: the address of the NPU data
|
||||
*/
|
||||
uint32_t mdl_parse_get_out_addr(session_hdl_t session, tensor_hdl_t hdl, int idx);
|
||||
|
||||
/**
|
||||
query the NPU output data length for the specified tensor table
|
||||
|
||||
[In]: hdl - handle of the tensor table
|
||||
[In]: idx - index of Tensor vector
|
||||
|
||||
Return: the length of the NPU data
|
||||
*/
|
||||
uint32_t mdl_parse_get_out_len(tensor_hdl_t hdl, int idx);
|
||||
|
||||
/**
|
||||
query the const input data address for the specified tensor table
|
||||
|
||||
[In]: hdl - handle of the tensor table
|
||||
[In]: idx - index of Tensor vector
|
||||
|
||||
Return: the source address of the const input data
|
||||
*/
|
||||
uint32_t mdl_parse_get_const_data_addr(tensor_hdl_t hdl, int idx);
|
||||
|
||||
/**
|
||||
query the const input data length for the specified tensor table
|
||||
|
||||
[In]: hdl - handle of the tensor table
|
||||
[In]: idx - index of Tensor vector
|
||||
|
||||
Return: the length of the const input data
|
||||
*/
|
||||
uint32_t mdl_parse_get_const_data_len(tensor_hdl_t hdl, int idx);
|
||||
|
||||
/**
|
||||
query quantization vector length for the specified tensor table
|
||||
|
||||
[In]: hdl - handle of the tensor table
|
||||
[In]: idx - index of Tensor vector
|
||||
|
||||
Return: the length of quantization vector
|
||||
*/
|
||||
uint32_t mdl_parse_get_quant_vector_len(tensor_hdl_t hdl, int idx);
|
||||
|
||||
/**
|
||||
query the specified quantization cell
|
||||
|
||||
[In]: hdl - handle of the tensor table
|
||||
[In]: t_idx - index of Tensor vector
|
||||
[In]: q_idx - index in the quantization vector table
|
||||
[Out]: pQuant - point to the query result
|
||||
|
||||
Return: 0 - sucess; -1 - that cell does not exist
|
||||
*/
|
||||
int mdl_parse_get_quant_vector_cell(tensor_hdl_t hdl, int t_idx,
|
||||
int q_idx, mdl_quant_factor_t *pQuant);
|
||||
|
||||
/*********************************************************************************
|
||||
CPU Utility APIs
|
||||
Note: a cpu "knot" is a sub-node of cpu "node"
|
||||
**********************************************************************************/
|
||||
|
||||
/**
|
||||
query the cpu knot count for the specified operator table
|
||||
|
||||
[In]: hdl - handle of the cpu node
|
||||
|
||||
Return: total count of cpu knot
|
||||
*/
|
||||
int mdl_parse_get_cpu_knot_count(node_hdl_t hdl);
|
||||
|
||||
/**
|
||||
query the operator information for the specified cpu knot
|
||||
|
||||
[In]: hdl - handle of the cpu node
|
||||
[In]: k_idx - index of the cpu knot
|
||||
[Out]: opcode - point to retrived operator opcode
|
||||
[Out]: oper_name - point to operator name string address
|
||||
[Out]: union_type_id - point to union Kneron_BuiltinOptions_union_type_t type, used to
|
||||
match out the parameter type
|
||||
[Out]: union_type_name - point to the type name string address
|
||||
|
||||
Return: the handle to obtain parameter options
|
||||
*/
|
||||
param_hdl_t mdl_parse_get_cpu_operator_info(node_hdl_t hdl, int k_idx, uint32_t* opcode,
|
||||
char** oper_name, uint32_t* union_type_id, char** union_type_name);
|
||||
|
||||
/**
|
||||
obtain the cpu operator parameters
|
||||
|
||||
[In]: pHdl: point to handle (return value of mdl_parse_get_cpu_operator_info())
|
||||
[In]: opcode: operator code got from call to mdl_parse_get_cpu_operator_info()
|
||||
[Out]: point to the point of operator parameter struct instance
|
||||
|
||||
Return: 0 - success; -1 - fail
|
||||
*/
|
||||
int mdl_parse_get_cpu_params(param_hdl_t *pHdl, uint32_t opcode, void **pParam);
|
||||
|
||||
/**
|
||||
query the length of the inputs Tensor vector for the specified cpu knot
|
||||
|
||||
[In]: hdl - handle of the cpu node
|
||||
[In]: k_idx - index of the cpu knot
|
||||
|
||||
Return: length of inputs tensor
|
||||
*/
|
||||
int mdl_parse_get_cpu_inputs_tensor_len(node_hdl_t hdl, int k_idx);
|
||||
|
||||
/**
|
||||
query the length of the outputs Tensor vector for the specified cpu knot
|
||||
|
||||
[In]: hdl - handle of the cpu node
|
||||
[In]: k_idx - index of the cpu knot
|
||||
|
||||
Return: length of outputs tensor
|
||||
*/
|
||||
int mdl_parse_get_cpu_outputs_tensor_len(node_hdl_t hdl, int k_idx);
|
||||
|
||||
/**
|
||||
obtain the inputs tensor vector table for the specified cpu knot
|
||||
|
||||
[In]: hdl - handle of the cpu node
|
||||
[In]: k_idx - knot index of the cpu knot table
|
||||
|
||||
Return: handle to the inputs tensor table (Kneron_Tensor_table_t), as
|
||||
the handle to access Tensor parameters via Tensor Utility APIs
|
||||
*/
|
||||
tensor_hdl_t mdl_parse_get_cpu_inputs_tensor_hdl(node_hdl_t hdl, int k_idx);
|
||||
|
||||
/**
|
||||
obtain the outputs tensor vector table for the specified cpu knot
|
||||
|
||||
[In]: hdl - handle of the cpu node
|
||||
[In]: k_idx - knot index of the cpu knot table
|
||||
|
||||
Return: handle to the outputs tensor table, as the handle to
|
||||
access Tensor parameters via Tensor Utility APIs
|
||||
*/
|
||||
tensor_hdl_t mdl_parse_get_cpu_outputs_tensor_hdl(node_hdl_t hdl, int k_idx);
|
||||
|
||||
|
||||
#endif //__MODEL_PARSER_API_H__
|
||||
257
include/common/model_res.h
Normal file
257
include/common/model_res.h
Normal file
@ -0,0 +1,257 @@
|
||||
/*
|
||||
* Postprocess result data structures.
|
||||
*
|
||||
* Copyright (C) 2021 Kneron, Inc. All rights reserved.
|
||||
*
|
||||
*/
|
||||
#ifndef MODEL_RES_H
|
||||
#define MODEL_RES_H
|
||||
|
||||
#define BOXES_MAX_NUM 80
|
||||
#define YOLO_KEYPOINT_MAX 127
|
||||
#define YOLO_GOOD_BOX_MAX_SCPU 500
|
||||
#define CLASSIFIER_MAX_NUM 1000
|
||||
#define FR_FEATURE_MAP_SIZE 256
|
||||
#define KEYPOINT_POINTS 11
|
||||
#define LANDMARK_POINTS 5
|
||||
#define LAND_MARK_MOUTH_POINTS 4 // new
|
||||
#define LAND_MARK_EYE_POINTS 7 // new
|
||||
#define MAX_LANDMARK_POINTS 5
|
||||
#define MAX_ONET_POINTS 100
|
||||
#define MAX_YOLO_FACE_LANDMARK_CNT 4 * 2 // (x and y) * max point count
|
||||
#define OCR_MAX_NUM 20
|
||||
#define SEG_WIDTH 80
|
||||
#define SEG_HEIGHT 60
|
||||
|
||||
// used with post_age_gender
|
||||
struct age_gender_result_s {
|
||||
uint32_t age; // detected age
|
||||
uint32_t ismale; // 0 for female, 1 for male
|
||||
};
|
||||
|
||||
// bounding box coordinates, score, and class
|
||||
struct bounding_box_s {
|
||||
float x1; // top-left x corner
|
||||
float y1; // top-left y corner
|
||||
float x2; // bottom-right x corner
|
||||
float y2; // bottom-right y corner
|
||||
float score; // probability score
|
||||
int32_t class_num; // class number (of many) with highest probability
|
||||
};
|
||||
|
||||
// bounding box and landmark data
|
||||
struct bounding_box_landmark_s {
|
||||
float x1; // top-left x corner
|
||||
float y1; // top-left y corner
|
||||
float x2; // bottom-right x corner
|
||||
float y2; // bottom-right y corner
|
||||
float score; // probability score
|
||||
int32_t class_num; // class number (of many) with highest probability
|
||||
float lm[MAX_YOLO_FACE_LANDMARK_CNT]; // landmark data
|
||||
};
|
||||
|
||||
// bounding box and landmark plus data
|
||||
struct bounding_box_landmark_plus_s {
|
||||
float x1; // top-left x corner
|
||||
float y1; // top-left y corner
|
||||
float x2; // bottom-right x corner
|
||||
float y2; // bottom-right y corner
|
||||
float score; // probability score
|
||||
int32_t class_num; // class number (of many) with highest probability
|
||||
float score_next; // second best probability score
|
||||
int32_t class_num_next; // class number with second highest probability
|
||||
float lm[MAX_YOLO_FACE_LANDMARK_CNT]; // landmark data
|
||||
};
|
||||
|
||||
|
||||
// used with post_classifier
|
||||
struct classifier_result_s {
|
||||
float score[CLASSIFIER_MAX_NUM]; // score for each class index
|
||||
};
|
||||
|
||||
// used with post_face_pose
|
||||
struct face_occlude_result_s {
|
||||
float yaw;
|
||||
float pitch;
|
||||
float roll;
|
||||
float occ;
|
||||
float seg_res[5];
|
||||
};
|
||||
|
||||
// used with post_face_recognition
|
||||
struct fr_result_s {
|
||||
float feature_map[FR_FEATURE_MAP_SIZE];
|
||||
};
|
||||
|
||||
// used with post_face_recognition (floating & fixed point face embedding)
|
||||
struct fr_flfix_result_s {
|
||||
float feature_map[FR_FEATURE_MAP_SIZE];
|
||||
int8_t raw_feature_map[FR_FEATURE_MAP_SIZE];
|
||||
};
|
||||
|
||||
// used with post_face_landmark_onet
|
||||
struct landmark_result_s {
|
||||
struct {
|
||||
uint32_t x;
|
||||
uint32_t y;
|
||||
} marks[MAX_ONET_POINTS];
|
||||
float score;
|
||||
float blur;
|
||||
};
|
||||
|
||||
// used with post_face_landmark_onet_5p
|
||||
struct landmark_result_5p_s {
|
||||
struct {
|
||||
uint32_t x;
|
||||
uint32_t y;
|
||||
} marks[LANDMARK_POINTS];
|
||||
float score;
|
||||
float blur;
|
||||
int32_t class_num;
|
||||
};
|
||||
|
||||
// used with post_onet_plus
|
||||
struct onet_plus_result_s {
|
||||
struct {
|
||||
float x;
|
||||
float y;
|
||||
} marks[MAX_LANDMARK_POINTS];
|
||||
float scores[MAX_LANDMARK_POINTS];
|
||||
};
|
||||
|
||||
typedef struct classifier_pupil_result_s { // new
|
||||
float fScore; // fScore for each class index
|
||||
int idx_class;
|
||||
}classifier_pupil_result_t;
|
||||
|
||||
struct landmark_68pt_result_s { // new
|
||||
struct {
|
||||
uint32_t x;
|
||||
uint32_t y;
|
||||
} marks[MAX_ONET_POINTS];
|
||||
float score;
|
||||
float blur;
|
||||
};
|
||||
|
||||
struct eye_landmarks_s{ // new
|
||||
struct {
|
||||
uint32_t x;
|
||||
uint32_t y;
|
||||
} marks[LAND_MARK_EYE_POINTS];
|
||||
};
|
||||
|
||||
enum mouth { // new
|
||||
MOUTH_T = 0,
|
||||
MOUTH_B,
|
||||
MOUTH_L,
|
||||
MOUTH_R,
|
||||
};
|
||||
|
||||
struct yawning_result_s { // new
|
||||
struct {
|
||||
float x;
|
||||
float y;
|
||||
} marks[LAND_MARK_MOUTH_POINTS]; // mouth 0:top 1:bottom 2: left 3:right
|
||||
uint32_t isYawning;
|
||||
float yawning_rate;
|
||||
};
|
||||
|
||||
// used with post_ocr
|
||||
typedef struct ocr_s {
|
||||
/*copy from lpr_result_s to store each bounding box of ocr value*/
|
||||
uint32_t chars_count;
|
||||
struct bounding_box_s char_boxes[OCR_MAX_NUM];
|
||||
/*-------------------------------------------------------------*/
|
||||
uint8_t valid; // 0 for invalid, 1 for valid
|
||||
uint8_t value[OCR_MAX_NUM]; // integers representing characters in order, mapping
|
||||
// defined in licenseplate_ocr.c
|
||||
uint8_t hyphen; // position after which the hyphen should occur
|
||||
} ocr_t;
|
||||
|
||||
struct general_semantic_segmentation_with_score_result_s {
|
||||
uint32_t width; /**< class map width */
|
||||
uint32_t height; /**< class map height */
|
||||
uint64_t total_class_num; /**< total class number */
|
||||
uint64_t class_map_address; /**< address of class number data in class_score_map */
|
||||
uint64_t score_map_address; /**< address of score data in class_score_map */
|
||||
uint32_t class_score_map[]; /**< class number and score data per image pixel (the score map data follows the class map data) */
|
||||
};
|
||||
|
||||
// used with post_rsn
|
||||
struct upperbody_keypoint_result_s {
|
||||
struct {
|
||||
float x; // x coordinate
|
||||
float y; // y coordinate
|
||||
} marks[KEYPOINT_POINTS];
|
||||
};
|
||||
|
||||
// used with fd, yolo postprocesses
|
||||
struct yolo_result_s {
|
||||
uint32_t class_count; // total class count
|
||||
uint32_t box_count; // total box count
|
||||
struct bounding_box_s boxes[YOLO_GOOD_BOX_MAX_SCPU]; // found bounding boxes
|
||||
};
|
||||
|
||||
struct keypoint_s {
|
||||
float x;
|
||||
float y;
|
||||
float score;
|
||||
};
|
||||
|
||||
struct bounding_box_keypoint_s {
|
||||
struct bounding_box_s bbox;
|
||||
uint32_t keypoint_count;
|
||||
struct keypoint_s kpts[YOLO_KEYPOINT_MAX]; // keypoint data
|
||||
};
|
||||
|
||||
struct yolo_and_keypoint_result_s {
|
||||
uint32_t class_count; // total class count
|
||||
uint32_t box_count; // total box count
|
||||
struct bounding_box_keypoint_s boxes_kpts[BOXES_MAX_NUM]; // found bounding boxes
|
||||
};
|
||||
|
||||
// used with yolo_face
|
||||
struct yolo_and_landmark_result_s {
|
||||
uint32_t class_count; // total class count
|
||||
uint32_t box_count; // total box count
|
||||
struct bounding_box_landmark_s boxes[BOXES_MAX_NUM]; // found bounding boxes
|
||||
};
|
||||
|
||||
// used with yolo_X
|
||||
struct yolox_and_landmark_result_s {
|
||||
uint32_t class_count; // total class count
|
||||
uint32_t box_count; // total box count
|
||||
struct bounding_box_landmark_plus_s boxes[BOXES_MAX_NUM]; // found bounding boxes
|
||||
};
|
||||
|
||||
/***********************************
|
||||
struct raw_onode_t only support one channel quantization only here.
|
||||
if the model has quantization parameters per channel,
|
||||
then host side need to parse the fw model to get all parameters,
|
||||
because too many parameters convey impact performance.
|
||||
************************************/
|
||||
typedef struct {
|
||||
uint32_t idx; //sequence number of out sub-nodes
|
||||
uint32_t fmt;
|
||||
uint32_t batch;
|
||||
uint32_t ch_length;
|
||||
uint32_t row_length;
|
||||
uint32_t col_length;
|
||||
uint32_t buf_addr;
|
||||
uint32_t buf_len;
|
||||
uint32_t scale;
|
||||
uint32_t radix;
|
||||
uint32_t start_offset;
|
||||
uint32_t buf_aligned_len;
|
||||
uint32_t quant_vect_len;
|
||||
|
||||
} raw_onode_t;
|
||||
|
||||
typedef struct {
|
||||
uint32_t total_raw_len;
|
||||
int32_t total_nodes;
|
||||
raw_onode_t onode_a[40];
|
||||
uint8_t data[];
|
||||
} raw_cnn_res_t;
|
||||
|
||||
#endif
|
||||
418
include/common/model_type.h
Normal file
418
include/common/model_type.h
Normal file
@ -0,0 +1,418 @@
|
||||
#ifndef MODELTYPE_H
|
||||
#define MODELTYPE_H
|
||||
|
||||
// !!!---------------------------------------------------------------------------!!!
|
||||
// Whenever ModelType is updated,
|
||||
// please also update Begin_Enum_String( ModelType ) as well
|
||||
// !!!---------------------------------------------------------------------------!!!
|
||||
#ifdef VATICS_PLATFORM
|
||||
enum model_type {
|
||||
#else
|
||||
enum class ModelType {
|
||||
#endif
|
||||
INVALID_TYPE = 0,
|
||||
KNERON_FD_SMALLBOX_200_200_3 = 1,
|
||||
KNERON_FD_ANCHOR_200_200_3 = 2,
|
||||
KNERON_FD_MBSSD_200_200_3= 3,
|
||||
AVERAGE_POOLING = 4, //use with FD smallbox and don't use anymore
|
||||
KNERON_LM_5PTS_ONET_56_56_3 = 5,
|
||||
KNERON_LM_68PTS_dlib_112_112_3 = 6,
|
||||
KNERON_LM_150PTS = 7,
|
||||
KNERON_FR_RES50_112_112_3 = 8,
|
||||
KNERON_FR_RES34 = 9,
|
||||
KNERON_FR_VGG10 = 10,
|
||||
KNERON_TINY_YOLO_PERSON_416_416_3 = 11,
|
||||
KNERON_3D_LIVENESS = 12, //has two inputs: depth and RGB
|
||||
KNERON_GESTURE_RETINANET_320_320_3 = 13,
|
||||
TINY_YOLO_VOC_224_224_3 = 14,
|
||||
IMAGENET_CLASSIFICATION_RES50_224_224_3 = 15,
|
||||
IMAGENET_CLASSIFICATION_RES34_224_224_3 = 16,
|
||||
IMAGENET_CLASSIFICATION_INCEPTION_V3_224_224_3 = 17,
|
||||
IMAGENET_CLASSIFICATION_MOBILENET_V2_224_224_3 = 18,
|
||||
TINY_YOLO_V3_224_224_3 = 19,
|
||||
KNERON_2D_LIVENESS_224_224_3 = 20, //oldest rgb liveness model and don't use anymore
|
||||
KNERON_FD_RETINANET_RES50_640_640_3 = 21,
|
||||
KNERON_PERSON_MOBILENETSSD_224_224_3 = 22,
|
||||
KNERON_AGE_GENDER = 23, //oldest age gender model and don't use anymore
|
||||
KNERON_LM_5PTS_BLUR_ONET_48_48_3 = 24,
|
||||
KNERON_2D_LIVENESS_V3_FACEBAGNET_224_224_3 = 25,
|
||||
KNERON_AGE_GENDER_V2_RES18_128_128_3 = 26,
|
||||
KNERON_OD_MBSSD = 27, //HW model and don't know input size
|
||||
KNERON_PD_MBSSD = 28, //HW model and don't know which version and input size
|
||||
KNERON_FR_MASK_RES50_112_112_3 = 29,
|
||||
KNERON_NIR_LIVENESS_RES18_112_112_3 = 30,
|
||||
KNERON_FR_MASK_RES101_112_112_3 = 31,
|
||||
KNERON_FD_MASK_MBSSD_200_200_3 = 32,
|
||||
TINY_YOLO_V3_416_416_3 = 33,
|
||||
TINY_YOLO_V3_608_608_3 = 34,
|
||||
KNERON_RACE_RES18_128_128_3 = 35,
|
||||
KNERON_AGE_GENDER_WHITE_RES18_128_128_3 = 36,
|
||||
KNERON_AGE_GENDER_BLACK_RES18_128_128_3 = 37,
|
||||
KNERON_AGE_GENDER_INDIAN_RES18_128_128_3 = 38,
|
||||
KNERON_FR_RES20MB_112_112_3 = 39,
|
||||
|
||||
//Category Face related 40~200
|
||||
KNERON_CAT_FACE = 40,
|
||||
KNERON_FACE_QAULITY_ONET_56_56_1 = KNERON_CAT_FACE,
|
||||
KNERON_FUSE_LIVENESS = KNERON_CAT_FACE +1, // don't know the model backbone and input size of fuse liveness model
|
||||
KNERON_EYELID_DETECTION_ONET_48_48_3 = KNERON_CAT_FACE +2,
|
||||
KNERON_YAWN_DETECTION_PFLD_112_112_3 = KNERON_CAT_FACE +3,
|
||||
KNERON_DBFACE_MBNET_V2_480_864_3 = KNERON_CAT_FACE +4,
|
||||
KNERON_FILTER = KNERON_CAT_FACE +5, //No model inference, just pre and post-process
|
||||
KNERON_ALIGNMENT = KNERON_CAT_FACE +6, //No model inference, just preprocess
|
||||
KNERON_FACE_EXPRESSION_112_112_3 = KNERON_CAT_FACE +7,//105.391,689.658
|
||||
KNERON_RBG_OCCLUSION_RES18_112_112_3 = KNERON_CAT_FACE +8,
|
||||
KNERON_LM2BBOX = KNERON_CAT_FACE + 9, //No model inference, just post-process
|
||||
KNERON_PUPIL_ONET_48_48_3 = KNERON_CAT_FACE +10,
|
||||
KNERON_NIR_OCCLUSION_RES18_112_112_3 = KNERON_CAT_FACE +11,
|
||||
KNERON_HEAD_SHOULDER_MBNET_V2_112_112_3 = KNERON_CAT_FACE + 12,
|
||||
KNERON_RGB_LIVENESS_RES18_112_112_3 = KNERON_CAT_FACE +13,
|
||||
KNERON_MOUTH_LM_v1_56_56_1 = KNERON_CAT_FACE +14, //3dLM: nose, upper lip middle, chin, two sides of faces
|
||||
KNERON_MOUTH_LM_v2_56_56_1 = KNERON_CAT_FACE +15, //3dLM: nose, upper/lower lip middle, two sides of faces
|
||||
KNERON_PUPIL_ONET_48_48_1 = KNERON_CAT_FACE +16,
|
||||
KNERON_RGB_LIVENESS_MBV2_112_112_3 = KNERON_CAT_FACE +17,
|
||||
KNERON_FACESEG_DLA34_128_128_3 = KNERON_CAT_FACE +18,
|
||||
KNERON_OCC_CLS = KNERON_CAT_FACE +19, //no model inference, just post-process
|
||||
KNERON_LMSEG_FUSE = KNERON_CAT_FACE+20, //no model inference, just post-process
|
||||
KNERON_AGEGROUP_RES18_128_128_3 = KNERON_CAT_FACE+21,
|
||||
KNERON_FR_kface_112_112_3 = KNERON_CAT_FACE+22,
|
||||
KNERON_FDmask_ROTATE_MBSSD_200_200_3 = KNERON_CAT_FACE+23,
|
||||
KNERON_LM_5PTSROTATE_ONET_56_56_3 = KNERON_CAT_FACE+24,
|
||||
KNERON_FUSE_LIVENESS_850MM = KNERON_CAT_FACE +25,
|
||||
KNERON_FUSE_LIVENESS_940MM = KNERON_CAT_FACE +26,
|
||||
KNERON_FACE_QAULITY_ONET_112_112_3 = KNERON_CAT_FACE +27,
|
||||
KNERON_FACE_POSE_ONET_56_56_3 = KNERON_CAT_FACE + 28,
|
||||
KNERON_FUSE_LIVENESS_850MM_RES18_112_112_3 = KNERON_CAT_FACE + 29, //Gen's resnet+agg fuse model
|
||||
KNERON_OCCCLASSIFER_112_112_3 = KNERON_CAT_FACE +30,
|
||||
KNERON_FACE_ROTATE_POSE_ONET_56_56_3 = KNERON_CAT_FACE + 31,
|
||||
KNERON_NIR_LIVENESS_ROT_RES18_112_112_3 = KNERON_CAT_FACE +32,
|
||||
KNERON_LM_5PTS_ONETPLUS_56_56_3 = KNERON_CAT_FACE + 33,
|
||||
KNERON_FUSE_LIVENESS_940MM_18_RES18_112_112_3 = KNERON_CAT_FACE + 34,
|
||||
KNERON_DBFACE_MBNET_V2_256_352_3 = KNERON_CAT_FACE +35,
|
||||
KNERON_NIR_Liveness_aligned_112_112_3 = KNERON_CAT_FACE +36,
|
||||
KNERON_FUSE_Liveness_940_850_RES18_112_112_3 = KNERON_CAT_FACE +37,
|
||||
KNERON_FDLM_RETINANET_MBV2_640_640_3 = KNERON_CAT_FACE + 38,
|
||||
KNERON_NIR_OCCLUSION_MBV2D4_112_112_3 = KNERON_CAT_FACE +39,
|
||||
KNERON_FACE_EYEGLASSES_CLS3_56_56_3 = KNERON_CAT_FACE +40,
|
||||
KNERON_HEAD_SHOULDER_ROT_MBNET_V2_112_112_3 = KNERON_CAT_FACE + 41,
|
||||
KNERON_YOLOV5_FACE_AND_LM_640_640_3 = KNERON_CAT_FACE + 42, // bbox and lm, 2 outputs
|
||||
KNERON_YOLOV5_FACE_AND_LM_NO_UPSAMPLE_640_640_3 = KNERON_CAT_FACE + 43, // bbox and lm, 2 outputs
|
||||
KNERON_YOLOV5_FACE_FD_640_640_3 = KNERON_CAT_FACE + 44, // only bbox
|
||||
KNERON_YOLOV5_FACE_FD_NO_UPSAMPLE_640_640_3 = KNERON_CAT_FACE + 45, // only bbox
|
||||
KNERON_RSN_AFFINE = KNERON_CAT_FACE + 46, // affine preprocess only
|
||||
KNERON_MOUTH_LM_v2_ROTATE_56_56_1 = KNERON_CAT_FACE +47, //3dLM: nose, upper/lower lip middle, two sides of faces
|
||||
KNERON_YOLOV5_FACE_MASK_LM_640_640_3 = KNERON_CAT_FACE + 48, // bbox and lm, 2 outputs, 640(w)x640(h)
|
||||
KNERON_YOLOV5_FACE_MASK_LM_384_640_3 = KNERON_CAT_FACE + 49, // bbox and lm, 2 outputs, 640(w)x384(h)
|
||||
KNERON_YOLOV5_FACE_MASK_640_640_3 = KNERON_CAT_FACE + 50, // only bbox, 640(w)x640(h)
|
||||
KNERON_YOLOV5_FACE_MASK_384_640_3 = KNERON_CAT_FACE + 51, // only bbox, 640(w)x384(h)
|
||||
KNERON_FACE_PUPIL_CLS2_48_48_3 = KNERON_CAT_FACE +52,
|
||||
KNERON_LM_5PTS_ROTATE_ONETPLUS_80_80_3 = KNERON_CAT_FACE +53,
|
||||
KNERON_FDmask_ROTATE_fcos_224_224_3 = KNERON_CAT_FACE+54,
|
||||
KNERON_FDmask_fcos_224_224_3 = KNERON_CAT_FACE+55,
|
||||
KNERON_FACE_PUPIL_ROTATE_CLS2_48_48_3 = KNERON_CAT_FACE +56,
|
||||
KNERON_NIR_OCCLUSION_ROT_MBV2D4_112_112_3 = KNERON_CAT_FACE +57,
|
||||
KNERON_FUSE_LIVENESS_sc035_112_112_4 = KNERON_CAT_FACE +58,
|
||||
KNERON_FDmask_fcos_512_704_3 = KNERON_CAT_FACE+59,
|
||||
KNERON_FACESEG_DLA34_rotate_128_128_3 = KNERON_CAT_FACE +60,
|
||||
KNERON_FUSE_LIVENESS_R18_5crops_48_48_3 = KNERON_CAT_FACE + 61,
|
||||
KNERON_RGB2NIR_MOBILEFACENET_RESNET_6BLOCKS_256_256_3 = KNERON_CAT_FACE + 62,
|
||||
KNERON_FUSE_LIVENESS_1054sc035_112_112_4 = KNERON_CAT_FACE +63,
|
||||
KNERON_NIR_LIVENESS_ROT_1054_RES18_112_112_3 = KNERON_CAT_FACE +64,
|
||||
KNERON_FDmask_ROTATE_fcos_256_448_3 = KNERON_CAT_FACE+65,
|
||||
KNERON_FDmask_ROTATE_fcos_288_416_3 = KNERON_CAT_FACE+66,
|
||||
KNERON_DEPTH_LIVENESS_FeatherNetB_112_112_1 = KNERON_CAT_FACE +67,
|
||||
KNERON_FUSE_TOF_LIVENESS_DEP_NIR_112_112_1 = KNERON_CAT_FACE +68,
|
||||
KNERON_NSH_LIVENESS_ROT_1054_MBV2D2_112_112_3 = KNERON_CAT_FACE +69,
|
||||
KNERON_FDmask_fcos_384_320_3 = KNERON_CAT_FACE+70,
|
||||
KNERON_COMBINE_LIVENESS_ROT_1054_MBV2_112_112_3 = KNERON_CAT_FACE +71,
|
||||
KNERON_RGB2NIR_UNET_FR_112_112_1 = KNERON_CAT_FACE + 72,
|
||||
KNERON_RGB2NIR_UNET_FR_112_112_3 = KNERON_CAT_FACE + 73,
|
||||
KNERON_TOF_EYE_LIVENESS_ROT_MBV2_112_112_3 = KNERON_CAT_FACE +74,
|
||||
KNERON_FACESEG_VGG10L_128_128_3 = KNERON_CAT_FACE +75,
|
||||
KNERON_FR_kfacer152_112_112_3 = KNERON_CAT_FACE +76,
|
||||
|
||||
|
||||
|
||||
//Category Object Detection related 200~300
|
||||
KNERON_OB_DETECT = 200,
|
||||
KNERON_OBJECTDETECTION_CENTERNET_512_512_3 = KNERON_OB_DETECT,
|
||||
KNERON_OBJECTDETECTION_FCOS_416_416_3 = KNERON_OB_DETECT +1,
|
||||
KNERON_PD_MBNET_V2_480_864_3 = KNERON_OB_DETECT +2, //16:9 aspect ratio
|
||||
KNERON_CAR_DETECTION_MBSSD_224_416_3 = KNERON_OB_DETECT +3,
|
||||
KNERON_PD_CROP_MBSSD_304_304_3 = KNERON_OB_DETECT +4,
|
||||
YOLO_V3_416_416_3 = KNERON_OB_DETECT +5,
|
||||
YOLO_V4_416_416_3 = KNERON_OB_DETECT +6,
|
||||
KNERON_CAR_DETECTION_YOLOV5S_CarMotorcycleBusTruck4_352_640_3 = KNERON_OB_DETECT +7,
|
||||
KNERON_LICENSE_DETECT_WPOD_208_416_3 = KNERON_OB_DETECT +8,
|
||||
KNERON_2D_UPPERBODY_KEYPOINT_RES18_384_288_3 = KNERON_OB_DETECT +9,
|
||||
YOLO_V3_608_608_3 = KNERON_OB_DETECT +10,
|
||||
KNERON_YOLOV5S_COCO80_640_640_3 = KNERON_OB_DETECT +11,
|
||||
KNERON_YOLOV5S_PersonBicycleCarMotorcycleBusTruckCatDog8_256_480_3 = KNERON_OB_DETECT + 12,
|
||||
KNERON_SITTINGPOSTURE_RESNET34_288_384_3 = KNERON_OB_DETECT + 13,
|
||||
KNERON_PERSONDETECTION_FCOS_416_416_3 = KNERON_OB_DETECT +14,
|
||||
KNERON_YOLOV5m_COCO80_640_640_3 = KNERON_OB_DETECT +15,
|
||||
KNERON_YOLOV5S_PersonBicycleCarMotorcycleBusTruck6_256_480_3 = KNERON_OB_DETECT + 16,
|
||||
KNERON_PERSONDETECTION_FCOS_384_288_3 = KNERON_OB_DETECT +17,
|
||||
KNERON_PERSONDETECTION_FCOS_720_416_3 = KNERON_OB_DETECT +18,
|
||||
KNERON_PERSONDETECTION_dbface_864_480_3 = KNERON_OB_DETECT +19,
|
||||
KNERON_PERSONDETECTION_YOLOV5s_256_480_3 = KNERON_OB_DETECT +20,
|
||||
KNERON_PERSONCLASSIFIER_MB_56_32_3 = KNERON_OB_DETECT +21,
|
||||
KNERON_PERSONREID_RESNET_42_82_3 = KNERON_OB_DETECT +22,
|
||||
KNERON_PERSONDETECTION_YOLOV5s_512_928_3 = KNERON_OB_DETECT +23,
|
||||
KNERON_UPKPTS_RSN_256_192_3 = KNERON_OB_DETECT + 24,
|
||||
KNERON_PERSONDETECTION_YOLOV5sParklot_256_480_3 = KNERON_OB_DETECT + 25,
|
||||
KNERON_CAR_DETECTION_MBSSD_304_544_3 = KNERON_OB_DETECT +26,
|
||||
KNERON_KPTSCLASSIFIER_3_11_1 = KNERON_OB_DETECT +27,
|
||||
KNERON_YOLOV5S_PersonCatDogBottleChairPottedplant6_256_480_3 = KNERON_OB_DETECT + 28,
|
||||
KNERON_DBFAIR_320_160_3 = KNERON_OB_DETECT + 29,
|
||||
KNERON_CAR_MOTOR_PERSON_DETECTION_MBSSD_224_416_3 = KNERON_OB_DETECT +30,
|
||||
KNERON_LICENSE_DETECT_QUANTIZED_WPOD_208_416_3 = KNERON_OB_DETECT +31,
|
||||
KNERON_PERSON_DETECTION_MBSSD_224_416_3 = KNERON_OB_DETECT +32,
|
||||
KNERON_PERSONCLASSIFIER_MB_56_48_3 = KNERON_OB_DETECT +33,
|
||||
KNERON_YOLOV5S_CarMotorcycleBusTruckPlate5_352_640_3 = KNERON_OB_DETECT + 34,
|
||||
KNERON_YOLOV5S_PersonBottleChairPottedplant4_288_640_3 = KNERON_OB_DETECT + 35,
|
||||
KNERON_COCO_KPTS_dbpose_640_384_3 = KNERON_OB_DETECT + 36,
|
||||
KNERON_YOLOV5S_OCR_NUMBER_ALPHABET_PLATE_352_640_3 = KNERON_OB_DETECT + 37,
|
||||
KNERON_PERSONKPTS_ONETPLUS_112_56_3 = KNERON_OB_DETECT + 38,
|
||||
KNERON_IMAGE_KPT_240_320_3 = KNERON_OB_DETECT + 39,
|
||||
KNERON_FULLBODYKPTS_LHRN_256_192_3 = KNERON_OB_DETECT + 40,//520: 8.81063, 720:119.38
|
||||
KNERON_YOLOF_R50_640_384_3 = KNERON_OB_DETECT + 41,
|
||||
KNERON_SOLOV2_R18_FPN_448_448_3 = KNERON_OB_DETECT + 42,
|
||||
KNERON_IMAGE_KPT_SP_240_320_3 = KNERON_OB_DETECT + 43,
|
||||
KNERON_YOLOX_S_640_640_3 = KNERON_OB_DETECT + 44,
|
||||
KNERON_SCRFD_500M_BNKPS_640_480_3 = KNERON_OB_DETECT + 45,
|
||||
KNERON_SCRFD_2G_BNKPS_640_480_3 = KNERON_OB_DETECT + 46,
|
||||
KNERON_SCRFD_10G_BNKPS_640_480_3 = KNERON_OB_DETECT + 47,
|
||||
KNERON_PERSONCLASSIFIER_HALF_56_32_3 = KNERON_OB_DETECT +48,
|
||||
KNERON_SCRFD_10G_BNKPS_640_640_3 = KNERON_OB_DETECT + 49,
|
||||
KNERON_YOLOV5S_PersonBicycleCarMotorcycleBusTruck6_512_864_3 = KNERON_OB_DETECT + 50,
|
||||
KNERON_FULLBODYKPTS_RSN_COCO_256_192_3 = KNERON_OB_DETECT + 51,//9.14208, 56.433
|
||||
KNERON_YOLOV5S_768192PersonCatDogBottleChairPottedplant6_256_480_3 = KNERON_OB_DETECT + 52,
|
||||
KNERON_PERSONCLASSIFIER_768192MB_56_48_3 = KNERON_OB_DETECT +53,
|
||||
KNERON_FULLBODYKPTS_RSN_MPII_256_256_3 = KNERON_OB_DETECT + 54,
|
||||
KNERON_CENTERTRACK_PERSON_960_544_7 = KNERON_OB_DETECT + 55,
|
||||
KNERON_FAIRMOT_PERSON_928_512_3 = KNERON_OB_DETECT + 56,
|
||||
KNERON_YOLOP_VEHICLE_384_640_3 = KNERON_OB_DETECT + 57,
|
||||
KNERON_YOLOV5S_PersonBicycleCarMotorcycleBusTruck6_480_832_3 = KNERON_OB_DETECT + 58,
|
||||
KNERON_YOLOV5S_PersonBottleChairPottedplant4_480_832_3 = KNERON_OB_DETECT + 59,
|
||||
KNERON_YOLOV5S_PersonHead2_256_480_3 = KNERON_OB_DETECT + 60,
|
||||
KNERON_HANDKPTS_RSN18_FREIHAND_224_224_3 = KNERON_OB_DETECT + 62,
|
||||
KNERON_YOLOV5S_COCO80_256_480_3 = KNERON_OB_DETECT + 63,
|
||||
KNERON_YOLOV5S_COCO80_480_640_3 = KNERON_OB_DETECT + 64,
|
||||
KNERON_YOLOV5S_PersonBicycleCarMotorcycleBusTruck6_192_480_3 = KNERON_OB_DETECT + 65,
|
||||
KNERON_YOLOV5S_PersonBicycleCarMotorcycleBusTruck6_352_480_3 = KNERON_OB_DETECT + 66,
|
||||
KNERON_YOLOOP_PersonTwowheelVehicle3_384_640_3 = KNERON_OB_DETECT + 67,
|
||||
KNERON_YOLOV5M_PersonBottleChairPottedplant4_160_960_3 = KNERON_OB_DETECT + 68,
|
||||
KNERON_YOLOX_Person_448_800_3 = KNERON_OB_DETECT + 69,
|
||||
KNERON_YOLOV5S_PersonVboxHead2_256_480_3 = KNERON_OB_DETECT + 70,
|
||||
KNERON_YOLOX_Person_160_960_3 = KNERON_OB_DETECT + 71,
|
||||
KNERON_IMAGE_KPT_CV_240_320_3 = KNERON_OB_DETECT + 72,
|
||||
KNERON_LICENSE_DETECT_YOLO5FACE_S_4PT_608_800_3 = KNERON_OB_DETECT + 73,
|
||||
KNERON_LICENSE_DETECT_YOLO5FACE_S_4PT_NO_UPSAMPLE_480_640_3 = KNERON_OB_DETECT + 74,
|
||||
KNERON_YOLOV5S_PersonBicycleCarMotorcycleBusTruck6_192_288_3 = KNERON_OB_DETECT + 75,
|
||||
KNERON_YOLOV5S0375_PersonBicycleCarMotorcycleBusTruck6_256_352_3 = KNERON_OB_DETECT + 76,
|
||||
KNERON_YOLOV5S_ROBOT_VACUUM_61CLS_480_640_3 = KNERON_OB_DETECT + 77,
|
||||
KNERON_YOLOV5M_PersonBottleChairPottedplantTvmonitorProjectorscreenLaptop7_160_1152_3 = KNERON_OB_DETECT + 78,
|
||||
KNERON_YOLOV5M_PersonBottleChairPottedplantTvmonitorProjectorscreenLaptop7_192_928_3 = KNERON_OB_DETECT + 79,
|
||||
KNERON_YOLOV5M_ROBOT_VACUUM_61CLS_480_640_3 = KNERON_OB_DETECT + 80,
|
||||
KNERON_YOLOV5S_PersonHead2_288_384_3 = KNERON_OB_DETECT + 81,
|
||||
KNERON_IMAGE_KPT_LOFTR_240_320_3 = KNERON_OB_DETECT + 82,
|
||||
KNERON_YOLOXS_LANDMARK_USLPD_480_832_3 = KNERON_OB_DETECT + 95,
|
||||
KNERON_YOLOXM_USLPR_96_256_3 = KNERON_OB_DETECT + 96,
|
||||
|
||||
//Category OCR related 300~600
|
||||
KNERON_OCR = 300,
|
||||
KNERON_LICENSE_OCR_MBNET_64_160_3 = KNERON_OCR,
|
||||
KNERON_WATERMETER_OCR_MBNET = KNERON_OCR +1, //unknown
|
||||
KNERON_LICENSE_OCR_MBNETv2_64_160_3 = KNERON_OCR +2,
|
||||
KNERON_LICENSE_OCR_MBNETv2_96_256_3 = KNERON_OCR +3,
|
||||
|
||||
|
||||
//Category Audio related 600~900
|
||||
KNERON_AUDIO = 600,
|
||||
KNERON_KWS_DSCNN3_149_10_1 = KNERON_AUDIO,
|
||||
KNERON_SIMPLE_COMMAND_DSCNN3_49_10_1 = KNERON_AUDIO +1,
|
||||
KNERON_SOUND_CLASSIFICATION_THINRESNET34_128_250_3 = KNERON_AUDIO +2,
|
||||
KNERON_ASR_ENCODER_1_1000_64 = KNERON_AUDIO+3,
|
||||
KNERON_ASR_DECODER_1024 = KNERON_AUDIO+4,
|
||||
KNERON_SOUND_CLASSIFICATION_11CLASSES_RESNET34_128_250_3 = KNERON_AUDIO +6, //Add baby crying class
|
||||
KNERON_TTS_AM = KNERON_AUDIO +7,
|
||||
KNERON_TTS_VO = KNERON_AUDIO +8,
|
||||
KNERON_TTS_FRONTEND = KNERON_AUDIO +9,
|
||||
KNERON_SILERO_VAD = KNERON_AUDIO +10,
|
||||
KNERON_THINRESNET34_GVLAD = KNERON_AUDIO +11, // 512-dimensional speakcer feature extraction
|
||||
KNERON_THINRESNET34_GVLAD_10_SECONDS = KNERON_AUDIO +12, // 512-dimensional speakcer feature extraction for 10 seconds input
|
||||
KNERON_THINRESNET34_GVLAD_15_SECONDS = KNERON_AUDIO +13, // 512-dimensional speakcer feature extraction for 15 seconds input
|
||||
KNERON_TTS_COSYVOICE = KNERON_AUDIO + 14,
|
||||
KNERON_SOUND_CLASSIFICATION_12CLASSES_RESNET34_128_250_3 = KNERON_AUDIO +15, //Add speech class
|
||||
KNERON_SOUND_CLASSIFICATION_13CLASSES_RESNET34_128_250_3 = KNERON_AUDIO +16, //Add glass breaking class
|
||||
|
||||
//Category Depth prediction related
|
||||
KNERON_DEPTH = 700,
|
||||
KNERON_DEPTH_RESNET18_320_480_3 = KNERON_DEPTH,
|
||||
KNERON_RAFT_FRONT_272_480_3 = KNERON_DEPTH +1,
|
||||
KNERON_RAFT_GRU_272_480_3 = KNERON_DEPTH +2,
|
||||
KNERON_RAFT_UP_272_480_3 = KNERON_DEPTH +3,
|
||||
KNERON_STEREONET_FE_480_640_3 = KNERON_DEPTH +4, // Feature Extraction
|
||||
KNERON_STEREONET_CC_120_160_320 = KNERON_DEPTH +5, // Cost Construction
|
||||
KNERON_STEREONET_CA_120_160_48 = KNERON_DEPTH +6, // Cost Aggregation
|
||||
KNERON_STEREONET_CN_480_640_3 = KNERON_DEPTH +7, // Context Net
|
||||
|
||||
//Category tracker related 900~1000
|
||||
KNERON_TRACKER= 900,
|
||||
KNERON_TRACKER_UPDATE=901,
|
||||
KNERON_TRACKER_GET_DATEBASE=902,
|
||||
KNERON_TRACKER_RESET_DATEBASE=903,
|
||||
|
||||
|
||||
//Category SDK test related
|
||||
KNERON_CAT_SDK_TEST = 1000,
|
||||
KNERON_SDK_FD = KNERON_CAT_SDK_TEST,
|
||||
KNERON_SDK_LM = KNERON_CAT_SDK_TEST +1,
|
||||
KNERON_SDK_FR = KNERON_CAT_SDK_TEST +2,
|
||||
|
||||
// Category Function Runner related 2000
|
||||
KNERON_FUNCTION = 2000,
|
||||
KNERON_FUNCTION_FANIR_CLS = KNERON_FUNCTION,
|
||||
KNERON_FUNCTION_OCC_CLS = KNERON_FUNCTION +1,
|
||||
KNERON_FUNCTION_LMSEG_FUSE = KNERON_FUNCTION +2,
|
||||
KNERON_FUNCTION_FILTER_SCORE = KNERON_FUNCTION +3,
|
||||
KNERON_FUNCTION_BLINK_DETECT = KNERON_FUNCTION +4,
|
||||
KNERON_FUNCTION_NMS = KNERON_FUNCTION +5,
|
||||
KNERON_FUNCTION_FILTER_PD_FALSEPOSITIVE = KNERON_FUNCTION +6,
|
||||
KNERON_FUNCTION_TRACKER = KNERON_FUNCTION +7,
|
||||
KNERON_FUNCTION_LANDMARK_SCORE_FILTER = KNERON_FUNCTION +8,
|
||||
KNERON_FUNCTION_FILTER_REID = KNERON_FUNCTION +9,
|
||||
KNERON_FUNCTION_IS_SKIP = KNERON_FUNCTION +10,
|
||||
KNERON_FUNCTION_CHOOSE_LARGEBOX = KNERON_FUNCTION + 11,
|
||||
KNERON_FUNCTION_FILTERPITCH = KNERON_FUNCTION + 12,
|
||||
KNERON_FUNCTION_FILTERPOSE = KNERON_FUNCTION+13,
|
||||
KNERON_FUNCTION_COMBINEBOX_PDFALSEPOSITIVE = KNERON_FUNCTION + 14,
|
||||
KNERON_FUNCTION_FILTERBOXSIZE = KNERON_FUNCTION + 15,
|
||||
KNERON_FUNCTION_FARGB_CLS = KNERON_FUNCTION + 16,
|
||||
KNERON_FUNCTION_RGBCHECKER = KNERON_FUNCTION + 17,
|
||||
KNERON_FUNCTION_NIRCHECKER = KNERON_FUNCTION + 18,
|
||||
KNERON_FUNCTION_FRISKIP = KNERON_FUNCTION +19,
|
||||
KNERON_FUNCTION_MASKCHECKER = KNERON_FUNCTION +20,
|
||||
KNERON_FUNCTION_BBOXLMPOSE_FILTER = KNERON_FUNCTION + 21,
|
||||
KNERON_FUNCTION_FUSESKIP = KNERON_FUNCTION + 22,
|
||||
KNERON_FUNCTION_RETAIN_PERSONCATEGORY = KNERON_FUNCTION + 23,
|
||||
KNERON_FUNCTION_CHOOSE_CENTER_BBOX = KNERON_FUNCTION + 24,
|
||||
KNERON_FUNCTION_FILTER_SCORE_CLASS = KNERON_FUNCTION + 25,
|
||||
KNERON_FUNCTION_BBOX_LM_LIVENESS_FILTER = KNERON_FUNCTION + 26,
|
||||
KNERON_FUNCTION_UPPERSQUARE_BBOX = KNERON_FUNCTION + 27,
|
||||
KNERON_FUNCTION_LOWERSQUARE_BBOX = KNERON_FUNCTION + 28,
|
||||
KNERON_FUNCTION_FAIRMOT = KNERON_FUNCTION + 29,
|
||||
KNERON_FUNCTION_MERGEBOX = KNERON_FUNCTION +30,
|
||||
KNERON_FUNCTION_NIR_OCC_MBV=KNERON_FUNCTION +31,
|
||||
KNERON_FUNCTION_FA_NIR_SH=KNERON_FUNCTION +32,
|
||||
KNERON_FUNCTION_EYE_LMK_FUSE=KNERON_FUNCTION +33,
|
||||
KNERON_FUNCTION_FILTER_GLASSES=KNERON_FUNCTION +34,
|
||||
KNERON_FUNCTION_YOLOLP2WPODFORMAT=KNERON_FUNCTION +36,
|
||||
KNERON_FUNCTION_AGGREGATE_OCCLUSION_CLASSIFIER_INPUTS=KNERON_FUNCTION +37,
|
||||
KNERON_FUNCTION_FILTER_BBOXES_BY_PITCH_RESULTS=KNERON_FUNCTION +38,
|
||||
KNERON_FUNCTION_REORDER_CENTER_BBOXES=KNERON_FUNCTION +39,
|
||||
KNERON_FUNCTION_GENERAL_SCORE_FILTER=KNERON_FUNCTION+40,
|
||||
KNERON_FER_CROP = KNERON_FUNCTION+41,
|
||||
KNERON_FUNCTION_FILTER_FACE_WITH_CLOSED_EYES = KNERON_FUNCTION + 42,
|
||||
KNERON_FUNCTION_EXPAND_PLATE = KNERON_FUNCTION + 43,
|
||||
KNERON_FUNCTION_BBOX_TO_STRING = KNERON_FUNCTION + 44,
|
||||
KNERON_FUNCTION_OCR_REMOVE_DIGITS = KNERON_FUNCTION + 45,
|
||||
KNERON_FUNCTION_LMK_SELECTOR = KNERON_FUNCTION + 46,
|
||||
KNERON_FUNCTION_REVERSE_KPTS = KNERON_FUNCTION + 47,
|
||||
KNERON_FUNCTION_REVERSE_KPTS_FULLBODY = KNERON_FUNCTION + 48,
|
||||
KNERON_FUNCTION_MERGE_YOLO_TYPE_CARPLATES = KNERON_FUNCTION + 49,
|
||||
KNERON_FUNCTION_MERGE_BBOX_EMB = KNERON_FUNCTION + 50,
|
||||
KNERON_FUNCTION_CROP_IMG_AGEGENDER = KNERON_FUNCTION + 51,
|
||||
KNERON_FUNCTION_IMG_FLIP = KNERON_FUNCTION + 52,
|
||||
KNERON_FUNCTION_AVERAGE_EMB = KNERON_FUNCTION + 53,
|
||||
KNERON_FUNCTION_GETVALIDREIDBBOX = KNERON_FUNCTION + 54,
|
||||
KNERON_FUNCTION_COMBINEVALIDINVALIDBBOX = KNERON_FUNCTION + 55,
|
||||
KNERON_MATMUL = KNERON_OB_DETECT + 56,
|
||||
KNERON_FUNCTION_MERGENODE = KNERON_OB_DETECT + 57,
|
||||
KNERON_FUNCTION_RETINAFACE_MERGERBOX = KNERON_FUNCTION + 58,
|
||||
KNERON_YOLOV5S_PersonBottleChairPottedplant4_832_480_3 = KNERON_OB_DETECT + 59,
|
||||
KNERON_YOLOV5S_PersonHead2_480_256_3 = KNERON_OB_DETECT + 60,
|
||||
KNERON_FUNCTION_KEEP_BBOX_BY_CLASS_IDS = KNERON_FUNCTION + 61,
|
||||
KNERON_ByteTrack = KNERON_FUNCTION + 62,
|
||||
KNERON_FUNCTION_SPLIT_OCCLUDED_BBOX = KNERON_FUNCTION + 63,
|
||||
KNERON_FUNCTION_GET_OCCLUDED_UNMATCHED_BBOX = KNERON_FUNCTION + 64,
|
||||
KNERON_FUNCTION_SIMPLE_IGNORE_FACE_OF_BAD_POSE = KNERON_FUNCTION + 65,
|
||||
KNERON_FUNCTION_SIMPLE_IGNORE_FACE_OF_BAD_POSE_WITH_CONFIDENCE = KNERON_FUNCTION + 66,
|
||||
KNERON_FUNCTION_FILTER_BICYCLE_MOTORCYCLE = KNERON_FUNCTION + 67,
|
||||
KNERON_FUNCTION_SKIP_REID_FILTER = KNERON_FUNCTION + 68,
|
||||
KNERON_FUNCTION_TRACKING_WO_REID = KNERON_FUNCTION + 69,
|
||||
KNERON_FUNCTION_OCC_CHECKER = KNERON_FUNCTION + 70,
|
||||
KNERON_FUNCTION_TRACKER_IN_DET_FORMAT = KNERON_FUNCTION +71,
|
||||
KNERON_FUNCTION_LOW_HIGH_SCORE_BBOX_SPLIT = KNERON_FUNCTION +73,
|
||||
KNERON_FUNCTION_RM_INCOMPLETE_BBOX = KNERON_FUNCTION +74,
|
||||
KNERON_FUNCTION_RM_PERSON_IN_TV = KNERON_FUNCTION +75,
|
||||
KNERON_FUNCTION_BBOX_LM_OCCLU_FILTER = KNERON_FUNCTION +76,
|
||||
KNERON_FUNCTION_APPEND_EMPTY_LIST_TO_ORIGINAL_OUTPUT = KNERON_FUNCTION + 77,
|
||||
KNERON_FUNCTION_DEPTH_DECODE_CROP_RESIZE = KNERON_FUNCTION +78,
|
||||
KNERON_FUNCTION_SKIP_DARK_BRIGHT_FACE = KNERON_FUNCTION + 79,
|
||||
KNERON_FUNCTION_TRACKER_KPTS = KNERON_FUNCTION + 80,
|
||||
KNERON_FUNCTION_NIR_CROP_RESIZE = KNERON_FUNCTION + 81,
|
||||
KNERON_FUNCTION_DEPTH_FUSE_FILTER = KNERON_FUNCTION + 82,
|
||||
KNERON_FUNCTION_TWO_STAGE_SCORE_COMBINE = KNERON_FUNCTION + 83,
|
||||
KNERON_FUNCTION_FILTER_LARGE_AREA_LOWER_SCORE = KNERON_FUNCTION + 84,
|
||||
KNERON_FUNCTION_NORMALIZE_GLUE_KPTS = KNERON_FUNCTION + 85,
|
||||
|
||||
//Category Segmentation
|
||||
KNERON_SEGMENTATION = 3000,
|
||||
KNERON_INSTANCE_YOLACT_R18_FPN_448_448_3 = KNERON_SEGMENTATION,
|
||||
KNERON_SEGMENTATION_STDCNET_CITYSCAPES_512_1024_3 = KNERON_SEGMENTATION + 1,
|
||||
KNERON_SEGMENTATION_STDCNET_INDOOR_480_640_3 = KNERON_SEGMENTATION + 2,
|
||||
KNERON_SEGMENTATION_DDRNET23SLIMCONV_INDOOR_480_640_3 = KNERON_SEGMENTATION + 3,
|
||||
KNERON_INSTANCE_SOLO_R18_FPN_448_448_3 = KNERON_SEGMENTATION + 4,
|
||||
KNERON_SEGMENTATION_DDRNET23SLIMCONV_POLY_INDOOR_480_640_3 = KNERON_SEGMENTATION + 5,
|
||||
KNERON_SEGMENTATION_PIDNETS_CITYSCAPES_BDD10K_192_256_3 = KNERON_SEGMENTATION + 30,
|
||||
|
||||
//Category System models
|
||||
KNERON_SYSTEMMODELS = 4000,
|
||||
KNERON_IMAGENET_MOBILENETV2_224_224_3 = KNERON_SYSTEMMODELS,
|
||||
KNERON_IMAGENET_MOBILENETV2_QAT_224_224_3 = KNERON_SYSTEMMODELS + 1,
|
||||
|
||||
|
||||
//The IDs of KNERON_OB_DETECT and KNERON_OCR are conflicting, please don't use KNERON_OB_DETECT anymore, use KNERON_OB_DETECT_ instead
|
||||
//Category Object Detection related 5000~10000
|
||||
KNERON_OB_DETECT_ = 5000,
|
||||
KNERON_YOLOV705_PersonBottleChairPottedplantTvmonitorProjectorscreenLaptopHead8_192_928_3 = KNERON_OB_DETECT_,
|
||||
KNERON_YOLOV705_PersonBottleChairPottedplantTvmonitorProjectorscreenLaptopHead8_448_2112_3 = KNERON_OB_DETECT_ + 1,
|
||||
KNERON_YOLOV705_PersonBottleChairPottedplantTvmonitorProjectorscreenLaptopHead8_640_1440_3 = KNERON_OB_DETECT_ + 2,
|
||||
KNERON_YOLOV7TINY_PersonCatDogBottleChairPottedplantHead7_480_256_3 = KNERON_OB_DETECT_ + 3,
|
||||
KNERON_YOLOV7pose_PersonBottleChairPottedplantTvmonitorProjectorscreenLaptopHead8_832_480_3 = KNERON_OB_DETECT_ + 4,
|
||||
KNERON_YOLOV7TINY_HADNDETECTION_640_640_3 = KNERON_OB_DETECT_ + 5,
|
||||
KNERON_YOLOV7pose_61kpts_PersonHeadHand3_640_384_3 = KNERON_OB_DETECT_ + 6,
|
||||
KNERON_YOLOV705_PersonBicycleCarMotorcycleBusTruckHead7_512_288_3 = KNERON_OB_DETECT_ + 30,
|
||||
KNERON_YOLOV705_PersonBottleChairPottedplantHead5_608_800_3 = KNERON_OB_DETECT_ + 34,
|
||||
KNERON_YOLOV7pose_tiny_LicensePlateDetection_640_640_3 = KNERON_OB_DETECT_ + 43,
|
||||
KNERON_YOLOV705_LicensePlateRecognition_256_96_3 = KNERON_OB_DETECT_ + 44,
|
||||
KNERON_YOLOV705_kbro_PersonBottleChairPottedplantHead5_608_800_3 = KNERON_OB_DETECT_ + 47,
|
||||
KNERON_YOLOV705_PersonBicycleCarMotorcycleBusTruckHeadTrafficCone8_512_288_3 = KNERON_OB_DETECT_ + 57,
|
||||
KNERON_YOLOV705_PersonBicycleCarMotorcycleBusTruckHeadTrafficConeTrafficPoleTrafficBarrel10_512_288_3 = KNERON_OB_DETECT_ + 68,
|
||||
KNERON_YOLOV7TINY075_PersonBicycleCarMotorcycleBusTruckHead7_448_224_3 = KNERON_OB_DETECT_ + 73,
|
||||
KNERON_YOLOV7TINY075_PersonBicycleCarMotorcycleBusTruckHead7_96_64_3 = KNERON_OB_DETECT_ + 74,
|
||||
KNERON_YOLOV7TINY_DMS_640_384_3 = KNERON_OB_DETECT_ + 76,
|
||||
KNERON_YOLOV7TINY_HORSE24_640_384_3 = KNERON_OB_DETECT_ + 78,
|
||||
|
||||
//Category Model Zoo training models
|
||||
//20000~30000
|
||||
KNERON_MODEL_ZOO = 20000,
|
||||
KNERON_MODEL_ZOO_MOBILENETV2 = KNERON_MODEL_ZOO,
|
||||
KNERON_MODEL_ZOO_RESNET18 = KNERON_MODEL_ZOO + 1,
|
||||
KNERON_MODEL_ZOO_RESNET50 = KNERON_MODEL_ZOO + 2,
|
||||
KNERON_MODEL_ZOO_FP_Classifier = KNERON_MODEL_ZOO + 3,
|
||||
KNERON_MODEL_ZOO_FCOS_DARKNET53s = KNERON_MODEL_ZOO + 4,
|
||||
KNERON_MODEL_ZOO_YOLOV5s_NoUpsample = KNERON_MODEL_ZOO + 5,
|
||||
KNERON_MODEL_ZOO_YOLOV5s = KNERON_MODEL_ZOO + 6,
|
||||
|
||||
|
||||
//Category Customer models
|
||||
//0x8000 = 32768
|
||||
CUSTOMER = 32768,
|
||||
|
||||
Count
|
||||
};
|
||||
|
||||
#endif
|
||||
167
include/common/ncpu_gen_struct.h
Normal file
167
include/common/ncpu_gen_struct.h
Normal file
@ -0,0 +1,167 @@
|
||||
/**
|
||||
* @file kneron_interface_data.h
|
||||
* @brief Kneron data structures used for API
|
||||
* @copyright (c) 2020 Kneron Inc. All right reserved.
|
||||
*/
|
||||
|
||||
#ifndef __KNERON_API_DATA_H__
|
||||
#define __KNERON_API_DATA_H__
|
||||
|
||||
#include <stdint.h>
|
||||
#include "ipc.h"
|
||||
#include "model_parser_api.h"
|
||||
|
||||
/* Helper macros */
|
||||
#define RAW_INFERENCE_FORMAT(image_p) (image_p->raw_img_p->inf_format)
|
||||
#define RAW_IMAGE_NUM_INPUT(image_p) (image_p->raw_img_p->num_image)
|
||||
#define RAW_IMAGE_MEM_ADDR(image_p, i) (image_p->raw_img_p->image_list[i].image_mem_addr)
|
||||
#define RAW_IMAGE_MEM_LEN(image_p, i) (image_p->raw_img_p->image_list[i].image_mem_len)
|
||||
#define RAW_FORMAT(image_p, i) (image_p->raw_img_p->image_list[i].format)
|
||||
#define RAW_INPUT_ROW(image_p, i) (image_p->raw_img_p->image_list[i].input_row)
|
||||
#define RAW_INPUT_COL(image_p, i) (image_p->raw_img_p->image_list[i].input_col)
|
||||
#define RAW_CROP_TOP(image_p, i) (image_p->raw_img_p->image_list[i].params_s.crop_top)
|
||||
#define RAW_CROP_BOTTOM(image_p, i) (image_p->raw_img_p->image_list[i].params_s.crop_bottom)
|
||||
#define RAW_CROP_LEFT(image_p, i) (image_p->raw_img_p->image_list[i].params_s.crop_left)
|
||||
#define RAW_CROP_RIGHT(image_p, i) (image_p->raw_img_p->image_list[i].params_s.crop_right)
|
||||
#define RAW_PAD_TOP(image_p, i) (image_p->raw_img_p->image_list[i].params_s.pad_top)
|
||||
#define RAW_PAD_BOTTOM(image_p, i) (image_p->raw_img_p->image_list[i].params_s.pad_bottom)
|
||||
#define RAW_PAD_LEFT(image_p, i) (image_p->raw_img_p->image_list[i].params_s.pad_left)
|
||||
#define RAW_PAD_RIGHT(image_p, i) (image_p->raw_img_p->image_list[i].params_s.pad_right)
|
||||
#define RAW_SCALE_WIDTH(image_p, i) (image_p->raw_img_p->image_list[i].params_s.scale_width)
|
||||
#define RAW_SCALE_HEIGHT(image_p, i) (image_p->raw_img_p->image_list[i].params_s.scale_height)
|
||||
#define RAW_FLIP_FACE(image_p, i) (image_p->raw_img_p->image_list[i].params_s.flip_face)
|
||||
#define RAW_OTHER_PARAMS(image_p) (image_p->raw_img_p->ext_params)
|
||||
|
||||
#define DIM_INPUT_ROW(image_p, i) (image_p->model_preproc[i].dim.input_row)
|
||||
#define DIM_INPUT_COL(image_p, i) (image_p->model_preproc[i].dim.input_col)
|
||||
#define DIM_INPUT_CH(image_p, i) (image_p->model_preproc[i].dim.input_channel)
|
||||
|
||||
#define PREPROC_INPUT_MEM_ADDR(image_p, i) (image_p->model_preproc[i].preproc.input_mem_addr)
|
||||
#define PREPROC_INPUT_MEM_LEN(image_p, i) (image_p->model_preproc[i].preproc.input_mem_len)
|
||||
#define PREPROC_INPUT_MEM_ADDR2(image_p, i) (image_p->model_preproc[i].preproc.input_mem_addr2)
|
||||
#define PREPROC_INPUT_MEM_LEN2(image_p, i) (image_p->model_preproc[i].preproc.input_mem_len2)
|
||||
#define PREPROC_INPUT_RADIX(image_p, i) (image_p->model_preproc[i].preproc.input_radix)
|
||||
#define PREPROC_INPUT_FORMAT(image_p, i) (image_p->model_preproc[i].preproc.input_format)
|
||||
#define PREPROC_PARAMS_P(image_p, i) (image_p->model_preproc[i].preproc.params_p)
|
||||
|
||||
#define POSTPROC_OUTPUT_NUM(image_p) (image_p->postproc.output_num)
|
||||
#define POSTPROC_OUTPUT_FORMAT(image_p) (image_p->postproc.output_format)
|
||||
#define POSTPROC_OUTPUT_MEM_ADDR(image_p) (image_p->postproc.output_mem_addr)
|
||||
#define POSTPROC_OUTPUT_MEM_LEN(image_p) (image_p->postproc.output_mem_len)
|
||||
#define POSTPROC_RESULT_MEM_ADDR(image_p) (image_p->postproc.result_mem_addr)
|
||||
#define POSTPROC_RESULT_MEM_LEN(image_p) (image_p->postproc.result_mem_len)
|
||||
#define POSTPROC_RESULT_MODEL_ID(image_p) (image_p->postproc.model_id)
|
||||
#define POSTPROC_PARAMS_P(image_p) (image_p->postproc.params_p)
|
||||
#define POSTPROC_RAW_RESULT_MEM_ADDR(image_p) (image_p->postproc.raw_result_mem_addr)
|
||||
#define POSTPROC_OUTPUT_MEM_ADDR3(image_p) (image_p->postproc.output_mem_addr3)
|
||||
#define POSTPROC_OUTPUT_MEM_ADDR4(image_p) (image_p->postproc.output_mem_addr4)
|
||||
|
||||
/* Structure of kdp_model_dim */
|
||||
struct kdp_model_dim_s {
|
||||
/* CNN input dimensions */
|
||||
uint32_t input_row;
|
||||
uint32_t input_col;
|
||||
uint32_t input_channel;
|
||||
};
|
||||
|
||||
/* Structure of kdp_pre_proc_s */
|
||||
struct kdp_pre_proc_s {
|
||||
/* input image in memory for NPU */
|
||||
uint32_t input_mem_addr;
|
||||
int32_t input_mem_len;
|
||||
|
||||
/* Input working buffers for NPU */
|
||||
uint32_t input_mem_addr2;
|
||||
int32_t input_mem_len2;
|
||||
|
||||
/* number of bits for input fraction */
|
||||
uint32_t input_radix;
|
||||
|
||||
/* scaling factor */
|
||||
float input_scale;
|
||||
|
||||
/* Other parameters for the model */
|
||||
void *params_p;
|
||||
};
|
||||
|
||||
struct kdp_model_pre_proc_s {
|
||||
/* Model dimension */
|
||||
struct kdp_model_dim_s dim;
|
||||
|
||||
/* Pre process struct */
|
||||
struct kdp_pre_proc_s preproc;
|
||||
};
|
||||
|
||||
/* Structure of kdp_post_proc_s */
|
||||
struct kdp_post_proc_s {
|
||||
/* output number */
|
||||
uint32_t output_num;
|
||||
|
||||
/* output data memory from NPU */
|
||||
uint32_t output_mem_addr;
|
||||
int32_t output_mem_len;
|
||||
|
||||
/* result data memory from post processing */
|
||||
uint32_t result_mem_addr;
|
||||
int32_t result_mem_len;
|
||||
|
||||
uint32_t output_mem_addr3; // for FD SSR or shared
|
||||
uint32_t output_mem_addr4; // for CenterNet or shared
|
||||
|
||||
/* output data format from NPU
|
||||
* BIT(0): =0, 8-bits
|
||||
* =1, 16-bits
|
||||
*/
|
||||
uint32_t output_format;
|
||||
|
||||
/* output node parameter */
|
||||
// Out_Node *node_p;
|
||||
|
||||
/* Other parameters for the model */
|
||||
void *params_p;
|
||||
};
|
||||
|
||||
/*****************************************************************
|
||||
* Flatbuffer setup.bin model information
|
||||
*****************************************************************/
|
||||
|
||||
/* Parsed model setup.bin information (flatbuffer) */
|
||||
typedef struct {
|
||||
session_hdl_t parser_session_hdl;
|
||||
node_hdl_t in_node_hdl;
|
||||
node_hdl_t out_node_hdl;
|
||||
node_hdl_t cpu_node_hdl;
|
||||
node_hdl_t const_node_hdl;
|
||||
} parsed_fw_model_flatbuffer_t;
|
||||
|
||||
/* KDP image structure */
|
||||
typedef struct kdp_image_s {
|
||||
/* a NCPU copy of raw image struct in in_comm_p */
|
||||
struct kdp_img_raw_s *raw_img_p;
|
||||
|
||||
/**
|
||||
* To compatible legacy/flatbuffer version setup.bin information
|
||||
*
|
||||
* is_flatbuffer: false - legacy. true - flatbuffer.
|
||||
* pParsedModel: for legacy setup.bin model. (NULL when is_flatbuffer is true)
|
||||
* pParsedModelFlatbuffer: for flatbuffer setup.bin model. (NULL when is_flatbuffer is false)
|
||||
*/
|
||||
// bool is_flatbuffer;
|
||||
// parsed_fw_model_t *pParsedModel;
|
||||
parsed_fw_model_flatbuffer_t *pParsedModelFlatbuffer;
|
||||
|
||||
int model_id;
|
||||
int slot_idx;
|
||||
// char *setup_mem_p;
|
||||
|
||||
void *pExtParam;
|
||||
int32_t nLenExtParam;
|
||||
|
||||
/* Model dimension and Pre process struct */
|
||||
struct kdp_model_pre_proc_s model_preproc[MAX_INPUT_NODE_COUNT];
|
||||
|
||||
/* Post process struct */
|
||||
struct kdp_post_proc_s postproc;
|
||||
} kdp_image_t;
|
||||
|
||||
#endif /* __KNERON_API_DATA_H__ */
|
||||
116
include/common/types.h
Normal file
116
include/common/types.h
Normal file
@ -0,0 +1,116 @@
|
||||
#ifndef TYPES_H
|
||||
#define TYPES_H
|
||||
|
||||
#define BIT0 0x00000001
|
||||
#define BIT1 0x00000002
|
||||
#define BIT2 0x00000004
|
||||
#define BIT3 0x00000008
|
||||
#define BIT4 0x00000010
|
||||
#define BIT5 0x00000020
|
||||
#define BIT6 0x00000040
|
||||
#define BIT7 0x00000080
|
||||
#define BIT8 0x00000100
|
||||
#define BIT9 0x00000200
|
||||
#define BIT10 0x00000400
|
||||
#define BIT11 0x00000800
|
||||
#define BIT12 0x00001000
|
||||
#define BIT13 0x00002000
|
||||
#define BIT14 0x00004000
|
||||
#define BIT15 0x00008000
|
||||
#define BIT16 0x00010000
|
||||
#define BIT17 0x00020000
|
||||
#define BIT18 0x00040000
|
||||
#define BIT19 0x00080000
|
||||
#define BIT20 0x00100000
|
||||
#define BIT21 0x00200000
|
||||
#define BIT22 0x00400000
|
||||
#define BIT23 0x00800000
|
||||
#define BIT24 0x01000000
|
||||
#define BIT25 0x02000000
|
||||
#define BIT26 0x04000000
|
||||
#define BIT27 0x08000000
|
||||
#define BIT28 0x10000000
|
||||
#define BIT29 0x20000000
|
||||
#define BIT30 0x40000000
|
||||
#define BIT31 0x80000000
|
||||
|
||||
#define BS 0x08
|
||||
#define ESC 27
|
||||
|
||||
#ifndef NULL
|
||||
#define NULL 0
|
||||
#endif
|
||||
|
||||
#ifndef ENABLE
|
||||
#define ENABLE 1
|
||||
#endif
|
||||
|
||||
#ifndef DISABLE
|
||||
#define DISABLE 0
|
||||
#endif
|
||||
|
||||
#ifndef FALSE
|
||||
#define FALSE 0
|
||||
#endif
|
||||
|
||||
#ifndef TRUE
|
||||
#define TRUE 1
|
||||
#endif
|
||||
|
||||
/* type define */
|
||||
typedef unsigned long long UINT64;
|
||||
typedef long long INT64;
|
||||
typedef unsigned int UINT32;
|
||||
typedef int INT32;
|
||||
typedef unsigned short UINT16;
|
||||
typedef short INT16;
|
||||
typedef unsigned char UINT8;
|
||||
typedef char INT8;
|
||||
typedef unsigned char BOOL;
|
||||
typedef unsigned char BOOLEAN;
|
||||
|
||||
typedef unsigned char u8_t;
|
||||
typedef unsigned short u16_t;
|
||||
typedef unsigned long u32_t;
|
||||
typedef unsigned long long u64_t;
|
||||
|
||||
typedef unsigned char uchar;
|
||||
|
||||
#ifndef u16
|
||||
typedef unsigned short u16;
|
||||
#endif
|
||||
|
||||
#ifndef u32
|
||||
typedef unsigned int u32;
|
||||
#endif
|
||||
|
||||
#ifndef s16
|
||||
typedef short s16;
|
||||
#endif
|
||||
|
||||
#ifndef s32
|
||||
typedef int s32;
|
||||
#endif
|
||||
|
||||
typedef INT8 INT8S;
|
||||
typedef UINT8 INT8U;
|
||||
typedef INT16 INT16S;
|
||||
typedef UINT16 INT16U;
|
||||
typedef INT32 INT32S;
|
||||
typedef UINT32 INT32U;
|
||||
|
||||
|
||||
typedef unsigned char byte;
|
||||
typedef unsigned short word;
|
||||
typedef unsigned long int dword;
|
||||
|
||||
#ifndef boolean
|
||||
typedef char boolean;
|
||||
#endif
|
||||
|
||||
#define vLib_LeWrite8(x,y) *(volatile INT8U *)((INT8U * )x)=(y)
|
||||
#define vLib_LeWrite32(x,y) *(volatile INT32U *)((INT8U * )x)=(y) //bessel:add (INT8U * )
|
||||
#define u32lib_leread32(x) *((volatile INT32U *)((INT8U * )x)) //bessel:add (INT8U * )
|
||||
#define u32Lib_LeRead32(x) *((volatile INT32U *)((INT8U * )x)) //bessel:add (INT8U * )
|
||||
|
||||
#endif //TYPES_H
|
||||
34
include/common/utils.h
Normal file
34
include/common/utils.h
Normal file
@ -0,0 +1,34 @@
|
||||
#ifndef UTILS_H
|
||||
#define UTILS_H
|
||||
|
||||
#define MIN(a,b) (((a)<(b))?(a):(b))
|
||||
#define MAX(a,b) (((a)>(b))?(a):(b))
|
||||
#define ABS(a) (((a)>=0)?(a):(-(a)))
|
||||
#define FLOOR(val) ((int)(val) - ((int)(val) > val))
|
||||
#define ROUND(x) ((x)>=0?(int)((x)+0.5):(int)((x)-0.5))
|
||||
|
||||
/* Exported macro ------------------------------------------------------------*/
|
||||
#ifdef USE_FULL_ASSERT
|
||||
|
||||
/**
|
||||
* @brief The assert_param macro is used for function's parameters check.
|
||||
* @param expr: If expr is false, it calls assert_failed function
|
||||
* which reports the name of the source file and the source
|
||||
* line number of the call that failed.
|
||||
* If expr is true, it returns no value.
|
||||
* @retval None
|
||||
*/
|
||||
#define assert_param(expr) ((expr) ? (void)0 : assert_failed((uint8_t *)__FILE__, __LINE__))
|
||||
/* Exported functions ------------------------------------------------------- */
|
||||
void assert_failed(uint8_t* file, uint32_t line);
|
||||
#else
|
||||
#define assert_param(expr) ((void)0)
|
||||
#endif /* USE_FULL_ASSERT */
|
||||
|
||||
int constrain_int(int a, int min, int max);
|
||||
float max_item_f(float* arr, int size);
|
||||
float find_median_positive_short(short int *input, int size);
|
||||
short find_min_positive_n(short* input, int size);
|
||||
|
||||
#endif
|
||||
|
||||
12
include/fake/MemBroker/mem_broker.h
Normal file
12
include/fake/MemBroker/mem_broker.h
Normal file
@ -0,0 +1,12 @@
|
||||
#ifndef MEM_BROKER_H
|
||||
#define MEM_BROKER_H
|
||||
#include <stdint.h>
|
||||
void *MemBroker_GetMemory(uint32_t size, uint32_t align);
|
||||
void MemBroker_FreeMemory(void *ptr);
|
||||
void MemBroker_Init(void);
|
||||
void MemBroker_Deinit(void);
|
||||
void *MemBroker_GetPhysAddr(void *virt_addr);
|
||||
void MemBroker_CacheInvalidate(void *addr, uint32_t size);
|
||||
void MemBroker_CacheCopyBack(void *addr, uint32_t size);
|
||||
void MemBroker_CacheFlush(void *addr, uint32_t size);
|
||||
#endif
|
||||
36
include/fake/MsgBroker/msg_broker.h
Normal file
36
include/fake/MsgBroker/msg_broker.h
Normal file
@ -0,0 +1,36 @@
|
||||
#ifndef MSG_BROKER_H
|
||||
#define MSG_BROKER_H
|
||||
#include <stdint.h>
|
||||
|
||||
typedef struct MsgBroker_Handle_S MsgBroker_Handle_T;
|
||||
|
||||
/* Message callback context — all fields accessed in kdp2_host_stream.c msg_callback */
|
||||
typedef struct {
|
||||
uint32_t msg_type;
|
||||
void *data;
|
||||
uint32_t size;
|
||||
char *pszHost; /* target module name */
|
||||
char *pszCmd; /* command string */
|
||||
void *pbyData; /* command payload */
|
||||
uint32_t bHasResponse;
|
||||
uint32_t dwDataSize;
|
||||
uint32_t _pad[4];
|
||||
} MsgContext;
|
||||
|
||||
/* System runtime suspend/resume command strings */
|
||||
#define SR_MODULE_NAME "sr"
|
||||
#define SUSPEND_CMD "suspend"
|
||||
#define RESUME_CMD "resume"
|
||||
|
||||
int MsgBroker_Init(void);
|
||||
int MsgBroker_Deinit(void);
|
||||
int MsgBroker_Send(const char *topic, void *data, uint32_t size);
|
||||
int MsgBroker_Recv(const char *topic, void *data, uint32_t size, int timeout_ms);
|
||||
int MsgBroker_RegisterMsg(const char *topic);
|
||||
int MsgBroker_UnRegisterMsg(void);
|
||||
int MsgBroker_Run(const char *topic,
|
||||
void (*callback)(MsgContext *ctx, void *user),
|
||||
void *user_data,
|
||||
int *terminate);
|
||||
int MsgBroker_SuspendAckMsg(void);
|
||||
#endif
|
||||
5
include/fake/comm/video_buf.h
Normal file
5
include/fake/comm/video_buf.h
Normal file
@ -0,0 +1,5 @@
|
||||
#ifndef COMM_VIDEO_BUF_H
|
||||
#define COMM_VIDEO_BUF_H
|
||||
#include <stdint.h>
|
||||
typedef struct { uint32_t phy_addr; uint32_t virt_addr; uint32_t size; } VideoBuf_T;
|
||||
#endif
|
||||
12
include/fake/comm/vmf_log.h
Normal file
12
include/fake/comm/vmf_log.h
Normal file
@ -0,0 +1,12 @@
|
||||
#ifndef COMM_VMF_LOG_H
|
||||
#define COMM_VMF_LOG_H
|
||||
|
||||
#include <stdio.h>
|
||||
|
||||
/* VMF logging stub - maps to standard printf */
|
||||
#define VMF_LOG_ERR(fmt, ...) fprintf(stderr, "[ERR] " fmt "\n", ##__VA_ARGS__)
|
||||
#define VMF_LOG_WARN(fmt, ...) fprintf(stderr, "[WRN] " fmt "\n", ##__VA_ARGS__)
|
||||
#define VMF_LOG_INFO(fmt, ...) printf("[INF] " fmt "\n", ##__VA_ARGS__)
|
||||
#define VMF_LOG_DBG(fmt, ...) do {} while(0)
|
||||
|
||||
#endif /* COMM_VMF_LOG_H */
|
||||
29
include/fake/iniparser/iniparser.h
Normal file
29
include/fake/iniparser/iniparser.h
Normal file
@ -0,0 +1,29 @@
|
||||
#ifndef INIPARSER_H
|
||||
#define INIPARSER_H
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
/* Opaque dictionary handle (matches libiniparser ABI) */
|
||||
typedef struct _dictionary_ {
|
||||
int n;
|
||||
int size;
|
||||
char **val;
|
||||
char **key;
|
||||
unsigned *hash;
|
||||
} dictionary;
|
||||
|
||||
dictionary * iniparser_load(const char *ininame);
|
||||
void iniparser_freedict(dictionary *d);
|
||||
int iniparser_getint(dictionary *d, const char *key, int notfound);
|
||||
double iniparser_getdouble(dictionary *d, const char *key, double notfound);
|
||||
const char * iniparser_getstring(dictionary *d, const char *key, const char *def);
|
||||
int iniparser_getboolean(dictionary *d, const char *key, int notfound);
|
||||
int iniparser_find_entry(dictionary *d, const char *entry);
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif /* INIPARSER_H */
|
||||
195
include/fake/vmf/fec_layout.h
Normal file
195
include/fake/vmf/fec_layout.h
Normal file
@ -0,0 +1,195 @@
|
||||
#ifndef VMF_FEC_LAYOUT_H
|
||||
#define VMF_FEC_LAYOUT_H
|
||||
|
||||
#include <stdint.h>
|
||||
#include <vmf/video_source.h>
|
||||
|
||||
/* Opaque FEC handle */
|
||||
typedef struct VMF_FEC_HANDLE_S VMF_FEC_HANDLE_T;
|
||||
typedef struct VMF_FEC_INFO_S VMF_FEC_INFO_T;
|
||||
|
||||
/* FEC processing method */
|
||||
typedef enum {
|
||||
VMF_FEC_METHOD_GTR = 0,
|
||||
VMF_FEC_METHOD_CGE,
|
||||
VMF_FEC_METHOD_MAX
|
||||
} VMF_FEC_METHOD;
|
||||
|
||||
/* FEC grid size (real values match SDK: 4/8/16/32) */
|
||||
typedef enum {
|
||||
VMF_FEC_GRID_4X4 = 4,
|
||||
VMF_FEC_GRID_8X8 = 8,
|
||||
VMF_FEC_GRID_16X16 = 16,
|
||||
VMF_FEC_GRID_32X32 = 32,
|
||||
VMF_FEC_GRID_64X64 = 64,
|
||||
VMF_FEC_GRID_128X128= 128,
|
||||
} VMF_FEC_GRID_SIZE_TYPE;
|
||||
typedef VMF_FEC_GRID_SIZE_TYPE VMF_FEC_GRID_SIZE_E;
|
||||
|
||||
/* FEC coefficient mode */
|
||||
typedef enum {
|
||||
VMF_FEC_COEF_MODE_ORIG = 0,
|
||||
VMF_FEC_COEF_MODE_AREA,
|
||||
VMF_FEC_COEF_MODE_PTZ,
|
||||
VMF_FEC_COEF_MODE_P360,
|
||||
VMF_FEC_COEF_MODE_P180,
|
||||
VMF_FEC_COEF_MODE_VR,
|
||||
VMF_FEC_COEF_MODE_OBJ,
|
||||
VMF_FEC_COEF_MODE_DUAL,
|
||||
VMF_FEC_COEF_MODE_PT,
|
||||
VMF_FEC_COEF_MODE_NULL,
|
||||
VMF_FEC_COEF_MODE_NUM
|
||||
} VMF_FEC_COEF_MODE;
|
||||
|
||||
/* FEC mode type (used by P180 / PTZ config structs) */
|
||||
typedef enum {
|
||||
VMF_FEC_MODE_AREA = 0,
|
||||
VMF_FEC_MODE_PTZ_MODE,
|
||||
VMF_FEC_MODE_PANO_180_ALL_DIRECTION,
|
||||
VMF_FEC_MODE_PANO_180_ONE_DIRECTION,
|
||||
VMF_FEC_MODE_PANO_180_TWO_DIRECTION,
|
||||
VMF_FEC_MODE_PANO_360_FULL,
|
||||
VMF_FEC_MODE_PANO_360_SEPE,
|
||||
VMF_FEC_MODE_PANO_360_HALF,
|
||||
VMF_FEC_MODE_LDC,
|
||||
VMF_FEC_MODE_ORI,
|
||||
VMF_FEC_MODE_VR_SPHERE,
|
||||
VMF_FEC_MODE_VR_CYLINDER,
|
||||
VMF_FEC_MODE_OBJECT,
|
||||
VMF_FEC_MODE_PT = 14
|
||||
} VMF_FEC_MODE_TYPE;
|
||||
|
||||
/* FEC app type */
|
||||
typedef enum {
|
||||
VMF_FEC_APP_CEILING = 0,
|
||||
VMF_FEC_APP_TABLE = 1,
|
||||
VMF_FEC_APP_WALL = 2,
|
||||
VMF_FEC_APP_LDC,
|
||||
VMF_FEC_APP_P720,
|
||||
VMF_FEC_APP_DVS,
|
||||
VMF_FEC_APP_CGE
|
||||
} VMF_FEC_APP_TYPE;
|
||||
typedef VMF_FEC_APP_TYPE VMF_FEC_APP_TYPE_E;
|
||||
|
||||
/* FEC lens type */
|
||||
typedef enum {
|
||||
VMF_FEC_LENS_STEREOGRAPHIC = 0,
|
||||
VMF_FEC_LENS_EQUISOLIDANGLE,
|
||||
VMF_FEC_LENS_EQUIDISTANT,
|
||||
VMF_FEC_LENS_ORTHOGRAPHIC,
|
||||
VMF_FEC_LENS_LDC,
|
||||
VMF_FEC_LENS_NODISTORT,
|
||||
VMF_FEC_LENS_USER_DEF
|
||||
} VMF_FEC_LENS_TYPE;
|
||||
|
||||
/* Extra perspective-transform points (mirrors Extra_PT in fec_api.h) */
|
||||
typedef struct {
|
||||
unsigned int bExtraPtEn;
|
||||
unsigned int dwX[4];
|
||||
unsigned int dwY[4];
|
||||
} VMF_FEC_EXTRA_PT_T;
|
||||
|
||||
/* Encoder specification */
|
||||
typedef struct {
|
||||
unsigned int bEncH264;
|
||||
unsigned int bEncH265;
|
||||
unsigned int bEncJPEG;
|
||||
unsigned int bOthers;
|
||||
} VMF_ENC_SPEC_T;
|
||||
|
||||
/* FEC layout config — full field layout from SDK fec_layout.h */
|
||||
typedef struct {
|
||||
unsigned int dwOutputId;
|
||||
VMF_LAYOUT_T tLayout;
|
||||
unsigned int bCoeffOnly;
|
||||
VMF_FEC_GRID_SIZE_E eGridSize;
|
||||
unsigned int dwClearBackColor;
|
||||
VMF_FEC_METHOD eLayoutMethod;
|
||||
VMF_ENC_SPEC_T tEncSpec;
|
||||
unsigned int bDuplexMode;
|
||||
unsigned int bEisMode;
|
||||
} VMF_FEC_LYT_CONFIG_T;
|
||||
|
||||
/* FEC cell config — full field layout from SDK fec_layout.h */
|
||||
typedef struct {
|
||||
VMF_FEC_COEF_MODE eFecMode;
|
||||
void *pFecConfig;
|
||||
unsigned int dwFlag;
|
||||
unsigned int dwIspLinePixels;
|
||||
unsigned int bEisMode;
|
||||
} VMF_FEC_CELL_CONFIG_T;
|
||||
|
||||
/* FEC original (passthrough) config */
|
||||
typedef struct {
|
||||
float fZoom;
|
||||
float fDstOffsetX;
|
||||
float fDstOffsetY;
|
||||
float fDstXYRatio;
|
||||
VMF_FEC_APP_TYPE eAppType;
|
||||
void *ptRoi;
|
||||
unsigned int dwOutRadius;
|
||||
unsigned int eFECRotateType;
|
||||
VMF_FEC_EXTRA_PT_T tExtraPt;
|
||||
unsigned int dwSrcRadius;
|
||||
} VMF_FEC_ORIG_CONFIG_T;
|
||||
|
||||
/* FEC PTZ (pan-tilt-zoom) config */
|
||||
typedef struct {
|
||||
float fPan;
|
||||
float fTilt;
|
||||
float fZoom;
|
||||
float fFocalLength;
|
||||
VMF_FEC_APP_TYPE eAppType;
|
||||
VMF_FEC_MODE_TYPE eModeType;
|
||||
VMF_FEC_LENS_TYPE eLensType;
|
||||
void *ptRoi;
|
||||
unsigned int dwOutRadius;
|
||||
float fDstOffsetX;
|
||||
float fDstOffsetY;
|
||||
VMF_FEC_EXTRA_PT_T tExtraPt;
|
||||
float fDstRotate;
|
||||
unsigned int eFECRotateType;
|
||||
} VMF_FEC_PTZ_CONFIG_T;
|
||||
|
||||
/* FEC panorama-180 config */
|
||||
typedef struct {
|
||||
float fTilt;
|
||||
float fZoom;
|
||||
float fSpin;
|
||||
float fFocalLength;
|
||||
float fRectCurvature;
|
||||
float fRectSlope;
|
||||
float fDstOffsetX;
|
||||
float fDstOffsetY;
|
||||
float fDstXYRatio;
|
||||
unsigned int eFECRotateType;
|
||||
VMF_FEC_MODE_TYPE eModeType;
|
||||
VMF_FEC_LENS_TYPE eLensType;
|
||||
void *ptRoi;
|
||||
unsigned int dwOutRadius;
|
||||
unsigned int dwOptionFlags;
|
||||
VMF_FEC_EXTRA_PT_T tExtraPt;
|
||||
} VMF_FEC_P180_CONFIG_T;
|
||||
|
||||
/* FEC projection-transform (PT) config */
|
||||
typedef struct {
|
||||
void *pCoeffData;
|
||||
unsigned int dwCoeffDataSize;
|
||||
void *pComplexCoeffData;
|
||||
unsigned int dwComplexCoeffDataSize;
|
||||
void *pMrfCoeffData;
|
||||
unsigned int dwMrfCoeffDataSize;
|
||||
} VMF_FEC_PT_CONFIG_T;
|
||||
|
||||
/* FEC APIs (real implementations are in libvmf.so on device) */
|
||||
int VMF_FEC_Open(VMF_FEC_HANDLE_T **handle, const char *cal_path, const char *conf_path);
|
||||
int VMF_FEC_Close(VMF_FEC_HANDLE_T *handle);
|
||||
int VMF_FEC_SetMode(VMF_FEC_HANDLE_T *handle, unsigned int mode, unsigned int app_type);
|
||||
int VMF_FEC_LYT_Single(VMF_VSRC_HANDLE_T *vsrc, VMF_FEC_LYT_CONFIG_T *lyt, VMF_FEC_CELL_CONFIG_T *cell);
|
||||
int VMF_FEC_LYT_Single_Ext(VMF_VSRC_HANDLE_T *vsrc, VMF_FEC_LYT_CONFIG_T *lyt, VMF_FEC_CELL_CONFIG_T *cell,
|
||||
unsigned int adwRectangles[2], unsigned int adwOffsets[2]);
|
||||
|
||||
VMF_FEC_INFO_T *VMF_LYT_FEC_Info_Init(VMF_VSRC_HANDLE_T *vsrc, VMF_FEC_LYT_CONFIG_T *lyt, VMF_FEC_CELL_CONFIG_T *cell);
|
||||
int VMF_LYT_FEC_Info_Release(VMF_FEC_INFO_T *info);
|
||||
|
||||
#endif /* VMF_FEC_LAYOUT_H */
|
||||
5
include/fake/vmf/gyro_daemon.h
Normal file
5
include/fake/vmf/gyro_daemon.h
Normal file
@ -0,0 +1,5 @@
|
||||
#ifndef VMF_GYRO_DAEMON_H
|
||||
#define VMF_GYRO_DAEMON_H
|
||||
int VMF_GYRO_Init(void);
|
||||
int VMF_GYRO_Deinit(void);
|
||||
#endif
|
||||
19
include/fake/vmf/ssm_info.h
Normal file
19
include/fake/vmf/ssm_info.h
Normal file
@ -0,0 +1,19 @@
|
||||
#ifndef VMF_SSM_INFO_H
|
||||
#define VMF_SSM_INFO_H
|
||||
#include <stdint.h>
|
||||
/* Video source shared memory output info - fields accessed by app code */
|
||||
typedef struct {
|
||||
uint32_t dwWidth;
|
||||
uint32_t dwHeight;
|
||||
uint32_t dwStride;
|
||||
uint32_t dwYStride;
|
||||
uint32_t dwFormat;
|
||||
uint32_t dwType;
|
||||
uint32_t dwSize;
|
||||
uint32_t dwYSize;
|
||||
uint32_t dwUVSize;
|
||||
uint32_t dwOffset[3];
|
||||
uint32_t dwPhyAddr;
|
||||
uint32_t dwReserved[4];
|
||||
} VMF_VSRC_SSM_OUTPUT_INFO_T;
|
||||
#endif
|
||||
75
include/fake/vmf/sync_shared_memory.h
Normal file
75
include/fake/vmf/sync_shared_memory.h
Normal file
@ -0,0 +1,75 @@
|
||||
#ifndef VMF_SYNC_SHARED_MEMORY_H
|
||||
#define VMF_SYNC_SHARED_MEMORY_H
|
||||
|
||||
#include <stdint.h>
|
||||
|
||||
/* VMF SSM (Sync Shared Memory) — opaque handle */
|
||||
typedef struct VMF_SSM_HANDLE_S VMF_SSM_HANDLE_T;
|
||||
|
||||
/* Legacy SSM reader/writer handle (lower-case) */
|
||||
typedef struct ssm_handle_s ssm_handle_t;
|
||||
|
||||
/* Uppercase alias used in kdp2_host_stream.c */
|
||||
typedef ssm_handle_t SSM_HANDLE_T;
|
||||
|
||||
/* SSM buffer descriptor */
|
||||
typedef struct {
|
||||
void *buffer;
|
||||
unsigned char *buffer_phys_addr;
|
||||
uint32_t buf_size;
|
||||
uint32_t _pad[4];
|
||||
} SSM_BUFFER_T;
|
||||
|
||||
/* SSM writer init options */
|
||||
typedef struct {
|
||||
const char *name;
|
||||
uint32_t buf_size;
|
||||
uint32_t alignment;
|
||||
uint32_t pshared;
|
||||
void *pUserData;
|
||||
void (*fp_setup_buffer)(unsigned char *buf, uint32_t size, void *pUserData);
|
||||
uint32_t _pad[4];
|
||||
} SSM_WRITER_INIT_OPTION_T;
|
||||
|
||||
/* VMF frame info (opaque stub) */
|
||||
typedef struct {
|
||||
uint32_t _pad[32];
|
||||
} VMF_FRAME_INFO_T;
|
||||
|
||||
/* Lowercase alias for SSM_BUFFER_T used in kdp2_host_stream.c */
|
||||
typedef SSM_BUFFER_T ssm_buffer_t;
|
||||
|
||||
/* SSM reader image scheme */
|
||||
typedef enum {
|
||||
VMF_SSM_READER_SCHEME_BLOCK = 0,
|
||||
VMF_SSM_READER_SCHEME_NONBLOCK = 1,
|
||||
} VMF_SSM_READER_SCHEME;
|
||||
|
||||
/* SSM header size */
|
||||
#define VMF_MAX_SSM_HEADER_SIZE 128u
|
||||
|
||||
int VMF_SSM_Open(VMF_SSM_HANDLE_T **handle, const char *name, uint32_t size);
|
||||
int VMF_SSM_Close(VMF_SSM_HANDLE_T *handle);
|
||||
|
||||
/* SSM reader API */
|
||||
ssm_handle_t *SSM_Reader_Init(const char *name, int mode);
|
||||
int SSM_Reader_Open(ssm_handle_t **handle, const char *name);
|
||||
int SSM_Reader_Close(ssm_handle_t *handle);
|
||||
int SSM_Reader_GetBuf(ssm_handle_t *handle, void **buf, uint32_t *size, int timeout_ms);
|
||||
int SSM_Reader_ReleaseBuf(ssm_handle_t *handle, void *buf);
|
||||
void SSM_Reader_Wakeup(ssm_handle_t *handle);
|
||||
int SSM_Reader_ReturnReceiveBuff(ssm_handle_t *handle, SSM_BUFFER_T *buf);
|
||||
int SSM_Reader_ReturnBuff(ssm_handle_t *handle, SSM_BUFFER_T *buf);
|
||||
|
||||
/* SSM writer API */
|
||||
ssm_handle_t *SSM_Writer_Init(SSM_WRITER_INIT_OPTION_T *opt);
|
||||
int SSM_Writer_SendGetBuff(ssm_handle_t *handle, SSM_BUFFER_T *buf);
|
||||
int SSM_Release(ssm_handle_t *handle);
|
||||
|
||||
/* VSRC SSM info helpers */
|
||||
void VMF_VSRC_SSM_GetInfo(void *buf, void *info);
|
||||
void VMF_VSRC_SSM_SetInfo(void *buf, void *info);
|
||||
|
||||
int SSM_Reader_ReturnReceiveNewestBuff(ssm_handle_t *handle, SSM_BUFFER_T *buf, VMF_SSM_READER_SCHEME scheme);
|
||||
|
||||
#endif /* VMF_SYNC_SHARED_MEMORY_H */
|
||||
52
include/fake/vmf/vector_dma.h
Normal file
52
include/fake/vmf/vector_dma.h
Normal file
@ -0,0 +1,52 @@
|
||||
#ifndef VMF_VECTOR_DMA_H
|
||||
#define VMF_VECTOR_DMA_H
|
||||
|
||||
#include <stdint.h>
|
||||
|
||||
/* Opaque DMA handles */
|
||||
typedef struct VMF_DMA_HANDLE_S VMF_DMA_HANDLE_T;
|
||||
typedef struct VMF_DMA_DESCRIPTOR_S VMF_DMA_DESCRIPTOR_T;
|
||||
|
||||
/* MemBroker alignment type enum: ALIGN_TYPE_32_BYTE = 5 (not the byte value) */
|
||||
#define VMF_ALIGN_TYPE_DEFAULT 5u
|
||||
|
||||
/* DMA descriptor type enum */
|
||||
typedef enum {
|
||||
DMA_1D = 0,
|
||||
DMA_2D = 1,
|
||||
} VMF_DMA_TYPE_E;
|
||||
|
||||
/* 2D copy filter init struct */
|
||||
typedef struct {
|
||||
uint32_t dwProcessCbCr; /* 1 = process chroma plane */
|
||||
uint32_t dwSrcFormatFlag; /* source pixel format flag */
|
||||
uint32_t dwReserved[6];
|
||||
} VMF_DMA_2DCF_INIT_T;
|
||||
|
||||
/* DMA address / copy parameters */
|
||||
typedef struct {
|
||||
uint32_t dwCopyWidth;
|
||||
uint32_t dwCopyHeight;
|
||||
unsigned char *pbySrcYPhysAddr;
|
||||
unsigned char *pbySrcCbPhysAddr;
|
||||
unsigned char *pbySrcCrPhysAddr;
|
||||
unsigned char *pbyDstYPhysAddr;
|
||||
unsigned char *pbyDstCbPhysAddr;
|
||||
unsigned char *pbyDstCrPhysAddr;
|
||||
uint32_t dwSrcStride;
|
||||
uint32_t dwDstStride;
|
||||
uint32_t _pad[4];
|
||||
} VMF_DMA_ADDR_T;
|
||||
|
||||
/* DMA API */
|
||||
VMF_DMA_HANDLE_T *VMF_DMA_Init(uint32_t ch_id, uint32_t queue_depth);
|
||||
void VMF_DMA_Release(VMF_DMA_HANDLE_T *handle);
|
||||
VMF_DMA_DESCRIPTOR_T *VMF_DMA_Descriptor_Create(VMF_DMA_TYPE_E type, void *init_param);
|
||||
void VMF_DMA_Descriptor_Destroy(VMF_DMA_DESCRIPTOR_T *desc);
|
||||
int VMF_DMA_Copy(VMF_DMA_HANDLE_T *handle, VMF_DMA_DESCRIPTOR_T *desc,
|
||||
void *dst, void *src, uint32_t size);
|
||||
int VMF_DMA_Descriptor_Update_Addr(VMF_DMA_DESCRIPTOR_T *desc, VMF_DMA_ADDR_T *addr);
|
||||
int VMF_DMA_Setup(VMF_DMA_HANDLE_T *handle, VMF_DMA_DESCRIPTOR_T **descs, uint32_t count);
|
||||
int VMF_DMA_Process(VMF_DMA_HANDLE_T *handle);
|
||||
|
||||
#endif /* VMF_VECTOR_DMA_H */
|
||||
51
include/fake/vmf/video_bind.h
Normal file
51
include/fake/vmf/video_bind.h
Normal file
@ -0,0 +1,51 @@
|
||||
#ifndef VMF_VIDEO_BIND_H
|
||||
#define VMF_VIDEO_BIND_H
|
||||
|
||||
#include <stdint.h>
|
||||
|
||||
/* Opaque bind context */
|
||||
typedef struct VMF_BIND_CONTEXT_S VMF_BIND_CONTEXT_T;
|
||||
typedef struct VMF_VBIND_HANDLE_S VMF_VBIND_HANDLE_T;
|
||||
|
||||
/*
|
||||
* Source connection info — fields accessed by Custom_Roi_BIND_Request /
|
||||
* Custom_Main_BIND_Request in kdp2_host_stream.c
|
||||
*/
|
||||
typedef struct {
|
||||
uint32_t bConnectIfp;
|
||||
uint32_t bDisableSharedOsd;
|
||||
uint32_t bIsSsmShared;
|
||||
uint32_t bUnregister;
|
||||
uint32_t bUseResizedSrc;
|
||||
uint32_t dwCodecType;
|
||||
uint32_t dwDataType;
|
||||
uint32_t dwSrcWidth;
|
||||
uint32_t dwSrcHeight;
|
||||
uint32_t dwSrcYStride;
|
||||
uint32_t dwSrcUVStride;
|
||||
char szSrcPin[64];
|
||||
uint32_t _pad[8];
|
||||
} VMF_SRC_CONNECT_INFO_T;
|
||||
|
||||
/* Function pointer types */
|
||||
typedef void (*VMF_SRC_CONNECT_FUNC)(VMF_SRC_CONNECT_INFO_T *info, uint32_t w, uint32_t h);
|
||||
typedef void *(*VMF_BIND_QUERY_FUNC)(void *handle, uint32_t idx, void *info);
|
||||
typedef int (*VMF_BIND_CONFIG_ISP_FUNC)(void *handle, int stream, int layer, int isp, void *opt);
|
||||
|
||||
/* Bind init options */
|
||||
typedef struct {
|
||||
uint32_t dwSrcOutputIndex;
|
||||
void *ptSrcHandle;
|
||||
VMF_BIND_QUERY_FUNC pfnQueryFunc;
|
||||
VMF_BIND_CONFIG_ISP_FUNC pfnIspFunc;
|
||||
uint32_t _pad[8];
|
||||
} VMF_BIND_INITOPT_T;
|
||||
|
||||
VMF_BIND_CONTEXT_T *VMF_BIND_Init(VMF_BIND_INITOPT_T *opt);
|
||||
void VMF_BIND_Release(VMF_BIND_CONTEXT_T *pBind);
|
||||
int VMF_BIND_Request(VMF_BIND_CONTEXT_T *bind, uint32_t w, uint32_t h, uint32_t stride, int mode, VMF_SRC_CONNECT_INFO_T *info);
|
||||
|
||||
int VMF_VBIND_Bind(void *src, void *dst);
|
||||
int VMF_VBIND_Unbind(void *src, void *dst);
|
||||
|
||||
#endif /* VMF_VIDEO_BIND_H */
|
||||
42
include/fake/vmf/video_display_mechanism.h
Normal file
42
include/fake/vmf/video_display_mechanism.h
Normal file
@ -0,0 +1,42 @@
|
||||
#ifndef VMF_VIDEO_DISPLAY_H
|
||||
#define VMF_VIDEO_DISPLAY_H
|
||||
|
||||
#include <stdint.h>
|
||||
|
||||
typedef struct VMF_VDISP_HANDLE_S VMF_VDISP_HANDLE_T;
|
||||
|
||||
#define VMF_VIDEO_DISPLAY_MIN_QUEUE_SIZE 3
|
||||
|
||||
/* Frame buffer descriptor (apdwData[0] = Y plane virtual address) */
|
||||
typedef struct {
|
||||
void *apdwData[4];
|
||||
uint32_t _pad[8];
|
||||
} VMF_FRAME_BUF_T;
|
||||
|
||||
/* Display init options — fields accessed by set_video_data() in kdp2_host_stream.c */
|
||||
typedef struct {
|
||||
uint32_t dwInPixFormat;
|
||||
uint32_t dwMaxInWidth;
|
||||
uint32_t dwMaxInHeight;
|
||||
uint32_t _pad[61];
|
||||
} VMF_VDISP_INITOPT_T;
|
||||
|
||||
VMF_VDISP_HANDLE_T *VMF_VDISP_Init(VMF_VDISP_INITOPT_T *opt);
|
||||
int VMF_VDISP_Open(VMF_VDISP_HANDLE_T **handle, unsigned int w, unsigned int h);
|
||||
int VMF_VDISP_Close(VMF_VDISP_HANDLE_T *handle);
|
||||
void VMF_VDISP_SetEarlyInterrupt(VMF_VDISP_HANDLE_T *handle, uint32_t val);
|
||||
int VMF_VDISP_All_Setting_Reset(VMF_VDISP_HANDLE_T *handle);
|
||||
int VMF_VDISP_SetCompress(VMF_VDISP_HANDLE_T *handle, int enable);
|
||||
void VMF_VDISP_Stop(VMF_VDISP_HANDLE_T *handle);
|
||||
void VMF_VDISP_Release(VMF_VDISP_HANDLE_T *handle);
|
||||
int VMF_VDISP_ProcessOneFrame(VMF_VDISP_HANDLE_T *handle, VMF_FRAME_BUF_T *buf, uint32_t *q_idx);
|
||||
int VMF_VDISP_SetMirror(VMF_VDISP_HANDLE_T *handle, uint32_t enable);
|
||||
int VMF_VDISP_SetFlip(VMF_VDISP_HANDLE_T *handle, uint32_t enable);
|
||||
int VMF_VDISP_YUVOutput_SetContrast(VMF_VDISP_HANDLE_T *handle, int contrast);
|
||||
int VMF_VDISP_YUVOutput_GetContrast(VMF_VDISP_HANDLE_T *handle, int *contrast);
|
||||
int VMF_VDISP_YUVOutput_SetBrightness(VMF_VDISP_HANDLE_T *handle, int brightness);
|
||||
int VMF_VDISP_YUVOutput_GetBrightness(VMF_VDISP_HANDLE_T *handle, int *brightness);
|
||||
int VMF_VDISP_YUVOutput_SetSaturation(VMF_VDISP_HANDLE_T *handle, uint32_t saturation);
|
||||
int VMF_VDISP_YUVOutput_GetSaturation(VMF_VDISP_HANDLE_T *handle, uint32_t *saturation);
|
||||
|
||||
#endif /* VMF_VIDEO_DISPLAY_H */
|
||||
90
include/fake/vmf/video_encoder.h
Normal file
90
include/fake/vmf/video_encoder.h
Normal file
@ -0,0 +1,90 @@
|
||||
#ifndef VMF_VIDEO_ENCODER_H
|
||||
#define VMF_VIDEO_ENCODER_H
|
||||
|
||||
#include <stdint.h>
|
||||
#include <vmf/video_bind.h>
|
||||
|
||||
typedef struct VMF_VENC_HANDLE_S VMF_VENC_HANDLE_T;
|
||||
|
||||
typedef enum {
|
||||
VMF_VENC_CODEC_TYPE_H264 = 0,
|
||||
VMF_VENC_CODEC_TYPE_H265 = 1,
|
||||
VMF_VENC_CODEC_TYPE_MJPG = 2,
|
||||
} VMF_VENC_CODEC_TYPE;
|
||||
|
||||
typedef enum {
|
||||
VMF_H4E_PROFILE_HIGH = 0,
|
||||
VMF_H4E_PROFILE_MAIN = 1,
|
||||
VMF_H4E_PROFILE_BASE = 2,
|
||||
} VMF_H4E_PROFILE_E;
|
||||
|
||||
typedef enum {
|
||||
VMF_ADMODE_MEET_FPS = 0,
|
||||
VMF_ADMODE_CBR = 1,
|
||||
} VMF_ADMODE_E;
|
||||
|
||||
/* H.264 encoder config — positional init: dwQp,dwBitrate,dbFps,dwGop,eProfile,iSQS,eAdMode,dwMinQp,dwMaxQp,dwMinFps,dwVirtI,dwPIQ */
|
||||
typedef struct {
|
||||
uint32_t dwQp;
|
||||
uint32_t dwBitrate;
|
||||
double dbFps;
|
||||
uint32_t dwGop;
|
||||
VMF_H4E_PROFILE_E eProfile;
|
||||
int32_t iSliceQualityStrategy;
|
||||
VMF_ADMODE_E eAdMode;
|
||||
uint32_t dwMinQp;
|
||||
uint32_t dwMaxQp;
|
||||
uint32_t dwMinFps;
|
||||
uint32_t dwVirtIFrameInterval;
|
||||
uint32_t dwPIQ;
|
||||
} VMF_H4E_CONFIG_T;
|
||||
|
||||
/* H.265 encoder config — positional init: dwQp,dwBitrate,dwFps,dwGop,iSQS,dwMinQp,dwMaxQp,dwVirtI,dwPIQ,eAdMode,dwComplexMapCtrl */
|
||||
typedef struct {
|
||||
uint32_t dwQp;
|
||||
uint32_t dwBitrate;
|
||||
uint32_t dwFps;
|
||||
uint32_t dwGop;
|
||||
int32_t iSliceQualityStrategy;
|
||||
uint32_t dwMinQp;
|
||||
uint32_t dwMaxQp;
|
||||
uint32_t dwVirtIFrameInterval;
|
||||
uint32_t dwPIQ;
|
||||
VMF_ADMODE_E eAdMode;
|
||||
uint32_t dwComplexMapCtrl;
|
||||
} VMF_H5E_CONFIG_T;
|
||||
|
||||
/* MJPEG encoder config — positional init: dwQp,bEnableThumbnail,dwThumbnailQp,bJfifHdr,dwBitrate,dwFps */
|
||||
typedef struct {
|
||||
uint32_t dwQp;
|
||||
uint32_t bEnableThumbnail;
|
||||
uint32_t dwThumbnailQp;
|
||||
uint32_t bJfifHdr;
|
||||
uint32_t dwBitrate;
|
||||
uint32_t dwFps;
|
||||
} VMF_JE_CONFIG_T;
|
||||
|
||||
/* Video encoder config */
|
||||
typedef struct {
|
||||
uint32_t dwEncWidth;
|
||||
uint32_t dwEncHeight;
|
||||
uint32_t dwFps;
|
||||
uint32_t bConnectIfp;
|
||||
VMF_VENC_CODEC_TYPE eCodecType;
|
||||
void *pCodecConfig;
|
||||
void *pBind;
|
||||
VMF_SRC_CONNECT_FUNC fnSrcConnectFunc;
|
||||
uint32_t bKeepRatio;
|
||||
uint32_t _pad[8];
|
||||
} VMF_VENC_CONFIG_T;
|
||||
|
||||
VMF_VENC_HANDLE_T *VMF_VENC_Init(VMF_VENC_CONFIG_T *cfg);
|
||||
void VMF_VENC_Release(VMF_VENC_HANDLE_T *h);
|
||||
void VMF_VENC_ProduceStreamHdr(VMF_VENC_HANDLE_T *h);
|
||||
int VMF_VENC_Start(VMF_VENC_HANDLE_T *h);
|
||||
int VMF_VENC_Stop(VMF_VENC_HANDLE_T *h);
|
||||
int VMF_VENC_SetIntra(VMF_VENC_HANDLE_T *h);
|
||||
int VMF_VENC_Suspend(VMF_VENC_HANDLE_T *h);
|
||||
int VMF_VENC_Resume(VMF_VENC_HANDLE_T *h);
|
||||
|
||||
#endif /* VMF_VIDEO_ENCODER_H */
|
||||
21
include/fake/vmf/video_encoder_output_scm.h
Normal file
21
include/fake/vmf/video_encoder_output_scm.h
Normal file
@ -0,0 +1,21 @@
|
||||
#ifndef VMF_VENC_OUT_SCM_H
|
||||
#define VMF_VENC_OUT_SCM_H
|
||||
|
||||
#include <stdint.h>
|
||||
|
||||
typedef struct VMF_VENC_OUT_SCM_S VMF_VENC_OUT_SCM_T;
|
||||
|
||||
typedef struct {
|
||||
const char *szScmName;
|
||||
uint32_t dwChkSize;
|
||||
uint32_t dwBufSize;
|
||||
uint32_t bBlock;
|
||||
uint32_t bLimit;
|
||||
uint32_t _pad[4];
|
||||
} VMF_VENC_OUT_SCM_INITOPT_T;
|
||||
|
||||
int VMF_VENC_OUT_SCM_Init(VMF_VENC_OUT_SCM_T **pp, VMF_VENC_OUT_SCM_INITOPT_T *opt);
|
||||
void VMF_VENC_OUT_SCM_Release(VMF_VENC_OUT_SCM_T **pp);
|
||||
int VMF_VENC_OUT_SCM_Setup_Config(void *venc_cfg, int codec_type, void *codec_cfg, VMF_VENC_OUT_SCM_T *scm);
|
||||
|
||||
#endif /* VMF_VENC_OUT_SCM_H */
|
||||
19
include/fake/vmf/video_encoder_output_srb.h
Normal file
19
include/fake/vmf/video_encoder_output_srb.h
Normal file
@ -0,0 +1,19 @@
|
||||
#ifndef VMF_VENC_OUT_SRB_H
|
||||
#define VMF_VENC_OUT_SRB_H
|
||||
|
||||
#include <stdint.h>
|
||||
|
||||
typedef struct VMF_VENC_OUT_SRB_S VMF_VENC_OUT_SRB_T;
|
||||
|
||||
typedef struct {
|
||||
const char *pszSrbName;
|
||||
uint32_t dwSrbNum;
|
||||
uint32_t dwSrbSize;
|
||||
uint32_t _pad[4];
|
||||
} VMF_VENC_OUT_SRB_INITOPT_T;
|
||||
|
||||
int VMF_VENC_OUT_SRB_Init(VMF_VENC_OUT_SRB_T **pp, VMF_VENC_OUT_SRB_INITOPT_T *opt);
|
||||
void VMF_VENC_OUT_SRB_Release(VMF_VENC_OUT_SRB_T **pp);
|
||||
int VMF_VENC_OUT_SRB_Setup_Config(void *venc_cfg, int codec_type, void *codec_cfg, VMF_VENC_OUT_SRB_T *srb);
|
||||
|
||||
#endif /* VMF_VENC_OUT_SRB_H */
|
||||
203
include/fake/vmf/video_source.h
Normal file
203
include/fake/vmf/video_source.h
Normal file
@ -0,0 +1,203 @@
|
||||
#ifndef VMF_VIDEO_SOURCE_H
|
||||
#define VMF_VIDEO_SOURCE_H
|
||||
|
||||
#include <stdint.h>
|
||||
|
||||
typedef struct VMF_VSRC_HANDLE_S VMF_VSRC_HANDLE_T;
|
||||
typedef void (*VMF_VSRC_CALLBACK_T)(void *arg, void *buf_info);
|
||||
|
||||
/* Gyro daemon config — matches real SDK gyro_daemon.h (VMF_VSRC_GYRO_CONFIG_T) */
|
||||
typedef struct {
|
||||
unsigned long ulDeviceNum; /* device number (default: 1) */
|
||||
unsigned int dwSpeed; /* polling speed in fps (default: 30) */
|
||||
unsigned int dwFrequency; /* iio sample frequency (default: 200) */
|
||||
int sdwGyroFsr; /* gyro full-scale range; -1 = unchanged */
|
||||
int sdwAccelFsr; /* accel full-scale range; -1 = unchanged */
|
||||
unsigned int dwSampleCount; /* gyro buffer depth (default: 200) */
|
||||
char *pszPinName; /* SCM output pin name */
|
||||
} VMF_VSRC_GYRO_CONFIG_T;
|
||||
|
||||
/* EIS init config — all fields accessed by set_eis() in kdp2_host_stream.c */
|
||||
typedef struct {
|
||||
char *pszLensCurveNodesPath;
|
||||
char *pszLogPath;
|
||||
float fGyroDataGain;
|
||||
uint32_t dwGridSection;
|
||||
uint32_t dwMaxGridSection;
|
||||
float fCropRatio;
|
||||
uint32_t dwImageType;
|
||||
uint32_t dwProcessMode;
|
||||
uint32_t dwCoordinateTransform[3];
|
||||
int64_t sqwTimeOffset;
|
||||
uint32_t bImageRotate180;
|
||||
int32_t sdwReadoutTimeOffset;
|
||||
float fReadoutTimeRatio;
|
||||
uint32_t bForceOriRs;
|
||||
VMF_VSRC_GYRO_CONFIG_T tGyroConfig;
|
||||
uint32_t _pad[8];
|
||||
} VMF_EIS_INIT_T;
|
||||
|
||||
/* FEC init config — the REAL VMF_VSRC_FEC_INIT_CONFIG_T layout, deduced from fec_api.c
|
||||
* field access patterns. VMF_VSRC_Init reads up to afLensCurveNodeY[63], so the
|
||||
* struct must cover at least 536 bytes to prevent stack overread → SIGSEGV.
|
||||
*
|
||||
* Confirmed field order from loadCalibrateConfig / loadFECConfig in fec_api.c:
|
||||
* offset 0: eFecMethod (uint32_t) — VMF_FEC_METHOD
|
||||
* offset 4: ptEisInit (ptr) — EIS init (NULL if EIS disabled)
|
||||
* offset 8: iFecCenterOffsetX (int32_t)
|
||||
* offset 12: iFecCenterOffsetY (int32_t)
|
||||
* offset 16: iFecRadiusOffset (int32_t)
|
||||
* offset 20: dwLensCurveNodeNum (uint32_t) — 0 = no lens correction
|
||||
* offset 24: afLensCurveNodeX[64] (float[64], 256 bytes)
|
||||
* offset 280: afLensCurveNodeY[64] (float[64], 256 bytes)
|
||||
* offset 536: _pad[64] extra safety
|
||||
*/
|
||||
typedef struct {
|
||||
uint32_t eFecMethod; /* offset 0 */
|
||||
VMF_EIS_INIT_T *ptEisInit; /* offset 4 */
|
||||
int32_t iFecCenterOffsetX; /* offset 8 */
|
||||
int32_t iFecCenterOffsetY; /* offset 12 */
|
||||
int32_t iFecRadiusOffset; /* offset 16 */
|
||||
uint32_t dwLensCurveNodeNum; /* offset 20 — 0 = no correction */
|
||||
float afLensCurveNodeX[64]; /* offset 24 (256 bytes) */
|
||||
float afLensCurveNodeY[64]; /* offset 280 (256 bytes) */
|
||||
uint32_t _pad[64]; /* offset 536 (256 bytes extra safety) */
|
||||
} VMF_FEC_INIT_CONFIG_T; /* total: 792 bytes */
|
||||
|
||||
/* Alias used by the real fec_api.c */
|
||||
typedef VMF_FEC_INIT_CONFIG_T VMF_VSRC_FEC_INIT_CONFIG_T;
|
||||
|
||||
/* Frontend config — confirmed real layout from VSRC_Front_Init_Normal disasm (0x3ec08):
|
||||
* r8 = initopt[8] = ptFrontConfig
|
||||
* [r8, #0] = dwSensorConfigCount ← checked: if 0 → "sensor config should not be empty"
|
||||
* [r8, #4] = apszSensorConfig[0] ← loaded for sensor 0
|
||||
* [r8, #8] = apszSensorConfig[1] ← loaded for sensor 1 (fusion)
|
||||
* [r8, #12] = apszSensorConfig[2]
|
||||
* [r8, #16] = apszSensorConfig[3]
|
||||
* [r8, #20] = tFecInitConfig (eFecMethod, ptEisInit, ...) */
|
||||
typedef struct {
|
||||
uint32_t dwSensorConfigCount; /* offset 0 — MUST BE FIRST */
|
||||
const char *apszSensorConfig[4]; /* offset 4 (16 bytes) */
|
||||
VMF_FEC_INIT_CONFIG_T tFecInitConfig; /* offset 20 (792 bytes) */
|
||||
uint32_t _pad[8]; /* offset 812, extra safety */
|
||||
} VMF_VSRC_FRONTEND_CONFIG_T;
|
||||
|
||||
/*
|
||||
* VMF_LAYOUT_T — layout descriptor used for FEC and video positioning.
|
||||
*/
|
||||
typedef struct {
|
||||
uint32_t dwCanvasWidth;
|
||||
uint32_t dwCanvasHeight;
|
||||
uint32_t dwVideoPosX;
|
||||
uint32_t dwVideoPosY;
|
||||
uint32_t dwVideoWidth;
|
||||
uint32_t dwVideoHeight;
|
||||
uint32_t _pad[58];
|
||||
} VMF_LAYOUT_T;
|
||||
|
||||
/* ISP option flag */
|
||||
#define ISP_OPTION_PRIVACY_MASK_SETTINGS 1u
|
||||
|
||||
typedef struct {
|
||||
uint32_t option_flag;
|
||||
uint32_t adwData[4];
|
||||
uint32_t _pad[8];
|
||||
} VMF_ISP_OPTION_T;
|
||||
|
||||
typedef struct {
|
||||
uint32_t bEnable;
|
||||
uint8_t abyColorYUV[3];
|
||||
uint8_t _reserved1;
|
||||
uint32_t dwMaskStride;
|
||||
uint32_t bMainMaskDisable;
|
||||
uint32_t bResizeMaskDisable;
|
||||
unsigned char *pMaskBuffer;
|
||||
uint32_t _pad[4];
|
||||
} VMF_ISP_PM_CONFIG_T;
|
||||
|
||||
/* ISP mode enum */
|
||||
typedef enum {
|
||||
VMF_ISP_MODE_NORMAL = 0,
|
||||
VMF_ISP_MODE_FEC = 1,
|
||||
VMF_ISP_MODE_FEC_C = 2,
|
||||
VMF_ISP_MODE_EIS = 3,
|
||||
} VMF_ISP_MODE_E;
|
||||
|
||||
/* Encoder spec bits (nested in VMF_VSRC_SPEC_CONFIG_T.tIspEncSpec) */
|
||||
typedef struct {
|
||||
uint32_t bEncH265;
|
||||
uint32_t bEncH264;
|
||||
uint32_t bEncJPEG;
|
||||
uint32_t bOthers;
|
||||
} VMF_ISP_ENC_SPEC_T;
|
||||
|
||||
/* Spec config — fields accessed by setup_spec() in kdp2_host_stream.c.
|
||||
* Real size = 24 bytes (no padding): bEnableSpec(4)+dwIspMode(4)+tIspEncSpec(16).
|
||||
* Confirmed: fp[36]=bEnableSpec→handle[992], fp[40-47]=vld1.32(dwIspMode+tIspEncSpec[0])→handle[1012]. */
|
||||
typedef struct {
|
||||
uint32_t bEnableSpec;
|
||||
uint32_t dwIspMode; /* VMF_ISP_MODE_E */
|
||||
VMF_ISP_ENC_SPEC_T tIspEncSpec;
|
||||
/* NO padding — struct is 24 bytes; placed at initopt[36] per disasm */
|
||||
} VMF_VSRC_SPEC_CONFIG_T;
|
||||
|
||||
/* App mode enum */
|
||||
typedef enum {
|
||||
VMF_VSRC_APP_MODE_NORMAL = 0,
|
||||
VMF_VSRC_APP_MODE_FUSION = 1,
|
||||
} VMF_VSRC_APP_MODE_E;
|
||||
|
||||
/* Init callback type */
|
||||
typedef void (*VMF_VSRC_INIT_CALLBACK_T)(uint32_t width, uint32_t height);
|
||||
|
||||
/*
|
||||
* VMF_VSRC_INITOPT_T — confirmed offsets from libvmf.so disassembly:
|
||||
*
|
||||
* [r4,#0] = eAppMode — jump table 0-8 in sub_30a80; NORMAL=0, FUSION=1
|
||||
* [r4,#4] = dwFrontConfigCount — CHECKED: must be 1-2 (VMF_VSRC_Init@32080)
|
||||
* [r4,#8] = ptFrontConfig — CHECKED: must be non-NULL (VMF_VSRC_Init@3208c)
|
||||
* [r4,#12] = fnInitCallback — init-done callback (placed after ptFrontConfig)
|
||||
* [r4,#16] = _unk[5] — unknown fields (20 bytes)
|
||||
* [r4,#36] = tSpecConfig — bEnableSpec→handle[992], vld1.32[40-47]→handle[1012]
|
||||
* [r4,#60] = _unk2[5] — unknown (20 bytes, before pszAutoSceneConfig)
|
||||
* [r4,#80] = pszAutoSceneConfig — nullable string, conditional strdup→handle[204]
|
||||
* [r4,#84] = _unk3[11] — unknown (44 bytes)
|
||||
* [r4,#128] = bShared — CHECKED boolean→handle[212] (VMF_VSRC_Init sub_30a80@30ac4)
|
||||
* [r4,#132] = pszOutPinPrefix — CHECKED non-NULL; strncpy(9)→handle[188] (@30ae8)
|
||||
* [r4,#136] = _unk6 — unknown (4 bytes)
|
||||
* [r4,#140] = pszResourceDir — strdup→handle[200] (@30afc)
|
||||
* [r4,#144] = _unk7[10] — unknown tail fields
|
||||
*/
|
||||
typedef struct {
|
||||
VMF_VSRC_APP_MODE_E eAppMode; /* offset 0 */
|
||||
uint32_t dwFrontConfigCount; /* offset 4 */
|
||||
VMF_VSRC_FRONTEND_CONFIG_T *ptFrontConfig; /* offset 8 */
|
||||
VMF_VSRC_INIT_CALLBACK_T fnInitCallback; /* offset 12 */
|
||||
uint32_t _unk[5]; /* offset 16 (20 bytes) */
|
||||
VMF_VSRC_SPEC_CONFIG_T tSpecConfig; /* offset 36 (24 bytes) */
|
||||
uint32_t _unk2[5]; /* offset 60 (20 bytes) */
|
||||
const char *pszAutoSceneConfig; /* offset 80 */
|
||||
uint32_t _unk3[11]; /* offset 84 (44 bytes) */
|
||||
uint32_t bShared; /* offset 128 */
|
||||
const char *pszOutPinPrefix; /* offset 132 */
|
||||
uint32_t _unk6; /* offset 136 */
|
||||
const char *pszResourceDir; /* offset 140 */
|
||||
uint32_t _unk7[10]; /* offset 144 (40 bytes) */
|
||||
} VMF_VSRC_INITOPT_T;
|
||||
|
||||
VMF_VSRC_HANDLE_T *VMF_VSRC_Init(VMF_VSRC_INITOPT_T *initopt);
|
||||
void VMF_VSRC_Release(VMF_VSRC_HANDLE_T *hVsrc);
|
||||
int VMF_VSRC_Open(VMF_VSRC_HANDLE_T **handle, const char *cfg_path);
|
||||
int VMF_VSRC_Close(VMF_VSRC_HANDLE_T *handle);
|
||||
int VMF_VSRC_Start(VMF_VSRC_HANDLE_T *handle, void *arg);
|
||||
int VMF_VSRC_Stop(VMF_VSRC_HANDLE_T *handle);
|
||||
int VMF_VSRC_Suspend(VMF_VSRC_HANDLE_T *handle);
|
||||
int VMF_VSRC_Resume(VMF_VSRC_HANDLE_T *handle);
|
||||
int VMF_VSRC_SetFrontendConfig(VMF_VSRC_HANDLE_T *handle, VMF_VSRC_FRONTEND_CONFIG_T *cfg);
|
||||
int VMF_VSRC_ConfigISP(VMF_VSRC_HANDLE_T *h, int stream, int layer, int isp, VMF_ISP_OPTION_T *opt);
|
||||
void *VMF_VSRC_GetInfo(VMF_VSRC_HANDLE_T *h, uint32_t idx, void *info);
|
||||
|
||||
/* Pull in FEC method enum (VMF_FEC_METHOD_GTR etc.) — safe due to include guards */
|
||||
#include <vmf/fec_layout.h>
|
||||
|
||||
#endif /* VMF_VIDEO_SOURCE_H */
|
||||
39
include/fake/vmf_nnm_fifoq_manager.h
Normal file
39
include/fake/vmf_nnm_fifoq_manager.h
Normal file
@ -0,0 +1,39 @@
|
||||
#ifndef VMF_NNM_FIFOQ_MANAGER_H
|
||||
#define VMF_NNM_FIFOQ_MANAGER_H
|
||||
|
||||
#include <stdint.h>
|
||||
#include <stdbool.h>
|
||||
|
||||
/* Basic FIFO queue management */
|
||||
void VMF_NNM_Fifoq_Manager_Init(void);
|
||||
void VMF_NNM_Fifoq_Manager_Destroy(void);
|
||||
void VMF_NNM_Fifoq_Manager_Wakeup(void);
|
||||
void VMF_NNM_Fifoq_Manager_Suspend(void);
|
||||
void VMF_NNM_Fifoq_Manager_Resume(void);
|
||||
void VMF_NNM_Fifoq_Manager_Status_Code_Enqueue(unsigned int job_id, int status_code);
|
||||
bool VMF_NNM_Fifoq_Manager_Get_Fifoq_Allocated(void);
|
||||
|
||||
/* Image queue */
|
||||
int VMF_NNM_Fifoq_Manager_Image_Get_Free_Buffer(uint32_t *buf_addr, uint32_t *phy_addr, int *buf_size, int timeout_ms, bool droppable);
|
||||
int VMF_NNM_Fifoq_Manager_Image_Enqueue(uint32_t total, uint32_t index, uint32_t buf_addr, uint32_t phy_addr, int buf_size, int flags, bool is_last);
|
||||
int VMF_NNM_Fifoq_Manager_Image_Put_Free_Buffer(uint32_t buf_addr, uint32_t phy_addr, int buf_size, int flags);
|
||||
|
||||
/* Result queue */
|
||||
int VMF_NNM_Fifoq_Manager_Result_Get_Free_Buffer(uint32_t *buf_addr, uint32_t *phy_addr, int *buf_size, int timeout_ms);
|
||||
int VMF_NNM_Fifoq_Manager_Result_Enqueue(uint32_t buf_addr, uint32_t phy_addr, int buf_size, int timeout_ms, bool is_last);
|
||||
int VMF_NNM_Fifoq_Manager_Result_Dequeue(uint32_t *buf_addr, uint32_t *phy_addr, int *buf_size, int timeout_ms);
|
||||
int VMF_NNM_Fifoq_Manager_Result_Put_Free_Buffer(uint32_t buf_addr, uint32_t phy_addr, int buf_size, int flags);
|
||||
|
||||
/* Buffer allocation / release */
|
||||
int VMF_NNM_Fifoq_Manager_Allocate_Buffer(int img_buf_count, int img_buf_size, int res_buf_count, int res_buf_size);
|
||||
void VMF_NNM_Fifoq_Manager_Release_All_Buffer(void);
|
||||
|
||||
/* Thread entry points (used with pthread_create) */
|
||||
void *VMF_NNM_Fifoq_Manager_Enqueue_Image_Thread(void *arg);
|
||||
void *VMF_NNM_Inference_Image_Dispatcher_Thread(void *arg);
|
||||
|
||||
/* NNM version / model loading */
|
||||
void VMF_NNM_Get_Version(uint32_t *major, uint32_t *minor, uint32_t *patch, uint32_t *build);
|
||||
int VMF_NNM_Load_Model_From_File(const char *model_path);
|
||||
|
||||
#endif /* VMF_NNM_FIFOQ_MANAGER_H */
|
||||
52
include/fake/vmf_nnm_inference_app.h
Normal file
52
include/fake/vmf_nnm_inference_app.h
Normal file
@ -0,0 +1,52 @@
|
||||
#ifndef VMF_NNM_INFERENCE_APP_H
|
||||
#define VMF_NNM_INFERENCE_APP_H
|
||||
|
||||
#include <stdint.h>
|
||||
#include "kp_struct.h"
|
||||
#include "ncpu_gen_struct.h"
|
||||
|
||||
/* VMF alignment macros - used across VMF headers */
|
||||
#ifndef VMF_ALIGN
|
||||
#define VMF_ALIGN(x, n) (((x) + (n) - 1) & ~((n) - 1))
|
||||
#define VMF_32_ALIGN(x) VMF_ALIGN(x, 32)
|
||||
#define VMF_16_ALIGN(x) VMF_ALIGN(x, 16)
|
||||
#define VMF_8_ALIGN(x) VMF_ALIGN(x, 8)
|
||||
#define VMF_4_ALIGN(x) VMF_ALIGN(x, 4)
|
||||
#endif
|
||||
|
||||
/* Image config for one input node */
|
||||
typedef struct {
|
||||
void *image_buf;
|
||||
uint32_t image_width;
|
||||
uint32_t image_height;
|
||||
uint32_t image_channel;
|
||||
kp_image_format_t image_format;
|
||||
kp_normalize_mode_t image_norm;
|
||||
kp_resize_mode_t image_resize;
|
||||
kp_padding_mode_t image_padding;
|
||||
uint32_t enable_crop; /* bool padded to 4 bytes */
|
||||
struct {
|
||||
uint32_t crop_number;
|
||||
uint32_t x1;
|
||||
uint32_t y1;
|
||||
uint32_t width;
|
||||
uint32_t height;
|
||||
} crop_area;
|
||||
} VMF_NNM_IMAGE_CONFIG_T;
|
||||
|
||||
/* Main inference config passed to VMF_NNM_Inference_App_Execute */
|
||||
typedef struct {
|
||||
int num_image;
|
||||
VMF_NNM_IMAGE_CONFIG_T image_list[MAX_INPUT_NODE_COUNT];
|
||||
uint32_t model_id;
|
||||
int (*post_proc_func)(int model_id, struct kdp_image_s *image_p);
|
||||
void *user_define_data;
|
||||
void *ncpu_result_buf;
|
||||
} VMF_NNM_INFERENCE_APP_CONFIG_T;
|
||||
|
||||
/* API */
|
||||
void VMF_NNM_Inference_App_Init(void (*app_func)(int num_input_buf, void **inf_input_buf_list));
|
||||
int VMF_NNM_Inference_App_Execute(VMF_NNM_INFERENCE_APP_CONFIG_T *inf_config);
|
||||
void VMF_NNM_Inference_App_Destroy(void);
|
||||
|
||||
#endif /* VMF_NNM_INFERENCE_APP_H */
|
||||
25
include/fake/vmf_nnm_ipc_cmd.h
Normal file
25
include/fake/vmf_nnm_ipc_cmd.h
Normal file
@ -0,0 +1,25 @@
|
||||
#ifndef VMF_NNM_IPC_CMD_H
|
||||
#define VMF_NNM_IPC_CMD_H
|
||||
|
||||
#include <stdint.h>
|
||||
|
||||
/* VMF NNM alignment macros */
|
||||
#define VMF_ALIGN(x, n) (((x) + (n) - 1) & ~((n) - 1))
|
||||
#define VMF_32_ALIGN(x) VMF_ALIGN(x, 32)
|
||||
#define VMF_16_ALIGN(x) VMF_ALIGN(x, 16)
|
||||
#define VMF_8_ALIGN(x) VMF_ALIGN(x, 8)
|
||||
#define VMF_4_ALIGN(x) VMF_ALIGN(x, 4)
|
||||
|
||||
/* IPC command codes (stub - actual values must match libvmf_nnm.so) */
|
||||
#define VMF_NNM_IPC_CMD_INFERENCE 0x0001
|
||||
#define VMF_NNM_IPC_CMD_LOAD_MODEL 0x0002
|
||||
#define VMF_NNM_IPC_CMD_GET_VERSION 0x0003
|
||||
|
||||
/* IPC header structure */
|
||||
typedef struct {
|
||||
uint32_t cmd;
|
||||
uint32_t size;
|
||||
uint32_t reserved[2];
|
||||
} VMF_NNM_IPC_CMD_HDR_T;
|
||||
|
||||
#endif /* VMF_NNM_IPC_CMD_H */
|
||||
127
include/fake/vtcs_root_vienna/MemBroker/mem_broker.h
Normal file
127
include/fake/vtcs_root_vienna/MemBroker/mem_broker.h
Normal file
@ -0,0 +1,127 @@
|
||||
/*
|
||||
*******************************************************************************
|
||||
* Copyright (c) 2010-2022 VATICS(KNERON) Inc. All rights reserved.
|
||||
*
|
||||
* +-----------------------------------------------------------------+
|
||||
* | THIS SOFTWARE IS FURNISHED UNDER A LICENSE AND MAY ONLY BE USED |
|
||||
* | AND COPIED IN ACCORDANCE WITH THE TERMS AND CONDITIONS OF SUCH |
|
||||
* | A LICENSE AND WITH THE INCLUSION OF THE THIS COPY RIGHT NOTICE. |
|
||||
* | THIS SOFTWARE OR ANY OTHER COPIES OF THIS SOFTWARE MAY NOT BE |
|
||||
* | PROVIDED OR OTHERWISE MADE AVAILABLE TO ANY OTHER PERSON. THE |
|
||||
* | OWNERSHIP AND TITLE OF THIS SOFTWARE IS NOT TRANSFERRED. |
|
||||
* | |
|
||||
* | THE INFORMATION IN THIS SOFTWARE IS SUBJECT TO CHANGE WITHOUT |
|
||||
* | ANY PRIOR NOTICE AND SHOULD NOT BE CONSTRUED AS A COMMITMENT BY |
|
||||
* | VATICS(KNERON) INC. |
|
||||
* +-----------------------------------------------------------------+
|
||||
*
|
||||
*******************************************************************************
|
||||
*/
|
||||
#ifndef MEM_BROKER_H
|
||||
#define MEM_BROKER_H
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
typedef enum
|
||||
{
|
||||
VMF_ALIGN_TYPE_DEFAULT = 0,
|
||||
VMF_ALIGN_TYPE_2_BYTE,
|
||||
VMF_ALIGN_TYPE_4_BYTE,
|
||||
VMF_ALIGN_TYPE_8_BYTE,
|
||||
VMF_ALIGN_TYPE_16_BYTE,
|
||||
VMF_ALIGN_TYPE_32_BYTE,
|
||||
VMF_ALIGN_TYPE_64_BYTE,
|
||||
VMF_ALIGN_TYPE_128_BYTE,
|
||||
VMF_ALIGN_TYPE_256_BYTE,
|
||||
VMF_ALIGN_TYPE_512_BYTE,
|
||||
VMF_ALIGN_TYPE_1024_BYTE,
|
||||
VMF_ALIGN_TYPE_2048_BYTE,
|
||||
VMF_ALIGN_TYPE_4096_BYTE,
|
||||
VMF_ALIGN_TYPE_8192_BYTE,
|
||||
VMF_ALIGN_TYPE_16384_BYTE,
|
||||
VMF_ALIGN_TYPE_32768_BYTE
|
||||
} vmf_align_type;
|
||||
typedef vmf_align_type VMF_ALIGN_TYPE;
|
||||
|
||||
/**
|
||||
* @brief Allocate memory from EDMC.
|
||||
*
|
||||
* @param[in] size Allocates size bytes
|
||||
* @param[in] alignment the start address alignment. Please check the hardware restriction.
|
||||
* @return A pointer to the allocated memory
|
||||
*/
|
||||
void* MemBroker_GetMemory(unsigned int size, VMF_ALIGN_TYPE alignment);
|
||||
|
||||
/**
|
||||
* @brief Allocate memory from EDMC.
|
||||
*
|
||||
* @param[in] size Allocates size bytes
|
||||
* @param[in] alignment the start address alignment. Please check the hardware restriction.
|
||||
* @return A pointer to the allocated memory
|
||||
*/
|
||||
void* MemBroker_GetMemory_Reverse(unsigned int size, VMF_ALIGN_TYPE alignment);
|
||||
|
||||
/**
|
||||
* @brief Free memory to EDMC.
|
||||
*
|
||||
* @param[in] A pointer to the allocated memory.
|
||||
*/
|
||||
void MemBroker_FreeMemory(void*);
|
||||
|
||||
/**
|
||||
* @brief Translate a virtual address to a physical address
|
||||
*
|
||||
* @param[in] A pointer to the virtual address of this allocated memory.
|
||||
* @return A pointer to the physical address of this allocated memory.
|
||||
*/
|
||||
void* MemBroker_GetPhysAddr(void*);
|
||||
|
||||
/**
|
||||
* @brief Translate a physical address to a virtual address
|
||||
*
|
||||
* @param[in] A pointer to the physical address of this allocated memory.
|
||||
* @return A pointer to the virtual address of this allocated memory.
|
||||
*/
|
||||
void* MemBroker_GetVirtAddr(void*);
|
||||
|
||||
/**
|
||||
* @brief Map(Build) a virtual address from a physical address. (it is used for a memory segment not allocated from "MemBroker_GetMemory".
|
||||
*
|
||||
* @param[in] A pointer to the physical address of this allocated memory.
|
||||
* @param[in] size The size bytes of this allocated buffer.
|
||||
* @return A pointer to the virtual address of this allocated memory.
|
||||
*/
|
||||
void* MemBroker_MapPhysAddr(void* ptr, unsigned int size);
|
||||
|
||||
/**
|
||||
* @brief 'Flush' the data in CPU cache to DRAM.
|
||||
*
|
||||
* @param[in] A pointer to the virtual address of this allocated memory.
|
||||
* @param[in] size The size bytes of this allocated buffer.
|
||||
*/
|
||||
int MemBroker_CacheCopyBack(void*, unsigned int size);
|
||||
|
||||
/**
|
||||
* @brief invalidate those cache tags with the specified memory section.
|
||||
*
|
||||
* @param[in] A pointer to the virtual address of this allocated memory.
|
||||
* @param[in] size The size bytes of this allocated buffer.
|
||||
*/
|
||||
int MemBroker_CacheInvalidate(void*, unsigned int size);
|
||||
|
||||
/**
|
||||
* @brief 'Flush' the data in CPU cache to DRAM and invalidate those cache tags with the specified memory section.
|
||||
*
|
||||
* @param[in] A pointer to the virtual address of this allocated memory.
|
||||
* @param[in] size The size bytes of this allocated buffer.
|
||||
*/
|
||||
int MemBroker_CacheFlush(void*, unsigned int size);
|
||||
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif
|
||||
@ -0,0 +1,127 @@
|
||||
/*
|
||||
*******************************************************************************
|
||||
* Copyright (c) 2010-2022 VATICS(KNERON) Inc. All rights reserved.
|
||||
*
|
||||
* +-----------------------------------------------------------------+
|
||||
* | THIS SOFTWARE IS FURNISHED UNDER A LICENSE AND MAY ONLY BE USED |
|
||||
* | AND COPIED IN ACCORDANCE WITH THE TERMS AND CONDITIONS OF SUCH |
|
||||
* | A LICENSE AND WITH THE INCLUSION OF THE THIS COPY RIGHT NOTICE. |
|
||||
* | THIS SOFTWARE OR ANY OTHER COPIES OF THIS SOFTWARE MAY NOT BE |
|
||||
* | PROVIDED OR OTHERWISE MADE AVAILABLE TO ANY OTHER PERSON. THE |
|
||||
* | OWNERSHIP AND TITLE OF THIS SOFTWARE IS NOT TRANSFERRED. |
|
||||
* | |
|
||||
* | THE INFORMATION IN THIS SOFTWARE IS SUBJECT TO CHANGE WITHOUT |
|
||||
* | ANY PRIOR NOTICE AND SHOULD NOT BE CONSTRUED AS A COMMITMENT BY |
|
||||
* | VATICS(KNERON) INC. |
|
||||
* +-----------------------------------------------------------------+
|
||||
*
|
||||
*******************************************************************************
|
||||
*/
|
||||
#ifndef SHARED_COMPACT_MEMORY_H
|
||||
#define SHARED_COMPACT_MEMORY_H
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
#include <pthread.h>
|
||||
#include <stdint.h>
|
||||
#include <stdbool.h>
|
||||
#include <time.h>
|
||||
#include <sys/types.h>
|
||||
#include <unistd.h>
|
||||
|
||||
#define VMF_VENC_OUTPUT_SCM_HEADER 256 //! SCM Encode Header Size
|
||||
|
||||
struct _scm_buffer_t_
|
||||
{
|
||||
uint32_t dwOccupiedSpace;
|
||||
uint8_t *pbyVirtAddr;
|
||||
uint8_t *pbyPhysAddr;
|
||||
};
|
||||
|
||||
typedef struct _scm_buffer_t_ scm_buffer_t;
|
||||
typedef scm_buffer_t SCM_BUFFER_T;
|
||||
|
||||
typedef struct _scm_handle_t_ scm_handle_t;
|
||||
typedef scm_handle_t SCM_HANDLE_T;
|
||||
|
||||
extern const SCM_BUFFER_T SCM_BUFFER_T_DEFAULT;
|
||||
|
||||
/**
|
||||
* @brief Create a SharedCompactMemory writer
|
||||
*
|
||||
* @param[in] The name of object to be created or opened.
|
||||
* @param[in] The buffer size of the object. Please use bigger than 2*(check size). Recommend 2.5*(check size).
|
||||
* @param[in] The check size of the object. Every time SCM writer will make sure this size for writing buffer.
|
||||
* @param[in] The flag for block mode. True: Writer will waiting reader if buffer is not enough.
|
||||
* False: Writer will remove the oldest data in buffer if buffer is not enough.
|
||||
* @param[in] The flag for limit mode. True: SCM handle will only hold the maximum 16 data logs in handle.
|
||||
* False: SCM handle will not limit the amount of data logs in handle.
|
||||
*
|
||||
* @return The handle of shared compact memroy.
|
||||
*/
|
||||
SCM_HANDLE_T *SCM_InitWriter(const char *, uint32_t, uint32_t, bool, bool);
|
||||
|
||||
/**
|
||||
* @brief Create a SharedCompactMemory reader
|
||||
*
|
||||
* @param[in] The name of object to be created or opened.
|
||||
*
|
||||
* @return The handle of shared compact memroy.
|
||||
*/
|
||||
SCM_HANDLE_T *SCM_InitReader(const char *);
|
||||
|
||||
/**
|
||||
* @brief Function to explicitly recycle SharedCompactMemory handle.
|
||||
*
|
||||
* @param[in] The handle of shared compact memory.
|
||||
*
|
||||
* @return 0 with no error, -1 otherwise
|
||||
*/
|
||||
int SCM_Release(SCM_HANDLE_T *);
|
||||
|
||||
/**
|
||||
* @brief Record the current 'scm buffer' and update it with new writable address.
|
||||
*
|
||||
* @param[in] The handle of shared compact memory.
|
||||
* @param[in] The pointer of SCM_BUFFER_T structure.
|
||||
*
|
||||
* @return 0 with no error, -1 otherwise
|
||||
*/
|
||||
int SCM_SendGetWriterBuff(SCM_HANDLE_T *, SCM_BUFFER_T *);
|
||||
|
||||
/**
|
||||
* @brief Release the current 'scm buffer'and update it with new readable address.
|
||||
*
|
||||
* @param[in] The handle of shared compact memory.
|
||||
* @param[in] The pointer of SCM_BUFFER_T structure.
|
||||
*
|
||||
* @return 0 with no error, -2 when awakened, -1 otherwise
|
||||
*/
|
||||
int SCM_ReturnReceiveReaderBuff(SCM_HANDLE_T *, SCM_BUFFER_T *);
|
||||
|
||||
/**
|
||||
* @brief It is used to relase a 'scm buffer' (For reader only)
|
||||
*
|
||||
* @param[in] The handle of shared compact memory.
|
||||
* @param[in] The pointer of srb_buffer_t structure.
|
||||
*
|
||||
* @return 0 with no error, -1 otherwise
|
||||
*/
|
||||
int SCM_ReturnReaderBuff(SCM_HANDLE_T *, SCM_BUFFER_T *);
|
||||
|
||||
/**
|
||||
* @brief Wake up the reader while it is waiting for a buffer coming from the writer.
|
||||
*
|
||||
* @param[in] The handle of shared compact memroy.
|
||||
*
|
||||
* @return 0 with no error, -1 otherwise
|
||||
*/
|
||||
int SCM_WakeupReader(SCM_HANDLE_T *);
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif //SHARED_COMPACT_MEMORY_H
|
||||
133
include/fake/vtcs_root_vienna/SyncRingBuffer/sync_ring_buffer.h
Normal file
133
include/fake/vtcs_root_vienna/SyncRingBuffer/sync_ring_buffer.h
Normal file
@ -0,0 +1,133 @@
|
||||
/*
|
||||
*******************************************************************************
|
||||
* Copyright (c) 2010-2022 VATICS(KNERON) Inc. All rights reserved.
|
||||
*
|
||||
* +-----------------------------------------------------------------+
|
||||
* | THIS SOFTWARE IS FURNISHED UNDER A LICENSE AND MAY ONLY BE USED |
|
||||
* | AND COPIED IN ACCORDANCE WITH THE TERMS AND CONDITIONS OF SUCH |
|
||||
* | A LICENSE AND WITH THE INCLUSION OF THE THIS COPY RIGHT NOTICE. |
|
||||
* | THIS SOFTWARE OR ANY OTHER COPIES OF THIS SOFTWARE MAY NOT BE |
|
||||
* | PROVIDED OR OTHERWISE MADE AVAILABLE TO ANY OTHER PERSON. THE |
|
||||
* | OWNERSHIP AND TITLE OF THIS SOFTWARE IS NOT TRANSFERRED. |
|
||||
* | |
|
||||
* | THE INFORMATION IN THIS SOFTWARE IS SUBJECT TO CHANGE WITHOUT |
|
||||
* | ANY PRIOR NOTICE AND SHOULD NOT BE CONSTRUED AS A COMMITMENT BY |
|
||||
* | VATICS(KNERON) INC. |
|
||||
* +-----------------------------------------------------------------+
|
||||
*
|
||||
*******************************************************************************
|
||||
*/
|
||||
#ifndef SYNC_RING_BUFFER_H
|
||||
#define SYNC_RING_BUFFER_H
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
//#define VIENNA_SSM_CORE
|
||||
|
||||
typedef struct
|
||||
{
|
||||
int idx;
|
||||
unsigned char* buffer;
|
||||
unsigned char* buffer_phys_addr;
|
||||
} srb_buffer_t;
|
||||
|
||||
typedef srb_buffer_t SRB_BUFFER_T;
|
||||
typedef struct srb_handle_t srb_handle_t;
|
||||
typedef struct srb_handle_t SRB_HANDLE_T;
|
||||
|
||||
/**
|
||||
* @brief Create a SyncRingBuffer writer
|
||||
*
|
||||
* @param[in] name It specifies the object to be created or opened.
|
||||
* @param[in] buf_size The buffer size of the object.
|
||||
* @param[in] ring_bufer_num The total number of slots within this ring buffer.
|
||||
* @return The handle of sync ring buffer.
|
||||
*/
|
||||
SRB_HANDLE_T* SRB_InitWriter(const char* name, unsigned int buf_size, int ring_buf_num);
|
||||
|
||||
/**
|
||||
* @brief Create a SyncRingBuffer writer using reversed EDMC address
|
||||
*
|
||||
* @param[in] name It specifies the object to be created or opened.
|
||||
* @param[in] buf_size The buffer size of the object.
|
||||
* @param[in] ring_bufer_num The total number of slots within this ring buffer.
|
||||
* @return The handle of sync ring buffer.
|
||||
*/
|
||||
SRB_HANDLE_T* SRB_InitWriter_Reverse(const char* name, unsigned int buf_size, int ring_buf_num);
|
||||
|
||||
/**
|
||||
* @brief Create a SyncRingBuffer reader
|
||||
*
|
||||
* @param[in] name It specifies the object to be created or opened.
|
||||
* @return The handle of sync ring buffer.
|
||||
*/
|
||||
SRB_HANDLE_T* SRB_InitReader(const char* name);
|
||||
|
||||
/**
|
||||
* @brief Function to explicitly recycle SyncRingBuffer handle.
|
||||
*
|
||||
* @param[in] handle The handle of sync ring buffer.
|
||||
*/
|
||||
int SRB_Release(SRB_HANDLE_T* ptHandle);
|
||||
|
||||
/**
|
||||
* @brief Deliver the current 'srb buffer'to those related readers and allocate a new 'srb buffer'.
|
||||
*
|
||||
* @param[in] handle The handle of sync shared memory.
|
||||
* @param[in] ssm_buf The pointer of srb_buffer_t structure.
|
||||
*/
|
||||
int SRB_SendGetWriterBuff(SRB_HANDLE_T* ptHandle, SRB_BUFFER_T* ptSrbBuf);
|
||||
|
||||
/**
|
||||
* @brief Deliver the current 'srb buffer'to those related readers and check wether writer will over reader.
|
||||
*
|
||||
* @param[in] handle The handle of sync shared memory.
|
||||
* @param[in] ssm_buf The pointer of srb_buffer_t structure.
|
||||
*/
|
||||
int SRB_WriterCheckReader(SRB_HANDLE_T* ptHandle, SRB_BUFFER_T* ptSrbBuf);
|
||||
|
||||
/**
|
||||
* @brief Release the current 'srb buffer'and receive a new 'srb buffer' from the writer.
|
||||
*
|
||||
* @param[in] handle The handle of sync shared memory.
|
||||
* @param[in] ssm_buf The pointer of srb_buffer_t structure.
|
||||
*/
|
||||
int SRB_ReturnReceiveReaderBuff(SRB_HANDLE_T* ptHandle, SRB_BUFFER_T* ptSrbBuf);
|
||||
|
||||
/**
|
||||
* @brief It is used to relase a 'srb buffer' (For reader only)
|
||||
*
|
||||
* @param[in] handle The handle of sync ring buffer.
|
||||
* @param[in] ssm_buf The pointer of srb_buffer_t structure.
|
||||
*/
|
||||
int SRB_ReturnReaderBuff(SRB_HANDLE_T* ptHandle, SRB_BUFFER_T* ptSrbBuf);
|
||||
|
||||
/**
|
||||
* @brief Release the current 'srb buffer'and peek if a new 'srb buffer' is ready, if not ready, just quit.
|
||||
*
|
||||
* @param[in] ptHandle The handle of sync ring buffer.
|
||||
* @param[in] ssm_buf The pointer of srb_buffer_t structure.
|
||||
*/
|
||||
int SRB_QueryReaderBuff(srb_handle_t* ptHandle, srb_buffer_t* srb_buf);
|
||||
|
||||
/**
|
||||
* @brief Wake up the reader while it is waiting for a buffer coming from the writer.
|
||||
*
|
||||
* @param[in] ptHandle The handle of sync ring buffer.
|
||||
*/
|
||||
int SRB_WakeupReader(SRB_HANDLE_T* ptHandle);
|
||||
|
||||
/**
|
||||
* @brief Clear writer buffer.
|
||||
*
|
||||
* @param[in] ptHandle The handle of sync ring buffer.
|
||||
*/
|
||||
int SRB_ClearWriterBuffer(SRB_HANDLE_T* handle);
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif
|
||||
320
include/fake/vtcs_root_vienna/TextRender/text_render.h
Normal file
320
include/fake/vtcs_root_vienna/TextRender/text_render.h
Normal file
@ -0,0 +1,320 @@
|
||||
/*
|
||||
*******************************************************************************
|
||||
* Copyright (c) 2010-2022 VATICS(KNERON) Inc. All rights reserved.
|
||||
*
|
||||
* +-----------------------------------------------------------------+
|
||||
* | THIS SOFTWARE IS FURNISHED UNDER A LICENSE AND MAY ONLY BE USED |
|
||||
* | AND COPIED IN ACCORDANCE WITH THE TERMS AND CONDITIONS OF SUCH |
|
||||
* | A LICENSE AND WITH THE INCLUSION OF THE THIS COPY RIGHT NOTICE. |
|
||||
* | THIS SOFTWARE OR ANY OTHER COPIES OF THIS SOFTWARE MAY NOT BE |
|
||||
* | PROVIDED OR OTHERWISE MADE AVAILABLE TO ANY OTHER PERSON. THE |
|
||||
* | OWNERSHIP AND TITLE OF THIS SOFTWARE IS NOT TRANSFERRED. |
|
||||
* | |
|
||||
* | THE INFORMATION IN THIS SOFTWARE IS SUBJECT TO CHANGE WITHOUT |
|
||||
* | ANY PRIOR NOTICE AND SHOULD NOT BE CONSTRUED AS A COMMITMENT BY |
|
||||
* | VATICS(KNERON) INC. |
|
||||
* +-----------------------------------------------------------------+
|
||||
*
|
||||
*******************************************************************************
|
||||
*/
|
||||
#ifndef __TEXT_RENDER_H__
|
||||
#define __TEXT_RENDER_H__
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
#include <stdint.h>
|
||||
#include <stddef.h>
|
||||
|
||||
#define VTXT_TAG "VMF_VTXT_RENDER"
|
||||
|
||||
typedef struct draw_info_t draw_info_t;
|
||||
typedef struct draw_info_t DRAW_INFO_T;
|
||||
|
||||
typedef struct txt_renderer_t txt_renderer_t;
|
||||
typedef struct txt_renderer_t TXT_RENDERER_T;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
unsigned int dwFontColor; /**< The color of font content, Byte 0:Y, 1:Cb, 2:Cr */
|
||||
unsigned int dwBorderColor; /**< The color of font border, Byte 0:Y, 1:Cb, 2:Cr */
|
||||
unsigned int dwBackColor; /**< The color of font background, Byte 0:Y, 1:Cb, 2:Cr, 3:alpha */
|
||||
} font_color_t;
|
||||
typedef font_color_t FONT_COLOR_T;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
const char* pszFontPath; /**< A path to the font file. */
|
||||
const char* pszExtraUTF8; /**< Extra utf8 text which want pre-generate in text renderer. NULL: disable */
|
||||
float fOutlineWidth; /**< The outline width of stroke. */
|
||||
|
||||
short nFontSize; /**< The size of font. */
|
||||
short nAscent; /**< The ascender is the vertical distance from the horizontal baseline to the highest ‘character’ coordinate in a font face. */
|
||||
short nDescent; /**< The descender is the vertical distance from the horizontal baseline to the lowest ‘character’ coordinate in a font face. */
|
||||
short nHeight; /**< The baseline-to-baseline distance. */
|
||||
FONT_COLOR_T tColorInfo; /**< The color setting of font. */
|
||||
|
||||
} font_info_t;
|
||||
|
||||
typedef font_info_t FONT_INFO_T;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
unsigned char *y; /**< Y planar. */
|
||||
unsigned char *u; /**< U planar. */
|
||||
unsigned char *v; /**< V planar. */
|
||||
size_t y_size; /**< Size of Y planar. */
|
||||
size_t uv_size; /**< Size of each V and U planar. */
|
||||
size_t stride; /**< Stride of surface. */
|
||||
} txt_surface_t;
|
||||
|
||||
typedef txt_surface_t TXT_SURFACE_T;
|
||||
|
||||
/**
|
||||
* @struct VMTK_TEXT_RENDER_CONTEXT_T
|
||||
* @brief Text Render Contexts
|
||||
* @sa VMTK_DMA2D_CONFIG_T
|
||||
*/
|
||||
typedef struct _txt_render_context_t {
|
||||
TXT_SURFACE_T text_surface;
|
||||
int textoverlay_w;
|
||||
int textoverlay_h;
|
||||
} TXT_RENDER_CONTEXT_T;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
int first_surface_offset;
|
||||
int last_surface_offset;
|
||||
} draw_result_t;
|
||||
typedef draw_result_t DRAW_RESULT_T;
|
||||
|
||||
/**
|
||||
* @brief Function to create the handle of the text render.
|
||||
*
|
||||
* @return NULL: Failed. Otherwise: Successful.
|
||||
*/
|
||||
TXT_RENDERER_T* CreateTextRender();
|
||||
|
||||
/**
|
||||
* @brief Function to release the resource inside the information structure.
|
||||
*
|
||||
* @param[in] ptHandle The pointer of information structure about the font.
|
||||
* @return Negative value: Failed. Zero: Successful.
|
||||
*/
|
||||
int ReleaseTextRender(TXT_RENDERER_T *ptHandle);
|
||||
|
||||
/**
|
||||
* @brief Function to set the path and size of the font.
|
||||
*
|
||||
* @param[in] ptHandle The pointer of information structure about the font.
|
||||
* @param[in] font_info The information about font.
|
||||
* @return Negative value: Failed. Zero: Successful.
|
||||
*/
|
||||
int SetFont(TXT_RENDERER_T *ptHandle, const FONT_INFO_T* ptFontInfo);
|
||||
|
||||
/**
|
||||
* @brief Function to set the font color.
|
||||
*
|
||||
* @param[in] ptHandle The pointer of information structure about the font.
|
||||
* @param[in] dwFontColor font color.
|
||||
* @param[in] dwBorderColor font border color.
|
||||
* @param[in] dwBackColor font background color.
|
||||
* @return Negative value: Failed. Zero: Successful.
|
||||
*/
|
||||
int SetFontcolor(TXT_RENDERER_T *ptHandle, const unsigned int dwFontColor, const unsigned int dwBorderColor, const unsigned int dwBackColor);
|
||||
|
||||
|
||||
/**
|
||||
* @brief Function to set the font backgroundcolor.
|
||||
*
|
||||
* @param[in] ptHandle The pointer of information structure about the font.
|
||||
* @param[in] font background color.
|
||||
* @return Negative value: Failed. Zero: Successful.
|
||||
*/
|
||||
int SetFontBGcolor(TXT_RENDERER_T *ptHandle, const unsigned int font_bg_color);
|
||||
|
||||
/**
|
||||
* @brief Function to get the font info.
|
||||
*
|
||||
* @param[in] ptHandle The pointer of information structure about the font.
|
||||
* @return NULL: Failed. Others: Successful.
|
||||
*/
|
||||
FONT_INFO_T* GetFontInfo(TXT_RENDERER_T *ptHandle);
|
||||
|
||||
/**
|
||||
* @brief Function to generate the drawing information of one string.
|
||||
*
|
||||
* @param[in] ptHandle The pointer of information structure about the font.
|
||||
* @param[in] str The string needs to be generated the drawing information about it.
|
||||
* @param[in,out] draw_infos The output drawing information about the input character (It needs to be released by ReleaseDrawInfo function).
|
||||
* @see ReleaseDrawInfo(DRAW_INFO_T **, size_t *)
|
||||
* @param[in,out] num_of_draw_info The number of drawing information in the draw_infos.
|
||||
* @return Negative value: Failed. Zero: Successful.
|
||||
*/
|
||||
int GenerateDrawInfo(TXT_RENDERER_T *ptHandle, const char *str, DRAW_INFO_T **draw_infos, size_t *num_of_draw_info);
|
||||
|
||||
/**
|
||||
* @brief Function to generate extra the drawing information into text_render for further usage.
|
||||
*
|
||||
* @param[in] ptHandle The pointer of information structure about the font.
|
||||
* @param[in] str The string needs to be generated the drawing information about it.
|
||||
* @return Negative value: Failed. Zero: Successful.
|
||||
*/
|
||||
int SetExtraDrawInfo(TXT_RENDERER_T *ptHandle, const char *str);
|
||||
|
||||
/**
|
||||
* @brief Function to release the resource of the drawing information.
|
||||
*
|
||||
* @param[in,out] draw_infos The drawing information needs to be released, it will be reset to NULL after we release it successfully.
|
||||
* @param[in,out] num_of_draw_info The number of drawing information in the draw_infos, it will be reset to zero after we release it successfully.
|
||||
*/
|
||||
void ReleaseDrawInfo(DRAW_INFO_T **draw_infos, size_t *num_of_draw_info);
|
||||
|
||||
/**
|
||||
* @brief Function to draw one string on the surface according to the drawing information.
|
||||
*
|
||||
* @param[in] surface The surface needs to be drawn one string on.
|
||||
* @param[in] draw_infos The drawing information about the string.
|
||||
* @param[in] num_of_draw_info The number of drawing information in the draw_info.
|
||||
* @param[in,out] x_offset The x offset of drawing the character (It will be updated to new x offset for drawing next string).
|
||||
* @param[in,out] y_offset The y offset of drawing the character (It will be updated to new y offset for drawing next string).
|
||||
* @param[in,out] result Some results after drawing.
|
||||
*/
|
||||
void RenderDrawInfo(const TXT_SURFACE_T *ptSurface, const DRAW_INFO_T *draw_infos, const size_t num_of_draw_info,
|
||||
int* x_offset, int* y_offset, DRAW_RESULT_T *result);
|
||||
|
||||
/**
|
||||
* @brief Function to draw one ASCII string on the surface according to the drawing information.
|
||||
*
|
||||
* @param[in] ptHandle The pointer of information structure about the font.
|
||||
* @param[in] surface The surface needs to be drawn one string on.
|
||||
* @param[in] str The string needs to be drawn.
|
||||
* @param[in,out] x_offset The x offset of drawing the character (It will be updated to new x offset for drawing next string).
|
||||
* @param[in,out] y_offset The y offset of drawing the character (It will be updated to new y offset for drawing next string).
|
||||
* @param[in,out] result Some results after drawing.
|
||||
*/
|
||||
void DrawASCIIText(TXT_RENDERER_T *ptHandle, const TXT_SURFACE_T *ptSurface, const char *str, int* x_offset, int * y_offset, DRAW_RESULT_T *result);
|
||||
|
||||
/**
|
||||
* @brief Function to get the width and height from the ASCII text.
|
||||
*
|
||||
* @param[in] ptHandle The pointer of information structure about the font.
|
||||
* @param[in] str The string needs to be calculated.
|
||||
* @param[in] str_len The length of input string.
|
||||
* @param[out] width The width of the drawing information for one string.
|
||||
* @param[out] height The max height of the drawing information for one string.
|
||||
*/
|
||||
void ASCIITextGeometric(TXT_RENDERER_T *ptHandle, const char *str, size_t str_len, int *width, int *height);
|
||||
|
||||
/**
|
||||
* @brief Function to get the width and height from the UTF8 text.
|
||||
*
|
||||
* @param[in] ptHandle The pointer of information structure about the font.
|
||||
* @param[in] str The UTF8 string needs to be calculated.
|
||||
* @param[out] width The width of the drawing information for one string.
|
||||
* @param[out] height The max height of the drawing information for one string.
|
||||
*/
|
||||
void UTF8TextGeometric(TXT_RENDERER_T *ptHandle, const char *str, int *width, int *height);
|
||||
|
||||
/**
|
||||
* @brief Function to get the width and height from the drawing information.
|
||||
*
|
||||
* @param[in] draw_info The drawing information about the string.
|
||||
* @param[in] num_of_draw_info The number of drawing information in the draw_info.
|
||||
* @param[out] width The width of the drawing information for one string.
|
||||
* @param[out] height The max height of the drawing information for one string.
|
||||
*/
|
||||
void DrawInfoGeometric(const DRAW_INFO_T *draw_infos, size_t num_of_draw_info, int *width, int *height);
|
||||
|
||||
/**
|
||||
* @brief Function to get the max width of the range of ASCII code or specified ASCII code.
|
||||
*
|
||||
* @param[in] ptHandle The pointer of information structure about the font.
|
||||
* @param[in] range_idx_array The array for the range of ASCII code ( ex: {min1, max1, min2, max2} = {48, 57, 97, 100}; // 0~9, a~d ).
|
||||
* @param[in] range_idx_array_size The number of elements in the range_idx_array.
|
||||
* @param[in] idx_array The array for the ASCII codes ( ex: {75, 68, 81}; // K, D, Q ).
|
||||
* @param[in] idx_array_size The number of elements in the idx_array.
|
||||
* @return The max width of all specified ASCII texts (-1: Failed).
|
||||
*/
|
||||
int GetASCIITextMaxWidth(TXT_RENDERER_T *ptHandle, const size_t *range_idx_array, size_t range_idx_array_size,
|
||||
const size_t *idx_array, size_t idx_array_size);
|
||||
|
||||
/**
|
||||
* @brief Function to get the max height of the range of ASCII code or specified ASCII code.
|
||||
*
|
||||
* @param[in] ptHandle The pointer of information structure about the font.
|
||||
* @param[in] range_idx_array The array for the range of ASCII code ( ex: {min1, max1, min2, max2} = {48, 57, 97, 100}; // 0~9, a~d ).
|
||||
* @param[in] range_idx_array_size The number of elements in the range_idx_array.
|
||||
* @param[in] idx_array The array for the ASCII codes ( ex: {75, 68, 81}; // K, D, Q ).
|
||||
* @param[in] idx_array_size The number of elements in the idx_array.
|
||||
* @return The max height of all specified ASCII texts (-1: Failed).
|
||||
*/
|
||||
int GetASCIITextMaxHeight(TXT_RENDERER_T *ptHandle, const size_t *range_idx_array, size_t range_idx_array_size,
|
||||
const size_t *idx_array, size_t idx_array_size);
|
||||
|
||||
/**
|
||||
* @brief Function to create a bitmap buf and draw one ASCII string on this buffer.
|
||||
*
|
||||
* @param[in] ptHandle The pointer of information structure about the font.
|
||||
* @param[in] str The string needs to be drawn.
|
||||
*/
|
||||
void CreateASCIIBitmap(TXT_RENDERER_T *ptHandle, const char *str);
|
||||
|
||||
/**
|
||||
* @brief Function to draw one ASCII string on the surface according to the drawing information.
|
||||
*
|
||||
* @param[in] ptHandle The pointer of information structure about the font.
|
||||
* @param[in] surface The surface needs to be drawn one string on.
|
||||
* @param[in] x The x offset of drawing the bitmap.
|
||||
* @param[in] y The y offset of drawing the bitmap.
|
||||
*/
|
||||
void DrawBitmap(TXT_RENDERER_T *ptHandle, const TXT_SURFACE_T *ptSurface, int x, int y);
|
||||
|
||||
/**
|
||||
* @brief Function to create an alpha mask and draw one string on this mask according to the drawing information.
|
||||
*
|
||||
* @param[in] ptHandle The pointer of information structure about the font.
|
||||
* @param[in] surface The surface needs to be drawn one string on.
|
||||
* @param[in] draw_infos The drawing information about the string.
|
||||
* @param[in] num_of_draw_info The number of drawing information in the draw_info.
|
||||
* @param[in,out] x_offset The x offset of drawing the character (It will be updated to new x offset for drawing next string).
|
||||
* @param[in,out] y_offset The y offset of drawing the character (It will be updated to new y offset for drawing next string).
|
||||
* @param[in] extra_space Extra space between characters.
|
||||
*/
|
||||
void RenderMask(TXT_RENDERER_T *ptHandle, const TXT_SURFACE_T *ptSurface, const DRAW_INFO_T *draw_infos,
|
||||
size_t num_of_draw_info, int* x_offset, int* y_offset, int extra_space);
|
||||
|
||||
/**
|
||||
* @brief Function to draw one ASCII string on this mask. (with user defined color input).
|
||||
*
|
||||
* @param[in] ptHandle The pointer of information structure about the font.
|
||||
* @param[in] surface The surface needs to be drawn one string on.
|
||||
* @param[in] color_info Assigned color for mask.
|
||||
* @param[in] str The string needs to be drawn.
|
||||
* @param[in,out] x_offset The x offset of drawing the character (It will be updated to new x offset for drawing next string).
|
||||
* @param[in,out] y_offset The y offset of drawing the character (It will be updated to new y offset for drawing next string).
|
||||
* @param[in] extra_space Extra space between characters.
|
||||
*/
|
||||
void DrawASCIIMask(TXT_RENDERER_T *ptHandle, const TXT_SURFACE_T *ptSurface, FONT_COLOR_T* ptColorInfo,
|
||||
const char *str, int* x_offset, int* y_offset, int extra_space);
|
||||
|
||||
/**
|
||||
* @brief Function to draw one UTF8 string on this mask. (with user defined color input).
|
||||
*
|
||||
* @param[in] ptHandle The pointer of information structure about the font.
|
||||
* @param[in] ptSurface The surface needs to be drawn one string on.
|
||||
* @param[in] color_info Assigned color for mask.
|
||||
* @param[in] str The string needs to be drawn.
|
||||
* @param[in,out] x_offset The x offset of drawing the character (It will be updated to new x offset for drawing next string).
|
||||
* @param[in,out] y_offset The y offset of drawing the character (It will be updated to new y offset for drawing next string).
|
||||
* @param[in,out] result Some results after drawing.
|
||||
*/
|
||||
void DrawUTF8Mask(TXT_RENDERER_T *ptHandle, const TXT_SURFACE_T *ptSurface, FONT_COLOR_T* ptColorInfo,
|
||||
const char *str, int* x_offset, int* y_offset);
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif
|
||||
|
||||
81
include/fake/vtcs_root_vienna/avi_reader/avi_parser.h
Normal file
81
include/fake/vtcs_root_vienna/avi_reader/avi_parser.h
Normal file
@ -0,0 +1,81 @@
|
||||
/*
|
||||
*******************************************************************************
|
||||
* Copyright (c) 2010-2022 VATICS(KNERON) Inc. All rights reserved.
|
||||
*
|
||||
* +-----------------------------------------------------------------+
|
||||
* | THIS SOFTWARE IS FURNISHED UNDER A LICENSE AND MAY ONLY BE USED |
|
||||
* | AND COPIED IN ACCORDANCE WITH THE TERMS AND CONDITIONS OF SUCH |
|
||||
* | A LICENSE AND WITH THE INCLUSION OF THE THIS COPY RIGHT NOTICE. |
|
||||
* | THIS SOFTWARE OR ANY OTHER COPIES OF THIS SOFTWARE MAY NOT BE |
|
||||
* | PROVIDED OR OTHERWISE MADE AVAILABLE TO ANY OTHER PERSON. THE |
|
||||
* | OWNERSHIP AND TITLE OF THIS SOFTWARE IS NOT TRANSFERRED. |
|
||||
* | |
|
||||
* | THE INFORMATION IN THIS SOFTWARE IS SUBJECT TO CHANGE WITHOUT |
|
||||
* | ANY PRIOR NOTICE AND SHOULD NOT BE CONSTRUED AS A COMMITMENT BY |
|
||||
* | VATICS(KNERON) INC. |
|
||||
* +-----------------------------------------------------------------+
|
||||
*
|
||||
*******************************************************************************
|
||||
*/
|
||||
#ifndef __AVI_PARSER_H__
|
||||
#define __AVI_PARSER_H__
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
#include <avi_reader/avi_types.h>
|
||||
#include <string.h>
|
||||
|
||||
typedef struct
|
||||
{
|
||||
list_header_t strl_list_header;
|
||||
avi_stream_header_t avi_stream_header;
|
||||
bitmap_info_header_t *bitmap_info_header;
|
||||
wave_format_ex_t *wave_format_ex;
|
||||
/* We do not handle or store the strd and strn etc. */
|
||||
} strl_t;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
strl_t *array;
|
||||
size_t size;
|
||||
} strl_array;
|
||||
|
||||
typedef struct avi_headers_info_struct
|
||||
{
|
||||
riff_header_t riff_header;
|
||||
list_header_t hdrl_list_header;
|
||||
avi_main_header_t avi_main_header;
|
||||
strl_array strl;
|
||||
list_header_t movi_list_header;
|
||||
long movi_first_chunk_offset;
|
||||
chunk_header_t idx1_header;
|
||||
long idx1_first_entry_offset;
|
||||
} avi_headers_info_t;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
avi_index_1_entry_t *array;
|
||||
size_t size;
|
||||
} avi_index_1_entry_array;
|
||||
|
||||
typedef enum { UncompressedVideo = 0, CompressedVideo, PaletteChange, Audio, Unknown } ChunkInfo;
|
||||
|
||||
void AVIParser_InitializeAVIHeadersInfo(avi_headers_info_t *avi_header_info);
|
||||
void AVIParser_ReleaseAVIHeadersInfo(avi_headers_info_t *avi_header_info);
|
||||
void AVIParser_FourCC2StreamNumChunkInfo(FOURCC code, int *stream_num, ChunkInfo *chunk_info);
|
||||
int AVIParser_Start(int fd, avi_headers_info_t *avi_info);
|
||||
void AVIParser_PrintAVIInfo(const avi_headers_info_t *avi_info);
|
||||
int AVIParser_ReadAllIndexEntries(int fd, const avi_headers_info_t *avi_info, avi_index_1_entry_array *idx1_entries);
|
||||
void AVIParser_ReleaseIndexEntries(avi_index_1_entry_array *idx1_entries);
|
||||
void AVIParser_PrintIndexEntries(const avi_index_1_entry_array *idx1_entries);
|
||||
int AVIParser_PrintAllMoviChunk(int fd, const avi_headers_info_t *avi_info);
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif
|
||||
|
||||
|
||||
48
include/fake/vtcs_root_vienna/avi_reader/avi_reader.h
Normal file
48
include/fake/vtcs_root_vienna/avi_reader/avi_reader.h
Normal file
@ -0,0 +1,48 @@
|
||||
/*
|
||||
*******************************************************************************
|
||||
* Copyright (c) 2010-2022 VATICS(KNERON) Inc. All rights reserved.
|
||||
*
|
||||
* +-----------------------------------------------------------------+
|
||||
* | THIS SOFTWARE IS FURNISHED UNDER A LICENSE AND MAY ONLY BE USED |
|
||||
* | AND COPIED IN ACCORDANCE WITH THE TERMS AND CONDITIONS OF SUCH |
|
||||
* | A LICENSE AND WITH THE INCLUSION OF THE THIS COPY RIGHT NOTICE. |
|
||||
* | THIS SOFTWARE OR ANY OTHER COPIES OF THIS SOFTWARE MAY NOT BE |
|
||||
* | PROVIDED OR OTHERWISE MADE AVAILABLE TO ANY OTHER PERSON. THE |
|
||||
* | OWNERSHIP AND TITLE OF THIS SOFTWARE IS NOT TRANSFERRED. |
|
||||
* | |
|
||||
* | THE INFORMATION IN THIS SOFTWARE IS SUBJECT TO CHANGE WITHOUT |
|
||||
* | ANY PRIOR NOTICE AND SHOULD NOT BE CONSTRUED AS A COMMITMENT BY |
|
||||
* | VATICS(KNERON) INC. |
|
||||
* +-----------------------------------------------------------------+
|
||||
*
|
||||
*******************************************************************************
|
||||
*/
|
||||
#ifndef __AVI_READER_H__
|
||||
#define __AVI_READER_H__
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
#include <stddef.h>
|
||||
#include <avi_reader/avi_parser.h>
|
||||
|
||||
typedef struct avi_reader_handle_t
|
||||
{
|
||||
int fd_; /**< The file descriptor of AVI file. */
|
||||
size_t current_movi_chunk_index_; /**< The index to point one movi chunk. */
|
||||
avi_headers_info_t *avi_info_; /**< The pointer to point the AVI information structure. */
|
||||
avi_index_1_entry_array idx1_entries_; /**< The queue to store the entries of AVI 1.0 index. */
|
||||
} avi_reader_handle_t;
|
||||
|
||||
void AVIReader_Init(avi_reader_handle_t *);
|
||||
void AVIReader_Release(avi_reader_handle_t *);
|
||||
int AVIReader_LoadAVIFile(avi_reader_handle_t *, const char* filename);
|
||||
int AVIReader_GetSample(avi_reader_handle_t *, char* buf, size_t buf_len, size_t *data_len, int *stream_num, ChunkInfo *chunk_info);
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif
|
||||
|
||||
179
include/fake/vtcs_root_vienna/avi_reader/avi_types.h
Normal file
179
include/fake/vtcs_root_vienna/avi_reader/avi_types.h
Normal file
@ -0,0 +1,179 @@
|
||||
/*
|
||||
*******************************************************************************
|
||||
* Copyright (c) 2010-2022 VATICS(KNERON) Inc. All rights reserved.
|
||||
*
|
||||
* +-----------------------------------------------------------------+
|
||||
* | THIS SOFTWARE IS FURNISHED UNDER A LICENSE AND MAY ONLY BE USED |
|
||||
* | AND COPIED IN ACCORDANCE WITH THE TERMS AND CONDITIONS OF SUCH |
|
||||
* | A LICENSE AND WITH THE INCLUSION OF THE THIS COPY RIGHT NOTICE. |
|
||||
* | THIS SOFTWARE OR ANY OTHER COPIES OF THIS SOFTWARE MAY NOT BE |
|
||||
* | PROVIDED OR OTHERWISE MADE AVAILABLE TO ANY OTHER PERSON. THE |
|
||||
* | OWNERSHIP AND TITLE OF THIS SOFTWARE IS NOT TRANSFERRED. |
|
||||
* | |
|
||||
* | THE INFORMATION IN THIS SOFTWARE IS SUBJECT TO CHANGE WITHOUT |
|
||||
* | ANY PRIOR NOTICE AND SHOULD NOT BE CONSTRUED AS A COMMITMENT BY |
|
||||
* | VATICS(KNERON) INC. |
|
||||
* +-----------------------------------------------------------------+
|
||||
*
|
||||
*******************************************************************************
|
||||
*/
|
||||
#ifndef __AVI_TYPES_H__
|
||||
#define __AVI_TYPES_H__
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
#include <avi_reader/avi_utils.h>
|
||||
#include <stdint.h>
|
||||
|
||||
#define PACKED_STRUCT __attribute__((__packed__))
|
||||
|
||||
#define FOURCC_RIFF (MAKEFOURCC('R','I','F','F'))
|
||||
#define FOURCC_LIST (MAKEFOURCC('L','I','S','T')) /* list structure */
|
||||
#define FOURCC_AVI_ (MAKEFOURCC('A','V','I',' '))
|
||||
#define FOURCC_hdrl (MAKEFOURCC('h','d','r','l')) /* avih and several strl */
|
||||
#define FOURCC_avih (MAKEFOURCC('a','v','i','h')) /* avi common feature */
|
||||
#define FOURCC_strl (MAKEFOURCC('s','t','r','l')) /* stream header + stream format */
|
||||
#define FOURCC_strh (MAKEFOURCC('s','t','r','h')) /* stream header */
|
||||
#define FOURCC_strf (MAKEFOURCC('s','t','r','f')) /* stream format */
|
||||
#define FOURCC_movi (MAKEFOURCC('m','o','v','i')) /* media data */
|
||||
#define FOURCC_idx1 (MAKEFOURCC('i','d','x','1')) /* index, record the position and size in the file for every data */
|
||||
#define FOURCC_JUNK (MAKEFOURCC('J','U','N','K')) /* player will ignore it, we use it for timestamp */
|
||||
|
||||
#define FOURCC_vids (MAKEFOURCC('v','i','d','s')) /* video */
|
||||
#define FOURCC_auds (MAKEFOURCC('a','u','d','s')) /* audio */
|
||||
|
||||
#define FOURCC_BI_RGB 0x00000000
|
||||
#define FOURCC_BI_BITFIELDS 0x00000003
|
||||
|
||||
#define AVIF_COPYRIGHTED 0x00020000
|
||||
#define AVIF_HASINDEX 0x00000010 /* Index at end of file? */
|
||||
#define AVIF_ISINTERLEAVED 0x00000100
|
||||
#define AVIF_MUSTUSEINDEX 0x00000020
|
||||
#define AVIF_TRUSTCKTYPE 0x00000800 /* Use CKType to find key frames? */
|
||||
#define AVIF_WASCAPTUREFILE 0x00010000
|
||||
|
||||
#define AVISF_DISABLED 0x00000001
|
||||
#define AVISF_VIDEO_PALCHANGES 0x00010000
|
||||
|
||||
#define WAVE_FORMAT_PCM 0x0001 /* PCM */
|
||||
#define WAVE_FORMAT_MPEG 0x0050 /* MPEG Layer 1,2 */
|
||||
#define WAVE_FORMAT_MPEGLAYER3 0x0055 /* MPEG Layer 3 */
|
||||
#define WAVE_FORMAT_EXTENSIBLE 0xFFFE /* SubFormat */
|
||||
|
||||
#define AVIIF_LIST 0x00000001
|
||||
#define AVIIF_KEYFRAME 0x00000010
|
||||
#define AVIIF_NO_TIME 0x00000100
|
||||
#define AVIIF_COMPRESSOR 0x0FFF0000
|
||||
|
||||
typedef uint32_t FOURCC;
|
||||
typedef uint32_t DWORD;
|
||||
typedef uint16_t WORD;
|
||||
typedef int32_t SDWORD;
|
||||
typedef int16_t SHORT;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
FOURCC fcc; /* RIFF */
|
||||
DWORD dwRiffSize;
|
||||
DWORD dwFileType;
|
||||
} riff_header_t;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
FOURCC fcc; /* LIST */
|
||||
DWORD dwListSize;
|
||||
DWORD dwListType;
|
||||
} list_header_t;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
FOURCC fcc;
|
||||
DWORD dwChunkSize;
|
||||
} chunk_header_t;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
FOURCC fcc;
|
||||
DWORD dwChunkByte;
|
||||
DWORD dwMicroSecPerFrame;
|
||||
DWORD dwMaxBytesPerSec;
|
||||
DWORD dwPaddingGranularity;
|
||||
DWORD dwFlags;
|
||||
DWORD dwTotalFrames;
|
||||
DWORD dwInitialFrames;
|
||||
DWORD dwStreams;
|
||||
DWORD dwSuggestedBufferSize;
|
||||
DWORD dwWidth;
|
||||
DWORD dwHeight;
|
||||
DWORD dwReserved[4];
|
||||
} avi_main_header_t;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
FOURCC fcc;
|
||||
DWORD dwChunkByte;
|
||||
FOURCC fccType;
|
||||
FOURCC fccHandler;
|
||||
DWORD dwFlags;
|
||||
WORD wPriority;
|
||||
WORD wLanguage;
|
||||
DWORD dwInitialFrames;
|
||||
DWORD dwScale;
|
||||
DWORD dwRate;
|
||||
DWORD dwStart;
|
||||
DWORD dwLength;
|
||||
DWORD dwSuggestedBufferSize;
|
||||
SDWORD dwQuality;
|
||||
DWORD dwSampleSize;
|
||||
struct {
|
||||
SHORT left;
|
||||
SHORT top;
|
||||
SHORT right;
|
||||
SHORT bottom;
|
||||
} rcFrame;
|
||||
} avi_stream_header_t;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
FOURCC fcc;
|
||||
DWORD dwChunkByte;
|
||||
DWORD biSize;
|
||||
SDWORD biWidth;
|
||||
SDWORD biHeight;
|
||||
WORD biPlanes;
|
||||
WORD biBitCount;
|
||||
DWORD biCompression;
|
||||
DWORD biSizeImage;
|
||||
SDWORD biXPelsPerMeter;
|
||||
SDWORD biYPelsPerMeter;
|
||||
DWORD biClrUsed;
|
||||
DWORD biClrImportant;
|
||||
} bitmap_info_header_t;
|
||||
|
||||
typedef struct {
|
||||
FOURCC fcc;
|
||||
DWORD dwChunkByte;
|
||||
WORD wFormatTag;
|
||||
WORD nChannels;
|
||||
DWORD nSamplesPerSec;
|
||||
DWORD nAvgBytesPerSec;
|
||||
WORD nBlockAlign;
|
||||
WORD wBitsPerSample;
|
||||
WORD cbSize;
|
||||
} PACKED_STRUCT wave_format_ex_t;
|
||||
|
||||
typedef struct {
|
||||
DWORD dwChunkId;
|
||||
DWORD dwFlags;
|
||||
DWORD dwOffset;
|
||||
DWORD dwSize;
|
||||
} avi_index_1_entry_t;
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif
|
||||
|
||||
53
include/fake/vtcs_root_vienna/avi_reader/avi_utils.h
Normal file
53
include/fake/vtcs_root_vienna/avi_reader/avi_utils.h
Normal file
@ -0,0 +1,53 @@
|
||||
/*
|
||||
*******************************************************************************
|
||||
* Copyright (c) 2010-2022 VATICS(KNERON) Inc. All rights reserved.
|
||||
*
|
||||
* +-----------------------------------------------------------------+
|
||||
* | THIS SOFTWARE IS FURNISHED UNDER A LICENSE AND MAY ONLY BE USED |
|
||||
* | AND COPIED IN ACCORDANCE WITH THE TERMS AND CONDITIONS OF SUCH |
|
||||
* | A LICENSE AND WITH THE INCLUSION OF THE THIS COPY RIGHT NOTICE. |
|
||||
* | THIS SOFTWARE OR ANY OTHER COPIES OF THIS SOFTWARE MAY NOT BE |
|
||||
* | PROVIDED OR OTHERWISE MADE AVAILABLE TO ANY OTHER PERSON. THE |
|
||||
* | OWNERSHIP AND TITLE OF THIS SOFTWARE IS NOT TRANSFERRED. |
|
||||
* | |
|
||||
* | THE INFORMATION IN THIS SOFTWARE IS SUBJECT TO CHANGE WITHOUT |
|
||||
* | ANY PRIOR NOTICE AND SHOULD NOT BE CONSTRUED AS A COMMITMENT BY |
|
||||
* | VATICS(KNERON) INC. |
|
||||
* +-----------------------------------------------------------------+
|
||||
*
|
||||
*******************************************************************************
|
||||
*/
|
||||
#ifndef __AVI_UTILS_H__
|
||||
#define __AVI_UTILS_H__
|
||||
|
||||
#if 0
|
||||
#include <endian.h>
|
||||
#ifdef __BYTE_ORDER
|
||||
#if __BYTE_ORDER == __BIG_ENDIAN
|
||||
# define MAKEFOURCC(a,b,c,d) ((((uint32_t)a)<<24) | (((uint32_t)b)<<16) | \
|
||||
(((uint32_t)c)<< 8) | ((uint32_t)d))
|
||||
#elif __BYTE_ORDER == __LITTLE_ENDIAN
|
||||
# define MAKEFOURCC(a,b,c,d) (((uint32_t)a) | (((uint32_t)b)<<8) | \
|
||||
(((uint32_t)c)<<16) | (((uint32_t)d)<<24))
|
||||
#elif __BYTE_ORDER == __PDP_ENDIAN
|
||||
# define MAKEFOURCC(a,b,c,d) ((((uint32_t)a)<<16) | (((uint32_t)b)<<24) | \
|
||||
((uint32_t)c) | (((uint32_t)d)<<8))
|
||||
#else
|
||||
#error "Endian determination failed"
|
||||
#endif
|
||||
#endif
|
||||
#endif
|
||||
|
||||
#ifndef MAKEFOURCC
|
||||
#define MAKEFOURCC(a,b,c,d) (((uint32_t)a) | (((uint32_t)b)<<8) | \
|
||||
(((uint32_t)c)<<16) | (((uint32_t)d)<<24))
|
||||
#endif
|
||||
|
||||
#ifndef PRINT_FOURCC
|
||||
#define PRINT_FOURCC(S) *((char*)&(S)),*(((char*)&(S))+1),*(((char*)&(S))+2),*(((char*)&(S))+3)
|
||||
#endif
|
||||
|
||||
#endif
|
||||
|
||||
|
||||
|
||||
152
include/fake/vtcs_root_vienna/avicontainer/avicontainer.h
Normal file
152
include/fake/vtcs_root_vienna/avicontainer/avicontainer.h
Normal file
@ -0,0 +1,152 @@
|
||||
/*
|
||||
*******************************************************************************
|
||||
* Copyright (c) 2010-2022 VATICS(KNERON) Inc. All rights reserved.
|
||||
*
|
||||
* +-----------------------------------------------------------------+
|
||||
* | THIS SOFTWARE IS FURNISHED UNDER A LICENSE AND MAY ONLY BE USED |
|
||||
* | AND COPIED IN ACCORDANCE WITH THE TERMS AND CONDITIONS OF SUCH |
|
||||
* | A LICENSE AND WITH THE INCLUSION OF THE THIS COPY RIGHT NOTICE. |
|
||||
* | THIS SOFTWARE OR ANY OTHER COPIES OF THIS SOFTWARE MAY NOT BE |
|
||||
* | PROVIDED OR OTHERWISE MADE AVAILABLE TO ANY OTHER PERSON. THE |
|
||||
* | OWNERSHIP AND TITLE OF THIS SOFTWARE IS NOT TRANSFERRED. |
|
||||
* | |
|
||||
* | THE INFORMATION IN THIS SOFTWARE IS SUBJECT TO CHANGE WITHOUT |
|
||||
* | ANY PRIOR NOTICE AND SHOULD NOT BE CONSTRUED AS A COMMITMENT BY |
|
||||
* | VATICS(KNERON) INC. |
|
||||
* +-----------------------------------------------------------------+
|
||||
*
|
||||
*******************************************************************************
|
||||
*/
|
||||
|
||||
#ifndef _AVICONTAINER_H_
|
||||
#define _AVICONTAINER_H_
|
||||
|
||||
/*
|
||||
The data format of config info
|
||||
|
||||
Video codecs (H264, JPEG)
|
||||
FOURCC_type (FOURCC_H264 or FOURCC_JPEG, 4 bytes)
|
||||
width (4 bytes)
|
||||
height (4 bytes)
|
||||
|
||||
G711:
|
||||
FOURCC_G711 (4 bytes)
|
||||
compression_format (FOURCC_ULAW or FOURCC_ALAW, 4bytes)
|
||||
|
||||
G726:
|
||||
FOURCC_G726 (4 bytes)
|
||||
dwCodewordBits (bitrate/sample rate, 4 bytes)
|
||||
|
||||
GAMR:
|
||||
FOURCC_GAMR (4 bytes)
|
||||
|
||||
AAC4
|
||||
FOURCC_AAC4 (4 bytes)
|
||||
sameple rate (4 bytes)
|
||||
channel num (4 bytes)
|
||||
*/
|
||||
|
||||
#define AVIC_PADDING_SIZE 2
|
||||
#define AVIC_KEYFRAME 0x00000010
|
||||
#define AVIC_NONE 0x00000000
|
||||
//#define BLOCK_ALIGNMENT
|
||||
|
||||
typedef struct
|
||||
{
|
||||
char *szAVIFile; /**< file name */
|
||||
unsigned int dwVideoTrackNum; /**< The total number of track */
|
||||
unsigned char* ptVideoTrackBufInfo[2]; /**< The video config info array */
|
||||
unsigned int dwAudioTrackNum; /**< total audio number of track */
|
||||
unsigned char* ptAudioTrackBufInfo[2]; /**< The audio config info array */
|
||||
unsigned int dwAviCreateHeader; /**< create avi header when creating file*/
|
||||
#ifdef AVIv2
|
||||
unsigned int dwRecLen; /**< Record length in Seconds*/
|
||||
unsigned int dwFrameToUpdate; /**< Number of frames to trigger SuperIdx Update*/
|
||||
#endif
|
||||
} AVICCreateOptions;
|
||||
|
||||
typedef struct AVICHandle AVICHandle;
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
/**
|
||||
* @brief Function to initialize AVI container.
|
||||
*
|
||||
* @return The handle of AVI container
|
||||
*/
|
||||
AVICHandle* AVIC_Init();
|
||||
|
||||
/**
|
||||
* @brief Function to release AVI container.
|
||||
*
|
||||
* @param[in] handle The handle of AVI container.
|
||||
*/
|
||||
void AVIC_Release(AVICHandle* handle);
|
||||
|
||||
/**
|
||||
* @brief Function to create an AVI file.
|
||||
*
|
||||
* @param[in] handle The handle of AVI container.
|
||||
* @param[in] option The AVI container's configuration.
|
||||
* @return Success: 0 Fail: negative integer.
|
||||
*/
|
||||
int AVIC_CreateFile(AVICHandle* handle, const AVICCreateOptions* option);
|
||||
|
||||
typedef struct
|
||||
{
|
||||
unsigned int dwFlags;
|
||||
unsigned char* data;
|
||||
} avic_sample_info_t;
|
||||
/**
|
||||
* @brief Add a sample into an AVI file.
|
||||
*
|
||||
* @param[in] handle The handle of AVI container.
|
||||
* @param[in] dwTrackID The AVI track id for written data.
|
||||
* @param[in] pbyRawData The pointer to a sample.
|
||||
* @param[in] dwSampleSz the size of a sample.
|
||||
* @return Success: 0 Fail: negative integer.
|
||||
*/
|
||||
int AVIC_AddSample(AVICHandle* handle, unsigned int dwTrackID, const avic_sample_info_t* sample);
|
||||
|
||||
/**
|
||||
* @brief Function to cloase an AVI file.
|
||||
*
|
||||
* @param[in] handle The handle of AVI container.
|
||||
* @param[in] video_duration_ms The video data's duration (in msec).
|
||||
* @return Success: 0 Fail: negative integer.
|
||||
*/
|
||||
int AVIC_CloseFile(AVICHandle* handle, unsigned int video_duration_ms);
|
||||
|
||||
/**
|
||||
* @brief Start/Notify to sync data into disk (Non-Blocking).
|
||||
*
|
||||
* @param[in] handle The handle of AVI container.
|
||||
* @return Success: 0 Fail: negative integer.
|
||||
*/
|
||||
int AVIC_CommitData(AVICHandle* handle);
|
||||
|
||||
/**
|
||||
* @brief Flush I/O cache and sync data into disk.
|
||||
*
|
||||
* @param[in] handle The handle of AVI container.
|
||||
* @return Success: 0 Fail: negative integer.
|
||||
*/
|
||||
int AVIC_FlushCache(AVICHandle* handle);
|
||||
|
||||
#ifdef AVIv2
|
||||
/**
|
||||
* @brief Avi 2.0, Update SuperIndx and standard index
|
||||
*
|
||||
* @param[in] handle The handle of AVI container.
|
||||
* @return Success: 0 Fail: negative integer.
|
||||
*/
|
||||
int AVIC_UpdateFile(AVICHandle* handle, int duration_ms);
|
||||
#endif
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif // _AVICONTAINER_H_
|
||||
64
include/fake/vtcs_root_vienna/c_utils/doubly_linked_list.h
Normal file
64
include/fake/vtcs_root_vienna/c_utils/doubly_linked_list.h
Normal file
@ -0,0 +1,64 @@
|
||||
/*
|
||||
*******************************************************************************
|
||||
* Copyright (c) 2010-2022 VATICS(KNERON) Inc. All rights reserved.
|
||||
*
|
||||
* +-----------------------------------------------------------------+
|
||||
* | THIS SOFTWARE IS FURNISHED UNDER A LICENSE AND MAY ONLY BE USED |
|
||||
* | AND COPIED IN ACCORDANCE WITH THE TERMS AND CONDITIONS OF SUCH |
|
||||
* | A LICENSE AND WITH THE INCLUSION OF THE THIS COPY RIGHT NOTICE. |
|
||||
* | THIS SOFTWARE OR ANY OTHER COPIES OF THIS SOFTWARE MAY NOT BE |
|
||||
* | PROVIDED OR OTHERWISE MADE AVAILABLE TO ANY OTHER PERSON. THE |
|
||||
* | OWNERSHIP AND TITLE OF THIS SOFTWARE IS NOT TRANSFERRED. |
|
||||
* | |
|
||||
* | THE INFORMATION IN THIS SOFTWARE IS SUBJECT TO CHANGE WITHOUT |
|
||||
* | ANY PRIOR NOTICE AND SHOULD NOT BE CONSTRUED AS A COMMITMENT BY |
|
||||
* | VATICS(KNERON) INC. |
|
||||
* +-----------------------------------------------------------------+
|
||||
*
|
||||
*******************************************************************************
|
||||
*/
|
||||
#ifndef __DOUBLY_LINKED_LIST_H__
|
||||
#define __DOUBLY_LINKED_LIST_H__
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
#include <stdlib.h>
|
||||
|
||||
/* Doubly-linked lists. */
|
||||
typedef struct dnode_s
|
||||
{
|
||||
void *data; /**< The data of one node in the doubly-linked lists. */
|
||||
struct dnode_s *prev; /**< The pointer to point the previous node in the doubly-linked lists. */
|
||||
struct dnode_s *next; /**< The pointer to point the next node in the doubly-linked lists. */
|
||||
} dnode_t;
|
||||
|
||||
typedef struct dlinked_list
|
||||
{
|
||||
size_t count; /**< The number of node in the doubly-linked lists. */
|
||||
dnode_t *front; /**< The pointer to point the first node in the doubly-linked lists. */
|
||||
dnode_t *rear; /**< The pointer to point the last node in the doubly-linked lists. */
|
||||
} dlinked_list_t;
|
||||
|
||||
typedef int (*COMP_FUNC_PTR)(const void* data1, const void* data2);
|
||||
|
||||
#define DLIST_FOR_EACH(node_ptr, list_ptr) \
|
||||
for((node_ptr) = (list_ptr)->front; (node_ptr); (node_ptr) = (node_ptr)->next)
|
||||
|
||||
void InitDList(dlinked_list_t *list);
|
||||
dnode_t* CreateDListNode(void *data);
|
||||
void* DestroyDListNode(dnode_t **node);
|
||||
void DListInsertAfter(dlinked_list_t *list, dnode_t *node, dnode_t *new_node);
|
||||
void DListInsertBefore(dlinked_list_t *list, dnode_t *node, dnode_t *new_node);
|
||||
void DListPushFront(dlinked_list_t *list, dnode_t *new_node);
|
||||
void DListPushBack(dlinked_list_t *list, dnode_t *new_node);
|
||||
void DListRemove(dlinked_list_t *list, dnode_t *node);
|
||||
void DListPushBackSort(dlinked_list_t *dlist, dnode_t *new_node, COMP_FUNC_PTR compare_func);
|
||||
void DListSplice(dlinked_list_t *dest_dlist, dlinked_list_t *src_dlist);
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif
|
||||
105
include/fake/vtcs_root_vienna/comm/frame_info.h
Normal file
105
include/fake/vtcs_root_vienna/comm/frame_info.h
Normal file
@ -0,0 +1,105 @@
|
||||
/*
|
||||
*******************************************************************************
|
||||
* Copyright (c) 2010-2022 VATICS(KNERON) Inc. All rights reserved.
|
||||
*
|
||||
* +-----------------------------------------------------------------+
|
||||
* | THIS SOFTWARE IS FURNISHED UNDER A LICENSE AND MAY ONLY BE USED |
|
||||
* | AND COPIED IN ACCORDANCE WITH THE TERMS AND CONDITIONS OF SUCH |
|
||||
* | A LICENSE AND WITH THE INCLUSION OF THE THIS COPY RIGHT NOTICE. |
|
||||
* | THIS SOFTWARE OR ANY OTHER COPIES OF THIS SOFTWARE MAY NOT BE |
|
||||
* | PROVIDED OR OTHERWISE MADE AVAILABLE TO ANY OTHER PERSON. THE |
|
||||
* | OWNERSHIP AND TITLE OF THIS SOFTWARE IS NOT TRANSFERRED. |
|
||||
* | |
|
||||
* | THE INFORMATION IN THIS SOFTWARE IS SUBJECT TO CHANGE WITHOUT |
|
||||
* | ANY PRIOR NOTICE AND SHOULD NOT BE CONSTRUED AS A COMMITMENT BY |
|
||||
* | VATICS(KNERON) INC. |
|
||||
* +-----------------------------------------------------------------+
|
||||
*
|
||||
*******************************************************************************
|
||||
*/
|
||||
#ifndef VMF_FRAME_INFO_H
|
||||
#define VMF_FRAME_INFO_H
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
/*! Make from four character codes to one 32-bits DWORD */
|
||||
#ifndef VMF_MAKEFOURCC
|
||||
#define VMF_MAKEFOURCC(ch0, ch1, ch2, ch3) ((unsigned int)(unsigned char)(ch0) | ((unsigned int)(unsigned char)(ch1) << 8) | ((unsigned int)(unsigned char)(ch2) << 16) | ((unsigned int)(unsigned char)(ch3) << 24 ))
|
||||
#endif //defined(VMF_MAKEFOURCC)
|
||||
|
||||
/*! FOURCC for video conf */
|
||||
#ifndef VMF_FOURCC_CONF
|
||||
#define VMF_FOURCC_CONF (VMF_MAKEFOURCC('C','O','N','F'))
|
||||
#endif
|
||||
|
||||
/*! FOURCC for H264 video codec */
|
||||
#ifndef VMF_FOURCC_H264
|
||||
#define VMF_FOURCC_H264 (VMF_MAKEFOURCC('H','2','6','4'))
|
||||
#endif
|
||||
|
||||
/*! FOURCC for H265 video codec */
|
||||
#ifndef VMF_FOURCC_H265
|
||||
#define VMF_FOURCC_H265 (VMF_MAKEFOURCC('H','2','6','5'))
|
||||
#endif
|
||||
|
||||
/*! FOURCC for JPEG image codec */
|
||||
#ifndef VMF_FOURCC_JPEG
|
||||
#define VMF_FOURCC_JPEG (VMF_MAKEFOURCC('J','P','E','G'))
|
||||
#endif
|
||||
|
||||
/*
|
||||
* A data Structure for HW Device ID
|
||||
*/
|
||||
typedef enum
|
||||
{
|
||||
VMF_HW_VIC = 0,
|
||||
VMF_HW_IFP,
|
||||
VMF_HW_AE,
|
||||
VMF_HW_AWB,
|
||||
VMF_HW_ASC,
|
||||
VMF_HW_ISP
|
||||
} VMF_HW_DEVICE_ID;
|
||||
|
||||
/*
|
||||
* A data Structure for Frame Info
|
||||
*/
|
||||
typedef struct
|
||||
{
|
||||
//! A data for seconds
|
||||
unsigned int dwSec;
|
||||
|
||||
//! A data for microseconds
|
||||
unsigned int dwUSec;
|
||||
} vmf_frame_info_t;
|
||||
|
||||
typedef vmf_frame_info_t VMF_FRAME_INFO_T;
|
||||
|
||||
/*
|
||||
* A data Structure for VMF Buffer
|
||||
*/
|
||||
typedef struct
|
||||
{
|
||||
//! A data for position X
|
||||
unsigned int dwPosX;
|
||||
|
||||
//! A data for position Y
|
||||
unsigned int dwPosY;
|
||||
|
||||
//! A data for stride
|
||||
unsigned int dwStride;
|
||||
|
||||
//! A data for height
|
||||
unsigned int dwHeight;
|
||||
} vmf_buf_alloc_t;
|
||||
|
||||
typedef vmf_buf_alloc_t VMF_BUF_ALLOC_T;
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif
|
||||
|
||||
|
||||
203
include/fake/vtcs_root_vienna/comm/video_buf.h
Normal file
203
include/fake/vtcs_root_vienna/comm/video_buf.h
Normal file
@ -0,0 +1,203 @@
|
||||
/*
|
||||
*******************************************************************************
|
||||
* Copyright (c) 2010-2022 VATICS(KNERON) Inc. All rights reserved.
|
||||
*
|
||||
* +-----------------------------------------------------------------+
|
||||
* | THIS SOFTWARE IS FURNISHED UNDER A LICENSE AND MAY ONLY BE USED |
|
||||
* | AND COPIED IN ACCORDANCE WITH THE TERMS AND CONDITIONS OF SUCH |
|
||||
* | A LICENSE AND WITH THE INCLUSION OF THE THIS COPY RIGHT NOTICE. |
|
||||
* | THIS SOFTWARE OR ANY OTHER COPIES OF THIS SOFTWARE MAY NOT BE |
|
||||
* | PROVIDED OR OTHERWISE MADE AVAILABLE TO ANY OTHER PERSON. THE |
|
||||
* | OWNERSHIP AND TITLE OF THIS SOFTWARE IS NOT TRANSFERRED. |
|
||||
* | |
|
||||
* | THE INFORMATION IN THIS SOFTWARE IS SUBJECT TO CHANGE WITHOUT |
|
||||
* | ANY PRIOR NOTICE AND SHOULD NOT BE CONSTRUED AS A COMMITMENT BY |
|
||||
* | VATICS(KNERON) INC. |
|
||||
* +-----------------------------------------------------------------+
|
||||
*
|
||||
*******************************************************************************
|
||||
*/
|
||||
#ifndef VMF_VIDEO_BUF_H
|
||||
#define VMF_VIDEO_BUF_H
|
||||
|
||||
#define VMF_MAX_SSM_HEADER_SIZE 256
|
||||
#define VMF_MAX_SSM_NAME_SIZE 32
|
||||
#define VMF_MAX_SSM_NAME_PREFIX 10
|
||||
#define VMF_MAX_PATH_LENGTH 256
|
||||
#define VMF_MAX_INPUT_LINE_LENGTH 256
|
||||
#define VMF_MAX_RESIZE_NUM 4
|
||||
|
||||
#define VMF_RESOURCE_IFP_SUBDIR "IFPE/"
|
||||
#define VMF_RESOURCE_ISP_SUBDIR "ISP/"
|
||||
#define VMF_RESOURCE_AE_SUBDIR "AE/"
|
||||
#define VMF_RESOURCE_AWB_SUBDIR "AWB/"
|
||||
#define VMF_RESOURCE_ASC_SUBDIR "AutoScene/"
|
||||
|
||||
#define VMF_8_ALIGN(a) (((a) + 7) & (~7))
|
||||
#define VMF_16_ALIGN(a) (((a) + 15) & (~15))
|
||||
#define VMF_32_ALIGN(a) (((a) + 31) & (~31))
|
||||
#define VMF_64_ALIGN(a) (((a) + 63) & (~63))
|
||||
#define VMF_128_ALIGN(a) (((a) + 127) & (~127))
|
||||
#define VMF_256_ALIGN(a) (((a) + 255) & (~255))
|
||||
|
||||
|
||||
#define ENC_DEFAULT_FPS 30
|
||||
#define ENC_MAX_FPS 120
|
||||
#define ENC_DEFAULT_GOP 30
|
||||
#define ENC_MAX_GOP 1200
|
||||
|
||||
#define DEFAULT_QP 25
|
||||
#define MIN_QP 10
|
||||
#define MAX_QP 45
|
||||
|
||||
#define H265_MIN_QP 0
|
||||
#define H265_MAX_QP 51
|
||||
|
||||
/*
|
||||
* Video signal format flag enumeration
|
||||
*/
|
||||
typedef enum
|
||||
{
|
||||
VMF_VIDEO_SIGNAL_FREQUENCY_50HZ = 1,
|
||||
VMF_VIDEO_SIGNAL_FREQUENCY_60HZ = 2,
|
||||
VMF_VIDEO_SIGNAL_FREQUENCY_24HZ = 3,
|
||||
VMF_VIDEO_SIGNAL_FREQUENCY_30HZ = 4
|
||||
} VMF_VIDEO_SIGNAL_FREQUENCY;
|
||||
|
||||
/*
|
||||
* Video format flag enumeration
|
||||
*/
|
||||
typedef enum
|
||||
{
|
||||
VMF_FRAME_FORMAT_MONO = 1,
|
||||
VMF_FRAME_FORMAT_NORMAL_BAY = 11,
|
||||
VMF_FRAME_FORMAT_NORMAL_YUV422 = 12,
|
||||
VMF_FRAME_FORMAT_NORMAL_RGBIr = 13,
|
||||
VMF_FRAME_FORMAT_NORMAL_YUV420 = 14,
|
||||
VMF_FRAME_FORMAT_NORMAL_YUV444 = 15,
|
||||
VMF_FRAME_FORMAT_DECOMPANDING_BAY = 21,
|
||||
VMF_FRAME_FORMAT_DECOMPANDING_YUV422 = 22,
|
||||
VMF_FRAME_FORMAT_DECOMPANDING_RGBIr = 23,
|
||||
VMF_FRAME_FORMAT_DECOMPANDING_YUV420 = 24,
|
||||
VMF_FRAME_FORMAT_FUSION_BAY = 31,
|
||||
VMF_FRAME_FORMAT_FUSION_YUV422 = 32,
|
||||
VMF_FRAME_FORMAT_FUSION_RGBIr = 33,
|
||||
VMF_FRAME_FORMAT_FUSION_YUV420 = 34,
|
||||
VMF_FRAME_FORMAT_NORMAL_14BIT = 999 //! Specical mode
|
||||
} VMF_VIDEO_FORMAT;
|
||||
|
||||
/*
|
||||
* A data structure for vmf video buffer
|
||||
*/
|
||||
typedef struct
|
||||
{
|
||||
//! A data for Video format
|
||||
VMF_VIDEO_FORMAT eVideoFormat;
|
||||
//! A data for input and output Width
|
||||
unsigned int dwWidth;
|
||||
//! A data for input and output Height
|
||||
unsigned int dwHeight;
|
||||
//! A data for input and output stride
|
||||
unsigned int adwStride[4];
|
||||
//! A data for exchanging information between hardware engines.
|
||||
unsigned int adwHWInfo[12];
|
||||
//! A data for input virtual address
|
||||
unsigned char *apbyVirtAddr[4];
|
||||
//! A data for input physical address
|
||||
unsigned char *apbyPhysAddr[4];
|
||||
} VMF_VIDEO_BUF_T;
|
||||
|
||||
/*
|
||||
* A data structure for vmf frame buffer
|
||||
*/
|
||||
typedef struct
|
||||
{
|
||||
//! A data for frame buffer
|
||||
unsigned char* apdwData[4];
|
||||
} VMF_FRAME_BUF_T;
|
||||
|
||||
/*
|
||||
* A data structure for vmf canvas
|
||||
*/
|
||||
typedef struct
|
||||
{
|
||||
//! A data for Width
|
||||
unsigned int dwWidth;
|
||||
//! A data for Height
|
||||
unsigned int dwHeight;
|
||||
//! A data for Start X
|
||||
unsigned int dwAlignedStartX;
|
||||
//! A data for Start X, Y offset should match the hardware restriction
|
||||
unsigned int dwStartX;
|
||||
//! A data for Start Y
|
||||
unsigned int dwStartY;
|
||||
} VMF_CANVAS_T;
|
||||
|
||||
/*
|
||||
* A data structure for vmf layout
|
||||
*/
|
||||
typedef struct
|
||||
{
|
||||
//! A data for Canvas Width
|
||||
unsigned int dwCanvasWidth;
|
||||
//! A data for Canvas Height
|
||||
unsigned int dwCanvasHeight;
|
||||
//! A data for Video Positon X
|
||||
unsigned int dwVideoPosX;
|
||||
//! A data for Video Positon Y
|
||||
unsigned int dwVideoPosY;
|
||||
//! A data for Video Width
|
||||
unsigned int dwVideoWidth;
|
||||
//! A data for Video Height
|
||||
unsigned int dwVideoHeight;
|
||||
} VMF_LAYOUT_T;
|
||||
|
||||
/*
|
||||
* A data structure for venc input info
|
||||
*/
|
||||
typedef struct
|
||||
{
|
||||
//! A data for checkin physical address
|
||||
unsigned int bIsPhyAddress;
|
||||
//! A data for seconds
|
||||
unsigned int dwSec;
|
||||
//! A data for microseconds
|
||||
unsigned int dwUsec;
|
||||
//! A data for Frame Buffer
|
||||
VMF_FRAME_BUF_T tFrameBuf;
|
||||
//! A data for Frame Buffer Physical adddress
|
||||
VMF_FRAME_BUF_T tFrameBufPhys;
|
||||
//! A data for Map Info
|
||||
void* pMapInfo;
|
||||
//! A data for VSRC Output Info
|
||||
void* pVsrcOutputInfo;
|
||||
} VMF_VENC_INPUT_INFO_T;
|
||||
|
||||
/*
|
||||
* A data structure for venc output info
|
||||
*/
|
||||
typedef struct
|
||||
{
|
||||
//! A data for destination buffer virtual address
|
||||
unsigned char* pbyDstVirtBuf;
|
||||
//! A data for destination buffer phisical address
|
||||
unsigned char* pbyDstPhysBuf;
|
||||
//! A data for destination buffer size limit
|
||||
unsigned int dwBufSize;
|
||||
//! A data for watermark string NULL: no watermark, Others: watermark string
|
||||
const char* pszWatermarkStr;
|
||||
} VMF_VENC_OUTPUT_INFO_T;
|
||||
|
||||
/**
|
||||
* A structure for point
|
||||
*/
|
||||
typedef struct
|
||||
{
|
||||
//! A data for point x
|
||||
unsigned int dwX;
|
||||
//! A data for point y
|
||||
unsigned int dwY;
|
||||
}VMF_POINT_T;
|
||||
|
||||
|
||||
#endif //! VMTK_FRAME_H
|
||||
68
include/fake/vtcs_root_vienna/comm/vmf_log.h
Normal file
68
include/fake/vtcs_root_vienna/comm/vmf_log.h
Normal file
@ -0,0 +1,68 @@
|
||||
/*
|
||||
*******************************************************************************
|
||||
* Copyright (c) 2010-2022 VATICS(KNERON) Inc. All rights reserved.
|
||||
*
|
||||
* +-----------------------------------------------------------------+
|
||||
* | THIS SOFTWARE IS FURNISHED UNDER A LICENSE AND MAY ONLY BE USED |
|
||||
* | AND COPIED IN ACCORDANCE WITH THE TERMS AND CONDITIONS OF SUCH |
|
||||
* | A LICENSE AND WITH THE INCLUSION OF THE THIS COPY RIGHT NOTICE. |
|
||||
* | THIS SOFTWARE OR ANY OTHER COPIES OF THIS SOFTWARE MAY NOT BE |
|
||||
* | PROVIDED OR OTHERWISE MADE AVAILABLE TO ANY OTHER PERSON. THE |
|
||||
* | OWNERSHIP AND TITLE OF THIS SOFTWARE IS NOT TRANSFERRED. |
|
||||
* | |
|
||||
* | THE INFORMATION IN THIS SOFTWARE IS SUBJECT TO CHANGE WITHOUT |
|
||||
* | ANY PRIOR NOTICE AND SHOULD NOT BE CONSTRUED AS A COMMITMENT BY |
|
||||
* | VATICS(KNERON) INC. |
|
||||
* +-----------------------------------------------------------------+
|
||||
*
|
||||
*******************************************************************************
|
||||
*/
|
||||
#ifndef __COMM_VMF_LOG_H__
|
||||
#define __COMM_VMF_LOG_H__
|
||||
#include <stdio.h>
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
#define VMF_DML_ERROR 0x01
|
||||
#define VMF_DML_WARNING 0x02
|
||||
#define VMF_DML_INFO 0x04
|
||||
#define VMF_DML_DEBUG 0x08
|
||||
#define VMF_DML_TRACE 0x10
|
||||
#define VMF_DML_PROFILE 0x20
|
||||
#define VMF_DML_PROFILE2 0x40
|
||||
#define DEFAULT_DEBUG_MESSAGE_LEVEL 0x0F
|
||||
|
||||
extern int vmfDebugMessageLevel;
|
||||
|
||||
void VMF_SetDebugMessageLevel(int level);
|
||||
int VMF_GetGodshandTimer( char * description );
|
||||
|
||||
#define LogE(tag, fmt, ...) \
|
||||
if (vmfDebugMessageLevel & VMF_DML_ERROR) do { printf("E/[%s] " fmt, tag, ##__VA_ARGS__); } while (0)
|
||||
|
||||
#define LogW(tag, fmt, ...) \
|
||||
if (vmfDebugMessageLevel & VMF_DML_WARNING) do { printf("W/[%s] " fmt, tag, ##__VA_ARGS__); } while (0)
|
||||
|
||||
#define LogI(tag, fmt, ...) \
|
||||
if (vmfDebugMessageLevel & VMF_DML_INFO) do { printf("I/[%s] " fmt, tag, ##__VA_ARGS__); } while (0)
|
||||
|
||||
#define LogD(tag, fmt, ...) \
|
||||
if (vmfDebugMessageLevel & VMF_DML_DEBUG) do { printf("D/[%s] " fmt, tag, ##__VA_ARGS__); } while (0)
|
||||
|
||||
#define LogT(tag, fmt, ...) \
|
||||
if (vmfDebugMessageLevel & VMF_DML_TRACE) do { printf("T/[%s] " fmt, tag, ##__VA_ARGS__); } while (0)
|
||||
|
||||
#define LogP(tag, fmt, ...) \
|
||||
if (vmfDebugMessageLevel & VMF_DML_PROFILE) do { printf("P1/[%s] " fmt, tag, ##__VA_ARGS__); } while (0)
|
||||
|
||||
|
||||
#define LogP2(tag, fmt, ...) \
|
||||
if (vmfDebugMessageLevel & VMF_DML_PROFILE2) do { printf("P2/[%s] " fmt, tag, ##__VA_ARGS__); } while (0)
|
||||
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif //__COMM_VMF_LOG_H__
|
||||
207
include/fake/vtcs_root_vienna/datacrypto/data_crypto.h
Normal file
207
include/fake/vtcs_root_vienna/datacrypto/data_crypto.h
Normal file
@ -0,0 +1,207 @@
|
||||
/*
|
||||
*******************************************************************************
|
||||
* Copyright (c) 2010-2022 VATICS(KNERON) Inc. All rights reserved.
|
||||
*
|
||||
* +-----------------------------------------------------------------+
|
||||
* | THIS SOFTWARE IS FURNISHED UNDER A LICENSE AND MAY ONLY BE USED |
|
||||
* | AND COPIED IN ACCORDANCE WITH THE TERMS AND CONDITIONS OF SUCH |
|
||||
* | A LICENSE AND WITH THE INCLUSION OF THE THIS COPY RIGHT NOTICE. |
|
||||
* | THIS SOFTWARE OR ANY OTHER COPIES OF THIS SOFTWARE MAY NOT BE |
|
||||
* | PROVIDED OR OTHERWISE MADE AVAILABLE TO ANY OTHER PERSON. THE |
|
||||
* | OWNERSHIP AND TITLE OF THIS SOFTWARE IS NOT TRANSFERRED. |
|
||||
* | |
|
||||
* | THE INFORMATION IN THIS SOFTWARE IS SUBJECT TO CHANGE WITHOUT |
|
||||
* | ANY PRIOR NOTICE AND SHOULD NOT BE CONSTRUED AS A COMMITMENT BY |
|
||||
* | VATICS(KNERON) INC. |
|
||||
* +-----------------------------------------------------------------+
|
||||
*
|
||||
*******************************************************************************
|
||||
*/
|
||||
|
||||
#ifndef DATA_CRYPTO
|
||||
#define DATA_CRYPTO
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
/*
|
||||
* DataCrypto operation flag
|
||||
*/
|
||||
typedef enum vmf_dce_op_flags
|
||||
{
|
||||
VMF_DCE_OP_ENCRYPT = 0,
|
||||
VMF_DCE_OP_DECRYPT = 1,
|
||||
VMF_DCE_OP_HASH = 2
|
||||
} VMF_DCE_OP_FLAG;
|
||||
|
||||
/*
|
||||
* DataCrypto encrypto mode flag
|
||||
*/
|
||||
typedef enum vmf_dce_encrypt_mode
|
||||
{
|
||||
VMF_ENCRYPT_MODE_EBC = 0,
|
||||
VMF_ENCRYPT_MODE_CBC = 1,
|
||||
VMF_ENCRYPT_MODE_CFB = 2,
|
||||
VMF_ENCRYPT_MODE_OFB = 3,
|
||||
VMF_ENCRYPT_MODE_CTR = 4
|
||||
} VMF_DCE_ENCRYPT_MODE;
|
||||
|
||||
/*
|
||||
* DataCrypto encrypto type flag
|
||||
*/
|
||||
typedef enum vmf_dce_encrypt_type
|
||||
{
|
||||
VMF_ENCRYPT_TYPE_AES = 0,
|
||||
VMF_ENCRYPT_TYPE_TDES = 1,
|
||||
VMF_ENCRYPT_TYPE_DES = 2
|
||||
} VMF_DCE_ENCRYPT_TYPE;
|
||||
|
||||
/*
|
||||
* DataCrypto hash type flag
|
||||
*/
|
||||
typedef enum vmf_dce_hash_type
|
||||
{
|
||||
VMF_DCE_HASH_TYPE_SHA_1 = 0,
|
||||
VMF_DCE_HASH_TYPE_SHA_256 = 2,
|
||||
VMF_DCE_HASH_TYPE_SHA_224 = 3,
|
||||
VMF_DCE_HASH_TYPE_SHA_512 = 4,
|
||||
VMF_DCE_HASH_TYPE_SHA_384 = 5
|
||||
} VMF_DCE_HASH_TYPE;
|
||||
|
||||
/*
|
||||
* DataCrypto hash mode flag
|
||||
*/
|
||||
typedef enum vmf_dce_hash_mode
|
||||
{
|
||||
VMF_DCE_HASH_MODE_HASHING_ONLY = 0,
|
||||
VMF_DCE_HASH_MODE_HMAC = 1
|
||||
} VMF_DCE_HASH_MODE;
|
||||
|
||||
/*
|
||||
* DataCrypto hash stat flag
|
||||
*/
|
||||
typedef enum vmf_dce_hash_stat
|
||||
{
|
||||
VMF_DCE_HASH_STAT_BEGIN = 0,
|
||||
VMF_DCE_HASH_STAT_END = 1,
|
||||
VMF_DCE_HASH_STAT_MID = 2
|
||||
} VMF_DCE_HASH_STAT;
|
||||
|
||||
/*
|
||||
* A data structure for cipher
|
||||
*/
|
||||
typedef struct vmf_dce_cipher_t
|
||||
{
|
||||
//!encrypto type flag: NCRYPT_AES, ENCRYPT_TDES, ENCRYPT_DES
|
||||
VMF_DCE_ENCRYPT_TYPE eCryptoType;
|
||||
|
||||
//!encrypto mode flag: EBC_MODE, CBC_MODE, CFB_MODE, OFB_MODE, CTR_MODE
|
||||
VMF_DCE_ENCRYPT_MODE eCryptoMode;
|
||||
|
||||
//! A data for key size
|
||||
unsigned int dwKeySize;
|
||||
|
||||
}VMF_DCE_CIPHER_T;
|
||||
|
||||
/*
|
||||
* A data structure for hash
|
||||
*/
|
||||
typedef struct vmf_dce_hash_t
|
||||
{
|
||||
//!hash type flag: HASH_SHA_1, HASH_SHA_256, HASH_SHA_224, HASH_SHA_512, HASH_SHA_384
|
||||
VMF_DCE_HASH_TYPE eHashType;
|
||||
|
||||
//!hash mode flag: HASHING_ONLY, HMAC
|
||||
VMF_DCE_HASH_MODE eHashMode;
|
||||
|
||||
//!hash stat flag: HASH_BEGIN, HASH_END, HASH_MIDDLE
|
||||
VMF_DCE_HASH_STAT eHashStat;
|
||||
|
||||
//! A data for Hash size
|
||||
unsigned int dwHashSize;
|
||||
}VMF_DCE_HASH_T;
|
||||
|
||||
/*
|
||||
* A data structure for DataCrypto
|
||||
*/
|
||||
typedef struct vmf_dce_state_t
|
||||
{
|
||||
//!operation flag: OP_ENCRYPTION, OP_DECRYPTION, OP_HASH
|
||||
VMF_DCE_OP_FLAG eOpMode;
|
||||
|
||||
//! A data for text size
|
||||
unsigned int dwTextSize;
|
||||
|
||||
//! A data for DCE data info (VMF_DCE_CIPHER_T or VMF_DCE_HASH_T)
|
||||
void* ptDceInfo;
|
||||
} VMF_DCE_STATE_T;
|
||||
|
||||
typedef struct vmf_dce_handle_t VMF_DCE_HANDLE_T;
|
||||
|
||||
typedef struct vmf_dce_initopt_t {
|
||||
//! A data for key virtual buffer, 128byte alignment
|
||||
unsigned char *pbyKeyVirtBuff;
|
||||
|
||||
//! A data for initialization vector buffer, 16byte alignment
|
||||
unsigned char *pbyInitVectorVirtBuff;
|
||||
|
||||
//! A data for input virtual buffer, 128byte alignment
|
||||
unsigned char *pbyInputVirtBuff;
|
||||
|
||||
//! A data for outoput virtual buffer, 128byte alignment
|
||||
unsigned char *pbyOutputVirtBuff;
|
||||
} VMF_DCE_INITOPT_T;
|
||||
|
||||
|
||||
typedef struct vmf_encryption_info_t {
|
||||
//! A data for plain text buffer, 16byte alignment
|
||||
unsigned char* ptPlainText;
|
||||
|
||||
//! A data for cipher text buffer, 16byte alignment
|
||||
unsigned char *ptCipherText;
|
||||
|
||||
//! A data for plain text length, 16 alignment
|
||||
unsigned int dwTextLength;
|
||||
} VMF_ENCRYPTION_INFO_T;
|
||||
|
||||
|
||||
/**
|
||||
* @brief Function to initialize datacrypto handle.
|
||||
*
|
||||
* @param[in] ptInitOpt Initial options for DCE handle.
|
||||
* @return The handle of DCE handle.
|
||||
*/
|
||||
VMF_DCE_HANDLE_T* VMF_DCE_Init(const VMF_DCE_INITOPT_T* ptInitOpt);
|
||||
|
||||
/**
|
||||
* @brief Function to release datacrypto handle.
|
||||
*
|
||||
* @param[in] ptHandle The datacrypto handle.
|
||||
* @return Success: 0 Fail: negative integer.
|
||||
*/
|
||||
int VMF_DCE_Release(VMF_DCE_HANDLE_T* ptHandle);
|
||||
|
||||
/**
|
||||
* @brief Function to process datacrypto one frame.
|
||||
*
|
||||
* @param[in] pHandle The handle of datacrypto.
|
||||
* @param[in] pState The state of datacrypto.
|
||||
* @return Success: 0 Fail: negative integer.
|
||||
*/
|
||||
int VMF_DCE_ProcessOneFrame(VMF_DCE_HANDLE_T* ptHandle, VMF_DCE_STATE_T *pState);
|
||||
|
||||
|
||||
/**
|
||||
* @brief Function to process datacrypto on customer key.
|
||||
*
|
||||
* @param[in] ptEncryptionInfo The point of encryptin information.
|
||||
* @return Success: 0 Fail: -1.
|
||||
*/
|
||||
int VMF_Customer_Key_Encryption(VMF_ENCRYPTION_INFO_T* ptEncryptionInfo);
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif
|
||||
@ -0,0 +1,515 @@
|
||||
/* ftconfig.h. Generated from ftconfig.in by configure. */
|
||||
/***************************************************************************/
|
||||
/* */
|
||||
/* ftconfig.in */
|
||||
/* */
|
||||
/* UNIX-specific configuration file (specification only). */
|
||||
/* */
|
||||
/* Copyright 1996-2016 by */
|
||||
/* David Turner, Robert Wilhelm, and Werner Lemberg. */
|
||||
/* */
|
||||
/* This file is part of the FreeType project, and may only be used, */
|
||||
/* modified, and distributed under the terms of the FreeType project */
|
||||
/* license, LICENSE.TXT. By continuing to use, modify, or distribute */
|
||||
/* this file you indicate that you have read the license and */
|
||||
/* understand and accept it fully. */
|
||||
/* */
|
||||
/***************************************************************************/
|
||||
|
||||
|
||||
/*************************************************************************/
|
||||
/* */
|
||||
/* This header file contains a number of macro definitions that are used */
|
||||
/* by the rest of the engine. Most of the macros here are automatically */
|
||||
/* determined at compile time, and you should not need to change it to */
|
||||
/* port FreeType, except to compile the library with a non-ANSI */
|
||||
/* compiler. */
|
||||
/* */
|
||||
/* Note however that if some specific modifications are needed, we */
|
||||
/* advise you to place a modified copy in your build directory. */
|
||||
/* */
|
||||
/* The build directory is usually `builds/<system>', and contains */
|
||||
/* system-specific files that are always included first when building */
|
||||
/* the library. */
|
||||
/* */
|
||||
/*************************************************************************/
|
||||
|
||||
|
||||
#ifndef FTCONFIG_H_
|
||||
#define FTCONFIG_H_
|
||||
|
||||
#include <ft2build.h>
|
||||
#include FT_CONFIG_OPTIONS_H
|
||||
#include FT_CONFIG_STANDARD_LIBRARY_H
|
||||
|
||||
|
||||
FT_BEGIN_HEADER
|
||||
|
||||
|
||||
/*************************************************************************/
|
||||
/* */
|
||||
/* PLATFORM-SPECIFIC CONFIGURATION MACROS */
|
||||
/* */
|
||||
/* These macros can be toggled to suit a specific system. The current */
|
||||
/* ones are defaults used to compile FreeType in an ANSI C environment */
|
||||
/* (16bit compilers are also supported). Copy this file to your own */
|
||||
/* `builds/<system>' directory, and edit it to port the engine. */
|
||||
/* */
|
||||
/*************************************************************************/
|
||||
|
||||
|
||||
#define HAVE_UNISTD_H 1
|
||||
#define HAVE_FCNTL_H 1
|
||||
#define HAVE_STDINT_H 1
|
||||
|
||||
|
||||
/* There are systems (like the Texas Instruments 'C54x) where a `char' */
|
||||
/* has 16 bits. ANSI C says that sizeof(char) is always 1. Since an */
|
||||
/* `int' has 16 bits also for this system, sizeof(int) gives 1 which */
|
||||
/* is probably unexpected. */
|
||||
/* */
|
||||
/* `CHAR_BIT' (defined in limits.h) gives the number of bits in a */
|
||||
/* `char' type. */
|
||||
|
||||
#ifndef FT_CHAR_BIT
|
||||
#define FT_CHAR_BIT CHAR_BIT
|
||||
#endif
|
||||
|
||||
|
||||
/* #undef FT_USE_AUTOCONF_SIZEOF_TYPES */
|
||||
#ifdef FT_USE_AUTOCONF_SIZEOF_TYPES
|
||||
|
||||
#define SIZEOF_INT 4
|
||||
#define SIZEOF_LONG 4
|
||||
#define FT_SIZEOF_INT SIZEOF_INT
|
||||
#define FT_SIZEOF_LONG SIZEOF_LONG
|
||||
|
||||
#else /* !FT_USE_AUTOCONF_SIZEOF_TYPES */
|
||||
|
||||
/* Following cpp computation of the bit length of int and long */
|
||||
/* is copied from default include/freetype/config/ftconfig.h. */
|
||||
/* If any improvement is required for this file, it should be */
|
||||
/* applied to the original header file for the builders that */
|
||||
/* do not use configure script. */
|
||||
|
||||
/* The size of an `int' type. */
|
||||
#if FT_UINT_MAX == 0xFFFFUL
|
||||
#define FT_SIZEOF_INT (16 / FT_CHAR_BIT)
|
||||
#elif FT_UINT_MAX == 0xFFFFFFFFUL
|
||||
#define FT_SIZEOF_INT (32 / FT_CHAR_BIT)
|
||||
#elif FT_UINT_MAX > 0xFFFFFFFFUL && FT_UINT_MAX == 0xFFFFFFFFFFFFFFFFUL
|
||||
#define FT_SIZEOF_INT (64 / FT_CHAR_BIT)
|
||||
#else
|
||||
#error "Unsupported size of `int' type!"
|
||||
#endif
|
||||
|
||||
/* The size of a `long' type. A five-byte `long' (as used e.g. on the */
|
||||
/* DM642) is recognized but avoided. */
|
||||
#if FT_ULONG_MAX == 0xFFFFFFFFUL
|
||||
#define FT_SIZEOF_LONG (32 / FT_CHAR_BIT)
|
||||
#elif FT_ULONG_MAX > 0xFFFFFFFFUL && FT_ULONG_MAX == 0xFFFFFFFFFFUL
|
||||
#define FT_SIZEOF_LONG (32 / FT_CHAR_BIT)
|
||||
#elif FT_ULONG_MAX > 0xFFFFFFFFUL && FT_ULONG_MAX == 0xFFFFFFFFFFFFFFFFUL
|
||||
#define FT_SIZEOF_LONG (64 / FT_CHAR_BIT)
|
||||
#else
|
||||
#error "Unsupported size of `long' type!"
|
||||
#endif
|
||||
|
||||
#endif /* !FT_USE_AUTOCONF_SIZEOF_TYPES */
|
||||
|
||||
|
||||
/* FT_UNUSED is a macro used to indicate that a given parameter is not */
|
||||
/* used -- this is only used to get rid of unpleasant compiler warnings */
|
||||
#ifndef FT_UNUSED
|
||||
#define FT_UNUSED( arg ) ( (arg) = (arg) )
|
||||
#endif
|
||||
|
||||
|
||||
/*************************************************************************/
|
||||
/* */
|
||||
/* AUTOMATIC CONFIGURATION MACROS */
|
||||
/* */
|
||||
/* These macros are computed from the ones defined above. Don't touch */
|
||||
/* their definition, unless you know precisely what you are doing. No */
|
||||
/* porter should need to mess with them. */
|
||||
/* */
|
||||
/*************************************************************************/
|
||||
|
||||
|
||||
/*************************************************************************/
|
||||
/* */
|
||||
/* Mac support */
|
||||
/* */
|
||||
/* This is the only necessary change, so it is defined here instead */
|
||||
/* providing a new configuration file. */
|
||||
/* */
|
||||
#if defined( __APPLE__ ) || ( defined( __MWERKS__ ) && defined( macintosh ) )
|
||||
/* no Carbon frameworks for 64bit 10.4.x */
|
||||
/* AvailabilityMacros.h is available since Mac OS X 10.2, */
|
||||
/* so guess the system version by maximum errno before inclusion */
|
||||
#include <errno.h>
|
||||
#ifdef ECANCELED /* defined since 10.2 */
|
||||
#include "AvailabilityMacros.h"
|
||||
#endif
|
||||
#if defined( __LP64__ ) && \
|
||||
( MAC_OS_X_VERSION_MIN_REQUIRED <= MAC_OS_X_VERSION_10_4 )
|
||||
#undef FT_MACINTOSH
|
||||
#endif
|
||||
|
||||
#elif defined( __SC__ ) || defined( __MRC__ )
|
||||
/* Classic MacOS compilers */
|
||||
#include "ConditionalMacros.h"
|
||||
#if TARGET_OS_MAC
|
||||
#define FT_MACINTOSH 1
|
||||
#endif
|
||||
|
||||
#endif
|
||||
|
||||
|
||||
/* Fix compiler warning with sgi compiler */
|
||||
#if defined( __sgi ) && !defined( __GNUC__ )
|
||||
#if defined( _COMPILER_VERSION ) && ( _COMPILER_VERSION >= 730 )
|
||||
#pragma set woff 3505
|
||||
#endif
|
||||
#endif
|
||||
|
||||
|
||||
/*************************************************************************/
|
||||
/* */
|
||||
/* <Section> */
|
||||
/* basic_types */
|
||||
/* */
|
||||
/*************************************************************************/
|
||||
|
||||
|
||||
/*************************************************************************/
|
||||
/* */
|
||||
/* <Type> */
|
||||
/* FT_Int16 */
|
||||
/* */
|
||||
/* <Description> */
|
||||
/* A typedef for a 16bit signed integer type. */
|
||||
/* */
|
||||
typedef signed short FT_Int16;
|
||||
|
||||
|
||||
/*************************************************************************/
|
||||
/* */
|
||||
/* <Type> */
|
||||
/* FT_UInt16 */
|
||||
/* */
|
||||
/* <Description> */
|
||||
/* A typedef for a 16bit unsigned integer type. */
|
||||
/* */
|
||||
typedef unsigned short FT_UInt16;
|
||||
|
||||
/* */
|
||||
|
||||
|
||||
/* this #if 0 ... #endif clause is for documentation purposes */
|
||||
#if 0
|
||||
|
||||
/*************************************************************************/
|
||||
/* */
|
||||
/* <Type> */
|
||||
/* FT_Int32 */
|
||||
/* */
|
||||
/* <Description> */
|
||||
/* A typedef for a 32bit signed integer type. The size depends on */
|
||||
/* the configuration. */
|
||||
/* */
|
||||
typedef signed XXX FT_Int32;
|
||||
|
||||
|
||||
/*************************************************************************/
|
||||
/* */
|
||||
/* <Type> */
|
||||
/* FT_UInt32 */
|
||||
/* */
|
||||
/* A typedef for a 32bit unsigned integer type. The size depends on */
|
||||
/* the configuration. */
|
||||
/* */
|
||||
typedef unsigned XXX FT_UInt32;
|
||||
|
||||
|
||||
/*************************************************************************/
|
||||
/* */
|
||||
/* <Type> */
|
||||
/* FT_Int64 */
|
||||
/* */
|
||||
/* A typedef for a 64bit signed integer type. The size depends on */
|
||||
/* the configuration. Only defined if there is real 64bit support; */
|
||||
/* otherwise, it gets emulated with a structure (if necessary). */
|
||||
/* */
|
||||
typedef signed XXX FT_Int64;
|
||||
|
||||
|
||||
/*************************************************************************/
|
||||
/* */
|
||||
/* <Type> */
|
||||
/* FT_UInt64 */
|
||||
/* */
|
||||
/* A typedef for a 64bit unsigned integer type. The size depends on */
|
||||
/* the configuration. Only defined if there is real 64bit support; */
|
||||
/* otherwise, it gets emulated with a structure (if necessary). */
|
||||
/* */
|
||||
typedef unsigned XXX FT_UInt64;
|
||||
|
||||
/* */
|
||||
|
||||
#endif
|
||||
|
||||
#if FT_SIZEOF_INT == 4
|
||||
|
||||
typedef signed int FT_Int32;
|
||||
typedef unsigned int FT_UInt32;
|
||||
|
||||
#elif FT_SIZEOF_LONG == 4
|
||||
|
||||
typedef signed long FT_Int32;
|
||||
typedef unsigned long FT_UInt32;
|
||||
|
||||
#else
|
||||
#error "no 32bit type found -- please check your configuration files"
|
||||
#endif
|
||||
|
||||
|
||||
/* look up an integer type that is at least 32 bits */
|
||||
#if FT_SIZEOF_INT >= 4
|
||||
|
||||
typedef int FT_Fast;
|
||||
typedef unsigned int FT_UFast;
|
||||
|
||||
#elif FT_SIZEOF_LONG >= 4
|
||||
|
||||
typedef long FT_Fast;
|
||||
typedef unsigned long FT_UFast;
|
||||
|
||||
#endif
|
||||
|
||||
|
||||
/* determine whether we have a 64-bit int type */
|
||||
/* (mostly for environments without `autoconf') */
|
||||
#if FT_SIZEOF_LONG == 8
|
||||
|
||||
/* FT_LONG64 must be defined if a 64-bit type is available */
|
||||
#define FT_LONG64
|
||||
#define FT_INT64 long
|
||||
#define FT_UINT64 unsigned long
|
||||
|
||||
/* we handle the LLP64 scheme separately for GCC and clang, */
|
||||
/* suppressing the `long long' warning */
|
||||
#elif ( FT_SIZEOF_LONG == 4 ) && \
|
||||
defined( HAVE_LONG_LONG_INT ) && \
|
||||
defined( __GNUC__ )
|
||||
#pragma GCC diagnostic ignored "-Wlong-long"
|
||||
#define FT_LONG64
|
||||
#define FT_INT64 long long int
|
||||
#define FT_UINT64 unsigned long long int
|
||||
|
||||
/*************************************************************************/
|
||||
/* */
|
||||
/* A 64-bit data type may create compilation problems if you compile */
|
||||
/* in strict ANSI mode. To avoid them, we disable other 64-bit data */
|
||||
/* types if __STDC__ is defined. You can however ignore this rule */
|
||||
/* by defining the FT_CONFIG_OPTION_FORCE_INT64 configuration macro. */
|
||||
/* */
|
||||
#elif !defined( __STDC__ ) || defined( FT_CONFIG_OPTION_FORCE_INT64 )
|
||||
|
||||
#if defined( __STDC_VERSION__ ) && __STDC_VERSION__ >= 199901L
|
||||
|
||||
#define FT_LONG64
|
||||
#define FT_INT64 long long int
|
||||
#define FT_UINT64 unsigned long long int
|
||||
|
||||
#elif defined( _MSC_VER ) && _MSC_VER >= 900 /* Visual C++ (and Intel C++) */
|
||||
|
||||
/* this compiler provides the __int64 type */
|
||||
#define FT_LONG64
|
||||
#define FT_INT64 __int64
|
||||
#define FT_UINT64 unsigned __int64
|
||||
|
||||
#elif defined( __BORLANDC__ ) /* Borland C++ */
|
||||
|
||||
/* XXXX: We should probably check the value of __BORLANDC__ in order */
|
||||
/* to test the compiler version. */
|
||||
|
||||
/* this compiler provides the __int64 type */
|
||||
#define FT_LONG64
|
||||
#define FT_INT64 __int64
|
||||
#define FT_UINT64 unsigned __int64
|
||||
|
||||
#elif defined( __WATCOMC__ ) /* Watcom C++ */
|
||||
|
||||
/* Watcom doesn't provide 64-bit data types */
|
||||
|
||||
#elif defined( __MWERKS__ ) /* Metrowerks CodeWarrior */
|
||||
|
||||
#define FT_LONG64
|
||||
#define FT_INT64 long long int
|
||||
#define FT_UINT64 unsigned long long int
|
||||
|
||||
#elif defined( __GNUC__ )
|
||||
|
||||
/* GCC provides the `long long' type */
|
||||
#define FT_LONG64
|
||||
#define FT_INT64 long long int
|
||||
#define FT_UINT64 unsigned long long int
|
||||
|
||||
#endif /* __STDC_VERSION__ >= 199901L */
|
||||
|
||||
#endif /* FT_SIZEOF_LONG == 8 */
|
||||
|
||||
#ifdef FT_LONG64
|
||||
typedef FT_INT64 FT_Int64;
|
||||
typedef FT_UINT64 FT_UInt64;
|
||||
#endif
|
||||
|
||||
|
||||
/*************************************************************************/
|
||||
/* */
|
||||
/* miscellaneous */
|
||||
/* */
|
||||
/*************************************************************************/
|
||||
|
||||
|
||||
#define FT_BEGIN_STMNT do {
|
||||
#define FT_END_STMNT } while ( 0 )
|
||||
#define FT_DUMMY_STMNT FT_BEGIN_STMNT FT_END_STMNT
|
||||
|
||||
|
||||
/* typeof condition taken from gnulib's `intprops.h' header file */
|
||||
#if ( ( defined( __GNUC__ ) && __GNUC__ >= 2 ) || \
|
||||
( defined( __IBMC__ ) && __IBMC__ >= 1210 && \
|
||||
defined( __IBM__TYPEOF__ ) ) || \
|
||||
( defined( __SUNPRO_C ) && __SUNPRO_C >= 0x5110 && !__STDC__ ) )
|
||||
#define FT_TYPEOF( type ) ( __typeof__ ( type ) )
|
||||
#else
|
||||
#define FT_TYPEOF( type ) /* empty */
|
||||
#endif
|
||||
|
||||
|
||||
#ifdef FT_MAKE_OPTION_SINGLE_OBJECT
|
||||
|
||||
#define FT_LOCAL( x ) static x
|
||||
#define FT_LOCAL_DEF( x ) static x
|
||||
|
||||
#else
|
||||
|
||||
#ifdef __cplusplus
|
||||
#define FT_LOCAL( x ) extern "C" x
|
||||
#define FT_LOCAL_DEF( x ) extern "C" x
|
||||
#else
|
||||
#define FT_LOCAL( x ) extern x
|
||||
#define FT_LOCAL_DEF( x ) x
|
||||
#endif
|
||||
|
||||
#endif /* FT_MAKE_OPTION_SINGLE_OBJECT */
|
||||
|
||||
#define FT_LOCAL_ARRAY( x ) extern const x
|
||||
#define FT_LOCAL_ARRAY_DEF( x ) const x
|
||||
|
||||
|
||||
#ifndef FT_BASE
|
||||
|
||||
#ifdef __cplusplus
|
||||
#define FT_BASE( x ) extern "C" x
|
||||
#else
|
||||
#define FT_BASE( x ) extern x
|
||||
#endif
|
||||
|
||||
#endif /* !FT_BASE */
|
||||
|
||||
|
||||
#ifndef FT_BASE_DEF
|
||||
|
||||
#ifdef __cplusplus
|
||||
#define FT_BASE_DEF( x ) x
|
||||
#else
|
||||
#define FT_BASE_DEF( x ) x
|
||||
#endif
|
||||
|
||||
#endif /* !FT_BASE_DEF */
|
||||
|
||||
|
||||
#ifndef FT_EXPORT
|
||||
|
||||
#ifdef __cplusplus
|
||||
#define FT_EXPORT( x ) extern "C" x
|
||||
#else
|
||||
#define FT_EXPORT( x ) extern x
|
||||
#endif
|
||||
|
||||
#endif /* !FT_EXPORT */
|
||||
|
||||
|
||||
#ifndef FT_EXPORT_DEF
|
||||
|
||||
#ifdef __cplusplus
|
||||
#define FT_EXPORT_DEF( x ) extern "C" x
|
||||
#else
|
||||
#define FT_EXPORT_DEF( x ) extern x
|
||||
#endif
|
||||
|
||||
#endif /* !FT_EXPORT_DEF */
|
||||
|
||||
|
||||
#ifndef FT_EXPORT_VAR
|
||||
|
||||
#ifdef __cplusplus
|
||||
#define FT_EXPORT_VAR( x ) extern "C" x
|
||||
#else
|
||||
#define FT_EXPORT_VAR( x ) extern x
|
||||
#endif
|
||||
|
||||
#endif /* !FT_EXPORT_VAR */
|
||||
|
||||
/* The following macros are needed to compile the library with a */
|
||||
/* C++ compiler and with 16bit compilers. */
|
||||
/* */
|
||||
|
||||
/* This is special. Within C++, you must specify `extern "C"' for */
|
||||
/* functions which are used via function pointers, and you also */
|
||||
/* must do that for structures which contain function pointers to */
|
||||
/* assure C linkage -- it's not possible to have (local) anonymous */
|
||||
/* functions which are accessed by (global) function pointers. */
|
||||
/* */
|
||||
/* */
|
||||
/* FT_CALLBACK_DEF is used to _define_ a callback function. */
|
||||
/* */
|
||||
/* FT_CALLBACK_TABLE is used to _declare_ a constant variable that */
|
||||
/* contains pointers to callback functions. */
|
||||
/* */
|
||||
/* FT_CALLBACK_TABLE_DEF is used to _define_ a constant variable */
|
||||
/* that contains pointers to callback functions. */
|
||||
/* */
|
||||
/* */
|
||||
/* Some 16bit compilers have to redefine these macros to insert */
|
||||
/* the infamous `_cdecl' or `__fastcall' declarations. */
|
||||
/* */
|
||||
#ifndef FT_CALLBACK_DEF
|
||||
#ifdef __cplusplus
|
||||
#define FT_CALLBACK_DEF( x ) extern "C" x
|
||||
#else
|
||||
#define FT_CALLBACK_DEF( x ) static x
|
||||
#endif
|
||||
#endif /* FT_CALLBACK_DEF */
|
||||
|
||||
#ifndef FT_CALLBACK_TABLE
|
||||
#ifdef __cplusplus
|
||||
#define FT_CALLBACK_TABLE extern "C"
|
||||
#define FT_CALLBACK_TABLE_DEF extern "C"
|
||||
#else
|
||||
#define FT_CALLBACK_TABLE extern
|
||||
#define FT_CALLBACK_TABLE_DEF /* nothing */
|
||||
#endif
|
||||
#endif /* FT_CALLBACK_TABLE */
|
||||
|
||||
|
||||
FT_END_HEADER
|
||||
|
||||
|
||||
#endif /* FTCONFIG_H_ */
|
||||
|
||||
|
||||
/* END */
|
||||
@ -0,0 +1,833 @@
|
||||
/***************************************************************************/
|
||||
/* */
|
||||
/* ftheader.h */
|
||||
/* */
|
||||
/* Build macros of the FreeType 2 library. */
|
||||
/* */
|
||||
/* Copyright 1996-2016 by */
|
||||
/* David Turner, Robert Wilhelm, and Werner Lemberg. */
|
||||
/* */
|
||||
/* This file is part of the FreeType project, and may only be used, */
|
||||
/* modified, and distributed under the terms of the FreeType project */
|
||||
/* license, LICENSE.TXT. By continuing to use, modify, or distribute */
|
||||
/* this file you indicate that you have read the license and */
|
||||
/* understand and accept it fully. */
|
||||
/* */
|
||||
/***************************************************************************/
|
||||
|
||||
#ifndef FTHEADER_H_
|
||||
#define FTHEADER_H_
|
||||
|
||||
|
||||
/*@***********************************************************************/
|
||||
/* */
|
||||
/* <Macro> */
|
||||
/* FT_BEGIN_HEADER */
|
||||
/* */
|
||||
/* <Description> */
|
||||
/* This macro is used in association with @FT_END_HEADER in header */
|
||||
/* files to ensure that the declarations within are properly */
|
||||
/* encapsulated in an `extern "C" { .. }' block when included from a */
|
||||
/* C++ compiler. */
|
||||
/* */
|
||||
#ifdef __cplusplus
|
||||
#define FT_BEGIN_HEADER extern "C" {
|
||||
#else
|
||||
#define FT_BEGIN_HEADER /* nothing */
|
||||
#endif
|
||||
|
||||
|
||||
/*@***********************************************************************/
|
||||
/* */
|
||||
/* <Macro> */
|
||||
/* FT_END_HEADER */
|
||||
/* */
|
||||
/* <Description> */
|
||||
/* This macro is used in association with @FT_BEGIN_HEADER in header */
|
||||
/* files to ensure that the declarations within are properly */
|
||||
/* encapsulated in an `extern "C" { .. }' block when included from a */
|
||||
/* C++ compiler. */
|
||||
/* */
|
||||
#ifdef __cplusplus
|
||||
#define FT_END_HEADER }
|
||||
#else
|
||||
#define FT_END_HEADER /* nothing */
|
||||
#endif
|
||||
|
||||
|
||||
/*************************************************************************/
|
||||
/* */
|
||||
/* Aliases for the FreeType 2 public and configuration files. */
|
||||
/* */
|
||||
/*************************************************************************/
|
||||
|
||||
/*************************************************************************/
|
||||
/* */
|
||||
/* <Section> */
|
||||
/* header_file_macros */
|
||||
/* */
|
||||
/* <Title> */
|
||||
/* Header File Macros */
|
||||
/* */
|
||||
/* <Abstract> */
|
||||
/* Macro definitions used to #include specific header files. */
|
||||
/* */
|
||||
/* <Description> */
|
||||
/* The following macros are defined to the name of specific */
|
||||
/* FreeType~2 header files. They can be used directly in #include */
|
||||
/* statements as in: */
|
||||
/* */
|
||||
/* { */
|
||||
/* #include FT_FREETYPE_H */
|
||||
/* #include FT_MULTIPLE_MASTERS_H */
|
||||
/* #include FT_GLYPH_H */
|
||||
/* } */
|
||||
/* */
|
||||
/* There are several reasons why we are now using macros to name */
|
||||
/* public header files. The first one is that such macros are not */
|
||||
/* limited to the infamous 8.3~naming rule required by DOS (and */
|
||||
/* `FT_MULTIPLE_MASTERS_H' is a lot more meaningful than `ftmm.h'). */
|
||||
/* */
|
||||
/* The second reason is that it allows for more flexibility in the */
|
||||
/* way FreeType~2 is installed on a given system. */
|
||||
/* */
|
||||
/*************************************************************************/
|
||||
|
||||
|
||||
/* configuration files */
|
||||
|
||||
/*************************************************************************
|
||||
*
|
||||
* @macro:
|
||||
* FT_CONFIG_CONFIG_H
|
||||
*
|
||||
* @description:
|
||||
* A macro used in #include statements to name the file containing
|
||||
* FreeType~2 configuration data.
|
||||
*
|
||||
*/
|
||||
#ifndef FT_CONFIG_CONFIG_H
|
||||
#define FT_CONFIG_CONFIG_H <freetype/config/ftconfig.h>
|
||||
#endif
|
||||
|
||||
|
||||
/*************************************************************************
|
||||
*
|
||||
* @macro:
|
||||
* FT_CONFIG_STANDARD_LIBRARY_H
|
||||
*
|
||||
* @description:
|
||||
* A macro used in #include statements to name the file containing
|
||||
* FreeType~2 interface to the standard C library functions.
|
||||
*
|
||||
*/
|
||||
#ifndef FT_CONFIG_STANDARD_LIBRARY_H
|
||||
#define FT_CONFIG_STANDARD_LIBRARY_H <freetype/config/ftstdlib.h>
|
||||
#endif
|
||||
|
||||
|
||||
/*************************************************************************
|
||||
*
|
||||
* @macro:
|
||||
* FT_CONFIG_OPTIONS_H
|
||||
*
|
||||
* @description:
|
||||
* A macro used in #include statements to name the file containing
|
||||
* FreeType~2 project-specific configuration options.
|
||||
*
|
||||
*/
|
||||
#ifndef FT_CONFIG_OPTIONS_H
|
||||
#define FT_CONFIG_OPTIONS_H <freetype/config/ftoption.h>
|
||||
#endif
|
||||
|
||||
|
||||
/*************************************************************************
|
||||
*
|
||||
* @macro:
|
||||
* FT_CONFIG_MODULES_H
|
||||
*
|
||||
* @description:
|
||||
* A macro used in #include statements to name the file containing the
|
||||
* list of FreeType~2 modules that are statically linked to new library
|
||||
* instances in @FT_Init_FreeType.
|
||||
*
|
||||
*/
|
||||
#ifndef FT_CONFIG_MODULES_H
|
||||
#define FT_CONFIG_MODULES_H <freetype/config/ftmodule.h>
|
||||
#endif
|
||||
|
||||
/* */
|
||||
|
||||
/* public headers */
|
||||
|
||||
/*************************************************************************
|
||||
*
|
||||
* @macro:
|
||||
* FT_FREETYPE_H
|
||||
*
|
||||
* @description:
|
||||
* A macro used in #include statements to name the file containing the
|
||||
* base FreeType~2 API.
|
||||
*
|
||||
*/
|
||||
#define FT_FREETYPE_H <freetype/freetype.h>
|
||||
|
||||
|
||||
/*************************************************************************
|
||||
*
|
||||
* @macro:
|
||||
* FT_ERRORS_H
|
||||
*
|
||||
* @description:
|
||||
* A macro used in #include statements to name the file containing the
|
||||
* list of FreeType~2 error codes (and messages).
|
||||
*
|
||||
* It is included by @FT_FREETYPE_H.
|
||||
*
|
||||
*/
|
||||
#define FT_ERRORS_H <freetype/fterrors.h>
|
||||
|
||||
|
||||
/*************************************************************************
|
||||
*
|
||||
* @macro:
|
||||
* FT_MODULE_ERRORS_H
|
||||
*
|
||||
* @description:
|
||||
* A macro used in #include statements to name the file containing the
|
||||
* list of FreeType~2 module error offsets (and messages).
|
||||
*
|
||||
*/
|
||||
#define FT_MODULE_ERRORS_H <freetype/ftmoderr.h>
|
||||
|
||||
|
||||
/*************************************************************************
|
||||
*
|
||||
* @macro:
|
||||
* FT_SYSTEM_H
|
||||
*
|
||||
* @description:
|
||||
* A macro used in #include statements to name the file containing the
|
||||
* FreeType~2 interface to low-level operations (i.e., memory management
|
||||
* and stream i/o).
|
||||
*
|
||||
* It is included by @FT_FREETYPE_H.
|
||||
*
|
||||
*/
|
||||
#define FT_SYSTEM_H <freetype/ftsystem.h>
|
||||
|
||||
|
||||
/*************************************************************************
|
||||
*
|
||||
* @macro:
|
||||
* FT_IMAGE_H
|
||||
*
|
||||
* @description:
|
||||
* A macro used in #include statements to name the file containing type
|
||||
* definitions related to glyph images (i.e., bitmaps, outlines,
|
||||
* scan-converter parameters).
|
||||
*
|
||||
* It is included by @FT_FREETYPE_H.
|
||||
*
|
||||
*/
|
||||
#define FT_IMAGE_H <freetype/ftimage.h>
|
||||
|
||||
|
||||
/*************************************************************************
|
||||
*
|
||||
* @macro:
|
||||
* FT_TYPES_H
|
||||
*
|
||||
* @description:
|
||||
* A macro used in #include statements to name the file containing the
|
||||
* basic data types defined by FreeType~2.
|
||||
*
|
||||
* It is included by @FT_FREETYPE_H.
|
||||
*
|
||||
*/
|
||||
#define FT_TYPES_H <freetype/fttypes.h>
|
||||
|
||||
|
||||
/*************************************************************************
|
||||
*
|
||||
* @macro:
|
||||
* FT_LIST_H
|
||||
*
|
||||
* @description:
|
||||
* A macro used in #include statements to name the file containing the
|
||||
* list management API of FreeType~2.
|
||||
*
|
||||
* (Most applications will never need to include this file.)
|
||||
*
|
||||
*/
|
||||
#define FT_LIST_H <freetype/ftlist.h>
|
||||
|
||||
|
||||
/*************************************************************************
|
||||
*
|
||||
* @macro:
|
||||
* FT_OUTLINE_H
|
||||
*
|
||||
* @description:
|
||||
* A macro used in #include statements to name the file containing the
|
||||
* scalable outline management API of FreeType~2.
|
||||
*
|
||||
*/
|
||||
#define FT_OUTLINE_H <freetype/ftoutln.h>
|
||||
|
||||
|
||||
/*************************************************************************
|
||||
*
|
||||
* @macro:
|
||||
* FT_SIZES_H
|
||||
*
|
||||
* @description:
|
||||
* A macro used in #include statements to name the file containing the
|
||||
* API which manages multiple @FT_Size objects per face.
|
||||
*
|
||||
*/
|
||||
#define FT_SIZES_H <freetype/ftsizes.h>
|
||||
|
||||
|
||||
/*************************************************************************
|
||||
*
|
||||
* @macro:
|
||||
* FT_MODULE_H
|
||||
*
|
||||
* @description:
|
||||
* A macro used in #include statements to name the file containing the
|
||||
* module management API of FreeType~2.
|
||||
*
|
||||
*/
|
||||
#define FT_MODULE_H <freetype/ftmodapi.h>
|
||||
|
||||
|
||||
/*************************************************************************
|
||||
*
|
||||
* @macro:
|
||||
* FT_RENDER_H
|
||||
*
|
||||
* @description:
|
||||
* A macro used in #include statements to name the file containing the
|
||||
* renderer module management API of FreeType~2.
|
||||
*
|
||||
*/
|
||||
#define FT_RENDER_H <freetype/ftrender.h>
|
||||
|
||||
|
||||
/*************************************************************************
|
||||
*
|
||||
* @macro:
|
||||
* FT_AUTOHINTER_H
|
||||
*
|
||||
* @description:
|
||||
* A macro used in #include statements to name the file containing
|
||||
* structures and macros related to the auto-hinting module.
|
||||
*
|
||||
*/
|
||||
#define FT_AUTOHINTER_H <freetype/ftautoh.h>
|
||||
|
||||
|
||||
/*************************************************************************
|
||||
*
|
||||
* @macro:
|
||||
* FT_CFF_DRIVER_H
|
||||
*
|
||||
* @description:
|
||||
* A macro used in #include statements to name the file containing
|
||||
* structures and macros related to the CFF driver module.
|
||||
*
|
||||
*/
|
||||
#define FT_CFF_DRIVER_H <freetype/ftcffdrv.h>
|
||||
|
||||
|
||||
/*************************************************************************
|
||||
*
|
||||
* @macro:
|
||||
* FT_TRUETYPE_DRIVER_H
|
||||
*
|
||||
* @description:
|
||||
* A macro used in #include statements to name the file containing
|
||||
* structures and macros related to the TrueType driver module.
|
||||
*
|
||||
*/
|
||||
#define FT_TRUETYPE_DRIVER_H <freetype/ftttdrv.h>
|
||||
|
||||
|
||||
/*************************************************************************
|
||||
*
|
||||
* @macro:
|
||||
* FT_TYPE1_TABLES_H
|
||||
*
|
||||
* @description:
|
||||
* A macro used in #include statements to name the file containing the
|
||||
* types and API specific to the Type~1 format.
|
||||
*
|
||||
*/
|
||||
#define FT_TYPE1_TABLES_H <freetype/t1tables.h>
|
||||
|
||||
|
||||
/*************************************************************************
|
||||
*
|
||||
* @macro:
|
||||
* FT_TRUETYPE_IDS_H
|
||||
*
|
||||
* @description:
|
||||
* A macro used in #include statements to name the file containing the
|
||||
* enumeration values which identify name strings, languages, encodings,
|
||||
* etc. This file really contains a _large_ set of constant macro
|
||||
* definitions, taken from the TrueType and OpenType specifications.
|
||||
*
|
||||
*/
|
||||
#define FT_TRUETYPE_IDS_H <freetype/ttnameid.h>
|
||||
|
||||
|
||||
/*************************************************************************
|
||||
*
|
||||
* @macro:
|
||||
* FT_TRUETYPE_TABLES_H
|
||||
*
|
||||
* @description:
|
||||
* A macro used in #include statements to name the file containing the
|
||||
* types and API specific to the TrueType (as well as OpenType) format.
|
||||
*
|
||||
*/
|
||||
#define FT_TRUETYPE_TABLES_H <freetype/tttables.h>
|
||||
|
||||
|
||||
/*************************************************************************
|
||||
*
|
||||
* @macro:
|
||||
* FT_TRUETYPE_TAGS_H
|
||||
*
|
||||
* @description:
|
||||
* A macro used in #include statements to name the file containing the
|
||||
* definitions of TrueType four-byte `tags' which identify blocks in
|
||||
* SFNT-based font formats (i.e., TrueType and OpenType).
|
||||
*
|
||||
*/
|
||||
#define FT_TRUETYPE_TAGS_H <freetype/tttags.h>
|
||||
|
||||
|
||||
/*************************************************************************
|
||||
*
|
||||
* @macro:
|
||||
* FT_BDF_H
|
||||
*
|
||||
* @description:
|
||||
* A macro used in #include statements to name the file containing the
|
||||
* definitions of an API which accesses BDF-specific strings from a
|
||||
* face.
|
||||
*
|
||||
*/
|
||||
#define FT_BDF_H <freetype/ftbdf.h>
|
||||
|
||||
|
||||
/*************************************************************************
|
||||
*
|
||||
* @macro:
|
||||
* FT_CID_H
|
||||
*
|
||||
* @description:
|
||||
* A macro used in #include statements to name the file containing the
|
||||
* definitions of an API which access CID font information from a
|
||||
* face.
|
||||
*
|
||||
*/
|
||||
#define FT_CID_H <freetype/ftcid.h>
|
||||
|
||||
|
||||
/*************************************************************************
|
||||
*
|
||||
* @macro:
|
||||
* FT_GZIP_H
|
||||
*
|
||||
* @description:
|
||||
* A macro used in #include statements to name the file containing the
|
||||
* definitions of an API which supports gzip-compressed files.
|
||||
*
|
||||
*/
|
||||
#define FT_GZIP_H <freetype/ftgzip.h>
|
||||
|
||||
|
||||
/*************************************************************************
|
||||
*
|
||||
* @macro:
|
||||
* FT_LZW_H
|
||||
*
|
||||
* @description:
|
||||
* A macro used in #include statements to name the file containing the
|
||||
* definitions of an API which supports LZW-compressed files.
|
||||
*
|
||||
*/
|
||||
#define FT_LZW_H <freetype/ftlzw.h>
|
||||
|
||||
|
||||
/*************************************************************************
|
||||
*
|
||||
* @macro:
|
||||
* FT_BZIP2_H
|
||||
*
|
||||
* @description:
|
||||
* A macro used in #include statements to name the file containing the
|
||||
* definitions of an API which supports bzip2-compressed files.
|
||||
*
|
||||
*/
|
||||
#define FT_BZIP2_H <freetype/ftbzip2.h>
|
||||
|
||||
|
||||
/*************************************************************************
|
||||
*
|
||||
* @macro:
|
||||
* FT_WINFONTS_H
|
||||
*
|
||||
* @description:
|
||||
* A macro used in #include statements to name the file containing the
|
||||
* definitions of an API which supports Windows FNT files.
|
||||
*
|
||||
*/
|
||||
#define FT_WINFONTS_H <freetype/ftwinfnt.h>
|
||||
|
||||
|
||||
/*************************************************************************
|
||||
*
|
||||
* @macro:
|
||||
* FT_GLYPH_H
|
||||
*
|
||||
* @description:
|
||||
* A macro used in #include statements to name the file containing the
|
||||
* API of the optional glyph management component.
|
||||
*
|
||||
*/
|
||||
#define FT_GLYPH_H <freetype/ftglyph.h>
|
||||
|
||||
|
||||
/*************************************************************************
|
||||
*
|
||||
* @macro:
|
||||
* FT_BITMAP_H
|
||||
*
|
||||
* @description:
|
||||
* A macro used in #include statements to name the file containing the
|
||||
* API of the optional bitmap conversion component.
|
||||
*
|
||||
*/
|
||||
#define FT_BITMAP_H <freetype/ftbitmap.h>
|
||||
|
||||
|
||||
/*************************************************************************
|
||||
*
|
||||
* @macro:
|
||||
* FT_BBOX_H
|
||||
*
|
||||
* @description:
|
||||
* A macro used in #include statements to name the file containing the
|
||||
* API of the optional exact bounding box computation routines.
|
||||
*
|
||||
*/
|
||||
#define FT_BBOX_H <freetype/ftbbox.h>
|
||||
|
||||
|
||||
/*************************************************************************
|
||||
*
|
||||
* @macro:
|
||||
* FT_CACHE_H
|
||||
*
|
||||
* @description:
|
||||
* A macro used in #include statements to name the file containing the
|
||||
* API of the optional FreeType~2 cache sub-system.
|
||||
*
|
||||
*/
|
||||
#define FT_CACHE_H <freetype/ftcache.h>
|
||||
|
||||
|
||||
/*************************************************************************
|
||||
*
|
||||
* @macro:
|
||||
* FT_CACHE_IMAGE_H
|
||||
*
|
||||
* @description:
|
||||
* A macro used in #include statements to name the file containing the
|
||||
* `glyph image' API of the FreeType~2 cache sub-system.
|
||||
*
|
||||
* It is used to define a cache for @FT_Glyph elements. You can also
|
||||
* use the API defined in @FT_CACHE_SMALL_BITMAPS_H if you only need to
|
||||
* store small glyph bitmaps, as it will use less memory.
|
||||
*
|
||||
* This macro is deprecated. Simply include @FT_CACHE_H to have all
|
||||
* glyph image-related cache declarations.
|
||||
*
|
||||
*/
|
||||
#define FT_CACHE_IMAGE_H FT_CACHE_H
|
||||
|
||||
|
||||
/*************************************************************************
|
||||
*
|
||||
* @macro:
|
||||
* FT_CACHE_SMALL_BITMAPS_H
|
||||
*
|
||||
* @description:
|
||||
* A macro used in #include statements to name the file containing the
|
||||
* `small bitmaps' API of the FreeType~2 cache sub-system.
|
||||
*
|
||||
* It is used to define a cache for small glyph bitmaps in a relatively
|
||||
* memory-efficient way. You can also use the API defined in
|
||||
* @FT_CACHE_IMAGE_H if you want to cache arbitrary glyph images,
|
||||
* including scalable outlines.
|
||||
*
|
||||
* This macro is deprecated. Simply include @FT_CACHE_H to have all
|
||||
* small bitmaps-related cache declarations.
|
||||
*
|
||||
*/
|
||||
#define FT_CACHE_SMALL_BITMAPS_H FT_CACHE_H
|
||||
|
||||
|
||||
/*************************************************************************
|
||||
*
|
||||
* @macro:
|
||||
* FT_CACHE_CHARMAP_H
|
||||
*
|
||||
* @description:
|
||||
* A macro used in #include statements to name the file containing the
|
||||
* `charmap' API of the FreeType~2 cache sub-system.
|
||||
*
|
||||
* This macro is deprecated. Simply include @FT_CACHE_H to have all
|
||||
* charmap-based cache declarations.
|
||||
*
|
||||
*/
|
||||
#define FT_CACHE_CHARMAP_H FT_CACHE_H
|
||||
|
||||
|
||||
/*************************************************************************
|
||||
*
|
||||
* @macro:
|
||||
* FT_MAC_H
|
||||
*
|
||||
* @description:
|
||||
* A macro used in #include statements to name the file containing the
|
||||
* Macintosh-specific FreeType~2 API. The latter is used to access
|
||||
* fonts embedded in resource forks.
|
||||
*
|
||||
* This header file must be explicitly included by client applications
|
||||
* compiled on the Mac (note that the base API still works though).
|
||||
*
|
||||
*/
|
||||
#define FT_MAC_H <freetype/ftmac.h>
|
||||
|
||||
|
||||
/*************************************************************************
|
||||
*
|
||||
* @macro:
|
||||
* FT_MULTIPLE_MASTERS_H
|
||||
*
|
||||
* @description:
|
||||
* A macro used in #include statements to name the file containing the
|
||||
* optional multiple-masters management API of FreeType~2.
|
||||
*
|
||||
*/
|
||||
#define FT_MULTIPLE_MASTERS_H <freetype/ftmm.h>
|
||||
|
||||
|
||||
/*************************************************************************
|
||||
*
|
||||
* @macro:
|
||||
* FT_SFNT_NAMES_H
|
||||
*
|
||||
* @description:
|
||||
* A macro used in #include statements to name the file containing the
|
||||
* optional FreeType~2 API which accesses embedded `name' strings in
|
||||
* SFNT-based font formats (i.e., TrueType and OpenType).
|
||||
*
|
||||
*/
|
||||
#define FT_SFNT_NAMES_H <freetype/ftsnames.h>
|
||||
|
||||
|
||||
/*************************************************************************
|
||||
*
|
||||
* @macro:
|
||||
* FT_OPENTYPE_VALIDATE_H
|
||||
*
|
||||
* @description:
|
||||
* A macro used in #include statements to name the file containing the
|
||||
* optional FreeType~2 API which validates OpenType tables (BASE, GDEF,
|
||||
* GPOS, GSUB, JSTF).
|
||||
*
|
||||
*/
|
||||
#define FT_OPENTYPE_VALIDATE_H <freetype/ftotval.h>
|
||||
|
||||
|
||||
/*************************************************************************
|
||||
*
|
||||
* @macro:
|
||||
* FT_GX_VALIDATE_H
|
||||
*
|
||||
* @description:
|
||||
* A macro used in #include statements to name the file containing the
|
||||
* optional FreeType~2 API which validates TrueTypeGX/AAT tables (feat,
|
||||
* mort, morx, bsln, just, kern, opbd, trak, prop).
|
||||
*
|
||||
*/
|
||||
#define FT_GX_VALIDATE_H <freetype/ftgxval.h>
|
||||
|
||||
|
||||
/*************************************************************************
|
||||
*
|
||||
* @macro:
|
||||
* FT_PFR_H
|
||||
*
|
||||
* @description:
|
||||
* A macro used in #include statements to name the file containing the
|
||||
* FreeType~2 API which accesses PFR-specific data.
|
||||
*
|
||||
*/
|
||||
#define FT_PFR_H <freetype/ftpfr.h>
|
||||
|
||||
|
||||
/*************************************************************************
|
||||
*
|
||||
* @macro:
|
||||
* FT_STROKER_H
|
||||
*
|
||||
* @description:
|
||||
* A macro used in #include statements to name the file containing the
|
||||
* FreeType~2 API which provides functions to stroke outline paths.
|
||||
*/
|
||||
#define FT_STROKER_H <freetype/ftstroke.h>
|
||||
|
||||
|
||||
/*************************************************************************
|
||||
*
|
||||
* @macro:
|
||||
* FT_SYNTHESIS_H
|
||||
*
|
||||
* @description:
|
||||
* A macro used in #include statements to name the file containing the
|
||||
* FreeType~2 API which performs artificial obliquing and emboldening.
|
||||
*/
|
||||
#define FT_SYNTHESIS_H <freetype/ftsynth.h>
|
||||
|
||||
|
||||
/*************************************************************************
|
||||
*
|
||||
* @macro:
|
||||
* FT_FONT_FORMATS_H
|
||||
*
|
||||
* @description:
|
||||
* A macro used in #include statements to name the file containing the
|
||||
* FreeType~2 API which provides functions specific to font formats.
|
||||
*/
|
||||
#define FT_FONT_FORMATS_H <freetype/ftfntfmt.h>
|
||||
|
||||
/* deprecated */
|
||||
#define FT_XFREE86_H FT_FONT_FORMATS_H
|
||||
|
||||
|
||||
/*************************************************************************
|
||||
*
|
||||
* @macro:
|
||||
* FT_TRIGONOMETRY_H
|
||||
*
|
||||
* @description:
|
||||
* A macro used in #include statements to name the file containing the
|
||||
* FreeType~2 API which performs trigonometric computations (e.g.,
|
||||
* cosines and arc tangents).
|
||||
*/
|
||||
#define FT_TRIGONOMETRY_H <freetype/fttrigon.h>
|
||||
|
||||
|
||||
/*************************************************************************
|
||||
*
|
||||
* @macro:
|
||||
* FT_LCD_FILTER_H
|
||||
*
|
||||
* @description:
|
||||
* A macro used in #include statements to name the file containing the
|
||||
* FreeType~2 API which performs color filtering for subpixel rendering.
|
||||
*/
|
||||
#define FT_LCD_FILTER_H <freetype/ftlcdfil.h>
|
||||
|
||||
|
||||
/*************************************************************************
|
||||
*
|
||||
* @macro:
|
||||
* FT_UNPATENTED_HINTING_H
|
||||
*
|
||||
* @description:
|
||||
* Deprecated.
|
||||
*/
|
||||
#define FT_UNPATENTED_HINTING_H <freetype/ttunpat.h>
|
||||
|
||||
|
||||
/*************************************************************************
|
||||
*
|
||||
* @macro:
|
||||
* FT_INCREMENTAL_H
|
||||
*
|
||||
* @description:
|
||||
* A macro used in #include statements to name the file containing the
|
||||
* FreeType~2 API which performs incremental glyph loading.
|
||||
*/
|
||||
#define FT_INCREMENTAL_H <freetype/ftincrem.h>
|
||||
|
||||
|
||||
/*************************************************************************
|
||||
*
|
||||
* @macro:
|
||||
* FT_GASP_H
|
||||
*
|
||||
* @description:
|
||||
* A macro used in #include statements to name the file containing the
|
||||
* FreeType~2 API which returns entries from the TrueType GASP table.
|
||||
*/
|
||||
#define FT_GASP_H <freetype/ftgasp.h>
|
||||
|
||||
|
||||
/*************************************************************************
|
||||
*
|
||||
* @macro:
|
||||
* FT_ADVANCES_H
|
||||
*
|
||||
* @description:
|
||||
* A macro used in #include statements to name the file containing the
|
||||
* FreeType~2 API which returns individual and ranged glyph advances.
|
||||
*/
|
||||
#define FT_ADVANCES_H <freetype/ftadvanc.h>
|
||||
|
||||
|
||||
/* */
|
||||
|
||||
#define FT_ERROR_DEFINITIONS_H <freetype/fterrdef.h>
|
||||
|
||||
|
||||
/* The internals of the cache sub-system are no longer exposed. We */
|
||||
/* default to FT_CACHE_H at the moment just in case, but we know of */
|
||||
/* no rogue client that uses them. */
|
||||
/* */
|
||||
#define FT_CACHE_MANAGER_H <freetype/ftcache.h>
|
||||
#define FT_CACHE_INTERNAL_MRU_H <freetype/ftcache.h>
|
||||
#define FT_CACHE_INTERNAL_MANAGER_H <freetype/ftcache.h>
|
||||
#define FT_CACHE_INTERNAL_CACHE_H <freetype/ftcache.h>
|
||||
#define FT_CACHE_INTERNAL_GLYPH_H <freetype/ftcache.h>
|
||||
#define FT_CACHE_INTERNAL_IMAGE_H <freetype/ftcache.h>
|
||||
#define FT_CACHE_INTERNAL_SBITS_H <freetype/ftcache.h>
|
||||
|
||||
|
||||
#define FT_INCREMENTAL_H <freetype/ftincrem.h>
|
||||
|
||||
#define FT_TRUETYPE_UNPATENTED_H <freetype/ttunpat.h>
|
||||
|
||||
|
||||
/*
|
||||
* Include internal headers definitions from <internal/...>
|
||||
* only when building the library.
|
||||
*/
|
||||
#ifdef FT2_BUILD_LIBRARY
|
||||
#define FT_INTERNAL_INTERNAL_H <freetype/internal/internal.h>
|
||||
#include FT_INTERNAL_INTERNAL_H
|
||||
#endif /* FT2_BUILD_LIBRARY */
|
||||
|
||||
|
||||
#endif /* FTHEADER_H_ */
|
||||
|
||||
|
||||
/* END */
|
||||
@ -0,0 +1,20 @@
|
||||
/* This is a generated file. */
|
||||
FT_USE_MODULE( FT_Driver_ClassRec, tt_driver_class )
|
||||
FT_USE_MODULE( FT_Driver_ClassRec, t1_driver_class )
|
||||
FT_USE_MODULE( FT_Driver_ClassRec, cff_driver_class )
|
||||
FT_USE_MODULE( FT_Driver_ClassRec, t1cid_driver_class )
|
||||
FT_USE_MODULE( FT_Driver_ClassRec, pfr_driver_class )
|
||||
FT_USE_MODULE( FT_Driver_ClassRec, t42_driver_class )
|
||||
FT_USE_MODULE( FT_Driver_ClassRec, winfnt_driver_class )
|
||||
FT_USE_MODULE( FT_Driver_ClassRec, pcf_driver_class )
|
||||
FT_USE_MODULE( FT_Driver_ClassRec, bdf_driver_class )
|
||||
FT_USE_MODULE( FT_Module_Class, sfnt_module_class )
|
||||
FT_USE_MODULE( FT_Module_Class, autofit_module_class )
|
||||
FT_USE_MODULE( FT_Module_Class, pshinter_module_class )
|
||||
FT_USE_MODULE( FT_Renderer_Class, ft_raster1_renderer_class )
|
||||
FT_USE_MODULE( FT_Renderer_Class, ft_smooth_renderer_class )
|
||||
FT_USE_MODULE( FT_Renderer_Class, ft_smooth_lcd_renderer_class )
|
||||
FT_USE_MODULE( FT_Renderer_Class, ft_smooth_lcdv_renderer_class )
|
||||
FT_USE_MODULE( FT_Module_Class, psaux_module_class )
|
||||
FT_USE_MODULE( FT_Module_Class, psnames_module_class )
|
||||
/* EOF */
|
||||
@ -0,0 +1,933 @@
|
||||
/***************************************************************************/
|
||||
/* */
|
||||
/* ftoption.h */
|
||||
/* */
|
||||
/* User-selectable configuration macros (specification only). */
|
||||
/* */
|
||||
/* Copyright 1996-2016 by */
|
||||
/* David Turner, Robert Wilhelm, and Werner Lemberg. */
|
||||
/* */
|
||||
/* This file is part of the FreeType project, and may only be used, */
|
||||
/* modified, and distributed under the terms of the FreeType project */
|
||||
/* license, LICENSE.TXT. By continuing to use, modify, or distribute */
|
||||
/* this file you indicate that you have read the license and */
|
||||
/* understand and accept it fully. */
|
||||
/* */
|
||||
/***************************************************************************/
|
||||
|
||||
|
||||
#ifndef FTOPTION_H_
|
||||
#define FTOPTION_H_
|
||||
|
||||
|
||||
#include <ft2build.h>
|
||||
|
||||
|
||||
FT_BEGIN_HEADER
|
||||
|
||||
/*************************************************************************/
|
||||
/* */
|
||||
/* USER-SELECTABLE CONFIGURATION MACROS */
|
||||
/* */
|
||||
/* This file contains the default configuration macro definitions for */
|
||||
/* a standard build of the FreeType library. There are three ways to */
|
||||
/* use this file to build project-specific versions of the library: */
|
||||
/* */
|
||||
/* - You can modify this file by hand, but this is not recommended in */
|
||||
/* cases where you would like to build several versions of the */
|
||||
/* library from a single source directory. */
|
||||
/* */
|
||||
/* - You can put a copy of this file in your build directory, more */
|
||||
/* precisely in `$BUILD/freetype/config/ftoption.h', where `$BUILD' */
|
||||
/* is the name of a directory that is included _before_ the FreeType */
|
||||
/* include path during compilation. */
|
||||
/* */
|
||||
/* The default FreeType Makefiles and Jamfiles use the build */
|
||||
/* directory `builds/<system>' by default, but you can easily change */
|
||||
/* that for your own projects. */
|
||||
/* */
|
||||
/* - Copy the file <ft2build.h> to `$BUILD/ft2build.h' and modify it */
|
||||
/* slightly to pre-define the macro FT_CONFIG_OPTIONS_H used to */
|
||||
/* locate this file during the build. For example, */
|
||||
/* */
|
||||
/* #define FT_CONFIG_OPTIONS_H <myftoptions.h> */
|
||||
/* #include <freetype/config/ftheader.h> */
|
||||
/* */
|
||||
/* will use `$BUILD/myftoptions.h' instead of this file for macro */
|
||||
/* definitions. */
|
||||
/* */
|
||||
/* Note also that you can similarly pre-define the macro */
|
||||
/* FT_CONFIG_MODULES_H used to locate the file listing of the modules */
|
||||
/* that are statically linked to the library at compile time. By */
|
||||
/* default, this file is <freetype/config/ftmodule.h>. */
|
||||
/* */
|
||||
/* We highly recommend using the third method whenever possible. */
|
||||
/* */
|
||||
/*************************************************************************/
|
||||
|
||||
|
||||
/*************************************************************************/
|
||||
/*************************************************************************/
|
||||
/**** ****/
|
||||
/**** G E N E R A L F R E E T Y P E 2 C O N F I G U R A T I O N ****/
|
||||
/**** ****/
|
||||
/*************************************************************************/
|
||||
/*************************************************************************/
|
||||
|
||||
|
||||
/*************************************************************************/
|
||||
/* */
|
||||
/* If you enable this configuration option, FreeType recognizes an */
|
||||
/* environment variable called `FREETYPE_PROPERTIES', which can be used */
|
||||
/* to control the various font drivers and modules. The controllable */
|
||||
/* properties are listed in the section `Controlling FreeType Modules' */
|
||||
/* in the reference's table of contents; currently there are properties */
|
||||
/* for the auto-hinter (file `ftautoh.h'), CFF (file `ftcffdrv.h'), and */
|
||||
/* TrueType (file `ftttdrv.h'). */
|
||||
/* */
|
||||
/* `FREETYPE_PROPERTIES' has the following syntax form (broken here into */
|
||||
/* multiple lines for better readability). */
|
||||
/* */
|
||||
/* <optional whitespace> */
|
||||
/* <module-name1> ':' */
|
||||
/* <property-name1> '=' <property-value1> */
|
||||
/* <whitespace> */
|
||||
/* <module-name2> ':' */
|
||||
/* <property-name2> '=' <property-value2> */
|
||||
/* ... */
|
||||
/* */
|
||||
/* Example: */
|
||||
/* */
|
||||
/* FREETYPE_PROPERTIES=truetype:interpreter-version=35 \ */
|
||||
/* cff:no-stem-darkening=1 \ */
|
||||
/* autofitter:warping=1 */
|
||||
/* */
|
||||
#define FT_CONFIG_OPTION_ENVIRONMENT_PROPERTIES
|
||||
|
||||
|
||||
/*************************************************************************/
|
||||
/* */
|
||||
/* Uncomment the line below if you want to activate sub-pixel rendering */
|
||||
/* (a.k.a. LCD rendering, or ClearType) in this build of the library. */
|
||||
/* */
|
||||
/* Note that this feature is covered by several Microsoft patents */
|
||||
/* and should not be activated in any default build of the library. */
|
||||
/* */
|
||||
/* This macro has no impact on the FreeType API, only on its */
|
||||
/* _implementation_. For example, using FT_RENDER_MODE_LCD when calling */
|
||||
/* FT_Render_Glyph still generates a bitmap that is 3 times wider than */
|
||||
/* the original size in case this macro isn't defined; however, each */
|
||||
/* triplet of subpixels has R=G=B. */
|
||||
/* */
|
||||
/* This is done to allow FreeType clients to run unmodified, forcing */
|
||||
/* them to display normal gray-level anti-aliased glyphs. */
|
||||
/* */
|
||||
/* #define FT_CONFIG_OPTION_SUBPIXEL_RENDERING */
|
||||
|
||||
|
||||
/*************************************************************************/
|
||||
/* */
|
||||
/* Many compilers provide a non-ANSI 64-bit data type that can be used */
|
||||
/* by FreeType to speed up some computations. However, this will create */
|
||||
/* some problems when compiling the library in strict ANSI mode. */
|
||||
/* */
|
||||
/* For this reason, the use of 64-bit integers is normally disabled when */
|
||||
/* the __STDC__ macro is defined. You can however disable this by */
|
||||
/* defining the macro FT_CONFIG_OPTION_FORCE_INT64 here. */
|
||||
/* */
|
||||
/* For most compilers, this will only create compilation warnings when */
|
||||
/* building the library. */
|
||||
/* */
|
||||
/* ObNote: The compiler-specific 64-bit integers are detected in the */
|
||||
/* file `ftconfig.h' either statically or through the */
|
||||
/* `configure' script on supported platforms. */
|
||||
/* */
|
||||
#undef FT_CONFIG_OPTION_FORCE_INT64
|
||||
|
||||
|
||||
/*************************************************************************/
|
||||
/* */
|
||||
/* If this macro is defined, do not try to use an assembler version of */
|
||||
/* performance-critical functions (e.g. FT_MulFix). You should only do */
|
||||
/* that to verify that the assembler function works properly, or to */
|
||||
/* execute benchmark tests of the various implementations. */
|
||||
/* #define FT_CONFIG_OPTION_NO_ASSEMBLER */
|
||||
|
||||
|
||||
/*************************************************************************/
|
||||
/* */
|
||||
/* If this macro is defined, try to use an inlined assembler version of */
|
||||
/* the `FT_MulFix' function, which is a `hotspot' when loading and */
|
||||
/* hinting glyphs, and which should be executed as fast as possible. */
|
||||
/* */
|
||||
/* Note that if your compiler or CPU is not supported, this will default */
|
||||
/* to the standard and portable implementation found in `ftcalc.c'. */
|
||||
/* */
|
||||
#define FT_CONFIG_OPTION_INLINE_MULFIX
|
||||
|
||||
|
||||
/*************************************************************************/
|
||||
/* */
|
||||
/* LZW-compressed file support. */
|
||||
/* */
|
||||
/* FreeType now handles font files that have been compressed with the */
|
||||
/* `compress' program. This is mostly used to parse many of the PCF */
|
||||
/* files that come with various X11 distributions. The implementation */
|
||||
/* uses NetBSD's `zopen' to partially uncompress the file on the fly */
|
||||
/* (see src/lzw/ftgzip.c). */
|
||||
/* */
|
||||
/* Define this macro if you want to enable this `feature'. */
|
||||
/* */
|
||||
#define FT_CONFIG_OPTION_USE_LZW
|
||||
|
||||
|
||||
/*************************************************************************/
|
||||
/* */
|
||||
/* Gzip-compressed file support. */
|
||||
/* */
|
||||
/* FreeType now handles font files that have been compressed with the */
|
||||
/* `gzip' program. This is mostly used to parse many of the PCF files */
|
||||
/* that come with XFree86. The implementation uses `zlib' to */
|
||||
/* partially uncompress the file on the fly (see src/gzip/ftgzip.c). */
|
||||
/* */
|
||||
/* Define this macro if you want to enable this `feature'. See also */
|
||||
/* the macro FT_CONFIG_OPTION_SYSTEM_ZLIB below. */
|
||||
/* */
|
||||
#define FT_CONFIG_OPTION_USE_ZLIB
|
||||
|
||||
|
||||
/*************************************************************************/
|
||||
/* */
|
||||
/* ZLib library selection */
|
||||
/* */
|
||||
/* This macro is only used when FT_CONFIG_OPTION_USE_ZLIB is defined. */
|
||||
/* It allows FreeType's `ftgzip' component to link to the system's */
|
||||
/* installation of the ZLib library. This is useful on systems like */
|
||||
/* Unix or VMS where it generally is already available. */
|
||||
/* */
|
||||
/* If you let it undefined, the component will use its own copy */
|
||||
/* of the zlib sources instead. These have been modified to be */
|
||||
/* included directly within the component and *not* export external */
|
||||
/* function names. This allows you to link any program with FreeType */
|
||||
/* _and_ ZLib without linking conflicts. */
|
||||
/* */
|
||||
/* Do not #undef this macro here since the build system might define */
|
||||
/* it for certain configurations only. */
|
||||
/* */
|
||||
/* #define FT_CONFIG_OPTION_SYSTEM_ZLIB */
|
||||
|
||||
|
||||
/*************************************************************************/
|
||||
/* */
|
||||
/* Bzip2-compressed file support. */
|
||||
/* */
|
||||
/* FreeType now handles font files that have been compressed with the */
|
||||
/* `bzip2' program. This is mostly used to parse many of the PCF */
|
||||
/* files that come with XFree86. The implementation uses `libbz2' to */
|
||||
/* partially uncompress the file on the fly (see src/bzip2/ftbzip2.c). */
|
||||
/* Contrary to gzip, bzip2 currently is not included and need to use */
|
||||
/* the system available bzip2 implementation. */
|
||||
/* */
|
||||
/* Define this macro if you want to enable this `feature'. */
|
||||
/* */
|
||||
/* #define FT_CONFIG_OPTION_USE_BZIP2 */
|
||||
|
||||
|
||||
/*************************************************************************/
|
||||
/* */
|
||||
/* Define to disable the use of file stream functions and types, FILE, */
|
||||
/* fopen() etc. Enables the use of smaller system libraries on embedded */
|
||||
/* systems that have multiple system libraries, some with or without */
|
||||
/* file stream support, in the cases where file stream support is not */
|
||||
/* necessary such as memory loading of font files. */
|
||||
/* */
|
||||
/* #define FT_CONFIG_OPTION_DISABLE_STREAM_SUPPORT */
|
||||
|
||||
|
||||
/*************************************************************************/
|
||||
/* */
|
||||
/* PNG bitmap support. */
|
||||
/* */
|
||||
/* FreeType now handles loading color bitmap glyphs in the PNG format. */
|
||||
/* This requires help from the external libpng library. Uncompressed */
|
||||
/* color bitmaps do not need any external libraries and will be */
|
||||
/* supported regardless of this configuration. */
|
||||
/* */
|
||||
/* Define this macro if you want to enable this `feature'. */
|
||||
/* */
|
||||
/* #define FT_CONFIG_OPTION_USE_PNG */
|
||||
|
||||
|
||||
/*************************************************************************/
|
||||
/* */
|
||||
/* HarfBuzz support. */
|
||||
/* */
|
||||
/* FreeType uses the HarfBuzz library to improve auto-hinting of */
|
||||
/* OpenType fonts. If available, many glyphs not directly addressable */
|
||||
/* by a font's character map will be hinted also. */
|
||||
/* */
|
||||
/* Define this macro if you want to enable this `feature'. */
|
||||
/* */
|
||||
/* #define FT_CONFIG_OPTION_USE_HARFBUZZ */
|
||||
|
||||
|
||||
/*************************************************************************/
|
||||
/* */
|
||||
/* DLL export compilation */
|
||||
/* */
|
||||
/* When compiling FreeType as a DLL, some systems/compilers need a */
|
||||
/* special keyword in front OR after the return type of function */
|
||||
/* declarations. */
|
||||
/* */
|
||||
/* Two macros are used within the FreeType source code to define */
|
||||
/* exported library functions: FT_EXPORT and FT_EXPORT_DEF. */
|
||||
/* */
|
||||
/* FT_EXPORT( return_type ) */
|
||||
/* */
|
||||
/* is used in a function declaration, as in */
|
||||
/* */
|
||||
/* FT_EXPORT( FT_Error ) */
|
||||
/* FT_Init_FreeType( FT_Library* alibrary ); */
|
||||
/* */
|
||||
/* */
|
||||
/* FT_EXPORT_DEF( return_type ) */
|
||||
/* */
|
||||
/* is used in a function definition, as in */
|
||||
/* */
|
||||
/* FT_EXPORT_DEF( FT_Error ) */
|
||||
/* FT_Init_FreeType( FT_Library* alibrary ) */
|
||||
/* { */
|
||||
/* ... some code ... */
|
||||
/* return FT_Err_Ok; */
|
||||
/* } */
|
||||
/* */
|
||||
/* You can provide your own implementation of FT_EXPORT and */
|
||||
/* FT_EXPORT_DEF here if you want. If you leave them undefined, they */
|
||||
/* will be later automatically defined as `extern return_type' to */
|
||||
/* allow normal compilation. */
|
||||
/* */
|
||||
/* Do not #undef these macros here since the build system might define */
|
||||
/* them for certain configurations only. */
|
||||
/* */
|
||||
/* #define FT_EXPORT(x) extern x */
|
||||
/* #define FT_EXPORT_DEF(x) x */
|
||||
|
||||
|
||||
/*************************************************************************/
|
||||
/* */
|
||||
/* Glyph Postscript Names handling */
|
||||
/* */
|
||||
/* By default, FreeType 2 is compiled with the `psnames' module. This */
|
||||
/* module is in charge of converting a glyph name string into a */
|
||||
/* Unicode value, or return a Macintosh standard glyph name for the */
|
||||
/* use with the TrueType `post' table. */
|
||||
/* */
|
||||
/* Undefine this macro if you do not want `psnames' compiled in your */
|
||||
/* build of FreeType. This has the following effects: */
|
||||
/* */
|
||||
/* - The TrueType driver will provide its own set of glyph names, */
|
||||
/* if you build it to support postscript names in the TrueType */
|
||||
/* `post' table. */
|
||||
/* */
|
||||
/* - The Type 1 driver will not be able to synthesize a Unicode */
|
||||
/* charmap out of the glyphs found in the fonts. */
|
||||
/* */
|
||||
/* You would normally undefine this configuration macro when building */
|
||||
/* a version of FreeType that doesn't contain a Type 1 or CFF driver. */
|
||||
/* */
|
||||
#define FT_CONFIG_OPTION_POSTSCRIPT_NAMES
|
||||
|
||||
|
||||
/*************************************************************************/
|
||||
/* */
|
||||
/* Postscript Names to Unicode Values support */
|
||||
/* */
|
||||
/* By default, FreeType 2 is built with the `PSNames' module compiled */
|
||||
/* in. Among other things, the module is used to convert a glyph name */
|
||||
/* into a Unicode value. This is especially useful in order to */
|
||||
/* synthesize on the fly a Unicode charmap from the CFF/Type 1 driver */
|
||||
/* through a big table named the `Adobe Glyph List' (AGL). */
|
||||
/* */
|
||||
/* Undefine this macro if you do not want the Adobe Glyph List */
|
||||
/* compiled in your `PSNames' module. The Type 1 driver will not be */
|
||||
/* able to synthesize a Unicode charmap out of the glyphs found in the */
|
||||
/* fonts. */
|
||||
/* */
|
||||
#define FT_CONFIG_OPTION_ADOBE_GLYPH_LIST
|
||||
|
||||
|
||||
/*************************************************************************/
|
||||
/* */
|
||||
/* Support for Mac fonts */
|
||||
/* */
|
||||
/* Define this macro if you want support for outline fonts in Mac */
|
||||
/* format (mac dfont, mac resource, macbinary containing a mac */
|
||||
/* resource) on non-Mac platforms. */
|
||||
/* */
|
||||
/* Note that the `FOND' resource isn't checked. */
|
||||
/* */
|
||||
#define FT_CONFIG_OPTION_MAC_FONTS
|
||||
|
||||
|
||||
/*************************************************************************/
|
||||
/* */
|
||||
/* Guessing methods to access embedded resource forks */
|
||||
/* */
|
||||
/* Enable extra Mac fonts support on non-Mac platforms (e.g. */
|
||||
/* GNU/Linux). */
|
||||
/* */
|
||||
/* Resource forks which include fonts data are stored sometimes in */
|
||||
/* locations which users or developers don't expected. In some cases, */
|
||||
/* resource forks start with some offset from the head of a file. In */
|
||||
/* other cases, the actual resource fork is stored in file different */
|
||||
/* from what the user specifies. If this option is activated, */
|
||||
/* FreeType tries to guess whether such offsets or different file */
|
||||
/* names must be used. */
|
||||
/* */
|
||||
/* Note that normal, direct access of resource forks is controlled via */
|
||||
/* the FT_CONFIG_OPTION_MAC_FONTS option. */
|
||||
/* */
|
||||
#ifdef FT_CONFIG_OPTION_MAC_FONTS
|
||||
#define FT_CONFIG_OPTION_GUESSING_EMBEDDED_RFORK
|
||||
#endif
|
||||
|
||||
|
||||
/*************************************************************************/
|
||||
/* */
|
||||
/* Allow the use of FT_Incremental_Interface to load typefaces that */
|
||||
/* contain no glyph data, but supply it via a callback function. */
|
||||
/* This is required by clients supporting document formats which */
|
||||
/* supply font data incrementally as the document is parsed, such */
|
||||
/* as the Ghostscript interpreter for the PostScript language. */
|
||||
/* */
|
||||
#define FT_CONFIG_OPTION_INCREMENTAL
|
||||
|
||||
|
||||
/*************************************************************************/
|
||||
/* */
|
||||
/* The size in bytes of the render pool used by the scan-line converter */
|
||||
/* to do all of its work. */
|
||||
/* */
|
||||
#define FT_RENDER_POOL_SIZE 16384L
|
||||
|
||||
|
||||
/*************************************************************************/
|
||||
/* */
|
||||
/* FT_MAX_MODULES */
|
||||
/* */
|
||||
/* The maximum number of modules that can be registered in a single */
|
||||
/* FreeType library object. 32 is the default. */
|
||||
/* */
|
||||
#define FT_MAX_MODULES 32
|
||||
|
||||
|
||||
/*************************************************************************/
|
||||
/* */
|
||||
/* Debug level */
|
||||
/* */
|
||||
/* FreeType can be compiled in debug or trace mode. In debug mode, */
|
||||
/* errors are reported through the `ftdebug' component. In trace */
|
||||
/* mode, additional messages are sent to the standard output during */
|
||||
/* execution. */
|
||||
/* */
|
||||
/* Define FT_DEBUG_LEVEL_ERROR to build the library in debug mode. */
|
||||
/* Define FT_DEBUG_LEVEL_TRACE to build it in trace mode. */
|
||||
/* */
|
||||
/* Don't define any of these macros to compile in `release' mode! */
|
||||
/* */
|
||||
/* Do not #undef these macros here since the build system might define */
|
||||
/* them for certain configurations only. */
|
||||
/* */
|
||||
/* #define FT_DEBUG_LEVEL_ERROR */
|
||||
/* #define FT_DEBUG_LEVEL_TRACE */
|
||||
|
||||
|
||||
/*************************************************************************/
|
||||
/* */
|
||||
/* Autofitter debugging */
|
||||
/* */
|
||||
/* If FT_DEBUG_AUTOFIT is defined, FreeType provides some means to */
|
||||
/* control the autofitter behaviour for debugging purposes with global */
|
||||
/* boolean variables (consequently, you should *never* enable this */
|
||||
/* while compiling in `release' mode): */
|
||||
/* */
|
||||
/* _af_debug_disable_horz_hints */
|
||||
/* _af_debug_disable_vert_hints */
|
||||
/* _af_debug_disable_blue_hints */
|
||||
/* */
|
||||
/* Additionally, the following functions provide dumps of various */
|
||||
/* internal autofit structures to stdout (using `printf'): */
|
||||
/* */
|
||||
/* af_glyph_hints_dump_points */
|
||||
/* af_glyph_hints_dump_segments */
|
||||
/* af_glyph_hints_dump_edges */
|
||||
/* af_glyph_hints_get_num_segments */
|
||||
/* af_glyph_hints_get_segment_offset */
|
||||
/* */
|
||||
/* As an argument, they use another global variable: */
|
||||
/* */
|
||||
/* _af_debug_hints */
|
||||
/* */
|
||||
/* Please have a look at the `ftgrid' demo program to see how those */
|
||||
/* variables and macros should be used. */
|
||||
/* */
|
||||
/* Do not #undef these macros here since the build system might define */
|
||||
/* them for certain configurations only. */
|
||||
/* */
|
||||
/* #define FT_DEBUG_AUTOFIT */
|
||||
|
||||
|
||||
/*************************************************************************/
|
||||
/* */
|
||||
/* Memory Debugging */
|
||||
/* */
|
||||
/* FreeType now comes with an integrated memory debugger that is */
|
||||
/* capable of detecting simple errors like memory leaks or double */
|
||||
/* deletes. To compile it within your build of the library, you */
|
||||
/* should define FT_DEBUG_MEMORY here. */
|
||||
/* */
|
||||
/* Note that the memory debugger is only activated at runtime when */
|
||||
/* when the _environment_ variable `FT2_DEBUG_MEMORY' is defined also! */
|
||||
/* */
|
||||
/* Do not #undef this macro here since the build system might define */
|
||||
/* it for certain configurations only. */
|
||||
/* */
|
||||
/* #define FT_DEBUG_MEMORY */
|
||||
|
||||
|
||||
/*************************************************************************/
|
||||
/* */
|
||||
/* Module errors */
|
||||
/* */
|
||||
/* If this macro is set (which is _not_ the default), the higher byte */
|
||||
/* of an error code gives the module in which the error has occurred, */
|
||||
/* while the lower byte is the real error code. */
|
||||
/* */
|
||||
/* Setting this macro makes sense for debugging purposes only, since */
|
||||
/* it would break source compatibility of certain programs that use */
|
||||
/* FreeType 2. */
|
||||
/* */
|
||||
/* More details can be found in the files ftmoderr.h and fterrors.h. */
|
||||
/* */
|
||||
#undef FT_CONFIG_OPTION_USE_MODULE_ERRORS
|
||||
|
||||
|
||||
/*************************************************************************/
|
||||
/* */
|
||||
/* Position Independent Code */
|
||||
/* */
|
||||
/* If this macro is set (which is _not_ the default), FreeType2 will */
|
||||
/* avoid creating constants that require address fixups. Instead the */
|
||||
/* constants will be moved into a struct and additional intialization */
|
||||
/* code will be used. */
|
||||
/* */
|
||||
/* Setting this macro is needed for systems that prohibit address */
|
||||
/* fixups, such as BREW. [Note that standard compilers like gcc or */
|
||||
/* clang handle PIC generation automatically; you don't have to set */
|
||||
/* FT_CONFIG_OPTION_PIC, which is only necessary for very special */
|
||||
/* compilers.] */
|
||||
/* */
|
||||
/* Note that FT_CONFIG_OPTION_PIC support is not available for all */
|
||||
/* modules (see `modules.cfg' for a complete list). For building with */
|
||||
/* FT_CONFIG_OPTION_PIC support, do the following. */
|
||||
/* */
|
||||
/* 0. Clone the repository. */
|
||||
/* 1. Define FT_CONFIG_OPTION_PIC. */
|
||||
/* 2. Remove all subdirectories in `src' that don't have */
|
||||
/* FT_CONFIG_OPTION_PIC support. */
|
||||
/* 3. Comment out the corresponding modules in `modules.cfg'. */
|
||||
/* 4. Compile. */
|
||||
/* */
|
||||
/* #define FT_CONFIG_OPTION_PIC */
|
||||
|
||||
|
||||
/*************************************************************************/
|
||||
/*************************************************************************/
|
||||
/**** ****/
|
||||
/**** S F N T D R I V E R C O N F I G U R A T I O N ****/
|
||||
/**** ****/
|
||||
/*************************************************************************/
|
||||
/*************************************************************************/
|
||||
|
||||
|
||||
/*************************************************************************/
|
||||
/* */
|
||||
/* Define TT_CONFIG_OPTION_EMBEDDED_BITMAPS if you want to support */
|
||||
/* embedded bitmaps in all formats using the SFNT module (namely */
|
||||
/* TrueType & OpenType). */
|
||||
/* */
|
||||
#define TT_CONFIG_OPTION_EMBEDDED_BITMAPS
|
||||
|
||||
|
||||
/*************************************************************************/
|
||||
/* */
|
||||
/* Define TT_CONFIG_OPTION_POSTSCRIPT_NAMES if you want to be able to */
|
||||
/* load and enumerate the glyph Postscript names in a TrueType or */
|
||||
/* OpenType file. */
|
||||
/* */
|
||||
/* Note that when you do not compile the `PSNames' module by undefining */
|
||||
/* the above FT_CONFIG_OPTION_POSTSCRIPT_NAMES, the `sfnt' module will */
|
||||
/* contain additional code used to read the PS Names table from a font. */
|
||||
/* */
|
||||
/* (By default, the module uses `PSNames' to extract glyph names.) */
|
||||
/* */
|
||||
#define TT_CONFIG_OPTION_POSTSCRIPT_NAMES
|
||||
|
||||
|
||||
/*************************************************************************/
|
||||
/* */
|
||||
/* Define TT_CONFIG_OPTION_SFNT_NAMES if your applications need to */
|
||||
/* access the internal name table in a SFNT-based format like TrueType */
|
||||
/* or OpenType. The name table contains various strings used to */
|
||||
/* describe the font, like family name, copyright, version, etc. It */
|
||||
/* does not contain any glyph name though. */
|
||||
/* */
|
||||
/* Accessing SFNT names is done through the functions declared in */
|
||||
/* `ftsnames.h'. */
|
||||
/* */
|
||||
#define TT_CONFIG_OPTION_SFNT_NAMES
|
||||
|
||||
|
||||
/*************************************************************************/
|
||||
/* */
|
||||
/* TrueType CMap support */
|
||||
/* */
|
||||
/* Here you can fine-tune which TrueType CMap table format shall be */
|
||||
/* supported. */
|
||||
#define TT_CONFIG_CMAP_FORMAT_0
|
||||
#define TT_CONFIG_CMAP_FORMAT_2
|
||||
#define TT_CONFIG_CMAP_FORMAT_4
|
||||
#define TT_CONFIG_CMAP_FORMAT_6
|
||||
#define TT_CONFIG_CMAP_FORMAT_8
|
||||
#define TT_CONFIG_CMAP_FORMAT_10
|
||||
#define TT_CONFIG_CMAP_FORMAT_12
|
||||
#define TT_CONFIG_CMAP_FORMAT_13
|
||||
#define TT_CONFIG_CMAP_FORMAT_14
|
||||
|
||||
|
||||
/*************************************************************************/
|
||||
/*************************************************************************/
|
||||
/**** ****/
|
||||
/**** T R U E T Y P E D R I V E R C O N F I G U R A T I O N ****/
|
||||
/**** ****/
|
||||
/*************************************************************************/
|
||||
/*************************************************************************/
|
||||
|
||||
/*************************************************************************/
|
||||
/* */
|
||||
/* Define TT_CONFIG_OPTION_BYTECODE_INTERPRETER if you want to compile */
|
||||
/* a bytecode interpreter in the TrueType driver. */
|
||||
/* */
|
||||
/* By undefining this, you will only compile the code necessary to load */
|
||||
/* TrueType glyphs without hinting. */
|
||||
/* */
|
||||
/* Do not #undef this macro here, since the build system might */
|
||||
/* define it for certain configurations only. */
|
||||
/* */
|
||||
#define TT_CONFIG_OPTION_BYTECODE_INTERPRETER
|
||||
|
||||
|
||||
/*************************************************************************/
|
||||
/* */
|
||||
/* Define TT_CONFIG_OPTION_SUBPIXEL_HINTING if you want to compile */
|
||||
/* subpixel hinting support into the TrueType driver. This modifies the */
|
||||
/* TrueType hinting mechanism when anything but FT_RENDER_MODE_MONO is */
|
||||
/* requested. */
|
||||
/* */
|
||||
/* In particular, it modifies the bytecode interpreter to interpret (or */
|
||||
/* not) instructions in a certain way so that all TrueType fonts look */
|
||||
/* like they do in a Windows ClearType (DirectWrite) environment. See */
|
||||
/* [1] for a technical overview on what this means. See `ttinterp.h' */
|
||||
/* for more details on the LEAN option. */
|
||||
/* */
|
||||
/* There are three options. */
|
||||
/* */
|
||||
/* 1. This option is associated with the `Infinality' moniker. */
|
||||
/* Contributed by an individual nicknamed Infinality with the goal of */
|
||||
/* making TrueType fonts render better than on Windows. A high */
|
||||
/* amount of configurability and flexibility, down to rules for */
|
||||
/* single glyphs in fonts, but also very slow. Its experimental and */
|
||||
/* slow nature and the original developer losing interest meant that */
|
||||
/* this option was never enabled in default builds. */
|
||||
/* */
|
||||
/* 2. The new default mode for the TrueType driver. The Infinality code */
|
||||
/* base was stripped to the bare minimum and all configurability */
|
||||
/* removed in the name of speed and simplicity. The configurability */
|
||||
/* was mainly aimed at legacy fonts like Arial, Times New Roman, or */
|
||||
/* Courier. Legacy fonts are fonts that modify vertical stems to */
|
||||
/* achieve clean black-and-white bitmaps. The new mode focuses on */
|
||||
/* applying a minimal set of rules to all fonts indiscriminately so */
|
||||
/* that modern and web fonts render well while legacy fonts render */
|
||||
/* okay. */
|
||||
/* */
|
||||
/* 3. Compile both. */
|
||||
/* */
|
||||
/* By undefining these, you get rendering behavior like on Windows */
|
||||
/* without ClearType, i.e., Windows XP without ClearType enabled and */
|
||||
/* Win9x (interpreter version v35). Or not, depending on how much */
|
||||
/* hinting blood and testing tears the font designer put into a given */
|
||||
/* font. If you define one or both subpixel hinting options, you can */
|
||||
/* switch between between v35 and the ones you define. */
|
||||
/* */
|
||||
/* This option requires TT_CONFIG_OPTION_BYTECODE_INTERPRETER to be */
|
||||
/* defined. */
|
||||
/* */
|
||||
/* [1] http://www.microsoft.com/typography/cleartype/truetypecleartype.aspx */
|
||||
/* */
|
||||
/* #define TT_CONFIG_OPTION_SUBPIXEL_HINTING 1 */
|
||||
#define TT_CONFIG_OPTION_SUBPIXEL_HINTING 2
|
||||
/* #define TT_CONFIG_OPTION_SUBPIXEL_HINTING ( 1 | 2 ) */
|
||||
|
||||
|
||||
/*************************************************************************/
|
||||
/* */
|
||||
/* Define TT_CONFIG_OPTION_COMPONENT_OFFSET_SCALED to compile the */
|
||||
/* TrueType glyph loader to use Apple's definition of how to handle */
|
||||
/* component offsets in composite glyphs. */
|
||||
/* */
|
||||
/* Apple and MS disagree on the default behavior of component offsets */
|
||||
/* in composites. Apple says that they should be scaled by the scaling */
|
||||
/* factors in the transformation matrix (roughly, it's more complex) */
|
||||
/* while MS says they should not. OpenType defines two bits in the */
|
||||
/* composite flags array which can be used to disambiguate, but old */
|
||||
/* fonts will not have them. */
|
||||
/* */
|
||||
/* http://www.microsoft.com/typography/otspec/glyf.htm */
|
||||
/* https://developer.apple.com/fonts/TrueType-Reference-Manual/RM06/Chap6glyf.html */
|
||||
/* */
|
||||
#undef TT_CONFIG_OPTION_COMPONENT_OFFSET_SCALED
|
||||
|
||||
|
||||
/*************************************************************************/
|
||||
/* */
|
||||
/* Define TT_CONFIG_OPTION_GX_VAR_SUPPORT if you want to include */
|
||||
/* support for Apple's distortable font technology (fvar, gvar, cvar, */
|
||||
/* and avar tables). This has many similarities to Type 1 Multiple */
|
||||
/* Masters support. */
|
||||
/* */
|
||||
#define TT_CONFIG_OPTION_GX_VAR_SUPPORT
|
||||
|
||||
|
||||
/*************************************************************************/
|
||||
/* */
|
||||
/* Define TT_CONFIG_OPTION_BDF if you want to include support for */
|
||||
/* an embedded `BDF ' table within SFNT-based bitmap formats. */
|
||||
/* */
|
||||
#define TT_CONFIG_OPTION_BDF
|
||||
|
||||
|
||||
/*************************************************************************/
|
||||
/* */
|
||||
/* Option TT_CONFIG_OPTION_MAX_RUNNABLE_OPCODES controls the maximum */
|
||||
/* number of bytecode instructions executed for a single run of the */
|
||||
/* bytecode interpreter, needed to prevent infinite loops. You don't */
|
||||
/* want to change this except for very special situations (e.g., making */
|
||||
/* a library fuzzer spend less time to handle broken fonts). */
|
||||
/* */
|
||||
/* It is not expected that this value is ever modified by a configuring */
|
||||
/* script; instead, it gets surrounded with #ifndef ... #endif so that */
|
||||
/* the value can be set as a preprocessor option on the compiler's */
|
||||
/* command line. */
|
||||
/* */
|
||||
#ifndef TT_CONFIG_OPTION_MAX_RUNNABLE_OPCODES
|
||||
#define TT_CONFIG_OPTION_MAX_RUNNABLE_OPCODES 1000000L
|
||||
#endif
|
||||
|
||||
|
||||
/*************************************************************************/
|
||||
/*************************************************************************/
|
||||
/**** ****/
|
||||
/**** T Y P E 1 D R I V E R C O N F I G U R A T I O N ****/
|
||||
/**** ****/
|
||||
/*************************************************************************/
|
||||
/*************************************************************************/
|
||||
|
||||
|
||||
/*************************************************************************/
|
||||
/* */
|
||||
/* T1_MAX_DICT_DEPTH is the maximum depth of nest dictionaries and */
|
||||
/* arrays in the Type 1 stream (see t1load.c). A minimum of 4 is */
|
||||
/* required. */
|
||||
/* */
|
||||
#define T1_MAX_DICT_DEPTH 5
|
||||
|
||||
|
||||
/*************************************************************************/
|
||||
/* */
|
||||
/* T1_MAX_SUBRS_CALLS details the maximum number of nested sub-routine */
|
||||
/* calls during glyph loading. */
|
||||
/* */
|
||||
#define T1_MAX_SUBRS_CALLS 16
|
||||
|
||||
|
||||
/*************************************************************************/
|
||||
/* */
|
||||
/* T1_MAX_CHARSTRING_OPERANDS is the charstring stack's capacity. A */
|
||||
/* minimum of 16 is required. */
|
||||
/* */
|
||||
/* The Chinese font MingTiEG-Medium (CNS 11643 character set) needs 256. */
|
||||
/* */
|
||||
#define T1_MAX_CHARSTRINGS_OPERANDS 256
|
||||
|
||||
|
||||
/*************************************************************************/
|
||||
/* */
|
||||
/* Define this configuration macro if you want to prevent the */
|
||||
/* compilation of `t1afm', which is in charge of reading Type 1 AFM */
|
||||
/* files into an existing face. Note that if set, the T1 driver will be */
|
||||
/* unable to produce kerning distances. */
|
||||
/* */
|
||||
#undef T1_CONFIG_OPTION_NO_AFM
|
||||
|
||||
|
||||
/*************************************************************************/
|
||||
/* */
|
||||
/* Define this configuration macro if you want to prevent the */
|
||||
/* compilation of the Multiple Masters font support in the Type 1 */
|
||||
/* driver. */
|
||||
/* */
|
||||
#undef T1_CONFIG_OPTION_NO_MM_SUPPORT
|
||||
|
||||
|
||||
/*************************************************************************/
|
||||
/*************************************************************************/
|
||||
/**** ****/
|
||||
/**** C F F D R I V E R C O N F I G U R A T I O N ****/
|
||||
/**** ****/
|
||||
/*************************************************************************/
|
||||
/*************************************************************************/
|
||||
|
||||
|
||||
/*************************************************************************/
|
||||
/* */
|
||||
/* Using CFF_CONFIG_OPTION_DARKENING_PARAMETER_{X,Y}{1,2,3,4} it is */
|
||||
/* possible to set up the default values of the four control points that */
|
||||
/* define the stem darkening behaviour of the (new) CFF engine. For */
|
||||
/* more details please read the documentation of the */
|
||||
/* `darkening-parameters' property of the cff driver module (file */
|
||||
/* `ftcffdrv.h'), which allows the control at run-time. */
|
||||
/* */
|
||||
/* Do *not* undefine these macros! */
|
||||
/* */
|
||||
#define CFF_CONFIG_OPTION_DARKENING_PARAMETER_X1 500
|
||||
#define CFF_CONFIG_OPTION_DARKENING_PARAMETER_Y1 400
|
||||
|
||||
#define CFF_CONFIG_OPTION_DARKENING_PARAMETER_X2 1000
|
||||
#define CFF_CONFIG_OPTION_DARKENING_PARAMETER_Y2 275
|
||||
|
||||
#define CFF_CONFIG_OPTION_DARKENING_PARAMETER_X3 1667
|
||||
#define CFF_CONFIG_OPTION_DARKENING_PARAMETER_Y3 275
|
||||
|
||||
#define CFF_CONFIG_OPTION_DARKENING_PARAMETER_X4 2333
|
||||
#define CFF_CONFIG_OPTION_DARKENING_PARAMETER_Y4 0
|
||||
|
||||
|
||||
/*************************************************************************/
|
||||
/* */
|
||||
/* CFF_CONFIG_OPTION_OLD_ENGINE controls whether the pre-Adobe CFF */
|
||||
/* engine gets compiled into FreeType. If defined, it is possible to */
|
||||
/* switch between the two engines using the `hinting-engine' property of */
|
||||
/* the cff driver module. */
|
||||
/* */
|
||||
/* #define CFF_CONFIG_OPTION_OLD_ENGINE */
|
||||
|
||||
|
||||
/*************************************************************************/
|
||||
/*************************************************************************/
|
||||
/**** ****/
|
||||
/**** A U T O F I T M O D U L E C O N F I G U R A T I O N ****/
|
||||
/**** ****/
|
||||
/*************************************************************************/
|
||||
/*************************************************************************/
|
||||
|
||||
|
||||
/*************************************************************************/
|
||||
/* */
|
||||
/* Compile autofit module with CJK (Chinese, Japanese, Korean) script */
|
||||
/* support. */
|
||||
/* */
|
||||
#define AF_CONFIG_OPTION_CJK
|
||||
|
||||
/*************************************************************************/
|
||||
/* */
|
||||
/* Compile autofit module with Indic script support. */
|
||||
/* */
|
||||
#define AF_CONFIG_OPTION_INDIC
|
||||
|
||||
/*************************************************************************/
|
||||
/* */
|
||||
/* Compile autofit module with warp hinting. The idea of the warping */
|
||||
/* code is to slightly scale and shift a glyph within a single dimension */
|
||||
/* so that as much of its segments are aligned (more or less) on the */
|
||||
/* grid. To find out the optimal scaling and shifting value, various */
|
||||
/* parameter combinations are tried and scored. */
|
||||
/* */
|
||||
/* This experimental option is active only if the rendering mode is */
|
||||
/* FT_RENDER_MODE_LIGHT; you can switch warping on and off with the */
|
||||
/* `warping' property of the auto-hinter (see file `ftautoh.h' for more */
|
||||
/* information; by default it is switched off). */
|
||||
/* */
|
||||
#define AF_CONFIG_OPTION_USE_WARPER
|
||||
|
||||
/* */
|
||||
|
||||
|
||||
/*
|
||||
* This macro is obsolete. Support has been removed in FreeType
|
||||
* version 2.5.
|
||||
*/
|
||||
/* #define FT_CONFIG_OPTION_OLD_INTERNALS */
|
||||
|
||||
|
||||
/*
|
||||
* This macro is defined if native TrueType hinting is requested by the
|
||||
* definitions above.
|
||||
*/
|
||||
#ifdef TT_CONFIG_OPTION_BYTECODE_INTERPRETER
|
||||
#define TT_USE_BYTECODE_INTERPRETER
|
||||
|
||||
#if TT_CONFIG_OPTION_SUBPIXEL_HINTING & 1
|
||||
#define TT_SUPPORT_SUBPIXEL_HINTING_INFINALITY
|
||||
#endif
|
||||
|
||||
#if TT_CONFIG_OPTION_SUBPIXEL_HINTING & 2
|
||||
#define TT_SUPPORT_SUBPIXEL_HINTING_MINIMAL
|
||||
#endif
|
||||
#endif
|
||||
|
||||
|
||||
/*
|
||||
* Check CFF darkening parameters. The checks are the same as in function
|
||||
* `cff_property_set' in file `cffdrivr.c'.
|
||||
*/
|
||||
#if CFF_CONFIG_OPTION_DARKENING_PARAMETER_X1 < 0 || \
|
||||
CFF_CONFIG_OPTION_DARKENING_PARAMETER_X2 < 0 || \
|
||||
CFF_CONFIG_OPTION_DARKENING_PARAMETER_X3 < 0 || \
|
||||
CFF_CONFIG_OPTION_DARKENING_PARAMETER_X4 < 0 || \
|
||||
\
|
||||
CFF_CONFIG_OPTION_DARKENING_PARAMETER_Y1 < 0 || \
|
||||
CFF_CONFIG_OPTION_DARKENING_PARAMETER_Y2 < 0 || \
|
||||
CFF_CONFIG_OPTION_DARKENING_PARAMETER_Y3 < 0 || \
|
||||
CFF_CONFIG_OPTION_DARKENING_PARAMETER_Y4 < 0 || \
|
||||
\
|
||||
CFF_CONFIG_OPTION_DARKENING_PARAMETER_X1 > \
|
||||
CFF_CONFIG_OPTION_DARKENING_PARAMETER_X2 || \
|
||||
CFF_CONFIG_OPTION_DARKENING_PARAMETER_X2 > \
|
||||
CFF_CONFIG_OPTION_DARKENING_PARAMETER_X3 || \
|
||||
CFF_CONFIG_OPTION_DARKENING_PARAMETER_X3 > \
|
||||
CFF_CONFIG_OPTION_DARKENING_PARAMETER_X4 || \
|
||||
\
|
||||
CFF_CONFIG_OPTION_DARKENING_PARAMETER_Y1 > 500 || \
|
||||
CFF_CONFIG_OPTION_DARKENING_PARAMETER_Y2 > 500 || \
|
||||
CFF_CONFIG_OPTION_DARKENING_PARAMETER_Y3 > 500 || \
|
||||
CFF_CONFIG_OPTION_DARKENING_PARAMETER_Y4 > 500
|
||||
#error "Invalid CFF darkening parameters!"
|
||||
#endif
|
||||
|
||||
FT_END_HEADER
|
||||
|
||||
|
||||
#endif /* FTOPTION_H_ */
|
||||
|
||||
|
||||
/* END */
|
||||
@ -0,0 +1,175 @@
|
||||
/***************************************************************************/
|
||||
/* */
|
||||
/* ftstdlib.h */
|
||||
/* */
|
||||
/* ANSI-specific library and header configuration file (specification */
|
||||
/* only). */
|
||||
/* */
|
||||
/* Copyright 2002-2016 by */
|
||||
/* David Turner, Robert Wilhelm, and Werner Lemberg. */
|
||||
/* */
|
||||
/* This file is part of the FreeType project, and may only be used, */
|
||||
/* modified, and distributed under the terms of the FreeType project */
|
||||
/* license, LICENSE.TXT. By continuing to use, modify, or distribute */
|
||||
/* this file you indicate that you have read the license and */
|
||||
/* understand and accept it fully. */
|
||||
/* */
|
||||
/***************************************************************************/
|
||||
|
||||
|
||||
/*************************************************************************/
|
||||
/* */
|
||||
/* This file is used to group all #includes to the ANSI C library that */
|
||||
/* FreeType normally requires. It also defines macros to rename the */
|
||||
/* standard functions within the FreeType source code. */
|
||||
/* */
|
||||
/* Load a file which defines FTSTDLIB_H_ before this one to override it. */
|
||||
/* */
|
||||
/*************************************************************************/
|
||||
|
||||
|
||||
#ifndef FTSTDLIB_H_
|
||||
#define FTSTDLIB_H_
|
||||
|
||||
|
||||
#include <stddef.h>
|
||||
|
||||
#define ft_ptrdiff_t ptrdiff_t
|
||||
|
||||
|
||||
/**********************************************************************/
|
||||
/* */
|
||||
/* integer limits */
|
||||
/* */
|
||||
/* UINT_MAX and ULONG_MAX are used to automatically compute the size */
|
||||
/* of `int' and `long' in bytes at compile-time. So far, this works */
|
||||
/* for all platforms the library has been tested on. */
|
||||
/* */
|
||||
/* Note that on the extremely rare platforms that do not provide */
|
||||
/* integer types that are _exactly_ 16 and 32 bits wide (e.g. some */
|
||||
/* old Crays where `int' is 36 bits), we do not make any guarantee */
|
||||
/* about the correct behaviour of FT2 with all fonts. */
|
||||
/* */
|
||||
/* In these case, `ftconfig.h' will refuse to compile anyway with a */
|
||||
/* message like `couldn't find 32-bit type' or something similar. */
|
||||
/* */
|
||||
/**********************************************************************/
|
||||
|
||||
|
||||
#include <limits.h>
|
||||
|
||||
#define FT_CHAR_BIT CHAR_BIT
|
||||
#define FT_USHORT_MAX USHRT_MAX
|
||||
#define FT_INT_MAX INT_MAX
|
||||
#define FT_INT_MIN INT_MIN
|
||||
#define FT_UINT_MAX UINT_MAX
|
||||
#define FT_LONG_MIN LONG_MIN
|
||||
#define FT_LONG_MAX LONG_MAX
|
||||
#define FT_ULONG_MAX ULONG_MAX
|
||||
|
||||
|
||||
/**********************************************************************/
|
||||
/* */
|
||||
/* character and string processing */
|
||||
/* */
|
||||
/**********************************************************************/
|
||||
|
||||
|
||||
#include <string.h>
|
||||
|
||||
#define ft_memchr memchr
|
||||
#define ft_memcmp memcmp
|
||||
#define ft_memcpy memcpy
|
||||
#define ft_memmove memmove
|
||||
#define ft_memset memset
|
||||
#define ft_strcat strcat
|
||||
#define ft_strcmp strcmp
|
||||
#define ft_strcpy strcpy
|
||||
#define ft_strlen strlen
|
||||
#define ft_strncmp strncmp
|
||||
#define ft_strncpy strncpy
|
||||
#define ft_strrchr strrchr
|
||||
#define ft_strstr strstr
|
||||
|
||||
|
||||
/**********************************************************************/
|
||||
/* */
|
||||
/* file handling */
|
||||
/* */
|
||||
/**********************************************************************/
|
||||
|
||||
|
||||
#include <stdio.h>
|
||||
|
||||
#define FT_FILE FILE
|
||||
#define ft_fclose fclose
|
||||
#define ft_fopen fopen
|
||||
#define ft_fread fread
|
||||
#define ft_fseek fseek
|
||||
#define ft_ftell ftell
|
||||
#define ft_sprintf sprintf
|
||||
|
||||
|
||||
/**********************************************************************/
|
||||
/* */
|
||||
/* sorting */
|
||||
/* */
|
||||
/**********************************************************************/
|
||||
|
||||
|
||||
#include <stdlib.h>
|
||||
|
||||
#define ft_qsort qsort
|
||||
|
||||
|
||||
/**********************************************************************/
|
||||
/* */
|
||||
/* memory allocation */
|
||||
/* */
|
||||
/**********************************************************************/
|
||||
|
||||
|
||||
#define ft_scalloc calloc
|
||||
#define ft_sfree free
|
||||
#define ft_smalloc malloc
|
||||
#define ft_srealloc realloc
|
||||
|
||||
|
||||
/**********************************************************************/
|
||||
/* */
|
||||
/* miscellaneous */
|
||||
/* */
|
||||
/**********************************************************************/
|
||||
|
||||
|
||||
#define ft_strtol strtol
|
||||
#define ft_getenv getenv
|
||||
|
||||
|
||||
/**********************************************************************/
|
||||
/* */
|
||||
/* execution control */
|
||||
/* */
|
||||
/**********************************************************************/
|
||||
|
||||
|
||||
#include <setjmp.h>
|
||||
|
||||
#define ft_jmp_buf jmp_buf /* note: this cannot be a typedef since */
|
||||
/* jmp_buf is defined as a macro */
|
||||
/* on certain platforms */
|
||||
|
||||
#define ft_longjmp longjmp
|
||||
#define ft_setjmp( b ) setjmp( *(ft_jmp_buf*) &(b) ) /* same thing here */
|
||||
|
||||
|
||||
/* the following is only used for debugging purposes, i.e., if */
|
||||
/* FT_DEBUG_LEVEL_ERROR or FT_DEBUG_LEVEL_TRACE are defined */
|
||||
|
||||
#include <stdarg.h>
|
||||
|
||||
|
||||
#endif /* FTSTDLIB_H_ */
|
||||
|
||||
|
||||
/* END */
|
||||
4341
include/fake/vtcs_root_vienna/freetype2/freetype/freetype.h
Normal file
4341
include/fake/vtcs_root_vienna/freetype2/freetype/freetype.h
Normal file
File diff suppressed because it is too large
Load Diff
187
include/fake/vtcs_root_vienna/freetype2/freetype/ftadvanc.h
Normal file
187
include/fake/vtcs_root_vienna/freetype2/freetype/ftadvanc.h
Normal file
@ -0,0 +1,187 @@
|
||||
/***************************************************************************/
|
||||
/* */
|
||||
/* ftadvanc.h */
|
||||
/* */
|
||||
/* Quick computation of advance widths (specification only). */
|
||||
/* */
|
||||
/* Copyright 2008-2016 by */
|
||||
/* David Turner, Robert Wilhelm, and Werner Lemberg. */
|
||||
/* */
|
||||
/* This file is part of the FreeType project, and may only be used, */
|
||||
/* modified, and distributed under the terms of the FreeType project */
|
||||
/* license, LICENSE.TXT. By continuing to use, modify, or distribute */
|
||||
/* this file you indicate that you have read the license and */
|
||||
/* understand and accept it fully. */
|
||||
/* */
|
||||
/***************************************************************************/
|
||||
|
||||
|
||||
#ifndef FTADVANC_H_
|
||||
#define FTADVANC_H_
|
||||
|
||||
|
||||
#include <ft2build.h>
|
||||
#include FT_FREETYPE_H
|
||||
|
||||
#ifdef FREETYPE_H
|
||||
#error "freetype.h of FreeType 1 has been loaded!"
|
||||
#error "Please fix the directory search order for header files"
|
||||
#error "so that freetype.h of FreeType 2 is found first."
|
||||
#endif
|
||||
|
||||
|
||||
FT_BEGIN_HEADER
|
||||
|
||||
|
||||
/**************************************************************************
|
||||
*
|
||||
* @section:
|
||||
* quick_advance
|
||||
*
|
||||
* @title:
|
||||
* Quick retrieval of advance values
|
||||
*
|
||||
* @abstract:
|
||||
* Retrieve horizontal and vertical advance values without processing
|
||||
* glyph outlines, if possible.
|
||||
*
|
||||
* @description:
|
||||
* This section contains functions to quickly extract advance values
|
||||
* without handling glyph outlines, if possible.
|
||||
*
|
||||
* @order:
|
||||
* FT_Get_Advance
|
||||
* FT_Get_Advances
|
||||
*
|
||||
*/
|
||||
|
||||
|
||||
/*************************************************************************/
|
||||
/* */
|
||||
/* <Const> */
|
||||
/* FT_ADVANCE_FLAG_FAST_ONLY */
|
||||
/* */
|
||||
/* <Description> */
|
||||
/* A bit-flag to be OR-ed with the `flags' parameter of the */
|
||||
/* @FT_Get_Advance and @FT_Get_Advances functions. */
|
||||
/* */
|
||||
/* If set, it indicates that you want these functions to fail if the */
|
||||
/* corresponding hinting mode or font driver doesn't allow for very */
|
||||
/* quick advance computation. */
|
||||
/* */
|
||||
/* Typically, glyphs that are either unscaled, unhinted, bitmapped, */
|
||||
/* or light-hinted can have their advance width computed very */
|
||||
/* quickly. */
|
||||
/* */
|
||||
/* Normal and bytecode hinted modes that require loading, scaling, */
|
||||
/* and hinting of the glyph outline, are extremely slow by */
|
||||
/* comparison. */
|
||||
/* */
|
||||
#define FT_ADVANCE_FLAG_FAST_ONLY 0x20000000L
|
||||
|
||||
|
||||
/*************************************************************************/
|
||||
/* */
|
||||
/* <Function> */
|
||||
/* FT_Get_Advance */
|
||||
/* */
|
||||
/* <Description> */
|
||||
/* Retrieve the advance value of a given glyph outline in an */
|
||||
/* @FT_Face. */
|
||||
/* */
|
||||
/* <Input> */
|
||||
/* face :: The source @FT_Face handle. */
|
||||
/* */
|
||||
/* gindex :: The glyph index. */
|
||||
/* */
|
||||
/* load_flags :: A set of bit flags similar to those used when */
|
||||
/* calling @FT_Load_Glyph, used to determine what kind */
|
||||
/* of advances you need. */
|
||||
/* <Output> */
|
||||
/* padvance :: The advance value. If scaling is performed (based on */
|
||||
/* the value of `load_flags'), the advance value is in */
|
||||
/* 16.16 format. Otherwise, it is in font units. */
|
||||
/* */
|
||||
/* If @FT_LOAD_VERTICAL_LAYOUT is set, this is the */
|
||||
/* vertical advance corresponding to a vertical layout. */
|
||||
/* Otherwise, it is the horizontal advance in a */
|
||||
/* horizontal layout. */
|
||||
/* */
|
||||
/* <Return> */
|
||||
/* FreeType error code. 0 means success. */
|
||||
/* */
|
||||
/* <Note> */
|
||||
/* This function may fail if you use @FT_ADVANCE_FLAG_FAST_ONLY and */
|
||||
/* if the corresponding font backend doesn't have a quick way to */
|
||||
/* retrieve the advances. */
|
||||
/* */
|
||||
/* A scaled advance is returned in 16.16 format but isn't transformed */
|
||||
/* by the affine transformation specified by @FT_Set_Transform. */
|
||||
/* */
|
||||
FT_EXPORT( FT_Error )
|
||||
FT_Get_Advance( FT_Face face,
|
||||
FT_UInt gindex,
|
||||
FT_Int32 load_flags,
|
||||
FT_Fixed *padvance );
|
||||
|
||||
|
||||
/*************************************************************************/
|
||||
/* */
|
||||
/* <Function> */
|
||||
/* FT_Get_Advances */
|
||||
/* */
|
||||
/* <Description> */
|
||||
/* Retrieve the advance values of several glyph outlines in an */
|
||||
/* @FT_Face. */
|
||||
/* */
|
||||
/* <Input> */
|
||||
/* face :: The source @FT_Face handle. */
|
||||
/* */
|
||||
/* start :: The first glyph index. */
|
||||
/* */
|
||||
/* count :: The number of advance values you want to retrieve. */
|
||||
/* */
|
||||
/* load_flags :: A set of bit flags similar to those used when */
|
||||
/* calling @FT_Load_Glyph. */
|
||||
/* */
|
||||
/* <Output> */
|
||||
/* padvance :: The advance values. This array, to be provided by the */
|
||||
/* caller, must contain at least `count' elements. */
|
||||
/* */
|
||||
/* If scaling is performed (based on the value of */
|
||||
/* `load_flags'), the advance values are in 16.16 format. */
|
||||
/* Otherwise, they are in font units. */
|
||||
/* */
|
||||
/* If @FT_LOAD_VERTICAL_LAYOUT is set, these are the */
|
||||
/* vertical advances corresponding to a vertical layout. */
|
||||
/* Otherwise, they are the horizontal advances in a */
|
||||
/* horizontal layout. */
|
||||
/* */
|
||||
/* <Return> */
|
||||
/* FreeType error code. 0 means success. */
|
||||
/* */
|
||||
/* <Note> */
|
||||
/* This function may fail if you use @FT_ADVANCE_FLAG_FAST_ONLY and */
|
||||
/* if the corresponding font backend doesn't have a quick way to */
|
||||
/* retrieve the advances. */
|
||||
/* */
|
||||
/* Scaled advances are returned in 16.16 format but aren't */
|
||||
/* transformed by the affine transformation specified by */
|
||||
/* @FT_Set_Transform. */
|
||||
/* */
|
||||
FT_EXPORT( FT_Error )
|
||||
FT_Get_Advances( FT_Face face,
|
||||
FT_UInt start,
|
||||
FT_UInt count,
|
||||
FT_Int32 load_flags,
|
||||
FT_Fixed *padvances );
|
||||
|
||||
/* */
|
||||
|
||||
|
||||
FT_END_HEADER
|
||||
|
||||
#endif /* FTADVANC_H_ */
|
||||
|
||||
|
||||
/* END */
|
||||
511
include/fake/vtcs_root_vienna/freetype2/freetype/ftautoh.h
Normal file
511
include/fake/vtcs_root_vienna/freetype2/freetype/ftautoh.h
Normal file
@ -0,0 +1,511 @@
|
||||
/***************************************************************************/
|
||||
/* */
|
||||
/* ftautoh.h */
|
||||
/* */
|
||||
/* FreeType API for controlling the auto-hinter (specification only). */
|
||||
/* */
|
||||
/* Copyright 2012-2016 by */
|
||||
/* David Turner, Robert Wilhelm, and Werner Lemberg. */
|
||||
/* */
|
||||
/* This file is part of the FreeType project, and may only be used, */
|
||||
/* modified, and distributed under the terms of the FreeType project */
|
||||
/* license, LICENSE.TXT. By continuing to use, modify, or distribute */
|
||||
/* this file you indicate that you have read the license and */
|
||||
/* understand and accept it fully. */
|
||||
/* */
|
||||
/***************************************************************************/
|
||||
|
||||
|
||||
#ifndef FTAUTOH_H_
|
||||
#define FTAUTOH_H_
|
||||
|
||||
#include <ft2build.h>
|
||||
#include FT_FREETYPE_H
|
||||
|
||||
#ifdef FREETYPE_H
|
||||
#error "freetype.h of FreeType 1 has been loaded!"
|
||||
#error "Please fix the directory search order for header files"
|
||||
#error "so that freetype.h of FreeType 2 is found first."
|
||||
#endif
|
||||
|
||||
|
||||
FT_BEGIN_HEADER
|
||||
|
||||
|
||||
/**************************************************************************
|
||||
*
|
||||
* @section:
|
||||
* auto_hinter
|
||||
*
|
||||
* @title:
|
||||
* The auto-hinter
|
||||
*
|
||||
* @abstract:
|
||||
* Controlling the auto-hinting module.
|
||||
*
|
||||
* @description:
|
||||
* While FreeType's auto-hinter doesn't expose API functions by itself,
|
||||
* it is possible to control its behaviour with @FT_Property_Set and
|
||||
* @FT_Property_Get. The following lists the available properties
|
||||
* together with the necessary macros and structures.
|
||||
*
|
||||
* Note that the auto-hinter's module name is `autofitter' for
|
||||
* historical reasons.
|
||||
*
|
||||
*/
|
||||
|
||||
|
||||
/**************************************************************************
|
||||
*
|
||||
* @property:
|
||||
* glyph-to-script-map
|
||||
*
|
||||
* @description:
|
||||
* *Experimental* *only*
|
||||
*
|
||||
* The auto-hinter provides various script modules to hint glyphs.
|
||||
* Examples of supported scripts are Latin or CJK. Before a glyph is
|
||||
* auto-hinted, the Unicode character map of the font gets examined, and
|
||||
* the script is then determined based on Unicode character ranges, see
|
||||
* below.
|
||||
*
|
||||
* OpenType fonts, however, often provide much more glyphs than
|
||||
* character codes (small caps, superscripts, ligatures, swashes, etc.),
|
||||
* to be controlled by so-called `features'. Handling OpenType features
|
||||
* can be quite complicated and thus needs a separate library on top of
|
||||
* FreeType.
|
||||
*
|
||||
* The mapping between glyph indices and scripts (in the auto-hinter
|
||||
* sense, see the @FT_AUTOHINTER_SCRIPT_XXX values) is stored as an
|
||||
* array with `num_glyphs' elements, as found in the font's @FT_Face
|
||||
* structure. The `glyph-to-script-map' property returns a pointer to
|
||||
* this array, which can be modified as needed. Note that the
|
||||
* modification should happen before the first glyph gets processed by
|
||||
* the auto-hinter so that the global analysis of the font shapes
|
||||
* actually uses the modified mapping.
|
||||
*
|
||||
* The following example code demonstrates how to access it (omitting
|
||||
* the error handling).
|
||||
*
|
||||
* {
|
||||
* FT_Library library;
|
||||
* FT_Face face;
|
||||
* FT_Prop_GlyphToScriptMap prop;
|
||||
*
|
||||
*
|
||||
* FT_Init_FreeType( &library );
|
||||
* FT_New_Face( library, "foo.ttf", 0, &face );
|
||||
*
|
||||
* prop.face = face;
|
||||
*
|
||||
* FT_Property_Get( library, "autofitter",
|
||||
* "glyph-to-script-map", &prop );
|
||||
*
|
||||
* // adjust `prop.map' as needed right here
|
||||
*
|
||||
* FT_Load_Glyph( face, ..., FT_LOAD_FORCE_AUTOHINT );
|
||||
* }
|
||||
*
|
||||
*/
|
||||
|
||||
|
||||
/**************************************************************************
|
||||
*
|
||||
* @enum:
|
||||
* FT_AUTOHINTER_SCRIPT_XXX
|
||||
*
|
||||
* @description:
|
||||
* *Experimental* *only*
|
||||
*
|
||||
* A list of constants used for the @glyph-to-script-map property to
|
||||
* specify the script submodule the auto-hinter should use for hinting a
|
||||
* particular glyph.
|
||||
*
|
||||
* @values:
|
||||
* FT_AUTOHINTER_SCRIPT_NONE ::
|
||||
* Don't auto-hint this glyph.
|
||||
*
|
||||
* FT_AUTOHINTER_SCRIPT_LATIN ::
|
||||
* Apply the latin auto-hinter. For the auto-hinter, `latin' is a
|
||||
* very broad term, including Cyrillic and Greek also since characters
|
||||
* from those scripts share the same design constraints.
|
||||
*
|
||||
* By default, characters from the following Unicode ranges are
|
||||
* assigned to this submodule.
|
||||
*
|
||||
* {
|
||||
* U+0020 - U+007F // Basic Latin (no control characters)
|
||||
* U+00A0 - U+00FF // Latin-1 Supplement (no control characters)
|
||||
* U+0100 - U+017F // Latin Extended-A
|
||||
* U+0180 - U+024F // Latin Extended-B
|
||||
* U+0250 - U+02AF // IPA Extensions
|
||||
* U+02B0 - U+02FF // Spacing Modifier Letters
|
||||
* U+0300 - U+036F // Combining Diacritical Marks
|
||||
* U+0370 - U+03FF // Greek and Coptic
|
||||
* U+0400 - U+04FF // Cyrillic
|
||||
* U+0500 - U+052F // Cyrillic Supplement
|
||||
* U+1D00 - U+1D7F // Phonetic Extensions
|
||||
* U+1D80 - U+1DBF // Phonetic Extensions Supplement
|
||||
* U+1DC0 - U+1DFF // Combining Diacritical Marks Supplement
|
||||
* U+1E00 - U+1EFF // Latin Extended Additional
|
||||
* U+1F00 - U+1FFF // Greek Extended
|
||||
* U+2000 - U+206F // General Punctuation
|
||||
* U+2070 - U+209F // Superscripts and Subscripts
|
||||
* U+20A0 - U+20CF // Currency Symbols
|
||||
* U+2150 - U+218F // Number Forms
|
||||
* U+2460 - U+24FF // Enclosed Alphanumerics
|
||||
* U+2C60 - U+2C7F // Latin Extended-C
|
||||
* U+2DE0 - U+2DFF // Cyrillic Extended-A
|
||||
* U+2E00 - U+2E7F // Supplemental Punctuation
|
||||
* U+A640 - U+A69F // Cyrillic Extended-B
|
||||
* U+A720 - U+A7FF // Latin Extended-D
|
||||
* U+FB00 - U+FB06 // Alphab. Present. Forms (Latin Ligatures)
|
||||
* U+1D400 - U+1D7FF // Mathematical Alphanumeric Symbols
|
||||
* U+1F100 - U+1F1FF // Enclosed Alphanumeric Supplement
|
||||
* }
|
||||
*
|
||||
* FT_AUTOHINTER_SCRIPT_CJK ::
|
||||
* Apply the CJK auto-hinter, covering Chinese, Japanese, Korean, old
|
||||
* Vietnamese, and some other scripts.
|
||||
*
|
||||
* By default, characters from the following Unicode ranges are
|
||||
* assigned to this submodule.
|
||||
*
|
||||
* {
|
||||
* U+1100 - U+11FF // Hangul Jamo
|
||||
* U+2E80 - U+2EFF // CJK Radicals Supplement
|
||||
* U+2F00 - U+2FDF // Kangxi Radicals
|
||||
* U+2FF0 - U+2FFF // Ideographic Description Characters
|
||||
* U+3000 - U+303F // CJK Symbols and Punctuation
|
||||
* U+3040 - U+309F // Hiragana
|
||||
* U+30A0 - U+30FF // Katakana
|
||||
* U+3100 - U+312F // Bopomofo
|
||||
* U+3130 - U+318F // Hangul Compatibility Jamo
|
||||
* U+3190 - U+319F // Kanbun
|
||||
* U+31A0 - U+31BF // Bopomofo Extended
|
||||
* U+31C0 - U+31EF // CJK Strokes
|
||||
* U+31F0 - U+31FF // Katakana Phonetic Extensions
|
||||
* U+3200 - U+32FF // Enclosed CJK Letters and Months
|
||||
* U+3300 - U+33FF // CJK Compatibility
|
||||
* U+3400 - U+4DBF // CJK Unified Ideographs Extension A
|
||||
* U+4DC0 - U+4DFF // Yijing Hexagram Symbols
|
||||
* U+4E00 - U+9FFF // CJK Unified Ideographs
|
||||
* U+A960 - U+A97F // Hangul Jamo Extended-A
|
||||
* U+AC00 - U+D7AF // Hangul Syllables
|
||||
* U+D7B0 - U+D7FF // Hangul Jamo Extended-B
|
||||
* U+F900 - U+FAFF // CJK Compatibility Ideographs
|
||||
* U+FE10 - U+FE1F // Vertical forms
|
||||
* U+FE30 - U+FE4F // CJK Compatibility Forms
|
||||
* U+FF00 - U+FFEF // Halfwidth and Fullwidth Forms
|
||||
* U+1B000 - U+1B0FF // Kana Supplement
|
||||
* U+1D300 - U+1D35F // Tai Xuan Hing Symbols
|
||||
* U+1F200 - U+1F2FF // Enclosed Ideographic Supplement
|
||||
* U+20000 - U+2A6DF // CJK Unified Ideographs Extension B
|
||||
* U+2A700 - U+2B73F // CJK Unified Ideographs Extension C
|
||||
* U+2B740 - U+2B81F // CJK Unified Ideographs Extension D
|
||||
* U+2F800 - U+2FA1F // CJK Compatibility Ideographs Supplement
|
||||
* }
|
||||
*
|
||||
* FT_AUTOHINTER_SCRIPT_INDIC ::
|
||||
* Apply the indic auto-hinter, covering all major scripts from the
|
||||
* Indian sub-continent and some other related scripts like Thai, Lao,
|
||||
* or Tibetan.
|
||||
*
|
||||
* By default, characters from the following Unicode ranges are
|
||||
* assigned to this submodule.
|
||||
*
|
||||
* {
|
||||
* U+0900 - U+0DFF // Indic Range
|
||||
* U+0F00 - U+0FFF // Tibetan
|
||||
* U+1900 - U+194F // Limbu
|
||||
* U+1B80 - U+1BBF // Sundanese
|
||||
* U+A800 - U+A82F // Syloti Nagri
|
||||
* U+ABC0 - U+ABFF // Meetei Mayek
|
||||
* U+11800 - U+118DF // Sharada
|
||||
* }
|
||||
*
|
||||
* Note that currently Indic support is rudimentary only, missing blue
|
||||
* zone support.
|
||||
*
|
||||
*/
|
||||
#define FT_AUTOHINTER_SCRIPT_NONE 0
|
||||
#define FT_AUTOHINTER_SCRIPT_LATIN 1
|
||||
#define FT_AUTOHINTER_SCRIPT_CJK 2
|
||||
#define FT_AUTOHINTER_SCRIPT_INDIC 3
|
||||
|
||||
|
||||
/**************************************************************************
|
||||
*
|
||||
* @struct:
|
||||
* FT_Prop_GlyphToScriptMap
|
||||
*
|
||||
* @description:
|
||||
* *Experimental* *only*
|
||||
*
|
||||
* The data exchange structure for the @glyph-to-script-map property.
|
||||
*
|
||||
*/
|
||||
typedef struct FT_Prop_GlyphToScriptMap_
|
||||
{
|
||||
FT_Face face;
|
||||
FT_UShort* map;
|
||||
|
||||
} FT_Prop_GlyphToScriptMap;
|
||||
|
||||
|
||||
/**************************************************************************
|
||||
*
|
||||
* @property:
|
||||
* fallback-script
|
||||
*
|
||||
* @description:
|
||||
* *Experimental* *only*
|
||||
*
|
||||
* If no auto-hinter script module can be assigned to a glyph, a
|
||||
* fallback script gets assigned to it (see also the
|
||||
* @glyph-to-script-map property). By default, this is
|
||||
* @FT_AUTOHINTER_SCRIPT_CJK. Using the `fallback-script' property,
|
||||
* this fallback value can be changed.
|
||||
*
|
||||
* {
|
||||
* FT_Library library;
|
||||
* FT_UInt fallback_script = FT_AUTOHINTER_SCRIPT_NONE;
|
||||
*
|
||||
*
|
||||
* FT_Init_FreeType( &library );
|
||||
*
|
||||
* FT_Property_Set( library, "autofitter",
|
||||
* "fallback-script", &fallback_script );
|
||||
* }
|
||||
*
|
||||
* @note:
|
||||
* This property can be used with @FT_Property_Get also.
|
||||
*
|
||||
* It's important to use the right timing for changing this value: The
|
||||
* creation of the glyph-to-script map that eventually uses the
|
||||
* fallback script value gets triggered either by setting or reading a
|
||||
* face-specific property like @glyph-to-script-map, or by auto-hinting
|
||||
* any glyph from that face. In particular, if you have already created
|
||||
* an @FT_Face structure but not loaded any glyph (using the
|
||||
* auto-hinter), a change of the fallback script will affect this face.
|
||||
*
|
||||
*/
|
||||
|
||||
|
||||
/**************************************************************************
|
||||
*
|
||||
* @property:
|
||||
* default-script
|
||||
*
|
||||
* @description:
|
||||
* *Experimental* *only*
|
||||
*
|
||||
* If FreeType gets compiled with FT_CONFIG_OPTION_USE_HARFBUZZ to make
|
||||
* the HarfBuzz library access OpenType features for getting better
|
||||
* glyph coverages, this property sets the (auto-fitter) script to be
|
||||
* used for the default (OpenType) script data of a font's GSUB table.
|
||||
* Features for the default script are intended for all scripts not
|
||||
* explicitly handled in GSUB; an example is a `dlig' feature,
|
||||
* containing the combination of the characters `T', `E', and `L' to
|
||||
* form a `TEL' ligature.
|
||||
*
|
||||
* By default, this is @FT_AUTOHINTER_SCRIPT_LATIN. Using the
|
||||
* `default-script' property, this default value can be changed.
|
||||
*
|
||||
* {
|
||||
* FT_Library library;
|
||||
* FT_UInt default_script = FT_AUTOHINTER_SCRIPT_NONE;
|
||||
*
|
||||
*
|
||||
* FT_Init_FreeType( &library );
|
||||
*
|
||||
* FT_Property_Set( library, "autofitter",
|
||||
* "default-script", &default_script );
|
||||
* }
|
||||
*
|
||||
* @note:
|
||||
* This property can be used with @FT_Property_Get also.
|
||||
*
|
||||
* It's important to use the right timing for changing this value: The
|
||||
* creation of the glyph-to-script map that eventually uses the
|
||||
* default script value gets triggered either by setting or reading a
|
||||
* face-specific property like @glyph-to-script-map, or by auto-hinting
|
||||
* any glyph from that face. In particular, if you have already created
|
||||
* an @FT_Face structure but not loaded any glyph (using the
|
||||
* auto-hinter), a change of the default script will affect this face.
|
||||
*
|
||||
*/
|
||||
|
||||
|
||||
/**************************************************************************
|
||||
*
|
||||
* @property:
|
||||
* increase-x-height
|
||||
*
|
||||
* @description:
|
||||
* For ppem values in the range 6~<= ppem <= `increase-x-height', round
|
||||
* up the font's x~height much more often than normally. If the value
|
||||
* is set to~0, which is the default, this feature is switched off. Use
|
||||
* this property to improve the legibility of small font sizes if
|
||||
* necessary.
|
||||
*
|
||||
* {
|
||||
* FT_Library library;
|
||||
* FT_Face face;
|
||||
* FT_Prop_IncreaseXHeight prop;
|
||||
*
|
||||
*
|
||||
* FT_Init_FreeType( &library );
|
||||
* FT_New_Face( library, "foo.ttf", 0, &face );
|
||||
* FT_Set_Char_Size( face, 10 * 64, 0, 72, 0 );
|
||||
*
|
||||
* prop.face = face;
|
||||
* prop.limit = 14;
|
||||
*
|
||||
* FT_Property_Set( library, "autofitter",
|
||||
* "increase-x-height", &prop );
|
||||
* }
|
||||
*
|
||||
* @note:
|
||||
* This property can be used with @FT_Property_Get also.
|
||||
*
|
||||
* Set this value right after calling @FT_Set_Char_Size, but before
|
||||
* loading any glyph (using the auto-hinter).
|
||||
*
|
||||
*/
|
||||
|
||||
|
||||
/**************************************************************************
|
||||
*
|
||||
* @struct:
|
||||
* FT_Prop_IncreaseXHeight
|
||||
*
|
||||
* @description:
|
||||
* The data exchange structure for the @increase-x-height property.
|
||||
*
|
||||
*/
|
||||
typedef struct FT_Prop_IncreaseXHeight_
|
||||
{
|
||||
FT_Face face;
|
||||
FT_UInt limit;
|
||||
|
||||
} FT_Prop_IncreaseXHeight;
|
||||
|
||||
|
||||
/**************************************************************************
|
||||
*
|
||||
* @property:
|
||||
* warping
|
||||
*
|
||||
* @description:
|
||||
* *Experimental* *only*
|
||||
*
|
||||
* If FreeType gets compiled with option AF_CONFIG_OPTION_USE_WARPER to
|
||||
* activate the warp hinting code in the auto-hinter, this property
|
||||
* switches warping on and off.
|
||||
*
|
||||
* Warping only works in `light' auto-hinting mode. The idea of the
|
||||
* code is to slightly scale and shift a glyph along the non-hinted
|
||||
* dimension (which is usually the horizontal axis) so that as much of
|
||||
* its segments are aligned (more or less) to the grid. To find out a
|
||||
* glyph's optimal scaling and shifting value, various parameter
|
||||
* combinations are tried and scored.
|
||||
*
|
||||
* By default, warping is off. The example below shows how to switch on
|
||||
* warping (omitting the error handling).
|
||||
*
|
||||
* {
|
||||
* FT_Library library;
|
||||
* FT_Bool warping = 1;
|
||||
*
|
||||
*
|
||||
* FT_Init_FreeType( &library );
|
||||
*
|
||||
* FT_Property_Set( library, "autofitter",
|
||||
* "warping", &warping );
|
||||
* }
|
||||
*
|
||||
* @note:
|
||||
* This property can be used with @FT_Property_Get also.
|
||||
*
|
||||
* This property can be set via the `FREETYPE_PROPERTIES' environment
|
||||
* variable (using values 1 and 0 for `on' and `off', respectively).
|
||||
*
|
||||
* The warping code can also change advance widths. Have a look at the
|
||||
* `lsb_delta' and `rsb_delta' fields in the @FT_GlyphSlotRec structure
|
||||
* for details on improving inter-glyph distances while rendering.
|
||||
*
|
||||
* Since warping is a global property of the auto-hinter it is best to
|
||||
* change its value before rendering any face. Otherwise, you should
|
||||
* reload all faces that get auto-hinted in `light' hinting mode.
|
||||
*
|
||||
*/
|
||||
|
||||
|
||||
/**************************************************************************
|
||||
*
|
||||
* @property:
|
||||
* no-stem-darkening[autofit]
|
||||
*
|
||||
* @description:
|
||||
* *Experimental* *only,* *requires* *linear* *alpha* *blending* *and*
|
||||
* *gamma* *correction*
|
||||
*
|
||||
* Stem darkening emboldens glyphs at smaller sizes to make them more
|
||||
* readable on common low-DPI screens when using linear alpha blending
|
||||
* and gamma correction, see @FT_Render_Glyph. When not using linear
|
||||
* alpha blending and gamma correction, glyphs will appear heavy and
|
||||
* fuzzy!
|
||||
*
|
||||
* Gamma correction essentially lightens fonts since shades of grey are
|
||||
* shifted to higher pixel values (=~higher brightness) to match the
|
||||
* original intention to the reality of our screens. The side-effect is
|
||||
* that glyphs `thin out'. Mac OS~X and Adobe's proprietary font
|
||||
* rendering library implement a counter-measure: stem darkening at
|
||||
* smaller sizes where shades of gray dominate. By emboldening a glyph
|
||||
* slightly in relation to its pixel size, individual pixels get higher
|
||||
* coverage of filled-in outlines and are therefore `blacker'. This
|
||||
* counteracts the `thinning out' of glyphs, making text remain readable
|
||||
* at smaller sizes. All glyphs that pass through the auto-hinter will
|
||||
* be emboldened unless this property is set to TRUE.
|
||||
*
|
||||
* See the description of the CFF driver for algorithmic details. Total
|
||||
* consistency with the CFF driver is currently not achieved because the
|
||||
* emboldening method differs and glyphs must be scaled down on the
|
||||
* Y-axis to keep outline points inside their precomputed blue zones.
|
||||
* The smaller the size (especially 9ppem and down), the higher the loss
|
||||
* of emboldening versus the CFF driver.
|
||||
*
|
||||
* This property can be set via the `FREETYPE_PROPERTIES' environment
|
||||
* variable similar to the CFF driver.
|
||||
*
|
||||
*/
|
||||
|
||||
|
||||
/**************************************************************************
|
||||
*
|
||||
* @property:
|
||||
* darkening-parameters[autofit]
|
||||
*
|
||||
* @description:
|
||||
* *Experimental* *only*
|
||||
*
|
||||
* See the description of the CFF driver for details. This
|
||||
* implementation appropriates the
|
||||
* CFF_CONFIG_OPTION_DARKENING_PARAMETER_* #defines for consistency.
|
||||
* Note the differences described in @no-stem-darkening[autofit].
|
||||
*
|
||||
* This property can be set via the `FREETYPE_PROPERTIES' environment
|
||||
* variable similar to the CFF driver.
|
||||
*/
|
||||
|
||||
|
||||
/* */
|
||||
|
||||
|
||||
FT_END_HEADER
|
||||
|
||||
#endif /* FTAUTOH_H_ */
|
||||
|
||||
|
||||
/* END */
|
||||
101
include/fake/vtcs_root_vienna/freetype2/freetype/ftbbox.h
Normal file
101
include/fake/vtcs_root_vienna/freetype2/freetype/ftbbox.h
Normal file
@ -0,0 +1,101 @@
|
||||
/***************************************************************************/
|
||||
/* */
|
||||
/* ftbbox.h */
|
||||
/* */
|
||||
/* FreeType exact bbox computation (specification). */
|
||||
/* */
|
||||
/* Copyright 1996-2016 by */
|
||||
/* David Turner, Robert Wilhelm, and Werner Lemberg. */
|
||||
/* */
|
||||
/* This file is part of the FreeType project, and may only be used, */
|
||||
/* modified, and distributed under the terms of the FreeType project */
|
||||
/* license, LICENSE.TXT. By continuing to use, modify, or distribute */
|
||||
/* this file you indicate that you have read the license and */
|
||||
/* understand and accept it fully. */
|
||||
/* */
|
||||
/***************************************************************************/
|
||||
|
||||
|
||||
/*************************************************************************/
|
||||
/* */
|
||||
/* This component has a _single_ role: to compute exact outline bounding */
|
||||
/* boxes. */
|
||||
/* */
|
||||
/* It is separated from the rest of the engine for various technical */
|
||||
/* reasons. It may well be integrated in `ftoutln' later. */
|
||||
/* */
|
||||
/*************************************************************************/
|
||||
|
||||
|
||||
#ifndef FTBBOX_H_
|
||||
#define FTBBOX_H_
|
||||
|
||||
|
||||
#include <ft2build.h>
|
||||
#include FT_FREETYPE_H
|
||||
|
||||
#ifdef FREETYPE_H
|
||||
#error "freetype.h of FreeType 1 has been loaded!"
|
||||
#error "Please fix the directory search order for header files"
|
||||
#error "so that freetype.h of FreeType 2 is found first."
|
||||
#endif
|
||||
|
||||
|
||||
FT_BEGIN_HEADER
|
||||
|
||||
|
||||
/*************************************************************************/
|
||||
/* */
|
||||
/* <Section> */
|
||||
/* outline_processing */
|
||||
/* */
|
||||
/*************************************************************************/
|
||||
|
||||
|
||||
/*************************************************************************/
|
||||
/* */
|
||||
/* <Function> */
|
||||
/* FT_Outline_Get_BBox */
|
||||
/* */
|
||||
/* <Description> */
|
||||
/* Compute the exact bounding box of an outline. This is slower */
|
||||
/* than computing the control box. However, it uses an advanced */
|
||||
/* algorithm that returns _very_ quickly when the two boxes */
|
||||
/* coincide. Otherwise, the outline Bézier arcs are traversed to */
|
||||
/* extract their extrema. */
|
||||
/* */
|
||||
/* <Input> */
|
||||
/* outline :: A pointer to the source outline. */
|
||||
/* */
|
||||
/* <Output> */
|
||||
/* abbox :: The outline's exact bounding box. */
|
||||
/* */
|
||||
/* <Return> */
|
||||
/* FreeType error code. 0~means success. */
|
||||
/* */
|
||||
/* <Note> */
|
||||
/* If the font is tricky and the glyph has been loaded with */
|
||||
/* @FT_LOAD_NO_SCALE, the resulting BBox is meaningless. To get */
|
||||
/* reasonable values for the BBox it is necessary to load the glyph */
|
||||
/* at a large ppem value (so that the hinting instructions can */
|
||||
/* properly shift and scale the subglyphs), then extracting the BBox, */
|
||||
/* which can be eventually converted back to font units. */
|
||||
/* */
|
||||
FT_EXPORT( FT_Error )
|
||||
FT_Outline_Get_BBox( FT_Outline* outline,
|
||||
FT_BBox *abbox );
|
||||
|
||||
/* */
|
||||
|
||||
|
||||
FT_END_HEADER
|
||||
|
||||
#endif /* FTBBOX_H_ */
|
||||
|
||||
|
||||
/* END */
|
||||
|
||||
|
||||
/* Local Variables: */
|
||||
/* coding: utf-8 */
|
||||
/* End: */
|
||||
210
include/fake/vtcs_root_vienna/freetype2/freetype/ftbdf.h
Normal file
210
include/fake/vtcs_root_vienna/freetype2/freetype/ftbdf.h
Normal file
@ -0,0 +1,210 @@
|
||||
/***************************************************************************/
|
||||
/* */
|
||||
/* ftbdf.h */
|
||||
/* */
|
||||
/* FreeType API for accessing BDF-specific strings (specification). */
|
||||
/* */
|
||||
/* Copyright 2002-2016 by */
|
||||
/* David Turner, Robert Wilhelm, and Werner Lemberg. */
|
||||
/* */
|
||||
/* This file is part of the FreeType project, and may only be used, */
|
||||
/* modified, and distributed under the terms of the FreeType project */
|
||||
/* license, LICENSE.TXT. By continuing to use, modify, or distribute */
|
||||
/* this file you indicate that you have read the license and */
|
||||
/* understand and accept it fully. */
|
||||
/* */
|
||||
/***************************************************************************/
|
||||
|
||||
|
||||
#ifndef FTBDF_H_
|
||||
#define FTBDF_H_
|
||||
|
||||
#include <ft2build.h>
|
||||
#include FT_FREETYPE_H
|
||||
|
||||
#ifdef FREETYPE_H
|
||||
#error "freetype.h of FreeType 1 has been loaded!"
|
||||
#error "Please fix the directory search order for header files"
|
||||
#error "so that freetype.h of FreeType 2 is found first."
|
||||
#endif
|
||||
|
||||
|
||||
FT_BEGIN_HEADER
|
||||
|
||||
|
||||
/*************************************************************************/
|
||||
/* */
|
||||
/* <Section> */
|
||||
/* bdf_fonts */
|
||||
/* */
|
||||
/* <Title> */
|
||||
/* BDF and PCF Files */
|
||||
/* */
|
||||
/* <Abstract> */
|
||||
/* BDF and PCF specific API. */
|
||||
/* */
|
||||
/* <Description> */
|
||||
/* This section contains the declaration of functions specific to BDF */
|
||||
/* and PCF fonts. */
|
||||
/* */
|
||||
/*************************************************************************/
|
||||
|
||||
|
||||
/**********************************************************************
|
||||
*
|
||||
* @enum:
|
||||
* BDF_PropertyType
|
||||
*
|
||||
* @description:
|
||||
* A list of BDF property types.
|
||||
*
|
||||
* @values:
|
||||
* BDF_PROPERTY_TYPE_NONE ::
|
||||
* Value~0 is used to indicate a missing property.
|
||||
*
|
||||
* BDF_PROPERTY_TYPE_ATOM ::
|
||||
* Property is a string atom.
|
||||
*
|
||||
* BDF_PROPERTY_TYPE_INTEGER ::
|
||||
* Property is a 32-bit signed integer.
|
||||
*
|
||||
* BDF_PROPERTY_TYPE_CARDINAL ::
|
||||
* Property is a 32-bit unsigned integer.
|
||||
*/
|
||||
typedef enum BDF_PropertyType_
|
||||
{
|
||||
BDF_PROPERTY_TYPE_NONE = 0,
|
||||
BDF_PROPERTY_TYPE_ATOM = 1,
|
||||
BDF_PROPERTY_TYPE_INTEGER = 2,
|
||||
BDF_PROPERTY_TYPE_CARDINAL = 3
|
||||
|
||||
} BDF_PropertyType;
|
||||
|
||||
|
||||
/**********************************************************************
|
||||
*
|
||||
* @type:
|
||||
* BDF_Property
|
||||
*
|
||||
* @description:
|
||||
* A handle to a @BDF_PropertyRec structure to model a given
|
||||
* BDF/PCF property.
|
||||
*/
|
||||
typedef struct BDF_PropertyRec_* BDF_Property;
|
||||
|
||||
|
||||
/**********************************************************************
|
||||
*
|
||||
* @struct:
|
||||
* BDF_PropertyRec
|
||||
*
|
||||
* @description:
|
||||
* This structure models a given BDF/PCF property.
|
||||
*
|
||||
* @fields:
|
||||
* type ::
|
||||
* The property type.
|
||||
*
|
||||
* u.atom ::
|
||||
* The atom string, if type is @BDF_PROPERTY_TYPE_ATOM. May be
|
||||
* NULL, indicating an empty string.
|
||||
*
|
||||
* u.integer ::
|
||||
* A signed integer, if type is @BDF_PROPERTY_TYPE_INTEGER.
|
||||
*
|
||||
* u.cardinal ::
|
||||
* An unsigned integer, if type is @BDF_PROPERTY_TYPE_CARDINAL.
|
||||
*/
|
||||
typedef struct BDF_PropertyRec_
|
||||
{
|
||||
BDF_PropertyType type;
|
||||
union {
|
||||
const char* atom;
|
||||
FT_Int32 integer;
|
||||
FT_UInt32 cardinal;
|
||||
|
||||
} u;
|
||||
|
||||
} BDF_PropertyRec;
|
||||
|
||||
|
||||
/**********************************************************************
|
||||
*
|
||||
* @function:
|
||||
* FT_Get_BDF_Charset_ID
|
||||
*
|
||||
* @description:
|
||||
* Retrieve a BDF font character set identity, according to
|
||||
* the BDF specification.
|
||||
*
|
||||
* @input:
|
||||
* face ::
|
||||
* A handle to the input face.
|
||||
*
|
||||
* @output:
|
||||
* acharset_encoding ::
|
||||
* Charset encoding, as a C~string, owned by the face.
|
||||
*
|
||||
* acharset_registry ::
|
||||
* Charset registry, as a C~string, owned by the face.
|
||||
*
|
||||
* @return:
|
||||
* FreeType error code. 0~means success.
|
||||
*
|
||||
* @note:
|
||||
* This function only works with BDF faces, returning an error otherwise.
|
||||
*/
|
||||
FT_EXPORT( FT_Error )
|
||||
FT_Get_BDF_Charset_ID( FT_Face face,
|
||||
const char* *acharset_encoding,
|
||||
const char* *acharset_registry );
|
||||
|
||||
|
||||
/**********************************************************************
|
||||
*
|
||||
* @function:
|
||||
* FT_Get_BDF_Property
|
||||
*
|
||||
* @description:
|
||||
* Retrieve a BDF property from a BDF or PCF font file.
|
||||
*
|
||||
* @input:
|
||||
* face :: A handle to the input face.
|
||||
*
|
||||
* name :: The property name.
|
||||
*
|
||||
* @output:
|
||||
* aproperty :: The property.
|
||||
*
|
||||
* @return:
|
||||
* FreeType error code. 0~means success.
|
||||
*
|
||||
* @note:
|
||||
* This function works with BDF _and_ PCF fonts. It returns an error
|
||||
* otherwise. It also returns an error if the property is not in the
|
||||
* font.
|
||||
*
|
||||
* A `property' is a either key-value pair within the STARTPROPERTIES
|
||||
* ... ENDPROPERTIES block of a BDF font or a key-value pair from the
|
||||
* `info->props' array within a `FontRec' structure of a PCF font.
|
||||
*
|
||||
* Integer properties are always stored as `signed' within PCF fonts;
|
||||
* consequently, @BDF_PROPERTY_TYPE_CARDINAL is a possible return value
|
||||
* for BDF fonts only.
|
||||
*
|
||||
* In case of error, `aproperty->type' is always set to
|
||||
* @BDF_PROPERTY_TYPE_NONE.
|
||||
*/
|
||||
FT_EXPORT( FT_Error )
|
||||
FT_Get_BDF_Property( FT_Face face,
|
||||
const char* prop_name,
|
||||
BDF_PropertyRec *aproperty );
|
||||
|
||||
/* */
|
||||
|
||||
FT_END_HEADER
|
||||
|
||||
#endif /* FTBDF_H_ */
|
||||
|
||||
|
||||
/* END */
|
||||
240
include/fake/vtcs_root_vienna/freetype2/freetype/ftbitmap.h
Normal file
240
include/fake/vtcs_root_vienna/freetype2/freetype/ftbitmap.h
Normal file
@ -0,0 +1,240 @@
|
||||
/***************************************************************************/
|
||||
/* */
|
||||
/* ftbitmap.h */
|
||||
/* */
|
||||
/* FreeType utility functions for bitmaps (specification). */
|
||||
/* */
|
||||
/* Copyright 2004-2016 by */
|
||||
/* David Turner, Robert Wilhelm, and Werner Lemberg. */
|
||||
/* */
|
||||
/* This file is part of the FreeType project, and may only be used, */
|
||||
/* modified, and distributed under the terms of the FreeType project */
|
||||
/* license, LICENSE.TXT. By continuing to use, modify, or distribute */
|
||||
/* this file you indicate that you have read the license and */
|
||||
/* understand and accept it fully. */
|
||||
/* */
|
||||
/***************************************************************************/
|
||||
|
||||
|
||||
#ifndef FTBITMAP_H_
|
||||
#define FTBITMAP_H_
|
||||
|
||||
|
||||
#include <ft2build.h>
|
||||
#include FT_FREETYPE_H
|
||||
|
||||
#ifdef FREETYPE_H
|
||||
#error "freetype.h of FreeType 1 has been loaded!"
|
||||
#error "Please fix the directory search order for header files"
|
||||
#error "so that freetype.h of FreeType 2 is found first."
|
||||
#endif
|
||||
|
||||
|
||||
FT_BEGIN_HEADER
|
||||
|
||||
|
||||
/*************************************************************************/
|
||||
/* */
|
||||
/* <Section> */
|
||||
/* bitmap_handling */
|
||||
/* */
|
||||
/* <Title> */
|
||||
/* Bitmap Handling */
|
||||
/* */
|
||||
/* <Abstract> */
|
||||
/* Handling FT_Bitmap objects. */
|
||||
/* */
|
||||
/* <Description> */
|
||||
/* This section contains functions for handling @FT_Bitmap objects. */
|
||||
/* Note that none of the functions changes the bitmap's `flow' (as */
|
||||
/* indicated by the sign of the `pitch' field in `FT_Bitmap'). */
|
||||
/* */
|
||||
/*************************************************************************/
|
||||
|
||||
|
||||
/*************************************************************************/
|
||||
/* */
|
||||
/* <Function> */
|
||||
/* FT_Bitmap_Init */
|
||||
/* */
|
||||
/* <Description> */
|
||||
/* Initialize a pointer to an @FT_Bitmap structure. */
|
||||
/* */
|
||||
/* <InOut> */
|
||||
/* abitmap :: A pointer to the bitmap structure. */
|
||||
/* */
|
||||
/* <Note> */
|
||||
/* A deprecated name for the same function is `FT_Bitmap_New'. */
|
||||
/* */
|
||||
FT_EXPORT( void )
|
||||
FT_Bitmap_Init( FT_Bitmap *abitmap );
|
||||
|
||||
|
||||
/* deprecated */
|
||||
FT_EXPORT( void )
|
||||
FT_Bitmap_New( FT_Bitmap *abitmap );
|
||||
|
||||
|
||||
/*************************************************************************/
|
||||
/* */
|
||||
/* <Function> */
|
||||
/* FT_Bitmap_Copy */
|
||||
/* */
|
||||
/* <Description> */
|
||||
/* Copy a bitmap into another one. */
|
||||
/* */
|
||||
/* <Input> */
|
||||
/* library :: A handle to a library object. */
|
||||
/* */
|
||||
/* source :: A handle to the source bitmap. */
|
||||
/* */
|
||||
/* <Output> */
|
||||
/* target :: A handle to the target bitmap. */
|
||||
/* */
|
||||
/* <Return> */
|
||||
/* FreeType error code. 0~means success. */
|
||||
/* */
|
||||
FT_EXPORT( FT_Error )
|
||||
FT_Bitmap_Copy( FT_Library library,
|
||||
const FT_Bitmap *source,
|
||||
FT_Bitmap *target);
|
||||
|
||||
|
||||
/*************************************************************************/
|
||||
/* */
|
||||
/* <Function> */
|
||||
/* FT_Bitmap_Embolden */
|
||||
/* */
|
||||
/* <Description> */
|
||||
/* Embolden a bitmap. The new bitmap will be about `xStrength' */
|
||||
/* pixels wider and `yStrength' pixels higher. The left and bottom */
|
||||
/* borders are kept unchanged. */
|
||||
/* */
|
||||
/* <Input> */
|
||||
/* library :: A handle to a library object. */
|
||||
/* */
|
||||
/* xStrength :: How strong the glyph is emboldened horizontally. */
|
||||
/* Expressed in 26.6 pixel format. */
|
||||
/* */
|
||||
/* yStrength :: How strong the glyph is emboldened vertically. */
|
||||
/* Expressed in 26.6 pixel format. */
|
||||
/* */
|
||||
/* <InOut> */
|
||||
/* bitmap :: A handle to the target bitmap. */
|
||||
/* */
|
||||
/* <Return> */
|
||||
/* FreeType error code. 0~means success. */
|
||||
/* */
|
||||
/* <Note> */
|
||||
/* The current implementation restricts `xStrength' to be less than */
|
||||
/* or equal to~8 if bitmap is of pixel_mode @FT_PIXEL_MODE_MONO. */
|
||||
/* */
|
||||
/* If you want to embolden the bitmap owned by a @FT_GlyphSlotRec, */
|
||||
/* you should call @FT_GlyphSlot_Own_Bitmap on the slot first. */
|
||||
/* */
|
||||
/* Bitmaps in @FT_PIXEL_MODE_GRAY2 and @FT_PIXEL_MODE_GRAY@ format */
|
||||
/* are converted to @FT_PIXEL_MODE_GRAY format (i.e., 8bpp). */
|
||||
/* */
|
||||
FT_EXPORT( FT_Error )
|
||||
FT_Bitmap_Embolden( FT_Library library,
|
||||
FT_Bitmap* bitmap,
|
||||
FT_Pos xStrength,
|
||||
FT_Pos yStrength );
|
||||
|
||||
|
||||
/*************************************************************************/
|
||||
/* */
|
||||
/* <Function> */
|
||||
/* FT_Bitmap_Convert */
|
||||
/* */
|
||||
/* <Description> */
|
||||
/* Convert a bitmap object with depth 1bpp, 2bpp, 4bpp, 8bpp or 32bpp */
|
||||
/* to a bitmap object with depth 8bpp, making the number of used */
|
||||
/* bytes line (a.k.a. the `pitch') a multiple of `alignment'. */
|
||||
/* */
|
||||
/* <Input> */
|
||||
/* library :: A handle to a library object. */
|
||||
/* */
|
||||
/* source :: The source bitmap. */
|
||||
/* */
|
||||
/* alignment :: The pitch of the bitmap is a multiple of this */
|
||||
/* parameter. Common values are 1, 2, or 4. */
|
||||
/* */
|
||||
/* <Output> */
|
||||
/* target :: The target bitmap. */
|
||||
/* */
|
||||
/* <Return> */
|
||||
/* FreeType error code. 0~means success. */
|
||||
/* */
|
||||
/* <Note> */
|
||||
/* It is possible to call @FT_Bitmap_Convert multiple times without */
|
||||
/* calling @FT_Bitmap_Done (the memory is simply reallocated). */
|
||||
/* */
|
||||
/* Use @FT_Bitmap_Done to finally remove the bitmap object. */
|
||||
/* */
|
||||
/* The `library' argument is taken to have access to FreeType's */
|
||||
/* memory handling functions. */
|
||||
/* */
|
||||
FT_EXPORT( FT_Error )
|
||||
FT_Bitmap_Convert( FT_Library library,
|
||||
const FT_Bitmap *source,
|
||||
FT_Bitmap *target,
|
||||
FT_Int alignment );
|
||||
|
||||
|
||||
/*************************************************************************/
|
||||
/* */
|
||||
/* <Function> */
|
||||
/* FT_GlyphSlot_Own_Bitmap */
|
||||
/* */
|
||||
/* <Description> */
|
||||
/* Make sure that a glyph slot owns `slot->bitmap'. */
|
||||
/* */
|
||||
/* <Input> */
|
||||
/* slot :: The glyph slot. */
|
||||
/* */
|
||||
/* <Return> */
|
||||
/* FreeType error code. 0~means success. */
|
||||
/* */
|
||||
/* <Note> */
|
||||
/* This function is to be used in combination with */
|
||||
/* @FT_Bitmap_Embolden. */
|
||||
/* */
|
||||
FT_EXPORT( FT_Error )
|
||||
FT_GlyphSlot_Own_Bitmap( FT_GlyphSlot slot );
|
||||
|
||||
|
||||
/*************************************************************************/
|
||||
/* */
|
||||
/* <Function> */
|
||||
/* FT_Bitmap_Done */
|
||||
/* */
|
||||
/* <Description> */
|
||||
/* Destroy a bitmap object initialized with @FT_Bitmap_Init. */
|
||||
/* */
|
||||
/* <Input> */
|
||||
/* library :: A handle to a library object. */
|
||||
/* */
|
||||
/* bitmap :: The bitmap object to be freed. */
|
||||
/* */
|
||||
/* <Return> */
|
||||
/* FreeType error code. 0~means success. */
|
||||
/* */
|
||||
/* <Note> */
|
||||
/* The `library' argument is taken to have access to FreeType's */
|
||||
/* memory handling functions. */
|
||||
/* */
|
||||
FT_EXPORT( FT_Error )
|
||||
FT_Bitmap_Done( FT_Library library,
|
||||
FT_Bitmap *bitmap );
|
||||
|
||||
|
||||
/* */
|
||||
|
||||
|
||||
FT_END_HEADER
|
||||
|
||||
#endif /* FTBITMAP_H_ */
|
||||
|
||||
|
||||
/* END */
|
||||
102
include/fake/vtcs_root_vienna/freetype2/freetype/ftbzip2.h
Normal file
102
include/fake/vtcs_root_vienna/freetype2/freetype/ftbzip2.h
Normal file
@ -0,0 +1,102 @@
|
||||
/***************************************************************************/
|
||||
/* */
|
||||
/* ftbzip2.h */
|
||||
/* */
|
||||
/* Bzip2-compressed stream support. */
|
||||
/* */
|
||||
/* Copyright 2010-2016 by */
|
||||
/* Joel Klinghed. */
|
||||
/* */
|
||||
/* This file is part of the FreeType project, and may only be used, */
|
||||
/* modified, and distributed under the terms of the FreeType project */
|
||||
/* license, LICENSE.TXT. By continuing to use, modify, or distribute */
|
||||
/* this file you indicate that you have read the license and */
|
||||
/* understand and accept it fully. */
|
||||
/* */
|
||||
/***************************************************************************/
|
||||
|
||||
|
||||
#ifndef FTBZIP2_H_
|
||||
#define FTBZIP2_H_
|
||||
|
||||
#include <ft2build.h>
|
||||
#include FT_FREETYPE_H
|
||||
|
||||
#ifdef FREETYPE_H
|
||||
#error "freetype.h of FreeType 1 has been loaded!"
|
||||
#error "Please fix the directory search order for header files"
|
||||
#error "so that freetype.h of FreeType 2 is found first."
|
||||
#endif
|
||||
|
||||
|
||||
FT_BEGIN_HEADER
|
||||
|
||||
/*************************************************************************/
|
||||
/* */
|
||||
/* <Section> */
|
||||
/* bzip2 */
|
||||
/* */
|
||||
/* <Title> */
|
||||
/* BZIP2 Streams */
|
||||
/* */
|
||||
/* <Abstract> */
|
||||
/* Using bzip2-compressed font files. */
|
||||
/* */
|
||||
/* <Description> */
|
||||
/* This section contains the declaration of Bzip2-specific functions. */
|
||||
/* */
|
||||
/*************************************************************************/
|
||||
|
||||
|
||||
/************************************************************************
|
||||
*
|
||||
* @function:
|
||||
* FT_Stream_OpenBzip2
|
||||
*
|
||||
* @description:
|
||||
* Open a new stream to parse bzip2-compressed font files. This is
|
||||
* mainly used to support the compressed `*.pcf.bz2' fonts that come
|
||||
* with XFree86.
|
||||
*
|
||||
* @input:
|
||||
* stream ::
|
||||
* The target embedding stream.
|
||||
*
|
||||
* source ::
|
||||
* The source stream.
|
||||
*
|
||||
* @return:
|
||||
* FreeType error code. 0~means success.
|
||||
*
|
||||
* @note:
|
||||
* The source stream must be opened _before_ calling this function.
|
||||
*
|
||||
* Calling the internal function `FT_Stream_Close' on the new stream will
|
||||
* *not* call `FT_Stream_Close' on the source stream. None of the stream
|
||||
* objects will be released to the heap.
|
||||
*
|
||||
* The stream implementation is very basic and resets the decompression
|
||||
* process each time seeking backwards is needed within the stream.
|
||||
*
|
||||
* In certain builds of the library, bzip2 compression recognition is
|
||||
* automatically handled when calling @FT_New_Face or @FT_Open_Face.
|
||||
* This means that if no font driver is capable of handling the raw
|
||||
* compressed file, the library will try to open a bzip2 compressed stream
|
||||
* from it and re-open the face with it.
|
||||
*
|
||||
* This function may return `FT_Err_Unimplemented_Feature' if your build
|
||||
* of FreeType was not compiled with bzip2 support.
|
||||
*/
|
||||
FT_EXPORT( FT_Error )
|
||||
FT_Stream_OpenBzip2( FT_Stream stream,
|
||||
FT_Stream source );
|
||||
|
||||
/* */
|
||||
|
||||
|
||||
FT_END_HEADER
|
||||
|
||||
#endif /* FTBZIP2_H_ */
|
||||
|
||||
|
||||
/* END */
|
||||
1057
include/fake/vtcs_root_vienna/freetype2/freetype/ftcache.h
Normal file
1057
include/fake/vtcs_root_vienna/freetype2/freetype/ftcache.h
Normal file
File diff suppressed because it is too large
Load Diff
275
include/fake/vtcs_root_vienna/freetype2/freetype/ftcffdrv.h
Normal file
275
include/fake/vtcs_root_vienna/freetype2/freetype/ftcffdrv.h
Normal file
@ -0,0 +1,275 @@
|
||||
/***************************************************************************/
|
||||
/* */
|
||||
/* ftcffdrv.h */
|
||||
/* */
|
||||
/* FreeType API for controlling the CFF driver (specification only). */
|
||||
/* */
|
||||
/* Copyright 2013-2016 by */
|
||||
/* David Turner, Robert Wilhelm, and Werner Lemberg. */
|
||||
/* */
|
||||
/* This file is part of the FreeType project, and may only be used, */
|
||||
/* modified, and distributed under the terms of the FreeType project */
|
||||
/* license, LICENSE.TXT. By continuing to use, modify, or distribute */
|
||||
/* this file you indicate that you have read the license and */
|
||||
/* understand and accept it fully. */
|
||||
/* */
|
||||
/***************************************************************************/
|
||||
|
||||
|
||||
#ifndef FTCFFDRV_H_
|
||||
#define FTCFFDRV_H_
|
||||
|
||||
#include <ft2build.h>
|
||||
#include FT_FREETYPE_H
|
||||
|
||||
#ifdef FREETYPE_H
|
||||
#error "freetype.h of FreeType 1 has been loaded!"
|
||||
#error "Please fix the directory search order for header files"
|
||||
#error "so that freetype.h of FreeType 2 is found first."
|
||||
#endif
|
||||
|
||||
|
||||
FT_BEGIN_HEADER
|
||||
|
||||
|
||||
/**************************************************************************
|
||||
*
|
||||
* @section:
|
||||
* cff_driver
|
||||
*
|
||||
* @title:
|
||||
* The CFF driver
|
||||
*
|
||||
* @abstract:
|
||||
* Controlling the CFF driver module.
|
||||
*
|
||||
* @description:
|
||||
* While FreeType's CFF driver doesn't expose API functions by itself,
|
||||
* it is possible to control its behaviour with @FT_Property_Set and
|
||||
* @FT_Property_Get. The list below gives the available properties
|
||||
* together with the necessary macros and structures.
|
||||
*
|
||||
* The CFF driver's module name is `cff'.
|
||||
*
|
||||
* *Hinting* *and* *antialiasing* *principles* *of* *the* *new* *engine*
|
||||
*
|
||||
* The rasterizer is positioning horizontal features (e.g., ascender
|
||||
* height & x-height, or crossbars) on the pixel grid and minimizing the
|
||||
* amount of antialiasing applied to them, while placing vertical
|
||||
* features (vertical stems) on the pixel grid without hinting, thus
|
||||
* representing the stem position and weight accurately. Sometimes the
|
||||
* vertical stems may be only partially black. In this context,
|
||||
* `antialiasing' means that stems are not positioned exactly on pixel
|
||||
* borders, causing a fuzzy appearance.
|
||||
*
|
||||
* There are two principles behind this approach.
|
||||
*
|
||||
* 1) No hinting in the horizontal direction: Unlike `superhinted'
|
||||
* TrueType, which changes glyph widths to accommodate regular
|
||||
* inter-glyph spacing, Adobe's approach is `faithful to the design' in
|
||||
* representing both the glyph width and the inter-glyph spacing
|
||||
* designed for the font. This makes the screen display as close as it
|
||||
* can be to the result one would get with infinite resolution, while
|
||||
* preserving what is considered the key characteristics of each glyph.
|
||||
* Note that the distances between unhinted and grid-fitted positions at
|
||||
* small sizes are comparable to kerning values and thus would be
|
||||
* noticeable (and distracting) while reading if hinting were applied.
|
||||
*
|
||||
* One of the reasons to not hint horizontally is antialiasing for LCD
|
||||
* screens: The pixel geometry of modern displays supplies three
|
||||
* vertical sub-pixels as the eye moves horizontally across each visible
|
||||
* pixel. On devices where we can be certain this characteristic is
|
||||
* present a rasterizer can take advantage of the sub-pixels to add
|
||||
* increments of weight. In Western writing systems this turns out to
|
||||
* be the more critical direction anyway; the weights and spacing of
|
||||
* vertical stems (see above) are central to Armenian, Cyrillic, Greek,
|
||||
* and Latin type designs. Even when the rasterizer uses greyscale
|
||||
* antialiasing instead of color (a necessary compromise when one
|
||||
* doesn't know the screen characteristics), the unhinted vertical
|
||||
* features preserve the design's weight and spacing much better than
|
||||
* aliased type would.
|
||||
*
|
||||
* 2) Alignment in the vertical direction: Weights and spacing along the
|
||||
* y~axis are less critical; what is much more important is the visual
|
||||
* alignment of related features (like cap-height and x-height). The
|
||||
* sense of alignment for these is enhanced by the sharpness of grid-fit
|
||||
* edges, while the cruder vertical resolution (full pixels instead of
|
||||
* 1/3 pixels) is less of a problem.
|
||||
*
|
||||
* On the technical side, horizontal alignment zones for ascender,
|
||||
* x-height, and other important height values (traditionally called
|
||||
* `blue zones') as defined in the font are positioned independently,
|
||||
* each being rounded to the nearest pixel edge, taking care of
|
||||
* overshoot suppression at small sizes, stem darkening, and scaling.
|
||||
*
|
||||
* Hstems (this is, hint values defined in the font to help align
|
||||
* horizontal features) that fall within a blue zone are said to be
|
||||
* `captured' and are aligned to that zone. Uncaptured stems are moved
|
||||
* in one of four ways, top edge up or down, bottom edge up or down.
|
||||
* Unless there are conflicting hstems, the smallest movement is taken
|
||||
* to minimize distortion.
|
||||
*
|
||||
* @order:
|
||||
* hinting-engine[cff]
|
||||
* no-stem-darkening[cff]
|
||||
* darkening-parameters[cff]
|
||||
*
|
||||
*/
|
||||
|
||||
|
||||
/**************************************************************************
|
||||
*
|
||||
* @property:
|
||||
* hinting-engine[cff]
|
||||
*
|
||||
* @description:
|
||||
* Thanks to Adobe, which contributed a new hinting (and parsing)
|
||||
* engine, an application can select between `freetype' and `adobe' if
|
||||
* compiled with CFF_CONFIG_OPTION_OLD_ENGINE. If this configuration
|
||||
* macro isn't defined, `hinting-engine' does nothing.
|
||||
*
|
||||
* The default engine is `freetype' if CFF_CONFIG_OPTION_OLD_ENGINE is
|
||||
* defined, and `adobe' otherwise.
|
||||
*
|
||||
* The following example code demonstrates how to select Adobe's hinting
|
||||
* engine (omitting the error handling).
|
||||
*
|
||||
* {
|
||||
* FT_Library library;
|
||||
* FT_UInt hinting_engine = FT_CFF_HINTING_ADOBE;
|
||||
*
|
||||
*
|
||||
* FT_Init_FreeType( &library );
|
||||
*
|
||||
* FT_Property_Set( library, "cff",
|
||||
* "hinting-engine", &hinting_engine );
|
||||
* }
|
||||
*
|
||||
* @note:
|
||||
* This property can be used with @FT_Property_Get also.
|
||||
*
|
||||
* This property can be set via the `FREETYPE_PROPERTIES' environment
|
||||
* variable (using values `adobe' or `freetype').
|
||||
*/
|
||||
|
||||
|
||||
/**************************************************************************
|
||||
*
|
||||
* @enum:
|
||||
* FT_CFF_HINTING_XXX
|
||||
*
|
||||
* @description:
|
||||
* A list of constants used for the @hinting-engine[cff] property to
|
||||
* select the hinting engine for CFF fonts.
|
||||
*
|
||||
* @values:
|
||||
* FT_CFF_HINTING_FREETYPE ::
|
||||
* Use the old FreeType hinting engine.
|
||||
*
|
||||
* FT_CFF_HINTING_ADOBE ::
|
||||
* Use the hinting engine contributed by Adobe.
|
||||
*
|
||||
*/
|
||||
#define FT_CFF_HINTING_FREETYPE 0
|
||||
#define FT_CFF_HINTING_ADOBE 1
|
||||
|
||||
|
||||
/**************************************************************************
|
||||
*
|
||||
* @property:
|
||||
* no-stem-darkening[cff]
|
||||
*
|
||||
* @description:
|
||||
* By default, the Adobe CFF engine darkens stems at smaller sizes,
|
||||
* regardless of hinting, to enhance contrast. This feature requires
|
||||
* a rendering system with proper gamma correction. Setting this
|
||||
* property, stem darkening gets switched off.
|
||||
*
|
||||
* Note that stem darkening is never applied if @FT_LOAD_NO_SCALE is set.
|
||||
*
|
||||
* {
|
||||
* FT_Library library;
|
||||
* FT_Bool no_stem_darkening = TRUE;
|
||||
*
|
||||
*
|
||||
* FT_Init_FreeType( &library );
|
||||
*
|
||||
* FT_Property_Set( library, "cff",
|
||||
* "no-stem-darkening", &no_stem_darkening );
|
||||
* }
|
||||
*
|
||||
* @note:
|
||||
* This property can be used with @FT_Property_Get also.
|
||||
*
|
||||
* This property can be set via the `FREETYPE_PROPERTIES' environment
|
||||
* variable (using values 1 and 0 for `on' and `off', respectively).
|
||||
*
|
||||
*/
|
||||
|
||||
|
||||
/**************************************************************************
|
||||
*
|
||||
* @property:
|
||||
* darkening-parameters[cff]
|
||||
*
|
||||
* @description:
|
||||
* By default, the Adobe CFF engine darkens stems as follows (if the
|
||||
* `no-stem-darkening' property isn't set):
|
||||
*
|
||||
* {
|
||||
* stem width <= 0.5px: darkening amount = 0.4px
|
||||
* stem width = 1px: darkening amount = 0.275px
|
||||
* stem width = 1.667px: darkening amount = 0.275px
|
||||
* stem width >= 2.333px: darkening amount = 0px
|
||||
* }
|
||||
*
|
||||
* and piecewise linear in-between. At configuration time, these four
|
||||
* control points can be set with the macro
|
||||
* `CFF_CONFIG_OPTION_DARKENING_PARAMETERS'. At runtime, the control
|
||||
* points can be changed using the `darkening-parameters' property, as
|
||||
* the following example demonstrates.
|
||||
*
|
||||
* {
|
||||
* FT_Library library;
|
||||
* FT_Int darken_params[8] = { 500, 300, // x1, y1
|
||||
* 1000, 200, // x2, y2
|
||||
* 1500, 100, // x3, y3
|
||||
* 2000, 0 }; // x4, y4
|
||||
*
|
||||
*
|
||||
* FT_Init_FreeType( &library );
|
||||
*
|
||||
* FT_Property_Set( library, "cff",
|
||||
* "darkening-parameters", darken_params );
|
||||
* }
|
||||
*
|
||||
* The x~values give the stem width, and the y~values the darkening
|
||||
* amount. The unit is 1000th of pixels. All coordinate values must be
|
||||
* positive; the x~values must be monotonically increasing; the
|
||||
* y~values must be monotonically decreasing and smaller than or
|
||||
* equal to 500 (corresponding to half a pixel); the slope of each
|
||||
* linear piece must be shallower than -1 (e.g., -.4).
|
||||
*
|
||||
* @note:
|
||||
* This property can be used with @FT_Property_Get also.
|
||||
*
|
||||
* This property can be set via the `FREETYPE_PROPERTIES' environment
|
||||
* variable, using eight comma-separated integers without spaces. Here
|
||||
* the above example, using `\' to break the line for readability.
|
||||
*
|
||||
* {
|
||||
* FREETYPE_PROPERTIES=\
|
||||
* cff:darkening-parameters=500,300,1000,200,1500,100,2000,0
|
||||
* }
|
||||
*/
|
||||
|
||||
/* */
|
||||
|
||||
|
||||
FT_END_HEADER
|
||||
|
||||
|
||||
#endif /* FTCFFDRV_H_ */
|
||||
|
||||
|
||||
/* END */
|
||||
135
include/fake/vtcs_root_vienna/freetype2/freetype/ftchapters.h
Normal file
135
include/fake/vtcs_root_vienna/freetype2/freetype/ftchapters.h
Normal file
@ -0,0 +1,135 @@
|
||||
/***************************************************************************/
|
||||
/* */
|
||||
/* This file defines the structure of the FreeType reference. */
|
||||
/* It is used by the python script that generates the HTML files. */
|
||||
/* */
|
||||
/***************************************************************************/
|
||||
|
||||
|
||||
/***************************************************************************/
|
||||
/* */
|
||||
/* <Chapter> */
|
||||
/* general_remarks */
|
||||
/* */
|
||||
/* <Title> */
|
||||
/* General Remarks */
|
||||
/* */
|
||||
/* <Sections> */
|
||||
/* header_inclusion */
|
||||
/* user_allocation */
|
||||
/* */
|
||||
/***************************************************************************/
|
||||
|
||||
|
||||
/***************************************************************************/
|
||||
/* */
|
||||
/* <Chapter> */
|
||||
/* core_api */
|
||||
/* */
|
||||
/* <Title> */
|
||||
/* Core API */
|
||||
/* */
|
||||
/* <Sections> */
|
||||
/* version */
|
||||
/* basic_types */
|
||||
/* base_interface */
|
||||
/* glyph_variants */
|
||||
/* glyph_management */
|
||||
/* mac_specific */
|
||||
/* sizes_management */
|
||||
/* header_file_macros */
|
||||
/* */
|
||||
/***************************************************************************/
|
||||
|
||||
|
||||
/***************************************************************************/
|
||||
/* */
|
||||
/* <Chapter> */
|
||||
/* format_specific */
|
||||
/* */
|
||||
/* <Title> */
|
||||
/* Format-Specific API */
|
||||
/* */
|
||||
/* <Sections> */
|
||||
/* multiple_masters */
|
||||
/* truetype_tables */
|
||||
/* type1_tables */
|
||||
/* sfnt_names */
|
||||
/* bdf_fonts */
|
||||
/* cid_fonts */
|
||||
/* pfr_fonts */
|
||||
/* winfnt_fonts */
|
||||
/* font_formats */
|
||||
/* gasp_table */
|
||||
/* */
|
||||
/***************************************************************************/
|
||||
|
||||
|
||||
/***************************************************************************/
|
||||
/* */
|
||||
/* <Chapter> */
|
||||
/* module_specific */
|
||||
/* */
|
||||
/* <Title> */
|
||||
/* Controlling FreeType Modules */
|
||||
/* */
|
||||
/* <Sections> */
|
||||
/* auto_hinter */
|
||||
/* cff_driver */
|
||||
/* tt_driver */
|
||||
/* */
|
||||
/***************************************************************************/
|
||||
|
||||
|
||||
/***************************************************************************/
|
||||
/* */
|
||||
/* <Chapter> */
|
||||
/* cache_subsystem */
|
||||
/* */
|
||||
/* <Title> */
|
||||
/* Cache Sub-System */
|
||||
/* */
|
||||
/* <Sections> */
|
||||
/* cache_subsystem */
|
||||
/* */
|
||||
/***************************************************************************/
|
||||
|
||||
|
||||
/***************************************************************************/
|
||||
/* */
|
||||
/* <Chapter> */
|
||||
/* support_api */
|
||||
/* */
|
||||
/* <Title> */
|
||||
/* Support API */
|
||||
/* */
|
||||
/* <Sections> */
|
||||
/* computations */
|
||||
/* list_processing */
|
||||
/* outline_processing */
|
||||
/* quick_advance */
|
||||
/* bitmap_handling */
|
||||
/* raster */
|
||||
/* glyph_stroker */
|
||||
/* system_interface */
|
||||
/* module_management */
|
||||
/* gzip */
|
||||
/* lzw */
|
||||
/* bzip2 */
|
||||
/* lcd_filtering */
|
||||
/* */
|
||||
/***************************************************************************/
|
||||
|
||||
/***************************************************************************/
|
||||
/* */
|
||||
/* <Chapter> */
|
||||
/* error_codes */
|
||||
/* */
|
||||
/* <Title> */
|
||||
/* Error Codes */
|
||||
/* */
|
||||
/* <Sections> */
|
||||
/* error_enumerations */
|
||||
/* error_code_values */
|
||||
/* */
|
||||
/***************************************************************************/
|
||||
168
include/fake/vtcs_root_vienna/freetype2/freetype/ftcid.h
Normal file
168
include/fake/vtcs_root_vienna/freetype2/freetype/ftcid.h
Normal file
@ -0,0 +1,168 @@
|
||||
/***************************************************************************/
|
||||
/* */
|
||||
/* ftcid.h */
|
||||
/* */
|
||||
/* FreeType API for accessing CID font information (specification). */
|
||||
/* */
|
||||
/* Copyright 2007-2016 by */
|
||||
/* Dereg Clegg and Michael Toftdal. */
|
||||
/* */
|
||||
/* This file is part of the FreeType project, and may only be used, */
|
||||
/* modified, and distributed under the terms of the FreeType project */
|
||||
/* license, LICENSE.TXT. By continuing to use, modify, or distribute */
|
||||
/* this file you indicate that you have read the license and */
|
||||
/* understand and accept it fully. */
|
||||
/* */
|
||||
/***************************************************************************/
|
||||
|
||||
|
||||
#ifndef FTCID_H_
|
||||
#define FTCID_H_
|
||||
|
||||
#include <ft2build.h>
|
||||
#include FT_FREETYPE_H
|
||||
|
||||
#ifdef FREETYPE_H
|
||||
#error "freetype.h of FreeType 1 has been loaded!"
|
||||
#error "Please fix the directory search order for header files"
|
||||
#error "so that freetype.h of FreeType 2 is found first."
|
||||
#endif
|
||||
|
||||
|
||||
FT_BEGIN_HEADER
|
||||
|
||||
|
||||
/*************************************************************************/
|
||||
/* */
|
||||
/* <Section> */
|
||||
/* cid_fonts */
|
||||
/* */
|
||||
/* <Title> */
|
||||
/* CID Fonts */
|
||||
/* */
|
||||
/* <Abstract> */
|
||||
/* CID-keyed font specific API. */
|
||||
/* */
|
||||
/* <Description> */
|
||||
/* This section contains the declaration of CID-keyed font specific */
|
||||
/* functions. */
|
||||
/* */
|
||||
/*************************************************************************/
|
||||
|
||||
|
||||
/**********************************************************************
|
||||
*
|
||||
* @function:
|
||||
* FT_Get_CID_Registry_Ordering_Supplement
|
||||
*
|
||||
* @description:
|
||||
* Retrieve the Registry/Ordering/Supplement triple (also known as the
|
||||
* "R/O/S") from a CID-keyed font.
|
||||
*
|
||||
* @input:
|
||||
* face ::
|
||||
* A handle to the input face.
|
||||
*
|
||||
* @output:
|
||||
* registry ::
|
||||
* The registry, as a C~string, owned by the face.
|
||||
*
|
||||
* ordering ::
|
||||
* The ordering, as a C~string, owned by the face.
|
||||
*
|
||||
* supplement ::
|
||||
* The supplement.
|
||||
*
|
||||
* @return:
|
||||
* FreeType error code. 0~means success.
|
||||
*
|
||||
* @note:
|
||||
* This function only works with CID faces, returning an error
|
||||
* otherwise.
|
||||
*
|
||||
* @since:
|
||||
* 2.3.6
|
||||
*/
|
||||
FT_EXPORT( FT_Error )
|
||||
FT_Get_CID_Registry_Ordering_Supplement( FT_Face face,
|
||||
const char* *registry,
|
||||
const char* *ordering,
|
||||
FT_Int *supplement);
|
||||
|
||||
|
||||
/**********************************************************************
|
||||
*
|
||||
* @function:
|
||||
* FT_Get_CID_Is_Internally_CID_Keyed
|
||||
*
|
||||
* @description:
|
||||
* Retrieve the type of the input face, CID keyed or not. In
|
||||
* contrast to the @FT_IS_CID_KEYED macro this function returns
|
||||
* successfully also for CID-keyed fonts in an SFNT wrapper.
|
||||
*
|
||||
* @input:
|
||||
* face ::
|
||||
* A handle to the input face.
|
||||
*
|
||||
* @output:
|
||||
* is_cid ::
|
||||
* The type of the face as an @FT_Bool.
|
||||
*
|
||||
* @return:
|
||||
* FreeType error code. 0~means success.
|
||||
*
|
||||
* @note:
|
||||
* This function only works with CID faces and OpenType fonts,
|
||||
* returning an error otherwise.
|
||||
*
|
||||
* @since:
|
||||
* 2.3.9
|
||||
*/
|
||||
FT_EXPORT( FT_Error )
|
||||
FT_Get_CID_Is_Internally_CID_Keyed( FT_Face face,
|
||||
FT_Bool *is_cid );
|
||||
|
||||
|
||||
/**********************************************************************
|
||||
*
|
||||
* @function:
|
||||
* FT_Get_CID_From_Glyph_Index
|
||||
*
|
||||
* @description:
|
||||
* Retrieve the CID of the input glyph index.
|
||||
*
|
||||
* @input:
|
||||
* face ::
|
||||
* A handle to the input face.
|
||||
*
|
||||
* glyph_index ::
|
||||
* The input glyph index.
|
||||
*
|
||||
* @output:
|
||||
* cid ::
|
||||
* The CID as an @FT_UInt.
|
||||
*
|
||||
* @return:
|
||||
* FreeType error code. 0~means success.
|
||||
*
|
||||
* @note:
|
||||
* This function only works with CID faces and OpenType fonts,
|
||||
* returning an error otherwise.
|
||||
*
|
||||
* @since:
|
||||
* 2.3.9
|
||||
*/
|
||||
FT_EXPORT( FT_Error )
|
||||
FT_Get_CID_From_Glyph_Index( FT_Face face,
|
||||
FT_UInt glyph_index,
|
||||
FT_UInt *cid );
|
||||
|
||||
/* */
|
||||
|
||||
|
||||
FT_END_HEADER
|
||||
|
||||
#endif /* FTCID_H_ */
|
||||
|
||||
|
||||
/* END */
|
||||
276
include/fake/vtcs_root_vienna/freetype2/freetype/fterrdef.h
Normal file
276
include/fake/vtcs_root_vienna/freetype2/freetype/fterrdef.h
Normal file
@ -0,0 +1,276 @@
|
||||
/***************************************************************************/
|
||||
/* */
|
||||
/* fterrdef.h */
|
||||
/* */
|
||||
/* FreeType error codes (specification). */
|
||||
/* */
|
||||
/* Copyright 2002-2016 by */
|
||||
/* David Turner, Robert Wilhelm, and Werner Lemberg. */
|
||||
/* */
|
||||
/* This file is part of the FreeType project, and may only be used, */
|
||||
/* modified, and distributed under the terms of the FreeType project */
|
||||
/* license, LICENSE.TXT. By continuing to use, modify, or distribute */
|
||||
/* this file you indicate that you have read the license and */
|
||||
/* understand and accept it fully. */
|
||||
/* */
|
||||
/***************************************************************************/
|
||||
|
||||
|
||||
/*************************************************************************/
|
||||
/* */
|
||||
/* <Section> */
|
||||
/* error_code_values */
|
||||
/* */
|
||||
/* <Title> */
|
||||
/* Error Code Values */
|
||||
/* */
|
||||
/* <Abstract> */
|
||||
/* All possible error codes returned by FreeType functions. */
|
||||
/* */
|
||||
/* <Description> */
|
||||
/* The list below is taken verbatim from the file `fterrdef.h' */
|
||||
/* (loaded automatically by including `FT_FREETYPE_H'). The first */
|
||||
/* argument of the `FT_ERROR_DEF_' macro is the error label; by */
|
||||
/* default, the prefix `FT_Err_' gets added so that you get error */
|
||||
/* names like `FT_Err_Cannot_Open_Resource'. The second argument is */
|
||||
/* the error code, and the last argument an error string, which is not */
|
||||
/* used by FreeType. */
|
||||
/* */
|
||||
/* Within your application you should *only* use error names and */
|
||||
/* *never* its numeric values! The latter might (and actually do) */
|
||||
/* change in forthcoming FreeType versions. */
|
||||
/* */
|
||||
/* Macro `FT_NOERRORDEF_' defines `FT_Err_Ok', which is always zero. */
|
||||
/* See the `Error Enumerations' subsection how to automatically */
|
||||
/* generate a list of error strings. */
|
||||
/* */
|
||||
/*************************************************************************/
|
||||
|
||||
|
||||
/*************************************************************************/
|
||||
/* */
|
||||
/* <Enum> */
|
||||
/* FT_Err_XXX */
|
||||
/* */
|
||||
/*************************************************************************/
|
||||
|
||||
/* generic errors */
|
||||
|
||||
FT_NOERRORDEF_( Ok, 0x00,
|
||||
"no error" )
|
||||
|
||||
FT_ERRORDEF_( Cannot_Open_Resource, 0x01,
|
||||
"cannot open resource" )
|
||||
FT_ERRORDEF_( Unknown_File_Format, 0x02,
|
||||
"unknown file format" )
|
||||
FT_ERRORDEF_( Invalid_File_Format, 0x03,
|
||||
"broken file" )
|
||||
FT_ERRORDEF_( Invalid_Version, 0x04,
|
||||
"invalid FreeType version" )
|
||||
FT_ERRORDEF_( Lower_Module_Version, 0x05,
|
||||
"module version is too low" )
|
||||
FT_ERRORDEF_( Invalid_Argument, 0x06,
|
||||
"invalid argument" )
|
||||
FT_ERRORDEF_( Unimplemented_Feature, 0x07,
|
||||
"unimplemented feature" )
|
||||
FT_ERRORDEF_( Invalid_Table, 0x08,
|
||||
"broken table" )
|
||||
FT_ERRORDEF_( Invalid_Offset, 0x09,
|
||||
"broken offset within table" )
|
||||
FT_ERRORDEF_( Array_Too_Large, 0x0A,
|
||||
"array allocation size too large" )
|
||||
FT_ERRORDEF_( Missing_Module, 0x0B,
|
||||
"missing module" )
|
||||
FT_ERRORDEF_( Missing_Property, 0x0C,
|
||||
"missing property" )
|
||||
|
||||
/* glyph/character errors */
|
||||
|
||||
FT_ERRORDEF_( Invalid_Glyph_Index, 0x10,
|
||||
"invalid glyph index" )
|
||||
FT_ERRORDEF_( Invalid_Character_Code, 0x11,
|
||||
"invalid character code" )
|
||||
FT_ERRORDEF_( Invalid_Glyph_Format, 0x12,
|
||||
"unsupported glyph image format" )
|
||||
FT_ERRORDEF_( Cannot_Render_Glyph, 0x13,
|
||||
"cannot render this glyph format" )
|
||||
FT_ERRORDEF_( Invalid_Outline, 0x14,
|
||||
"invalid outline" )
|
||||
FT_ERRORDEF_( Invalid_Composite, 0x15,
|
||||
"invalid composite glyph" )
|
||||
FT_ERRORDEF_( Too_Many_Hints, 0x16,
|
||||
"too many hints" )
|
||||
FT_ERRORDEF_( Invalid_Pixel_Size, 0x17,
|
||||
"invalid pixel size" )
|
||||
|
||||
/* handle errors */
|
||||
|
||||
FT_ERRORDEF_( Invalid_Handle, 0x20,
|
||||
"invalid object handle" )
|
||||
FT_ERRORDEF_( Invalid_Library_Handle, 0x21,
|
||||
"invalid library handle" )
|
||||
FT_ERRORDEF_( Invalid_Driver_Handle, 0x22,
|
||||
"invalid module handle" )
|
||||
FT_ERRORDEF_( Invalid_Face_Handle, 0x23,
|
||||
"invalid face handle" )
|
||||
FT_ERRORDEF_( Invalid_Size_Handle, 0x24,
|
||||
"invalid size handle" )
|
||||
FT_ERRORDEF_( Invalid_Slot_Handle, 0x25,
|
||||
"invalid glyph slot handle" )
|
||||
FT_ERRORDEF_( Invalid_CharMap_Handle, 0x26,
|
||||
"invalid charmap handle" )
|
||||
FT_ERRORDEF_( Invalid_Cache_Handle, 0x27,
|
||||
"invalid cache manager handle" )
|
||||
FT_ERRORDEF_( Invalid_Stream_Handle, 0x28,
|
||||
"invalid stream handle" )
|
||||
|
||||
/* driver errors */
|
||||
|
||||
FT_ERRORDEF_( Too_Many_Drivers, 0x30,
|
||||
"too many modules" )
|
||||
FT_ERRORDEF_( Too_Many_Extensions, 0x31,
|
||||
"too many extensions" )
|
||||
|
||||
/* memory errors */
|
||||
|
||||
FT_ERRORDEF_( Out_Of_Memory, 0x40,
|
||||
"out of memory" )
|
||||
FT_ERRORDEF_( Unlisted_Object, 0x41,
|
||||
"unlisted object" )
|
||||
|
||||
/* stream errors */
|
||||
|
||||
FT_ERRORDEF_( Cannot_Open_Stream, 0x51,
|
||||
"cannot open stream" )
|
||||
FT_ERRORDEF_( Invalid_Stream_Seek, 0x52,
|
||||
"invalid stream seek" )
|
||||
FT_ERRORDEF_( Invalid_Stream_Skip, 0x53,
|
||||
"invalid stream skip" )
|
||||
FT_ERRORDEF_( Invalid_Stream_Read, 0x54,
|
||||
"invalid stream read" )
|
||||
FT_ERRORDEF_( Invalid_Stream_Operation, 0x55,
|
||||
"invalid stream operation" )
|
||||
FT_ERRORDEF_( Invalid_Frame_Operation, 0x56,
|
||||
"invalid frame operation" )
|
||||
FT_ERRORDEF_( Nested_Frame_Access, 0x57,
|
||||
"nested frame access" )
|
||||
FT_ERRORDEF_( Invalid_Frame_Read, 0x58,
|
||||
"invalid frame read" )
|
||||
|
||||
/* raster errors */
|
||||
|
||||
FT_ERRORDEF_( Raster_Uninitialized, 0x60,
|
||||
"raster uninitialized" )
|
||||
FT_ERRORDEF_( Raster_Corrupted, 0x61,
|
||||
"raster corrupted" )
|
||||
FT_ERRORDEF_( Raster_Overflow, 0x62,
|
||||
"raster overflow" )
|
||||
FT_ERRORDEF_( Raster_Negative_Height, 0x63,
|
||||
"negative height while rastering" )
|
||||
|
||||
/* cache errors */
|
||||
|
||||
FT_ERRORDEF_( Too_Many_Caches, 0x70,
|
||||
"too many registered caches" )
|
||||
|
||||
/* TrueType and SFNT errors */
|
||||
|
||||
FT_ERRORDEF_( Invalid_Opcode, 0x80,
|
||||
"invalid opcode" )
|
||||
FT_ERRORDEF_( Too_Few_Arguments, 0x81,
|
||||
"too few arguments" )
|
||||
FT_ERRORDEF_( Stack_Overflow, 0x82,
|
||||
"stack overflow" )
|
||||
FT_ERRORDEF_( Code_Overflow, 0x83,
|
||||
"code overflow" )
|
||||
FT_ERRORDEF_( Bad_Argument, 0x84,
|
||||
"bad argument" )
|
||||
FT_ERRORDEF_( Divide_By_Zero, 0x85,
|
||||
"division by zero" )
|
||||
FT_ERRORDEF_( Invalid_Reference, 0x86,
|
||||
"invalid reference" )
|
||||
FT_ERRORDEF_( Debug_OpCode, 0x87,
|
||||
"found debug opcode" )
|
||||
FT_ERRORDEF_( ENDF_In_Exec_Stream, 0x88,
|
||||
"found ENDF opcode in execution stream" )
|
||||
FT_ERRORDEF_( Nested_DEFS, 0x89,
|
||||
"nested DEFS" )
|
||||
FT_ERRORDEF_( Invalid_CodeRange, 0x8A,
|
||||
"invalid code range" )
|
||||
FT_ERRORDEF_( Execution_Too_Long, 0x8B,
|
||||
"execution context too long" )
|
||||
FT_ERRORDEF_( Too_Many_Function_Defs, 0x8C,
|
||||
"too many function definitions" )
|
||||
FT_ERRORDEF_( Too_Many_Instruction_Defs, 0x8D,
|
||||
"too many instruction definitions" )
|
||||
FT_ERRORDEF_( Table_Missing, 0x8E,
|
||||
"SFNT font table missing" )
|
||||
FT_ERRORDEF_( Horiz_Header_Missing, 0x8F,
|
||||
"horizontal header (hhea) table missing" )
|
||||
FT_ERRORDEF_( Locations_Missing, 0x90,
|
||||
"locations (loca) table missing" )
|
||||
FT_ERRORDEF_( Name_Table_Missing, 0x91,
|
||||
"name table missing" )
|
||||
FT_ERRORDEF_( CMap_Table_Missing, 0x92,
|
||||
"character map (cmap) table missing" )
|
||||
FT_ERRORDEF_( Hmtx_Table_Missing, 0x93,
|
||||
"horizontal metrics (hmtx) table missing" )
|
||||
FT_ERRORDEF_( Post_Table_Missing, 0x94,
|
||||
"PostScript (post) table missing" )
|
||||
FT_ERRORDEF_( Invalid_Horiz_Metrics, 0x95,
|
||||
"invalid horizontal metrics" )
|
||||
FT_ERRORDEF_( Invalid_CharMap_Format, 0x96,
|
||||
"invalid character map (cmap) format" )
|
||||
FT_ERRORDEF_( Invalid_PPem, 0x97,
|
||||
"invalid ppem value" )
|
||||
FT_ERRORDEF_( Invalid_Vert_Metrics, 0x98,
|
||||
"invalid vertical metrics" )
|
||||
FT_ERRORDEF_( Could_Not_Find_Context, 0x99,
|
||||
"could not find context" )
|
||||
FT_ERRORDEF_( Invalid_Post_Table_Format, 0x9A,
|
||||
"invalid PostScript (post) table format" )
|
||||
FT_ERRORDEF_( Invalid_Post_Table, 0x9B,
|
||||
"invalid PostScript (post) table" )
|
||||
|
||||
/* CFF, CID, and Type 1 errors */
|
||||
|
||||
FT_ERRORDEF_( Syntax_Error, 0xA0,
|
||||
"opcode syntax error" )
|
||||
FT_ERRORDEF_( Stack_Underflow, 0xA1,
|
||||
"argument stack underflow" )
|
||||
FT_ERRORDEF_( Ignore, 0xA2,
|
||||
"ignore" )
|
||||
FT_ERRORDEF_( No_Unicode_Glyph_Name, 0xA3,
|
||||
"no Unicode glyph name found" )
|
||||
FT_ERRORDEF_( Glyph_Too_Big, 0xA4,
|
||||
"glyph too big for hinting" )
|
||||
|
||||
/* BDF errors */
|
||||
|
||||
FT_ERRORDEF_( Missing_Startfont_Field, 0xB0,
|
||||
"`STARTFONT' field missing" )
|
||||
FT_ERRORDEF_( Missing_Font_Field, 0xB1,
|
||||
"`FONT' field missing" )
|
||||
FT_ERRORDEF_( Missing_Size_Field, 0xB2,
|
||||
"`SIZE' field missing" )
|
||||
FT_ERRORDEF_( Missing_Fontboundingbox_Field, 0xB3,
|
||||
"`FONTBOUNDINGBOX' field missing" )
|
||||
FT_ERRORDEF_( Missing_Chars_Field, 0xB4,
|
||||
"`CHARS' field missing" )
|
||||
FT_ERRORDEF_( Missing_Startchar_Field, 0xB5,
|
||||
"`STARTCHAR' field missing" )
|
||||
FT_ERRORDEF_( Missing_Encoding_Field, 0xB6,
|
||||
"`ENCODING' field missing" )
|
||||
FT_ERRORDEF_( Missing_Bbx_Field, 0xB7,
|
||||
"`BBX' field missing" )
|
||||
FT_ERRORDEF_( Bbx_Too_Big, 0xB8,
|
||||
"`BBX' too big" )
|
||||
FT_ERRORDEF_( Corrupted_Font_Header, 0xB9,
|
||||
"Font header corrupted or missing fields" )
|
||||
FT_ERRORDEF_( Corrupted_Font_Glyphs, 0xBA,
|
||||
"Font glyphs corrupted or missing fields" )
|
||||
|
||||
/* */
|
||||
|
||||
|
||||
/* END */
|
||||
226
include/fake/vtcs_root_vienna/freetype2/freetype/fterrors.h
Normal file
226
include/fake/vtcs_root_vienna/freetype2/freetype/fterrors.h
Normal file
@ -0,0 +1,226 @@
|
||||
/***************************************************************************/
|
||||
/* */
|
||||
/* fterrors.h */
|
||||
/* */
|
||||
/* FreeType error code handling (specification). */
|
||||
/* */
|
||||
/* Copyright 1996-2016 by */
|
||||
/* David Turner, Robert Wilhelm, and Werner Lemberg. */
|
||||
/* */
|
||||
/* This file is part of the FreeType project, and may only be used, */
|
||||
/* modified, and distributed under the terms of the FreeType project */
|
||||
/* license, LICENSE.TXT. By continuing to use, modify, or distribute */
|
||||
/* this file you indicate that you have read the license and */
|
||||
/* understand and accept it fully. */
|
||||
/* */
|
||||
/***************************************************************************/
|
||||
|
||||
|
||||
/*************************************************************************/
|
||||
/* */
|
||||
/* <Section> */
|
||||
/* error_enumerations */
|
||||
/* */
|
||||
/* <Title> */
|
||||
/* Error Enumerations */
|
||||
/* */
|
||||
/* <Abstract> */
|
||||
/* How to handle errors and error strings. */
|
||||
/* */
|
||||
/* <Description> */
|
||||
/* The header file `fterrors.h' (which is automatically included by */
|
||||
/* `freetype.h' defines the handling of FreeType's enumeration */
|
||||
/* constants. It can also be used to generate error message strings */
|
||||
/* with a small macro trick explained below. */
|
||||
/* */
|
||||
/* *Error* *Formats* */
|
||||
/* */
|
||||
/* The configuration macro FT_CONFIG_OPTION_USE_MODULE_ERRORS can be */
|
||||
/* defined in `ftoption.h' in order to make the higher byte indicate */
|
||||
/* the module where the error has happened (this is not compatible */
|
||||
/* with standard builds of FreeType 2, however). See the file */
|
||||
/* `ftmoderr.h' for more details. */
|
||||
/* */
|
||||
/* *Error* *Message* *Strings* */
|
||||
/* */
|
||||
/* Error definitions are set up with special macros that allow client */
|
||||
/* applications to build a table of error message strings. The */
|
||||
/* strings are not included in a normal build of FreeType 2 to */
|
||||
/* save space (most client applications do not use them). */
|
||||
/* */
|
||||
/* To do so, you have to define the following macros before including */
|
||||
/* this file. */
|
||||
/* */
|
||||
/* { */
|
||||
/* FT_ERROR_START_LIST */
|
||||
/* } */
|
||||
/* */
|
||||
/* This macro is called before anything else to define the start of */
|
||||
/* the error list. It is followed by several FT_ERROR_DEF calls. */
|
||||
/* */
|
||||
/* { */
|
||||
/* FT_ERROR_DEF( e, v, s ) */
|
||||
/* } */
|
||||
/* */
|
||||
/* This macro is called to define one single error. `e' is the error */
|
||||
/* code identifier (e.g., `Invalid_Argument'), `v' is the error's */
|
||||
/* numerical value, and `s' is the corresponding error string. */
|
||||
/* */
|
||||
/* { */
|
||||
/* FT_ERROR_END_LIST */
|
||||
/* } */
|
||||
/* */
|
||||
/* This macro ends the list. */
|
||||
/* */
|
||||
/* Additionally, you have to undefine `FTERRORS_H_' before #including */
|
||||
/* this file. */
|
||||
/* */
|
||||
/* Here is a simple example. */
|
||||
/* */
|
||||
/* { */
|
||||
/* #undef FTERRORS_H_ */
|
||||
/* #define FT_ERRORDEF( e, v, s ) { e, s }, */
|
||||
/* #define FT_ERROR_START_LIST { */
|
||||
/* #define FT_ERROR_END_LIST { 0, NULL } }; */
|
||||
/* */
|
||||
/* const struct */
|
||||
/* { */
|
||||
/* int err_code; */
|
||||
/* const char* err_msg; */
|
||||
/* } ft_errors[] = */
|
||||
/* */
|
||||
/* #include FT_ERRORS_H */
|
||||
/* } */
|
||||
/* */
|
||||
/* Note that `FT_Err_Ok' is _not_ defined with `FT_ERRORDEF' but with */
|
||||
/* `FT_NOERRORDEF'; it is always zero. */
|
||||
/* */
|
||||
/*************************************************************************/
|
||||
|
||||
/* */
|
||||
|
||||
/* In previous FreeType versions we used `__FTERRORS_H__'. However, */
|
||||
/* using two successive underscores in a non-system symbol name */
|
||||
/* violates the C (and C++) standard, so it was changed to the */
|
||||
/* current form. In spite of this, we have to make */
|
||||
/* */
|
||||
/* #undefine __FTERRORS_H__ */
|
||||
/* */
|
||||
/* work for backwards compatibility. */
|
||||
/* */
|
||||
#if !( defined( FTERRORS_H_ ) && defined ( __FTERRORS_H__ ) )
|
||||
#define FTERRORS_H_
|
||||
#define __FTERRORS_H__
|
||||
|
||||
|
||||
/* include module base error codes */
|
||||
#include FT_MODULE_ERRORS_H
|
||||
|
||||
|
||||
/*******************************************************************/
|
||||
/*******************************************************************/
|
||||
/***** *****/
|
||||
/***** SETUP MACROS *****/
|
||||
/***** *****/
|
||||
/*******************************************************************/
|
||||
/*******************************************************************/
|
||||
|
||||
|
||||
#undef FT_NEED_EXTERN_C
|
||||
|
||||
|
||||
/* FT_ERR_PREFIX is used as a prefix for error identifiers. */
|
||||
/* By default, we use `FT_Err_'. */
|
||||
/* */
|
||||
#ifndef FT_ERR_PREFIX
|
||||
#define FT_ERR_PREFIX FT_Err_
|
||||
#endif
|
||||
|
||||
|
||||
/* FT_ERR_BASE is used as the base for module-specific errors. */
|
||||
/* */
|
||||
#ifdef FT_CONFIG_OPTION_USE_MODULE_ERRORS
|
||||
|
||||
#ifndef FT_ERR_BASE
|
||||
#define FT_ERR_BASE FT_Mod_Err_Base
|
||||
#endif
|
||||
|
||||
#else
|
||||
|
||||
#undef FT_ERR_BASE
|
||||
#define FT_ERR_BASE 0
|
||||
|
||||
#endif /* FT_CONFIG_OPTION_USE_MODULE_ERRORS */
|
||||
|
||||
|
||||
/* If FT_ERRORDEF is not defined, we need to define a simple */
|
||||
/* enumeration type. */
|
||||
/* */
|
||||
#ifndef FT_ERRORDEF
|
||||
|
||||
#define FT_ERRORDEF( e, v, s ) e = v,
|
||||
#define FT_ERROR_START_LIST enum {
|
||||
#define FT_ERROR_END_LIST FT_ERR_CAT( FT_ERR_PREFIX, Max ) };
|
||||
|
||||
#ifdef __cplusplus
|
||||
#define FT_NEED_EXTERN_C
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
#endif /* !FT_ERRORDEF */
|
||||
|
||||
|
||||
/* this macro is used to define an error */
|
||||
#define FT_ERRORDEF_( e, v, s ) \
|
||||
FT_ERRORDEF( FT_ERR_CAT( FT_ERR_PREFIX, e ), v + FT_ERR_BASE, s )
|
||||
|
||||
/* this is only used for <module>_Err_Ok, which must be 0! */
|
||||
#define FT_NOERRORDEF_( e, v, s ) \
|
||||
FT_ERRORDEF( FT_ERR_CAT( FT_ERR_PREFIX, e ), v, s )
|
||||
|
||||
|
||||
#ifdef FT_ERROR_START_LIST
|
||||
FT_ERROR_START_LIST
|
||||
#endif
|
||||
|
||||
|
||||
/* now include the error codes */
|
||||
#include FT_ERROR_DEFINITIONS_H
|
||||
|
||||
|
||||
#ifdef FT_ERROR_END_LIST
|
||||
FT_ERROR_END_LIST
|
||||
#endif
|
||||
|
||||
|
||||
/*******************************************************************/
|
||||
/*******************************************************************/
|
||||
/***** *****/
|
||||
/***** SIMPLE CLEANUP *****/
|
||||
/***** *****/
|
||||
/*******************************************************************/
|
||||
/*******************************************************************/
|
||||
|
||||
#ifdef FT_NEED_EXTERN_C
|
||||
}
|
||||
#endif
|
||||
|
||||
#undef FT_ERROR_START_LIST
|
||||
#undef FT_ERROR_END_LIST
|
||||
|
||||
#undef FT_ERRORDEF
|
||||
#undef FT_ERRORDEF_
|
||||
#undef FT_NOERRORDEF_
|
||||
|
||||
#undef FT_NEED_EXTERN_C
|
||||
#undef FT_ERR_BASE
|
||||
|
||||
/* FT_ERR_PREFIX is needed internally */
|
||||
#ifndef FT2_BUILD_LIBRARY
|
||||
#undef FT_ERR_PREFIX
|
||||
#endif
|
||||
|
||||
#endif /* !(FTERRORS_H_ && __FTERRORS_H__) */
|
||||
|
||||
|
||||
/* END */
|
||||
95
include/fake/vtcs_root_vienna/freetype2/freetype/ftfntfmt.h
Normal file
95
include/fake/vtcs_root_vienna/freetype2/freetype/ftfntfmt.h
Normal file
@ -0,0 +1,95 @@
|
||||
/***************************************************************************/
|
||||
/* */
|
||||
/* ftfntfmt.h */
|
||||
/* */
|
||||
/* Support functions for font formats. */
|
||||
/* */
|
||||
/* Copyright 2002-2016 by */
|
||||
/* David Turner, Robert Wilhelm, and Werner Lemberg. */
|
||||
/* */
|
||||
/* This file is part of the FreeType project, and may only be used, */
|
||||
/* modified, and distributed under the terms of the FreeType project */
|
||||
/* license, LICENSE.TXT. By continuing to use, modify, or distribute */
|
||||
/* this file you indicate that you have read the license and */
|
||||
/* understand and accept it fully. */
|
||||
/* */
|
||||
/***************************************************************************/
|
||||
|
||||
|
||||
#ifndef FTFNTFMT_H_
|
||||
#define FTFNTFMT_H_
|
||||
|
||||
#include <ft2build.h>
|
||||
#include FT_FREETYPE_H
|
||||
|
||||
#ifdef FREETYPE_H
|
||||
#error "freetype.h of FreeType 1 has been loaded!"
|
||||
#error "Please fix the directory search order for header files"
|
||||
#error "so that freetype.h of FreeType 2 is found first."
|
||||
#endif
|
||||
|
||||
|
||||
FT_BEGIN_HEADER
|
||||
|
||||
|
||||
/*************************************************************************/
|
||||
/* */
|
||||
/* <Section> */
|
||||
/* font_formats */
|
||||
/* */
|
||||
/* <Title> */
|
||||
/* Font Formats */
|
||||
/* */
|
||||
/* <Abstract> */
|
||||
/* Getting the font format. */
|
||||
/* */
|
||||
/* <Description> */
|
||||
/* The single function in this section can be used to get the font */
|
||||
/* format. Note that this information is not needed normally; */
|
||||
/* however, there are special cases (like in PDF devices) where it is */
|
||||
/* important to differentiate, in spite of FreeType's uniform API. */
|
||||
/* */
|
||||
/*************************************************************************/
|
||||
|
||||
|
||||
/*************************************************************************/
|
||||
/* */
|
||||
/* <Function> */
|
||||
/* FT_Get_Font_Format */
|
||||
/* */
|
||||
/* <Description> */
|
||||
/* Return a string describing the format of a given face. Possible */
|
||||
/* values are `TrueType', `Type~1', `BDF', `PCF', `Type~42', */
|
||||
/* `CID~Type~1', `CFF', `PFR', and `Windows~FNT'. */
|
||||
/* */
|
||||
/* The return value is suitable to be used as an X11 FONT_PROPERTY. */
|
||||
/* */
|
||||
/* <Input> */
|
||||
/* face :: */
|
||||
/* Input face handle. */
|
||||
/* */
|
||||
/* <Return> */
|
||||
/* Font format string. NULL in case of error. */
|
||||
/* */
|
||||
/* <Note> */
|
||||
/* A deprecated name for the same function is */
|
||||
/* `FT_Get_X11_Font_Format'. */
|
||||
/* */
|
||||
FT_EXPORT( const char* )
|
||||
FT_Get_Font_Format( FT_Face face );
|
||||
|
||||
|
||||
/* deprecated */
|
||||
FT_EXPORT( const char* )
|
||||
FT_Get_X11_Font_Format( FT_Face face );
|
||||
|
||||
|
||||
/* */
|
||||
|
||||
|
||||
FT_END_HEADER
|
||||
|
||||
#endif /* FTFNTFMT_H_ */
|
||||
|
||||
|
||||
/* END */
|
||||
129
include/fake/vtcs_root_vienna/freetype2/freetype/ftgasp.h
Normal file
129
include/fake/vtcs_root_vienna/freetype2/freetype/ftgasp.h
Normal file
@ -0,0 +1,129 @@
|
||||
/***************************************************************************/
|
||||
/* */
|
||||
/* ftgasp.h */
|
||||
/* */
|
||||
/* Access of TrueType's `gasp' table (specification). */
|
||||
/* */
|
||||
/* Copyright 2007-2016 by */
|
||||
/* David Turner, Robert Wilhelm, and Werner Lemberg. */
|
||||
/* */
|
||||
/* This file is part of the FreeType project, and may only be used, */
|
||||
/* modified, and distributed under the terms of the FreeType project */
|
||||
/* license, LICENSE.TXT. By continuing to use, modify, or distribute */
|
||||
/* this file you indicate that you have read the license and */
|
||||
/* understand and accept it fully. */
|
||||
/* */
|
||||
/***************************************************************************/
|
||||
|
||||
|
||||
#ifndef FTGASP_H_
|
||||
#define FTGASP_H_
|
||||
|
||||
#include <ft2build.h>
|
||||
#include FT_FREETYPE_H
|
||||
|
||||
#ifdef FREETYPE_H
|
||||
#error "freetype.h of FreeType 1 has been loaded!"
|
||||
#error "Please fix the directory search order for header files"
|
||||
#error "so that freetype.h of FreeType 2 is found first."
|
||||
#endif
|
||||
|
||||
|
||||
/***************************************************************************
|
||||
*
|
||||
* @section:
|
||||
* gasp_table
|
||||
*
|
||||
* @title:
|
||||
* Gasp Table
|
||||
*
|
||||
* @abstract:
|
||||
* Retrieving TrueType `gasp' table entries.
|
||||
*
|
||||
* @description:
|
||||
* The function @FT_Get_Gasp can be used to query a TrueType or OpenType
|
||||
* font for specific entries in its `gasp' table, if any. This is
|
||||
* mainly useful when implementing native TrueType hinting with the
|
||||
* bytecode interpreter to duplicate the Windows text rendering results.
|
||||
*/
|
||||
|
||||
/*************************************************************************
|
||||
*
|
||||
* @enum:
|
||||
* FT_GASP_XXX
|
||||
*
|
||||
* @description:
|
||||
* A list of values and/or bit-flags returned by the @FT_Get_Gasp
|
||||
* function.
|
||||
*
|
||||
* @values:
|
||||
* FT_GASP_NO_TABLE ::
|
||||
* This special value means that there is no GASP table in this face.
|
||||
* It is up to the client to decide what to do.
|
||||
*
|
||||
* FT_GASP_DO_GRIDFIT ::
|
||||
* Grid-fitting and hinting should be performed at the specified ppem.
|
||||
* This *really* means TrueType bytecode interpretation. If this bit
|
||||
* is not set, no hinting gets applied.
|
||||
*
|
||||
* FT_GASP_DO_GRAY ::
|
||||
* Anti-aliased rendering should be performed at the specified ppem.
|
||||
* If not set, do monochrome rendering.
|
||||
*
|
||||
* FT_GASP_SYMMETRIC_SMOOTHING ::
|
||||
* If set, smoothing along multiple axes must be used with ClearType.
|
||||
*
|
||||
* FT_GASP_SYMMETRIC_GRIDFIT ::
|
||||
* Grid-fitting must be used with ClearType's symmetric smoothing.
|
||||
*
|
||||
* @note:
|
||||
* The bit-flags `FT_GASP_DO_GRIDFIT' and `FT_GASP_DO_GRAY' are to be
|
||||
* used for standard font rasterization only. Independently of that,
|
||||
* `FT_GASP_SYMMETRIC_SMOOTHING' and `FT_GASP_SYMMETRIC_GRIDFIT' are to
|
||||
* be used if ClearType is enabled (and `FT_GASP_DO_GRIDFIT' and
|
||||
* `FT_GASP_DO_GRAY' are consequently ignored).
|
||||
*
|
||||
* `ClearType' is Microsoft's implementation of LCD rendering, partly
|
||||
* protected by patents.
|
||||
*
|
||||
* @since:
|
||||
* 2.3.0
|
||||
*/
|
||||
#define FT_GASP_NO_TABLE -1
|
||||
#define FT_GASP_DO_GRIDFIT 0x01
|
||||
#define FT_GASP_DO_GRAY 0x02
|
||||
#define FT_GASP_SYMMETRIC_SMOOTHING 0x08
|
||||
#define FT_GASP_SYMMETRIC_GRIDFIT 0x10
|
||||
|
||||
|
||||
/*************************************************************************
|
||||
*
|
||||
* @func:
|
||||
* FT_Get_Gasp
|
||||
*
|
||||
* @description:
|
||||
* Read the `gasp' table from a TrueType or OpenType font file and
|
||||
* return the entry corresponding to a given character pixel size.
|
||||
*
|
||||
* @input:
|
||||
* face :: The source face handle.
|
||||
* ppem :: The vertical character pixel size.
|
||||
*
|
||||
* @return:
|
||||
* Bit flags (see @FT_GASP_XXX), or @FT_GASP_NO_TABLE if there is no
|
||||
* `gasp' table in the face.
|
||||
*
|
||||
* @since:
|
||||
* 2.3.0
|
||||
*/
|
||||
FT_EXPORT( FT_Int )
|
||||
FT_Get_Gasp( FT_Face face,
|
||||
FT_UInt ppem );
|
||||
|
||||
/* */
|
||||
|
||||
|
||||
#endif /* FTGASP_H_ */
|
||||
|
||||
|
||||
/* END */
|
||||
605
include/fake/vtcs_root_vienna/freetype2/freetype/ftglyph.h
Normal file
605
include/fake/vtcs_root_vienna/freetype2/freetype/ftglyph.h
Normal file
@ -0,0 +1,605 @@
|
||||
/***************************************************************************/
|
||||
/* */
|
||||
/* ftglyph.h */
|
||||
/* */
|
||||
/* FreeType convenience functions to handle glyphs (specification). */
|
||||
/* */
|
||||
/* Copyright 1996-2016 by */
|
||||
/* David Turner, Robert Wilhelm, and Werner Lemberg. */
|
||||
/* */
|
||||
/* This file is part of the FreeType project, and may only be used, */
|
||||
/* modified, and distributed under the terms of the FreeType project */
|
||||
/* license, LICENSE.TXT. By continuing to use, modify, or distribute */
|
||||
/* this file you indicate that you have read the license and */
|
||||
/* understand and accept it fully. */
|
||||
/* */
|
||||
/***************************************************************************/
|
||||
|
||||
|
||||
/*************************************************************************/
|
||||
/* */
|
||||
/* This file contains the definition of several convenience functions */
|
||||
/* that can be used by client applications to easily retrieve glyph */
|
||||
/* bitmaps and outlines from a given face. */
|
||||
/* */
|
||||
/* These functions should be optional if you are writing a font server */
|
||||
/* or text layout engine on top of FreeType. However, they are pretty */
|
||||
/* handy for many other simple uses of the library. */
|
||||
/* */
|
||||
/*************************************************************************/
|
||||
|
||||
|
||||
#ifndef FTGLYPH_H_
|
||||
#define FTGLYPH_H_
|
||||
|
||||
|
||||
#include <ft2build.h>
|
||||
#include FT_FREETYPE_H
|
||||
|
||||
#ifdef FREETYPE_H
|
||||
#error "freetype.h of FreeType 1 has been loaded!"
|
||||
#error "Please fix the directory search order for header files"
|
||||
#error "so that freetype.h of FreeType 2 is found first."
|
||||
#endif
|
||||
|
||||
|
||||
FT_BEGIN_HEADER
|
||||
|
||||
|
||||
/*************************************************************************/
|
||||
/* */
|
||||
/* <Section> */
|
||||
/* glyph_management */
|
||||
/* */
|
||||
/* <Title> */
|
||||
/* Glyph Management */
|
||||
/* */
|
||||
/* <Abstract> */
|
||||
/* Generic interface to manage individual glyph data. */
|
||||
/* */
|
||||
/* <Description> */
|
||||
/* This section contains definitions used to manage glyph data */
|
||||
/* through generic FT_Glyph objects. Each of them can contain a */
|
||||
/* bitmap, a vector outline, or even images in other formats. */
|
||||
/* */
|
||||
/*************************************************************************/
|
||||
|
||||
|
||||
/* forward declaration to a private type */
|
||||
typedef struct FT_Glyph_Class_ FT_Glyph_Class;
|
||||
|
||||
|
||||
/*************************************************************************/
|
||||
/* */
|
||||
/* <Type> */
|
||||
/* FT_Glyph */
|
||||
/* */
|
||||
/* <Description> */
|
||||
/* Handle to an object used to model generic glyph images. It is a */
|
||||
/* pointer to the @FT_GlyphRec structure and can contain a glyph */
|
||||
/* bitmap or pointer. */
|
||||
/* */
|
||||
/* <Note> */
|
||||
/* Glyph objects are not owned by the library. You must thus release */
|
||||
/* them manually (through @FT_Done_Glyph) _before_ calling */
|
||||
/* @FT_Done_FreeType. */
|
||||
/* */
|
||||
typedef struct FT_GlyphRec_* FT_Glyph;
|
||||
|
||||
|
||||
/*************************************************************************/
|
||||
/* */
|
||||
/* <Struct> */
|
||||
/* FT_GlyphRec */
|
||||
/* */
|
||||
/* <Description> */
|
||||
/* The root glyph structure contains a given glyph image plus its */
|
||||
/* advance width in 16.16 fixed-point format. */
|
||||
/* */
|
||||
/* <Fields> */
|
||||
/* library :: A handle to the FreeType library object. */
|
||||
/* */
|
||||
/* clazz :: A pointer to the glyph's class. Private. */
|
||||
/* */
|
||||
/* format :: The format of the glyph's image. */
|
||||
/* */
|
||||
/* advance :: A 16.16 vector that gives the glyph's advance width. */
|
||||
/* */
|
||||
typedef struct FT_GlyphRec_
|
||||
{
|
||||
FT_Library library;
|
||||
const FT_Glyph_Class* clazz;
|
||||
FT_Glyph_Format format;
|
||||
FT_Vector advance;
|
||||
|
||||
} FT_GlyphRec;
|
||||
|
||||
|
||||
/*************************************************************************/
|
||||
/* */
|
||||
/* <Type> */
|
||||
/* FT_BitmapGlyph */
|
||||
/* */
|
||||
/* <Description> */
|
||||
/* A handle to an object used to model a bitmap glyph image. This is */
|
||||
/* a sub-class of @FT_Glyph, and a pointer to @FT_BitmapGlyphRec. */
|
||||
/* */
|
||||
typedef struct FT_BitmapGlyphRec_* FT_BitmapGlyph;
|
||||
|
||||
|
||||
/*************************************************************************/
|
||||
/* */
|
||||
/* <Struct> */
|
||||
/* FT_BitmapGlyphRec */
|
||||
/* */
|
||||
/* <Description> */
|
||||
/* A structure used for bitmap glyph images. This really is a */
|
||||
/* `sub-class' of @FT_GlyphRec. */
|
||||
/* */
|
||||
/* <Fields> */
|
||||
/* root :: The root @FT_Glyph fields. */
|
||||
/* */
|
||||
/* left :: The left-side bearing, i.e., the horizontal distance */
|
||||
/* from the current pen position to the left border of the */
|
||||
/* glyph bitmap. */
|
||||
/* */
|
||||
/* top :: The top-side bearing, i.e., the vertical distance from */
|
||||
/* the current pen position to the top border of the glyph */
|
||||
/* bitmap. This distance is positive for upwards~y! */
|
||||
/* */
|
||||
/* bitmap :: A descriptor for the bitmap. */
|
||||
/* */
|
||||
/* <Note> */
|
||||
/* You can typecast an @FT_Glyph to @FT_BitmapGlyph if you have */
|
||||
/* `glyph->format == FT_GLYPH_FORMAT_BITMAP'. This lets you access */
|
||||
/* the bitmap's contents easily. */
|
||||
/* */
|
||||
/* The corresponding pixel buffer is always owned by @FT_BitmapGlyph */
|
||||
/* and is thus created and destroyed with it. */
|
||||
/* */
|
||||
typedef struct FT_BitmapGlyphRec_
|
||||
{
|
||||
FT_GlyphRec root;
|
||||
FT_Int left;
|
||||
FT_Int top;
|
||||
FT_Bitmap bitmap;
|
||||
|
||||
} FT_BitmapGlyphRec;
|
||||
|
||||
|
||||
/*************************************************************************/
|
||||
/* */
|
||||
/* <Type> */
|
||||
/* FT_OutlineGlyph */
|
||||
/* */
|
||||
/* <Description> */
|
||||
/* A handle to an object used to model an outline glyph image. This */
|
||||
/* is a sub-class of @FT_Glyph, and a pointer to @FT_OutlineGlyphRec. */
|
||||
/* */
|
||||
typedef struct FT_OutlineGlyphRec_* FT_OutlineGlyph;
|
||||
|
||||
|
||||
/*************************************************************************/
|
||||
/* */
|
||||
/* <Struct> */
|
||||
/* FT_OutlineGlyphRec */
|
||||
/* */
|
||||
/* <Description> */
|
||||
/* A structure used for outline (vectorial) glyph images. This */
|
||||
/* really is a `sub-class' of @FT_GlyphRec. */
|
||||
/* */
|
||||
/* <Fields> */
|
||||
/* root :: The root @FT_Glyph fields. */
|
||||
/* */
|
||||
/* outline :: A descriptor for the outline. */
|
||||
/* */
|
||||
/* <Note> */
|
||||
/* You can typecast an @FT_Glyph to @FT_OutlineGlyph if you have */
|
||||
/* `glyph->format == FT_GLYPH_FORMAT_OUTLINE'. This lets you access */
|
||||
/* the outline's content easily. */
|
||||
/* */
|
||||
/* As the outline is extracted from a glyph slot, its coordinates are */
|
||||
/* expressed normally in 26.6 pixels, unless the flag */
|
||||
/* @FT_LOAD_NO_SCALE was used in @FT_Load_Glyph() or @FT_Load_Char(). */
|
||||
/* */
|
||||
/* The outline's tables are always owned by the object and are */
|
||||
/* destroyed with it. */
|
||||
/* */
|
||||
typedef struct FT_OutlineGlyphRec_
|
||||
{
|
||||
FT_GlyphRec root;
|
||||
FT_Outline outline;
|
||||
|
||||
} FT_OutlineGlyphRec;
|
||||
|
||||
|
||||
/*************************************************************************/
|
||||
/* */
|
||||
/* <Function> */
|
||||
/* FT_Get_Glyph */
|
||||
/* */
|
||||
/* <Description> */
|
||||
/* A function used to extract a glyph image from a slot. Note that */
|
||||
/* the created @FT_Glyph object must be released with @FT_Done_Glyph. */
|
||||
/* */
|
||||
/* <Input> */
|
||||
/* slot :: A handle to the source glyph slot. */
|
||||
/* */
|
||||
/* <Output> */
|
||||
/* aglyph :: A handle to the glyph object. */
|
||||
/* */
|
||||
/* <Return> */
|
||||
/* FreeType error code. 0~means success. */
|
||||
/* */
|
||||
FT_EXPORT( FT_Error )
|
||||
FT_Get_Glyph( FT_GlyphSlot slot,
|
||||
FT_Glyph *aglyph );
|
||||
|
||||
|
||||
/*************************************************************************/
|
||||
/* */
|
||||
/* <Function> */
|
||||
/* FT_Glyph_Copy */
|
||||
/* */
|
||||
/* <Description> */
|
||||
/* A function used to copy a glyph image. Note that the created */
|
||||
/* @FT_Glyph object must be released with @FT_Done_Glyph. */
|
||||
/* */
|
||||
/* <Input> */
|
||||
/* source :: A handle to the source glyph object. */
|
||||
/* */
|
||||
/* <Output> */
|
||||
/* target :: A handle to the target glyph object. 0~in case of */
|
||||
/* error. */
|
||||
/* */
|
||||
/* <Return> */
|
||||
/* FreeType error code. 0~means success. */
|
||||
/* */
|
||||
FT_EXPORT( FT_Error )
|
||||
FT_Glyph_Copy( FT_Glyph source,
|
||||
FT_Glyph *target );
|
||||
|
||||
|
||||
/*************************************************************************/
|
||||
/* */
|
||||
/* <Function> */
|
||||
/* FT_Glyph_Transform */
|
||||
/* */
|
||||
/* <Description> */
|
||||
/* Transform a glyph image if its format is scalable. */
|
||||
/* */
|
||||
/* <InOut> */
|
||||
/* glyph :: A handle to the target glyph object. */
|
||||
/* */
|
||||
/* <Input> */
|
||||
/* matrix :: A pointer to a 2x2 matrix to apply. */
|
||||
/* */
|
||||
/* delta :: A pointer to a 2d vector to apply. Coordinates are */
|
||||
/* expressed in 1/64th of a pixel. */
|
||||
/* */
|
||||
/* <Return> */
|
||||
/* FreeType error code (if not 0, the glyph format is not scalable). */
|
||||
/* */
|
||||
/* <Note> */
|
||||
/* The 2x2 transformation matrix is also applied to the glyph's */
|
||||
/* advance vector. */
|
||||
/* */
|
||||
FT_EXPORT( FT_Error )
|
||||
FT_Glyph_Transform( FT_Glyph glyph,
|
||||
FT_Matrix* matrix,
|
||||
FT_Vector* delta );
|
||||
|
||||
|
||||
/*************************************************************************/
|
||||
/* */
|
||||
/* <Enum> */
|
||||
/* FT_Glyph_BBox_Mode */
|
||||
/* */
|
||||
/* <Description> */
|
||||
/* The mode how the values of @FT_Glyph_Get_CBox are returned. */
|
||||
/* */
|
||||
/* <Values> */
|
||||
/* FT_GLYPH_BBOX_UNSCALED :: */
|
||||
/* Return unscaled font units. */
|
||||
/* */
|
||||
/* FT_GLYPH_BBOX_SUBPIXELS :: */
|
||||
/* Return unfitted 26.6 coordinates. */
|
||||
/* */
|
||||
/* FT_GLYPH_BBOX_GRIDFIT :: */
|
||||
/* Return grid-fitted 26.6 coordinates. */
|
||||
/* */
|
||||
/* FT_GLYPH_BBOX_TRUNCATE :: */
|
||||
/* Return coordinates in integer pixels. */
|
||||
/* */
|
||||
/* FT_GLYPH_BBOX_PIXELS :: */
|
||||
/* Return grid-fitted pixel coordinates. */
|
||||
/* */
|
||||
typedef enum FT_Glyph_BBox_Mode_
|
||||
{
|
||||
FT_GLYPH_BBOX_UNSCALED = 0,
|
||||
FT_GLYPH_BBOX_SUBPIXELS = 0,
|
||||
FT_GLYPH_BBOX_GRIDFIT = 1,
|
||||
FT_GLYPH_BBOX_TRUNCATE = 2,
|
||||
FT_GLYPH_BBOX_PIXELS = 3
|
||||
|
||||
} FT_Glyph_BBox_Mode;
|
||||
|
||||
|
||||
/* these constants are deprecated; use the corresponding */
|
||||
/* `FT_Glyph_BBox_Mode' values instead */
|
||||
#define ft_glyph_bbox_unscaled FT_GLYPH_BBOX_UNSCALED
|
||||
#define ft_glyph_bbox_subpixels FT_GLYPH_BBOX_SUBPIXELS
|
||||
#define ft_glyph_bbox_gridfit FT_GLYPH_BBOX_GRIDFIT
|
||||
#define ft_glyph_bbox_truncate FT_GLYPH_BBOX_TRUNCATE
|
||||
#define ft_glyph_bbox_pixels FT_GLYPH_BBOX_PIXELS
|
||||
|
||||
|
||||
/*************************************************************************/
|
||||
/* */
|
||||
/* <Function> */
|
||||
/* FT_Glyph_Get_CBox */
|
||||
/* */
|
||||
/* <Description> */
|
||||
/* Return a glyph's `control box'. The control box encloses all the */
|
||||
/* outline's points, including Bézier control points. Though it */
|
||||
/* coincides with the exact bounding box for most glyphs, it can be */
|
||||
/* slightly larger in some situations (like when rotating an outline */
|
||||
/* that contains Bézier outside arcs). */
|
||||
/* */
|
||||
/* Computing the control box is very fast, while getting the bounding */
|
||||
/* box can take much more time as it needs to walk over all segments */
|
||||
/* and arcs in the outline. To get the latter, you can use the */
|
||||
/* `ftbbox' component, which is dedicated to this single task. */
|
||||
/* */
|
||||
/* <Input> */
|
||||
/* glyph :: A handle to the source glyph object. */
|
||||
/* */
|
||||
/* mode :: The mode that indicates how to interpret the returned */
|
||||
/* bounding box values. */
|
||||
/* */
|
||||
/* <Output> */
|
||||
/* acbox :: The glyph coordinate bounding box. Coordinates are */
|
||||
/* expressed in 1/64th of pixels if it is grid-fitted. */
|
||||
/* */
|
||||
/* <Note> */
|
||||
/* Coordinates are relative to the glyph origin, using the y~upwards */
|
||||
/* convention. */
|
||||
/* */
|
||||
/* If the glyph has been loaded with @FT_LOAD_NO_SCALE, `bbox_mode' */
|
||||
/* must be set to @FT_GLYPH_BBOX_UNSCALED to get unscaled font */
|
||||
/* units in 26.6 pixel format. The value @FT_GLYPH_BBOX_SUBPIXELS */
|
||||
/* is another name for this constant. */
|
||||
/* */
|
||||
/* If the font is tricky and the glyph has been loaded with */
|
||||
/* @FT_LOAD_NO_SCALE, the resulting CBox is meaningless. To get */
|
||||
/* reasonable values for the CBox it is necessary to load the glyph */
|
||||
/* at a large ppem value (so that the hinting instructions can */
|
||||
/* properly shift and scale the subglyphs), then extracting the CBox, */
|
||||
/* which can be eventually converted back to font units. */
|
||||
/* */
|
||||
/* Note that the maximum coordinates are exclusive, which means that */
|
||||
/* one can compute the width and height of the glyph image (be it in */
|
||||
/* integer or 26.6 pixels) as: */
|
||||
/* */
|
||||
/* { */
|
||||
/* width = bbox.xMax - bbox.xMin; */
|
||||
/* height = bbox.yMax - bbox.yMin; */
|
||||
/* } */
|
||||
/* */
|
||||
/* Note also that for 26.6 coordinates, if `bbox_mode' is set to */
|
||||
/* @FT_GLYPH_BBOX_GRIDFIT, the coordinates will also be grid-fitted, */
|
||||
/* which corresponds to: */
|
||||
/* */
|
||||
/* { */
|
||||
/* bbox.xMin = FLOOR(bbox.xMin); */
|
||||
/* bbox.yMin = FLOOR(bbox.yMin); */
|
||||
/* bbox.xMax = CEILING(bbox.xMax); */
|
||||
/* bbox.yMax = CEILING(bbox.yMax); */
|
||||
/* } */
|
||||
/* */
|
||||
/* To get the bbox in pixel coordinates, set `bbox_mode' to */
|
||||
/* @FT_GLYPH_BBOX_TRUNCATE. */
|
||||
/* */
|
||||
/* To get the bbox in grid-fitted pixel coordinates, set `bbox_mode' */
|
||||
/* to @FT_GLYPH_BBOX_PIXELS. */
|
||||
/* */
|
||||
FT_EXPORT( void )
|
||||
FT_Glyph_Get_CBox( FT_Glyph glyph,
|
||||
FT_UInt bbox_mode,
|
||||
FT_BBox *acbox );
|
||||
|
||||
|
||||
/*************************************************************************/
|
||||
/* */
|
||||
/* <Function> */
|
||||
/* FT_Glyph_To_Bitmap */
|
||||
/* */
|
||||
/* <Description> */
|
||||
/* Convert a given glyph object to a bitmap glyph object. */
|
||||
/* */
|
||||
/* <InOut> */
|
||||
/* the_glyph :: A pointer to a handle to the target glyph. */
|
||||
/* */
|
||||
/* <Input> */
|
||||
/* render_mode :: An enumeration that describes how the data is */
|
||||
/* rendered. */
|
||||
/* */
|
||||
/* origin :: A pointer to a vector used to translate the glyph */
|
||||
/* image before rendering. Can be~0 (if no */
|
||||
/* translation). The origin is expressed in */
|
||||
/* 26.6 pixels. */
|
||||
/* */
|
||||
/* destroy :: A boolean that indicates that the original glyph */
|
||||
/* image should be destroyed by this function. It is */
|
||||
/* never destroyed in case of error. */
|
||||
/* */
|
||||
/* <Return> */
|
||||
/* FreeType error code. 0~means success. */
|
||||
/* */
|
||||
/* <Note> */
|
||||
/* This function does nothing if the glyph format isn't scalable. */
|
||||
/* */
|
||||
/* The glyph image is translated with the `origin' vector before */
|
||||
/* rendering. */
|
||||
/* */
|
||||
/* The first parameter is a pointer to an @FT_Glyph handle, that will */
|
||||
/* be _replaced_ by this function (with newly allocated data). */
|
||||
/* Typically, you would use (omitting error handling): */
|
||||
/* */
|
||||
/* */
|
||||
/* { */
|
||||
/* FT_Glyph glyph; */
|
||||
/* FT_BitmapGlyph glyph_bitmap; */
|
||||
/* */
|
||||
/* */
|
||||
/* // load glyph */
|
||||
/* error = FT_Load_Char( face, glyph_index, FT_LOAD_DEFAUT ); */
|
||||
/* */
|
||||
/* // extract glyph image */
|
||||
/* error = FT_Get_Glyph( face->glyph, &glyph ); */
|
||||
/* */
|
||||
/* // convert to a bitmap (default render mode + destroying old) */
|
||||
/* if ( glyph->format != FT_GLYPH_FORMAT_BITMAP ) */
|
||||
/* { */
|
||||
/* error = FT_Glyph_To_Bitmap( &glyph, FT_RENDER_MODE_NORMAL, */
|
||||
/* 0, 1 ); */
|
||||
/* if ( error ) // `glyph' unchanged */
|
||||
/* ... */
|
||||
/* } */
|
||||
/* */
|
||||
/* // access bitmap content by typecasting */
|
||||
/* glyph_bitmap = (FT_BitmapGlyph)glyph; */
|
||||
/* */
|
||||
/* // do funny stuff with it, like blitting/drawing */
|
||||
/* ... */
|
||||
/* */
|
||||
/* // discard glyph image (bitmap or not) */
|
||||
/* FT_Done_Glyph( glyph ); */
|
||||
/* } */
|
||||
/* */
|
||||
/* */
|
||||
/* Here another example, again without error handling: */
|
||||
/* */
|
||||
/* */
|
||||
/* { */
|
||||
/* FT_Glyph glyphs[MAX_GLYPHS] */
|
||||
/* */
|
||||
/* */
|
||||
/* ... */
|
||||
/* */
|
||||
/* for ( idx = 0; i < MAX_GLYPHS; i++ ) */
|
||||
/* error = FT_Load_Glyph( face, idx, FT_LOAD_DEFAULT ) || */
|
||||
/* FT_Get_Glyph ( face->glyph, &glyph[idx] ); */
|
||||
/* */
|
||||
/* ... */
|
||||
/* */
|
||||
/* for ( idx = 0; i < MAX_GLYPHS; i++ ) */
|
||||
/* { */
|
||||
/* FT_Glyph bitmap = glyphs[idx]; */
|
||||
/* */
|
||||
/* */
|
||||
/* ... */
|
||||
/* */
|
||||
/* // after this call, `bitmap' no longer points into */
|
||||
/* // the `glyphs' array (and the old value isn't destroyed) */
|
||||
/* FT_Glyph_To_Bitmap( &bitmap, FT_RENDER_MODE_MONO, 0, 0 ); */
|
||||
/* */
|
||||
/* ... */
|
||||
/* */
|
||||
/* FT_Done_Glyph( bitmap ); */
|
||||
/* } */
|
||||
/* */
|
||||
/* ... */
|
||||
/* */
|
||||
/* for ( idx = 0; i < MAX_GLYPHS; i++ ) */
|
||||
/* FT_Done_Glyph( glyphs[idx] ); */
|
||||
/* } */
|
||||
/* */
|
||||
FT_EXPORT( FT_Error )
|
||||
FT_Glyph_To_Bitmap( FT_Glyph* the_glyph,
|
||||
FT_Render_Mode render_mode,
|
||||
FT_Vector* origin,
|
||||
FT_Bool destroy );
|
||||
|
||||
|
||||
/*************************************************************************/
|
||||
/* */
|
||||
/* <Function> */
|
||||
/* FT_Done_Glyph */
|
||||
/* */
|
||||
/* <Description> */
|
||||
/* Destroy a given glyph. */
|
||||
/* */
|
||||
/* <Input> */
|
||||
/* glyph :: A handle to the target glyph object. */
|
||||
/* */
|
||||
FT_EXPORT( void )
|
||||
FT_Done_Glyph( FT_Glyph glyph );
|
||||
|
||||
/* */
|
||||
|
||||
|
||||
/* other helpful functions */
|
||||
|
||||
/*************************************************************************/
|
||||
/* */
|
||||
/* <Section> */
|
||||
/* computations */
|
||||
/* */
|
||||
/*************************************************************************/
|
||||
|
||||
|
||||
/*************************************************************************/
|
||||
/* */
|
||||
/* <Function> */
|
||||
/* FT_Matrix_Multiply */
|
||||
/* */
|
||||
/* <Description> */
|
||||
/* Perform the matrix operation `b = a*b'. */
|
||||
/* */
|
||||
/* <Input> */
|
||||
/* a :: A pointer to matrix `a'. */
|
||||
/* */
|
||||
/* <InOut> */
|
||||
/* b :: A pointer to matrix `b'. */
|
||||
/* */
|
||||
/* <Note> */
|
||||
/* The result is undefined if either `a' or `b' is zero. */
|
||||
/* */
|
||||
FT_EXPORT( void )
|
||||
FT_Matrix_Multiply( const FT_Matrix* a,
|
||||
FT_Matrix* b );
|
||||
|
||||
|
||||
/*************************************************************************/
|
||||
/* */
|
||||
/* <Function> */
|
||||
/* FT_Matrix_Invert */
|
||||
/* */
|
||||
/* <Description> */
|
||||
/* Invert a 2x2 matrix. Return an error if it can't be inverted. */
|
||||
/* */
|
||||
/* <InOut> */
|
||||
/* matrix :: A pointer to the target matrix. Remains untouched in */
|
||||
/* case of error. */
|
||||
/* */
|
||||
/* <Return> */
|
||||
/* FreeType error code. 0~means success. */
|
||||
/* */
|
||||
FT_EXPORT( FT_Error )
|
||||
FT_Matrix_Invert( FT_Matrix* matrix );
|
||||
|
||||
/* */
|
||||
|
||||
|
||||
FT_END_HEADER
|
||||
|
||||
#endif /* FTGLYPH_H_ */
|
||||
|
||||
|
||||
/* END */
|
||||
|
||||
|
||||
/* Local Variables: */
|
||||
/* coding: utf-8 */
|
||||
/* End: */
|
||||
357
include/fake/vtcs_root_vienna/freetype2/freetype/ftgxval.h
Normal file
357
include/fake/vtcs_root_vienna/freetype2/freetype/ftgxval.h
Normal file
@ -0,0 +1,357 @@
|
||||
/***************************************************************************/
|
||||
/* */
|
||||
/* ftgxval.h */
|
||||
/* */
|
||||
/* FreeType API for validating TrueTypeGX/AAT tables (specification). */
|
||||
/* */
|
||||
/* Copyright 2004-2016 by */
|
||||
/* Masatake YAMATO, Redhat K.K, */
|
||||
/* David Turner, Robert Wilhelm, and Werner Lemberg. */
|
||||
/* */
|
||||
/* This file is part of the FreeType project, and may only be used, */
|
||||
/* modified, and distributed under the terms of the FreeType project */
|
||||
/* license, LICENSE.TXT. By continuing to use, modify, or distribute */
|
||||
/* this file you indicate that you have read the license and */
|
||||
/* understand and accept it fully. */
|
||||
/* */
|
||||
/***************************************************************************/
|
||||
|
||||
/***************************************************************************/
|
||||
/* */
|
||||
/* gxvalid is derived from both gxlayout module and otvalid module. */
|
||||
/* Development of gxlayout is supported by the Information-technology */
|
||||
/* Promotion Agency(IPA), Japan. */
|
||||
/* */
|
||||
/***************************************************************************/
|
||||
|
||||
|
||||
#ifndef FTGXVAL_H_
|
||||
#define FTGXVAL_H_
|
||||
|
||||
#include <ft2build.h>
|
||||
#include FT_FREETYPE_H
|
||||
|
||||
#ifdef FREETYPE_H
|
||||
#error "freetype.h of FreeType 1 has been loaded!"
|
||||
#error "Please fix the directory search order for header files"
|
||||
#error "so that freetype.h of FreeType 2 is found first."
|
||||
#endif
|
||||
|
||||
|
||||
FT_BEGIN_HEADER
|
||||
|
||||
|
||||
/*************************************************************************/
|
||||
/* */
|
||||
/* <Section> */
|
||||
/* gx_validation */
|
||||
/* */
|
||||
/* <Title> */
|
||||
/* TrueTypeGX/AAT Validation */
|
||||
/* */
|
||||
/* <Abstract> */
|
||||
/* An API to validate TrueTypeGX/AAT tables. */
|
||||
/* */
|
||||
/* <Description> */
|
||||
/* This section contains the declaration of functions to validate */
|
||||
/* some TrueTypeGX tables (feat, mort, morx, bsln, just, kern, opbd, */
|
||||
/* trak, prop, lcar). */
|
||||
/* */
|
||||
/* <Order> */
|
||||
/* FT_TrueTypeGX_Validate */
|
||||
/* FT_TrueTypeGX_Free */
|
||||
/* */
|
||||
/* FT_ClassicKern_Validate */
|
||||
/* FT_ClassicKern_Free */
|
||||
/* */
|
||||
/* FT_VALIDATE_GX_LENGTH */
|
||||
/* FT_VALIDATE_GXXXX */
|
||||
/* FT_VALIDATE_CKERNXXX */
|
||||
/* */
|
||||
/*************************************************************************/
|
||||
|
||||
/*************************************************************************/
|
||||
/* */
|
||||
/* */
|
||||
/* Warning: Use FT_VALIDATE_XXX to validate a table. */
|
||||
/* Following definitions are for gxvalid developers. */
|
||||
/* */
|
||||
/* */
|
||||
/*************************************************************************/
|
||||
|
||||
#define FT_VALIDATE_feat_INDEX 0
|
||||
#define FT_VALIDATE_mort_INDEX 1
|
||||
#define FT_VALIDATE_morx_INDEX 2
|
||||
#define FT_VALIDATE_bsln_INDEX 3
|
||||
#define FT_VALIDATE_just_INDEX 4
|
||||
#define FT_VALIDATE_kern_INDEX 5
|
||||
#define FT_VALIDATE_opbd_INDEX 6
|
||||
#define FT_VALIDATE_trak_INDEX 7
|
||||
#define FT_VALIDATE_prop_INDEX 8
|
||||
#define FT_VALIDATE_lcar_INDEX 9
|
||||
#define FT_VALIDATE_GX_LAST_INDEX FT_VALIDATE_lcar_INDEX
|
||||
|
||||
|
||||
/*************************************************************************
|
||||
*
|
||||
* @macro:
|
||||
* FT_VALIDATE_GX_LENGTH
|
||||
*
|
||||
* @description:
|
||||
* The number of tables checked in this module. Use it as a parameter
|
||||
* for the `table-length' argument of function @FT_TrueTypeGX_Validate.
|
||||
*/
|
||||
#define FT_VALIDATE_GX_LENGTH (FT_VALIDATE_GX_LAST_INDEX + 1)
|
||||
|
||||
/* */
|
||||
|
||||
/* Up to 0x1000 is used by otvalid.
|
||||
Ox2xxx is reserved for feature OT extension. */
|
||||
#define FT_VALIDATE_GX_START 0x4000
|
||||
#define FT_VALIDATE_GX_BITFIELD( tag ) \
|
||||
( FT_VALIDATE_GX_START << FT_VALIDATE_##tag##_INDEX )
|
||||
|
||||
|
||||
/**********************************************************************
|
||||
*
|
||||
* @enum:
|
||||
* FT_VALIDATE_GXXXX
|
||||
*
|
||||
* @description:
|
||||
* A list of bit-field constants used with @FT_TrueTypeGX_Validate to
|
||||
* indicate which TrueTypeGX/AAT Type tables should be validated.
|
||||
*
|
||||
* @values:
|
||||
* FT_VALIDATE_feat ::
|
||||
* Validate `feat' table.
|
||||
*
|
||||
* FT_VALIDATE_mort ::
|
||||
* Validate `mort' table.
|
||||
*
|
||||
* FT_VALIDATE_morx ::
|
||||
* Validate `morx' table.
|
||||
*
|
||||
* FT_VALIDATE_bsln ::
|
||||
* Validate `bsln' table.
|
||||
*
|
||||
* FT_VALIDATE_just ::
|
||||
* Validate `just' table.
|
||||
*
|
||||
* FT_VALIDATE_kern ::
|
||||
* Validate `kern' table.
|
||||
*
|
||||
* FT_VALIDATE_opbd ::
|
||||
* Validate `opbd' table.
|
||||
*
|
||||
* FT_VALIDATE_trak ::
|
||||
* Validate `trak' table.
|
||||
*
|
||||
* FT_VALIDATE_prop ::
|
||||
* Validate `prop' table.
|
||||
*
|
||||
* FT_VALIDATE_lcar ::
|
||||
* Validate `lcar' table.
|
||||
*
|
||||
* FT_VALIDATE_GX ::
|
||||
* Validate all TrueTypeGX tables (feat, mort, morx, bsln, just, kern,
|
||||
* opbd, trak, prop and lcar).
|
||||
*
|
||||
*/
|
||||
|
||||
#define FT_VALIDATE_feat FT_VALIDATE_GX_BITFIELD( feat )
|
||||
#define FT_VALIDATE_mort FT_VALIDATE_GX_BITFIELD( mort )
|
||||
#define FT_VALIDATE_morx FT_VALIDATE_GX_BITFIELD( morx )
|
||||
#define FT_VALIDATE_bsln FT_VALIDATE_GX_BITFIELD( bsln )
|
||||
#define FT_VALIDATE_just FT_VALIDATE_GX_BITFIELD( just )
|
||||
#define FT_VALIDATE_kern FT_VALIDATE_GX_BITFIELD( kern )
|
||||
#define FT_VALIDATE_opbd FT_VALIDATE_GX_BITFIELD( opbd )
|
||||
#define FT_VALIDATE_trak FT_VALIDATE_GX_BITFIELD( trak )
|
||||
#define FT_VALIDATE_prop FT_VALIDATE_GX_BITFIELD( prop )
|
||||
#define FT_VALIDATE_lcar FT_VALIDATE_GX_BITFIELD( lcar )
|
||||
|
||||
#define FT_VALIDATE_GX ( FT_VALIDATE_feat | \
|
||||
FT_VALIDATE_mort | \
|
||||
FT_VALIDATE_morx | \
|
||||
FT_VALIDATE_bsln | \
|
||||
FT_VALIDATE_just | \
|
||||
FT_VALIDATE_kern | \
|
||||
FT_VALIDATE_opbd | \
|
||||
FT_VALIDATE_trak | \
|
||||
FT_VALIDATE_prop | \
|
||||
FT_VALIDATE_lcar )
|
||||
|
||||
|
||||
/**********************************************************************
|
||||
*
|
||||
* @function:
|
||||
* FT_TrueTypeGX_Validate
|
||||
*
|
||||
* @description:
|
||||
* Validate various TrueTypeGX tables to assure that all offsets and
|
||||
* indices are valid. The idea is that a higher-level library that
|
||||
* actually does the text layout can access those tables without
|
||||
* error checking (which can be quite time consuming).
|
||||
*
|
||||
* @input:
|
||||
* face ::
|
||||
* A handle to the input face.
|
||||
*
|
||||
* validation_flags ::
|
||||
* A bit field that specifies the tables to be validated. See
|
||||
* @FT_VALIDATE_GXXXX for possible values.
|
||||
*
|
||||
* table_length ::
|
||||
* The size of the `tables' array. Normally, @FT_VALIDATE_GX_LENGTH
|
||||
* should be passed.
|
||||
*
|
||||
* @output:
|
||||
* tables ::
|
||||
* The array where all validated sfnt tables are stored.
|
||||
* The array itself must be allocated by a client.
|
||||
*
|
||||
* @return:
|
||||
* FreeType error code. 0~means success.
|
||||
*
|
||||
* @note:
|
||||
* This function only works with TrueTypeGX fonts, returning an error
|
||||
* otherwise.
|
||||
*
|
||||
* After use, the application should deallocate the buffers pointed to by
|
||||
* each `tables' element, by calling @FT_TrueTypeGX_Free. A NULL value
|
||||
* indicates that the table either doesn't exist in the font, the
|
||||
* application hasn't asked for validation, or the validator doesn't have
|
||||
* the ability to validate the sfnt table.
|
||||
*/
|
||||
FT_EXPORT( FT_Error )
|
||||
FT_TrueTypeGX_Validate( FT_Face face,
|
||||
FT_UInt validation_flags,
|
||||
FT_Bytes tables[FT_VALIDATE_GX_LENGTH],
|
||||
FT_UInt table_length );
|
||||
|
||||
|
||||
/**********************************************************************
|
||||
*
|
||||
* @function:
|
||||
* FT_TrueTypeGX_Free
|
||||
*
|
||||
* @description:
|
||||
* Free the buffer allocated by TrueTypeGX validator.
|
||||
*
|
||||
* @input:
|
||||
* face ::
|
||||
* A handle to the input face.
|
||||
*
|
||||
* table ::
|
||||
* The pointer to the buffer allocated by
|
||||
* @FT_TrueTypeGX_Validate.
|
||||
*
|
||||
* @note:
|
||||
* This function must be used to free the buffer allocated by
|
||||
* @FT_TrueTypeGX_Validate only.
|
||||
*/
|
||||
FT_EXPORT( void )
|
||||
FT_TrueTypeGX_Free( FT_Face face,
|
||||
FT_Bytes table );
|
||||
|
||||
|
||||
/**********************************************************************
|
||||
*
|
||||
* @enum:
|
||||
* FT_VALIDATE_CKERNXXX
|
||||
*
|
||||
* @description:
|
||||
* A list of bit-field constants used with @FT_ClassicKern_Validate
|
||||
* to indicate the classic kern dialect or dialects. If the selected
|
||||
* type doesn't fit, @FT_ClassicKern_Validate regards the table as
|
||||
* invalid.
|
||||
*
|
||||
* @values:
|
||||
* FT_VALIDATE_MS ::
|
||||
* Handle the `kern' table as a classic Microsoft kern table.
|
||||
*
|
||||
* FT_VALIDATE_APPLE ::
|
||||
* Handle the `kern' table as a classic Apple kern table.
|
||||
*
|
||||
* FT_VALIDATE_CKERN ::
|
||||
* Handle the `kern' as either classic Apple or Microsoft kern table.
|
||||
*/
|
||||
#define FT_VALIDATE_MS ( FT_VALIDATE_GX_START << 0 )
|
||||
#define FT_VALIDATE_APPLE ( FT_VALIDATE_GX_START << 1 )
|
||||
|
||||
#define FT_VALIDATE_CKERN ( FT_VALIDATE_MS | FT_VALIDATE_APPLE )
|
||||
|
||||
|
||||
/**********************************************************************
|
||||
*
|
||||
* @function:
|
||||
* FT_ClassicKern_Validate
|
||||
*
|
||||
* @description:
|
||||
* Validate classic (16-bit format) kern table to assure that the offsets
|
||||
* and indices are valid. The idea is that a higher-level library that
|
||||
* actually does the text layout can access those tables without error
|
||||
* checking (which can be quite time consuming).
|
||||
*
|
||||
* The `kern' table validator in @FT_TrueTypeGX_Validate deals with both
|
||||
* the new 32-bit format and the classic 16-bit format, while
|
||||
* FT_ClassicKern_Validate only supports the classic 16-bit format.
|
||||
*
|
||||
* @input:
|
||||
* face ::
|
||||
* A handle to the input face.
|
||||
*
|
||||
* validation_flags ::
|
||||
* A bit field that specifies the dialect to be validated. See
|
||||
* @FT_VALIDATE_CKERNXXX for possible values.
|
||||
*
|
||||
* @output:
|
||||
* ckern_table ::
|
||||
* A pointer to the kern table.
|
||||
*
|
||||
* @return:
|
||||
* FreeType error code. 0~means success.
|
||||
*
|
||||
* @note:
|
||||
* After use, the application should deallocate the buffers pointed to by
|
||||
* `ckern_table', by calling @FT_ClassicKern_Free. A NULL value
|
||||
* indicates that the table doesn't exist in the font.
|
||||
*/
|
||||
FT_EXPORT( FT_Error )
|
||||
FT_ClassicKern_Validate( FT_Face face,
|
||||
FT_UInt validation_flags,
|
||||
FT_Bytes *ckern_table );
|
||||
|
||||
|
||||
/**********************************************************************
|
||||
*
|
||||
* @function:
|
||||
* FT_ClassicKern_Free
|
||||
*
|
||||
* @description:
|
||||
* Free the buffer allocated by classic Kern validator.
|
||||
*
|
||||
* @input:
|
||||
* face ::
|
||||
* A handle to the input face.
|
||||
*
|
||||
* table ::
|
||||
* The pointer to the buffer that is allocated by
|
||||
* @FT_ClassicKern_Validate.
|
||||
*
|
||||
* @note:
|
||||
* This function must be used to free the buffer allocated by
|
||||
* @FT_ClassicKern_Validate only.
|
||||
*/
|
||||
FT_EXPORT( void )
|
||||
FT_ClassicKern_Free( FT_Face face,
|
||||
FT_Bytes table );
|
||||
|
||||
/* */
|
||||
|
||||
|
||||
FT_END_HEADER
|
||||
|
||||
#endif /* FTGXVAL_H_ */
|
||||
|
||||
|
||||
/* END */
|
||||
148
include/fake/vtcs_root_vienna/freetype2/freetype/ftgzip.h
Normal file
148
include/fake/vtcs_root_vienna/freetype2/freetype/ftgzip.h
Normal file
@ -0,0 +1,148 @@
|
||||
/***************************************************************************/
|
||||
/* */
|
||||
/* ftgzip.h */
|
||||
/* */
|
||||
/* Gzip-compressed stream support. */
|
||||
/* */
|
||||
/* Copyright 2002-2016 by */
|
||||
/* David Turner, Robert Wilhelm, and Werner Lemberg. */
|
||||
/* */
|
||||
/* This file is part of the FreeType project, and may only be used, */
|
||||
/* modified, and distributed under the terms of the FreeType project */
|
||||
/* license, LICENSE.TXT. By continuing to use, modify, or distribute */
|
||||
/* this file you indicate that you have read the license and */
|
||||
/* understand and accept it fully. */
|
||||
/* */
|
||||
/***************************************************************************/
|
||||
|
||||
|
||||
#ifndef FTGZIP_H_
|
||||
#define FTGZIP_H_
|
||||
|
||||
#include <ft2build.h>
|
||||
#include FT_FREETYPE_H
|
||||
|
||||
#ifdef FREETYPE_H
|
||||
#error "freetype.h of FreeType 1 has been loaded!"
|
||||
#error "Please fix the directory search order for header files"
|
||||
#error "so that freetype.h of FreeType 2 is found first."
|
||||
#endif
|
||||
|
||||
|
||||
FT_BEGIN_HEADER
|
||||
|
||||
/*************************************************************************/
|
||||
/* */
|
||||
/* <Section> */
|
||||
/* gzip */
|
||||
/* */
|
||||
/* <Title> */
|
||||
/* GZIP Streams */
|
||||
/* */
|
||||
/* <Abstract> */
|
||||
/* Using gzip-compressed font files. */
|
||||
/* */
|
||||
/* <Description> */
|
||||
/* This section contains the declaration of Gzip-specific functions. */
|
||||
/* */
|
||||
/*************************************************************************/
|
||||
|
||||
|
||||
/************************************************************************
|
||||
*
|
||||
* @function:
|
||||
* FT_Stream_OpenGzip
|
||||
*
|
||||
* @description:
|
||||
* Open a new stream to parse gzip-compressed font files. This is
|
||||
* mainly used to support the compressed `*.pcf.gz' fonts that come
|
||||
* with XFree86.
|
||||
*
|
||||
* @input:
|
||||
* stream ::
|
||||
* The target embedding stream.
|
||||
*
|
||||
* source ::
|
||||
* The source stream.
|
||||
*
|
||||
* @return:
|
||||
* FreeType error code. 0~means success.
|
||||
*
|
||||
* @note:
|
||||
* The source stream must be opened _before_ calling this function.
|
||||
*
|
||||
* Calling the internal function `FT_Stream_Close' on the new stream will
|
||||
* *not* call `FT_Stream_Close' on the source stream. None of the stream
|
||||
* objects will be released to the heap.
|
||||
*
|
||||
* The stream implementation is very basic and resets the decompression
|
||||
* process each time seeking backwards is needed within the stream.
|
||||
*
|
||||
* In certain builds of the library, gzip compression recognition is
|
||||
* automatically handled when calling @FT_New_Face or @FT_Open_Face.
|
||||
* This means that if no font driver is capable of handling the raw
|
||||
* compressed file, the library will try to open a gzipped stream from
|
||||
* it and re-open the face with it.
|
||||
*
|
||||
* This function may return `FT_Err_Unimplemented_Feature' if your build
|
||||
* of FreeType was not compiled with zlib support.
|
||||
*/
|
||||
FT_EXPORT( FT_Error )
|
||||
FT_Stream_OpenGzip( FT_Stream stream,
|
||||
FT_Stream source );
|
||||
|
||||
|
||||
/************************************************************************
|
||||
*
|
||||
* @function:
|
||||
* FT_Gzip_Uncompress
|
||||
*
|
||||
* @description:
|
||||
* Decompress a zipped input buffer into an output buffer. This function
|
||||
* is modeled after zlib's `uncompress' function.
|
||||
*
|
||||
* @input:
|
||||
* memory ::
|
||||
* A FreeType memory handle.
|
||||
*
|
||||
* input ::
|
||||
* The input buffer.
|
||||
*
|
||||
* input_len ::
|
||||
* The length of the input buffer.
|
||||
*
|
||||
* @output:
|
||||
* output::
|
||||
* The output buffer.
|
||||
*
|
||||
* @inout:
|
||||
* output_len ::
|
||||
* Before calling the function, this is the total size of the output
|
||||
* buffer, which must be large enough to hold the entire uncompressed
|
||||
* data (so the size of the uncompressed data must be known in
|
||||
* advance). After calling the function, `output_len' is the size of
|
||||
* the used data in `output'.
|
||||
*
|
||||
* @return:
|
||||
* FreeType error code. 0~means success.
|
||||
*
|
||||
* @note:
|
||||
* This function may return `FT_Err_Unimplemented_Feature' if your build
|
||||
* of FreeType was not compiled with zlib support.
|
||||
*/
|
||||
FT_EXPORT( FT_Error )
|
||||
FT_Gzip_Uncompress( FT_Memory memory,
|
||||
FT_Byte* output,
|
||||
FT_ULong* output_len,
|
||||
const FT_Byte* input,
|
||||
FT_ULong input_len );
|
||||
|
||||
/* */
|
||||
|
||||
|
||||
FT_END_HEADER
|
||||
|
||||
#endif /* FTGZIP_H_ */
|
||||
|
||||
|
||||
/* END */
|
||||
1205
include/fake/vtcs_root_vienna/freetype2/freetype/ftimage.h
Normal file
1205
include/fake/vtcs_root_vienna/freetype2/freetype/ftimage.h
Normal file
File diff suppressed because it is too large
Load Diff
354
include/fake/vtcs_root_vienna/freetype2/freetype/ftincrem.h
Normal file
354
include/fake/vtcs_root_vienna/freetype2/freetype/ftincrem.h
Normal file
@ -0,0 +1,354 @@
|
||||
/***************************************************************************/
|
||||
/* */
|
||||
/* ftincrem.h */
|
||||
/* */
|
||||
/* FreeType incremental loading (specification). */
|
||||
/* */
|
||||
/* Copyright 2002-2016 by */
|
||||
/* David Turner, Robert Wilhelm, and Werner Lemberg. */
|
||||
/* */
|
||||
/* This file is part of the FreeType project, and may only be used, */
|
||||
/* modified, and distributed under the terms of the FreeType project */
|
||||
/* license, LICENSE.TXT. By continuing to use, modify, or distribute */
|
||||
/* this file you indicate that you have read the license and */
|
||||
/* understand and accept it fully. */
|
||||
/* */
|
||||
/***************************************************************************/
|
||||
|
||||
|
||||
#ifndef FTINCREM_H_
|
||||
#define FTINCREM_H_
|
||||
|
||||
#include <ft2build.h>
|
||||
#include FT_FREETYPE_H
|
||||
|
||||
#ifdef FREETYPE_H
|
||||
#error "freetype.h of FreeType 1 has been loaded!"
|
||||
#error "Please fix the directory search order for header files"
|
||||
#error "so that freetype.h of FreeType 2 is found first."
|
||||
#endif
|
||||
|
||||
|
||||
FT_BEGIN_HEADER
|
||||
|
||||
/***************************************************************************
|
||||
*
|
||||
* @section:
|
||||
* incremental
|
||||
*
|
||||
* @title:
|
||||
* Incremental Loading
|
||||
*
|
||||
* @abstract:
|
||||
* Custom Glyph Loading.
|
||||
*
|
||||
* @description:
|
||||
* This section contains various functions used to perform so-called
|
||||
* `incremental' glyph loading. This is a mode where all glyphs loaded
|
||||
* from a given @FT_Face are provided by the client application.
|
||||
*
|
||||
* Apart from that, all other tables are loaded normally from the font
|
||||
* file. This mode is useful when FreeType is used within another
|
||||
* engine, e.g., a PostScript Imaging Processor.
|
||||
*
|
||||
* To enable this mode, you must use @FT_Open_Face, passing an
|
||||
* @FT_Parameter with the @FT_PARAM_TAG_INCREMENTAL tag and an
|
||||
* @FT_Incremental_Interface value. See the comments for
|
||||
* @FT_Incremental_InterfaceRec for an example.
|
||||
*
|
||||
*/
|
||||
|
||||
|
||||
/***************************************************************************
|
||||
*
|
||||
* @type:
|
||||
* FT_Incremental
|
||||
*
|
||||
* @description:
|
||||
* An opaque type describing a user-provided object used to implement
|
||||
* `incremental' glyph loading within FreeType. This is used to support
|
||||
* embedded fonts in certain environments (e.g., PostScript interpreters),
|
||||
* where the glyph data isn't in the font file, or must be overridden by
|
||||
* different values.
|
||||
*
|
||||
* @note:
|
||||
* It is up to client applications to create and implement @FT_Incremental
|
||||
* objects, as long as they provide implementations for the methods
|
||||
* @FT_Incremental_GetGlyphDataFunc, @FT_Incremental_FreeGlyphDataFunc
|
||||
* and @FT_Incremental_GetGlyphMetricsFunc.
|
||||
*
|
||||
* See the description of @FT_Incremental_InterfaceRec to understand how
|
||||
* to use incremental objects with FreeType.
|
||||
*
|
||||
*/
|
||||
typedef struct FT_IncrementalRec_* FT_Incremental;
|
||||
|
||||
|
||||
/***************************************************************************
|
||||
*
|
||||
* @struct:
|
||||
* FT_Incremental_MetricsRec
|
||||
*
|
||||
* @description:
|
||||
* A small structure used to contain the basic glyph metrics returned
|
||||
* by the @FT_Incremental_GetGlyphMetricsFunc method.
|
||||
*
|
||||
* @fields:
|
||||
* bearing_x ::
|
||||
* Left bearing, in font units.
|
||||
*
|
||||
* bearing_y ::
|
||||
* Top bearing, in font units.
|
||||
*
|
||||
* advance ::
|
||||
* Horizontal component of glyph advance, in font units.
|
||||
*
|
||||
* advance_v ::
|
||||
* Vertical component of glyph advance, in font units.
|
||||
*
|
||||
* @note:
|
||||
* These correspond to horizontal or vertical metrics depending on the
|
||||
* value of the `vertical' argument to the function
|
||||
* @FT_Incremental_GetGlyphMetricsFunc.
|
||||
*
|
||||
*/
|
||||
typedef struct FT_Incremental_MetricsRec_
|
||||
{
|
||||
FT_Long bearing_x;
|
||||
FT_Long bearing_y;
|
||||
FT_Long advance;
|
||||
FT_Long advance_v; /* since 2.3.12 */
|
||||
|
||||
} FT_Incremental_MetricsRec;
|
||||
|
||||
|
||||
/***************************************************************************
|
||||
*
|
||||
* @struct:
|
||||
* FT_Incremental_Metrics
|
||||
*
|
||||
* @description:
|
||||
* A handle to an @FT_Incremental_MetricsRec structure.
|
||||
*
|
||||
*/
|
||||
typedef struct FT_Incremental_MetricsRec_* FT_Incremental_Metrics;
|
||||
|
||||
|
||||
/***************************************************************************
|
||||
*
|
||||
* @type:
|
||||
* FT_Incremental_GetGlyphDataFunc
|
||||
*
|
||||
* @description:
|
||||
* A function called by FreeType to access a given glyph's data bytes
|
||||
* during @FT_Load_Glyph or @FT_Load_Char if incremental loading is
|
||||
* enabled.
|
||||
*
|
||||
* Note that the format of the glyph's data bytes depends on the font
|
||||
* file format. For TrueType, it must correspond to the raw bytes within
|
||||
* the `glyf' table. For PostScript formats, it must correspond to the
|
||||
* *unencrypted* charstring bytes, without any `lenIV' header. It is
|
||||
* undefined for any other format.
|
||||
*
|
||||
* @input:
|
||||
* incremental ::
|
||||
* Handle to an opaque @FT_Incremental handle provided by the client
|
||||
* application.
|
||||
*
|
||||
* glyph_index ::
|
||||
* Index of relevant glyph.
|
||||
*
|
||||
* @output:
|
||||
* adata ::
|
||||
* A structure describing the returned glyph data bytes (which will be
|
||||
* accessed as a read-only byte block).
|
||||
*
|
||||
* @return:
|
||||
* FreeType error code. 0~means success.
|
||||
*
|
||||
* @note:
|
||||
* If this function returns successfully the method
|
||||
* @FT_Incremental_FreeGlyphDataFunc will be called later to release
|
||||
* the data bytes.
|
||||
*
|
||||
* Nested calls to @FT_Incremental_GetGlyphDataFunc can happen for
|
||||
* compound glyphs.
|
||||
*
|
||||
*/
|
||||
typedef FT_Error
|
||||
(*FT_Incremental_GetGlyphDataFunc)( FT_Incremental incremental,
|
||||
FT_UInt glyph_index,
|
||||
FT_Data* adata );
|
||||
|
||||
|
||||
/***************************************************************************
|
||||
*
|
||||
* @type:
|
||||
* FT_Incremental_FreeGlyphDataFunc
|
||||
*
|
||||
* @description:
|
||||
* A function used to release the glyph data bytes returned by a
|
||||
* successful call to @FT_Incremental_GetGlyphDataFunc.
|
||||
*
|
||||
* @input:
|
||||
* incremental ::
|
||||
* A handle to an opaque @FT_Incremental handle provided by the client
|
||||
* application.
|
||||
*
|
||||
* data ::
|
||||
* A structure describing the glyph data bytes (which will be accessed
|
||||
* as a read-only byte block).
|
||||
*
|
||||
*/
|
||||
typedef void
|
||||
(*FT_Incremental_FreeGlyphDataFunc)( FT_Incremental incremental,
|
||||
FT_Data* data );
|
||||
|
||||
|
||||
/***************************************************************************
|
||||
*
|
||||
* @type:
|
||||
* FT_Incremental_GetGlyphMetricsFunc
|
||||
*
|
||||
* @description:
|
||||
* A function used to retrieve the basic metrics of a given glyph index
|
||||
* before accessing its data. This is necessary because, in certain
|
||||
* formats like TrueType, the metrics are stored in a different place from
|
||||
* the glyph images proper.
|
||||
*
|
||||
* @input:
|
||||
* incremental ::
|
||||
* A handle to an opaque @FT_Incremental handle provided by the client
|
||||
* application.
|
||||
*
|
||||
* glyph_index ::
|
||||
* Index of relevant glyph.
|
||||
*
|
||||
* vertical ::
|
||||
* If true, return vertical metrics.
|
||||
*
|
||||
* ametrics ::
|
||||
* This parameter is used for both input and output.
|
||||
* The original glyph metrics, if any, in font units. If metrics are
|
||||
* not available all the values must be set to zero.
|
||||
*
|
||||
* @output:
|
||||
* ametrics ::
|
||||
* The replacement glyph metrics in font units.
|
||||
*
|
||||
*/
|
||||
typedef FT_Error
|
||||
(*FT_Incremental_GetGlyphMetricsFunc)
|
||||
( FT_Incremental incremental,
|
||||
FT_UInt glyph_index,
|
||||
FT_Bool vertical,
|
||||
FT_Incremental_MetricsRec *ametrics );
|
||||
|
||||
|
||||
/**************************************************************************
|
||||
*
|
||||
* @struct:
|
||||
* FT_Incremental_FuncsRec
|
||||
*
|
||||
* @description:
|
||||
* A table of functions for accessing fonts that load data
|
||||
* incrementally. Used in @FT_Incremental_InterfaceRec.
|
||||
*
|
||||
* @fields:
|
||||
* get_glyph_data ::
|
||||
* The function to get glyph data. Must not be null.
|
||||
*
|
||||
* free_glyph_data ::
|
||||
* The function to release glyph data. Must not be null.
|
||||
*
|
||||
* get_glyph_metrics ::
|
||||
* The function to get glyph metrics. May be null if the font does
|
||||
* not provide overriding glyph metrics.
|
||||
*
|
||||
*/
|
||||
typedef struct FT_Incremental_FuncsRec_
|
||||
{
|
||||
FT_Incremental_GetGlyphDataFunc get_glyph_data;
|
||||
FT_Incremental_FreeGlyphDataFunc free_glyph_data;
|
||||
FT_Incremental_GetGlyphMetricsFunc get_glyph_metrics;
|
||||
|
||||
} FT_Incremental_FuncsRec;
|
||||
|
||||
|
||||
/***************************************************************************
|
||||
*
|
||||
* @struct:
|
||||
* FT_Incremental_InterfaceRec
|
||||
*
|
||||
* @description:
|
||||
* A structure to be used with @FT_Open_Face to indicate that the user
|
||||
* wants to support incremental glyph loading. You should use it with
|
||||
* @FT_PARAM_TAG_INCREMENTAL as in the following example:
|
||||
*
|
||||
* {
|
||||
* FT_Incremental_InterfaceRec inc_int;
|
||||
* FT_Parameter parameter;
|
||||
* FT_Open_Args open_args;
|
||||
*
|
||||
*
|
||||
* // set up incremental descriptor
|
||||
* inc_int.funcs = my_funcs;
|
||||
* inc_int.object = my_object;
|
||||
*
|
||||
* // set up optional parameter
|
||||
* parameter.tag = FT_PARAM_TAG_INCREMENTAL;
|
||||
* parameter.data = &inc_int;
|
||||
*
|
||||
* // set up FT_Open_Args structure
|
||||
* open_args.flags = FT_OPEN_PATHNAME | FT_OPEN_PARAMS;
|
||||
* open_args.pathname = my_font_pathname;
|
||||
* open_args.num_params = 1;
|
||||
* open_args.params = ¶meter; // we use one optional argument
|
||||
*
|
||||
* // open the font
|
||||
* error = FT_Open_Face( library, &open_args, index, &face );
|
||||
* ...
|
||||
* }
|
||||
*
|
||||
*/
|
||||
typedef struct FT_Incremental_InterfaceRec_
|
||||
{
|
||||
const FT_Incremental_FuncsRec* funcs;
|
||||
FT_Incremental object;
|
||||
|
||||
} FT_Incremental_InterfaceRec;
|
||||
|
||||
|
||||
/***************************************************************************
|
||||
*
|
||||
* @type:
|
||||
* FT_Incremental_Interface
|
||||
*
|
||||
* @description:
|
||||
* A pointer to an @FT_Incremental_InterfaceRec structure.
|
||||
*
|
||||
*/
|
||||
typedef FT_Incremental_InterfaceRec* FT_Incremental_Interface;
|
||||
|
||||
|
||||
/***************************************************************************
|
||||
*
|
||||
* @constant:
|
||||
* FT_PARAM_TAG_INCREMENTAL
|
||||
*
|
||||
* @description:
|
||||
* A constant used as the tag of @FT_Parameter structures to indicate
|
||||
* an incremental loading object to be used by FreeType.
|
||||
*
|
||||
*/
|
||||
#define FT_PARAM_TAG_INCREMENTAL FT_MAKE_TAG( 'i', 'n', 'c', 'r' )
|
||||
|
||||
/* */
|
||||
|
||||
|
||||
FT_END_HEADER
|
||||
|
||||
#endif /* FTINCREM_H_ */
|
||||
|
||||
|
||||
/* END */
|
||||
286
include/fake/vtcs_root_vienna/freetype2/freetype/ftlcdfil.h
Normal file
286
include/fake/vtcs_root_vienna/freetype2/freetype/ftlcdfil.h
Normal file
@ -0,0 +1,286 @@
|
||||
/***************************************************************************/
|
||||
/* */
|
||||
/* ftlcdfil.h */
|
||||
/* */
|
||||
/* FreeType API for color filtering of subpixel bitmap glyphs */
|
||||
/* (specification). */
|
||||
/* */
|
||||
/* Copyright 2006-2016 by */
|
||||
/* David Turner, Robert Wilhelm, and Werner Lemberg. */
|
||||
/* */
|
||||
/* This file is part of the FreeType project, and may only be used, */
|
||||
/* modified, and distributed under the terms of the FreeType project */
|
||||
/* license, LICENSE.TXT. By continuing to use, modify, or distribute */
|
||||
/* this file you indicate that you have read the license and */
|
||||
/* understand and accept it fully. */
|
||||
/* */
|
||||
/***************************************************************************/
|
||||
|
||||
|
||||
#ifndef FTLCDFIL_H_
|
||||
#define FTLCDFIL_H_
|
||||
|
||||
#include <ft2build.h>
|
||||
#include FT_FREETYPE_H
|
||||
|
||||
#ifdef FREETYPE_H
|
||||
#error "freetype.h of FreeType 1 has been loaded!"
|
||||
#error "Please fix the directory search order for header files"
|
||||
#error "so that freetype.h of FreeType 2 is found first."
|
||||
#endif
|
||||
|
||||
|
||||
FT_BEGIN_HEADER
|
||||
|
||||
/***************************************************************************
|
||||
*
|
||||
* @section:
|
||||
* lcd_filtering
|
||||
*
|
||||
* @title:
|
||||
* LCD Filtering
|
||||
*
|
||||
* @abstract:
|
||||
* Reduce color fringes of subpixel-rendered bitmaps.
|
||||
*
|
||||
* @description:
|
||||
* Subpixel rendering exploits the color-striped structure of LCD
|
||||
* pixels, increasing the available resolution in the direction of the
|
||||
* stripe (usually horizontal RGB) by a factor of~3. Since these
|
||||
* subpixels are color pixels, using them unfiltered creates severe
|
||||
* color fringes. Use the @FT_Library_SetLcdFilter API to specify a
|
||||
* low-pass filter, which is then applied to subpixel-rendered bitmaps
|
||||
* generated through @FT_Render_Glyph. The filter sacrifices some of
|
||||
* the higher resolution to reduce color fringes, making the glyph image
|
||||
* slightly blurrier. Positional improvements will remain.
|
||||
*
|
||||
* Note that no filter is active by default, and that this function is
|
||||
* *not* implemented in default builds of the library. You need to
|
||||
* #define FT_CONFIG_OPTION_SUBPIXEL_RENDERING in your `ftoption.h' file
|
||||
* in order to activate it and explicitly call @FT_Library_SetLcdFilter
|
||||
* to enable it.
|
||||
*
|
||||
* A filter should have two properties:
|
||||
*
|
||||
* 1) It should be normalized, meaning the sum of the 5~components
|
||||
* should be 256 (0x100). It is possible to go above or under this
|
||||
* target sum, however: going under means tossing out contrast, going
|
||||
* over means invoking clamping and thereby non-linearities that
|
||||
* increase contrast somewhat at the expense of greater distortion
|
||||
* and color-fringing. Contrast is better enhanced through stem
|
||||
* darkening.
|
||||
*
|
||||
* 2) It should be color-balanced, meaning a filter `{~a, b, c, b, a~}'
|
||||
* where a~+ b~=~c. It distributes the computed coverage for one
|
||||
* subpixel to all subpixels equally, sacrificing some won resolution
|
||||
* but drastically reducing color-fringing. Positioning improvements
|
||||
* remain! Note that color-fringing can only really be minimized
|
||||
* when using a color-balanced filter and alpha-blending the glyph
|
||||
* onto a surface in linear space; see @FT_Render_Glyph.
|
||||
*
|
||||
* Regarding the form, a filter can be a `boxy' filter or a `beveled'
|
||||
* filter. Boxy filters are sharper but are less forgiving of non-ideal
|
||||
* gamma curves of a screen (viewing angles!), beveled filters are
|
||||
* fuzzier but more tolerant.
|
||||
*
|
||||
* Examples:
|
||||
*
|
||||
* - [0x10 0x40 0x70 0x40 0x10] is beveled and neither balanced nor
|
||||
* normalized.
|
||||
*
|
||||
* - [0x1A 0x33 0x4D 0x33 0x1A] is beveled and balanced but not
|
||||
* normalized.
|
||||
*
|
||||
* - [0x19 0x33 0x66 0x4c 0x19] is beveled and normalized but not
|
||||
* balanced.
|
||||
*
|
||||
* - [0x00 0x4c 0x66 0x4c 0x00] is boxily beveled and normalized but not
|
||||
* balanced.
|
||||
*
|
||||
* - [0x00 0x55 0x56 0x55 0x00] is boxy, normalized, and almost
|
||||
* balanced.
|
||||
*
|
||||
* - [0x08 0x4D 0x56 0x4D 0x08] is beveled, normalized and, almost
|
||||
* balanced.
|
||||
*
|
||||
* The filter affects glyph bitmaps rendered through @FT_Render_Glyph,
|
||||
* @FT_Load_Glyph, and @FT_Load_Char. It does _not_ affect the output
|
||||
* of @FT_Outline_Render and @FT_Outline_Get_Bitmap.
|
||||
*
|
||||
* If this feature is activated, the dimensions of LCD glyph bitmaps are
|
||||
* either wider or taller than the dimensions of the corresponding
|
||||
* outline with regard to the pixel grid. For example, for
|
||||
* @FT_RENDER_MODE_LCD, the filter adds 3~subpixels to the left, and
|
||||
* 3~subpixels to the right. The bitmap offset values are adjusted
|
||||
* accordingly, so clients shouldn't need to modify their layout and
|
||||
* glyph positioning code when enabling the filter.
|
||||
*
|
||||
* It is important to understand that linear alpha blending and gamma
|
||||
* correction is critical for correctly rendering glyphs onto surfaces
|
||||
* without artifacts and even more critical when subpixel rendering is
|
||||
* involved.
|
||||
*
|
||||
* Each of the 3~alpha values (subpixels) is independently used to blend
|
||||
* one color channel. That is, red alpha blends the red channel of the
|
||||
* text color with the red channel of the background pixel. The
|
||||
* distribution of density values by the color-balanced filter assumes
|
||||
* alpha blending is done in linear space; only then color artifacts
|
||||
* cancel out.
|
||||
*/
|
||||
|
||||
|
||||
/****************************************************************************
|
||||
*
|
||||
* @enum:
|
||||
* FT_LcdFilter
|
||||
*
|
||||
* @description:
|
||||
* A list of values to identify various types of LCD filters.
|
||||
*
|
||||
* @values:
|
||||
* FT_LCD_FILTER_NONE ::
|
||||
* Do not perform filtering. When used with subpixel rendering, this
|
||||
* results in sometimes severe color fringes.
|
||||
*
|
||||
* FT_LCD_FILTER_DEFAULT ::
|
||||
* The default filter reduces color fringes considerably, at the cost
|
||||
* of a slight blurriness in the output.
|
||||
*
|
||||
* It is a beveled, normalized, and color-balanced five-tap filter
|
||||
* that is more forgiving to screens with non-ideal gamma curves and
|
||||
* viewing angles. Note that while color-fringing is reduced, it can
|
||||
* only be minimized by using linear alpha blending and gamma
|
||||
* correction to render glyphs onto surfaces. The default filter
|
||||
* weights are [0x08 0x4D 0x56 0x4D 0x08].
|
||||
*
|
||||
* FT_LCD_FILTER_LIGHT ::
|
||||
* The light filter is a variant that is sharper at the cost of
|
||||
* slightly more color fringes than the default one.
|
||||
*
|
||||
* It is a boxy, normalized, and color-balanced three-tap filter that
|
||||
* is less forgiving to screens with non-ideal gamma curves and
|
||||
* viewing angles. This filter works best when the rendering system
|
||||
* uses linear alpha blending and gamma correction to render glyphs
|
||||
* onto surfaces. The light filter weights are
|
||||
* [0x00 0x55 0x56 0x55 0x00].
|
||||
*
|
||||
* FT_LCD_FILTER_LEGACY ::
|
||||
* This filter corresponds to the original libXft color filter. It
|
||||
* provides high contrast output but can exhibit really bad color
|
||||
* fringes if glyphs are not extremely well hinted to the pixel grid.
|
||||
* In other words, it only works well if the TrueType bytecode
|
||||
* interpreter is enabled *and* high-quality hinted fonts are used.
|
||||
*
|
||||
* This filter is only provided for comparison purposes, and might be
|
||||
* disabled or stay unsupported in the future.
|
||||
*
|
||||
* FT_LCD_FILTER_LEGACY1 ::
|
||||
* For historical reasons, the FontConfig library returns a different
|
||||
* enumeration value for legacy LCD filtering. To make code work that
|
||||
* (incorrectly) forwards FontConfig's enumeration value to
|
||||
* @FT_Library_SetLcdFilter without proper mapping, it is thus easiest
|
||||
* to have another enumeration value, which is completely equal to
|
||||
* `FT_LCD_FILTER_LEGACY'.
|
||||
*
|
||||
* @since:
|
||||
* 2.3.0 (`FT_LCD_FILTER_LEGACY1' since 2.6.2)
|
||||
*/
|
||||
typedef enum FT_LcdFilter_
|
||||
{
|
||||
FT_LCD_FILTER_NONE = 0,
|
||||
FT_LCD_FILTER_DEFAULT = 1,
|
||||
FT_LCD_FILTER_LIGHT = 2,
|
||||
FT_LCD_FILTER_LEGACY1 = 3,
|
||||
FT_LCD_FILTER_LEGACY = 16,
|
||||
|
||||
FT_LCD_FILTER_MAX /* do not remove */
|
||||
|
||||
} FT_LcdFilter;
|
||||
|
||||
|
||||
/**************************************************************************
|
||||
*
|
||||
* @func:
|
||||
* FT_Library_SetLcdFilter
|
||||
*
|
||||
* @description:
|
||||
* This function is used to apply color filtering to LCD decimated
|
||||
* bitmaps, like the ones used when calling @FT_Render_Glyph with
|
||||
* @FT_RENDER_MODE_LCD or @FT_RENDER_MODE_LCD_V.
|
||||
*
|
||||
* @input:
|
||||
* library ::
|
||||
* A handle to the target library instance.
|
||||
*
|
||||
* filter ::
|
||||
* The filter type.
|
||||
*
|
||||
* You can use @FT_LCD_FILTER_NONE here to disable this feature, or
|
||||
* @FT_LCD_FILTER_DEFAULT to use a default filter that should work
|
||||
* well on most LCD screens.
|
||||
*
|
||||
* @return:
|
||||
* FreeType error code. 0~means success.
|
||||
*
|
||||
* @note:
|
||||
* This feature is always disabled by default. Clients must make an
|
||||
* explicit call to this function with a `filter' value other than
|
||||
* @FT_LCD_FILTER_NONE in order to enable it.
|
||||
*
|
||||
* Due to *PATENTS* covering subpixel rendering, this function doesn't
|
||||
* do anything except returning `FT_Err_Unimplemented_Feature' if the
|
||||
* configuration macro FT_CONFIG_OPTION_SUBPIXEL_RENDERING is not
|
||||
* defined in your build of the library, which should correspond to all
|
||||
* default builds of FreeType.
|
||||
*
|
||||
* @since:
|
||||
* 2.3.0
|
||||
*/
|
||||
FT_EXPORT( FT_Error )
|
||||
FT_Library_SetLcdFilter( FT_Library library,
|
||||
FT_LcdFilter filter );
|
||||
|
||||
|
||||
/**************************************************************************
|
||||
*
|
||||
* @func:
|
||||
* FT_Library_SetLcdFilterWeights
|
||||
*
|
||||
* @description:
|
||||
* This function can be used to enable LCD filter with custom weights,
|
||||
* instead of using presets in @FT_Library_SetLcdFilter.
|
||||
*
|
||||
* @input:
|
||||
* library ::
|
||||
* A handle to the target library instance.
|
||||
*
|
||||
* weights ::
|
||||
* A pointer to an array; the function copies the first five bytes and
|
||||
* uses them to specify the filter weights.
|
||||
*
|
||||
* @return:
|
||||
* FreeType error code. 0~means success.
|
||||
*
|
||||
* @note:
|
||||
* Due to *PATENTS* covering subpixel rendering, this function doesn't
|
||||
* do anything except returning `FT_Err_Unimplemented_Feature' if the
|
||||
* configuration macro FT_CONFIG_OPTION_SUBPIXEL_RENDERING is not
|
||||
* defined in your build of the library, which should correspond to all
|
||||
* default builds of FreeType.
|
||||
*
|
||||
* @since:
|
||||
* 2.4.0
|
||||
*/
|
||||
FT_EXPORT( FT_Error )
|
||||
FT_Library_SetLcdFilterWeights( FT_Library library,
|
||||
unsigned char *weights );
|
||||
|
||||
/* */
|
||||
|
||||
|
||||
FT_END_HEADER
|
||||
|
||||
#endif /* FTLCDFIL_H_ */
|
||||
|
||||
|
||||
/* END */
|
||||
276
include/fake/vtcs_root_vienna/freetype2/freetype/ftlist.h
Normal file
276
include/fake/vtcs_root_vienna/freetype2/freetype/ftlist.h
Normal file
@ -0,0 +1,276 @@
|
||||
/***************************************************************************/
|
||||
/* */
|
||||
/* ftlist.h */
|
||||
/* */
|
||||
/* Generic list support for FreeType (specification). */
|
||||
/* */
|
||||
/* Copyright 1996-2016 by */
|
||||
/* David Turner, Robert Wilhelm, and Werner Lemberg. */
|
||||
/* */
|
||||
/* This file is part of the FreeType project, and may only be used, */
|
||||
/* modified, and distributed under the terms of the FreeType project */
|
||||
/* license, LICENSE.TXT. By continuing to use, modify, or distribute */
|
||||
/* this file you indicate that you have read the license and */
|
||||
/* understand and accept it fully. */
|
||||
/* */
|
||||
/***************************************************************************/
|
||||
|
||||
|
||||
/*************************************************************************/
|
||||
/* */
|
||||
/* This file implements functions relative to list processing. Its */
|
||||
/* data structures are defined in `freetype.h'. */
|
||||
/* */
|
||||
/*************************************************************************/
|
||||
|
||||
|
||||
#ifndef FTLIST_H_
|
||||
#define FTLIST_H_
|
||||
|
||||
|
||||
#include <ft2build.h>
|
||||
#include FT_FREETYPE_H
|
||||
|
||||
#ifdef FREETYPE_H
|
||||
#error "freetype.h of FreeType 1 has been loaded!"
|
||||
#error "Please fix the directory search order for header files"
|
||||
#error "so that freetype.h of FreeType 2 is found first."
|
||||
#endif
|
||||
|
||||
|
||||
FT_BEGIN_HEADER
|
||||
|
||||
|
||||
/*************************************************************************/
|
||||
/* */
|
||||
/* <Section> */
|
||||
/* list_processing */
|
||||
/* */
|
||||
/* <Title> */
|
||||
/* List Processing */
|
||||
/* */
|
||||
/* <Abstract> */
|
||||
/* Simple management of lists. */
|
||||
/* */
|
||||
/* <Description> */
|
||||
/* This section contains various definitions related to list */
|
||||
/* processing using doubly-linked nodes. */
|
||||
/* */
|
||||
/* <Order> */
|
||||
/* FT_List */
|
||||
/* FT_ListNode */
|
||||
/* FT_ListRec */
|
||||
/* FT_ListNodeRec */
|
||||
/* */
|
||||
/* FT_List_Add */
|
||||
/* FT_List_Insert */
|
||||
/* FT_List_Find */
|
||||
/* FT_List_Remove */
|
||||
/* FT_List_Up */
|
||||
/* FT_List_Iterate */
|
||||
/* FT_List_Iterator */
|
||||
/* FT_List_Finalize */
|
||||
/* FT_List_Destructor */
|
||||
/* */
|
||||
/*************************************************************************/
|
||||
|
||||
|
||||
/*************************************************************************/
|
||||
/* */
|
||||
/* <Function> */
|
||||
/* FT_List_Find */
|
||||
/* */
|
||||
/* <Description> */
|
||||
/* Find the list node for a given listed object. */
|
||||
/* */
|
||||
/* <Input> */
|
||||
/* list :: A pointer to the parent list. */
|
||||
/* data :: The address of the listed object. */
|
||||
/* */
|
||||
/* <Return> */
|
||||
/* List node. NULL if it wasn't found. */
|
||||
/* */
|
||||
FT_EXPORT( FT_ListNode )
|
||||
FT_List_Find( FT_List list,
|
||||
void* data );
|
||||
|
||||
|
||||
/*************************************************************************/
|
||||
/* */
|
||||
/* <Function> */
|
||||
/* FT_List_Add */
|
||||
/* */
|
||||
/* <Description> */
|
||||
/* Append an element to the end of a list. */
|
||||
/* */
|
||||
/* <InOut> */
|
||||
/* list :: A pointer to the parent list. */
|
||||
/* node :: The node to append. */
|
||||
/* */
|
||||
FT_EXPORT( void )
|
||||
FT_List_Add( FT_List list,
|
||||
FT_ListNode node );
|
||||
|
||||
|
||||
/*************************************************************************/
|
||||
/* */
|
||||
/* <Function> */
|
||||
/* FT_List_Insert */
|
||||
/* */
|
||||
/* <Description> */
|
||||
/* Insert an element at the head of a list. */
|
||||
/* */
|
||||
/* <InOut> */
|
||||
/* list :: A pointer to parent list. */
|
||||
/* node :: The node to insert. */
|
||||
/* */
|
||||
FT_EXPORT( void )
|
||||
FT_List_Insert( FT_List list,
|
||||
FT_ListNode node );
|
||||
|
||||
|
||||
/*************************************************************************/
|
||||
/* */
|
||||
/* <Function> */
|
||||
/* FT_List_Remove */
|
||||
/* */
|
||||
/* <Description> */
|
||||
/* Remove a node from a list. This function doesn't check whether */
|
||||
/* the node is in the list! */
|
||||
/* */
|
||||
/* <Input> */
|
||||
/* node :: The node to remove. */
|
||||
/* */
|
||||
/* <InOut> */
|
||||
/* list :: A pointer to the parent list. */
|
||||
/* */
|
||||
FT_EXPORT( void )
|
||||
FT_List_Remove( FT_List list,
|
||||
FT_ListNode node );
|
||||
|
||||
|
||||
/*************************************************************************/
|
||||
/* */
|
||||
/* <Function> */
|
||||
/* FT_List_Up */
|
||||
/* */
|
||||
/* <Description> */
|
||||
/* Move a node to the head/top of a list. Used to maintain LRU */
|
||||
/* lists. */
|
||||
/* */
|
||||
/* <InOut> */
|
||||
/* list :: A pointer to the parent list. */
|
||||
/* node :: The node to move. */
|
||||
/* */
|
||||
FT_EXPORT( void )
|
||||
FT_List_Up( FT_List list,
|
||||
FT_ListNode node );
|
||||
|
||||
|
||||
/*************************************************************************/
|
||||
/* */
|
||||
/* <FuncType> */
|
||||
/* FT_List_Iterator */
|
||||
/* */
|
||||
/* <Description> */
|
||||
/* An FT_List iterator function that is called during a list parse */
|
||||
/* by @FT_List_Iterate. */
|
||||
/* */
|
||||
/* <Input> */
|
||||
/* node :: The current iteration list node. */
|
||||
/* */
|
||||
/* user :: A typeless pointer passed to @FT_List_Iterate. */
|
||||
/* Can be used to point to the iteration's state. */
|
||||
/* */
|
||||
typedef FT_Error
|
||||
(*FT_List_Iterator)( FT_ListNode node,
|
||||
void* user );
|
||||
|
||||
|
||||
/*************************************************************************/
|
||||
/* */
|
||||
/* <Function> */
|
||||
/* FT_List_Iterate */
|
||||
/* */
|
||||
/* <Description> */
|
||||
/* Parse a list and calls a given iterator function on each element. */
|
||||
/* Note that parsing is stopped as soon as one of the iterator calls */
|
||||
/* returns a non-zero value. */
|
||||
/* */
|
||||
/* <Input> */
|
||||
/* list :: A handle to the list. */
|
||||
/* iterator :: An iterator function, called on each node of the list. */
|
||||
/* user :: A user-supplied field that is passed as the second */
|
||||
/* argument to the iterator. */
|
||||
/* */
|
||||
/* <Return> */
|
||||
/* The result (a FreeType error code) of the last iterator call. */
|
||||
/* */
|
||||
FT_EXPORT( FT_Error )
|
||||
FT_List_Iterate( FT_List list,
|
||||
FT_List_Iterator iterator,
|
||||
void* user );
|
||||
|
||||
|
||||
/*************************************************************************/
|
||||
/* */
|
||||
/* <FuncType> */
|
||||
/* FT_List_Destructor */
|
||||
/* */
|
||||
/* <Description> */
|
||||
/* An @FT_List iterator function that is called during a list */
|
||||
/* finalization by @FT_List_Finalize to destroy all elements in a */
|
||||
/* given list. */
|
||||
/* */
|
||||
/* <Input> */
|
||||
/* system :: The current system object. */
|
||||
/* */
|
||||
/* data :: The current object to destroy. */
|
||||
/* */
|
||||
/* user :: A typeless pointer passed to @FT_List_Iterate. It can */
|
||||
/* be used to point to the iteration's state. */
|
||||
/* */
|
||||
typedef void
|
||||
(*FT_List_Destructor)( FT_Memory memory,
|
||||
void* data,
|
||||
void* user );
|
||||
|
||||
|
||||
/*************************************************************************/
|
||||
/* */
|
||||
/* <Function> */
|
||||
/* FT_List_Finalize */
|
||||
/* */
|
||||
/* <Description> */
|
||||
/* Destroy all elements in the list as well as the list itself. */
|
||||
/* */
|
||||
/* <Input> */
|
||||
/* list :: A handle to the list. */
|
||||
/* */
|
||||
/* destroy :: A list destructor that will be applied to each element */
|
||||
/* of the list. Set this to NULL if not needed. */
|
||||
/* */
|
||||
/* memory :: The current memory object that handles deallocation. */
|
||||
/* */
|
||||
/* user :: A user-supplied field that is passed as the last */
|
||||
/* argument to the destructor. */
|
||||
/* */
|
||||
/* <Note> */
|
||||
/* This function expects that all nodes added by @FT_List_Add or */
|
||||
/* @FT_List_Insert have been dynamically allocated. */
|
||||
/* */
|
||||
FT_EXPORT( void )
|
||||
FT_List_Finalize( FT_List list,
|
||||
FT_List_Destructor destroy,
|
||||
FT_Memory memory,
|
||||
void* user );
|
||||
|
||||
/* */
|
||||
|
||||
|
||||
FT_END_HEADER
|
||||
|
||||
#endif /* FTLIST_H_ */
|
||||
|
||||
|
||||
/* END */
|
||||
99
include/fake/vtcs_root_vienna/freetype2/freetype/ftlzw.h
Normal file
99
include/fake/vtcs_root_vienna/freetype2/freetype/ftlzw.h
Normal file
@ -0,0 +1,99 @@
|
||||
/***************************************************************************/
|
||||
/* */
|
||||
/* ftlzw.h */
|
||||
/* */
|
||||
/* LZW-compressed stream support. */
|
||||
/* */
|
||||
/* Copyright 2004-2016 by */
|
||||
/* David Turner, Robert Wilhelm, and Werner Lemberg. */
|
||||
/* */
|
||||
/* This file is part of the FreeType project, and may only be used, */
|
||||
/* modified, and distributed under the terms of the FreeType project */
|
||||
/* license, LICENSE.TXT. By continuing to use, modify, or distribute */
|
||||
/* this file you indicate that you have read the license and */
|
||||
/* understand and accept it fully. */
|
||||
/* */
|
||||
/***************************************************************************/
|
||||
|
||||
|
||||
#ifndef FTLZW_H_
|
||||
#define FTLZW_H_
|
||||
|
||||
#include <ft2build.h>
|
||||
#include FT_FREETYPE_H
|
||||
|
||||
#ifdef FREETYPE_H
|
||||
#error "freetype.h of FreeType 1 has been loaded!"
|
||||
#error "Please fix the directory search order for header files"
|
||||
#error "so that freetype.h of FreeType 2 is found first."
|
||||
#endif
|
||||
|
||||
|
||||
FT_BEGIN_HEADER
|
||||
|
||||
/*************************************************************************/
|
||||
/* */
|
||||
/* <Section> */
|
||||
/* lzw */
|
||||
/* */
|
||||
/* <Title> */
|
||||
/* LZW Streams */
|
||||
/* */
|
||||
/* <Abstract> */
|
||||
/* Using LZW-compressed font files. */
|
||||
/* */
|
||||
/* <Description> */
|
||||
/* This section contains the declaration of LZW-specific functions. */
|
||||
/* */
|
||||
/*************************************************************************/
|
||||
|
||||
/************************************************************************
|
||||
*
|
||||
* @function:
|
||||
* FT_Stream_OpenLZW
|
||||
*
|
||||
* @description:
|
||||
* Open a new stream to parse LZW-compressed font files. This is
|
||||
* mainly used to support the compressed `*.pcf.Z' fonts that come
|
||||
* with XFree86.
|
||||
*
|
||||
* @input:
|
||||
* stream :: The target embedding stream.
|
||||
*
|
||||
* source :: The source stream.
|
||||
*
|
||||
* @return:
|
||||
* FreeType error code. 0~means success.
|
||||
*
|
||||
* @note:
|
||||
* The source stream must be opened _before_ calling this function.
|
||||
*
|
||||
* Calling the internal function `FT_Stream_Close' on the new stream will
|
||||
* *not* call `FT_Stream_Close' on the source stream. None of the stream
|
||||
* objects will be released to the heap.
|
||||
*
|
||||
* The stream implementation is very basic and resets the decompression
|
||||
* process each time seeking backwards is needed within the stream
|
||||
*
|
||||
* In certain builds of the library, LZW compression recognition is
|
||||
* automatically handled when calling @FT_New_Face or @FT_Open_Face.
|
||||
* This means that if no font driver is capable of handling the raw
|
||||
* compressed file, the library will try to open a LZW stream from it
|
||||
* and re-open the face with it.
|
||||
*
|
||||
* This function may return `FT_Err_Unimplemented_Feature' if your build
|
||||
* of FreeType was not compiled with LZW support.
|
||||
*/
|
||||
FT_EXPORT( FT_Error )
|
||||
FT_Stream_OpenLZW( FT_Stream stream,
|
||||
FT_Stream source );
|
||||
|
||||
/* */
|
||||
|
||||
|
||||
FT_END_HEADER
|
||||
|
||||
#endif /* FTLZW_H_ */
|
||||
|
||||
|
||||
/* END */
|
||||
274
include/fake/vtcs_root_vienna/freetype2/freetype/ftmac.h
Normal file
274
include/fake/vtcs_root_vienna/freetype2/freetype/ftmac.h
Normal file
@ -0,0 +1,274 @@
|
||||
/***************************************************************************/
|
||||
/* */
|
||||
/* ftmac.h */
|
||||
/* */
|
||||
/* Additional Mac-specific API. */
|
||||
/* */
|
||||
/* Copyright 1996-2016 by */
|
||||
/* Just van Rossum, David Turner, Robert Wilhelm, and Werner Lemberg. */
|
||||
/* */
|
||||
/* This file is part of the FreeType project, and may only be used, */
|
||||
/* modified, and distributed under the terms of the FreeType project */
|
||||
/* license, LICENSE.TXT. By continuing to use, modify, or distribute */
|
||||
/* this file you indicate that you have read the license and */
|
||||
/* understand and accept it fully. */
|
||||
/* */
|
||||
/***************************************************************************/
|
||||
|
||||
|
||||
/***************************************************************************/
|
||||
/* */
|
||||
/* NOTE: Include this file after FT_FREETYPE_H and after any */
|
||||
/* Mac-specific headers (because this header uses Mac types such as */
|
||||
/* Handle, FSSpec, FSRef, etc.) */
|
||||
/* */
|
||||
/***************************************************************************/
|
||||
|
||||
|
||||
#ifndef FTMAC_H_
|
||||
#define FTMAC_H_
|
||||
|
||||
|
||||
#include <ft2build.h>
|
||||
|
||||
|
||||
FT_BEGIN_HEADER
|
||||
|
||||
|
||||
/* gcc-3.4.1 and later can warn about functions tagged as deprecated */
|
||||
#ifndef FT_DEPRECATED_ATTRIBUTE
|
||||
#if defined(__GNUC__) && \
|
||||
((__GNUC__ >= 4) || ((__GNUC__ == 3) && (__GNUC_MINOR__ >= 1)))
|
||||
#define FT_DEPRECATED_ATTRIBUTE __attribute__((deprecated))
|
||||
#else
|
||||
#define FT_DEPRECATED_ATTRIBUTE
|
||||
#endif
|
||||
#endif
|
||||
|
||||
|
||||
/*************************************************************************/
|
||||
/* */
|
||||
/* <Section> */
|
||||
/* mac_specific */
|
||||
/* */
|
||||
/* <Title> */
|
||||
/* Mac Specific Interface */
|
||||
/* */
|
||||
/* <Abstract> */
|
||||
/* Only available on the Macintosh. */
|
||||
/* */
|
||||
/* <Description> */
|
||||
/* The following definitions are only available if FreeType is */
|
||||
/* compiled on a Macintosh. */
|
||||
/* */
|
||||
/*************************************************************************/
|
||||
|
||||
|
||||
/*************************************************************************/
|
||||
/* */
|
||||
/* <Function> */
|
||||
/* FT_New_Face_From_FOND */
|
||||
/* */
|
||||
/* <Description> */
|
||||
/* Create a new face object from a FOND resource. */
|
||||
/* */
|
||||
/* <InOut> */
|
||||
/* library :: A handle to the library resource. */
|
||||
/* */
|
||||
/* <Input> */
|
||||
/* fond :: A FOND resource. */
|
||||
/* */
|
||||
/* face_index :: Only supported for the -1 `sanity check' special */
|
||||
/* case. */
|
||||
/* */
|
||||
/* <Output> */
|
||||
/* aface :: A handle to a new face object. */
|
||||
/* */
|
||||
/* <Return> */
|
||||
/* FreeType error code. 0~means success. */
|
||||
/* */
|
||||
/* <Notes> */
|
||||
/* This function can be used to create @FT_Face objects from fonts */
|
||||
/* that are installed in the system as follows. */
|
||||
/* */
|
||||
/* { */
|
||||
/* fond = GetResource( 'FOND', fontName ); */
|
||||
/* error = FT_New_Face_From_FOND( library, fond, 0, &face ); */
|
||||
/* } */
|
||||
/* */
|
||||
FT_EXPORT( FT_Error )
|
||||
FT_New_Face_From_FOND( FT_Library library,
|
||||
Handle fond,
|
||||
FT_Long face_index,
|
||||
FT_Face *aface )
|
||||
FT_DEPRECATED_ATTRIBUTE;
|
||||
|
||||
|
||||
/*************************************************************************/
|
||||
/* */
|
||||
/* <Function> */
|
||||
/* FT_GetFile_From_Mac_Name */
|
||||
/* */
|
||||
/* <Description> */
|
||||
/* Return an FSSpec for the disk file containing the named font. */
|
||||
/* */
|
||||
/* <Input> */
|
||||
/* fontName :: Mac OS name of the font (e.g., Times New Roman */
|
||||
/* Bold). */
|
||||
/* */
|
||||
/* <Output> */
|
||||
/* pathSpec :: FSSpec to the file. For passing to */
|
||||
/* @FT_New_Face_From_FSSpec. */
|
||||
/* */
|
||||
/* face_index :: Index of the face. For passing to */
|
||||
/* @FT_New_Face_From_FSSpec. */
|
||||
/* */
|
||||
/* <Return> */
|
||||
/* FreeType error code. 0~means success. */
|
||||
/* */
|
||||
FT_EXPORT( FT_Error )
|
||||
FT_GetFile_From_Mac_Name( const char* fontName,
|
||||
FSSpec* pathSpec,
|
||||
FT_Long* face_index )
|
||||
FT_DEPRECATED_ATTRIBUTE;
|
||||
|
||||
|
||||
/*************************************************************************/
|
||||
/* */
|
||||
/* <Function> */
|
||||
/* FT_GetFile_From_Mac_ATS_Name */
|
||||
/* */
|
||||
/* <Description> */
|
||||
/* Return an FSSpec for the disk file containing the named font. */
|
||||
/* */
|
||||
/* <Input> */
|
||||
/* fontName :: Mac OS name of the font in ATS framework. */
|
||||
/* */
|
||||
/* <Output> */
|
||||
/* pathSpec :: FSSpec to the file. For passing to */
|
||||
/* @FT_New_Face_From_FSSpec. */
|
||||
/* */
|
||||
/* face_index :: Index of the face. For passing to */
|
||||
/* @FT_New_Face_From_FSSpec. */
|
||||
/* */
|
||||
/* <Return> */
|
||||
/* FreeType error code. 0~means success. */
|
||||
/* */
|
||||
FT_EXPORT( FT_Error )
|
||||
FT_GetFile_From_Mac_ATS_Name( const char* fontName,
|
||||
FSSpec* pathSpec,
|
||||
FT_Long* face_index )
|
||||
FT_DEPRECATED_ATTRIBUTE;
|
||||
|
||||
|
||||
/*************************************************************************/
|
||||
/* */
|
||||
/* <Function> */
|
||||
/* FT_GetFilePath_From_Mac_ATS_Name */
|
||||
/* */
|
||||
/* <Description> */
|
||||
/* Return a pathname of the disk file and face index for given font */
|
||||
/* name that is handled by ATS framework. */
|
||||
/* */
|
||||
/* <Input> */
|
||||
/* fontName :: Mac OS name of the font in ATS framework. */
|
||||
/* */
|
||||
/* <Output> */
|
||||
/* path :: Buffer to store pathname of the file. For passing */
|
||||
/* to @FT_New_Face. The client must allocate this */
|
||||
/* buffer before calling this function. */
|
||||
/* */
|
||||
/* maxPathSize :: Lengths of the buffer `path' that client allocated. */
|
||||
/* */
|
||||
/* face_index :: Index of the face. For passing to @FT_New_Face. */
|
||||
/* */
|
||||
/* <Return> */
|
||||
/* FreeType error code. 0~means success. */
|
||||
/* */
|
||||
FT_EXPORT( FT_Error )
|
||||
FT_GetFilePath_From_Mac_ATS_Name( const char* fontName,
|
||||
UInt8* path,
|
||||
UInt32 maxPathSize,
|
||||
FT_Long* face_index )
|
||||
FT_DEPRECATED_ATTRIBUTE;
|
||||
|
||||
|
||||
/*************************************************************************/
|
||||
/* */
|
||||
/* <Function> */
|
||||
/* FT_New_Face_From_FSSpec */
|
||||
/* */
|
||||
/* <Description> */
|
||||
/* Create a new face object from a given resource and typeface index */
|
||||
/* using an FSSpec to the font file. */
|
||||
/* */
|
||||
/* <InOut> */
|
||||
/* library :: A handle to the library resource. */
|
||||
/* */
|
||||
/* <Input> */
|
||||
/* spec :: FSSpec to the font file. */
|
||||
/* */
|
||||
/* face_index :: The index of the face within the resource. The */
|
||||
/* first face has index~0. */
|
||||
/* <Output> */
|
||||
/* aface :: A handle to a new face object. */
|
||||
/* */
|
||||
/* <Return> */
|
||||
/* FreeType error code. 0~means success. */
|
||||
/* */
|
||||
/* <Note> */
|
||||
/* @FT_New_Face_From_FSSpec is identical to @FT_New_Face except */
|
||||
/* it accepts an FSSpec instead of a path. */
|
||||
/* */
|
||||
FT_EXPORT( FT_Error )
|
||||
FT_New_Face_From_FSSpec( FT_Library library,
|
||||
const FSSpec *spec,
|
||||
FT_Long face_index,
|
||||
FT_Face *aface )
|
||||
FT_DEPRECATED_ATTRIBUTE;
|
||||
|
||||
|
||||
/*************************************************************************/
|
||||
/* */
|
||||
/* <Function> */
|
||||
/* FT_New_Face_From_FSRef */
|
||||
/* */
|
||||
/* <Description> */
|
||||
/* Create a new face object from a given resource and typeface index */
|
||||
/* using an FSRef to the font file. */
|
||||
/* */
|
||||
/* <InOut> */
|
||||
/* library :: A handle to the library resource. */
|
||||
/* */
|
||||
/* <Input> */
|
||||
/* spec :: FSRef to the font file. */
|
||||
/* */
|
||||
/* face_index :: The index of the face within the resource. The */
|
||||
/* first face has index~0. */
|
||||
/* <Output> */
|
||||
/* aface :: A handle to a new face object. */
|
||||
/* */
|
||||
/* <Return> */
|
||||
/* FreeType error code. 0~means success. */
|
||||
/* */
|
||||
/* <Note> */
|
||||
/* @FT_New_Face_From_FSRef is identical to @FT_New_Face except */
|
||||
/* it accepts an FSRef instead of a path. */
|
||||
/* */
|
||||
FT_EXPORT( FT_Error )
|
||||
FT_New_Face_From_FSRef( FT_Library library,
|
||||
const FSRef *ref,
|
||||
FT_Long face_index,
|
||||
FT_Face *aface )
|
||||
FT_DEPRECATED_ATTRIBUTE;
|
||||
|
||||
/* */
|
||||
|
||||
|
||||
FT_END_HEADER
|
||||
|
||||
|
||||
#endif /* FTMAC_H_ */
|
||||
|
||||
|
||||
/* END */
|
||||
461
include/fake/vtcs_root_vienna/freetype2/freetype/ftmm.h
Normal file
461
include/fake/vtcs_root_vienna/freetype2/freetype/ftmm.h
Normal file
@ -0,0 +1,461 @@
|
||||
/***************************************************************************/
|
||||
/* */
|
||||
/* ftmm.h */
|
||||
/* */
|
||||
/* FreeType Multiple Master font interface (specification). */
|
||||
/* */
|
||||
/* Copyright 1996-2016 by */
|
||||
/* David Turner, Robert Wilhelm, and Werner Lemberg. */
|
||||
/* */
|
||||
/* This file is part of the FreeType project, and may only be used, */
|
||||
/* modified, and distributed under the terms of the FreeType project */
|
||||
/* license, LICENSE.TXT. By continuing to use, modify, or distribute */
|
||||
/* this file you indicate that you have read the license and */
|
||||
/* understand and accept it fully. */
|
||||
/* */
|
||||
/***************************************************************************/
|
||||
|
||||
|
||||
#ifndef FTMM_H_
|
||||
#define FTMM_H_
|
||||
|
||||
|
||||
#include <ft2build.h>
|
||||
#include FT_TYPE1_TABLES_H
|
||||
|
||||
|
||||
FT_BEGIN_HEADER
|
||||
|
||||
|
||||
/*************************************************************************/
|
||||
/* */
|
||||
/* <Section> */
|
||||
/* multiple_masters */
|
||||
/* */
|
||||
/* <Title> */
|
||||
/* Multiple Masters */
|
||||
/* */
|
||||
/* <Abstract> */
|
||||
/* How to manage Multiple Masters fonts. */
|
||||
/* */
|
||||
/* <Description> */
|
||||
/* The following types and functions are used to manage Multiple */
|
||||
/* Master fonts, i.e., the selection of specific design instances by */
|
||||
/* setting design axis coordinates. */
|
||||
/* */
|
||||
/* George Williams has extended this interface to make it work with */
|
||||
/* both Type~1 Multiple Masters fonts and GX distortable (var) */
|
||||
/* fonts. Some of these routines only work with MM fonts, others */
|
||||
/* will work with both types. They are similar enough that a */
|
||||
/* consistent interface makes sense. */
|
||||
/* */
|
||||
/*************************************************************************/
|
||||
|
||||
|
||||
/*************************************************************************/
|
||||
/* */
|
||||
/* <Struct> */
|
||||
/* FT_MM_Axis */
|
||||
/* */
|
||||
/* <Description> */
|
||||
/* A simple structure used to model a given axis in design space for */
|
||||
/* Multiple Masters fonts. */
|
||||
/* */
|
||||
/* This structure can't be used for GX var fonts. */
|
||||
/* */
|
||||
/* <Fields> */
|
||||
/* name :: The axis's name. */
|
||||
/* */
|
||||
/* minimum :: The axis's minimum design coordinate. */
|
||||
/* */
|
||||
/* maximum :: The axis's maximum design coordinate. */
|
||||
/* */
|
||||
typedef struct FT_MM_Axis_
|
||||
{
|
||||
FT_String* name;
|
||||
FT_Long minimum;
|
||||
FT_Long maximum;
|
||||
|
||||
} FT_MM_Axis;
|
||||
|
||||
|
||||
/*************************************************************************/
|
||||
/* */
|
||||
/* <Struct> */
|
||||
/* FT_Multi_Master */
|
||||
/* */
|
||||
/* <Description> */
|
||||
/* A structure used to model the axes and space of a Multiple Masters */
|
||||
/* font. */
|
||||
/* */
|
||||
/* This structure can't be used for GX var fonts. */
|
||||
/* */
|
||||
/* <Fields> */
|
||||
/* num_axis :: Number of axes. Cannot exceed~4. */
|
||||
/* */
|
||||
/* num_designs :: Number of designs; should be normally 2^num_axis */
|
||||
/* even though the Type~1 specification strangely */
|
||||
/* allows for intermediate designs to be present. */
|
||||
/* This number cannot exceed~16. */
|
||||
/* */
|
||||
/* axis :: A table of axis descriptors. */
|
||||
/* */
|
||||
typedef struct FT_Multi_Master_
|
||||
{
|
||||
FT_UInt num_axis;
|
||||
FT_UInt num_designs;
|
||||
FT_MM_Axis axis[T1_MAX_MM_AXIS];
|
||||
|
||||
} FT_Multi_Master;
|
||||
|
||||
|
||||
/*************************************************************************/
|
||||
/* */
|
||||
/* <Struct> */
|
||||
/* FT_Var_Axis */
|
||||
/* */
|
||||
/* <Description> */
|
||||
/* A simple structure used to model a given axis in design space for */
|
||||
/* Multiple Masters and GX var fonts. */
|
||||
/* */
|
||||
/* <Fields> */
|
||||
/* name :: The axis's name. */
|
||||
/* Not always meaningful for GX. */
|
||||
/* */
|
||||
/* minimum :: The axis's minimum design coordinate. */
|
||||
/* */
|
||||
/* def :: The axis's default design coordinate. */
|
||||
/* FreeType computes meaningful default values for MM; it */
|
||||
/* is then an integer value, not in 16.16 format. */
|
||||
/* */
|
||||
/* maximum :: The axis's maximum design coordinate. */
|
||||
/* */
|
||||
/* tag :: The axis's tag (the GX equivalent to `name'). */
|
||||
/* FreeType provides default values for MM if possible. */
|
||||
/* */
|
||||
/* strid :: The entry in `name' table (another GX version of */
|
||||
/* `name'). */
|
||||
/* Not meaningful for MM. */
|
||||
/* */
|
||||
typedef struct FT_Var_Axis_
|
||||
{
|
||||
FT_String* name;
|
||||
|
||||
FT_Fixed minimum;
|
||||
FT_Fixed def;
|
||||
FT_Fixed maximum;
|
||||
|
||||
FT_ULong tag;
|
||||
FT_UInt strid;
|
||||
|
||||
} FT_Var_Axis;
|
||||
|
||||
|
||||
/*************************************************************************/
|
||||
/* */
|
||||
/* <Struct> */
|
||||
/* FT_Var_Named_Style */
|
||||
/* */
|
||||
/* <Description> */
|
||||
/* A simple structure used to model a named style in a GX var font. */
|
||||
/* */
|
||||
/* This structure can't be used for MM fonts. */
|
||||
/* */
|
||||
/* <Fields> */
|
||||
/* coords :: The design coordinates for this style. */
|
||||
/* This is an array with one entry for each axis. */
|
||||
/* */
|
||||
/* strid :: The entry in `name' table identifying this style. */
|
||||
/* */
|
||||
typedef struct FT_Var_Named_Style_
|
||||
{
|
||||
FT_Fixed* coords;
|
||||
FT_UInt strid;
|
||||
FT_UInt psid; /* since 2.7.1 */
|
||||
|
||||
} FT_Var_Named_Style;
|
||||
|
||||
|
||||
/*************************************************************************/
|
||||
/* */
|
||||
/* <Struct> */
|
||||
/* FT_MM_Var */
|
||||
/* */
|
||||
/* <Description> */
|
||||
/* A structure used to model the axes and space of a Multiple Masters */
|
||||
/* or GX var distortable font. */
|
||||
/* */
|
||||
/* Some fields are specific to one format and not to the other. */
|
||||
/* */
|
||||
/* <Fields> */
|
||||
/* num_axis :: The number of axes. The maximum value is~4 for */
|
||||
/* MM; no limit in GX. */
|
||||
/* */
|
||||
/* num_designs :: The number of designs; should be normally */
|
||||
/* 2^num_axis for MM fonts. Not meaningful for GX */
|
||||
/* (where every glyph could have a different */
|
||||
/* number of designs). */
|
||||
/* */
|
||||
/* num_namedstyles :: The number of named styles; a `named style' is */
|
||||
/* a tuple of design coordinates that has a string */
|
||||
/* ID (in the `name' table) associated with it. */
|
||||
/* The font can tell the user that, for example, */
|
||||
/* [Weight=1.5,Width=1.1] is `Bold'. */
|
||||
/* */
|
||||
/* For Type 1 Multiple Masters fonts, this value */
|
||||
/* is always zero because the format does not */
|
||||
/* support named styles. */
|
||||
/* */
|
||||
/* axis :: An axis descriptor table. */
|
||||
/* GX fonts contain slightly more data than MM. */
|
||||
/* Memory management of this pointer is done */
|
||||
/* internally by FreeType. */
|
||||
/* */
|
||||
/* namedstyle :: A named style table. */
|
||||
/* Only meaningful with GX. */
|
||||
/* Memory management of this pointer is done */
|
||||
/* internally by FreeType. */
|
||||
/* */
|
||||
typedef struct FT_MM_Var_
|
||||
{
|
||||
FT_UInt num_axis;
|
||||
FT_UInt num_designs;
|
||||
FT_UInt num_namedstyles;
|
||||
FT_Var_Axis* axis;
|
||||
FT_Var_Named_Style* namedstyle;
|
||||
|
||||
} FT_MM_Var;
|
||||
|
||||
|
||||
/*************************************************************************/
|
||||
/* */
|
||||
/* <Function> */
|
||||
/* FT_Get_Multi_Master */
|
||||
/* */
|
||||
/* <Description> */
|
||||
/* Retrieve the Multiple Master descriptor of a given font. */
|
||||
/* */
|
||||
/* This function can't be used with GX fonts. */
|
||||
/* */
|
||||
/* <Input> */
|
||||
/* face :: A handle to the source face. */
|
||||
/* */
|
||||
/* <Output> */
|
||||
/* amaster :: The Multiple Masters descriptor. */
|
||||
/* */
|
||||
/* <Return> */
|
||||
/* FreeType error code. 0~means success. */
|
||||
/* */
|
||||
FT_EXPORT( FT_Error )
|
||||
FT_Get_Multi_Master( FT_Face face,
|
||||
FT_Multi_Master *amaster );
|
||||
|
||||
|
||||
/*************************************************************************/
|
||||
/* */
|
||||
/* <Function> */
|
||||
/* FT_Get_MM_Var */
|
||||
/* */
|
||||
/* <Description> */
|
||||
/* Retrieve the Multiple Master/GX var descriptor of a given font. */
|
||||
/* */
|
||||
/* <Input> */
|
||||
/* face :: A handle to the source face. */
|
||||
/* */
|
||||
/* <Output> */
|
||||
/* amaster :: The Multiple Masters/GX var descriptor. */
|
||||
/* Allocates a data structure, which the user must */
|
||||
/* deallocate with `free' after use. */
|
||||
/* */
|
||||
/* <Return> */
|
||||
/* FreeType error code. 0~means success. */
|
||||
/* */
|
||||
FT_EXPORT( FT_Error )
|
||||
FT_Get_MM_Var( FT_Face face,
|
||||
FT_MM_Var* *amaster );
|
||||
|
||||
|
||||
/*************************************************************************/
|
||||
/* */
|
||||
/* <Function> */
|
||||
/* FT_Set_MM_Design_Coordinates */
|
||||
/* */
|
||||
/* <Description> */
|
||||
/* For Multiple Masters fonts, choose an interpolated font design */
|
||||
/* through design coordinates. */
|
||||
/* */
|
||||
/* This function can't be used with GX fonts. */
|
||||
/* */
|
||||
/* <InOut> */
|
||||
/* face :: A handle to the source face. */
|
||||
/* */
|
||||
/* <Input> */
|
||||
/* num_coords :: The number of available design coordinates. If it */
|
||||
/* is larger than the number of axes, ignore the excess */
|
||||
/* values. If it is smaller than the number of axes, */
|
||||
/* use default values for the remaining axes. */
|
||||
/* */
|
||||
/* coords :: An array of design coordinates. */
|
||||
/* */
|
||||
/* <Return> */
|
||||
/* FreeType error code. 0~means success. */
|
||||
/* */
|
||||
FT_EXPORT( FT_Error )
|
||||
FT_Set_MM_Design_Coordinates( FT_Face face,
|
||||
FT_UInt num_coords,
|
||||
FT_Long* coords );
|
||||
|
||||
|
||||
/*************************************************************************/
|
||||
/* */
|
||||
/* <Function> */
|
||||
/* FT_Set_Var_Design_Coordinates */
|
||||
/* */
|
||||
/* <Description> */
|
||||
/* For Multiple Master or GX Var fonts, choose an interpolated font */
|
||||
/* design through design coordinates. */
|
||||
/* */
|
||||
/* <InOut> */
|
||||
/* face :: A handle to the source face. */
|
||||
/* */
|
||||
/* <Input> */
|
||||
/* num_coords :: The number of available design coordinates. If it */
|
||||
/* is larger than the number of axes, ignore the excess */
|
||||
/* values. If it is smaller than the number of axes, */
|
||||
/* use default values for the remaining axes. */
|
||||
/* */
|
||||
/* coords :: An array of design coordinates. */
|
||||
/* */
|
||||
/* <Return> */
|
||||
/* FreeType error code. 0~means success. */
|
||||
/* */
|
||||
FT_EXPORT( FT_Error )
|
||||
FT_Set_Var_Design_Coordinates( FT_Face face,
|
||||
FT_UInt num_coords,
|
||||
FT_Fixed* coords );
|
||||
|
||||
|
||||
/*************************************************************************/
|
||||
/* */
|
||||
/* <Function> */
|
||||
/* FT_Get_Var_Design_Coordinates */
|
||||
/* */
|
||||
/* <Description> */
|
||||
/* For Multiple Master and GX Var fonts, get the design coordinates */
|
||||
/* of the currently selected interpolated font. */
|
||||
/* */
|
||||
/* <Input> */
|
||||
/* face :: A handle to the source face. */
|
||||
/* */
|
||||
/* num_coords :: The number of design coordinates to retrieve. If it */
|
||||
/* is larger than the number of axes, set the excess */
|
||||
/* values to~0. */
|
||||
/* */
|
||||
/* <Output> */
|
||||
/* coords :: The design coordinates array. */
|
||||
/* */
|
||||
/* <Return> */
|
||||
/* FreeType error code. 0~means success. */
|
||||
/* */
|
||||
FT_EXPORT( FT_Error )
|
||||
FT_Get_Var_Design_Coordinates( FT_Face face,
|
||||
FT_UInt num_coords,
|
||||
FT_Fixed* coords );
|
||||
|
||||
|
||||
/*************************************************************************/
|
||||
/* */
|
||||
/* <Function> */
|
||||
/* FT_Set_MM_Blend_Coordinates */
|
||||
/* */
|
||||
/* <Description> */
|
||||
/* For Multiple Masters and GX var fonts, choose an interpolated font */
|
||||
/* design through normalized blend coordinates. */
|
||||
/* */
|
||||
/* <InOut> */
|
||||
/* face :: A handle to the source face. */
|
||||
/* */
|
||||
/* <Input> */
|
||||
/* num_coords :: The number of available design coordinates. If it */
|
||||
/* is larger than the number of axes, ignore the excess */
|
||||
/* values. If it is smaller than the number of axes, */
|
||||
/* use default values for the remaining axes. */
|
||||
/* */
|
||||
/* coords :: The design coordinates array (each element must be */
|
||||
/* between 0 and 1.0 for MM fonts, and between -1.0 and */
|
||||
/* 1.0 for GX var fonts). */
|
||||
/* */
|
||||
/* <Return> */
|
||||
/* FreeType error code. 0~means success. */
|
||||
/* */
|
||||
FT_EXPORT( FT_Error )
|
||||
FT_Set_MM_Blend_Coordinates( FT_Face face,
|
||||
FT_UInt num_coords,
|
||||
FT_Fixed* coords );
|
||||
|
||||
|
||||
/*************************************************************************/
|
||||
/* */
|
||||
/* <Function> */
|
||||
/* FT_Get_MM_Blend_Coordinates */
|
||||
/* */
|
||||
/* <Description> */
|
||||
/* For Multiple Masters and GX var fonts, get the normalized blend */
|
||||
/* coordinates of the currently selected interpolated font. */
|
||||
/* */
|
||||
/* <Input> */
|
||||
/* face :: A handle to the source face. */
|
||||
/* */
|
||||
/* num_coords :: The number of normalized blend coordinates to */
|
||||
/* retrieve. If it is larger than the number of axes, */
|
||||
/* set the excess values to~0.5 for MM fonts, and to~0 */
|
||||
/* for GX var fonts. */
|
||||
/* */
|
||||
/* <Output> */
|
||||
/* coords :: The normalized blend coordinates array. */
|
||||
/* */
|
||||
/* <Return> */
|
||||
/* FreeType error code. 0~means success. */
|
||||
/* */
|
||||
FT_EXPORT( FT_Error )
|
||||
FT_Get_MM_Blend_Coordinates( FT_Face face,
|
||||
FT_UInt num_coords,
|
||||
FT_Fixed* coords );
|
||||
|
||||
|
||||
/*************************************************************************/
|
||||
/* */
|
||||
/* <Function> */
|
||||
/* FT_Set_Var_Blend_Coordinates */
|
||||
/* */
|
||||
/* <Description> */
|
||||
/* This is another name of @FT_Set_MM_Blend_Coordinates. */
|
||||
/* */
|
||||
FT_EXPORT( FT_Error )
|
||||
FT_Set_Var_Blend_Coordinates( FT_Face face,
|
||||
FT_UInt num_coords,
|
||||
FT_Fixed* coords );
|
||||
|
||||
|
||||
/*************************************************************************/
|
||||
/* */
|
||||
/* <Function> */
|
||||
/* FT_Get_Var_Blend_Coordinates */
|
||||
/* */
|
||||
/* <Description> */
|
||||
/* This is another name of @FT_Get_MM_Blend_Coordinates. */
|
||||
/* */
|
||||
FT_EXPORT( FT_Error )
|
||||
FT_Get_Var_Blend_Coordinates( FT_Face face,
|
||||
FT_UInt num_coords,
|
||||
FT_Fixed* coords );
|
||||
|
||||
/* */
|
||||
|
||||
|
||||
FT_END_HEADER
|
||||
|
||||
#endif /* FTMM_H_ */
|
||||
|
||||
|
||||
/* END */
|
||||
667
include/fake/vtcs_root_vienna/freetype2/freetype/ftmodapi.h
Normal file
667
include/fake/vtcs_root_vienna/freetype2/freetype/ftmodapi.h
Normal file
@ -0,0 +1,667 @@
|
||||
/***************************************************************************/
|
||||
/* */
|
||||
/* ftmodapi.h */
|
||||
/* */
|
||||
/* FreeType modules public interface (specification). */
|
||||
/* */
|
||||
/* Copyright 1996-2016 by */
|
||||
/* David Turner, Robert Wilhelm, and Werner Lemberg. */
|
||||
/* */
|
||||
/* This file is part of the FreeType project, and may only be used, */
|
||||
/* modified, and distributed under the terms of the FreeType project */
|
||||
/* license, LICENSE.TXT. By continuing to use, modify, or distribute */
|
||||
/* this file you indicate that you have read the license and */
|
||||
/* understand and accept it fully. */
|
||||
/* */
|
||||
/***************************************************************************/
|
||||
|
||||
|
||||
#ifndef FTMODAPI_H_
|
||||
#define FTMODAPI_H_
|
||||
|
||||
|
||||
#include <ft2build.h>
|
||||
#include FT_FREETYPE_H
|
||||
|
||||
#ifdef FREETYPE_H
|
||||
#error "freetype.h of FreeType 1 has been loaded!"
|
||||
#error "Please fix the directory search order for header files"
|
||||
#error "so that freetype.h of FreeType 2 is found first."
|
||||
#endif
|
||||
|
||||
|
||||
FT_BEGIN_HEADER
|
||||
|
||||
|
||||
/*************************************************************************/
|
||||
/* */
|
||||
/* <Section> */
|
||||
/* module_management */
|
||||
/* */
|
||||
/* <Title> */
|
||||
/* Module Management */
|
||||
/* */
|
||||
/* <Abstract> */
|
||||
/* How to add, upgrade, remove, and control modules from FreeType. */
|
||||
/* */
|
||||
/* <Description> */
|
||||
/* The definitions below are used to manage modules within FreeType. */
|
||||
/* Modules can be added, upgraded, and removed at runtime. */
|
||||
/* Additionally, some module properties can be controlled also. */
|
||||
/* */
|
||||
/* Here is a list of possible values of the `module_name' field in */
|
||||
/* the @FT_Module_Class structure. */
|
||||
/* */
|
||||
/* { */
|
||||
/* autofitter */
|
||||
/* bdf */
|
||||
/* cff */
|
||||
/* gxvalid */
|
||||
/* otvalid */
|
||||
/* pcf */
|
||||
/* pfr */
|
||||
/* psaux */
|
||||
/* pshinter */
|
||||
/* psnames */
|
||||
/* raster1 */
|
||||
/* sfnt */
|
||||
/* smooth, smooth-lcd, smooth-lcdv */
|
||||
/* truetype */
|
||||
/* type1 */
|
||||
/* type42 */
|
||||
/* t1cid */
|
||||
/* winfonts */
|
||||
/* } */
|
||||
/* */
|
||||
/* Note that the FreeType Cache sub-system is not a FreeType module. */
|
||||
/* */
|
||||
/* <Order> */
|
||||
/* FT_Module */
|
||||
/* FT_Module_Constructor */
|
||||
/* FT_Module_Destructor */
|
||||
/* FT_Module_Requester */
|
||||
/* FT_Module_Class */
|
||||
/* */
|
||||
/* FT_Add_Module */
|
||||
/* FT_Get_Module */
|
||||
/* FT_Remove_Module */
|
||||
/* FT_Add_Default_Modules */
|
||||
/* */
|
||||
/* FT_Property_Set */
|
||||
/* FT_Property_Get */
|
||||
/* */
|
||||
/* FT_New_Library */
|
||||
/* FT_Done_Library */
|
||||
/* FT_Reference_Library */
|
||||
/* */
|
||||
/* FT_Renderer */
|
||||
/* FT_Renderer_Class */
|
||||
/* */
|
||||
/* FT_Get_Renderer */
|
||||
/* FT_Set_Renderer */
|
||||
/* */
|
||||
/* FT_Set_Debug_Hook */
|
||||
/* */
|
||||
/*************************************************************************/
|
||||
|
||||
|
||||
/* module bit flags */
|
||||
#define FT_MODULE_FONT_DRIVER 1 /* this module is a font driver */
|
||||
#define FT_MODULE_RENDERER 2 /* this module is a renderer */
|
||||
#define FT_MODULE_HINTER 4 /* this module is a glyph hinter */
|
||||
#define FT_MODULE_STYLER 8 /* this module is a styler */
|
||||
|
||||
#define FT_MODULE_DRIVER_SCALABLE 0x100 /* the driver supports */
|
||||
/* scalable fonts */
|
||||
#define FT_MODULE_DRIVER_NO_OUTLINES 0x200 /* the driver does not */
|
||||
/* support vector outlines */
|
||||
#define FT_MODULE_DRIVER_HAS_HINTER 0x400 /* the driver provides its */
|
||||
/* own hinter */
|
||||
#define FT_MODULE_DRIVER_HINTS_LIGHTLY 0x800 /* the driver's hinter */
|
||||
/* produces LIGHT hints */
|
||||
|
||||
|
||||
/* deprecated values */
|
||||
#define ft_module_font_driver FT_MODULE_FONT_DRIVER
|
||||
#define ft_module_renderer FT_MODULE_RENDERER
|
||||
#define ft_module_hinter FT_MODULE_HINTER
|
||||
#define ft_module_styler FT_MODULE_STYLER
|
||||
|
||||
#define ft_module_driver_scalable FT_MODULE_DRIVER_SCALABLE
|
||||
#define ft_module_driver_no_outlines FT_MODULE_DRIVER_NO_OUTLINES
|
||||
#define ft_module_driver_has_hinter FT_MODULE_DRIVER_HAS_HINTER
|
||||
#define ft_module_driver_hints_lightly FT_MODULE_DRIVER_HINTS_LIGHTLY
|
||||
|
||||
|
||||
typedef FT_Pointer FT_Module_Interface;
|
||||
|
||||
|
||||
/*************************************************************************/
|
||||
/* */
|
||||
/* <FuncType> */
|
||||
/* FT_Module_Constructor */
|
||||
/* */
|
||||
/* <Description> */
|
||||
/* A function used to initialize (not create) a new module object. */
|
||||
/* */
|
||||
/* <Input> */
|
||||
/* module :: The module to initialize. */
|
||||
/* */
|
||||
typedef FT_Error
|
||||
(*FT_Module_Constructor)( FT_Module module );
|
||||
|
||||
|
||||
/*************************************************************************/
|
||||
/* */
|
||||
/* <FuncType> */
|
||||
/* FT_Module_Destructor */
|
||||
/* */
|
||||
/* <Description> */
|
||||
/* A function used to finalize (not destroy) a given module object. */
|
||||
/* */
|
||||
/* <Input> */
|
||||
/* module :: The module to finalize. */
|
||||
/* */
|
||||
typedef void
|
||||
(*FT_Module_Destructor)( FT_Module module );
|
||||
|
||||
|
||||
/*************************************************************************/
|
||||
/* */
|
||||
/* <FuncType> */
|
||||
/* FT_Module_Requester */
|
||||
/* */
|
||||
/* <Description> */
|
||||
/* A function used to query a given module for a specific interface. */
|
||||
/* */
|
||||
/* <Input> */
|
||||
/* module :: The module to be searched. */
|
||||
/* */
|
||||
/* name :: The name of the interface in the module. */
|
||||
/* */
|
||||
typedef FT_Module_Interface
|
||||
(*FT_Module_Requester)( FT_Module module,
|
||||
const char* name );
|
||||
|
||||
|
||||
/*************************************************************************/
|
||||
/* */
|
||||
/* <Struct> */
|
||||
/* FT_Module_Class */
|
||||
/* */
|
||||
/* <Description> */
|
||||
/* The module class descriptor. */
|
||||
/* */
|
||||
/* <Fields> */
|
||||
/* module_flags :: Bit flags describing the module. */
|
||||
/* */
|
||||
/* module_size :: The size of one module object/instance in */
|
||||
/* bytes. */
|
||||
/* */
|
||||
/* module_name :: The name of the module. */
|
||||
/* */
|
||||
/* module_version :: The version, as a 16.16 fixed number */
|
||||
/* (major.minor). */
|
||||
/* */
|
||||
/* module_requires :: The version of FreeType this module requires, */
|
||||
/* as a 16.16 fixed number (major.minor). Starts */
|
||||
/* at version 2.0, i.e., 0x20000. */
|
||||
/* */
|
||||
/* module_init :: The initializing function. */
|
||||
/* */
|
||||
/* module_done :: The finalizing function. */
|
||||
/* */
|
||||
/* get_interface :: The interface requesting function. */
|
||||
/* */
|
||||
typedef struct FT_Module_Class_
|
||||
{
|
||||
FT_ULong module_flags;
|
||||
FT_Long module_size;
|
||||
const FT_String* module_name;
|
||||
FT_Fixed module_version;
|
||||
FT_Fixed module_requires;
|
||||
|
||||
const void* module_interface;
|
||||
|
||||
FT_Module_Constructor module_init;
|
||||
FT_Module_Destructor module_done;
|
||||
FT_Module_Requester get_interface;
|
||||
|
||||
} FT_Module_Class;
|
||||
|
||||
|
||||
/*************************************************************************/
|
||||
/* */
|
||||
/* <Function> */
|
||||
/* FT_Add_Module */
|
||||
/* */
|
||||
/* <Description> */
|
||||
/* Add a new module to a given library instance. */
|
||||
/* */
|
||||
/* <InOut> */
|
||||
/* library :: A handle to the library object. */
|
||||
/* */
|
||||
/* <Input> */
|
||||
/* clazz :: A pointer to class descriptor for the module. */
|
||||
/* */
|
||||
/* <Return> */
|
||||
/* FreeType error code. 0~means success. */
|
||||
/* */
|
||||
/* <Note> */
|
||||
/* An error will be returned if a module already exists by that name, */
|
||||
/* or if the module requires a version of FreeType that is too great. */
|
||||
/* */
|
||||
FT_EXPORT( FT_Error )
|
||||
FT_Add_Module( FT_Library library,
|
||||
const FT_Module_Class* clazz );
|
||||
|
||||
|
||||
/*************************************************************************/
|
||||
/* */
|
||||
/* <Function> */
|
||||
/* FT_Get_Module */
|
||||
/* */
|
||||
/* <Description> */
|
||||
/* Find a module by its name. */
|
||||
/* */
|
||||
/* <Input> */
|
||||
/* library :: A handle to the library object. */
|
||||
/* */
|
||||
/* module_name :: The module's name (as an ASCII string). */
|
||||
/* */
|
||||
/* <Return> */
|
||||
/* A module handle. 0~if none was found. */
|
||||
/* */
|
||||
/* <Note> */
|
||||
/* FreeType's internal modules aren't documented very well, and you */
|
||||
/* should look up the source code for details. */
|
||||
/* */
|
||||
FT_EXPORT( FT_Module )
|
||||
FT_Get_Module( FT_Library library,
|
||||
const char* module_name );
|
||||
|
||||
|
||||
/*************************************************************************/
|
||||
/* */
|
||||
/* <Function> */
|
||||
/* FT_Remove_Module */
|
||||
/* */
|
||||
/* <Description> */
|
||||
/* Remove a given module from a library instance. */
|
||||
/* */
|
||||
/* <InOut> */
|
||||
/* library :: A handle to a library object. */
|
||||
/* */
|
||||
/* <Input> */
|
||||
/* module :: A handle to a module object. */
|
||||
/* */
|
||||
/* <Return> */
|
||||
/* FreeType error code. 0~means success. */
|
||||
/* */
|
||||
/* <Note> */
|
||||
/* The module object is destroyed by the function in case of success. */
|
||||
/* */
|
||||
FT_EXPORT( FT_Error )
|
||||
FT_Remove_Module( FT_Library library,
|
||||
FT_Module module );
|
||||
|
||||
|
||||
/**********************************************************************
|
||||
*
|
||||
* @function:
|
||||
* FT_Property_Set
|
||||
*
|
||||
* @description:
|
||||
* Set a property for a given module.
|
||||
*
|
||||
* @input:
|
||||
* library ::
|
||||
* A handle to the library the module is part of.
|
||||
*
|
||||
* module_name ::
|
||||
* The module name.
|
||||
*
|
||||
* property_name ::
|
||||
* The property name. Properties are described in the `Synopsis'
|
||||
* subsection of the module's documentation.
|
||||
*
|
||||
* Note that only a few modules have properties.
|
||||
*
|
||||
* value ::
|
||||
* A generic pointer to a variable or structure that gives the new
|
||||
* value of the property. The exact definition of `value' is
|
||||
* dependent on the property; see the `Synopsis' subsection of the
|
||||
* module's documentation.
|
||||
*
|
||||
* @return:
|
||||
* FreeType error code. 0~means success.
|
||||
*
|
||||
* @note:
|
||||
* If `module_name' isn't a valid module name, or `property_name'
|
||||
* doesn't specify a valid property, or if `value' doesn't represent a
|
||||
* valid value for the given property, an error is returned.
|
||||
*
|
||||
* The following example sets property `bar' (a simple integer) in
|
||||
* module `foo' to value~1.
|
||||
*
|
||||
* {
|
||||
* FT_UInt bar;
|
||||
*
|
||||
*
|
||||
* bar = 1;
|
||||
* FT_Property_Set( library, "foo", "bar", &bar );
|
||||
* }
|
||||
*
|
||||
* Note that the FreeType Cache sub-system doesn't recognize module
|
||||
* property changes. To avoid glyph lookup confusion within the cache
|
||||
* you should call @FTC_Manager_Reset to completely flush the cache if
|
||||
* a module property gets changed after @FTC_Manager_New has been
|
||||
* called.
|
||||
*
|
||||
* It is not possible to set properties of the FreeType Cache
|
||||
* sub-system itself with FT_Property_Set; use @FTC_Property_Set
|
||||
* instead.
|
||||
*
|
||||
* @since:
|
||||
* 2.4.11
|
||||
*
|
||||
*/
|
||||
FT_EXPORT( FT_Error )
|
||||
FT_Property_Set( FT_Library library,
|
||||
const FT_String* module_name,
|
||||
const FT_String* property_name,
|
||||
const void* value );
|
||||
|
||||
|
||||
/**********************************************************************
|
||||
*
|
||||
* @function:
|
||||
* FT_Property_Get
|
||||
*
|
||||
* @description:
|
||||
* Get a module's property value.
|
||||
*
|
||||
* @input:
|
||||
* library ::
|
||||
* A handle to the library the module is part of.
|
||||
*
|
||||
* module_name ::
|
||||
* The module name.
|
||||
*
|
||||
* property_name ::
|
||||
* The property name. Properties are described in the `Synopsis'
|
||||
* subsection of the module's documentation.
|
||||
*
|
||||
* @inout:
|
||||
* value ::
|
||||
* A generic pointer to a variable or structure that gives the
|
||||
* value of the property. The exact definition of `value' is
|
||||
* dependent on the property; see the `Synopsis' subsection of the
|
||||
* module's documentation.
|
||||
*
|
||||
* @return:
|
||||
* FreeType error code. 0~means success.
|
||||
*
|
||||
* @note:
|
||||
* If `module_name' isn't a valid module name, or `property_name'
|
||||
* doesn't specify a valid property, or if `value' doesn't represent a
|
||||
* valid value for the given property, an error is returned.
|
||||
*
|
||||
* The following example gets property `baz' (a range) in module `foo'.
|
||||
*
|
||||
* {
|
||||
* typedef range_
|
||||
* {
|
||||
* FT_Int32 min;
|
||||
* FT_Int32 max;
|
||||
*
|
||||
* } range;
|
||||
*
|
||||
* range baz;
|
||||
*
|
||||
*
|
||||
* FT_Property_Get( library, "foo", "baz", &baz );
|
||||
* }
|
||||
*
|
||||
* It is not possible to retrieve properties of the FreeType Cache
|
||||
* sub-system with FT_Property_Get; use @FTC_Property_Get instead.
|
||||
*
|
||||
* @since:
|
||||
* 2.4.11
|
||||
*
|
||||
*/
|
||||
FT_EXPORT( FT_Error )
|
||||
FT_Property_Get( FT_Library library,
|
||||
const FT_String* module_name,
|
||||
const FT_String* property_name,
|
||||
void* value );
|
||||
|
||||
|
||||
/*************************************************************************/
|
||||
/* */
|
||||
/* <Function> */
|
||||
/* FT_Reference_Library */
|
||||
/* */
|
||||
/* <Description> */
|
||||
/* A counter gets initialized to~1 at the time an @FT_Library */
|
||||
/* structure is created. This function increments the counter. */
|
||||
/* @FT_Done_Library then only destroys a library if the counter is~1, */
|
||||
/* otherwise it simply decrements the counter. */
|
||||
/* */
|
||||
/* This function helps in managing life-cycles of structures that */
|
||||
/* reference @FT_Library objects. */
|
||||
/* */
|
||||
/* <Input> */
|
||||
/* library :: A handle to a target library object. */
|
||||
/* */
|
||||
/* <Return> */
|
||||
/* FreeType error code. 0~means success. */
|
||||
/* */
|
||||
/* <Since> */
|
||||
/* 2.4.2 */
|
||||
/* */
|
||||
FT_EXPORT( FT_Error )
|
||||
FT_Reference_Library( FT_Library library );
|
||||
|
||||
|
||||
/*************************************************************************/
|
||||
/* */
|
||||
/* <Function> */
|
||||
/* FT_New_Library */
|
||||
/* */
|
||||
/* <Description> */
|
||||
/* This function is used to create a new FreeType library instance */
|
||||
/* from a given memory object. It is thus possible to use libraries */
|
||||
/* with distinct memory allocators within the same program. Note, */
|
||||
/* however, that the used @FT_Memory structure is expected to remain */
|
||||
/* valid for the life of the @FT_Library object. */
|
||||
/* */
|
||||
/* Normally, you would call this function (followed by a call to */
|
||||
/* @FT_Add_Default_Modules or a series of calls to @FT_Add_Module) */
|
||||
/* instead of @FT_Init_FreeType to initialize the FreeType library. */
|
||||
/* */
|
||||
/* Don't use @FT_Done_FreeType but @FT_Done_Library to destroy a */
|
||||
/* library instance. */
|
||||
/* */
|
||||
/* <Input> */
|
||||
/* memory :: A handle to the original memory object. */
|
||||
/* */
|
||||
/* <Output> */
|
||||
/* alibrary :: A pointer to handle of a new library object. */
|
||||
/* */
|
||||
/* <Return> */
|
||||
/* FreeType error code. 0~means success. */
|
||||
/* */
|
||||
/* <Note> */
|
||||
/* See the discussion of reference counters in the description of */
|
||||
/* @FT_Reference_Library. */
|
||||
/* */
|
||||
FT_EXPORT( FT_Error )
|
||||
FT_New_Library( FT_Memory memory,
|
||||
FT_Library *alibrary );
|
||||
|
||||
|
||||
/*************************************************************************/
|
||||
/* */
|
||||
/* <Function> */
|
||||
/* FT_Done_Library */
|
||||
/* */
|
||||
/* <Description> */
|
||||
/* Discard a given library object. This closes all drivers and */
|
||||
/* discards all resource objects. */
|
||||
/* */
|
||||
/* <Input> */
|
||||
/* library :: A handle to the target library. */
|
||||
/* */
|
||||
/* <Return> */
|
||||
/* FreeType error code. 0~means success. */
|
||||
/* */
|
||||
/* <Note> */
|
||||
/* See the discussion of reference counters in the description of */
|
||||
/* @FT_Reference_Library. */
|
||||
/* */
|
||||
FT_EXPORT( FT_Error )
|
||||
FT_Done_Library( FT_Library library );
|
||||
|
||||
/* */
|
||||
|
||||
typedef void
|
||||
(*FT_DebugHook_Func)( void* arg );
|
||||
|
||||
|
||||
/*************************************************************************/
|
||||
/* */
|
||||
/* <Function> */
|
||||
/* FT_Set_Debug_Hook */
|
||||
/* */
|
||||
/* <Description> */
|
||||
/* Set a debug hook function for debugging the interpreter of a font */
|
||||
/* format. */
|
||||
/* */
|
||||
/* <InOut> */
|
||||
/* library :: A handle to the library object. */
|
||||
/* */
|
||||
/* <Input> */
|
||||
/* hook_index :: The index of the debug hook. You should use the */
|
||||
/* values defined in `ftobjs.h', e.g., */
|
||||
/* `FT_DEBUG_HOOK_TRUETYPE'. */
|
||||
/* */
|
||||
/* debug_hook :: The function used to debug the interpreter. */
|
||||
/* */
|
||||
/* <Note> */
|
||||
/* Currently, four debug hook slots are available, but only two (for */
|
||||
/* the TrueType and the Type~1 interpreter) are defined. */
|
||||
/* */
|
||||
/* Since the internal headers of FreeType are no longer installed, */
|
||||
/* the symbol `FT_DEBUG_HOOK_TRUETYPE' isn't available publicly. */
|
||||
/* This is a bug and will be fixed in a forthcoming release. */
|
||||
/* */
|
||||
FT_EXPORT( void )
|
||||
FT_Set_Debug_Hook( FT_Library library,
|
||||
FT_UInt hook_index,
|
||||
FT_DebugHook_Func debug_hook );
|
||||
|
||||
|
||||
/*************************************************************************/
|
||||
/* */
|
||||
/* <Function> */
|
||||
/* FT_Add_Default_Modules */
|
||||
/* */
|
||||
/* <Description> */
|
||||
/* Add the set of default drivers to a given library object. */
|
||||
/* This is only useful when you create a library object with */
|
||||
/* @FT_New_Library (usually to plug a custom memory manager). */
|
||||
/* */
|
||||
/* <InOut> */
|
||||
/* library :: A handle to a new library object. */
|
||||
/* */
|
||||
FT_EXPORT( void )
|
||||
FT_Add_Default_Modules( FT_Library library );
|
||||
|
||||
|
||||
|
||||
/**************************************************************************
|
||||
*
|
||||
* @section:
|
||||
* truetype_engine
|
||||
*
|
||||
* @title:
|
||||
* The TrueType Engine
|
||||
*
|
||||
* @abstract:
|
||||
* TrueType bytecode support.
|
||||
*
|
||||
* @description:
|
||||
* This section contains a function used to query the level of TrueType
|
||||
* bytecode support compiled in this version of the library.
|
||||
*
|
||||
*/
|
||||
|
||||
|
||||
/**************************************************************************
|
||||
*
|
||||
* @enum:
|
||||
* FT_TrueTypeEngineType
|
||||
*
|
||||
* @description:
|
||||
* A list of values describing which kind of TrueType bytecode
|
||||
* engine is implemented in a given FT_Library instance. It is used
|
||||
* by the @FT_Get_TrueType_Engine_Type function.
|
||||
*
|
||||
* @values:
|
||||
* FT_TRUETYPE_ENGINE_TYPE_NONE ::
|
||||
* The library doesn't implement any kind of bytecode interpreter.
|
||||
*
|
||||
* FT_TRUETYPE_ENGINE_TYPE_UNPATENTED ::
|
||||
* Deprecated and removed.
|
||||
*
|
||||
* FT_TRUETYPE_ENGINE_TYPE_PATENTED ::
|
||||
* The library implements a bytecode interpreter that covers
|
||||
* the full instruction set of the TrueType virtual machine (this
|
||||
* was governed by patents until May 2010, hence the name).
|
||||
*
|
||||
* @since:
|
||||
* 2.2
|
||||
*
|
||||
*/
|
||||
typedef enum FT_TrueTypeEngineType_
|
||||
{
|
||||
FT_TRUETYPE_ENGINE_TYPE_NONE = 0,
|
||||
FT_TRUETYPE_ENGINE_TYPE_UNPATENTED,
|
||||
FT_TRUETYPE_ENGINE_TYPE_PATENTED
|
||||
|
||||
} FT_TrueTypeEngineType;
|
||||
|
||||
|
||||
/**************************************************************************
|
||||
*
|
||||
* @func:
|
||||
* FT_Get_TrueType_Engine_Type
|
||||
*
|
||||
* @description:
|
||||
* Return an @FT_TrueTypeEngineType value to indicate which level of
|
||||
* the TrueType virtual machine a given library instance supports.
|
||||
*
|
||||
* @input:
|
||||
* library ::
|
||||
* A library instance.
|
||||
*
|
||||
* @return:
|
||||
* A value indicating which level is supported.
|
||||
*
|
||||
* @since:
|
||||
* 2.2
|
||||
*
|
||||
*/
|
||||
FT_EXPORT( FT_TrueTypeEngineType )
|
||||
FT_Get_TrueType_Engine_Type( FT_Library library );
|
||||
|
||||
/* */
|
||||
|
||||
|
||||
FT_END_HEADER
|
||||
|
||||
#endif /* FTMODAPI_H_ */
|
||||
|
||||
|
||||
/* END */
|
||||
194
include/fake/vtcs_root_vienna/freetype2/freetype/ftmoderr.h
Normal file
194
include/fake/vtcs_root_vienna/freetype2/freetype/ftmoderr.h
Normal file
@ -0,0 +1,194 @@
|
||||
/***************************************************************************/
|
||||
/* */
|
||||
/* ftmoderr.h */
|
||||
/* */
|
||||
/* FreeType module error offsets (specification). */
|
||||
/* */
|
||||
/* Copyright 2001-2016 by */
|
||||
/* David Turner, Robert Wilhelm, and Werner Lemberg. */
|
||||
/* */
|
||||
/* This file is part of the FreeType project, and may only be used, */
|
||||
/* modified, and distributed under the terms of the FreeType project */
|
||||
/* license, LICENSE.TXT. By continuing to use, modify, or distribute */
|
||||
/* this file you indicate that you have read the license and */
|
||||
/* understand and accept it fully. */
|
||||
/* */
|
||||
/***************************************************************************/
|
||||
|
||||
|
||||
/*************************************************************************/
|
||||
/* */
|
||||
/* This file is used to define the FreeType module error codes. */
|
||||
/* */
|
||||
/* If the macro FT_CONFIG_OPTION_USE_MODULE_ERRORS in `ftoption.h' is */
|
||||
/* set, the lower byte of an error value identifies the error code as */
|
||||
/* usual. In addition, the higher byte identifies the module. For */
|
||||
/* example, the error `FT_Err_Invalid_File_Format' has value 0x0003, the */
|
||||
/* error `TT_Err_Invalid_File_Format' has value 0x1303, the error */
|
||||
/* `T1_Err_Invalid_File_Format' has value 0x1403, etc. */
|
||||
/* */
|
||||
/* Note that `FT_Err_Ok', `TT_Err_Ok', etc. are always equal to zero, */
|
||||
/* including the high byte. */
|
||||
/* */
|
||||
/* If FT_CONFIG_OPTION_USE_MODULE_ERRORS isn't set, the higher byte of */
|
||||
/* an error value is set to zero. */
|
||||
/* */
|
||||
/* To hide the various `XXX_Err_' prefixes in the source code, FreeType */
|
||||
/* provides some macros in `fttypes.h'. */
|
||||
/* */
|
||||
/* FT_ERR( err ) */
|
||||
/* Add current error module prefix (as defined with the */
|
||||
/* `FT_ERR_PREFIX' macro) to `err'. For example, in the BDF module */
|
||||
/* the line */
|
||||
/* */
|
||||
/* error = FT_ERR( Invalid_Outline ); */
|
||||
/* */
|
||||
/* expands to */
|
||||
/* */
|
||||
/* error = BDF_Err_Invalid_Outline; */
|
||||
/* */
|
||||
/* For simplicity, you can always use `FT_Err_Ok' directly instead */
|
||||
/* of `FT_ERR( Ok )'. */
|
||||
/* */
|
||||
/* FT_ERR_EQ( errcode, err ) */
|
||||
/* FT_ERR_NEQ( errcode, err ) */
|
||||
/* Compare error code `errcode' with the error `err' for equality */
|
||||
/* and inequality, respectively. Example: */
|
||||
/* */
|
||||
/* if ( FT_ERR_EQ( error, Invalid_Outline ) ) */
|
||||
/* ... */
|
||||
/* */
|
||||
/* Using this macro you don't have to think about error prefixes. */
|
||||
/* Of course, if module errors are not active, the above example is */
|
||||
/* the same as */
|
||||
/* */
|
||||
/* if ( error == FT_Err_Invalid_Outline ) */
|
||||
/* ... */
|
||||
/* */
|
||||
/* FT_ERROR_BASE( errcode ) */
|
||||
/* FT_ERROR_MODULE( errcode ) */
|
||||
/* Get base error and module error code, respectively. */
|
||||
/* */
|
||||
/* */
|
||||
/* It can also be used to create a module error message table easily */
|
||||
/* with something like */
|
||||
/* */
|
||||
/* { */
|
||||
/* #undef FTMODERR_H_ */
|
||||
/* #define FT_MODERRDEF( e, v, s ) { FT_Mod_Err_ ## e, s }, */
|
||||
/* #define FT_MODERR_START_LIST { */
|
||||
/* #define FT_MODERR_END_LIST { 0, 0 } }; */
|
||||
/* */
|
||||
/* const struct */
|
||||
/* { */
|
||||
/* int mod_err_offset; */
|
||||
/* const char* mod_err_msg */
|
||||
/* } ft_mod_errors[] = */
|
||||
/* */
|
||||
/* #include FT_MODULE_ERRORS_H */
|
||||
/* } */
|
||||
/* */
|
||||
/*************************************************************************/
|
||||
|
||||
|
||||
#ifndef FTMODERR_H_
|
||||
#define FTMODERR_H_
|
||||
|
||||
|
||||
/*******************************************************************/
|
||||
/*******************************************************************/
|
||||
/***** *****/
|
||||
/***** SETUP MACROS *****/
|
||||
/***** *****/
|
||||
/*******************************************************************/
|
||||
/*******************************************************************/
|
||||
|
||||
|
||||
#undef FT_NEED_EXTERN_C
|
||||
|
||||
#ifndef FT_MODERRDEF
|
||||
|
||||
#ifdef FT_CONFIG_OPTION_USE_MODULE_ERRORS
|
||||
#define FT_MODERRDEF( e, v, s ) FT_Mod_Err_ ## e = v,
|
||||
#else
|
||||
#define FT_MODERRDEF( e, v, s ) FT_Mod_Err_ ## e = 0,
|
||||
#endif
|
||||
|
||||
#define FT_MODERR_START_LIST enum {
|
||||
#define FT_MODERR_END_LIST FT_Mod_Err_Max };
|
||||
|
||||
#ifdef __cplusplus
|
||||
#define FT_NEED_EXTERN_C
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
#endif /* !FT_MODERRDEF */
|
||||
|
||||
|
||||
/*******************************************************************/
|
||||
/*******************************************************************/
|
||||
/***** *****/
|
||||
/***** LIST MODULE ERROR BASES *****/
|
||||
/***** *****/
|
||||
/*******************************************************************/
|
||||
/*******************************************************************/
|
||||
|
||||
|
||||
#ifdef FT_MODERR_START_LIST
|
||||
FT_MODERR_START_LIST
|
||||
#endif
|
||||
|
||||
|
||||
FT_MODERRDEF( Base, 0x000, "base module" )
|
||||
FT_MODERRDEF( Autofit, 0x100, "autofitter module" )
|
||||
FT_MODERRDEF( BDF, 0x200, "BDF module" )
|
||||
FT_MODERRDEF( Bzip2, 0x300, "Bzip2 module" )
|
||||
FT_MODERRDEF( Cache, 0x400, "cache module" )
|
||||
FT_MODERRDEF( CFF, 0x500, "CFF module" )
|
||||
FT_MODERRDEF( CID, 0x600, "CID module" )
|
||||
FT_MODERRDEF( Gzip, 0x700, "Gzip module" )
|
||||
FT_MODERRDEF( LZW, 0x800, "LZW module" )
|
||||
FT_MODERRDEF( OTvalid, 0x900, "OpenType validation module" )
|
||||
FT_MODERRDEF( PCF, 0xA00, "PCF module" )
|
||||
FT_MODERRDEF( PFR, 0xB00, "PFR module" )
|
||||
FT_MODERRDEF( PSaux, 0xC00, "PS auxiliary module" )
|
||||
FT_MODERRDEF( PShinter, 0xD00, "PS hinter module" )
|
||||
FT_MODERRDEF( PSnames, 0xE00, "PS names module" )
|
||||
FT_MODERRDEF( Raster, 0xF00, "raster module" )
|
||||
FT_MODERRDEF( SFNT, 0x1000, "SFNT module" )
|
||||
FT_MODERRDEF( Smooth, 0x1100, "smooth raster module" )
|
||||
FT_MODERRDEF( TrueType, 0x1200, "TrueType module" )
|
||||
FT_MODERRDEF( Type1, 0x1300, "Type 1 module" )
|
||||
FT_MODERRDEF( Type42, 0x1400, "Type 42 module" )
|
||||
FT_MODERRDEF( Winfonts, 0x1500, "Windows FON/FNT module" )
|
||||
FT_MODERRDEF( GXvalid, 0x1600, "GX validation module" )
|
||||
|
||||
|
||||
#ifdef FT_MODERR_END_LIST
|
||||
FT_MODERR_END_LIST
|
||||
#endif
|
||||
|
||||
|
||||
/*******************************************************************/
|
||||
/*******************************************************************/
|
||||
/***** *****/
|
||||
/***** CLEANUP *****/
|
||||
/***** *****/
|
||||
/*******************************************************************/
|
||||
/*******************************************************************/
|
||||
|
||||
|
||||
#ifdef FT_NEED_EXTERN_C
|
||||
}
|
||||
#endif
|
||||
|
||||
#undef FT_MODERR_START_LIST
|
||||
#undef FT_MODERR_END_LIST
|
||||
#undef FT_MODERRDEF
|
||||
#undef FT_NEED_EXTERN_C
|
||||
|
||||
|
||||
#endif /* FTMODERR_H_ */
|
||||
|
||||
|
||||
/* END */
|
||||
204
include/fake/vtcs_root_vienna/freetype2/freetype/ftotval.h
Normal file
204
include/fake/vtcs_root_vienna/freetype2/freetype/ftotval.h
Normal file
@ -0,0 +1,204 @@
|
||||
/***************************************************************************/
|
||||
/* */
|
||||
/* ftotval.h */
|
||||
/* */
|
||||
/* FreeType API for validating OpenType tables (specification). */
|
||||
/* */
|
||||
/* Copyright 2004-2016 by */
|
||||
/* David Turner, Robert Wilhelm, and Werner Lemberg. */
|
||||
/* */
|
||||
/* This file is part of the FreeType project, and may only be used, */
|
||||
/* modified, and distributed under the terms of the FreeType project */
|
||||
/* license, LICENSE.TXT. By continuing to use, modify, or distribute */
|
||||
/* this file you indicate that you have read the license and */
|
||||
/* understand and accept it fully. */
|
||||
/* */
|
||||
/***************************************************************************/
|
||||
|
||||
|
||||
/***************************************************************************/
|
||||
/* */
|
||||
/* */
|
||||
/* Warning: This module might be moved to a different library in the */
|
||||
/* future to avoid a tight dependency between FreeType and the */
|
||||
/* OpenType specification. */
|
||||
/* */
|
||||
/* */
|
||||
/***************************************************************************/
|
||||
|
||||
|
||||
#ifndef FTOTVAL_H_
|
||||
#define FTOTVAL_H_
|
||||
|
||||
#include <ft2build.h>
|
||||
#include FT_FREETYPE_H
|
||||
|
||||
#ifdef FREETYPE_H
|
||||
#error "freetype.h of FreeType 1 has been loaded!"
|
||||
#error "Please fix the directory search order for header files"
|
||||
#error "so that freetype.h of FreeType 2 is found first."
|
||||
#endif
|
||||
|
||||
|
||||
FT_BEGIN_HEADER
|
||||
|
||||
|
||||
/*************************************************************************/
|
||||
/* */
|
||||
/* <Section> */
|
||||
/* ot_validation */
|
||||
/* */
|
||||
/* <Title> */
|
||||
/* OpenType Validation */
|
||||
/* */
|
||||
/* <Abstract> */
|
||||
/* An API to validate OpenType tables. */
|
||||
/* */
|
||||
/* <Description> */
|
||||
/* This section contains the declaration of functions to validate */
|
||||
/* some OpenType tables (BASE, GDEF, GPOS, GSUB, JSTF, MATH). */
|
||||
/* */
|
||||
/* <Order> */
|
||||
/* FT_OpenType_Validate */
|
||||
/* FT_OpenType_Free */
|
||||
/* */
|
||||
/* FT_VALIDATE_OTXXX */
|
||||
/* */
|
||||
/*************************************************************************/
|
||||
|
||||
|
||||
/**********************************************************************
|
||||
*
|
||||
* @enum:
|
||||
* FT_VALIDATE_OTXXX
|
||||
*
|
||||
* @description:
|
||||
* A list of bit-field constants used with @FT_OpenType_Validate to
|
||||
* indicate which OpenType tables should be validated.
|
||||
*
|
||||
* @values:
|
||||
* FT_VALIDATE_BASE ::
|
||||
* Validate BASE table.
|
||||
*
|
||||
* FT_VALIDATE_GDEF ::
|
||||
* Validate GDEF table.
|
||||
*
|
||||
* FT_VALIDATE_GPOS ::
|
||||
* Validate GPOS table.
|
||||
*
|
||||
* FT_VALIDATE_GSUB ::
|
||||
* Validate GSUB table.
|
||||
*
|
||||
* FT_VALIDATE_JSTF ::
|
||||
* Validate JSTF table.
|
||||
*
|
||||
* FT_VALIDATE_MATH ::
|
||||
* Validate MATH table.
|
||||
*
|
||||
* FT_VALIDATE_OT ::
|
||||
* Validate all OpenType tables (BASE, GDEF, GPOS, GSUB, JSTF, MATH).
|
||||
*
|
||||
*/
|
||||
#define FT_VALIDATE_BASE 0x0100
|
||||
#define FT_VALIDATE_GDEF 0x0200
|
||||
#define FT_VALIDATE_GPOS 0x0400
|
||||
#define FT_VALIDATE_GSUB 0x0800
|
||||
#define FT_VALIDATE_JSTF 0x1000
|
||||
#define FT_VALIDATE_MATH 0x2000
|
||||
|
||||
#define FT_VALIDATE_OT ( FT_VALIDATE_BASE | \
|
||||
FT_VALIDATE_GDEF | \
|
||||
FT_VALIDATE_GPOS | \
|
||||
FT_VALIDATE_GSUB | \
|
||||
FT_VALIDATE_JSTF | \
|
||||
FT_VALIDATE_MATH )
|
||||
|
||||
/**********************************************************************
|
||||
*
|
||||
* @function:
|
||||
* FT_OpenType_Validate
|
||||
*
|
||||
* @description:
|
||||
* Validate various OpenType tables to assure that all offsets and
|
||||
* indices are valid. The idea is that a higher-level library that
|
||||
* actually does the text layout can access those tables without
|
||||
* error checking (which can be quite time consuming).
|
||||
*
|
||||
* @input:
|
||||
* face ::
|
||||
* A handle to the input face.
|
||||
*
|
||||
* validation_flags ::
|
||||
* A bit field that specifies the tables to be validated. See
|
||||
* @FT_VALIDATE_OTXXX for possible values.
|
||||
*
|
||||
* @output:
|
||||
* BASE_table ::
|
||||
* A pointer to the BASE table.
|
||||
*
|
||||
* GDEF_table ::
|
||||
* A pointer to the GDEF table.
|
||||
*
|
||||
* GPOS_table ::
|
||||
* A pointer to the GPOS table.
|
||||
*
|
||||
* GSUB_table ::
|
||||
* A pointer to the GSUB table.
|
||||
*
|
||||
* JSTF_table ::
|
||||
* A pointer to the JSTF table.
|
||||
*
|
||||
* @return:
|
||||
* FreeType error code. 0~means success.
|
||||
*
|
||||
* @note:
|
||||
* This function only works with OpenType fonts, returning an error
|
||||
* otherwise.
|
||||
*
|
||||
* After use, the application should deallocate the five tables with
|
||||
* @FT_OpenType_Free. A NULL value indicates that the table either
|
||||
* doesn't exist in the font, or the application hasn't asked for
|
||||
* validation.
|
||||
*/
|
||||
FT_EXPORT( FT_Error )
|
||||
FT_OpenType_Validate( FT_Face face,
|
||||
FT_UInt validation_flags,
|
||||
FT_Bytes *BASE_table,
|
||||
FT_Bytes *GDEF_table,
|
||||
FT_Bytes *GPOS_table,
|
||||
FT_Bytes *GSUB_table,
|
||||
FT_Bytes *JSTF_table );
|
||||
|
||||
/**********************************************************************
|
||||
*
|
||||
* @function:
|
||||
* FT_OpenType_Free
|
||||
*
|
||||
* @description:
|
||||
* Free the buffer allocated by OpenType validator.
|
||||
*
|
||||
* @input:
|
||||
* face ::
|
||||
* A handle to the input face.
|
||||
*
|
||||
* table ::
|
||||
* The pointer to the buffer that is allocated by
|
||||
* @FT_OpenType_Validate.
|
||||
*
|
||||
* @note:
|
||||
* This function must be used to free the buffer allocated by
|
||||
* @FT_OpenType_Validate only.
|
||||
*/
|
||||
FT_EXPORT( void )
|
||||
FT_OpenType_Free( FT_Face face,
|
||||
FT_Bytes table );
|
||||
|
||||
/* */
|
||||
|
||||
|
||||
FT_END_HEADER
|
||||
|
||||
#endif /* FTOTVAL_H_ */
|
||||
|
||||
|
||||
/* END */
|
||||
582
include/fake/vtcs_root_vienna/freetype2/freetype/ftoutln.h
Normal file
582
include/fake/vtcs_root_vienna/freetype2/freetype/ftoutln.h
Normal file
@ -0,0 +1,582 @@
|
||||
/***************************************************************************/
|
||||
/* */
|
||||
/* ftoutln.h */
|
||||
/* */
|
||||
/* Support for the FT_Outline type used to store glyph shapes of */
|
||||
/* most scalable font formats (specification). */
|
||||
/* */
|
||||
/* Copyright 1996-2016 by */
|
||||
/* David Turner, Robert Wilhelm, and Werner Lemberg. */
|
||||
/* */
|
||||
/* This file is part of the FreeType project, and may only be used, */
|
||||
/* modified, and distributed under the terms of the FreeType project */
|
||||
/* license, LICENSE.TXT. By continuing to use, modify, or distribute */
|
||||
/* this file you indicate that you have read the license and */
|
||||
/* understand and accept it fully. */
|
||||
/* */
|
||||
/***************************************************************************/
|
||||
|
||||
|
||||
#ifndef FTOUTLN_H_
|
||||
#define FTOUTLN_H_
|
||||
|
||||
|
||||
#include <ft2build.h>
|
||||
#include FT_FREETYPE_H
|
||||
|
||||
#ifdef FREETYPE_H
|
||||
#error "freetype.h of FreeType 1 has been loaded!"
|
||||
#error "Please fix the directory search order for header files"
|
||||
#error "so that freetype.h of FreeType 2 is found first."
|
||||
#endif
|
||||
|
||||
|
||||
FT_BEGIN_HEADER
|
||||
|
||||
|
||||
/*************************************************************************/
|
||||
/* */
|
||||
/* <Section> */
|
||||
/* outline_processing */
|
||||
/* */
|
||||
/* <Title> */
|
||||
/* Outline Processing */
|
||||
/* */
|
||||
/* <Abstract> */
|
||||
/* Functions to create, transform, and render vectorial glyph images. */
|
||||
/* */
|
||||
/* <Description> */
|
||||
/* This section contains routines used to create and destroy scalable */
|
||||
/* glyph images known as `outlines'. These can also be measured, */
|
||||
/* transformed, and converted into bitmaps and pixmaps. */
|
||||
/* */
|
||||
/* <Order> */
|
||||
/* FT_Outline */
|
||||
/* FT_Outline_New */
|
||||
/* FT_Outline_Done */
|
||||
/* FT_Outline_Copy */
|
||||
/* FT_Outline_Translate */
|
||||
/* FT_Outline_Transform */
|
||||
/* FT_Outline_Embolden */
|
||||
/* FT_Outline_EmboldenXY */
|
||||
/* FT_Outline_Reverse */
|
||||
/* FT_Outline_Check */
|
||||
/* */
|
||||
/* FT_Outline_Get_CBox */
|
||||
/* FT_Outline_Get_BBox */
|
||||
/* */
|
||||
/* FT_Outline_Get_Bitmap */
|
||||
/* FT_Outline_Render */
|
||||
/* FT_Outline_Decompose */
|
||||
/* FT_Outline_Funcs */
|
||||
/* FT_Outline_MoveToFunc */
|
||||
/* FT_Outline_LineToFunc */
|
||||
/* FT_Outline_ConicToFunc */
|
||||
/* FT_Outline_CubicToFunc */
|
||||
/* */
|
||||
/* FT_Orientation */
|
||||
/* FT_Outline_Get_Orientation */
|
||||
/* */
|
||||
/* FT_OUTLINE_XXX */
|
||||
/* */
|
||||
/*************************************************************************/
|
||||
|
||||
|
||||
/*************************************************************************/
|
||||
/* */
|
||||
/* <Function> */
|
||||
/* FT_Outline_Decompose */
|
||||
/* */
|
||||
/* <Description> */
|
||||
/* Walk over an outline's structure to decompose it into individual */
|
||||
/* segments and Bézier arcs. This function also emits `move to' */
|
||||
/* operations to indicate the start of new contours in the outline. */
|
||||
/* */
|
||||
/* <Input> */
|
||||
/* outline :: A pointer to the source target. */
|
||||
/* */
|
||||
/* func_interface :: A table of `emitters', i.e., function pointers */
|
||||
/* called during decomposition to indicate path */
|
||||
/* operations. */
|
||||
/* */
|
||||
/* <InOut> */
|
||||
/* user :: A typeless pointer that is passed to each */
|
||||
/* emitter during the decomposition. It can be */
|
||||
/* used to store the state during the */
|
||||
/* decomposition. */
|
||||
/* */
|
||||
/* <Return> */
|
||||
/* FreeType error code. 0~means success. */
|
||||
/* */
|
||||
/* <Note> */
|
||||
/* A contour that contains a single point only is represented by a */
|
||||
/* `move to' operation followed by `line to' to the same point. In */
|
||||
/* most cases, it is best to filter this out before using the */
|
||||
/* outline for stroking purposes (otherwise it would result in a */
|
||||
/* visible dot when round caps are used). */
|
||||
/* */
|
||||
/* Similarly, the function returns success for an empty outline also */
|
||||
/* (doing nothing, this is, not calling any emitter); if necessary, */
|
||||
/* you should filter this out, too. */
|
||||
/* */
|
||||
FT_EXPORT( FT_Error )
|
||||
FT_Outline_Decompose( FT_Outline* outline,
|
||||
const FT_Outline_Funcs* func_interface,
|
||||
void* user );
|
||||
|
||||
|
||||
/*************************************************************************/
|
||||
/* */
|
||||
/* <Function> */
|
||||
/* FT_Outline_New */
|
||||
/* */
|
||||
/* <Description> */
|
||||
/* Create a new outline of a given size. */
|
||||
/* */
|
||||
/* <Input> */
|
||||
/* library :: A handle to the library object from where the */
|
||||
/* outline is allocated. Note however that the new */
|
||||
/* outline will *not* necessarily be *freed*, when */
|
||||
/* destroying the library, by @FT_Done_FreeType. */
|
||||
/* */
|
||||
/* numPoints :: The maximum number of points within the outline. */
|
||||
/* Must be smaller than or equal to 0xFFFF (65535). */
|
||||
/* */
|
||||
/* numContours :: The maximum number of contours within the outline. */
|
||||
/* This value must be in the range 0 to `numPoints'. */
|
||||
/* */
|
||||
/* <Output> */
|
||||
/* anoutline :: A handle to the new outline. */
|
||||
/* */
|
||||
/* <Return> */
|
||||
/* FreeType error code. 0~means success. */
|
||||
/* */
|
||||
/* <Note> */
|
||||
/* The reason why this function takes a `library' parameter is simply */
|
||||
/* to use the library's memory allocator. */
|
||||
/* */
|
||||
FT_EXPORT( FT_Error )
|
||||
FT_Outline_New( FT_Library library,
|
||||
FT_UInt numPoints,
|
||||
FT_Int numContours,
|
||||
FT_Outline *anoutline );
|
||||
|
||||
|
||||
FT_EXPORT( FT_Error )
|
||||
FT_Outline_New_Internal( FT_Memory memory,
|
||||
FT_UInt numPoints,
|
||||
FT_Int numContours,
|
||||
FT_Outline *anoutline );
|
||||
|
||||
|
||||
/*************************************************************************/
|
||||
/* */
|
||||
/* <Function> */
|
||||
/* FT_Outline_Done */
|
||||
/* */
|
||||
/* <Description> */
|
||||
/* Destroy an outline created with @FT_Outline_New. */
|
||||
/* */
|
||||
/* <Input> */
|
||||
/* library :: A handle of the library object used to allocate the */
|
||||
/* outline. */
|
||||
/* */
|
||||
/* outline :: A pointer to the outline object to be discarded. */
|
||||
/* */
|
||||
/* <Return> */
|
||||
/* FreeType error code. 0~means success. */
|
||||
/* */
|
||||
/* <Note> */
|
||||
/* If the outline's `owner' field is not set, only the outline */
|
||||
/* descriptor will be released. */
|
||||
/* */
|
||||
/* The reason why this function takes an `library' parameter is */
|
||||
/* simply to use ft_mem_free(). */
|
||||
/* */
|
||||
FT_EXPORT( FT_Error )
|
||||
FT_Outline_Done( FT_Library library,
|
||||
FT_Outline* outline );
|
||||
|
||||
|
||||
FT_EXPORT( FT_Error )
|
||||
FT_Outline_Done_Internal( FT_Memory memory,
|
||||
FT_Outline* outline );
|
||||
|
||||
|
||||
/*************************************************************************/
|
||||
/* */
|
||||
/* <Function> */
|
||||
/* FT_Outline_Check */
|
||||
/* */
|
||||
/* <Description> */
|
||||
/* Check the contents of an outline descriptor. */
|
||||
/* */
|
||||
/* <Input> */
|
||||
/* outline :: A handle to a source outline. */
|
||||
/* */
|
||||
/* <Return> */
|
||||
/* FreeType error code. 0~means success. */
|
||||
/* */
|
||||
/* <Note> */
|
||||
/* An empty outline, or an outline with a single point only is also */
|
||||
/* valid. */
|
||||
/* */
|
||||
FT_EXPORT( FT_Error )
|
||||
FT_Outline_Check( FT_Outline* outline );
|
||||
|
||||
|
||||
/*************************************************************************/
|
||||
/* */
|
||||
/* <Function> */
|
||||
/* FT_Outline_Get_CBox */
|
||||
/* */
|
||||
/* <Description> */
|
||||
/* Return an outline's `control box'. The control box encloses all */
|
||||
/* the outline's points, including Bézier control points. Though it */
|
||||
/* coincides with the exact bounding box for most glyphs, it can be */
|
||||
/* slightly larger in some situations (like when rotating an outline */
|
||||
/* that contains Bézier outside arcs). */
|
||||
/* */
|
||||
/* Computing the control box is very fast, while getting the bounding */
|
||||
/* box can take much more time as it needs to walk over all segments */
|
||||
/* and arcs in the outline. To get the latter, you can use the */
|
||||
/* `ftbbox' component, which is dedicated to this single task. */
|
||||
/* */
|
||||
/* <Input> */
|
||||
/* outline :: A pointer to the source outline descriptor. */
|
||||
/* */
|
||||
/* <Output> */
|
||||
/* acbox :: The outline's control box. */
|
||||
/* */
|
||||
/* <Note> */
|
||||
/* See @FT_Glyph_Get_CBox for a discussion of tricky fonts. */
|
||||
/* */
|
||||
FT_EXPORT( void )
|
||||
FT_Outline_Get_CBox( const FT_Outline* outline,
|
||||
FT_BBox *acbox );
|
||||
|
||||
|
||||
/*************************************************************************/
|
||||
/* */
|
||||
/* <Function> */
|
||||
/* FT_Outline_Translate */
|
||||
/* */
|
||||
/* <Description> */
|
||||
/* Apply a simple translation to the points of an outline. */
|
||||
/* */
|
||||
/* <InOut> */
|
||||
/* outline :: A pointer to the target outline descriptor. */
|
||||
/* */
|
||||
/* <Input> */
|
||||
/* xOffset :: The horizontal offset. */
|
||||
/* */
|
||||
/* yOffset :: The vertical offset. */
|
||||
/* */
|
||||
FT_EXPORT( void )
|
||||
FT_Outline_Translate( const FT_Outline* outline,
|
||||
FT_Pos xOffset,
|
||||
FT_Pos yOffset );
|
||||
|
||||
|
||||
/*************************************************************************/
|
||||
/* */
|
||||
/* <Function> */
|
||||
/* FT_Outline_Copy */
|
||||
/* */
|
||||
/* <Description> */
|
||||
/* Copy an outline into another one. Both objects must have the */
|
||||
/* same sizes (number of points & number of contours) when this */
|
||||
/* function is called. */
|
||||
/* */
|
||||
/* <Input> */
|
||||
/* source :: A handle to the source outline. */
|
||||
/* */
|
||||
/* <Output> */
|
||||
/* target :: A handle to the target outline. */
|
||||
/* */
|
||||
/* <Return> */
|
||||
/* FreeType error code. 0~means success. */
|
||||
/* */
|
||||
FT_EXPORT( FT_Error )
|
||||
FT_Outline_Copy( const FT_Outline* source,
|
||||
FT_Outline *target );
|
||||
|
||||
|
||||
/*************************************************************************/
|
||||
/* */
|
||||
/* <Function> */
|
||||
/* FT_Outline_Transform */
|
||||
/* */
|
||||
/* <Description> */
|
||||
/* Apply a simple 2x2 matrix to all of an outline's points. Useful */
|
||||
/* for applying rotations, slanting, flipping, etc. */
|
||||
/* */
|
||||
/* <InOut> */
|
||||
/* outline :: A pointer to the target outline descriptor. */
|
||||
/* */
|
||||
/* <Input> */
|
||||
/* matrix :: A pointer to the transformation matrix. */
|
||||
/* */
|
||||
/* <Note> */
|
||||
/* You can use @FT_Outline_Translate if you need to translate the */
|
||||
/* outline's points. */
|
||||
/* */
|
||||
FT_EXPORT( void )
|
||||
FT_Outline_Transform( const FT_Outline* outline,
|
||||
const FT_Matrix* matrix );
|
||||
|
||||
|
||||
/*************************************************************************/
|
||||
/* */
|
||||
/* <Function> */
|
||||
/* FT_Outline_Embolden */
|
||||
/* */
|
||||
/* <Description> */
|
||||
/* Embolden an outline. The new outline will be at most 4~times */
|
||||
/* `strength' pixels wider and higher. You may think of the left and */
|
||||
/* bottom borders as unchanged. */
|
||||
/* */
|
||||
/* Negative `strength' values to reduce the outline thickness are */
|
||||
/* possible also. */
|
||||
/* */
|
||||
/* <InOut> */
|
||||
/* outline :: A handle to the target outline. */
|
||||
/* */
|
||||
/* <Input> */
|
||||
/* strength :: How strong the glyph is emboldened. Expressed in */
|
||||
/* 26.6 pixel format. */
|
||||
/* */
|
||||
/* <Return> */
|
||||
/* FreeType error code. 0~means success. */
|
||||
/* */
|
||||
/* <Note> */
|
||||
/* The used algorithm to increase or decrease the thickness of the */
|
||||
/* glyph doesn't change the number of points; this means that certain */
|
||||
/* situations like acute angles or intersections are sometimes */
|
||||
/* handled incorrectly. */
|
||||
/* */
|
||||
/* If you need `better' metrics values you should call */
|
||||
/* @FT_Outline_Get_CBox or @FT_Outline_Get_BBox. */
|
||||
/* */
|
||||
/* Example call: */
|
||||
/* */
|
||||
/* { */
|
||||
/* FT_Load_Glyph( face, index, FT_LOAD_DEFAULT ); */
|
||||
/* if ( face->glyph->format == FT_GLYPH_FORMAT_OUTLINE ) */
|
||||
/* FT_Outline_Embolden( &face->glyph->outline, strength ); */
|
||||
/* } */
|
||||
/* */
|
||||
/* To get meaningful results, font scaling values must be set with */
|
||||
/* functions like @FT_Set_Char_Size before calling FT_Render_Glyph. */
|
||||
/* */
|
||||
FT_EXPORT( FT_Error )
|
||||
FT_Outline_Embolden( FT_Outline* outline,
|
||||
FT_Pos strength );
|
||||
|
||||
|
||||
/*************************************************************************/
|
||||
/* */
|
||||
/* <Function> */
|
||||
/* FT_Outline_EmboldenXY */
|
||||
/* */
|
||||
/* <Description> */
|
||||
/* Embolden an outline. The new outline will be `xstrength' pixels */
|
||||
/* wider and `ystrength' pixels higher. Otherwise, it is similar to */
|
||||
/* @FT_Outline_Embolden, which uses the same strength in both */
|
||||
/* directions. */
|
||||
/* */
|
||||
FT_EXPORT( FT_Error )
|
||||
FT_Outline_EmboldenXY( FT_Outline* outline,
|
||||
FT_Pos xstrength,
|
||||
FT_Pos ystrength );
|
||||
|
||||
|
||||
/*************************************************************************/
|
||||
/* */
|
||||
/* <Function> */
|
||||
/* FT_Outline_Reverse */
|
||||
/* */
|
||||
/* <Description> */
|
||||
/* Reverse the drawing direction of an outline. This is used to */
|
||||
/* ensure consistent fill conventions for mirrored glyphs. */
|
||||
/* */
|
||||
/* <InOut> */
|
||||
/* outline :: A pointer to the target outline descriptor. */
|
||||
/* */
|
||||
/* <Note> */
|
||||
/* This function toggles the bit flag @FT_OUTLINE_REVERSE_FILL in */
|
||||
/* the outline's `flags' field. */
|
||||
/* */
|
||||
/* It shouldn't be used by a normal client application, unless it */
|
||||
/* knows what it is doing. */
|
||||
/* */
|
||||
FT_EXPORT( void )
|
||||
FT_Outline_Reverse( FT_Outline* outline );
|
||||
|
||||
|
||||
/*************************************************************************/
|
||||
/* */
|
||||
/* <Function> */
|
||||
/* FT_Outline_Get_Bitmap */
|
||||
/* */
|
||||
/* <Description> */
|
||||
/* Render an outline within a bitmap. The outline's image is simply */
|
||||
/* OR-ed to the target bitmap. */
|
||||
/* */
|
||||
/* <Input> */
|
||||
/* library :: A handle to a FreeType library object. */
|
||||
/* */
|
||||
/* outline :: A pointer to the source outline descriptor. */
|
||||
/* */
|
||||
/* <InOut> */
|
||||
/* abitmap :: A pointer to the target bitmap descriptor. */
|
||||
/* */
|
||||
/* <Return> */
|
||||
/* FreeType error code. 0~means success. */
|
||||
/* */
|
||||
/* <Note> */
|
||||
/* This function does NOT CREATE the bitmap, it only renders an */
|
||||
/* outline image within the one you pass to it! Consequently, the */
|
||||
/* various fields in `abitmap' should be set accordingly. */
|
||||
/* */
|
||||
/* It will use the raster corresponding to the default glyph format. */
|
||||
/* */
|
||||
/* The value of the `num_grays' field in `abitmap' is ignored. If */
|
||||
/* you select the gray-level rasterizer, and you want less than 256 */
|
||||
/* gray levels, you have to use @FT_Outline_Render directly. */
|
||||
/* */
|
||||
FT_EXPORT( FT_Error )
|
||||
FT_Outline_Get_Bitmap( FT_Library library,
|
||||
FT_Outline* outline,
|
||||
const FT_Bitmap *abitmap );
|
||||
|
||||
|
||||
/*************************************************************************/
|
||||
/* */
|
||||
/* <Function> */
|
||||
/* FT_Outline_Render */
|
||||
/* */
|
||||
/* <Description> */
|
||||
/* Render an outline within a bitmap using the current scan-convert. */
|
||||
/* This function uses an @FT_Raster_Params structure as an argument, */
|
||||
/* allowing advanced features like direct composition, translucency, */
|
||||
/* etc. */
|
||||
/* */
|
||||
/* <Input> */
|
||||
/* library :: A handle to a FreeType library object. */
|
||||
/* */
|
||||
/* outline :: A pointer to the source outline descriptor. */
|
||||
/* */
|
||||
/* <InOut> */
|
||||
/* params :: A pointer to an @FT_Raster_Params structure used to */
|
||||
/* describe the rendering operation. */
|
||||
/* */
|
||||
/* <Return> */
|
||||
/* FreeType error code. 0~means success. */
|
||||
/* */
|
||||
/* <Note> */
|
||||
/* You should know what you are doing and how @FT_Raster_Params works */
|
||||
/* to use this function. */
|
||||
/* */
|
||||
/* The field `params.source' will be set to `outline' before the scan */
|
||||
/* converter is called, which means that the value you give to it is */
|
||||
/* actually ignored. */
|
||||
/* */
|
||||
/* The gray-level rasterizer always uses 256 gray levels. If you */
|
||||
/* want less gray levels, you have to provide your own span callback. */
|
||||
/* See the @FT_RASTER_FLAG_DIRECT value of the `flags' field in the */
|
||||
/* @FT_Raster_Params structure for more details. */
|
||||
/* */
|
||||
FT_EXPORT( FT_Error )
|
||||
FT_Outline_Render( FT_Library library,
|
||||
FT_Outline* outline,
|
||||
FT_Raster_Params* params );
|
||||
|
||||
|
||||
/**************************************************************************
|
||||
*
|
||||
* @enum:
|
||||
* FT_Orientation
|
||||
*
|
||||
* @description:
|
||||
* A list of values used to describe an outline's contour orientation.
|
||||
*
|
||||
* The TrueType and PostScript specifications use different conventions
|
||||
* to determine whether outline contours should be filled or unfilled.
|
||||
*
|
||||
* @values:
|
||||
* FT_ORIENTATION_TRUETYPE ::
|
||||
* According to the TrueType specification, clockwise contours must
|
||||
* be filled, and counter-clockwise ones must be unfilled.
|
||||
*
|
||||
* FT_ORIENTATION_POSTSCRIPT ::
|
||||
* According to the PostScript specification, counter-clockwise contours
|
||||
* must be filled, and clockwise ones must be unfilled.
|
||||
*
|
||||
* FT_ORIENTATION_FILL_RIGHT ::
|
||||
* This is identical to @FT_ORIENTATION_TRUETYPE, but is used to
|
||||
* remember that in TrueType, everything that is to the right of
|
||||
* the drawing direction of a contour must be filled.
|
||||
*
|
||||
* FT_ORIENTATION_FILL_LEFT ::
|
||||
* This is identical to @FT_ORIENTATION_POSTSCRIPT, but is used to
|
||||
* remember that in PostScript, everything that is to the left of
|
||||
* the drawing direction of a contour must be filled.
|
||||
*
|
||||
* FT_ORIENTATION_NONE ::
|
||||
* The orientation cannot be determined. That is, different parts of
|
||||
* the glyph have different orientation.
|
||||
*
|
||||
*/
|
||||
typedef enum FT_Orientation_
|
||||
{
|
||||
FT_ORIENTATION_TRUETYPE = 0,
|
||||
FT_ORIENTATION_POSTSCRIPT = 1,
|
||||
FT_ORIENTATION_FILL_RIGHT = FT_ORIENTATION_TRUETYPE,
|
||||
FT_ORIENTATION_FILL_LEFT = FT_ORIENTATION_POSTSCRIPT,
|
||||
FT_ORIENTATION_NONE
|
||||
|
||||
} FT_Orientation;
|
||||
|
||||
|
||||
/**************************************************************************
|
||||
*
|
||||
* @function:
|
||||
* FT_Outline_Get_Orientation
|
||||
*
|
||||
* @description:
|
||||
* This function analyzes a glyph outline and tries to compute its
|
||||
* fill orientation (see @FT_Orientation). This is done by integrating
|
||||
* the total area covered by the outline. The positive integral
|
||||
* corresponds to the clockwise orientation and @FT_ORIENTATION_POSTSCRIPT
|
||||
* is returned. The negative integral corresponds to the counter-clockwise
|
||||
* orientation and @FT_ORIENTATION_TRUETYPE is returned.
|
||||
*
|
||||
* Note that this will return @FT_ORIENTATION_TRUETYPE for empty
|
||||
* outlines.
|
||||
*
|
||||
* @input:
|
||||
* outline ::
|
||||
* A handle to the source outline.
|
||||
*
|
||||
* @return:
|
||||
* The orientation.
|
||||
*
|
||||
*/
|
||||
FT_EXPORT( FT_Orientation )
|
||||
FT_Outline_Get_Orientation( FT_Outline* outline );
|
||||
|
||||
/* */
|
||||
|
||||
|
||||
FT_END_HEADER
|
||||
|
||||
#endif /* FTOUTLN_H_ */
|
||||
|
||||
|
||||
/* END */
|
||||
|
||||
|
||||
/* Local Variables: */
|
||||
/* coding: utf-8 */
|
||||
/* End: */
|
||||
172
include/fake/vtcs_root_vienna/freetype2/freetype/ftpfr.h
Normal file
172
include/fake/vtcs_root_vienna/freetype2/freetype/ftpfr.h
Normal file
@ -0,0 +1,172 @@
|
||||
/***************************************************************************/
|
||||
/* */
|
||||
/* ftpfr.h */
|
||||
/* */
|
||||
/* FreeType API for accessing PFR-specific data (specification only). */
|
||||
/* */
|
||||
/* Copyright 2002-2016 by */
|
||||
/* David Turner, Robert Wilhelm, and Werner Lemberg. */
|
||||
/* */
|
||||
/* This file is part of the FreeType project, and may only be used, */
|
||||
/* modified, and distributed under the terms of the FreeType project */
|
||||
/* license, LICENSE.TXT. By continuing to use, modify, or distribute */
|
||||
/* this file you indicate that you have read the license and */
|
||||
/* understand and accept it fully. */
|
||||
/* */
|
||||
/***************************************************************************/
|
||||
|
||||
|
||||
#ifndef FTPFR_H_
|
||||
#define FTPFR_H_
|
||||
|
||||
#include <ft2build.h>
|
||||
#include FT_FREETYPE_H
|
||||
|
||||
#ifdef FREETYPE_H
|
||||
#error "freetype.h of FreeType 1 has been loaded!"
|
||||
#error "Please fix the directory search order for header files"
|
||||
#error "so that freetype.h of FreeType 2 is found first."
|
||||
#endif
|
||||
|
||||
|
||||
FT_BEGIN_HEADER
|
||||
|
||||
|
||||
/*************************************************************************/
|
||||
/* */
|
||||
/* <Section> */
|
||||
/* pfr_fonts */
|
||||
/* */
|
||||
/* <Title> */
|
||||
/* PFR Fonts */
|
||||
/* */
|
||||
/* <Abstract> */
|
||||
/* PFR/TrueDoc specific API. */
|
||||
/* */
|
||||
/* <Description> */
|
||||
/* This section contains the declaration of PFR-specific functions. */
|
||||
/* */
|
||||
/*************************************************************************/
|
||||
|
||||
|
||||
/**********************************************************************
|
||||
*
|
||||
* @function:
|
||||
* FT_Get_PFR_Metrics
|
||||
*
|
||||
* @description:
|
||||
* Return the outline and metrics resolutions of a given PFR face.
|
||||
*
|
||||
* @input:
|
||||
* face :: Handle to the input face. It can be a non-PFR face.
|
||||
*
|
||||
* @output:
|
||||
* aoutline_resolution ::
|
||||
* Outline resolution. This is equivalent to `face->units_per_EM'
|
||||
* for non-PFR fonts. Optional (parameter can be NULL).
|
||||
*
|
||||
* ametrics_resolution ::
|
||||
* Metrics resolution. This is equivalent to `outline_resolution'
|
||||
* for non-PFR fonts. Optional (parameter can be NULL).
|
||||
*
|
||||
* ametrics_x_scale ::
|
||||
* A 16.16 fixed-point number used to scale distance expressed
|
||||
* in metrics units to device sub-pixels. This is equivalent to
|
||||
* `face->size->x_scale', but for metrics only. Optional (parameter
|
||||
* can be NULL).
|
||||
*
|
||||
* ametrics_y_scale ::
|
||||
* Same as `ametrics_x_scale' but for the vertical direction.
|
||||
* optional (parameter can be NULL).
|
||||
*
|
||||
* @return:
|
||||
* FreeType error code. 0~means success.
|
||||
*
|
||||
* @note:
|
||||
* If the input face is not a PFR, this function will return an error.
|
||||
* However, in all cases, it will return valid values.
|
||||
*/
|
||||
FT_EXPORT( FT_Error )
|
||||
FT_Get_PFR_Metrics( FT_Face face,
|
||||
FT_UInt *aoutline_resolution,
|
||||
FT_UInt *ametrics_resolution,
|
||||
FT_Fixed *ametrics_x_scale,
|
||||
FT_Fixed *ametrics_y_scale );
|
||||
|
||||
|
||||
/**********************************************************************
|
||||
*
|
||||
* @function:
|
||||
* FT_Get_PFR_Kerning
|
||||
*
|
||||
* @description:
|
||||
* Return the kerning pair corresponding to two glyphs in a PFR face.
|
||||
* The distance is expressed in metrics units, unlike the result of
|
||||
* @FT_Get_Kerning.
|
||||
*
|
||||
* @input:
|
||||
* face :: A handle to the input face.
|
||||
*
|
||||
* left :: Index of the left glyph.
|
||||
*
|
||||
* right :: Index of the right glyph.
|
||||
*
|
||||
* @output:
|
||||
* avector :: A kerning vector.
|
||||
*
|
||||
* @return:
|
||||
* FreeType error code. 0~means success.
|
||||
*
|
||||
* @note:
|
||||
* This function always return distances in original PFR metrics
|
||||
* units. This is unlike @FT_Get_Kerning with the @FT_KERNING_UNSCALED
|
||||
* mode, which always returns distances converted to outline units.
|
||||
*
|
||||
* You can use the value of the `x_scale' and `y_scale' parameters
|
||||
* returned by @FT_Get_PFR_Metrics to scale these to device sub-pixels.
|
||||
*/
|
||||
FT_EXPORT( FT_Error )
|
||||
FT_Get_PFR_Kerning( FT_Face face,
|
||||
FT_UInt left,
|
||||
FT_UInt right,
|
||||
FT_Vector *avector );
|
||||
|
||||
|
||||
/**********************************************************************
|
||||
*
|
||||
* @function:
|
||||
* FT_Get_PFR_Advance
|
||||
*
|
||||
* @description:
|
||||
* Return a given glyph advance, expressed in original metrics units,
|
||||
* from a PFR font.
|
||||
*
|
||||
* @input:
|
||||
* face :: A handle to the input face.
|
||||
*
|
||||
* gindex :: The glyph index.
|
||||
*
|
||||
* @output:
|
||||
* aadvance :: The glyph advance in metrics units.
|
||||
*
|
||||
* @return:
|
||||
* FreeType error code. 0~means success.
|
||||
*
|
||||
* @note:
|
||||
* You can use the `x_scale' or `y_scale' results of @FT_Get_PFR_Metrics
|
||||
* to convert the advance to device sub-pixels (i.e., 1/64th of pixels).
|
||||
*/
|
||||
FT_EXPORT( FT_Error )
|
||||
FT_Get_PFR_Advance( FT_Face face,
|
||||
FT_UInt gindex,
|
||||
FT_Pos *aadvance );
|
||||
|
||||
/* */
|
||||
|
||||
|
||||
FT_END_HEADER
|
||||
|
||||
#endif /* FTPFR_H_ */
|
||||
|
||||
|
||||
/* END */
|
||||
233
include/fake/vtcs_root_vienna/freetype2/freetype/ftrender.h
Normal file
233
include/fake/vtcs_root_vienna/freetype2/freetype/ftrender.h
Normal file
@ -0,0 +1,233 @@
|
||||
/***************************************************************************/
|
||||
/* */
|
||||
/* ftrender.h */
|
||||
/* */
|
||||
/* FreeType renderer modules public interface (specification). */
|
||||
/* */
|
||||
/* Copyright 1996-2016 by */
|
||||
/* David Turner, Robert Wilhelm, and Werner Lemberg. */
|
||||
/* */
|
||||
/* This file is part of the FreeType project, and may only be used, */
|
||||
/* modified, and distributed under the terms of the FreeType project */
|
||||
/* license, LICENSE.TXT. By continuing to use, modify, or distribute */
|
||||
/* this file you indicate that you have read the license and */
|
||||
/* understand and accept it fully. */
|
||||
/* */
|
||||
/***************************************************************************/
|
||||
|
||||
|
||||
#ifndef FTRENDER_H_
|
||||
#define FTRENDER_H_
|
||||
|
||||
|
||||
#include <ft2build.h>
|
||||
#include FT_MODULE_H
|
||||
#include FT_GLYPH_H
|
||||
|
||||
|
||||
FT_BEGIN_HEADER
|
||||
|
||||
|
||||
/*************************************************************************/
|
||||
/* */
|
||||
/* <Section> */
|
||||
/* module_management */
|
||||
/* */
|
||||
/*************************************************************************/
|
||||
|
||||
|
||||
/* create a new glyph object */
|
||||
typedef FT_Error
|
||||
(*FT_Glyph_InitFunc)( FT_Glyph glyph,
|
||||
FT_GlyphSlot slot );
|
||||
|
||||
/* destroys a given glyph object */
|
||||
typedef void
|
||||
(*FT_Glyph_DoneFunc)( FT_Glyph glyph );
|
||||
|
||||
typedef void
|
||||
(*FT_Glyph_TransformFunc)( FT_Glyph glyph,
|
||||
const FT_Matrix* matrix,
|
||||
const FT_Vector* delta );
|
||||
|
||||
typedef void
|
||||
(*FT_Glyph_GetBBoxFunc)( FT_Glyph glyph,
|
||||
FT_BBox* abbox );
|
||||
|
||||
typedef FT_Error
|
||||
(*FT_Glyph_CopyFunc)( FT_Glyph source,
|
||||
FT_Glyph target );
|
||||
|
||||
typedef FT_Error
|
||||
(*FT_Glyph_PrepareFunc)( FT_Glyph glyph,
|
||||
FT_GlyphSlot slot );
|
||||
|
||||
/* deprecated */
|
||||
#define FT_Glyph_Init_Func FT_Glyph_InitFunc
|
||||
#define FT_Glyph_Done_Func FT_Glyph_DoneFunc
|
||||
#define FT_Glyph_Transform_Func FT_Glyph_TransformFunc
|
||||
#define FT_Glyph_BBox_Func FT_Glyph_GetBBoxFunc
|
||||
#define FT_Glyph_Copy_Func FT_Glyph_CopyFunc
|
||||
#define FT_Glyph_Prepare_Func FT_Glyph_PrepareFunc
|
||||
|
||||
|
||||
struct FT_Glyph_Class_
|
||||
{
|
||||
FT_Long glyph_size;
|
||||
FT_Glyph_Format glyph_format;
|
||||
|
||||
FT_Glyph_InitFunc glyph_init;
|
||||
FT_Glyph_DoneFunc glyph_done;
|
||||
FT_Glyph_CopyFunc glyph_copy;
|
||||
FT_Glyph_TransformFunc glyph_transform;
|
||||
FT_Glyph_GetBBoxFunc glyph_bbox;
|
||||
FT_Glyph_PrepareFunc glyph_prepare;
|
||||
};
|
||||
|
||||
|
||||
typedef FT_Error
|
||||
(*FT_Renderer_RenderFunc)( FT_Renderer renderer,
|
||||
FT_GlyphSlot slot,
|
||||
FT_UInt mode,
|
||||
const FT_Vector* origin );
|
||||
|
||||
typedef FT_Error
|
||||
(*FT_Renderer_TransformFunc)( FT_Renderer renderer,
|
||||
FT_GlyphSlot slot,
|
||||
const FT_Matrix* matrix,
|
||||
const FT_Vector* delta );
|
||||
|
||||
|
||||
typedef void
|
||||
(*FT_Renderer_GetCBoxFunc)( FT_Renderer renderer,
|
||||
FT_GlyphSlot slot,
|
||||
FT_BBox* cbox );
|
||||
|
||||
|
||||
typedef FT_Error
|
||||
(*FT_Renderer_SetModeFunc)( FT_Renderer renderer,
|
||||
FT_ULong mode_tag,
|
||||
FT_Pointer mode_ptr );
|
||||
|
||||
/* deprecated identifiers */
|
||||
#define FTRenderer_render FT_Renderer_RenderFunc
|
||||
#define FTRenderer_transform FT_Renderer_TransformFunc
|
||||
#define FTRenderer_getCBox FT_Renderer_GetCBoxFunc
|
||||
#define FTRenderer_setMode FT_Renderer_SetModeFunc
|
||||
|
||||
|
||||
/*************************************************************************/
|
||||
/* */
|
||||
/* <Struct> */
|
||||
/* FT_Renderer_Class */
|
||||
/* */
|
||||
/* <Description> */
|
||||
/* The renderer module class descriptor. */
|
||||
/* */
|
||||
/* <Fields> */
|
||||
/* root :: The root @FT_Module_Class fields. */
|
||||
/* */
|
||||
/* glyph_format :: The glyph image format this renderer handles. */
|
||||
/* */
|
||||
/* render_glyph :: A method used to render the image that is in a */
|
||||
/* given glyph slot into a bitmap. */
|
||||
/* */
|
||||
/* transform_glyph :: A method used to transform the image that is in */
|
||||
/* a given glyph slot. */
|
||||
/* */
|
||||
/* get_glyph_cbox :: A method used to access the glyph's cbox. */
|
||||
/* */
|
||||
/* set_mode :: A method used to pass additional parameters. */
|
||||
/* */
|
||||
/* raster_class :: For @FT_GLYPH_FORMAT_OUTLINE renderers only. */
|
||||
/* This is a pointer to its raster's class. */
|
||||
/* */
|
||||
typedef struct FT_Renderer_Class_
|
||||
{
|
||||
FT_Module_Class root;
|
||||
|
||||
FT_Glyph_Format glyph_format;
|
||||
|
||||
FT_Renderer_RenderFunc render_glyph;
|
||||
FT_Renderer_TransformFunc transform_glyph;
|
||||
FT_Renderer_GetCBoxFunc get_glyph_cbox;
|
||||
FT_Renderer_SetModeFunc set_mode;
|
||||
|
||||
FT_Raster_Funcs* raster_class;
|
||||
|
||||
} FT_Renderer_Class;
|
||||
|
||||
|
||||
/*************************************************************************/
|
||||
/* */
|
||||
/* <Function> */
|
||||
/* FT_Get_Renderer */
|
||||
/* */
|
||||
/* <Description> */
|
||||
/* Retrieve the current renderer for a given glyph format. */
|
||||
/* */
|
||||
/* <Input> */
|
||||
/* library :: A handle to the library object. */
|
||||
/* */
|
||||
/* format :: The glyph format. */
|
||||
/* */
|
||||
/* <Return> */
|
||||
/* A renderer handle. 0~if none found. */
|
||||
/* */
|
||||
/* <Note> */
|
||||
/* An error will be returned if a module already exists by that name, */
|
||||
/* or if the module requires a version of FreeType that is too great. */
|
||||
/* */
|
||||
/* To add a new renderer, simply use @FT_Add_Module. To retrieve a */
|
||||
/* renderer by its name, use @FT_Get_Module. */
|
||||
/* */
|
||||
FT_EXPORT( FT_Renderer )
|
||||
FT_Get_Renderer( FT_Library library,
|
||||
FT_Glyph_Format format );
|
||||
|
||||
|
||||
/*************************************************************************/
|
||||
/* */
|
||||
/* <Function> */
|
||||
/* FT_Set_Renderer */
|
||||
/* */
|
||||
/* <Description> */
|
||||
/* Set the current renderer to use, and set additional mode. */
|
||||
/* */
|
||||
/* <InOut> */
|
||||
/* library :: A handle to the library object. */
|
||||
/* */
|
||||
/* <Input> */
|
||||
/* renderer :: A handle to the renderer object. */
|
||||
/* */
|
||||
/* num_params :: The number of additional parameters. */
|
||||
/* */
|
||||
/* parameters :: Additional parameters. */
|
||||
/* */
|
||||
/* <Return> */
|
||||
/* FreeType error code. 0~means success. */
|
||||
/* */
|
||||
/* <Note> */
|
||||
/* In case of success, the renderer will be used to convert glyph */
|
||||
/* images in the renderer's known format into bitmaps. */
|
||||
/* */
|
||||
/* This doesn't change the current renderer for other formats. */
|
||||
/* */
|
||||
/* Currently, no FreeType renderer module uses `parameters'; you */
|
||||
/* should thus always pass NULL as the value. */
|
||||
/* */
|
||||
FT_EXPORT( FT_Error )
|
||||
FT_Set_Renderer( FT_Library library,
|
||||
FT_Renderer renderer,
|
||||
FT_UInt num_params,
|
||||
FT_Parameter* parameters );
|
||||
|
||||
/* */
|
||||
|
||||
|
||||
FT_END_HEADER
|
||||
|
||||
#endif /* FTRENDER_H_ */
|
||||
|
||||
|
||||
/* END */
|
||||
159
include/fake/vtcs_root_vienna/freetype2/freetype/ftsizes.h
Normal file
159
include/fake/vtcs_root_vienna/freetype2/freetype/ftsizes.h
Normal file
@ -0,0 +1,159 @@
|
||||
/***************************************************************************/
|
||||
/* */
|
||||
/* ftsizes.h */
|
||||
/* */
|
||||
/* FreeType size objects management (specification). */
|
||||
/* */
|
||||
/* Copyright 1996-2016 by */
|
||||
/* David Turner, Robert Wilhelm, and Werner Lemberg. */
|
||||
/* */
|
||||
/* This file is part of the FreeType project, and may only be used, */
|
||||
/* modified, and distributed under the terms of the FreeType project */
|
||||
/* license, LICENSE.TXT. By continuing to use, modify, or distribute */
|
||||
/* this file you indicate that you have read the license and */
|
||||
/* understand and accept it fully. */
|
||||
/* */
|
||||
/***************************************************************************/
|
||||
|
||||
|
||||
/*************************************************************************/
|
||||
/* */
|
||||
/* Typical application would normally not need to use these functions. */
|
||||
/* However, they have been placed in a public API for the rare cases */
|
||||
/* where they are needed. */
|
||||
/* */
|
||||
/*************************************************************************/
|
||||
|
||||
|
||||
#ifndef FTSIZES_H_
|
||||
#define FTSIZES_H_
|
||||
|
||||
|
||||
#include <ft2build.h>
|
||||
#include FT_FREETYPE_H
|
||||
|
||||
#ifdef FREETYPE_H
|
||||
#error "freetype.h of FreeType 1 has been loaded!"
|
||||
#error "Please fix the directory search order for header files"
|
||||
#error "so that freetype.h of FreeType 2 is found first."
|
||||
#endif
|
||||
|
||||
|
||||
FT_BEGIN_HEADER
|
||||
|
||||
|
||||
/*************************************************************************/
|
||||
/* */
|
||||
/* <Section> */
|
||||
/* sizes_management */
|
||||
/* */
|
||||
/* <Title> */
|
||||
/* Size Management */
|
||||
/* */
|
||||
/* <Abstract> */
|
||||
/* Managing multiple sizes per face. */
|
||||
/* */
|
||||
/* <Description> */
|
||||
/* When creating a new face object (e.g., with @FT_New_Face), an */
|
||||
/* @FT_Size object is automatically created and used to store all */
|
||||
/* pixel-size dependent information, available in the `face->size' */
|
||||
/* field. */
|
||||
/* */
|
||||
/* It is however possible to create more sizes for a given face, */
|
||||
/* mostly in order to manage several character pixel sizes of the */
|
||||
/* same font family and style. See @FT_New_Size and @FT_Done_Size. */
|
||||
/* */
|
||||
/* Note that @FT_Set_Pixel_Sizes and @FT_Set_Char_Size only */
|
||||
/* modify the contents of the current `active' size; you thus need */
|
||||
/* to use @FT_Activate_Size to change it. */
|
||||
/* */
|
||||
/* 99% of applications won't need the functions provided here, */
|
||||
/* especially if they use the caching sub-system, so be cautious */
|
||||
/* when using these. */
|
||||
/* */
|
||||
/*************************************************************************/
|
||||
|
||||
|
||||
/*************************************************************************/
|
||||
/* */
|
||||
/* <Function> */
|
||||
/* FT_New_Size */
|
||||
/* */
|
||||
/* <Description> */
|
||||
/* Create a new size object from a given face object. */
|
||||
/* */
|
||||
/* <Input> */
|
||||
/* face :: A handle to a parent face object. */
|
||||
/* */
|
||||
/* <Output> */
|
||||
/* asize :: A handle to a new size object. */
|
||||
/* */
|
||||
/* <Return> */
|
||||
/* FreeType error code. 0~means success. */
|
||||
/* */
|
||||
/* <Note> */
|
||||
/* You need to call @FT_Activate_Size in order to select the new size */
|
||||
/* for upcoming calls to @FT_Set_Pixel_Sizes, @FT_Set_Char_Size, */
|
||||
/* @FT_Load_Glyph, @FT_Load_Char, etc. */
|
||||
/* */
|
||||
FT_EXPORT( FT_Error )
|
||||
FT_New_Size( FT_Face face,
|
||||
FT_Size* size );
|
||||
|
||||
|
||||
/*************************************************************************/
|
||||
/* */
|
||||
/* <Function> */
|
||||
/* FT_Done_Size */
|
||||
/* */
|
||||
/* <Description> */
|
||||
/* Discard a given size object. Note that @FT_Done_Face */
|
||||
/* automatically discards all size objects allocated with */
|
||||
/* @FT_New_Size. */
|
||||
/* */
|
||||
/* <Input> */
|
||||
/* size :: A handle to a target size object. */
|
||||
/* */
|
||||
/* <Return> */
|
||||
/* FreeType error code. 0~means success. */
|
||||
/* */
|
||||
FT_EXPORT( FT_Error )
|
||||
FT_Done_Size( FT_Size size );
|
||||
|
||||
|
||||
/*************************************************************************/
|
||||
/* */
|
||||
/* <Function> */
|
||||
/* FT_Activate_Size */
|
||||
/* */
|
||||
/* <Description> */
|
||||
/* Even though it is possible to create several size objects for a */
|
||||
/* given face (see @FT_New_Size for details), functions like */
|
||||
/* @FT_Load_Glyph or @FT_Load_Char only use the one that has been */
|
||||
/* activated last to determine the `current character pixel size'. */
|
||||
/* */
|
||||
/* This function can be used to `activate' a previously created size */
|
||||
/* object. */
|
||||
/* */
|
||||
/* <Input> */
|
||||
/* size :: A handle to a target size object. */
|
||||
/* */
|
||||
/* <Return> */
|
||||
/* FreeType error code. 0~means success. */
|
||||
/* */
|
||||
/* <Note> */
|
||||
/* If `face' is the size's parent face object, this function changes */
|
||||
/* the value of `face->size' to the input size handle. */
|
||||
/* */
|
||||
FT_EXPORT( FT_Error )
|
||||
FT_Activate_Size( FT_Size size );
|
||||
|
||||
/* */
|
||||
|
||||
|
||||
FT_END_HEADER
|
||||
|
||||
#endif /* FTSIZES_H_ */
|
||||
|
||||
|
||||
/* END */
|
||||
200
include/fake/vtcs_root_vienna/freetype2/freetype/ftsnames.h
Normal file
200
include/fake/vtcs_root_vienna/freetype2/freetype/ftsnames.h
Normal file
@ -0,0 +1,200 @@
|
||||
/***************************************************************************/
|
||||
/* */
|
||||
/* ftsnames.h */
|
||||
/* */
|
||||
/* Simple interface to access SFNT name tables (which are used */
|
||||
/* to hold font names, copyright info, notices, etc.) (specification). */
|
||||
/* */
|
||||
/* This is _not_ used to retrieve glyph names! */
|
||||
/* */
|
||||
/* Copyright 1996-2016 by */
|
||||
/* David Turner, Robert Wilhelm, and Werner Lemberg. */
|
||||
/* */
|
||||
/* This file is part of the FreeType project, and may only be used, */
|
||||
/* modified, and distributed under the terms of the FreeType project */
|
||||
/* license, LICENSE.TXT. By continuing to use, modify, or distribute */
|
||||
/* this file you indicate that you have read the license and */
|
||||
/* understand and accept it fully. */
|
||||
/* */
|
||||
/***************************************************************************/
|
||||
|
||||
|
||||
#ifndef FTSNAMES_H_
|
||||
#define FTSNAMES_H_
|
||||
|
||||
|
||||
#include <ft2build.h>
|
||||
#include FT_FREETYPE_H
|
||||
|
||||
#ifdef FREETYPE_H
|
||||
#error "freetype.h of FreeType 1 has been loaded!"
|
||||
#error "Please fix the directory search order for header files"
|
||||
#error "so that freetype.h of FreeType 2 is found first."
|
||||
#endif
|
||||
|
||||
|
||||
FT_BEGIN_HEADER
|
||||
|
||||
|
||||
/*************************************************************************/
|
||||
/* */
|
||||
/* <Section> */
|
||||
/* sfnt_names */
|
||||
/* */
|
||||
/* <Title> */
|
||||
/* SFNT Names */
|
||||
/* */
|
||||
/* <Abstract> */
|
||||
/* Access the names embedded in TrueType and OpenType files. */
|
||||
/* */
|
||||
/* <Description> */
|
||||
/* The TrueType and OpenType specifications allow the inclusion of */
|
||||
/* a special `names table' in font files. This table contains */
|
||||
/* textual (and internationalized) information regarding the font, */
|
||||
/* like family name, copyright, version, etc. */
|
||||
/* */
|
||||
/* The definitions below are used to access them if available. */
|
||||
/* */
|
||||
/* Note that this has nothing to do with glyph names! */
|
||||
/* */
|
||||
/*************************************************************************/
|
||||
|
||||
|
||||
/*************************************************************************/
|
||||
/* */
|
||||
/* <Struct> */
|
||||
/* FT_SfntName */
|
||||
/* */
|
||||
/* <Description> */
|
||||
/* A structure used to model an SFNT `name' table entry. */
|
||||
/* */
|
||||
/* <Fields> */
|
||||
/* platform_id :: The platform ID for `string'. */
|
||||
/* */
|
||||
/* encoding_id :: The encoding ID for `string'. */
|
||||
/* */
|
||||
/* language_id :: The language ID for `string'. */
|
||||
/* */
|
||||
/* name_id :: An identifier for `string'. */
|
||||
/* */
|
||||
/* string :: The `name' string. Note that its format differs */
|
||||
/* depending on the (platform,encoding) pair. It can */
|
||||
/* be a Pascal String, a UTF-16 one, etc. */
|
||||
/* */
|
||||
/* Generally speaking, the string is not */
|
||||
/* zero-terminated. Please refer to the TrueType */
|
||||
/* specification for details. */
|
||||
/* */
|
||||
/* string_len :: The length of `string' in bytes. */
|
||||
/* */
|
||||
/* <Note> */
|
||||
/* Possible values for `platform_id', `encoding_id', `language_id', */
|
||||
/* and `name_id' are given in the file `ttnameid.h'. For details */
|
||||
/* please refer to the TrueType or OpenType specification. */
|
||||
/* */
|
||||
/* See also @TT_PLATFORM_XXX, @TT_APPLE_ID_XXX, @TT_MAC_ID_XXX, */
|
||||
/* @TT_ISO_ID_XXX, and @TT_MS_ID_XXX. */
|
||||
/* */
|
||||
typedef struct FT_SfntName_
|
||||
{
|
||||
FT_UShort platform_id;
|
||||
FT_UShort encoding_id;
|
||||
FT_UShort language_id;
|
||||
FT_UShort name_id;
|
||||
|
||||
FT_Byte* string; /* this string is *not* null-terminated! */
|
||||
FT_UInt string_len; /* in bytes */
|
||||
|
||||
} FT_SfntName;
|
||||
|
||||
|
||||
/*************************************************************************/
|
||||
/* */
|
||||
/* <Function> */
|
||||
/* FT_Get_Sfnt_Name_Count */
|
||||
/* */
|
||||
/* <Description> */
|
||||
/* Retrieve the number of name strings in the SFNT `name' table. */
|
||||
/* */
|
||||
/* <Input> */
|
||||
/* face :: A handle to the source face. */
|
||||
/* */
|
||||
/* <Return> */
|
||||
/* The number of strings in the `name' table. */
|
||||
/* */
|
||||
FT_EXPORT( FT_UInt )
|
||||
FT_Get_Sfnt_Name_Count( FT_Face face );
|
||||
|
||||
|
||||
/*************************************************************************/
|
||||
/* */
|
||||
/* <Function> */
|
||||
/* FT_Get_Sfnt_Name */
|
||||
/* */
|
||||
/* <Description> */
|
||||
/* Retrieve a string of the SFNT `name' table for a given index. */
|
||||
/* */
|
||||
/* <Input> */
|
||||
/* face :: A handle to the source face. */
|
||||
/* */
|
||||
/* idx :: The index of the `name' string. */
|
||||
/* */
|
||||
/* <Output> */
|
||||
/* aname :: The indexed @FT_SfntName structure. */
|
||||
/* */
|
||||
/* <Return> */
|
||||
/* FreeType error code. 0~means success. */
|
||||
/* */
|
||||
/* <Note> */
|
||||
/* The `string' array returned in the `aname' structure is not */
|
||||
/* null-terminated. The application should deallocate it if it is no */
|
||||
/* longer in use. */
|
||||
/* */
|
||||
/* Use @FT_Get_Sfnt_Name_Count to get the total number of available */
|
||||
/* `name' table entries, then do a loop until you get the right */
|
||||
/* platform, encoding, and name ID. */
|
||||
/* */
|
||||
FT_EXPORT( FT_Error )
|
||||
FT_Get_Sfnt_Name( FT_Face face,
|
||||
FT_UInt idx,
|
||||
FT_SfntName *aname );
|
||||
|
||||
|
||||
/***************************************************************************
|
||||
*
|
||||
* @constant:
|
||||
* FT_PARAM_TAG_IGNORE_PREFERRED_FAMILY
|
||||
*
|
||||
* @description:
|
||||
* A constant used as the tag of @FT_Parameter structures to make
|
||||
* FT_Open_Face() ignore preferred family subfamily names in `name'
|
||||
* table since OpenType version 1.4. For backwards compatibility with
|
||||
* legacy systems that have a 4-face-per-family restriction.
|
||||
*
|
||||
*/
|
||||
#define FT_PARAM_TAG_IGNORE_PREFERRED_FAMILY FT_MAKE_TAG( 'i', 'g', 'p', 'f' )
|
||||
|
||||
|
||||
/***************************************************************************
|
||||
*
|
||||
* @constant:
|
||||
* FT_PARAM_TAG_IGNORE_PREFERRED_SUBFAMILY
|
||||
*
|
||||
* @description:
|
||||
* A constant used as the tag of @FT_Parameter structures to make
|
||||
* FT_Open_Face() ignore preferred subfamily names in `name' table since
|
||||
* OpenType version 1.4. For backwards compatibility with legacy
|
||||
* systems that have a 4-face-per-family restriction.
|
||||
*
|
||||
*/
|
||||
#define FT_PARAM_TAG_IGNORE_PREFERRED_SUBFAMILY FT_MAKE_TAG( 'i', 'g', 'p', 's' )
|
||||
|
||||
/* */
|
||||
|
||||
|
||||
FT_END_HEADER
|
||||
|
||||
#endif /* FTSNAMES_H_ */
|
||||
|
||||
|
||||
/* END */
|
||||
785
include/fake/vtcs_root_vienna/freetype2/freetype/ftstroke.h
Normal file
785
include/fake/vtcs_root_vienna/freetype2/freetype/ftstroke.h
Normal file
@ -0,0 +1,785 @@
|
||||
/***************************************************************************/
|
||||
/* */
|
||||
/* ftstroke.h */
|
||||
/* */
|
||||
/* FreeType path stroker (specification). */
|
||||
/* */
|
||||
/* Copyright 2002-2016 by */
|
||||
/* David Turner, Robert Wilhelm, and Werner Lemberg. */
|
||||
/* */
|
||||
/* This file is part of the FreeType project, and may only be used, */
|
||||
/* modified, and distributed under the terms of the FreeType project */
|
||||
/* license, LICENSE.TXT. By continuing to use, modify, or distribute */
|
||||
/* this file you indicate that you have read the license and */
|
||||
/* understand and accept it fully. */
|
||||
/* */
|
||||
/***************************************************************************/
|
||||
|
||||
|
||||
#ifndef FTSTROKE_H_
|
||||
#define FTSTROKE_H_
|
||||
|
||||
#include <ft2build.h>
|
||||
#include FT_OUTLINE_H
|
||||
#include FT_GLYPH_H
|
||||
|
||||
|
||||
FT_BEGIN_HEADER
|
||||
|
||||
|
||||
/************************************************************************
|
||||
*
|
||||
* @section:
|
||||
* glyph_stroker
|
||||
*
|
||||
* @title:
|
||||
* Glyph Stroker
|
||||
*
|
||||
* @abstract:
|
||||
* Generating bordered and stroked glyphs.
|
||||
*
|
||||
* @description:
|
||||
* This component generates stroked outlines of a given vectorial
|
||||
* glyph. It also allows you to retrieve the `outside' and/or the
|
||||
* `inside' borders of the stroke.
|
||||
*
|
||||
* This can be useful to generate `bordered' glyph, i.e., glyphs
|
||||
* displayed with a coloured (and anti-aliased) border around their
|
||||
* shape.
|
||||
*
|
||||
* @order:
|
||||
* FT_Stroker
|
||||
*
|
||||
* FT_Stroker_LineJoin
|
||||
* FT_Stroker_LineCap
|
||||
* FT_StrokerBorder
|
||||
*
|
||||
* FT_Outline_GetInsideBorder
|
||||
* FT_Outline_GetOutsideBorder
|
||||
*
|
||||
* FT_Glyph_Stroke
|
||||
* FT_Glyph_StrokeBorder
|
||||
*
|
||||
* FT_Stroker_New
|
||||
* FT_Stroker_Set
|
||||
* FT_Stroker_Rewind
|
||||
* FT_Stroker_ParseOutline
|
||||
* FT_Stroker_Done
|
||||
*
|
||||
* FT_Stroker_BeginSubPath
|
||||
* FT_Stroker_EndSubPath
|
||||
*
|
||||
* FT_Stroker_LineTo
|
||||
* FT_Stroker_ConicTo
|
||||
* FT_Stroker_CubicTo
|
||||
*
|
||||
* FT_Stroker_GetBorderCounts
|
||||
* FT_Stroker_ExportBorder
|
||||
* FT_Stroker_GetCounts
|
||||
* FT_Stroker_Export
|
||||
*
|
||||
*/
|
||||
|
||||
|
||||
/**************************************************************
|
||||
*
|
||||
* @type:
|
||||
* FT_Stroker
|
||||
*
|
||||
* @description:
|
||||
* Opaque handle to a path stroker object.
|
||||
*/
|
||||
typedef struct FT_StrokerRec_* FT_Stroker;
|
||||
|
||||
|
||||
/**************************************************************
|
||||
*
|
||||
* @enum:
|
||||
* FT_Stroker_LineJoin
|
||||
*
|
||||
* @description:
|
||||
* These values determine how two joining lines are rendered
|
||||
* in a stroker.
|
||||
*
|
||||
* @values:
|
||||
* FT_STROKER_LINEJOIN_ROUND ::
|
||||
* Used to render rounded line joins. Circular arcs are used
|
||||
* to join two lines smoothly.
|
||||
*
|
||||
* FT_STROKER_LINEJOIN_BEVEL ::
|
||||
* Used to render beveled line joins. The outer corner of
|
||||
* the joined lines is filled by enclosing the triangular
|
||||
* region of the corner with a straight line between the
|
||||
* outer corners of each stroke.
|
||||
*
|
||||
* FT_STROKER_LINEJOIN_MITER_FIXED ::
|
||||
* Used to render mitered line joins, with fixed bevels if the
|
||||
* miter limit is exceeded. The outer edges of the strokes
|
||||
* for the two segments are extended until they meet at an
|
||||
* angle. If the segments meet at too sharp an angle (such
|
||||
* that the miter would extend from the intersection of the
|
||||
* segments a distance greater than the product of the miter
|
||||
* limit value and the border radius), then a bevel join (see
|
||||
* above) is used instead. This prevents long spikes being
|
||||
* created. FT_STROKER_LINEJOIN_MITER_FIXED generates a miter
|
||||
* line join as used in PostScript and PDF.
|
||||
*
|
||||
* FT_STROKER_LINEJOIN_MITER_VARIABLE ::
|
||||
* FT_STROKER_LINEJOIN_MITER ::
|
||||
* Used to render mitered line joins, with variable bevels if
|
||||
* the miter limit is exceeded. The intersection of the
|
||||
* strokes is clipped at a line perpendicular to the bisector
|
||||
* of the angle between the strokes, at the distance from the
|
||||
* intersection of the segments equal to the product of the
|
||||
* miter limit value and the border radius. This prevents
|
||||
* long spikes being created.
|
||||
* FT_STROKER_LINEJOIN_MITER_VARIABLE generates a mitered line
|
||||
* join as used in XPS. FT_STROKER_LINEJOIN_MITER is an alias
|
||||
* for FT_STROKER_LINEJOIN_MITER_VARIABLE, retained for
|
||||
* backwards compatibility.
|
||||
*/
|
||||
typedef enum FT_Stroker_LineJoin_
|
||||
{
|
||||
FT_STROKER_LINEJOIN_ROUND = 0,
|
||||
FT_STROKER_LINEJOIN_BEVEL = 1,
|
||||
FT_STROKER_LINEJOIN_MITER_VARIABLE = 2,
|
||||
FT_STROKER_LINEJOIN_MITER = FT_STROKER_LINEJOIN_MITER_VARIABLE,
|
||||
FT_STROKER_LINEJOIN_MITER_FIXED = 3
|
||||
|
||||
} FT_Stroker_LineJoin;
|
||||
|
||||
|
||||
/**************************************************************
|
||||
*
|
||||
* @enum:
|
||||
* FT_Stroker_LineCap
|
||||
*
|
||||
* @description:
|
||||
* These values determine how the end of opened sub-paths are
|
||||
* rendered in a stroke.
|
||||
*
|
||||
* @values:
|
||||
* FT_STROKER_LINECAP_BUTT ::
|
||||
* The end of lines is rendered as a full stop on the last
|
||||
* point itself.
|
||||
*
|
||||
* FT_STROKER_LINECAP_ROUND ::
|
||||
* The end of lines is rendered as a half-circle around the
|
||||
* last point.
|
||||
*
|
||||
* FT_STROKER_LINECAP_SQUARE ::
|
||||
* The end of lines is rendered as a square around the
|
||||
* last point.
|
||||
*/
|
||||
typedef enum FT_Stroker_LineCap_
|
||||
{
|
||||
FT_STROKER_LINECAP_BUTT = 0,
|
||||
FT_STROKER_LINECAP_ROUND,
|
||||
FT_STROKER_LINECAP_SQUARE
|
||||
|
||||
} FT_Stroker_LineCap;
|
||||
|
||||
|
||||
/**************************************************************
|
||||
*
|
||||
* @enum:
|
||||
* FT_StrokerBorder
|
||||
*
|
||||
* @description:
|
||||
* These values are used to select a given stroke border
|
||||
* in @FT_Stroker_GetBorderCounts and @FT_Stroker_ExportBorder.
|
||||
*
|
||||
* @values:
|
||||
* FT_STROKER_BORDER_LEFT ::
|
||||
* Select the left border, relative to the drawing direction.
|
||||
*
|
||||
* FT_STROKER_BORDER_RIGHT ::
|
||||
* Select the right border, relative to the drawing direction.
|
||||
*
|
||||
* @note:
|
||||
* Applications are generally interested in the `inside' and `outside'
|
||||
* borders. However, there is no direct mapping between these and the
|
||||
* `left' and `right' ones, since this really depends on the glyph's
|
||||
* drawing orientation, which varies between font formats.
|
||||
*
|
||||
* You can however use @FT_Outline_GetInsideBorder and
|
||||
* @FT_Outline_GetOutsideBorder to get these.
|
||||
*/
|
||||
typedef enum FT_StrokerBorder_
|
||||
{
|
||||
FT_STROKER_BORDER_LEFT = 0,
|
||||
FT_STROKER_BORDER_RIGHT
|
||||
|
||||
} FT_StrokerBorder;
|
||||
|
||||
|
||||
/**************************************************************
|
||||
*
|
||||
* @function:
|
||||
* FT_Outline_GetInsideBorder
|
||||
*
|
||||
* @description:
|
||||
* Retrieve the @FT_StrokerBorder value corresponding to the
|
||||
* `inside' borders of a given outline.
|
||||
*
|
||||
* @input:
|
||||
* outline ::
|
||||
* The source outline handle.
|
||||
*
|
||||
* @return:
|
||||
* The border index. @FT_STROKER_BORDER_RIGHT for empty or invalid
|
||||
* outlines.
|
||||
*/
|
||||
FT_EXPORT( FT_StrokerBorder )
|
||||
FT_Outline_GetInsideBorder( FT_Outline* outline );
|
||||
|
||||
|
||||
/**************************************************************
|
||||
*
|
||||
* @function:
|
||||
* FT_Outline_GetOutsideBorder
|
||||
*
|
||||
* @description:
|
||||
* Retrieve the @FT_StrokerBorder value corresponding to the
|
||||
* `outside' borders of a given outline.
|
||||
*
|
||||
* @input:
|
||||
* outline ::
|
||||
* The source outline handle.
|
||||
*
|
||||
* @return:
|
||||
* The border index. @FT_STROKER_BORDER_LEFT for empty or invalid
|
||||
* outlines.
|
||||
*/
|
||||
FT_EXPORT( FT_StrokerBorder )
|
||||
FT_Outline_GetOutsideBorder( FT_Outline* outline );
|
||||
|
||||
|
||||
/**************************************************************
|
||||
*
|
||||
* @function:
|
||||
* FT_Stroker_New
|
||||
*
|
||||
* @description:
|
||||
* Create a new stroker object.
|
||||
*
|
||||
* @input:
|
||||
* library ::
|
||||
* FreeType library handle.
|
||||
*
|
||||
* @output:
|
||||
* astroker ::
|
||||
* A new stroker object handle. NULL in case of error.
|
||||
*
|
||||
* @return:
|
||||
* FreeType error code. 0~means success.
|
||||
*/
|
||||
FT_EXPORT( FT_Error )
|
||||
FT_Stroker_New( FT_Library library,
|
||||
FT_Stroker *astroker );
|
||||
|
||||
|
||||
/**************************************************************
|
||||
*
|
||||
* @function:
|
||||
* FT_Stroker_Set
|
||||
*
|
||||
* @description:
|
||||
* Reset a stroker object's attributes.
|
||||
*
|
||||
* @input:
|
||||
* stroker ::
|
||||
* The target stroker handle.
|
||||
*
|
||||
* radius ::
|
||||
* The border radius.
|
||||
*
|
||||
* line_cap ::
|
||||
* The line cap style.
|
||||
*
|
||||
* line_join ::
|
||||
* The line join style.
|
||||
*
|
||||
* miter_limit ::
|
||||
* The miter limit for the FT_STROKER_LINEJOIN_MITER_FIXED and
|
||||
* FT_STROKER_LINEJOIN_MITER_VARIABLE line join styles,
|
||||
* expressed as 16.16 fixed-point value.
|
||||
*
|
||||
* @note:
|
||||
* The radius is expressed in the same units as the outline
|
||||
* coordinates.
|
||||
*
|
||||
* This function calls @FT_Stroker_Rewind automatically.
|
||||
*/
|
||||
FT_EXPORT( void )
|
||||
FT_Stroker_Set( FT_Stroker stroker,
|
||||
FT_Fixed radius,
|
||||
FT_Stroker_LineCap line_cap,
|
||||
FT_Stroker_LineJoin line_join,
|
||||
FT_Fixed miter_limit );
|
||||
|
||||
|
||||
/**************************************************************
|
||||
*
|
||||
* @function:
|
||||
* FT_Stroker_Rewind
|
||||
*
|
||||
* @description:
|
||||
* Reset a stroker object without changing its attributes.
|
||||
* You should call this function before beginning a new
|
||||
* series of calls to @FT_Stroker_BeginSubPath or
|
||||
* @FT_Stroker_EndSubPath.
|
||||
*
|
||||
* @input:
|
||||
* stroker ::
|
||||
* The target stroker handle.
|
||||
*/
|
||||
FT_EXPORT( void )
|
||||
FT_Stroker_Rewind( FT_Stroker stroker );
|
||||
|
||||
|
||||
/**************************************************************
|
||||
*
|
||||
* @function:
|
||||
* FT_Stroker_ParseOutline
|
||||
*
|
||||
* @description:
|
||||
* A convenience function used to parse a whole outline with
|
||||
* the stroker. The resulting outline(s) can be retrieved
|
||||
* later by functions like @FT_Stroker_GetCounts and @FT_Stroker_Export.
|
||||
*
|
||||
* @input:
|
||||
* stroker ::
|
||||
* The target stroker handle.
|
||||
*
|
||||
* outline ::
|
||||
* The source outline.
|
||||
*
|
||||
* opened ::
|
||||
* A boolean. If~1, the outline is treated as an open path instead
|
||||
* of a closed one.
|
||||
*
|
||||
* @return:
|
||||
* FreeType error code. 0~means success.
|
||||
*
|
||||
* @note:
|
||||
* If `opened' is~0 (the default), the outline is treated as a closed
|
||||
* path, and the stroker generates two distinct `border' outlines.
|
||||
*
|
||||
* If `opened' is~1, the outline is processed as an open path, and the
|
||||
* stroker generates a single `stroke' outline.
|
||||
*
|
||||
* This function calls @FT_Stroker_Rewind automatically.
|
||||
*/
|
||||
FT_EXPORT( FT_Error )
|
||||
FT_Stroker_ParseOutline( FT_Stroker stroker,
|
||||
FT_Outline* outline,
|
||||
FT_Bool opened );
|
||||
|
||||
|
||||
/**************************************************************
|
||||
*
|
||||
* @function:
|
||||
* FT_Stroker_BeginSubPath
|
||||
*
|
||||
* @description:
|
||||
* Start a new sub-path in the stroker.
|
||||
*
|
||||
* @input:
|
||||
* stroker ::
|
||||
* The target stroker handle.
|
||||
*
|
||||
* to ::
|
||||
* A pointer to the start vector.
|
||||
*
|
||||
* open ::
|
||||
* A boolean. If~1, the sub-path is treated as an open one.
|
||||
*
|
||||
* @return:
|
||||
* FreeType error code. 0~means success.
|
||||
*
|
||||
* @note:
|
||||
* This function is useful when you need to stroke a path that is
|
||||
* not stored as an @FT_Outline object.
|
||||
*/
|
||||
FT_EXPORT( FT_Error )
|
||||
FT_Stroker_BeginSubPath( FT_Stroker stroker,
|
||||
FT_Vector* to,
|
||||
FT_Bool open );
|
||||
|
||||
|
||||
/**************************************************************
|
||||
*
|
||||
* @function:
|
||||
* FT_Stroker_EndSubPath
|
||||
*
|
||||
* @description:
|
||||
* Close the current sub-path in the stroker.
|
||||
*
|
||||
* @input:
|
||||
* stroker ::
|
||||
* The target stroker handle.
|
||||
*
|
||||
* @return:
|
||||
* FreeType error code. 0~means success.
|
||||
*
|
||||
* @note:
|
||||
* You should call this function after @FT_Stroker_BeginSubPath.
|
||||
* If the subpath was not `opened', this function `draws' a
|
||||
* single line segment to the start position when needed.
|
||||
*/
|
||||
FT_EXPORT( FT_Error )
|
||||
FT_Stroker_EndSubPath( FT_Stroker stroker );
|
||||
|
||||
|
||||
/**************************************************************
|
||||
*
|
||||
* @function:
|
||||
* FT_Stroker_LineTo
|
||||
*
|
||||
* @description:
|
||||
* `Draw' a single line segment in the stroker's current sub-path,
|
||||
* from the last position.
|
||||
*
|
||||
* @input:
|
||||
* stroker ::
|
||||
* The target stroker handle.
|
||||
*
|
||||
* to ::
|
||||
* A pointer to the destination point.
|
||||
*
|
||||
* @return:
|
||||
* FreeType error code. 0~means success.
|
||||
*
|
||||
* @note:
|
||||
* You should call this function between @FT_Stroker_BeginSubPath and
|
||||
* @FT_Stroker_EndSubPath.
|
||||
*/
|
||||
FT_EXPORT( FT_Error )
|
||||
FT_Stroker_LineTo( FT_Stroker stroker,
|
||||
FT_Vector* to );
|
||||
|
||||
|
||||
/**************************************************************
|
||||
*
|
||||
* @function:
|
||||
* FT_Stroker_ConicTo
|
||||
*
|
||||
* @description:
|
||||
* `Draw' a single quadratic Bézier in the stroker's current sub-path,
|
||||
* from the last position.
|
||||
*
|
||||
* @input:
|
||||
* stroker ::
|
||||
* The target stroker handle.
|
||||
*
|
||||
* control ::
|
||||
* A pointer to a Bézier control point.
|
||||
*
|
||||
* to ::
|
||||
* A pointer to the destination point.
|
||||
*
|
||||
* @return:
|
||||
* FreeType error code. 0~means success.
|
||||
*
|
||||
* @note:
|
||||
* You should call this function between @FT_Stroker_BeginSubPath and
|
||||
* @FT_Stroker_EndSubPath.
|
||||
*/
|
||||
FT_EXPORT( FT_Error )
|
||||
FT_Stroker_ConicTo( FT_Stroker stroker,
|
||||
FT_Vector* control,
|
||||
FT_Vector* to );
|
||||
|
||||
|
||||
/**************************************************************
|
||||
*
|
||||
* @function:
|
||||
* FT_Stroker_CubicTo
|
||||
*
|
||||
* @description:
|
||||
* `Draw' a single cubic Bézier in the stroker's current sub-path,
|
||||
* from the last position.
|
||||
*
|
||||
* @input:
|
||||
* stroker ::
|
||||
* The target stroker handle.
|
||||
*
|
||||
* control1 ::
|
||||
* A pointer to the first Bézier control point.
|
||||
*
|
||||
* control2 ::
|
||||
* A pointer to second Bézier control point.
|
||||
*
|
||||
* to ::
|
||||
* A pointer to the destination point.
|
||||
*
|
||||
* @return:
|
||||
* FreeType error code. 0~means success.
|
||||
*
|
||||
* @note:
|
||||
* You should call this function between @FT_Stroker_BeginSubPath and
|
||||
* @FT_Stroker_EndSubPath.
|
||||
*/
|
||||
FT_EXPORT( FT_Error )
|
||||
FT_Stroker_CubicTo( FT_Stroker stroker,
|
||||
FT_Vector* control1,
|
||||
FT_Vector* control2,
|
||||
FT_Vector* to );
|
||||
|
||||
|
||||
/**************************************************************
|
||||
*
|
||||
* @function:
|
||||
* FT_Stroker_GetBorderCounts
|
||||
*
|
||||
* @description:
|
||||
* Call this function once you have finished parsing your paths
|
||||
* with the stroker. It returns the number of points and
|
||||
* contours necessary to export one of the `border' or `stroke'
|
||||
* outlines generated by the stroker.
|
||||
*
|
||||
* @input:
|
||||
* stroker ::
|
||||
* The target stroker handle.
|
||||
*
|
||||
* border ::
|
||||
* The border index.
|
||||
*
|
||||
* @output:
|
||||
* anum_points ::
|
||||
* The number of points.
|
||||
*
|
||||
* anum_contours ::
|
||||
* The number of contours.
|
||||
*
|
||||
* @return:
|
||||
* FreeType error code. 0~means success.
|
||||
*
|
||||
* @note:
|
||||
* When an outline, or a sub-path, is `closed', the stroker generates
|
||||
* two independent `border' outlines, named `left' and `right'.
|
||||
*
|
||||
* When the outline, or a sub-path, is `opened', the stroker merges
|
||||
* the `border' outlines with caps. The `left' border receives all
|
||||
* points, while the `right' border becomes empty.
|
||||
*
|
||||
* Use the function @FT_Stroker_GetCounts instead if you want to
|
||||
* retrieve the counts associated to both borders.
|
||||
*/
|
||||
FT_EXPORT( FT_Error )
|
||||
FT_Stroker_GetBorderCounts( FT_Stroker stroker,
|
||||
FT_StrokerBorder border,
|
||||
FT_UInt *anum_points,
|
||||
FT_UInt *anum_contours );
|
||||
|
||||
|
||||
/**************************************************************
|
||||
*
|
||||
* @function:
|
||||
* FT_Stroker_ExportBorder
|
||||
*
|
||||
* @description:
|
||||
* Call this function after @FT_Stroker_GetBorderCounts to
|
||||
* export the corresponding border to your own @FT_Outline
|
||||
* structure.
|
||||
*
|
||||
* Note that this function appends the border points and
|
||||
* contours to your outline, but does not try to resize its
|
||||
* arrays.
|
||||
*
|
||||
* @input:
|
||||
* stroker ::
|
||||
* The target stroker handle.
|
||||
*
|
||||
* border ::
|
||||
* The border index.
|
||||
*
|
||||
* outline ::
|
||||
* The target outline handle.
|
||||
*
|
||||
* @note:
|
||||
* Always call this function after @FT_Stroker_GetBorderCounts to
|
||||
* get sure that there is enough room in your @FT_Outline object to
|
||||
* receive all new data.
|
||||
*
|
||||
* When an outline, or a sub-path, is `closed', the stroker generates
|
||||
* two independent `border' outlines, named `left' and `right'.
|
||||
*
|
||||
* When the outline, or a sub-path, is `opened', the stroker merges
|
||||
* the `border' outlines with caps. The `left' border receives all
|
||||
* points, while the `right' border becomes empty.
|
||||
*
|
||||
* Use the function @FT_Stroker_Export instead if you want to
|
||||
* retrieve all borders at once.
|
||||
*/
|
||||
FT_EXPORT( void )
|
||||
FT_Stroker_ExportBorder( FT_Stroker stroker,
|
||||
FT_StrokerBorder border,
|
||||
FT_Outline* outline );
|
||||
|
||||
|
||||
/**************************************************************
|
||||
*
|
||||
* @function:
|
||||
* FT_Stroker_GetCounts
|
||||
*
|
||||
* @description:
|
||||
* Call this function once you have finished parsing your paths
|
||||
* with the stroker. It returns the number of points and
|
||||
* contours necessary to export all points/borders from the stroked
|
||||
* outline/path.
|
||||
*
|
||||
* @input:
|
||||
* stroker ::
|
||||
* The target stroker handle.
|
||||
*
|
||||
* @output:
|
||||
* anum_points ::
|
||||
* The number of points.
|
||||
*
|
||||
* anum_contours ::
|
||||
* The number of contours.
|
||||
*
|
||||
* @return:
|
||||
* FreeType error code. 0~means success.
|
||||
*/
|
||||
FT_EXPORT( FT_Error )
|
||||
FT_Stroker_GetCounts( FT_Stroker stroker,
|
||||
FT_UInt *anum_points,
|
||||
FT_UInt *anum_contours );
|
||||
|
||||
|
||||
/**************************************************************
|
||||
*
|
||||
* @function:
|
||||
* FT_Stroker_Export
|
||||
*
|
||||
* @description:
|
||||
* Call this function after @FT_Stroker_GetBorderCounts to
|
||||
* export all borders to your own @FT_Outline structure.
|
||||
*
|
||||
* Note that this function appends the border points and
|
||||
* contours to your outline, but does not try to resize its
|
||||
* arrays.
|
||||
*
|
||||
* @input:
|
||||
* stroker ::
|
||||
* The target stroker handle.
|
||||
*
|
||||
* outline ::
|
||||
* The target outline handle.
|
||||
*/
|
||||
FT_EXPORT( void )
|
||||
FT_Stroker_Export( FT_Stroker stroker,
|
||||
FT_Outline* outline );
|
||||
|
||||
|
||||
/**************************************************************
|
||||
*
|
||||
* @function:
|
||||
* FT_Stroker_Done
|
||||
*
|
||||
* @description:
|
||||
* Destroy a stroker object.
|
||||
*
|
||||
* @input:
|
||||
* stroker ::
|
||||
* A stroker handle. Can be NULL.
|
||||
*/
|
||||
FT_EXPORT( void )
|
||||
FT_Stroker_Done( FT_Stroker stroker );
|
||||
|
||||
|
||||
/**************************************************************
|
||||
*
|
||||
* @function:
|
||||
* FT_Glyph_Stroke
|
||||
*
|
||||
* @description:
|
||||
* Stroke a given outline glyph object with a given stroker.
|
||||
*
|
||||
* @inout:
|
||||
* pglyph ::
|
||||
* Source glyph handle on input, new glyph handle on output.
|
||||
*
|
||||
* @input:
|
||||
* stroker ::
|
||||
* A stroker handle.
|
||||
*
|
||||
* destroy ::
|
||||
* A Boolean. If~1, the source glyph object is destroyed
|
||||
* on success.
|
||||
*
|
||||
* @return:
|
||||
* FreeType error code. 0~means success.
|
||||
*
|
||||
* @note:
|
||||
* The source glyph is untouched in case of error.
|
||||
*
|
||||
* Adding stroke may yield a significantly wider and taller glyph
|
||||
* depending on how large of a radius was used to stroke the glyph. You
|
||||
* may need to manually adjust horizontal and vertical advance amounts
|
||||
* to account for this added size.
|
||||
*/
|
||||
FT_EXPORT( FT_Error )
|
||||
FT_Glyph_Stroke( FT_Glyph *pglyph,
|
||||
FT_Stroker stroker,
|
||||
FT_Bool destroy );
|
||||
|
||||
|
||||
/**************************************************************
|
||||
*
|
||||
* @function:
|
||||
* FT_Glyph_StrokeBorder
|
||||
*
|
||||
* @description:
|
||||
* Stroke a given outline glyph object with a given stroker, but
|
||||
* only return either its inside or outside border.
|
||||
*
|
||||
* @inout:
|
||||
* pglyph ::
|
||||
* Source glyph handle on input, new glyph handle on output.
|
||||
*
|
||||
* @input:
|
||||
* stroker ::
|
||||
* A stroker handle.
|
||||
*
|
||||
* inside ::
|
||||
* A Boolean. If~1, return the inside border, otherwise
|
||||
* the outside border.
|
||||
*
|
||||
* destroy ::
|
||||
* A Boolean. If~1, the source glyph object is destroyed
|
||||
* on success.
|
||||
*
|
||||
* @return:
|
||||
* FreeType error code. 0~means success.
|
||||
*
|
||||
* @note:
|
||||
* The source glyph is untouched in case of error.
|
||||
*
|
||||
* Adding stroke may yield a significantly wider and taller glyph
|
||||
* depending on how large of a radius was used to stroke the glyph. You
|
||||
* may need to manually adjust horizontal and vertical advance amounts
|
||||
* to account for this added size.
|
||||
*/
|
||||
FT_EXPORT( FT_Error )
|
||||
FT_Glyph_StrokeBorder( FT_Glyph *pglyph,
|
||||
FT_Stroker stroker,
|
||||
FT_Bool inside,
|
||||
FT_Bool destroy );
|
||||
|
||||
/* */
|
||||
|
||||
FT_END_HEADER
|
||||
|
||||
#endif /* FTSTROKE_H_ */
|
||||
|
||||
|
||||
/* END */
|
||||
|
||||
|
||||
/* Local Variables: */
|
||||
/* coding: utf-8 */
|
||||
/* End: */
|
||||
84
include/fake/vtcs_root_vienna/freetype2/freetype/ftsynth.h
Normal file
84
include/fake/vtcs_root_vienna/freetype2/freetype/ftsynth.h
Normal file
@ -0,0 +1,84 @@
|
||||
/***************************************************************************/
|
||||
/* */
|
||||
/* ftsynth.h */
|
||||
/* */
|
||||
/* FreeType synthesizing code for emboldening and slanting */
|
||||
/* (specification). */
|
||||
/* */
|
||||
/* Copyright 2000-2016 by */
|
||||
/* David Turner, Robert Wilhelm, and Werner Lemberg. */
|
||||
/* */
|
||||
/* This file is part of the FreeType project, and may only be used, */
|
||||
/* modified, and distributed under the terms of the FreeType project */
|
||||
/* license, LICENSE.TXT. By continuing to use, modify, or distribute */
|
||||
/* this file you indicate that you have read the license and */
|
||||
/* understand and accept it fully. */
|
||||
/* */
|
||||
/***************************************************************************/
|
||||
|
||||
|
||||
/*************************************************************************/
|
||||
/*************************************************************************/
|
||||
/*************************************************************************/
|
||||
/*************************************************************************/
|
||||
/*************************************************************************/
|
||||
/********* *********/
|
||||
/********* WARNING, THIS IS ALPHA CODE! THIS API *********/
|
||||
/********* IS DUE TO CHANGE UNTIL STRICTLY NOTIFIED BY THE *********/
|
||||
/********* FREETYPE DEVELOPMENT TEAM *********/
|
||||
/********* *********/
|
||||
/*************************************************************************/
|
||||
/*************************************************************************/
|
||||
/*************************************************************************/
|
||||
/*************************************************************************/
|
||||
/*************************************************************************/
|
||||
|
||||
|
||||
/* Main reason for not lifting the functions in this module to a */
|
||||
/* `standard' API is that the used parameters for emboldening and */
|
||||
/* slanting are not configurable. Consider the functions as a */
|
||||
/* code resource that should be copied into the application and */
|
||||
/* adapted to the particular needs. */
|
||||
|
||||
|
||||
#ifndef FTSYNTH_H_
|
||||
#define FTSYNTH_H_
|
||||
|
||||
|
||||
#include <ft2build.h>
|
||||
#include FT_FREETYPE_H
|
||||
|
||||
#ifdef FREETYPE_H
|
||||
#error "freetype.h of FreeType 1 has been loaded!"
|
||||
#error "Please fix the directory search order for header files"
|
||||
#error "so that freetype.h of FreeType 2 is found first."
|
||||
#endif
|
||||
|
||||
|
||||
FT_BEGIN_HEADER
|
||||
|
||||
/* Embolden a glyph by a `reasonable' value (which is highly a matter of */
|
||||
/* taste). This function is actually a convenience function, providing */
|
||||
/* a wrapper for @FT_Outline_Embolden and @FT_Bitmap_Embolden. */
|
||||
/* */
|
||||
/* For emboldened outlines the height, width, and advance metrics are */
|
||||
/* increased by the strength of the emboldening -- this even affects */
|
||||
/* mono-width fonts! */
|
||||
/* */
|
||||
/* You can also call @FT_Outline_Get_CBox to get precise values. */
|
||||
FT_EXPORT( void )
|
||||
FT_GlyphSlot_Embolden( FT_GlyphSlot slot );
|
||||
|
||||
/* Slant an outline glyph to the right by about 12 degrees. */
|
||||
FT_EXPORT( void )
|
||||
FT_GlyphSlot_Oblique( FT_GlyphSlot slot );
|
||||
|
||||
/* */
|
||||
|
||||
|
||||
FT_END_HEADER
|
||||
|
||||
#endif /* FTSYNTH_H_ */
|
||||
|
||||
|
||||
/* END */
|
||||
355
include/fake/vtcs_root_vienna/freetype2/freetype/ftsystem.h
Normal file
355
include/fake/vtcs_root_vienna/freetype2/freetype/ftsystem.h
Normal file
@ -0,0 +1,355 @@
|
||||
/***************************************************************************/
|
||||
/* */
|
||||
/* ftsystem.h */
|
||||
/* */
|
||||
/* FreeType low-level system interface definition (specification). */
|
||||
/* */
|
||||
/* Copyright 1996-2016 by */
|
||||
/* David Turner, Robert Wilhelm, and Werner Lemberg. */
|
||||
/* */
|
||||
/* This file is part of the FreeType project, and may only be used, */
|
||||
/* modified, and distributed under the terms of the FreeType project */
|
||||
/* license, LICENSE.TXT. By continuing to use, modify, or distribute */
|
||||
/* this file you indicate that you have read the license and */
|
||||
/* understand and accept it fully. */
|
||||
/* */
|
||||
/***************************************************************************/
|
||||
|
||||
|
||||
#ifndef FTSYSTEM_H_
|
||||
#define FTSYSTEM_H_
|
||||
|
||||
|
||||
#include <ft2build.h>
|
||||
|
||||
|
||||
FT_BEGIN_HEADER
|
||||
|
||||
|
||||
/*************************************************************************/
|
||||
/* */
|
||||
/* <Section> */
|
||||
/* system_interface */
|
||||
/* */
|
||||
/* <Title> */
|
||||
/* System Interface */
|
||||
/* */
|
||||
/* <Abstract> */
|
||||
/* How FreeType manages memory and i/o. */
|
||||
/* */
|
||||
/* <Description> */
|
||||
/* This section contains various definitions related to memory */
|
||||
/* management and i/o access. You need to understand this */
|
||||
/* information if you want to use a custom memory manager or you own */
|
||||
/* i/o streams. */
|
||||
/* */
|
||||
/*************************************************************************/
|
||||
|
||||
|
||||
/*************************************************************************/
|
||||
/* */
|
||||
/* M E M O R Y M A N A G E M E N T */
|
||||
/* */
|
||||
/*************************************************************************/
|
||||
|
||||
|
||||
/*************************************************************************
|
||||
*
|
||||
* @type:
|
||||
* FT_Memory
|
||||
*
|
||||
* @description:
|
||||
* A handle to a given memory manager object, defined with an
|
||||
* @FT_MemoryRec structure.
|
||||
*
|
||||
*/
|
||||
typedef struct FT_MemoryRec_* FT_Memory;
|
||||
|
||||
|
||||
/*************************************************************************
|
||||
*
|
||||
* @functype:
|
||||
* FT_Alloc_Func
|
||||
*
|
||||
* @description:
|
||||
* A function used to allocate `size' bytes from `memory'.
|
||||
*
|
||||
* @input:
|
||||
* memory ::
|
||||
* A handle to the source memory manager.
|
||||
*
|
||||
* size ::
|
||||
* The size in bytes to allocate.
|
||||
*
|
||||
* @return:
|
||||
* Address of new memory block. 0~in case of failure.
|
||||
*
|
||||
*/
|
||||
typedef void*
|
||||
(*FT_Alloc_Func)( FT_Memory memory,
|
||||
long size );
|
||||
|
||||
|
||||
/*************************************************************************
|
||||
*
|
||||
* @functype:
|
||||
* FT_Free_Func
|
||||
*
|
||||
* @description:
|
||||
* A function used to release a given block of memory.
|
||||
*
|
||||
* @input:
|
||||
* memory ::
|
||||
* A handle to the source memory manager.
|
||||
*
|
||||
* block ::
|
||||
* The address of the target memory block.
|
||||
*
|
||||
*/
|
||||
typedef void
|
||||
(*FT_Free_Func)( FT_Memory memory,
|
||||
void* block );
|
||||
|
||||
|
||||
/*************************************************************************
|
||||
*
|
||||
* @functype:
|
||||
* FT_Realloc_Func
|
||||
*
|
||||
* @description:
|
||||
* A function used to re-allocate a given block of memory.
|
||||
*
|
||||
* @input:
|
||||
* memory ::
|
||||
* A handle to the source memory manager.
|
||||
*
|
||||
* cur_size ::
|
||||
* The block's current size in bytes.
|
||||
*
|
||||
* new_size ::
|
||||
* The block's requested new size.
|
||||
*
|
||||
* block ::
|
||||
* The block's current address.
|
||||
*
|
||||
* @return:
|
||||
* New block address. 0~in case of memory shortage.
|
||||
*
|
||||
* @note:
|
||||
* In case of error, the old block must still be available.
|
||||
*
|
||||
*/
|
||||
typedef void*
|
||||
(*FT_Realloc_Func)( FT_Memory memory,
|
||||
long cur_size,
|
||||
long new_size,
|
||||
void* block );
|
||||
|
||||
|
||||
/*************************************************************************
|
||||
*
|
||||
* @struct:
|
||||
* FT_MemoryRec
|
||||
*
|
||||
* @description:
|
||||
* A structure used to describe a given memory manager to FreeType~2.
|
||||
*
|
||||
* @fields:
|
||||
* user ::
|
||||
* A generic typeless pointer for user data.
|
||||
*
|
||||
* alloc ::
|
||||
* A pointer type to an allocation function.
|
||||
*
|
||||
* free ::
|
||||
* A pointer type to an memory freeing function.
|
||||
*
|
||||
* realloc ::
|
||||
* A pointer type to a reallocation function.
|
||||
*
|
||||
*/
|
||||
struct FT_MemoryRec_
|
||||
{
|
||||
void* user;
|
||||
FT_Alloc_Func alloc;
|
||||
FT_Free_Func free;
|
||||
FT_Realloc_Func realloc;
|
||||
};
|
||||
|
||||
|
||||
/*************************************************************************/
|
||||
/* */
|
||||
/* I / O M A N A G E M E N T */
|
||||
/* */
|
||||
/*************************************************************************/
|
||||
|
||||
|
||||
/*************************************************************************
|
||||
*
|
||||
* @type:
|
||||
* FT_Stream
|
||||
*
|
||||
* @description:
|
||||
* A handle to an input stream.
|
||||
*
|
||||
* @also:
|
||||
* See @FT_StreamRec for the publicly accessible fields of a given
|
||||
* stream object.
|
||||
*
|
||||
*/
|
||||
typedef struct FT_StreamRec_* FT_Stream;
|
||||
|
||||
|
||||
/*************************************************************************
|
||||
*
|
||||
* @struct:
|
||||
* FT_StreamDesc
|
||||
*
|
||||
* @description:
|
||||
* A union type used to store either a long or a pointer. This is used
|
||||
* to store a file descriptor or a `FILE*' in an input stream.
|
||||
*
|
||||
*/
|
||||
typedef union FT_StreamDesc_
|
||||
{
|
||||
long value;
|
||||
void* pointer;
|
||||
|
||||
} FT_StreamDesc;
|
||||
|
||||
|
||||
/*************************************************************************
|
||||
*
|
||||
* @functype:
|
||||
* FT_Stream_IoFunc
|
||||
*
|
||||
* @description:
|
||||
* A function used to seek and read data from a given input stream.
|
||||
*
|
||||
* @input:
|
||||
* stream ::
|
||||
* A handle to the source stream.
|
||||
*
|
||||
* offset ::
|
||||
* The offset of read in stream (always from start).
|
||||
*
|
||||
* buffer ::
|
||||
* The address of the read buffer.
|
||||
*
|
||||
* count ::
|
||||
* The number of bytes to read from the stream.
|
||||
*
|
||||
* @return:
|
||||
* The number of bytes effectively read by the stream.
|
||||
*
|
||||
* @note:
|
||||
* This function might be called to perform a seek or skip operation
|
||||
* with a `count' of~0. A non-zero return value then indicates an
|
||||
* error.
|
||||
*
|
||||
*/
|
||||
typedef unsigned long
|
||||
(*FT_Stream_IoFunc)( FT_Stream stream,
|
||||
unsigned long offset,
|
||||
unsigned char* buffer,
|
||||
unsigned long count );
|
||||
|
||||
|
||||
/*************************************************************************
|
||||
*
|
||||
* @functype:
|
||||
* FT_Stream_CloseFunc
|
||||
*
|
||||
* @description:
|
||||
* A function used to close a given input stream.
|
||||
*
|
||||
* @input:
|
||||
* stream ::
|
||||
* A handle to the target stream.
|
||||
*
|
||||
*/
|
||||
typedef void
|
||||
(*FT_Stream_CloseFunc)( FT_Stream stream );
|
||||
|
||||
|
||||
/*************************************************************************
|
||||
*
|
||||
* @struct:
|
||||
* FT_StreamRec
|
||||
*
|
||||
* @description:
|
||||
* A structure used to describe an input stream.
|
||||
*
|
||||
* @input:
|
||||
* base ::
|
||||
* For memory-based streams, this is the address of the first stream
|
||||
* byte in memory. This field should always be set to NULL for
|
||||
* disk-based streams.
|
||||
*
|
||||
* size ::
|
||||
* The stream size in bytes.
|
||||
*
|
||||
* In case of compressed streams where the size is unknown before
|
||||
* actually doing the decompression, the value is set to 0x7FFFFFFF.
|
||||
* (Note that this size value can occur for normal streams also; it is
|
||||
* thus just a hint.)
|
||||
*
|
||||
* pos ::
|
||||
* The current position within the stream.
|
||||
*
|
||||
* descriptor ::
|
||||
* This field is a union that can hold an integer or a pointer. It is
|
||||
* used by stream implementations to store file descriptors or `FILE*'
|
||||
* pointers.
|
||||
*
|
||||
* pathname ::
|
||||
* This field is completely ignored by FreeType. However, it is often
|
||||
* useful during debugging to use it to store the stream's filename
|
||||
* (where available).
|
||||
*
|
||||
* read ::
|
||||
* The stream's input function.
|
||||
*
|
||||
* close ::
|
||||
* The stream's close function.
|
||||
*
|
||||
* memory ::
|
||||
* The memory manager to use to preload frames. This is set
|
||||
* internally by FreeType and shouldn't be touched by stream
|
||||
* implementations.
|
||||
*
|
||||
* cursor ::
|
||||
* This field is set and used internally by FreeType when parsing
|
||||
* frames.
|
||||
*
|
||||
* limit ::
|
||||
* This field is set and used internally by FreeType when parsing
|
||||
* frames.
|
||||
*
|
||||
*/
|
||||
typedef struct FT_StreamRec_
|
||||
{
|
||||
unsigned char* base;
|
||||
unsigned long size;
|
||||
unsigned long pos;
|
||||
|
||||
FT_StreamDesc descriptor;
|
||||
FT_StreamDesc pathname;
|
||||
FT_Stream_IoFunc read;
|
||||
FT_Stream_CloseFunc close;
|
||||
|
||||
FT_Memory memory;
|
||||
unsigned char* cursor;
|
||||
unsigned char* limit;
|
||||
|
||||
} FT_StreamRec;
|
||||
|
||||
/* */
|
||||
|
||||
|
||||
FT_END_HEADER
|
||||
|
||||
#endif /* FTSYSTEM_H_ */
|
||||
|
||||
|
||||
/* END */
|
||||
350
include/fake/vtcs_root_vienna/freetype2/freetype/fttrigon.h
Normal file
350
include/fake/vtcs_root_vienna/freetype2/freetype/fttrigon.h
Normal file
@ -0,0 +1,350 @@
|
||||
/***************************************************************************/
|
||||
/* */
|
||||
/* fttrigon.h */
|
||||
/* */
|
||||
/* FreeType trigonometric functions (specification). */
|
||||
/* */
|
||||
/* Copyright 2001-2016 by */
|
||||
/* David Turner, Robert Wilhelm, and Werner Lemberg. */
|
||||
/* */
|
||||
/* This file is part of the FreeType project, and may only be used, */
|
||||
/* modified, and distributed under the terms of the FreeType project */
|
||||
/* license, LICENSE.TXT. By continuing to use, modify, or distribute */
|
||||
/* this file you indicate that you have read the license and */
|
||||
/* understand and accept it fully. */
|
||||
/* */
|
||||
/***************************************************************************/
|
||||
|
||||
|
||||
#ifndef FTTRIGON_H_
|
||||
#define FTTRIGON_H_
|
||||
|
||||
#include FT_FREETYPE_H
|
||||
|
||||
#ifdef FREETYPE_H
|
||||
#error "freetype.h of FreeType 1 has been loaded!"
|
||||
#error "Please fix the directory search order for header files"
|
||||
#error "so that freetype.h of FreeType 2 is found first."
|
||||
#endif
|
||||
|
||||
|
||||
FT_BEGIN_HEADER
|
||||
|
||||
|
||||
/*************************************************************************/
|
||||
/* */
|
||||
/* <Section> */
|
||||
/* computations */
|
||||
/* */
|
||||
/*************************************************************************/
|
||||
|
||||
|
||||
/*************************************************************************
|
||||
*
|
||||
* @type:
|
||||
* FT_Angle
|
||||
*
|
||||
* @description:
|
||||
* This type is used to model angle values in FreeType. Note that the
|
||||
* angle is a 16.16 fixed-point value expressed in degrees.
|
||||
*
|
||||
*/
|
||||
typedef FT_Fixed FT_Angle;
|
||||
|
||||
|
||||
/*************************************************************************
|
||||
*
|
||||
* @macro:
|
||||
* FT_ANGLE_PI
|
||||
*
|
||||
* @description:
|
||||
* The angle pi expressed in @FT_Angle units.
|
||||
*
|
||||
*/
|
||||
#define FT_ANGLE_PI ( 180L << 16 )
|
||||
|
||||
|
||||
/*************************************************************************
|
||||
*
|
||||
* @macro:
|
||||
* FT_ANGLE_2PI
|
||||
*
|
||||
* @description:
|
||||
* The angle 2*pi expressed in @FT_Angle units.
|
||||
*
|
||||
*/
|
||||
#define FT_ANGLE_2PI ( FT_ANGLE_PI * 2 )
|
||||
|
||||
|
||||
/*************************************************************************
|
||||
*
|
||||
* @macro:
|
||||
* FT_ANGLE_PI2
|
||||
*
|
||||
* @description:
|
||||
* The angle pi/2 expressed in @FT_Angle units.
|
||||
*
|
||||
*/
|
||||
#define FT_ANGLE_PI2 ( FT_ANGLE_PI / 2 )
|
||||
|
||||
|
||||
/*************************************************************************
|
||||
*
|
||||
* @macro:
|
||||
* FT_ANGLE_PI4
|
||||
*
|
||||
* @description:
|
||||
* The angle pi/4 expressed in @FT_Angle units.
|
||||
*
|
||||
*/
|
||||
#define FT_ANGLE_PI4 ( FT_ANGLE_PI / 4 )
|
||||
|
||||
|
||||
/*************************************************************************
|
||||
*
|
||||
* @function:
|
||||
* FT_Sin
|
||||
*
|
||||
* @description:
|
||||
* Return the sinus of a given angle in fixed-point format.
|
||||
*
|
||||
* @input:
|
||||
* angle ::
|
||||
* The input angle.
|
||||
*
|
||||
* @return:
|
||||
* The sinus value.
|
||||
*
|
||||
* @note:
|
||||
* If you need both the sinus and cosinus for a given angle, use the
|
||||
* function @FT_Vector_Unit.
|
||||
*
|
||||
*/
|
||||
FT_EXPORT( FT_Fixed )
|
||||
FT_Sin( FT_Angle angle );
|
||||
|
||||
|
||||
/*************************************************************************
|
||||
*
|
||||
* @function:
|
||||
* FT_Cos
|
||||
*
|
||||
* @description:
|
||||
* Return the cosinus of a given angle in fixed-point format.
|
||||
*
|
||||
* @input:
|
||||
* angle ::
|
||||
* The input angle.
|
||||
*
|
||||
* @return:
|
||||
* The cosinus value.
|
||||
*
|
||||
* @note:
|
||||
* If you need both the sinus and cosinus for a given angle, use the
|
||||
* function @FT_Vector_Unit.
|
||||
*
|
||||
*/
|
||||
FT_EXPORT( FT_Fixed )
|
||||
FT_Cos( FT_Angle angle );
|
||||
|
||||
|
||||
/*************************************************************************
|
||||
*
|
||||
* @function:
|
||||
* FT_Tan
|
||||
*
|
||||
* @description:
|
||||
* Return the tangent of a given angle in fixed-point format.
|
||||
*
|
||||
* @input:
|
||||
* angle ::
|
||||
* The input angle.
|
||||
*
|
||||
* @return:
|
||||
* The tangent value.
|
||||
*
|
||||
*/
|
||||
FT_EXPORT( FT_Fixed )
|
||||
FT_Tan( FT_Angle angle );
|
||||
|
||||
|
||||
/*************************************************************************
|
||||
*
|
||||
* @function:
|
||||
* FT_Atan2
|
||||
*
|
||||
* @description:
|
||||
* Return the arc-tangent corresponding to a given vector (x,y) in
|
||||
* the 2d plane.
|
||||
*
|
||||
* @input:
|
||||
* x ::
|
||||
* The horizontal vector coordinate.
|
||||
*
|
||||
* y ::
|
||||
* The vertical vector coordinate.
|
||||
*
|
||||
* @return:
|
||||
* The arc-tangent value (i.e. angle).
|
||||
*
|
||||
*/
|
||||
FT_EXPORT( FT_Angle )
|
||||
FT_Atan2( FT_Fixed x,
|
||||
FT_Fixed y );
|
||||
|
||||
|
||||
/*************************************************************************
|
||||
*
|
||||
* @function:
|
||||
* FT_Angle_Diff
|
||||
*
|
||||
* @description:
|
||||
* Return the difference between two angles. The result is always
|
||||
* constrained to the ]-PI..PI] interval.
|
||||
*
|
||||
* @input:
|
||||
* angle1 ::
|
||||
* First angle.
|
||||
*
|
||||
* angle2 ::
|
||||
* Second angle.
|
||||
*
|
||||
* @return:
|
||||
* Constrained value of `value2-value1'.
|
||||
*
|
||||
*/
|
||||
FT_EXPORT( FT_Angle )
|
||||
FT_Angle_Diff( FT_Angle angle1,
|
||||
FT_Angle angle2 );
|
||||
|
||||
|
||||
/*************************************************************************
|
||||
*
|
||||
* @function:
|
||||
* FT_Vector_Unit
|
||||
*
|
||||
* @description:
|
||||
* Return the unit vector corresponding to a given angle. After the
|
||||
* call, the value of `vec.x' will be `cos(angle)', and the value of
|
||||
* `vec.y' will be `sin(angle)'.
|
||||
*
|
||||
* This function is useful to retrieve both the sinus and cosinus of a
|
||||
* given angle quickly.
|
||||
*
|
||||
* @output:
|
||||
* vec ::
|
||||
* The address of target vector.
|
||||
*
|
||||
* @input:
|
||||
* angle ::
|
||||
* The input angle.
|
||||
*
|
||||
*/
|
||||
FT_EXPORT( void )
|
||||
FT_Vector_Unit( FT_Vector* vec,
|
||||
FT_Angle angle );
|
||||
|
||||
|
||||
/*************************************************************************
|
||||
*
|
||||
* @function:
|
||||
* FT_Vector_Rotate
|
||||
*
|
||||
* @description:
|
||||
* Rotate a vector by a given angle.
|
||||
*
|
||||
* @inout:
|
||||
* vec ::
|
||||
* The address of target vector.
|
||||
*
|
||||
* @input:
|
||||
* angle ::
|
||||
* The input angle.
|
||||
*
|
||||
*/
|
||||
FT_EXPORT( void )
|
||||
FT_Vector_Rotate( FT_Vector* vec,
|
||||
FT_Angle angle );
|
||||
|
||||
|
||||
/*************************************************************************
|
||||
*
|
||||
* @function:
|
||||
* FT_Vector_Length
|
||||
*
|
||||
* @description:
|
||||
* Return the length of a given vector.
|
||||
*
|
||||
* @input:
|
||||
* vec ::
|
||||
* The address of target vector.
|
||||
*
|
||||
* @return:
|
||||
* The vector length, expressed in the same units that the original
|
||||
* vector coordinates.
|
||||
*
|
||||
*/
|
||||
FT_EXPORT( FT_Fixed )
|
||||
FT_Vector_Length( FT_Vector* vec );
|
||||
|
||||
|
||||
/*************************************************************************
|
||||
*
|
||||
* @function:
|
||||
* FT_Vector_Polarize
|
||||
*
|
||||
* @description:
|
||||
* Compute both the length and angle of a given vector.
|
||||
*
|
||||
* @input:
|
||||
* vec ::
|
||||
* The address of source vector.
|
||||
*
|
||||
* @output:
|
||||
* length ::
|
||||
* The vector length.
|
||||
*
|
||||
* angle ::
|
||||
* The vector angle.
|
||||
*
|
||||
*/
|
||||
FT_EXPORT( void )
|
||||
FT_Vector_Polarize( FT_Vector* vec,
|
||||
FT_Fixed *length,
|
||||
FT_Angle *angle );
|
||||
|
||||
|
||||
/*************************************************************************
|
||||
*
|
||||
* @function:
|
||||
* FT_Vector_From_Polar
|
||||
*
|
||||
* @description:
|
||||
* Compute vector coordinates from a length and angle.
|
||||
*
|
||||
* @output:
|
||||
* vec ::
|
||||
* The address of source vector.
|
||||
*
|
||||
* @input:
|
||||
* length ::
|
||||
* The vector length.
|
||||
*
|
||||
* angle ::
|
||||
* The vector angle.
|
||||
*
|
||||
*/
|
||||
FT_EXPORT( void )
|
||||
FT_Vector_From_Polar( FT_Vector* vec,
|
||||
FT_Fixed length,
|
||||
FT_Angle angle );
|
||||
|
||||
/* */
|
||||
|
||||
|
||||
FT_END_HEADER
|
||||
|
||||
#endif /* FTTRIGON_H_ */
|
||||
|
||||
|
||||
/* END */
|
||||
329
include/fake/vtcs_root_vienna/freetype2/freetype/ftttdrv.h
Normal file
329
include/fake/vtcs_root_vienna/freetype2/freetype/ftttdrv.h
Normal file
@ -0,0 +1,329 @@
|
||||
/***************************************************************************/
|
||||
/* */
|
||||
/* ftttdrv.h */
|
||||
/* */
|
||||
/* FreeType API for controlling the TrueType driver */
|
||||
/* (specification only). */
|
||||
/* */
|
||||
/* Copyright 2013-2016 by */
|
||||
/* David Turner, Robert Wilhelm, and Werner Lemberg. */
|
||||
/* */
|
||||
/* This file is part of the FreeType project, and may only be used, */
|
||||
/* modified, and distributed under the terms of the FreeType project */
|
||||
/* license, LICENSE.TXT. By continuing to use, modify, or distribute */
|
||||
/* this file you indicate that you have read the license and */
|
||||
/* understand and accept it fully. */
|
||||
/* */
|
||||
/***************************************************************************/
|
||||
|
||||
|
||||
#ifndef FTTTDRV_H_
|
||||
#define FTTTDRV_H_
|
||||
|
||||
#include <ft2build.h>
|
||||
#include FT_FREETYPE_H
|
||||
|
||||
#ifdef FREETYPE_H
|
||||
#error "freetype.h of FreeType 1 has been loaded!"
|
||||
#error "Please fix the directory search order for header files"
|
||||
#error "so that freetype.h of FreeType 2 is found first."
|
||||
#endif
|
||||
|
||||
|
||||
FT_BEGIN_HEADER
|
||||
|
||||
|
||||
/**************************************************************************
|
||||
*
|
||||
* @section:
|
||||
* tt_driver
|
||||
*
|
||||
* @title:
|
||||
* The TrueType driver
|
||||
*
|
||||
* @abstract:
|
||||
* Controlling the TrueType driver module.
|
||||
*
|
||||
* @description:
|
||||
* While FreeType's TrueType driver doesn't expose API functions by
|
||||
* itself, it is possible to control its behaviour with @FT_Property_Set
|
||||
* and @FT_Property_Get. The following lists the available properties
|
||||
* together with the necessary macros and structures.
|
||||
*
|
||||
* The TrueType driver's module name is `truetype'.
|
||||
*
|
||||
* We start with a list of definitions, kindly provided by Greg
|
||||
* Hitchcock.
|
||||
*
|
||||
* _Bi-Level_ _Rendering_
|
||||
*
|
||||
* Monochromatic rendering, exclusively used in the early days of
|
||||
* TrueType by both Apple and Microsoft. Microsoft's GDI interface
|
||||
* supported hinting of the right-side bearing point, such that the
|
||||
* advance width could be non-linear. Most often this was done to
|
||||
* achieve some level of glyph symmetry. To enable reasonable
|
||||
* performance (e.g., not having to run hinting on all glyphs just to
|
||||
* get the widths) there was a bit in the head table indicating if the
|
||||
* side bearing was hinted, and additional tables, `hdmx' and `LTSH', to
|
||||
* cache hinting widths across multiple sizes and device aspect ratios.
|
||||
*
|
||||
* _Font_ _Smoothing_
|
||||
*
|
||||
* Microsoft's GDI implementation of anti-aliasing. Not traditional
|
||||
* anti-aliasing as the outlines were hinted before the sampling. The
|
||||
* widths matched the bi-level rendering.
|
||||
*
|
||||
* _ClearType_ _Rendering_
|
||||
*
|
||||
* Technique that uses physical subpixels to improve rendering on LCD
|
||||
* (and other) displays. Because of the higher resolution, many methods
|
||||
* of improving symmetry in glyphs through hinting the right-side
|
||||
* bearing were no longer necessary. This lead to what GDI calls
|
||||
* `natural widths' ClearType, see
|
||||
* http://www.beatstamm.com/typography/RTRCh4.htm#Sec21. Since hinting
|
||||
* has extra resolution, most non-linearity went away, but it is still
|
||||
* possible for hints to change the advance widths in this mode.
|
||||
*
|
||||
* _ClearType_ _Compatible_ _Widths_
|
||||
*
|
||||
* One of the earliest challenges with ClearType was allowing the
|
||||
* implementation in GDI to be selected without requiring all UI and
|
||||
* documents to reflow. To address this, a compatible method of
|
||||
* rendering ClearType was added where the font hints are executed once
|
||||
* to determine the width in bi-level rendering, and then re-run in
|
||||
* ClearType, with the difference in widths being absorbed in the font
|
||||
* hints for ClearType (mostly in the white space of hints); see
|
||||
* http://www.beatstamm.com/typography/RTRCh4.htm#Sec20. Somewhat by
|
||||
* definition, compatible width ClearType allows for non-linear widths,
|
||||
* but only when the bi-level version has non-linear widths.
|
||||
*
|
||||
* _ClearType_ _Subpixel_ _Positioning_
|
||||
*
|
||||
* One of the nice benefits of ClearType is the ability to more crisply
|
||||
* display fractional widths; unfortunately, the GDI model of integer
|
||||
* bitmaps did not support this. However, the WPF and Direct Write
|
||||
* frameworks do support fractional widths. DWrite calls this `natural
|
||||
* mode', not to be confused with GDI's `natural widths'. Subpixel
|
||||
* positioning, in the current implementation of Direct Write,
|
||||
* unfortunately does not support hinted advance widths, see
|
||||
* http://www.beatstamm.com/typography/RTRCh4.htm#Sec22. Note that the
|
||||
* TrueType interpreter fully allows the advance width to be adjusted in
|
||||
* this mode, just the DWrite client will ignore those changes.
|
||||
*
|
||||
* _ClearType_ _Backwards_ _Compatibility_
|
||||
*
|
||||
* This is a set of exceptions made in the TrueType interpreter to
|
||||
* minimize hinting techniques that were problematic with the extra
|
||||
* resolution of ClearType; see
|
||||
* http://www.beatstamm.com/typography/RTRCh4.htm#Sec1 and
|
||||
* http://www.microsoft.com/typography/cleartype/truetypecleartype.aspx.
|
||||
* This technique is not to be confused with ClearType compatible
|
||||
* widths. ClearType backwards compatibility has no direct impact on
|
||||
* changing advance widths, but there might be an indirect impact on
|
||||
* disabling some deltas. This could be worked around in backwards
|
||||
* compatibility mode.
|
||||
*
|
||||
* _Native_ _ClearType_ _Mode_
|
||||
*
|
||||
* (Not to be confused with `natural widths'.) This mode removes all
|
||||
* the exceptions in the TrueType interpreter when running with
|
||||
* ClearType. Any issues on widths would still apply, though.
|
||||
*
|
||||
*/
|
||||
|
||||
|
||||
/**************************************************************************
|
||||
*
|
||||
* @property:
|
||||
* interpreter-version
|
||||
*
|
||||
* @description:
|
||||
|
||||
* Currently, three versions are available, two representing the
|
||||
* bytecode interpreter with subpixel hinting support (old `Infinality'
|
||||
* code and new stripped-down and higher performance `minimal' code) and
|
||||
* one without, respectively. The default is subpixel support if
|
||||
* TT_CONFIG_OPTION_SUBPIXEL_HINTING is defined, and no subpixel support
|
||||
* otherwise (since it isn't available then).
|
||||
*
|
||||
* If subpixel hinting is on, many TrueType bytecode instructions behave
|
||||
* differently compared to B/W or grayscale rendering (except if `native
|
||||
* ClearType' is selected by the font). Microsoft's main idea is to
|
||||
* render at a much increased horizontal resolution, then sampling down
|
||||
* the created output to subpixel precision. However, many older fonts
|
||||
* are not suited to this and must be specially taken care of by
|
||||
* applying (hardcoded) tweaks in Microsoft's interpreter.
|
||||
*
|
||||
* Details on subpixel hinting and some of the necessary tweaks can be
|
||||
* found in Greg Hitchcock's whitepaper at
|
||||
* `http://www.microsoft.com/typography/cleartype/truetypecleartype.aspx'.
|
||||
* Note that FreeType currently doesn't really `subpixel hint' (6x1, 6x2,
|
||||
* or 6x5 supersampling) like discussed in the paper. Depending on the
|
||||
* chosen interpreter, it simply ignores instructions on vertical stems
|
||||
* to arrive at very similar results.
|
||||
*
|
||||
* The following example code demonstrates how to deactivate subpixel
|
||||
* hinting (omitting the error handling).
|
||||
*
|
||||
* {
|
||||
* FT_Library library;
|
||||
* FT_Face face;
|
||||
* FT_UInt interpreter_version = TT_INTERPRETER_VERSION_35;
|
||||
*
|
||||
*
|
||||
* FT_Init_FreeType( &library );
|
||||
*
|
||||
* FT_Property_Set( library, "truetype",
|
||||
* "interpreter-version",
|
||||
* &interpreter_version );
|
||||
* }
|
||||
*
|
||||
* @note:
|
||||
* This property can be used with @FT_Property_Get also.
|
||||
*
|
||||
* This property can be set via the `FREETYPE_PROPERTIES' environment
|
||||
* variable (using values `35', `38', or `40').
|
||||
*/
|
||||
|
||||
|
||||
/**************************************************************************
|
||||
*
|
||||
* @enum:
|
||||
* TT_INTERPRETER_VERSION_XXX
|
||||
*
|
||||
* @description:
|
||||
* A list of constants used for the @interpreter-version property to
|
||||
* select the hinting engine for Truetype fonts.
|
||||
*
|
||||
* The numeric value in the constant names represents the version
|
||||
* number as returned by the `GETINFO' bytecode instruction.
|
||||
*
|
||||
* @values:
|
||||
* TT_INTERPRETER_VERSION_35 ::
|
||||
* Version~35 corresponds to MS rasterizer v.1.7 as used e.g. in
|
||||
* Windows~98; only grayscale and B/W rasterizing is supported.
|
||||
*
|
||||
* TT_INTERPRETER_VERSION_38 ::
|
||||
* Version~38 corresponds to MS rasterizer v.1.9; it is roughly
|
||||
* equivalent to the hinting provided by DirectWrite ClearType (as can
|
||||
* be found, for example, in the Internet Explorer~9 running on
|
||||
* Windows~7). It is used in FreeType to select the `Infinality'
|
||||
* subpixel hinting code. The code may be removed in a future
|
||||
* version.
|
||||
*
|
||||
* TT_INTERPRETER_VERSION_40 ::
|
||||
* Version~40 corresponds to MS rasterizer v.2.1; it is roughly
|
||||
* equivalent to the hinting provided by DirectWrite ClearType (as can
|
||||
* be found, for example, in Microsoft's Edge Browser on Windows~10).
|
||||
* It is used in FreeType to select the `minimal' subpixel hinting
|
||||
* code, a stripped-down and higher performance version of the
|
||||
* `Infinality' code.
|
||||
*
|
||||
* @note:
|
||||
* This property controls the behaviour of the bytecode interpreter
|
||||
* and thus how outlines get hinted. It does *not* control how glyph
|
||||
* get rasterized! In particular, it does not control subpixel color
|
||||
* filtering.
|
||||
*
|
||||
* If FreeType has not been compiled with the configuration option
|
||||
* FT_CONFIG_OPTION_SUBPIXEL_HINTING, selecting version~38 or~40 causes
|
||||
* an `FT_Err_Unimplemented_Feature' error.
|
||||
*
|
||||
* Depending on the graphics framework, Microsoft uses different
|
||||
* bytecode and rendering engines. As a consequence, the version
|
||||
* numbers returned by a call to the `GETINFO' bytecode instruction are
|
||||
* more convoluted than desired.
|
||||
*
|
||||
* Here are two tables that try to shed some light on the possible
|
||||
* values for the MS rasterizer engine, together with the additional
|
||||
* features introduced by it.
|
||||
*
|
||||
* {
|
||||
* GETINFO framework version feature
|
||||
* -------------------------------------------------------------------
|
||||
* 3 GDI (Win 3.1), v1.0 16-bit, first version
|
||||
* TrueImage
|
||||
* 33 GDI (Win NT 3.1), v1.5 32-bit
|
||||
* HP Laserjet
|
||||
* 34 GDI (Win 95) v1.6 font smoothing,
|
||||
* new SCANTYPE opcode
|
||||
* 35 GDI (Win 98/2000) v1.7 (UN)SCALED_COMPONENT_OFFSET
|
||||
* bits in composite glyphs
|
||||
* 36 MGDI (Win CE 2) v1.6+ classic ClearType
|
||||
* 37 GDI (XP and later), v1.8 ClearType
|
||||
* GDI+ old (before Vista)
|
||||
* 38 GDI+ old (Vista, Win 7), v1.9 subpixel ClearType,
|
||||
* WPF Y-direction ClearType,
|
||||
* additional error checking
|
||||
* 39 DWrite (before Win 8) v2.0 subpixel ClearType flags
|
||||
* in GETINFO opcode,
|
||||
* bug fixes
|
||||
* 40 GDI+ (after Win 7), v2.1 Y-direction ClearType flag
|
||||
* DWrite (Win 8) in GETINFO opcode,
|
||||
* Gray ClearType
|
||||
* }
|
||||
*
|
||||
* The `version' field gives a rough orientation only, since some
|
||||
* applications provided certain features much earlier (as an example,
|
||||
* Microsoft Reader used subpixel and Y-direction ClearType already in
|
||||
* Windows 2000). Similarly, updates to a given framework might include
|
||||
* improved hinting support.
|
||||
*
|
||||
* {
|
||||
* version sampling rendering comment
|
||||
* x y x y
|
||||
* --------------------------------------------------------------
|
||||
* v1.0 normal normal B/W B/W bi-level
|
||||
* v1.6 high high gray gray grayscale
|
||||
* v1.8 high normal color-filter B/W (GDI) ClearType
|
||||
* v1.9 high high color-filter gray Color ClearType
|
||||
* v2.1 high normal gray B/W Gray ClearType
|
||||
* v2.1 high high gray gray Gray ClearType
|
||||
* }
|
||||
*
|
||||
* Color and Gray ClearType are the two available variants of
|
||||
* `Y-direction ClearType', meaning grayscale rasterization along the
|
||||
* Y-direction; the name used in the TrueType specification for this
|
||||
* feature is `symmetric smoothing'. `Classic ClearType' is the
|
||||
* original algorithm used before introducing a modified version in
|
||||
* Win~XP. Another name for v1.6's grayscale rendering is `font
|
||||
* smoothing', and `Color ClearType' is sometimes also called `DWrite
|
||||
* ClearType'. To differentiate between today's Color ClearType and the
|
||||
* earlier ClearType variant with B/W rendering along the vertical axis,
|
||||
* the latter is sometimes called `GDI ClearType'.
|
||||
*
|
||||
* `Normal' and `high' sampling describe the (virtual) resolution to
|
||||
* access the rasterized outline after the hinting process. `Normal'
|
||||
* means 1 sample per grid line (i.e., B/W). In the current Microsoft
|
||||
* implementation, `high' means an extra virtual resolution of 16x16 (or
|
||||
* 16x1) grid lines per pixel for bytecode instructions like `MIRP'.
|
||||
* After hinting, these 16 grid lines are mapped to 6x5 (or 6x1) grid
|
||||
* lines for color filtering if Color ClearType is activated.
|
||||
*
|
||||
* Note that `Gray ClearType' is essentially the same as v1.6's
|
||||
* grayscale rendering. However, the GETINFO instruction handles it
|
||||
* differently: v1.6 returns bit~12 (hinting for grayscale), while v2.1
|
||||
* returns bits~13 (hinting for ClearType), 18 (symmetrical smoothing),
|
||||
* and~19 (Gray ClearType). Also, this mode respects bits 2 and~3 for
|
||||
* the version~1 gasp table exclusively (like Color ClearType), while
|
||||
* v1.6 only respects the values of version~0 (bits 0 and~1).
|
||||
*
|
||||
* Keep in mind that the features of the above interpreter versions
|
||||
* might not map exactly to FreeType features or behavior because it is
|
||||
* a fundamentally different library with different internals.
|
||||
*
|
||||
*/
|
||||
#define TT_INTERPRETER_VERSION_35 35
|
||||
#define TT_INTERPRETER_VERSION_38 38
|
||||
#define TT_INTERPRETER_VERSION_40 40
|
||||
|
||||
/* */
|
||||
|
||||
|
||||
FT_END_HEADER
|
||||
|
||||
|
||||
#endif /* FTTTDRV_H_ */
|
||||
|
||||
|
||||
/* END */
|
||||
602
include/fake/vtcs_root_vienna/freetype2/freetype/fttypes.h
Normal file
602
include/fake/vtcs_root_vienna/freetype2/freetype/fttypes.h
Normal file
@ -0,0 +1,602 @@
|
||||
/***************************************************************************/
|
||||
/* */
|
||||
/* fttypes.h */
|
||||
/* */
|
||||
/* FreeType simple types definitions (specification only). */
|
||||
/* */
|
||||
/* Copyright 1996-2016 by */
|
||||
/* David Turner, Robert Wilhelm, and Werner Lemberg. */
|
||||
/* */
|
||||
/* This file is part of the FreeType project, and may only be used, */
|
||||
/* modified, and distributed under the terms of the FreeType project */
|
||||
/* license, LICENSE.TXT. By continuing to use, modify, or distribute */
|
||||
/* this file you indicate that you have read the license and */
|
||||
/* understand and accept it fully. */
|
||||
/* */
|
||||
/***************************************************************************/
|
||||
|
||||
|
||||
#ifndef FTTYPES_H_
|
||||
#define FTTYPES_H_
|
||||
|
||||
|
||||
#include <ft2build.h>
|
||||
#include FT_CONFIG_CONFIG_H
|
||||
#include FT_SYSTEM_H
|
||||
#include FT_IMAGE_H
|
||||
|
||||
#include <stddef.h>
|
||||
|
||||
|
||||
FT_BEGIN_HEADER
|
||||
|
||||
|
||||
/*************************************************************************/
|
||||
/* */
|
||||
/* <Section> */
|
||||
/* basic_types */
|
||||
/* */
|
||||
/* <Title> */
|
||||
/* Basic Data Types */
|
||||
/* */
|
||||
/* <Abstract> */
|
||||
/* The basic data types defined by the library. */
|
||||
/* */
|
||||
/* <Description> */
|
||||
/* This section contains the basic data types defined by FreeType~2, */
|
||||
/* ranging from simple scalar types to bitmap descriptors. More */
|
||||
/* font-specific structures are defined in a different section. */
|
||||
/* */
|
||||
/* <Order> */
|
||||
/* FT_Byte */
|
||||
/* FT_Bytes */
|
||||
/* FT_Char */
|
||||
/* FT_Int */
|
||||
/* FT_UInt */
|
||||
/* FT_Int16 */
|
||||
/* FT_UInt16 */
|
||||
/* FT_Int32 */
|
||||
/* FT_UInt32 */
|
||||
/* FT_Int64 */
|
||||
/* FT_UInt64 */
|
||||
/* FT_Short */
|
||||
/* FT_UShort */
|
||||
/* FT_Long */
|
||||
/* FT_ULong */
|
||||
/* FT_Bool */
|
||||
/* FT_Offset */
|
||||
/* FT_PtrDist */
|
||||
/* FT_String */
|
||||
/* FT_Tag */
|
||||
/* FT_Error */
|
||||
/* FT_Fixed */
|
||||
/* FT_Pointer */
|
||||
/* FT_Pos */
|
||||
/* FT_Vector */
|
||||
/* FT_BBox */
|
||||
/* FT_Matrix */
|
||||
/* FT_FWord */
|
||||
/* FT_UFWord */
|
||||
/* FT_F2Dot14 */
|
||||
/* FT_UnitVector */
|
||||
/* FT_F26Dot6 */
|
||||
/* FT_Data */
|
||||
/* */
|
||||
/* FT_MAKE_TAG */
|
||||
/* */
|
||||
/* FT_Generic */
|
||||
/* FT_Generic_Finalizer */
|
||||
/* */
|
||||
/* FT_Bitmap */
|
||||
/* FT_Pixel_Mode */
|
||||
/* FT_Palette_Mode */
|
||||
/* FT_Glyph_Format */
|
||||
/* FT_IMAGE_TAG */
|
||||
/* */
|
||||
/*************************************************************************/
|
||||
|
||||
|
||||
/*************************************************************************/
|
||||
/* */
|
||||
/* <Type> */
|
||||
/* FT_Bool */
|
||||
/* */
|
||||
/* <Description> */
|
||||
/* A typedef of unsigned char, used for simple booleans. As usual, */
|
||||
/* values 1 and~0 represent true and false, respectively. */
|
||||
/* */
|
||||
typedef unsigned char FT_Bool;
|
||||
|
||||
|
||||
/*************************************************************************/
|
||||
/* */
|
||||
/* <Type> */
|
||||
/* FT_FWord */
|
||||
/* */
|
||||
/* <Description> */
|
||||
/* A signed 16-bit integer used to store a distance in original font */
|
||||
/* units. */
|
||||
/* */
|
||||
typedef signed short FT_FWord; /* distance in FUnits */
|
||||
|
||||
|
||||
/*************************************************************************/
|
||||
/* */
|
||||
/* <Type> */
|
||||
/* FT_UFWord */
|
||||
/* */
|
||||
/* <Description> */
|
||||
/* An unsigned 16-bit integer used to store a distance in original */
|
||||
/* font units. */
|
||||
/* */
|
||||
typedef unsigned short FT_UFWord; /* unsigned distance */
|
||||
|
||||
|
||||
/*************************************************************************/
|
||||
/* */
|
||||
/* <Type> */
|
||||
/* FT_Char */
|
||||
/* */
|
||||
/* <Description> */
|
||||
/* A simple typedef for the _signed_ char type. */
|
||||
/* */
|
||||
typedef signed char FT_Char;
|
||||
|
||||
|
||||
/*************************************************************************/
|
||||
/* */
|
||||
/* <Type> */
|
||||
/* FT_Byte */
|
||||
/* */
|
||||
/* <Description> */
|
||||
/* A simple typedef for the _unsigned_ char type. */
|
||||
/* */
|
||||
typedef unsigned char FT_Byte;
|
||||
|
||||
|
||||
/*************************************************************************/
|
||||
/* */
|
||||
/* <Type> */
|
||||
/* FT_Bytes */
|
||||
/* */
|
||||
/* <Description> */
|
||||
/* A typedef for constant memory areas. */
|
||||
/* */
|
||||
typedef const FT_Byte* FT_Bytes;
|
||||
|
||||
|
||||
/*************************************************************************/
|
||||
/* */
|
||||
/* <Type> */
|
||||
/* FT_Tag */
|
||||
/* */
|
||||
/* <Description> */
|
||||
/* A typedef for 32-bit tags (as used in the SFNT format). */
|
||||
/* */
|
||||
typedef FT_UInt32 FT_Tag;
|
||||
|
||||
|
||||
/*************************************************************************/
|
||||
/* */
|
||||
/* <Type> */
|
||||
/* FT_String */
|
||||
/* */
|
||||
/* <Description> */
|
||||
/* A simple typedef for the char type, usually used for strings. */
|
||||
/* */
|
||||
typedef char FT_String;
|
||||
|
||||
|
||||
/*************************************************************************/
|
||||
/* */
|
||||
/* <Type> */
|
||||
/* FT_Short */
|
||||
/* */
|
||||
/* <Description> */
|
||||
/* A typedef for signed short. */
|
||||
/* */
|
||||
typedef signed short FT_Short;
|
||||
|
||||
|
||||
/*************************************************************************/
|
||||
/* */
|
||||
/* <Type> */
|
||||
/* FT_UShort */
|
||||
/* */
|
||||
/* <Description> */
|
||||
/* A typedef for unsigned short. */
|
||||
/* */
|
||||
typedef unsigned short FT_UShort;
|
||||
|
||||
|
||||
/*************************************************************************/
|
||||
/* */
|
||||
/* <Type> */
|
||||
/* FT_Int */
|
||||
/* */
|
||||
/* <Description> */
|
||||
/* A typedef for the int type. */
|
||||
/* */
|
||||
typedef signed int FT_Int;
|
||||
|
||||
|
||||
/*************************************************************************/
|
||||
/* */
|
||||
/* <Type> */
|
||||
/* FT_UInt */
|
||||
/* */
|
||||
/* <Description> */
|
||||
/* A typedef for the unsigned int type. */
|
||||
/* */
|
||||
typedef unsigned int FT_UInt;
|
||||
|
||||
|
||||
/*************************************************************************/
|
||||
/* */
|
||||
/* <Type> */
|
||||
/* FT_Long */
|
||||
/* */
|
||||
/* <Description> */
|
||||
/* A typedef for signed long. */
|
||||
/* */
|
||||
typedef signed long FT_Long;
|
||||
|
||||
|
||||
/*************************************************************************/
|
||||
/* */
|
||||
/* <Type> */
|
||||
/* FT_ULong */
|
||||
/* */
|
||||
/* <Description> */
|
||||
/* A typedef for unsigned long. */
|
||||
/* */
|
||||
typedef unsigned long FT_ULong;
|
||||
|
||||
|
||||
/*************************************************************************/
|
||||
/* */
|
||||
/* <Type> */
|
||||
/* FT_F2Dot14 */
|
||||
/* */
|
||||
/* <Description> */
|
||||
/* A signed 2.14 fixed-point type used for unit vectors. */
|
||||
/* */
|
||||
typedef signed short FT_F2Dot14;
|
||||
|
||||
|
||||
/*************************************************************************/
|
||||
/* */
|
||||
/* <Type> */
|
||||
/* FT_F26Dot6 */
|
||||
/* */
|
||||
/* <Description> */
|
||||
/* A signed 26.6 fixed-point type used for vectorial pixel */
|
||||
/* coordinates. */
|
||||
/* */
|
||||
typedef signed long FT_F26Dot6;
|
||||
|
||||
|
||||
/*************************************************************************/
|
||||
/* */
|
||||
/* <Type> */
|
||||
/* FT_Fixed */
|
||||
/* */
|
||||
/* <Description> */
|
||||
/* This type is used to store 16.16 fixed-point values, like scaling */
|
||||
/* values or matrix coefficients. */
|
||||
/* */
|
||||
typedef signed long FT_Fixed;
|
||||
|
||||
|
||||
/*************************************************************************/
|
||||
/* */
|
||||
/* <Type> */
|
||||
/* FT_Error */
|
||||
/* */
|
||||
/* <Description> */
|
||||
/* The FreeType error code type. A value of~0 is always interpreted */
|
||||
/* as a successful operation. */
|
||||
/* */
|
||||
typedef int FT_Error;
|
||||
|
||||
|
||||
/*************************************************************************/
|
||||
/* */
|
||||
/* <Type> */
|
||||
/* FT_Pointer */
|
||||
/* */
|
||||
/* <Description> */
|
||||
/* A simple typedef for a typeless pointer. */
|
||||
/* */
|
||||
typedef void* FT_Pointer;
|
||||
|
||||
|
||||
/*************************************************************************/
|
||||
/* */
|
||||
/* <Type> */
|
||||
/* FT_Offset */
|
||||
/* */
|
||||
/* <Description> */
|
||||
/* This is equivalent to the ANSI~C `size_t' type, i.e., the largest */
|
||||
/* _unsigned_ integer type used to express a file size or position, */
|
||||
/* or a memory block size. */
|
||||
/* */
|
||||
typedef size_t FT_Offset;
|
||||
|
||||
|
||||
/*************************************************************************/
|
||||
/* */
|
||||
/* <Type> */
|
||||
/* FT_PtrDist */
|
||||
/* */
|
||||
/* <Description> */
|
||||
/* This is equivalent to the ANSI~C `ptrdiff_t' type, i.e., the */
|
||||
/* largest _signed_ integer type used to express the distance */
|
||||
/* between two pointers. */
|
||||
/* */
|
||||
typedef ft_ptrdiff_t FT_PtrDist;
|
||||
|
||||
|
||||
/*************************************************************************/
|
||||
/* */
|
||||
/* <Struct> */
|
||||
/* FT_UnitVector */
|
||||
/* */
|
||||
/* <Description> */
|
||||
/* A simple structure used to store a 2D vector unit vector. Uses */
|
||||
/* FT_F2Dot14 types. */
|
||||
/* */
|
||||
/* <Fields> */
|
||||
/* x :: Horizontal coordinate. */
|
||||
/* */
|
||||
/* y :: Vertical coordinate. */
|
||||
/* */
|
||||
typedef struct FT_UnitVector_
|
||||
{
|
||||
FT_F2Dot14 x;
|
||||
FT_F2Dot14 y;
|
||||
|
||||
} FT_UnitVector;
|
||||
|
||||
|
||||
/*************************************************************************/
|
||||
/* */
|
||||
/* <Struct> */
|
||||
/* FT_Matrix */
|
||||
/* */
|
||||
/* <Description> */
|
||||
/* A simple structure used to store a 2x2 matrix. Coefficients are */
|
||||
/* in 16.16 fixed-point format. The computation performed is: */
|
||||
/* */
|
||||
/* { */
|
||||
/* x' = x*xx + y*xy */
|
||||
/* y' = x*yx + y*yy */
|
||||
/* } */
|
||||
/* */
|
||||
/* <Fields> */
|
||||
/* xx :: Matrix coefficient. */
|
||||
/* */
|
||||
/* xy :: Matrix coefficient. */
|
||||
/* */
|
||||
/* yx :: Matrix coefficient. */
|
||||
/* */
|
||||
/* yy :: Matrix coefficient. */
|
||||
/* */
|
||||
typedef struct FT_Matrix_
|
||||
{
|
||||
FT_Fixed xx, xy;
|
||||
FT_Fixed yx, yy;
|
||||
|
||||
} FT_Matrix;
|
||||
|
||||
|
||||
/*************************************************************************/
|
||||
/* */
|
||||
/* <Struct> */
|
||||
/* FT_Data */
|
||||
/* */
|
||||
/* <Description> */
|
||||
/* Read-only binary data represented as a pointer and a length. */
|
||||
/* */
|
||||
/* <Fields> */
|
||||
/* pointer :: The data. */
|
||||
/* */
|
||||
/* length :: The length of the data in bytes. */
|
||||
/* */
|
||||
typedef struct FT_Data_
|
||||
{
|
||||
const FT_Byte* pointer;
|
||||
FT_Int length;
|
||||
|
||||
} FT_Data;
|
||||
|
||||
|
||||
/*************************************************************************/
|
||||
/* */
|
||||
/* <FuncType> */
|
||||
/* FT_Generic_Finalizer */
|
||||
/* */
|
||||
/* <Description> */
|
||||
/* Describe a function used to destroy the `client' data of any */
|
||||
/* FreeType object. See the description of the @FT_Generic type for */
|
||||
/* details of usage. */
|
||||
/* */
|
||||
/* <Input> */
|
||||
/* The address of the FreeType object that is under finalization. */
|
||||
/* Its client data is accessed through its `generic' field. */
|
||||
/* */
|
||||
typedef void (*FT_Generic_Finalizer)(void* object);
|
||||
|
||||
|
||||
/*************************************************************************/
|
||||
/* */
|
||||
/* <Struct> */
|
||||
/* FT_Generic */
|
||||
/* */
|
||||
/* <Description> */
|
||||
/* Client applications often need to associate their own data to a */
|
||||
/* variety of FreeType core objects. For example, a text layout API */
|
||||
/* might want to associate a glyph cache to a given size object. */
|
||||
/* */
|
||||
/* Some FreeType object contains a `generic' field, of type */
|
||||
/* FT_Generic, which usage is left to client applications and font */
|
||||
/* servers. */
|
||||
/* */
|
||||
/* It can be used to store a pointer to client-specific data, as well */
|
||||
/* as the address of a `finalizer' function, which will be called by */
|
||||
/* FreeType when the object is destroyed (for example, the previous */
|
||||
/* client example would put the address of the glyph cache destructor */
|
||||
/* in the `finalizer' field). */
|
||||
/* */
|
||||
/* <Fields> */
|
||||
/* data :: A typeless pointer to any client-specified data. This */
|
||||
/* field is completely ignored by the FreeType library. */
|
||||
/* */
|
||||
/* finalizer :: A pointer to a `generic finalizer' function, which */
|
||||
/* will be called when the object is destroyed. If this */
|
||||
/* field is set to NULL, no code will be called. */
|
||||
/* */
|
||||
typedef struct FT_Generic_
|
||||
{
|
||||
void* data;
|
||||
FT_Generic_Finalizer finalizer;
|
||||
|
||||
} FT_Generic;
|
||||
|
||||
|
||||
/*************************************************************************/
|
||||
/* */
|
||||
/* <Macro> */
|
||||
/* FT_MAKE_TAG */
|
||||
/* */
|
||||
/* <Description> */
|
||||
/* This macro converts four-letter tags that are used to label */
|
||||
/* TrueType tables into an unsigned long, to be used within FreeType. */
|
||||
/* */
|
||||
/* <Note> */
|
||||
/* The produced values *must* be 32-bit integers. Don't redefine */
|
||||
/* this macro. */
|
||||
/* */
|
||||
#define FT_MAKE_TAG( _x1, _x2, _x3, _x4 ) \
|
||||
(FT_Tag) \
|
||||
( ( (FT_ULong)_x1 << 24 ) | \
|
||||
( (FT_ULong)_x2 << 16 ) | \
|
||||
( (FT_ULong)_x3 << 8 ) | \
|
||||
(FT_ULong)_x4 )
|
||||
|
||||
|
||||
/*************************************************************************/
|
||||
/*************************************************************************/
|
||||
/* */
|
||||
/* L I S T M A N A G E M E N T */
|
||||
/* */
|
||||
/*************************************************************************/
|
||||
/*************************************************************************/
|
||||
|
||||
|
||||
/*************************************************************************/
|
||||
/* */
|
||||
/* <Section> */
|
||||
/* list_processing */
|
||||
/* */
|
||||
/*************************************************************************/
|
||||
|
||||
|
||||
/*************************************************************************/
|
||||
/* */
|
||||
/* <Type> */
|
||||
/* FT_ListNode */
|
||||
/* */
|
||||
/* <Description> */
|
||||
/* Many elements and objects in FreeType are listed through an */
|
||||
/* @FT_List record (see @FT_ListRec). As its name suggests, an */
|
||||
/* FT_ListNode is a handle to a single list element. */
|
||||
/* */
|
||||
typedef struct FT_ListNodeRec_* FT_ListNode;
|
||||
|
||||
|
||||
/*************************************************************************/
|
||||
/* */
|
||||
/* <Type> */
|
||||
/* FT_List */
|
||||
/* */
|
||||
/* <Description> */
|
||||
/* A handle to a list record (see @FT_ListRec). */
|
||||
/* */
|
||||
typedef struct FT_ListRec_* FT_List;
|
||||
|
||||
|
||||
/*************************************************************************/
|
||||
/* */
|
||||
/* <Struct> */
|
||||
/* FT_ListNodeRec */
|
||||
/* */
|
||||
/* <Description> */
|
||||
/* A structure used to hold a single list element. */
|
||||
/* */
|
||||
/* <Fields> */
|
||||
/* prev :: The previous element in the list. NULL if first. */
|
||||
/* */
|
||||
/* next :: The next element in the list. NULL if last. */
|
||||
/* */
|
||||
/* data :: A typeless pointer to the listed object. */
|
||||
/* */
|
||||
typedef struct FT_ListNodeRec_
|
||||
{
|
||||
FT_ListNode prev;
|
||||
FT_ListNode next;
|
||||
void* data;
|
||||
|
||||
} FT_ListNodeRec;
|
||||
|
||||
|
||||
/*************************************************************************/
|
||||
/* */
|
||||
/* <Struct> */
|
||||
/* FT_ListRec */
|
||||
/* */
|
||||
/* <Description> */
|
||||
/* A structure used to hold a simple doubly-linked list. These are */
|
||||
/* used in many parts of FreeType. */
|
||||
/* */
|
||||
/* <Fields> */
|
||||
/* head :: The head (first element) of doubly-linked list. */
|
||||
/* */
|
||||
/* tail :: The tail (last element) of doubly-linked list. */
|
||||
/* */
|
||||
typedef struct FT_ListRec_
|
||||
{
|
||||
FT_ListNode head;
|
||||
FT_ListNode tail;
|
||||
|
||||
} FT_ListRec;
|
||||
|
||||
/* */
|
||||
|
||||
|
||||
#define FT_IS_EMPTY( list ) ( (list).head == 0 )
|
||||
#define FT_BOOL( x ) ( (FT_Bool)( x ) )
|
||||
|
||||
/* concatenate C tokens */
|
||||
#define FT_ERR_XCAT( x, y ) x ## y
|
||||
#define FT_ERR_CAT( x, y ) FT_ERR_XCAT( x, y )
|
||||
|
||||
/* see `ftmoderr.h' for descriptions of the following macros */
|
||||
|
||||
#define FT_ERR( e ) FT_ERR_CAT( FT_ERR_PREFIX, e )
|
||||
|
||||
#define FT_ERROR_BASE( x ) ( (x) & 0xFF )
|
||||
#define FT_ERROR_MODULE( x ) ( (x) & 0xFF00U )
|
||||
|
||||
#define FT_ERR_EQ( x, e ) \
|
||||
( FT_ERROR_BASE( x ) == FT_ERROR_BASE( FT_ERR( e ) ) )
|
||||
#define FT_ERR_NEQ( x, e ) \
|
||||
( FT_ERROR_BASE( x ) != FT_ERROR_BASE( FT_ERR( e ) ) )
|
||||
|
||||
|
||||
FT_END_HEADER
|
||||
|
||||
#endif /* FTTYPES_H_ */
|
||||
|
||||
|
||||
/* END */
|
||||
275
include/fake/vtcs_root_vienna/freetype2/freetype/ftwinfnt.h
Normal file
275
include/fake/vtcs_root_vienna/freetype2/freetype/ftwinfnt.h
Normal file
@ -0,0 +1,275 @@
|
||||
/***************************************************************************/
|
||||
/* */
|
||||
/* ftwinfnt.h */
|
||||
/* */
|
||||
/* FreeType API for accessing Windows fnt-specific data. */
|
||||
/* */
|
||||
/* Copyright 2003-2016 by */
|
||||
/* David Turner, Robert Wilhelm, and Werner Lemberg. */
|
||||
/* */
|
||||
/* This file is part of the FreeType project, and may only be used, */
|
||||
/* modified, and distributed under the terms of the FreeType project */
|
||||
/* license, LICENSE.TXT. By continuing to use, modify, or distribute */
|
||||
/* this file you indicate that you have read the license and */
|
||||
/* understand and accept it fully. */
|
||||
/* */
|
||||
/***************************************************************************/
|
||||
|
||||
|
||||
#ifndef FTWINFNT_H_
|
||||
#define FTWINFNT_H_
|
||||
|
||||
#include <ft2build.h>
|
||||
#include FT_FREETYPE_H
|
||||
|
||||
#ifdef FREETYPE_H
|
||||
#error "freetype.h of FreeType 1 has been loaded!"
|
||||
#error "Please fix the directory search order for header files"
|
||||
#error "so that freetype.h of FreeType 2 is found first."
|
||||
#endif
|
||||
|
||||
|
||||
FT_BEGIN_HEADER
|
||||
|
||||
|
||||
/*************************************************************************/
|
||||
/* */
|
||||
/* <Section> */
|
||||
/* winfnt_fonts */
|
||||
/* */
|
||||
/* <Title> */
|
||||
/* Window FNT Files */
|
||||
/* */
|
||||
/* <Abstract> */
|
||||
/* Windows FNT specific API. */
|
||||
/* */
|
||||
/* <Description> */
|
||||
/* This section contains the declaration of Windows FNT specific */
|
||||
/* functions. */
|
||||
/* */
|
||||
/*************************************************************************/
|
||||
|
||||
|
||||
/*************************************************************************
|
||||
*
|
||||
* @enum:
|
||||
* FT_WinFNT_ID_XXX
|
||||
*
|
||||
* @description:
|
||||
* A list of valid values for the `charset' byte in
|
||||
* @FT_WinFNT_HeaderRec. Exact mapping tables for the various cpXXXX
|
||||
* encodings (except for cp1361) can be found at
|
||||
* ftp://ftp.unicode.org/Public in the MAPPINGS/VENDORS/MICSFT/WINDOWS
|
||||
* subdirectory. cp1361 is roughly a superset of
|
||||
* MAPPINGS/OBSOLETE/EASTASIA/KSC/JOHAB.TXT.
|
||||
*
|
||||
* @values:
|
||||
* FT_WinFNT_ID_DEFAULT ::
|
||||
* This is used for font enumeration and font creation as a
|
||||
* `don't care' value. Valid font files don't contain this value.
|
||||
* When querying for information about the character set of the font
|
||||
* that is currently selected into a specified device context, this
|
||||
* return value (of the related Windows API) simply denotes failure.
|
||||
*
|
||||
* FT_WinFNT_ID_SYMBOL ::
|
||||
* There is no known mapping table available.
|
||||
*
|
||||
* FT_WinFNT_ID_MAC ::
|
||||
* Mac Roman encoding.
|
||||
*
|
||||
* FT_WinFNT_ID_OEM ::
|
||||
* From Michael Pöttgen <michael@poettgen.de>:
|
||||
*
|
||||
* The `Windows Font Mapping' article says that FT_WinFNT_ID_OEM
|
||||
* is used for the charset of vector fonts, like `modern.fon',
|
||||
* `roman.fon', and `script.fon' on Windows.
|
||||
*
|
||||
* The `CreateFont' documentation says: The FT_WinFNT_ID_OEM value
|
||||
* specifies a character set that is operating-system dependent.
|
||||
*
|
||||
* The `IFIMETRICS' documentation from the `Windows Driver
|
||||
* Development Kit' says: This font supports an OEM-specific
|
||||
* character set. The OEM character set is system dependent.
|
||||
*
|
||||
* In general OEM, as opposed to ANSI (i.e., cp1252), denotes the
|
||||
* second default codepage that most international versions of
|
||||
* Windows have. It is one of the OEM codepages from
|
||||
*
|
||||
* https://msdn.microsoft.com/en-us/goglobal/bb964655,
|
||||
*
|
||||
* and is used for the `DOS boxes', to support legacy applications.
|
||||
* A German Windows version for example usually uses ANSI codepage
|
||||
* 1252 and OEM codepage 850.
|
||||
*
|
||||
* FT_WinFNT_ID_CP874 ::
|
||||
* A superset of Thai TIS 620 and ISO 8859-11.
|
||||
*
|
||||
* FT_WinFNT_ID_CP932 ::
|
||||
* A superset of Japanese Shift-JIS (with minor deviations).
|
||||
*
|
||||
* FT_WinFNT_ID_CP936 ::
|
||||
* A superset of simplified Chinese GB 2312-1980 (with different
|
||||
* ordering and minor deviations).
|
||||
*
|
||||
* FT_WinFNT_ID_CP949 ::
|
||||
* A superset of Korean Hangul KS~C 5601-1987 (with different
|
||||
* ordering and minor deviations).
|
||||
*
|
||||
* FT_WinFNT_ID_CP950 ::
|
||||
* A superset of traditional Chinese Big~5 ETen (with different
|
||||
* ordering and minor deviations).
|
||||
*
|
||||
* FT_WinFNT_ID_CP1250 ::
|
||||
* A superset of East European ISO 8859-2 (with slightly different
|
||||
* ordering).
|
||||
*
|
||||
* FT_WinFNT_ID_CP1251 ::
|
||||
* A superset of Russian ISO 8859-5 (with different ordering).
|
||||
*
|
||||
* FT_WinFNT_ID_CP1252 ::
|
||||
* ANSI encoding. A superset of ISO 8859-1.
|
||||
*
|
||||
* FT_WinFNT_ID_CP1253 ::
|
||||
* A superset of Greek ISO 8859-7 (with minor modifications).
|
||||
*
|
||||
* FT_WinFNT_ID_CP1254 ::
|
||||
* A superset of Turkish ISO 8859-9.
|
||||
*
|
||||
* FT_WinFNT_ID_CP1255 ::
|
||||
* A superset of Hebrew ISO 8859-8 (with some modifications).
|
||||
*
|
||||
* FT_WinFNT_ID_CP1256 ::
|
||||
* A superset of Arabic ISO 8859-6 (with different ordering).
|
||||
*
|
||||
* FT_WinFNT_ID_CP1257 ::
|
||||
* A superset of Baltic ISO 8859-13 (with some deviations).
|
||||
*
|
||||
* FT_WinFNT_ID_CP1258 ::
|
||||
* For Vietnamese. This encoding doesn't cover all necessary
|
||||
* characters.
|
||||
*
|
||||
* FT_WinFNT_ID_CP1361 ::
|
||||
* Korean (Johab).
|
||||
*/
|
||||
|
||||
#define FT_WinFNT_ID_CP1252 0
|
||||
#define FT_WinFNT_ID_DEFAULT 1
|
||||
#define FT_WinFNT_ID_SYMBOL 2
|
||||
#define FT_WinFNT_ID_MAC 77
|
||||
#define FT_WinFNT_ID_CP932 128
|
||||
#define FT_WinFNT_ID_CP949 129
|
||||
#define FT_WinFNT_ID_CP1361 130
|
||||
#define FT_WinFNT_ID_CP936 134
|
||||
#define FT_WinFNT_ID_CP950 136
|
||||
#define FT_WinFNT_ID_CP1253 161
|
||||
#define FT_WinFNT_ID_CP1254 162
|
||||
#define FT_WinFNT_ID_CP1258 163
|
||||
#define FT_WinFNT_ID_CP1255 177
|
||||
#define FT_WinFNT_ID_CP1256 178
|
||||
#define FT_WinFNT_ID_CP1257 186
|
||||
#define FT_WinFNT_ID_CP1251 204
|
||||
#define FT_WinFNT_ID_CP874 222
|
||||
#define FT_WinFNT_ID_CP1250 238
|
||||
#define FT_WinFNT_ID_OEM 255
|
||||
|
||||
|
||||
/*************************************************************************/
|
||||
/* */
|
||||
/* <Struct> */
|
||||
/* FT_WinFNT_HeaderRec */
|
||||
/* */
|
||||
/* <Description> */
|
||||
/* Windows FNT Header info. */
|
||||
/* */
|
||||
typedef struct FT_WinFNT_HeaderRec_
|
||||
{
|
||||
FT_UShort version;
|
||||
FT_ULong file_size;
|
||||
FT_Byte copyright[60];
|
||||
FT_UShort file_type;
|
||||
FT_UShort nominal_point_size;
|
||||
FT_UShort vertical_resolution;
|
||||
FT_UShort horizontal_resolution;
|
||||
FT_UShort ascent;
|
||||
FT_UShort internal_leading;
|
||||
FT_UShort external_leading;
|
||||
FT_Byte italic;
|
||||
FT_Byte underline;
|
||||
FT_Byte strike_out;
|
||||
FT_UShort weight;
|
||||
FT_Byte charset;
|
||||
FT_UShort pixel_width;
|
||||
FT_UShort pixel_height;
|
||||
FT_Byte pitch_and_family;
|
||||
FT_UShort avg_width;
|
||||
FT_UShort max_width;
|
||||
FT_Byte first_char;
|
||||
FT_Byte last_char;
|
||||
FT_Byte default_char;
|
||||
FT_Byte break_char;
|
||||
FT_UShort bytes_per_row;
|
||||
FT_ULong device_offset;
|
||||
FT_ULong face_name_offset;
|
||||
FT_ULong bits_pointer;
|
||||
FT_ULong bits_offset;
|
||||
FT_Byte reserved;
|
||||
FT_ULong flags;
|
||||
FT_UShort A_space;
|
||||
FT_UShort B_space;
|
||||
FT_UShort C_space;
|
||||
FT_UShort color_table_offset;
|
||||
FT_ULong reserved1[4];
|
||||
|
||||
} FT_WinFNT_HeaderRec;
|
||||
|
||||
|
||||
/*************************************************************************/
|
||||
/* */
|
||||
/* <Struct> */
|
||||
/* FT_WinFNT_Header */
|
||||
/* */
|
||||
/* <Description> */
|
||||
/* A handle to an @FT_WinFNT_HeaderRec structure. */
|
||||
/* */
|
||||
typedef struct FT_WinFNT_HeaderRec_* FT_WinFNT_Header;
|
||||
|
||||
|
||||
/**********************************************************************
|
||||
*
|
||||
* @function:
|
||||
* FT_Get_WinFNT_Header
|
||||
*
|
||||
* @description:
|
||||
* Retrieve a Windows FNT font info header.
|
||||
*
|
||||
* @input:
|
||||
* face :: A handle to the input face.
|
||||
*
|
||||
* @output:
|
||||
* aheader :: The WinFNT header.
|
||||
*
|
||||
* @return:
|
||||
* FreeType error code. 0~means success.
|
||||
*
|
||||
* @note:
|
||||
* This function only works with Windows FNT faces, returning an error
|
||||
* otherwise.
|
||||
*/
|
||||
FT_EXPORT( FT_Error )
|
||||
FT_Get_WinFNT_Header( FT_Face face,
|
||||
FT_WinFNT_HeaderRec *aheader );
|
||||
|
||||
/* */
|
||||
|
||||
|
||||
FT_END_HEADER
|
||||
|
||||
#endif /* FTWINFNT_H_ */
|
||||
|
||||
|
||||
/* END */
|
||||
|
||||
|
||||
/* Local Variables: */
|
||||
/* coding: utf-8 */
|
||||
/* End: */
|
||||
761
include/fake/vtcs_root_vienna/freetype2/freetype/t1tables.h
Normal file
761
include/fake/vtcs_root_vienna/freetype2/freetype/t1tables.h
Normal file
@ -0,0 +1,761 @@
|
||||
/***************************************************************************/
|
||||
/* */
|
||||
/* t1tables.h */
|
||||
/* */
|
||||
/* Basic Type 1/Type 2 tables definitions and interface (specification */
|
||||
/* only). */
|
||||
/* */
|
||||
/* Copyright 1996-2016 by */
|
||||
/* David Turner, Robert Wilhelm, and Werner Lemberg. */
|
||||
/* */
|
||||
/* This file is part of the FreeType project, and may only be used, */
|
||||
/* modified, and distributed under the terms of the FreeType project */
|
||||
/* license, LICENSE.TXT. By continuing to use, modify, or distribute */
|
||||
/* this file you indicate that you have read the license and */
|
||||
/* understand and accept it fully. */
|
||||
/* */
|
||||
/***************************************************************************/
|
||||
|
||||
|
||||
#ifndef T1TABLES_H_
|
||||
#define T1TABLES_H_
|
||||
|
||||
|
||||
#include <ft2build.h>
|
||||
#include FT_FREETYPE_H
|
||||
|
||||
#ifdef FREETYPE_H
|
||||
#error "freetype.h of FreeType 1 has been loaded!"
|
||||
#error "Please fix the directory search order for header files"
|
||||
#error "so that freetype.h of FreeType 2 is found first."
|
||||
#endif
|
||||
|
||||
|
||||
FT_BEGIN_HEADER
|
||||
|
||||
|
||||
/*************************************************************************/
|
||||
/* */
|
||||
/* <Section> */
|
||||
/* type1_tables */
|
||||
/* */
|
||||
/* <Title> */
|
||||
/* Type 1 Tables */
|
||||
/* */
|
||||
/* <Abstract> */
|
||||
/* Type~1 (PostScript) specific font tables. */
|
||||
/* */
|
||||
/* <Description> */
|
||||
/* This section contains the definition of Type 1-specific tables, */
|
||||
/* including structures related to other PostScript font formats. */
|
||||
/* */
|
||||
/* <Order> */
|
||||
/* PS_FontInfoRec */
|
||||
/* PS_FontInfo */
|
||||
/* PS_PrivateRec */
|
||||
/* PS_Private */
|
||||
/* */
|
||||
/* CID_FaceDictRec */
|
||||
/* CID_FaceDict */
|
||||
/* CID_FaceInfoRec */
|
||||
/* CID_FaceInfo */
|
||||
/* */
|
||||
/* FT_Has_PS_Glyph_Names */
|
||||
/* FT_Get_PS_Font_Info */
|
||||
/* FT_Get_PS_Font_Private */
|
||||
/* FT_Get_PS_Font_Value */
|
||||
/* */
|
||||
/* T1_Blend_Flags */
|
||||
/* T1_EncodingType */
|
||||
/* PS_Dict_Keys */
|
||||
/* */
|
||||
/*************************************************************************/
|
||||
|
||||
|
||||
/* Note that we separate font data in PS_FontInfoRec and PS_PrivateRec */
|
||||
/* structures in order to support Multiple Master fonts. */
|
||||
|
||||
|
||||
/*************************************************************************/
|
||||
/* */
|
||||
/* <Struct> */
|
||||
/* PS_FontInfoRec */
|
||||
/* */
|
||||
/* <Description> */
|
||||
/* A structure used to model a Type~1 or Type~2 FontInfo dictionary. */
|
||||
/* Note that for Multiple Master fonts, each instance has its own */
|
||||
/* FontInfo dictionary. */
|
||||
/* */
|
||||
typedef struct PS_FontInfoRec_
|
||||
{
|
||||
FT_String* version;
|
||||
FT_String* notice;
|
||||
FT_String* full_name;
|
||||
FT_String* family_name;
|
||||
FT_String* weight;
|
||||
FT_Long italic_angle;
|
||||
FT_Bool is_fixed_pitch;
|
||||
FT_Short underline_position;
|
||||
FT_UShort underline_thickness;
|
||||
|
||||
} PS_FontInfoRec;
|
||||
|
||||
|
||||
/*************************************************************************/
|
||||
/* */
|
||||
/* <Struct> */
|
||||
/* PS_FontInfo */
|
||||
/* */
|
||||
/* <Description> */
|
||||
/* A handle to a @PS_FontInfoRec structure. */
|
||||
/* */
|
||||
typedef struct PS_FontInfoRec_* PS_FontInfo;
|
||||
|
||||
|
||||
/*************************************************************************/
|
||||
/* */
|
||||
/* <Struct> */
|
||||
/* T1_FontInfo */
|
||||
/* */
|
||||
/* <Description> */
|
||||
/* This type is equivalent to @PS_FontInfoRec. It is deprecated but */
|
||||
/* kept to maintain source compatibility between various versions of */
|
||||
/* FreeType. */
|
||||
/* */
|
||||
typedef PS_FontInfoRec T1_FontInfo;
|
||||
|
||||
|
||||
/*************************************************************************/
|
||||
/* */
|
||||
/* <Struct> */
|
||||
/* PS_PrivateRec */
|
||||
/* */
|
||||
/* <Description> */
|
||||
/* A structure used to model a Type~1 or Type~2 private dictionary. */
|
||||
/* Note that for Multiple Master fonts, each instance has its own */
|
||||
/* Private dictionary. */
|
||||
/* */
|
||||
typedef struct PS_PrivateRec_
|
||||
{
|
||||
FT_Int unique_id;
|
||||
FT_Int lenIV;
|
||||
|
||||
FT_Byte num_blue_values;
|
||||
FT_Byte num_other_blues;
|
||||
FT_Byte num_family_blues;
|
||||
FT_Byte num_family_other_blues;
|
||||
|
||||
FT_Short blue_values[14];
|
||||
FT_Short other_blues[10];
|
||||
|
||||
FT_Short family_blues [14];
|
||||
FT_Short family_other_blues[10];
|
||||
|
||||
FT_Fixed blue_scale;
|
||||
FT_Int blue_shift;
|
||||
FT_Int blue_fuzz;
|
||||
|
||||
FT_UShort standard_width[1];
|
||||
FT_UShort standard_height[1];
|
||||
|
||||
FT_Byte num_snap_widths;
|
||||
FT_Byte num_snap_heights;
|
||||
FT_Bool force_bold;
|
||||
FT_Bool round_stem_up;
|
||||
|
||||
FT_Short snap_widths [13]; /* including std width */
|
||||
FT_Short snap_heights[13]; /* including std height */
|
||||
|
||||
FT_Fixed expansion_factor;
|
||||
|
||||
FT_Long language_group;
|
||||
FT_Long password;
|
||||
|
||||
FT_Short min_feature[2];
|
||||
|
||||
} PS_PrivateRec;
|
||||
|
||||
|
||||
/*************************************************************************/
|
||||
/* */
|
||||
/* <Struct> */
|
||||
/* PS_Private */
|
||||
/* */
|
||||
/* <Description> */
|
||||
/* A handle to a @PS_PrivateRec structure. */
|
||||
/* */
|
||||
typedef struct PS_PrivateRec_* PS_Private;
|
||||
|
||||
|
||||
/*************************************************************************/
|
||||
/* */
|
||||
/* <Struct> */
|
||||
/* T1_Private */
|
||||
/* */
|
||||
/* <Description> */
|
||||
/* This type is equivalent to @PS_PrivateRec. It is deprecated but */
|
||||
/* kept to maintain source compatibility between various versions of */
|
||||
/* FreeType. */
|
||||
/* */
|
||||
typedef PS_PrivateRec T1_Private;
|
||||
|
||||
|
||||
/*************************************************************************/
|
||||
/* */
|
||||
/* <Enum> */
|
||||
/* T1_Blend_Flags */
|
||||
/* */
|
||||
/* <Description> */
|
||||
/* A set of flags used to indicate which fields are present in a */
|
||||
/* given blend dictionary (font info or private). Used to support */
|
||||
/* Multiple Masters fonts. */
|
||||
/* */
|
||||
/* <Values> */
|
||||
/* T1_BLEND_UNDERLINE_POSITION :: */
|
||||
/* T1_BLEND_UNDERLINE_THICKNESS :: */
|
||||
/* T1_BLEND_ITALIC_ANGLE :: */
|
||||
/* T1_BLEND_BLUE_VALUES :: */
|
||||
/* T1_BLEND_OTHER_BLUES :: */
|
||||
/* T1_BLEND_STANDARD_WIDTH :: */
|
||||
/* T1_BLEND_STANDARD_HEIGHT :: */
|
||||
/* T1_BLEND_STEM_SNAP_WIDTHS :: */
|
||||
/* T1_BLEND_STEM_SNAP_HEIGHTS :: */
|
||||
/* T1_BLEND_BLUE_SCALE :: */
|
||||
/* T1_BLEND_BLUE_SHIFT :: */
|
||||
/* T1_BLEND_FAMILY_BLUES :: */
|
||||
/* T1_BLEND_FAMILY_OTHER_BLUES :: */
|
||||
/* T1_BLEND_FORCE_BOLD :: */
|
||||
/* */
|
||||
typedef enum T1_Blend_Flags_
|
||||
{
|
||||
/* required fields in a FontInfo blend dictionary */
|
||||
T1_BLEND_UNDERLINE_POSITION = 0,
|
||||
T1_BLEND_UNDERLINE_THICKNESS,
|
||||
T1_BLEND_ITALIC_ANGLE,
|
||||
|
||||
/* required fields in a Private blend dictionary */
|
||||
T1_BLEND_BLUE_VALUES,
|
||||
T1_BLEND_OTHER_BLUES,
|
||||
T1_BLEND_STANDARD_WIDTH,
|
||||
T1_BLEND_STANDARD_HEIGHT,
|
||||
T1_BLEND_STEM_SNAP_WIDTHS,
|
||||
T1_BLEND_STEM_SNAP_HEIGHTS,
|
||||
T1_BLEND_BLUE_SCALE,
|
||||
T1_BLEND_BLUE_SHIFT,
|
||||
T1_BLEND_FAMILY_BLUES,
|
||||
T1_BLEND_FAMILY_OTHER_BLUES,
|
||||
T1_BLEND_FORCE_BOLD,
|
||||
|
||||
T1_BLEND_MAX /* do not remove */
|
||||
|
||||
} T1_Blend_Flags;
|
||||
|
||||
|
||||
/* these constants are deprecated; use the corresponding */
|
||||
/* `T1_Blend_Flags' values instead */
|
||||
#define t1_blend_underline_position T1_BLEND_UNDERLINE_POSITION
|
||||
#define t1_blend_underline_thickness T1_BLEND_UNDERLINE_THICKNESS
|
||||
#define t1_blend_italic_angle T1_BLEND_ITALIC_ANGLE
|
||||
#define t1_blend_blue_values T1_BLEND_BLUE_VALUES
|
||||
#define t1_blend_other_blues T1_BLEND_OTHER_BLUES
|
||||
#define t1_blend_standard_widths T1_BLEND_STANDARD_WIDTH
|
||||
#define t1_blend_standard_height T1_BLEND_STANDARD_HEIGHT
|
||||
#define t1_blend_stem_snap_widths T1_BLEND_STEM_SNAP_WIDTHS
|
||||
#define t1_blend_stem_snap_heights T1_BLEND_STEM_SNAP_HEIGHTS
|
||||
#define t1_blend_blue_scale T1_BLEND_BLUE_SCALE
|
||||
#define t1_blend_blue_shift T1_BLEND_BLUE_SHIFT
|
||||
#define t1_blend_family_blues T1_BLEND_FAMILY_BLUES
|
||||
#define t1_blend_family_other_blues T1_BLEND_FAMILY_OTHER_BLUES
|
||||
#define t1_blend_force_bold T1_BLEND_FORCE_BOLD
|
||||
#define t1_blend_max T1_BLEND_MAX
|
||||
|
||||
/* */
|
||||
|
||||
|
||||
/* maximum number of Multiple Masters designs, as defined in the spec */
|
||||
#define T1_MAX_MM_DESIGNS 16
|
||||
|
||||
/* maximum number of Multiple Masters axes, as defined in the spec */
|
||||
#define T1_MAX_MM_AXIS 4
|
||||
|
||||
/* maximum number of elements in a design map */
|
||||
#define T1_MAX_MM_MAP_POINTS 20
|
||||
|
||||
|
||||
/* this structure is used to store the BlendDesignMap entry for an axis */
|
||||
typedef struct PS_DesignMap_
|
||||
{
|
||||
FT_Byte num_points;
|
||||
FT_Long* design_points;
|
||||
FT_Fixed* blend_points;
|
||||
|
||||
} PS_DesignMapRec, *PS_DesignMap;
|
||||
|
||||
/* backwards-compatible definition */
|
||||
typedef PS_DesignMapRec T1_DesignMap;
|
||||
|
||||
|
||||
typedef struct PS_BlendRec_
|
||||
{
|
||||
FT_UInt num_designs;
|
||||
FT_UInt num_axis;
|
||||
|
||||
FT_String* axis_names[T1_MAX_MM_AXIS];
|
||||
FT_Fixed* design_pos[T1_MAX_MM_DESIGNS];
|
||||
PS_DesignMapRec design_map[T1_MAX_MM_AXIS];
|
||||
|
||||
FT_Fixed* weight_vector;
|
||||
FT_Fixed* default_weight_vector;
|
||||
|
||||
PS_FontInfo font_infos[T1_MAX_MM_DESIGNS + 1];
|
||||
PS_Private privates [T1_MAX_MM_DESIGNS + 1];
|
||||
|
||||
FT_ULong blend_bitflags;
|
||||
|
||||
FT_BBox* bboxes [T1_MAX_MM_DESIGNS + 1];
|
||||
|
||||
/* since 2.3.0 */
|
||||
|
||||
/* undocumented, optional: the default design instance; */
|
||||
/* corresponds to default_weight_vector -- */
|
||||
/* num_default_design_vector == 0 means it is not present */
|
||||
/* in the font and associated metrics files */
|
||||
FT_UInt default_design_vector[T1_MAX_MM_DESIGNS];
|
||||
FT_UInt num_default_design_vector;
|
||||
|
||||
} PS_BlendRec, *PS_Blend;
|
||||
|
||||
|
||||
/* backwards-compatible definition */
|
||||
typedef PS_BlendRec T1_Blend;
|
||||
|
||||
|
||||
/*************************************************************************/
|
||||
/* */
|
||||
/* <Struct> */
|
||||
/* CID_FaceDictRec */
|
||||
/* */
|
||||
/* <Description> */
|
||||
/* A structure used to represent data in a CID top-level dictionary. */
|
||||
/* */
|
||||
typedef struct CID_FaceDictRec_
|
||||
{
|
||||
PS_PrivateRec private_dict;
|
||||
|
||||
FT_UInt len_buildchar;
|
||||
FT_Fixed forcebold_threshold;
|
||||
FT_Pos stroke_width;
|
||||
FT_Fixed expansion_factor;
|
||||
|
||||
FT_Byte paint_type;
|
||||
FT_Byte font_type;
|
||||
FT_Matrix font_matrix;
|
||||
FT_Vector font_offset;
|
||||
|
||||
FT_UInt num_subrs;
|
||||
FT_ULong subrmap_offset;
|
||||
FT_Int sd_bytes;
|
||||
|
||||
} CID_FaceDictRec;
|
||||
|
||||
|
||||
/*************************************************************************/
|
||||
/* */
|
||||
/* <Struct> */
|
||||
/* CID_FaceDict */
|
||||
/* */
|
||||
/* <Description> */
|
||||
/* A handle to a @CID_FaceDictRec structure. */
|
||||
/* */
|
||||
typedef struct CID_FaceDictRec_* CID_FaceDict;
|
||||
|
||||
|
||||
/*************************************************************************/
|
||||
/* */
|
||||
/* <Struct> */
|
||||
/* CID_FontDict */
|
||||
/* */
|
||||
/* <Description> */
|
||||
/* This type is equivalent to @CID_FaceDictRec. It is deprecated but */
|
||||
/* kept to maintain source compatibility between various versions of */
|
||||
/* FreeType. */
|
||||
/* */
|
||||
typedef CID_FaceDictRec CID_FontDict;
|
||||
|
||||
|
||||
/*************************************************************************/
|
||||
/* */
|
||||
/* <Struct> */
|
||||
/* CID_FaceInfoRec */
|
||||
/* */
|
||||
/* <Description> */
|
||||
/* A structure used to represent CID Face information. */
|
||||
/* */
|
||||
typedef struct CID_FaceInfoRec_
|
||||
{
|
||||
FT_String* cid_font_name;
|
||||
FT_Fixed cid_version;
|
||||
FT_Int cid_font_type;
|
||||
|
||||
FT_String* registry;
|
||||
FT_String* ordering;
|
||||
FT_Int supplement;
|
||||
|
||||
PS_FontInfoRec font_info;
|
||||
FT_BBox font_bbox;
|
||||
FT_ULong uid_base;
|
||||
|
||||
FT_Int num_xuid;
|
||||
FT_ULong xuid[16];
|
||||
|
||||
FT_ULong cidmap_offset;
|
||||
FT_Int fd_bytes;
|
||||
FT_Int gd_bytes;
|
||||
FT_ULong cid_count;
|
||||
|
||||
FT_Int num_dicts;
|
||||
CID_FaceDict font_dicts;
|
||||
|
||||
FT_ULong data_offset;
|
||||
|
||||
} CID_FaceInfoRec;
|
||||
|
||||
|
||||
/*************************************************************************/
|
||||
/* */
|
||||
/* <Struct> */
|
||||
/* CID_FaceInfo */
|
||||
/* */
|
||||
/* <Description> */
|
||||
/* A handle to a @CID_FaceInfoRec structure. */
|
||||
/* */
|
||||
typedef struct CID_FaceInfoRec_* CID_FaceInfo;
|
||||
|
||||
|
||||
/*************************************************************************/
|
||||
/* */
|
||||
/* <Struct> */
|
||||
/* CID_Info */
|
||||
/* */
|
||||
/* <Description> */
|
||||
/* This type is equivalent to @CID_FaceInfoRec. It is deprecated but */
|
||||
/* kept to maintain source compatibility between various versions of */
|
||||
/* FreeType. */
|
||||
/* */
|
||||
typedef CID_FaceInfoRec CID_Info;
|
||||
|
||||
|
||||
/************************************************************************
|
||||
*
|
||||
* @function:
|
||||
* FT_Has_PS_Glyph_Names
|
||||
*
|
||||
* @description:
|
||||
* Return true if a given face provides reliable PostScript glyph
|
||||
* names. This is similar to using the @FT_HAS_GLYPH_NAMES macro,
|
||||
* except that certain fonts (mostly TrueType) contain incorrect
|
||||
* glyph name tables.
|
||||
*
|
||||
* When this function returns true, the caller is sure that the glyph
|
||||
* names returned by @FT_Get_Glyph_Name are reliable.
|
||||
*
|
||||
* @input:
|
||||
* face ::
|
||||
* face handle
|
||||
*
|
||||
* @return:
|
||||
* Boolean. True if glyph names are reliable.
|
||||
*
|
||||
*/
|
||||
FT_EXPORT( FT_Int )
|
||||
FT_Has_PS_Glyph_Names( FT_Face face );
|
||||
|
||||
|
||||
/************************************************************************
|
||||
*
|
||||
* @function:
|
||||
* FT_Get_PS_Font_Info
|
||||
*
|
||||
* @description:
|
||||
* Retrieve the @PS_FontInfoRec structure corresponding to a given
|
||||
* PostScript font.
|
||||
*
|
||||
* @input:
|
||||
* face ::
|
||||
* PostScript face handle.
|
||||
*
|
||||
* @output:
|
||||
* afont_info ::
|
||||
* Output font info structure pointer.
|
||||
*
|
||||
* @return:
|
||||
* FreeType error code. 0~means success.
|
||||
*
|
||||
* @note:
|
||||
* String pointers within the @PS_FontInfoRec structure are owned by
|
||||
* the face and don't need to be freed by the caller. Missing entries
|
||||
* in the font's FontInfo dictionary are represented by NULL pointers.
|
||||
*
|
||||
* If the font's format is not PostScript-based, this function will
|
||||
* return the `FT_Err_Invalid_Argument' error code.
|
||||
*
|
||||
*/
|
||||
FT_EXPORT( FT_Error )
|
||||
FT_Get_PS_Font_Info( FT_Face face,
|
||||
PS_FontInfo afont_info );
|
||||
|
||||
|
||||
/************************************************************************
|
||||
*
|
||||
* @function:
|
||||
* FT_Get_PS_Font_Private
|
||||
*
|
||||
* @description:
|
||||
* Retrieve the @PS_PrivateRec structure corresponding to a given
|
||||
* PostScript font.
|
||||
*
|
||||
* @input:
|
||||
* face ::
|
||||
* PostScript face handle.
|
||||
*
|
||||
* @output:
|
||||
* afont_private ::
|
||||
* Output private dictionary structure pointer.
|
||||
*
|
||||
* @return:
|
||||
* FreeType error code. 0~means success.
|
||||
*
|
||||
* @note:
|
||||
* The string pointers within the @PS_PrivateRec structure are owned by
|
||||
* the face and don't need to be freed by the caller.
|
||||
*
|
||||
* If the font's format is not PostScript-based, this function returns
|
||||
* the `FT_Err_Invalid_Argument' error code.
|
||||
*
|
||||
*/
|
||||
FT_EXPORT( FT_Error )
|
||||
FT_Get_PS_Font_Private( FT_Face face,
|
||||
PS_Private afont_private );
|
||||
|
||||
|
||||
/*************************************************************************/
|
||||
/* */
|
||||
/* <Enum> */
|
||||
/* T1_EncodingType */
|
||||
/* */
|
||||
/* <Description> */
|
||||
/* An enumeration describing the `Encoding' entry in a Type 1 */
|
||||
/* dictionary. */
|
||||
/* */
|
||||
/* <Values> */
|
||||
/* T1_ENCODING_TYPE_NONE :: */
|
||||
/* T1_ENCODING_TYPE_ARRAY :: */
|
||||
/* T1_ENCODING_TYPE_STANDARD :: */
|
||||
/* T1_ENCODING_TYPE_ISOLATIN1 :: */
|
||||
/* T1_ENCODING_TYPE_EXPERT :: */
|
||||
/* */
|
||||
typedef enum T1_EncodingType_
|
||||
{
|
||||
T1_ENCODING_TYPE_NONE = 0,
|
||||
T1_ENCODING_TYPE_ARRAY,
|
||||
T1_ENCODING_TYPE_STANDARD,
|
||||
T1_ENCODING_TYPE_ISOLATIN1,
|
||||
T1_ENCODING_TYPE_EXPERT
|
||||
|
||||
} T1_EncodingType;
|
||||
|
||||
|
||||
/*************************************************************************/
|
||||
/* */
|
||||
/* <Enum> */
|
||||
/* PS_Dict_Keys */
|
||||
/* */
|
||||
/* <Description> */
|
||||
/* An enumeration used in calls to @FT_Get_PS_Font_Value to identify */
|
||||
/* the Type~1 dictionary entry to retrieve. */
|
||||
/* */
|
||||
/* <Values> */
|
||||
/* PS_DICT_FONT_TYPE :: */
|
||||
/* PS_DICT_FONT_MATRIX :: */
|
||||
/* PS_DICT_FONT_BBOX :: */
|
||||
/* PS_DICT_PAINT_TYPE :: */
|
||||
/* PS_DICT_FONT_NAME :: */
|
||||
/* PS_DICT_UNIQUE_ID :: */
|
||||
/* PS_DICT_NUM_CHAR_STRINGS :: */
|
||||
/* PS_DICT_CHAR_STRING_KEY :: */
|
||||
/* PS_DICT_CHAR_STRING :: */
|
||||
/* PS_DICT_ENCODING_TYPE :: */
|
||||
/* PS_DICT_ENCODING_ENTRY :: */
|
||||
/* PS_DICT_NUM_SUBRS :: */
|
||||
/* PS_DICT_SUBR :: */
|
||||
/* PS_DICT_STD_HW :: */
|
||||
/* PS_DICT_STD_VW :: */
|
||||
/* PS_DICT_NUM_BLUE_VALUES :: */
|
||||
/* PS_DICT_BLUE_VALUE :: */
|
||||
/* PS_DICT_BLUE_FUZZ :: */
|
||||
/* PS_DICT_NUM_OTHER_BLUES :: */
|
||||
/* PS_DICT_OTHER_BLUE :: */
|
||||
/* PS_DICT_NUM_FAMILY_BLUES :: */
|
||||
/* PS_DICT_FAMILY_BLUE :: */
|
||||
/* PS_DICT_NUM_FAMILY_OTHER_BLUES :: */
|
||||
/* PS_DICT_FAMILY_OTHER_BLUE :: */
|
||||
/* PS_DICT_BLUE_SCALE :: */
|
||||
/* PS_DICT_BLUE_SHIFT :: */
|
||||
/* PS_DICT_NUM_STEM_SNAP_H :: */
|
||||
/* PS_DICT_STEM_SNAP_H :: */
|
||||
/* PS_DICT_NUM_STEM_SNAP_V :: */
|
||||
/* PS_DICT_STEM_SNAP_V :: */
|
||||
/* PS_DICT_FORCE_BOLD :: */
|
||||
/* PS_DICT_RND_STEM_UP :: */
|
||||
/* PS_DICT_MIN_FEATURE :: */
|
||||
/* PS_DICT_LEN_IV :: */
|
||||
/* PS_DICT_PASSWORD :: */
|
||||
/* PS_DICT_LANGUAGE_GROUP :: */
|
||||
/* PS_DICT_VERSION :: */
|
||||
/* PS_DICT_NOTICE :: */
|
||||
/* PS_DICT_FULL_NAME :: */
|
||||
/* PS_DICT_FAMILY_NAME :: */
|
||||
/* PS_DICT_WEIGHT :: */
|
||||
/* PS_DICT_IS_FIXED_PITCH :: */
|
||||
/* PS_DICT_UNDERLINE_POSITION :: */
|
||||
/* PS_DICT_UNDERLINE_THICKNESS :: */
|
||||
/* PS_DICT_FS_TYPE :: */
|
||||
/* PS_DICT_ITALIC_ANGLE :: */
|
||||
/* */
|
||||
typedef enum PS_Dict_Keys_
|
||||
{
|
||||
/* conventionally in the font dictionary */
|
||||
PS_DICT_FONT_TYPE, /* FT_Byte */
|
||||
PS_DICT_FONT_MATRIX, /* FT_Fixed */
|
||||
PS_DICT_FONT_BBOX, /* FT_Fixed */
|
||||
PS_DICT_PAINT_TYPE, /* FT_Byte */
|
||||
PS_DICT_FONT_NAME, /* FT_String* */
|
||||
PS_DICT_UNIQUE_ID, /* FT_Int */
|
||||
PS_DICT_NUM_CHAR_STRINGS, /* FT_Int */
|
||||
PS_DICT_CHAR_STRING_KEY, /* FT_String* */
|
||||
PS_DICT_CHAR_STRING, /* FT_String* */
|
||||
PS_DICT_ENCODING_TYPE, /* T1_EncodingType */
|
||||
PS_DICT_ENCODING_ENTRY, /* FT_String* */
|
||||
|
||||
/* conventionally in the font Private dictionary */
|
||||
PS_DICT_NUM_SUBRS, /* FT_Int */
|
||||
PS_DICT_SUBR, /* FT_String* */
|
||||
PS_DICT_STD_HW, /* FT_UShort */
|
||||
PS_DICT_STD_VW, /* FT_UShort */
|
||||
PS_DICT_NUM_BLUE_VALUES, /* FT_Byte */
|
||||
PS_DICT_BLUE_VALUE, /* FT_Short */
|
||||
PS_DICT_BLUE_FUZZ, /* FT_Int */
|
||||
PS_DICT_NUM_OTHER_BLUES, /* FT_Byte */
|
||||
PS_DICT_OTHER_BLUE, /* FT_Short */
|
||||
PS_DICT_NUM_FAMILY_BLUES, /* FT_Byte */
|
||||
PS_DICT_FAMILY_BLUE, /* FT_Short */
|
||||
PS_DICT_NUM_FAMILY_OTHER_BLUES, /* FT_Byte */
|
||||
PS_DICT_FAMILY_OTHER_BLUE, /* FT_Short */
|
||||
PS_DICT_BLUE_SCALE, /* FT_Fixed */
|
||||
PS_DICT_BLUE_SHIFT, /* FT_Int */
|
||||
PS_DICT_NUM_STEM_SNAP_H, /* FT_Byte */
|
||||
PS_DICT_STEM_SNAP_H, /* FT_Short */
|
||||
PS_DICT_NUM_STEM_SNAP_V, /* FT_Byte */
|
||||
PS_DICT_STEM_SNAP_V, /* FT_Short */
|
||||
PS_DICT_FORCE_BOLD, /* FT_Bool */
|
||||
PS_DICT_RND_STEM_UP, /* FT_Bool */
|
||||
PS_DICT_MIN_FEATURE, /* FT_Short */
|
||||
PS_DICT_LEN_IV, /* FT_Int */
|
||||
PS_DICT_PASSWORD, /* FT_Long */
|
||||
PS_DICT_LANGUAGE_GROUP, /* FT_Long */
|
||||
|
||||
/* conventionally in the font FontInfo dictionary */
|
||||
PS_DICT_VERSION, /* FT_String* */
|
||||
PS_DICT_NOTICE, /* FT_String* */
|
||||
PS_DICT_FULL_NAME, /* FT_String* */
|
||||
PS_DICT_FAMILY_NAME, /* FT_String* */
|
||||
PS_DICT_WEIGHT, /* FT_String* */
|
||||
PS_DICT_IS_FIXED_PITCH, /* FT_Bool */
|
||||
PS_DICT_UNDERLINE_POSITION, /* FT_Short */
|
||||
PS_DICT_UNDERLINE_THICKNESS, /* FT_UShort */
|
||||
PS_DICT_FS_TYPE, /* FT_UShort */
|
||||
PS_DICT_ITALIC_ANGLE, /* FT_Long */
|
||||
|
||||
PS_DICT_MAX = PS_DICT_ITALIC_ANGLE
|
||||
|
||||
} PS_Dict_Keys;
|
||||
|
||||
|
||||
/************************************************************************
|
||||
*
|
||||
* @function:
|
||||
* FT_Get_PS_Font_Value
|
||||
*
|
||||
* @description:
|
||||
* Retrieve the value for the supplied key from a PostScript font.
|
||||
*
|
||||
* @input:
|
||||
* face ::
|
||||
* PostScript face handle.
|
||||
*
|
||||
* key ::
|
||||
* An enumeration value representing the dictionary key to retrieve.
|
||||
*
|
||||
* idx ::
|
||||
* For array values, this specifies the index to be returned.
|
||||
*
|
||||
* value ::
|
||||
* A pointer to memory into which to write the value.
|
||||
*
|
||||
* valen_len ::
|
||||
* The size, in bytes, of the memory supplied for the value.
|
||||
*
|
||||
* @output:
|
||||
* value ::
|
||||
* The value matching the above key, if it exists.
|
||||
*
|
||||
* @return:
|
||||
* The amount of memory (in bytes) required to hold the requested
|
||||
* value (if it exists, -1 otherwise).
|
||||
*
|
||||
* @note:
|
||||
* The values returned are not pointers into the internal structures of
|
||||
* the face, but are `fresh' copies, so that the memory containing them
|
||||
* belongs to the calling application. This also enforces the
|
||||
* `read-only' nature of these values, i.e., this function cannot be
|
||||
* used to manipulate the face.
|
||||
*
|
||||
* `value' is a void pointer because the values returned can be of
|
||||
* various types.
|
||||
*
|
||||
* If either `value' is NULL or `value_len' is too small, just the
|
||||
* required memory size for the requested entry is returned.
|
||||
*
|
||||
* The `idx' parameter is used, not only to retrieve elements of, for
|
||||
* example, the FontMatrix or FontBBox, but also to retrieve name keys
|
||||
* from the CharStrings dictionary, and the charstrings themselves. It
|
||||
* is ignored for atomic values.
|
||||
*
|
||||
* PS_DICT_BLUE_SCALE returns a value that is scaled up by 1000. To
|
||||
* get the value as in the font stream, you need to divide by
|
||||
* 65536000.0 (to remove the FT_Fixed scale, and the x1000 scale).
|
||||
*
|
||||
* IMPORTANT: Only key/value pairs read by the FreeType interpreter can
|
||||
* be retrieved. So, for example, PostScript procedures such as NP,
|
||||
* ND, and RD are not available. Arbitrary keys are, obviously, not be
|
||||
* available either.
|
||||
*
|
||||
* If the font's format is not PostScript-based, this function returns
|
||||
* the `FT_Err_Invalid_Argument' error code.
|
||||
*
|
||||
*/
|
||||
FT_EXPORT( FT_Long )
|
||||
FT_Get_PS_Font_Value( FT_Face face,
|
||||
PS_Dict_Keys key,
|
||||
FT_UInt idx,
|
||||
void *value,
|
||||
FT_Long value_len );
|
||||
|
||||
/* */
|
||||
|
||||
FT_END_HEADER
|
||||
|
||||
#endif /* T1TABLES_H_ */
|
||||
|
||||
|
||||
/* END */
|
||||
1237
include/fake/vtcs_root_vienna/freetype2/freetype/ttnameid.h
Normal file
1237
include/fake/vtcs_root_vienna/freetype2/freetype/ttnameid.h
Normal file
File diff suppressed because it is too large
Load Diff
829
include/fake/vtcs_root_vienna/freetype2/freetype/tttables.h
Normal file
829
include/fake/vtcs_root_vienna/freetype2/freetype/tttables.h
Normal file
@ -0,0 +1,829 @@
|
||||
/***************************************************************************/
|
||||
/* */
|
||||
/* tttables.h */
|
||||
/* */
|
||||
/* Basic SFNT/TrueType tables definitions and interface */
|
||||
/* (specification only). */
|
||||
/* */
|
||||
/* Copyright 1996-2016 by */
|
||||
/* David Turner, Robert Wilhelm, and Werner Lemberg. */
|
||||
/* */
|
||||
/* This file is part of the FreeType project, and may only be used, */
|
||||
/* modified, and distributed under the terms of the FreeType project */
|
||||
/* license, LICENSE.TXT. By continuing to use, modify, or distribute */
|
||||
/* this file you indicate that you have read the license and */
|
||||
/* understand and accept it fully. */
|
||||
/* */
|
||||
/***************************************************************************/
|
||||
|
||||
|
||||
#ifndef TTTABLES_H_
|
||||
#define TTTABLES_H_
|
||||
|
||||
|
||||
#include <ft2build.h>
|
||||
#include FT_FREETYPE_H
|
||||
|
||||
#ifdef FREETYPE_H
|
||||
#error "freetype.h of FreeType 1 has been loaded!"
|
||||
#error "Please fix the directory search order for header files"
|
||||
#error "so that freetype.h of FreeType 2 is found first."
|
||||
#endif
|
||||
|
||||
|
||||
FT_BEGIN_HEADER
|
||||
|
||||
/*************************************************************************/
|
||||
/* */
|
||||
/* <Section> */
|
||||
/* truetype_tables */
|
||||
/* */
|
||||
/* <Title> */
|
||||
/* TrueType Tables */
|
||||
/* */
|
||||
/* <Abstract> */
|
||||
/* TrueType specific table types and functions. */
|
||||
/* */
|
||||
/* <Description> */
|
||||
/* This section contains the definition of TrueType-specific tables */
|
||||
/* as well as some routines used to access and process them. */
|
||||
/* */
|
||||
/* <Order> */
|
||||
/* TT_Header */
|
||||
/* TT_HoriHeader */
|
||||
/* TT_VertHeader */
|
||||
/* TT_OS2 */
|
||||
/* TT_Postscript */
|
||||
/* TT_PCLT */
|
||||
/* TT_MaxProfile */
|
||||
/* */
|
||||
/* FT_Sfnt_Tag */
|
||||
/* FT_Get_Sfnt_Table */
|
||||
/* FT_Load_Sfnt_Table */
|
||||
/* FT_Sfnt_Table_Info */
|
||||
/* */
|
||||
/* FT_Get_CMap_Language_ID */
|
||||
/* FT_Get_CMap_Format */
|
||||
/* */
|
||||
/* FT_PARAM_TAG_UNPATENTED_HINTING */
|
||||
/* */
|
||||
/*************************************************************************/
|
||||
|
||||
|
||||
/*************************************************************************/
|
||||
/* */
|
||||
/* <Struct> */
|
||||
/* TT_Header */
|
||||
/* */
|
||||
/* <Description> */
|
||||
/* A structure used to model a TrueType font header table. All */
|
||||
/* fields follow the TrueType specification. */
|
||||
/* */
|
||||
typedef struct TT_Header_
|
||||
{
|
||||
FT_Fixed Table_Version;
|
||||
FT_Fixed Font_Revision;
|
||||
|
||||
FT_Long CheckSum_Adjust;
|
||||
FT_Long Magic_Number;
|
||||
|
||||
FT_UShort Flags;
|
||||
FT_UShort Units_Per_EM;
|
||||
|
||||
FT_Long Created [2];
|
||||
FT_Long Modified[2];
|
||||
|
||||
FT_Short xMin;
|
||||
FT_Short yMin;
|
||||
FT_Short xMax;
|
||||
FT_Short yMax;
|
||||
|
||||
FT_UShort Mac_Style;
|
||||
FT_UShort Lowest_Rec_PPEM;
|
||||
|
||||
FT_Short Font_Direction;
|
||||
FT_Short Index_To_Loc_Format;
|
||||
FT_Short Glyph_Data_Format;
|
||||
|
||||
} TT_Header;
|
||||
|
||||
|
||||
/*************************************************************************/
|
||||
/* */
|
||||
/* <Struct> */
|
||||
/* TT_HoriHeader */
|
||||
/* */
|
||||
/* <Description> */
|
||||
/* A structure used to model a TrueType horizontal header, the `hhea' */
|
||||
/* table, as well as the corresponding horizontal metrics table, */
|
||||
/* i.e., the `hmtx' table. */
|
||||
/* */
|
||||
/* <Fields> */
|
||||
/* Version :: The table version. */
|
||||
/* */
|
||||
/* Ascender :: The font's ascender, i.e., the distance */
|
||||
/* from the baseline to the top-most of all */
|
||||
/* glyph points found in the font. */
|
||||
/* */
|
||||
/* This value is invalid in many fonts, as */
|
||||
/* it is usually set by the font designer, */
|
||||
/* and often reflects only a portion of the */
|
||||
/* glyphs found in the font (maybe ASCII). */
|
||||
/* */
|
||||
/* You should use the `sTypoAscender' field */
|
||||
/* of the OS/2 table instead if you want */
|
||||
/* the correct one. */
|
||||
/* */
|
||||
/* Descender :: The font's descender, i.e., the distance */
|
||||
/* from the baseline to the bottom-most of */
|
||||
/* all glyph points found in the font. It */
|
||||
/* is negative. */
|
||||
/* */
|
||||
/* This value is invalid in many fonts, as */
|
||||
/* it is usually set by the font designer, */
|
||||
/* and often reflects only a portion of the */
|
||||
/* glyphs found in the font (maybe ASCII). */
|
||||
/* */
|
||||
/* You should use the `sTypoDescender' */
|
||||
/* field of the OS/2 table instead if you */
|
||||
/* want the correct one. */
|
||||
/* */
|
||||
/* Line_Gap :: The font's line gap, i.e., the distance */
|
||||
/* to add to the ascender and descender to */
|
||||
/* get the BTB, i.e., the */
|
||||
/* baseline-to-baseline distance for the */
|
||||
/* font. */
|
||||
/* */
|
||||
/* advance_Width_Max :: This field is the maximum of all advance */
|
||||
/* widths found in the font. It can be */
|
||||
/* used to compute the maximum width of an */
|
||||
/* arbitrary string of text. */
|
||||
/* */
|
||||
/* min_Left_Side_Bearing :: The minimum left side bearing of all */
|
||||
/* glyphs within the font. */
|
||||
/* */
|
||||
/* min_Right_Side_Bearing :: The minimum right side bearing of all */
|
||||
/* glyphs within the font. */
|
||||
/* */
|
||||
/* xMax_Extent :: The maximum horizontal extent (i.e., the */
|
||||
/* `width' of a glyph's bounding box) for */
|
||||
/* all glyphs in the font. */
|
||||
/* */
|
||||
/* caret_Slope_Rise :: The rise coefficient of the cursor's */
|
||||
/* slope of the cursor (slope=rise/run). */
|
||||
/* */
|
||||
/* caret_Slope_Run :: The run coefficient of the cursor's */
|
||||
/* slope. */
|
||||
/* */
|
||||
/* Reserved :: 8~reserved bytes. */
|
||||
/* */
|
||||
/* metric_Data_Format :: Always~0. */
|
||||
/* */
|
||||
/* number_Of_HMetrics :: Number of HMetrics entries in the `hmtx' */
|
||||
/* table -- this value can be smaller than */
|
||||
/* the total number of glyphs in the font. */
|
||||
/* */
|
||||
/* long_metrics :: A pointer into the `hmtx' table. */
|
||||
/* */
|
||||
/* short_metrics :: A pointer into the `hmtx' table. */
|
||||
/* */
|
||||
/* <Note> */
|
||||
/* IMPORTANT: The TT_HoriHeader and TT_VertHeader structures should */
|
||||
/* be identical except for the names of their fields, */
|
||||
/* which are different. */
|
||||
/* */
|
||||
/* This ensures that a single function in the `ttload' */
|
||||
/* module is able to read both the horizontal and vertical */
|
||||
/* headers. */
|
||||
/* */
|
||||
typedef struct TT_HoriHeader_
|
||||
{
|
||||
FT_Fixed Version;
|
||||
FT_Short Ascender;
|
||||
FT_Short Descender;
|
||||
FT_Short Line_Gap;
|
||||
|
||||
FT_UShort advance_Width_Max; /* advance width maximum */
|
||||
|
||||
FT_Short min_Left_Side_Bearing; /* minimum left-sb */
|
||||
FT_Short min_Right_Side_Bearing; /* minimum right-sb */
|
||||
FT_Short xMax_Extent; /* xmax extents */
|
||||
FT_Short caret_Slope_Rise;
|
||||
FT_Short caret_Slope_Run;
|
||||
FT_Short caret_Offset;
|
||||
|
||||
FT_Short Reserved[4];
|
||||
|
||||
FT_Short metric_Data_Format;
|
||||
FT_UShort number_Of_HMetrics;
|
||||
|
||||
/* The following fields are not defined by the TrueType specification */
|
||||
/* but they are used to connect the metrics header to the relevant */
|
||||
/* `HMTX' table. */
|
||||
|
||||
void* long_metrics;
|
||||
void* short_metrics;
|
||||
|
||||
} TT_HoriHeader;
|
||||
|
||||
|
||||
/*************************************************************************/
|
||||
/* */
|
||||
/* <Struct> */
|
||||
/* TT_VertHeader */
|
||||
/* */
|
||||
/* <Description> */
|
||||
/* A structure used to model a TrueType vertical header, the `vhea' */
|
||||
/* table, as well as the corresponding vertical metrics table, i.e., */
|
||||
/* the `vmtx' table. */
|
||||
/* */
|
||||
/* <Fields> */
|
||||
/* Version :: The table version. */
|
||||
/* */
|
||||
/* Ascender :: The font's ascender, i.e., the distance */
|
||||
/* from the baseline to the top-most of */
|
||||
/* all glyph points found in the font. */
|
||||
/* */
|
||||
/* This value is invalid in many fonts, as */
|
||||
/* it is usually set by the font designer, */
|
||||
/* and often reflects only a portion of */
|
||||
/* the glyphs found in the font (maybe */
|
||||
/* ASCII). */
|
||||
/* */
|
||||
/* You should use the `sTypoAscender' */
|
||||
/* field of the OS/2 table instead if you */
|
||||
/* want the correct one. */
|
||||
/* */
|
||||
/* Descender :: The font's descender, i.e., the */
|
||||
/* distance from the baseline to the */
|
||||
/* bottom-most of all glyph points found */
|
||||
/* in the font. It is negative. */
|
||||
/* */
|
||||
/* This value is invalid in many fonts, as */
|
||||
/* it is usually set by the font designer, */
|
||||
/* and often reflects only a portion of */
|
||||
/* the glyphs found in the font (maybe */
|
||||
/* ASCII). */
|
||||
/* */
|
||||
/* You should use the `sTypoDescender' */
|
||||
/* field of the OS/2 table instead if you */
|
||||
/* want the correct one. */
|
||||
/* */
|
||||
/* Line_Gap :: The font's line gap, i.e., the distance */
|
||||
/* to add to the ascender and descender to */
|
||||
/* get the BTB, i.e., the */
|
||||
/* baseline-to-baseline distance for the */
|
||||
/* font. */
|
||||
/* */
|
||||
/* advance_Height_Max :: This field is the maximum of all */
|
||||
/* advance heights found in the font. It */
|
||||
/* can be used to compute the maximum */
|
||||
/* height of an arbitrary string of text. */
|
||||
/* */
|
||||
/* min_Top_Side_Bearing :: The minimum top side bearing of all */
|
||||
/* glyphs within the font. */
|
||||
/* */
|
||||
/* min_Bottom_Side_Bearing :: The minimum bottom side bearing of all */
|
||||
/* glyphs within the font. */
|
||||
/* */
|
||||
/* yMax_Extent :: The maximum vertical extent (i.e., the */
|
||||
/* `height' of a glyph's bounding box) for */
|
||||
/* all glyphs in the font. */
|
||||
/* */
|
||||
/* caret_Slope_Rise :: The rise coefficient of the cursor's */
|
||||
/* slope of the cursor (slope=rise/run). */
|
||||
/* */
|
||||
/* caret_Slope_Run :: The run coefficient of the cursor's */
|
||||
/* slope. */
|
||||
/* */
|
||||
/* caret_Offset :: The cursor's offset for slanted fonts. */
|
||||
/* This value is `reserved' in vmtx */
|
||||
/* version 1.0. */
|
||||
/* */
|
||||
/* Reserved :: 8~reserved bytes. */
|
||||
/* */
|
||||
/* metric_Data_Format :: Always~0. */
|
||||
/* */
|
||||
/* number_Of_HMetrics :: Number of VMetrics entries in the */
|
||||
/* `vmtx' table -- this value can be */
|
||||
/* smaller than the total number of glyphs */
|
||||
/* in the font. */
|
||||
/* */
|
||||
/* long_metrics :: A pointer into the `vmtx' table. */
|
||||
/* */
|
||||
/* short_metrics :: A pointer into the `vmtx' table. */
|
||||
/* */
|
||||
/* <Note> */
|
||||
/* IMPORTANT: The TT_HoriHeader and TT_VertHeader structures should */
|
||||
/* be identical except for the names of their fields, */
|
||||
/* which are different. */
|
||||
/* */
|
||||
/* This ensures that a single function in the `ttload' */
|
||||
/* module is able to read both the horizontal and vertical */
|
||||
/* headers. */
|
||||
/* */
|
||||
typedef struct TT_VertHeader_
|
||||
{
|
||||
FT_Fixed Version;
|
||||
FT_Short Ascender;
|
||||
FT_Short Descender;
|
||||
FT_Short Line_Gap;
|
||||
|
||||
FT_UShort advance_Height_Max; /* advance height maximum */
|
||||
|
||||
FT_Short min_Top_Side_Bearing; /* minimum left-sb or top-sb */
|
||||
FT_Short min_Bottom_Side_Bearing; /* minimum right-sb or bottom-sb */
|
||||
FT_Short yMax_Extent; /* xmax or ymax extents */
|
||||
FT_Short caret_Slope_Rise;
|
||||
FT_Short caret_Slope_Run;
|
||||
FT_Short caret_Offset;
|
||||
|
||||
FT_Short Reserved[4];
|
||||
|
||||
FT_Short metric_Data_Format;
|
||||
FT_UShort number_Of_VMetrics;
|
||||
|
||||
/* The following fields are not defined by the TrueType specification */
|
||||
/* but they're used to connect the metrics header to the relevant */
|
||||
/* `HMTX' or `VMTX' table. */
|
||||
|
||||
void* long_metrics;
|
||||
void* short_metrics;
|
||||
|
||||
} TT_VertHeader;
|
||||
|
||||
|
||||
/*************************************************************************/
|
||||
/* */
|
||||
/* <Struct> */
|
||||
/* TT_OS2 */
|
||||
/* */
|
||||
/* <Description> */
|
||||
/* A structure used to model a TrueType OS/2 table. All fields */
|
||||
/* comply to the OpenType specification. */
|
||||
/* */
|
||||
/* Note that we now support old Mac fonts that do not include an OS/2 */
|
||||
/* table. In this case, the `version' field is always set to 0xFFFF. */
|
||||
/* */
|
||||
typedef struct TT_OS2_
|
||||
{
|
||||
FT_UShort version; /* 0x0001 - more or 0xFFFF */
|
||||
FT_Short xAvgCharWidth;
|
||||
FT_UShort usWeightClass;
|
||||
FT_UShort usWidthClass;
|
||||
FT_UShort fsType;
|
||||
FT_Short ySubscriptXSize;
|
||||
FT_Short ySubscriptYSize;
|
||||
FT_Short ySubscriptXOffset;
|
||||
FT_Short ySubscriptYOffset;
|
||||
FT_Short ySuperscriptXSize;
|
||||
FT_Short ySuperscriptYSize;
|
||||
FT_Short ySuperscriptXOffset;
|
||||
FT_Short ySuperscriptYOffset;
|
||||
FT_Short yStrikeoutSize;
|
||||
FT_Short yStrikeoutPosition;
|
||||
FT_Short sFamilyClass;
|
||||
|
||||
FT_Byte panose[10];
|
||||
|
||||
FT_ULong ulUnicodeRange1; /* Bits 0-31 */
|
||||
FT_ULong ulUnicodeRange2; /* Bits 32-63 */
|
||||
FT_ULong ulUnicodeRange3; /* Bits 64-95 */
|
||||
FT_ULong ulUnicodeRange4; /* Bits 96-127 */
|
||||
|
||||
FT_Char achVendID[4];
|
||||
|
||||
FT_UShort fsSelection;
|
||||
FT_UShort usFirstCharIndex;
|
||||
FT_UShort usLastCharIndex;
|
||||
FT_Short sTypoAscender;
|
||||
FT_Short sTypoDescender;
|
||||
FT_Short sTypoLineGap;
|
||||
FT_UShort usWinAscent;
|
||||
FT_UShort usWinDescent;
|
||||
|
||||
/* only version 1 and higher: */
|
||||
|
||||
FT_ULong ulCodePageRange1; /* Bits 0-31 */
|
||||
FT_ULong ulCodePageRange2; /* Bits 32-63 */
|
||||
|
||||
/* only version 2 and higher: */
|
||||
|
||||
FT_Short sxHeight;
|
||||
FT_Short sCapHeight;
|
||||
FT_UShort usDefaultChar;
|
||||
FT_UShort usBreakChar;
|
||||
FT_UShort usMaxContext;
|
||||
|
||||
/* only version 5 and higher: */
|
||||
|
||||
FT_UShort usLowerOpticalPointSize; /* in twips (1/20th points) */
|
||||
FT_UShort usUpperOpticalPointSize; /* in twips (1/20th points) */
|
||||
|
||||
} TT_OS2;
|
||||
|
||||
|
||||
/*************************************************************************/
|
||||
/* */
|
||||
/* <Struct> */
|
||||
/* TT_Postscript */
|
||||
/* */
|
||||
/* <Description> */
|
||||
/* A structure used to model a TrueType PostScript table. All fields */
|
||||
/* comply to the TrueType specification. This structure does not */
|
||||
/* reference the PostScript glyph names, which can be nevertheless */
|
||||
/* accessed with the `ttpost' module. */
|
||||
/* */
|
||||
typedef struct TT_Postscript_
|
||||
{
|
||||
FT_Fixed FormatType;
|
||||
FT_Fixed italicAngle;
|
||||
FT_Short underlinePosition;
|
||||
FT_Short underlineThickness;
|
||||
FT_ULong isFixedPitch;
|
||||
FT_ULong minMemType42;
|
||||
FT_ULong maxMemType42;
|
||||
FT_ULong minMemType1;
|
||||
FT_ULong maxMemType1;
|
||||
|
||||
/* Glyph names follow in the file, but we don't */
|
||||
/* load them by default. See the ttpost.c file. */
|
||||
|
||||
} TT_Postscript;
|
||||
|
||||
|
||||
/*************************************************************************/
|
||||
/* */
|
||||
/* <Struct> */
|
||||
/* TT_PCLT */
|
||||
/* */
|
||||
/* <Description> */
|
||||
/* A structure used to model a TrueType PCLT table. All fields */
|
||||
/* comply to the TrueType specification. */
|
||||
/* */
|
||||
typedef struct TT_PCLT_
|
||||
{
|
||||
FT_Fixed Version;
|
||||
FT_ULong FontNumber;
|
||||
FT_UShort Pitch;
|
||||
FT_UShort xHeight;
|
||||
FT_UShort Style;
|
||||
FT_UShort TypeFamily;
|
||||
FT_UShort CapHeight;
|
||||
FT_UShort SymbolSet;
|
||||
FT_Char TypeFace[16];
|
||||
FT_Char CharacterComplement[8];
|
||||
FT_Char FileName[6];
|
||||
FT_Char StrokeWeight;
|
||||
FT_Char WidthType;
|
||||
FT_Byte SerifStyle;
|
||||
FT_Byte Reserved;
|
||||
|
||||
} TT_PCLT;
|
||||
|
||||
|
||||
/*************************************************************************/
|
||||
/* */
|
||||
/* <Struct> */
|
||||
/* TT_MaxProfile */
|
||||
/* */
|
||||
/* <Description> */
|
||||
/* The maximum profile is a table containing many max values, which */
|
||||
/* can be used to pre-allocate arrays. This ensures that no memory */
|
||||
/* allocation occurs during a glyph load. */
|
||||
/* */
|
||||
/* <Fields> */
|
||||
/* version :: The version number. */
|
||||
/* */
|
||||
/* numGlyphs :: The number of glyphs in this TrueType */
|
||||
/* font. */
|
||||
/* */
|
||||
/* maxPoints :: The maximum number of points in a */
|
||||
/* non-composite TrueType glyph. See also */
|
||||
/* the structure element */
|
||||
/* `maxCompositePoints'. */
|
||||
/* */
|
||||
/* maxContours :: The maximum number of contours in a */
|
||||
/* non-composite TrueType glyph. See also */
|
||||
/* the structure element */
|
||||
/* `maxCompositeContours'. */
|
||||
/* */
|
||||
/* maxCompositePoints :: The maximum number of points in a */
|
||||
/* composite TrueType glyph. See also the */
|
||||
/* structure element `maxPoints'. */
|
||||
/* */
|
||||
/* maxCompositeContours :: The maximum number of contours in a */
|
||||
/* composite TrueType glyph. See also the */
|
||||
/* structure element `maxContours'. */
|
||||
/* */
|
||||
/* maxZones :: The maximum number of zones used for */
|
||||
/* glyph hinting. */
|
||||
/* */
|
||||
/* maxTwilightPoints :: The maximum number of points in the */
|
||||
/* twilight zone used for glyph hinting. */
|
||||
/* */
|
||||
/* maxStorage :: The maximum number of elements in the */
|
||||
/* storage area used for glyph hinting. */
|
||||
/* */
|
||||
/* maxFunctionDefs :: The maximum number of function */
|
||||
/* definitions in the TrueType bytecode for */
|
||||
/* this font. */
|
||||
/* */
|
||||
/* maxInstructionDefs :: The maximum number of instruction */
|
||||
/* definitions in the TrueType bytecode for */
|
||||
/* this font. */
|
||||
/* */
|
||||
/* maxStackElements :: The maximum number of stack elements used */
|
||||
/* during bytecode interpretation. */
|
||||
/* */
|
||||
/* maxSizeOfInstructions :: The maximum number of TrueType opcodes */
|
||||
/* used for glyph hinting. */
|
||||
/* */
|
||||
/* maxComponentElements :: The maximum number of simple (i.e., non- */
|
||||
/* composite) glyphs in a composite glyph. */
|
||||
/* */
|
||||
/* maxComponentDepth :: The maximum nesting depth of composite */
|
||||
/* glyphs. */
|
||||
/* */
|
||||
/* <Note> */
|
||||
/* This structure is only used during font loading. */
|
||||
/* */
|
||||
typedef struct TT_MaxProfile_
|
||||
{
|
||||
FT_Fixed version;
|
||||
FT_UShort numGlyphs;
|
||||
FT_UShort maxPoints;
|
||||
FT_UShort maxContours;
|
||||
FT_UShort maxCompositePoints;
|
||||
FT_UShort maxCompositeContours;
|
||||
FT_UShort maxZones;
|
||||
FT_UShort maxTwilightPoints;
|
||||
FT_UShort maxStorage;
|
||||
FT_UShort maxFunctionDefs;
|
||||
FT_UShort maxInstructionDefs;
|
||||
FT_UShort maxStackElements;
|
||||
FT_UShort maxSizeOfInstructions;
|
||||
FT_UShort maxComponentElements;
|
||||
FT_UShort maxComponentDepth;
|
||||
|
||||
} TT_MaxProfile;
|
||||
|
||||
|
||||
/*************************************************************************/
|
||||
/* */
|
||||
/* <Enum> */
|
||||
/* FT_Sfnt_Tag */
|
||||
/* */
|
||||
/* <Description> */
|
||||
/* An enumeration used to specify the index of an SFNT table. */
|
||||
/* Used in the @FT_Get_Sfnt_Table API function. */
|
||||
/* */
|
||||
/* <Values> */
|
||||
/* FT_SFNT_HEAD :: To access the font's @TT_Header structure. */
|
||||
/* */
|
||||
/* FT_SFNT_MAXP :: To access the font's @TT_MaxProfile structure. */
|
||||
/* */
|
||||
/* FT_SFNT_OS2 :: To access the font's @TT_OS2 structure. */
|
||||
/* */
|
||||
/* FT_SFNT_HHEA :: To access the font's @TT_HoriHeader structure. */
|
||||
/* */
|
||||
/* FT_SFNT_VHEA :: To access the font's @TT_VertHeader structure. */
|
||||
/* */
|
||||
/* FT_SFNT_POST :: To access the font's @TT_Postscript structure. */
|
||||
/* */
|
||||
/* FT_SFNT_PCLT :: To access the font's @TT_PCLT structure. */
|
||||
/* */
|
||||
typedef enum FT_Sfnt_Tag_
|
||||
{
|
||||
FT_SFNT_HEAD,
|
||||
FT_SFNT_MAXP,
|
||||
FT_SFNT_OS2,
|
||||
FT_SFNT_HHEA,
|
||||
FT_SFNT_VHEA,
|
||||
FT_SFNT_POST,
|
||||
FT_SFNT_PCLT,
|
||||
|
||||
FT_SFNT_MAX
|
||||
|
||||
} FT_Sfnt_Tag;
|
||||
|
||||
/* these constants are deprecated; use the corresponding `FT_Sfnt_Tag' */
|
||||
/* values instead */
|
||||
#define ft_sfnt_head FT_SFNT_HEAD
|
||||
#define ft_sfnt_maxp FT_SFNT_MAXP
|
||||
#define ft_sfnt_os2 FT_SFNT_OS2
|
||||
#define ft_sfnt_hhea FT_SFNT_HHEA
|
||||
#define ft_sfnt_vhea FT_SFNT_VHEA
|
||||
#define ft_sfnt_post FT_SFNT_POST
|
||||
#define ft_sfnt_pclt FT_SFNT_PCLT
|
||||
|
||||
|
||||
/*************************************************************************/
|
||||
/* */
|
||||
/* <Function> */
|
||||
/* FT_Get_Sfnt_Table */
|
||||
/* */
|
||||
/* <Description> */
|
||||
/* Return a pointer to a given SFNT table within a face. */
|
||||
/* */
|
||||
/* <Input> */
|
||||
/* face :: A handle to the source. */
|
||||
/* */
|
||||
/* tag :: The index of the SFNT table. */
|
||||
/* */
|
||||
/* <Return> */
|
||||
/* A type-less pointer to the table. This will be~0 in case of */
|
||||
/* error, or if the corresponding table was not found *OR* loaded */
|
||||
/* from the file. */
|
||||
/* */
|
||||
/* Use a typecast according to `tag' to access the structure */
|
||||
/* elements. */
|
||||
/* */
|
||||
/* <Note> */
|
||||
/* The table is owned by the face object and disappears with it. */
|
||||
/* */
|
||||
/* This function is only useful to access SFNT tables that are loaded */
|
||||
/* by the sfnt, truetype, and opentype drivers. See @FT_Sfnt_Tag for */
|
||||
/* a list. */
|
||||
/* */
|
||||
/* Here an example how to access the `vhea' table: */
|
||||
/* */
|
||||
/* { */
|
||||
/* TT_VertHeader* vert_header; */
|
||||
/* */
|
||||
/* */
|
||||
/* vert_header = */
|
||||
/* (TT_VertHeader*)FT_Get_Sfnt_Table( face, FT_SFNT_VHEA ); */
|
||||
/* } */
|
||||
/* */
|
||||
FT_EXPORT( void* )
|
||||
FT_Get_Sfnt_Table( FT_Face face,
|
||||
FT_Sfnt_Tag tag );
|
||||
|
||||
|
||||
/**************************************************************************
|
||||
*
|
||||
* @function:
|
||||
* FT_Load_Sfnt_Table
|
||||
*
|
||||
* @description:
|
||||
* Load any font table into client memory.
|
||||
*
|
||||
* @input:
|
||||
* face ::
|
||||
* A handle to the source face.
|
||||
*
|
||||
* tag ::
|
||||
* The four-byte tag of the table to load. Use the value~0 if you want
|
||||
* to access the whole font file. Otherwise, you can use one of the
|
||||
* definitions found in the @FT_TRUETYPE_TAGS_H file, or forge a new
|
||||
* one with @FT_MAKE_TAG.
|
||||
*
|
||||
* offset ::
|
||||
* The starting offset in the table (or file if tag == 0).
|
||||
*
|
||||
* @output:
|
||||
* buffer ::
|
||||
* The target buffer address. The client must ensure that the memory
|
||||
* array is big enough to hold the data.
|
||||
*
|
||||
* @inout:
|
||||
* length ::
|
||||
* If the `length' parameter is NULL, then try to load the whole table.
|
||||
* Return an error code if it fails.
|
||||
*
|
||||
* Else, if `*length' is~0, exit immediately while returning the
|
||||
* table's (or file) full size in it.
|
||||
*
|
||||
* Else the number of bytes to read from the table or file, from the
|
||||
* starting offset.
|
||||
*
|
||||
* @return:
|
||||
* FreeType error code. 0~means success.
|
||||
*
|
||||
* @note:
|
||||
* If you need to determine the table's length you should first call this
|
||||
* function with `*length' set to~0, as in the following example:
|
||||
*
|
||||
* {
|
||||
* FT_ULong length = 0;
|
||||
*
|
||||
*
|
||||
* error = FT_Load_Sfnt_Table( face, tag, 0, NULL, &length );
|
||||
* if ( error ) { ... table does not exist ... }
|
||||
*
|
||||
* buffer = malloc( length );
|
||||
* if ( buffer == NULL ) { ... not enough memory ... }
|
||||
*
|
||||
* error = FT_Load_Sfnt_Table( face, tag, 0, buffer, &length );
|
||||
* if ( error ) { ... could not load table ... }
|
||||
* }
|
||||
*
|
||||
* Note that structures like @TT_Header or @TT_OS2 can't be used with
|
||||
* this function; they are limited to @FT_Get_Sfnt_Table. Reason is that
|
||||
* those structures depend on the processor architecture, with varying
|
||||
* size (e.g. 32bit vs. 64bit) or order (big endian vs. little endian).
|
||||
*
|
||||
*/
|
||||
FT_EXPORT( FT_Error )
|
||||
FT_Load_Sfnt_Table( FT_Face face,
|
||||
FT_ULong tag,
|
||||
FT_Long offset,
|
||||
FT_Byte* buffer,
|
||||
FT_ULong* length );
|
||||
|
||||
|
||||
/**************************************************************************
|
||||
*
|
||||
* @function:
|
||||
* FT_Sfnt_Table_Info
|
||||
*
|
||||
* @description:
|
||||
* Return information on an SFNT table.
|
||||
*
|
||||
* @input:
|
||||
* face ::
|
||||
* A handle to the source face.
|
||||
*
|
||||
* table_index ::
|
||||
* The index of an SFNT table. The function returns
|
||||
* FT_Err_Table_Missing for an invalid value.
|
||||
*
|
||||
* @inout:
|
||||
* tag ::
|
||||
* The name tag of the SFNT table. If the value is NULL, `table_index'
|
||||
* is ignored, and `length' returns the number of SFNT tables in the
|
||||
* font.
|
||||
*
|
||||
* @output:
|
||||
* length ::
|
||||
* The length of the SFNT table (or the number of SFNT tables, depending
|
||||
* on `tag').
|
||||
*
|
||||
* @return:
|
||||
* FreeType error code. 0~means success.
|
||||
*
|
||||
* @note:
|
||||
* While parsing fonts, FreeType handles SFNT tables with length zero as
|
||||
* missing.
|
||||
*
|
||||
*/
|
||||
FT_EXPORT( FT_Error )
|
||||
FT_Sfnt_Table_Info( FT_Face face,
|
||||
FT_UInt table_index,
|
||||
FT_ULong *tag,
|
||||
FT_ULong *length );
|
||||
|
||||
|
||||
/*************************************************************************/
|
||||
/* */
|
||||
/* <Function> */
|
||||
/* FT_Get_CMap_Language_ID */
|
||||
/* */
|
||||
/* <Description> */
|
||||
/* Return TrueType/sfnt specific cmap language ID. Definitions of */
|
||||
/* language ID values are in `ttnameid.h'. */
|
||||
/* */
|
||||
/* <Input> */
|
||||
/* charmap :: */
|
||||
/* The target charmap. */
|
||||
/* */
|
||||
/* <Return> */
|
||||
/* The language ID of `charmap'. If `charmap' doesn't belong to a */
|
||||
/* TrueType/sfnt face, just return~0 as the default value. */
|
||||
/* */
|
||||
/* For a format~14 cmap (to access Unicode IVS), the return value is */
|
||||
/* 0xFFFFFFFF. */
|
||||
/* */
|
||||
FT_EXPORT( FT_ULong )
|
||||
FT_Get_CMap_Language_ID( FT_CharMap charmap );
|
||||
|
||||
|
||||
/*************************************************************************/
|
||||
/* */
|
||||
/* <Function> */
|
||||
/* FT_Get_CMap_Format */
|
||||
/* */
|
||||
/* <Description> */
|
||||
/* Return TrueType/sfnt specific cmap format. */
|
||||
/* */
|
||||
/* <Input> */
|
||||
/* charmap :: */
|
||||
/* The target charmap. */
|
||||
/* */
|
||||
/* <Return> */
|
||||
/* The format of `charmap'. If `charmap' doesn't belong to a */
|
||||
/* TrueType/sfnt face, return -1. */
|
||||
/* */
|
||||
FT_EXPORT( FT_Long )
|
||||
FT_Get_CMap_Format( FT_CharMap charmap );
|
||||
|
||||
/* */
|
||||
|
||||
|
||||
FT_END_HEADER
|
||||
|
||||
#endif /* TTTABLES_H_ */
|
||||
|
||||
|
||||
/* END */
|
||||
115
include/fake/vtcs_root_vienna/freetype2/freetype/tttags.h
Normal file
115
include/fake/vtcs_root_vienna/freetype2/freetype/tttags.h
Normal file
@ -0,0 +1,115 @@
|
||||
/***************************************************************************/
|
||||
/* */
|
||||
/* tttags.h */
|
||||
/* */
|
||||
/* Tags for TrueType and OpenType tables (specification only). */
|
||||
/* */
|
||||
/* Copyright 1996-2016 by */
|
||||
/* David Turner, Robert Wilhelm, and Werner Lemberg. */
|
||||
/* */
|
||||
/* This file is part of the FreeType project, and may only be used, */
|
||||
/* modified, and distributed under the terms of the FreeType project */
|
||||
/* license, LICENSE.TXT. By continuing to use, modify, or distribute */
|
||||
/* this file you indicate that you have read the license and */
|
||||
/* understand and accept it fully. */
|
||||
/* */
|
||||
/***************************************************************************/
|
||||
|
||||
|
||||
#ifndef TTAGS_H_
|
||||
#define TTAGS_H_
|
||||
|
||||
|
||||
#include <ft2build.h>
|
||||
#include FT_FREETYPE_H
|
||||
|
||||
#ifdef FREETYPE_H
|
||||
#error "freetype.h of FreeType 1 has been loaded!"
|
||||
#error "Please fix the directory search order for header files"
|
||||
#error "so that freetype.h of FreeType 2 is found first."
|
||||
#endif
|
||||
|
||||
|
||||
FT_BEGIN_HEADER
|
||||
|
||||
|
||||
#define TTAG_avar FT_MAKE_TAG( 'a', 'v', 'a', 'r' )
|
||||
#define TTAG_BASE FT_MAKE_TAG( 'B', 'A', 'S', 'E' )
|
||||
#define TTAG_bdat FT_MAKE_TAG( 'b', 'd', 'a', 't' )
|
||||
#define TTAG_BDF FT_MAKE_TAG( 'B', 'D', 'F', ' ' )
|
||||
#define TTAG_bhed FT_MAKE_TAG( 'b', 'h', 'e', 'd' )
|
||||
#define TTAG_bloc FT_MAKE_TAG( 'b', 'l', 'o', 'c' )
|
||||
#define TTAG_bsln FT_MAKE_TAG( 'b', 's', 'l', 'n' )
|
||||
#define TTAG_CBDT FT_MAKE_TAG( 'C', 'B', 'D', 'T' )
|
||||
#define TTAG_CBLC FT_MAKE_TAG( 'C', 'B', 'L', 'C' )
|
||||
#define TTAG_CFF FT_MAKE_TAG( 'C', 'F', 'F', ' ' )
|
||||
#define TTAG_CFF2 FT_MAKE_TAG( 'C', 'F', 'F', '2' )
|
||||
#define TTAG_CID FT_MAKE_TAG( 'C', 'I', 'D', ' ' )
|
||||
#define TTAG_cmap FT_MAKE_TAG( 'c', 'm', 'a', 'p' )
|
||||
#define TTAG_cvar FT_MAKE_TAG( 'c', 'v', 'a', 'r' )
|
||||
#define TTAG_cvt FT_MAKE_TAG( 'c', 'v', 't', ' ' )
|
||||
#define TTAG_DSIG FT_MAKE_TAG( 'D', 'S', 'I', 'G' )
|
||||
#define TTAG_EBDT FT_MAKE_TAG( 'E', 'B', 'D', 'T' )
|
||||
#define TTAG_EBLC FT_MAKE_TAG( 'E', 'B', 'L', 'C' )
|
||||
#define TTAG_EBSC FT_MAKE_TAG( 'E', 'B', 'S', 'C' )
|
||||
#define TTAG_feat FT_MAKE_TAG( 'f', 'e', 'a', 't' )
|
||||
#define TTAG_FOND FT_MAKE_TAG( 'F', 'O', 'N', 'D' )
|
||||
#define TTAG_fpgm FT_MAKE_TAG( 'f', 'p', 'g', 'm' )
|
||||
#define TTAG_fvar FT_MAKE_TAG( 'f', 'v', 'a', 'r' )
|
||||
#define TTAG_gasp FT_MAKE_TAG( 'g', 'a', 's', 'p' )
|
||||
#define TTAG_GDEF FT_MAKE_TAG( 'G', 'D', 'E', 'F' )
|
||||
#define TTAG_glyf FT_MAKE_TAG( 'g', 'l', 'y', 'f' )
|
||||
#define TTAG_GPOS FT_MAKE_TAG( 'G', 'P', 'O', 'S' )
|
||||
#define TTAG_GSUB FT_MAKE_TAG( 'G', 'S', 'U', 'B' )
|
||||
#define TTAG_gvar FT_MAKE_TAG( 'g', 'v', 'a', 'r' )
|
||||
#define TTAG_HVAR FT_MAKE_TAG( 'H', 'V', 'A', 'R' )
|
||||
#define TTAG_hdmx FT_MAKE_TAG( 'h', 'd', 'm', 'x' )
|
||||
#define TTAG_head FT_MAKE_TAG( 'h', 'e', 'a', 'd' )
|
||||
#define TTAG_hhea FT_MAKE_TAG( 'h', 'h', 'e', 'a' )
|
||||
#define TTAG_hmtx FT_MAKE_TAG( 'h', 'm', 't', 'x' )
|
||||
#define TTAG_JSTF FT_MAKE_TAG( 'J', 'S', 'T', 'F' )
|
||||
#define TTAG_just FT_MAKE_TAG( 'j', 'u', 's', 't' )
|
||||
#define TTAG_kern FT_MAKE_TAG( 'k', 'e', 'r', 'n' )
|
||||
#define TTAG_lcar FT_MAKE_TAG( 'l', 'c', 'a', 'r' )
|
||||
#define TTAG_loca FT_MAKE_TAG( 'l', 'o', 'c', 'a' )
|
||||
#define TTAG_LTSH FT_MAKE_TAG( 'L', 'T', 'S', 'H' )
|
||||
#define TTAG_LWFN FT_MAKE_TAG( 'L', 'W', 'F', 'N' )
|
||||
#define TTAG_MATH FT_MAKE_TAG( 'M', 'A', 'T', 'H' )
|
||||
#define TTAG_maxp FT_MAKE_TAG( 'm', 'a', 'x', 'p' )
|
||||
#define TTAG_META FT_MAKE_TAG( 'M', 'E', 'T', 'A' )
|
||||
#define TTAG_MMFX FT_MAKE_TAG( 'M', 'M', 'F', 'X' )
|
||||
#define TTAG_MMSD FT_MAKE_TAG( 'M', 'M', 'S', 'D' )
|
||||
#define TTAG_mort FT_MAKE_TAG( 'm', 'o', 'r', 't' )
|
||||
#define TTAG_morx FT_MAKE_TAG( 'm', 'o', 'r', 'x' )
|
||||
#define TTAG_MVAR FT_MAKE_TAG( 'M', 'V', 'A', 'R' )
|
||||
#define TTAG_name FT_MAKE_TAG( 'n', 'a', 'm', 'e' )
|
||||
#define TTAG_opbd FT_MAKE_TAG( 'o', 'p', 'b', 'd' )
|
||||
#define TTAG_OS2 FT_MAKE_TAG( 'O', 'S', '/', '2' )
|
||||
#define TTAG_OTTO FT_MAKE_TAG( 'O', 'T', 'T', 'O' )
|
||||
#define TTAG_PCLT FT_MAKE_TAG( 'P', 'C', 'L', 'T' )
|
||||
#define TTAG_POST FT_MAKE_TAG( 'P', 'O', 'S', 'T' )
|
||||
#define TTAG_post FT_MAKE_TAG( 'p', 'o', 's', 't' )
|
||||
#define TTAG_prep FT_MAKE_TAG( 'p', 'r', 'e', 'p' )
|
||||
#define TTAG_prop FT_MAKE_TAG( 'p', 'r', 'o', 'p' )
|
||||
#define TTAG_sbix FT_MAKE_TAG( 's', 'b', 'i', 'x' )
|
||||
#define TTAG_sfnt FT_MAKE_TAG( 's', 'f', 'n', 't' )
|
||||
#define TTAG_SING FT_MAKE_TAG( 'S', 'I', 'N', 'G' )
|
||||
#define TTAG_trak FT_MAKE_TAG( 't', 'r', 'a', 'k' )
|
||||
#define TTAG_true FT_MAKE_TAG( 't', 'r', 'u', 'e' )
|
||||
#define TTAG_ttc FT_MAKE_TAG( 't', 't', 'c', ' ' )
|
||||
#define TTAG_ttcf FT_MAKE_TAG( 't', 't', 'c', 'f' )
|
||||
#define TTAG_TYP1 FT_MAKE_TAG( 'T', 'Y', 'P', '1' )
|
||||
#define TTAG_typ1 FT_MAKE_TAG( 't', 'y', 'p', '1' )
|
||||
#define TTAG_VDMX FT_MAKE_TAG( 'V', 'D', 'M', 'X' )
|
||||
#define TTAG_vhea FT_MAKE_TAG( 'v', 'h', 'e', 'a' )
|
||||
#define TTAG_vmtx FT_MAKE_TAG( 'v', 'm', 't', 'x' )
|
||||
#define TTAG_VVAR FT_MAKE_TAG( 'V', 'V', 'A', 'R' )
|
||||
#define TTAG_wOFF FT_MAKE_TAG( 'w', 'O', 'F', 'F' )
|
||||
|
||||
|
||||
FT_END_HEADER
|
||||
|
||||
#endif /* TTAGS_H_ */
|
||||
|
||||
|
||||
/* END */
|
||||
63
include/fake/vtcs_root_vienna/freetype2/freetype/ttunpat.h
Normal file
63
include/fake/vtcs_root_vienna/freetype2/freetype/ttunpat.h
Normal file
@ -0,0 +1,63 @@
|
||||
/***************************************************************************/
|
||||
/* */
|
||||
/* ttunpat.h */
|
||||
/* */
|
||||
/* Definitions for the unpatented TrueType hinting system. */
|
||||
/* Obsolete, retained for backwards compatibility. */
|
||||
/* */
|
||||
/* Copyright 2003-2016 by */
|
||||
/* David Turner, Robert Wilhelm, and Werner Lemberg. */
|
||||
/* */
|
||||
/* Written by Graham Asher <graham.asher@btinternet.com> */
|
||||
/* */
|
||||
/* This file is part of the FreeType project, and may only be used, */
|
||||
/* modified, and distributed under the terms of the FreeType project */
|
||||
/* license, LICENSE.TXT. By continuing to use, modify, or distribute */
|
||||
/* this file you indicate that you have read the license and */
|
||||
/* understand and accept it fully. */
|
||||
/* */
|
||||
/***************************************************************************/
|
||||
|
||||
|
||||
#ifndef TTUNPAT_H_
|
||||
#define TTUNPAT_H_
|
||||
|
||||
|
||||
#include <ft2build.h>
|
||||
#include FT_FREETYPE_H
|
||||
|
||||
#ifdef FREETYPE_H
|
||||
#error "freetype.h of FreeType 1 has been loaded!"
|
||||
#error "Please fix the directory search order for header files"
|
||||
#error "so that freetype.h of FreeType 2 is found first."
|
||||
#endif
|
||||
|
||||
|
||||
FT_BEGIN_HEADER
|
||||
|
||||
|
||||
/***************************************************************************
|
||||
*
|
||||
* @constant:
|
||||
* FT_PARAM_TAG_UNPATENTED_HINTING
|
||||
*
|
||||
* @description:
|
||||
* Deprecated.
|
||||
*
|
||||
* Previously: A constant used as the tag of an @FT_Parameter structure to
|
||||
* indicate that unpatented methods only should be used by the TrueType
|
||||
* bytecode interpreter for a typeface opened by @FT_Open_Face.
|
||||
*
|
||||
*/
|
||||
#define FT_PARAM_TAG_UNPATENTED_HINTING FT_MAKE_TAG( 'u', 'n', 'p', 'a' )
|
||||
|
||||
/* */
|
||||
|
||||
|
||||
FT_END_HEADER
|
||||
|
||||
|
||||
#endif /* TTUNPAT_H_ */
|
||||
|
||||
|
||||
/* END */
|
||||
Some files were not shown because too many files have changed in this diff Show More
Loading…
x
Reference in New Issue
Block a user