XUI Programming Guide 2 0 7

User Manual:

Open the PDF directly: View PDF PDF.
Page Count: 56

DownloadXUI Programming Guide 2 0 7
Open PDF In BrowserView PDF
Prolin XUI Interface
V2.0.7

PAX Computer Technology(Shenzhen)Co., Ltd.

Copyright © 2000-2016 PAX Computer Technology (Shenzhen) Co., Ltd.
All rights reserved. No part of the contents of this document may be reproduced or
transmitted in any form without the written permission of PAX Computer Technology
(Shenzhen) Co., Ltd.
The information contained in this document is subject to change without notice. Although
PAX Computer Technology (Shenzhen) Co., Ltd. has attempted to ensure the accuracy of the
contents of this document, this document may include errors or omissions. The examples and
sample programs are for illustration only and may not be suited for your purpose. You should
verify the applicability of any example or sample program before placing the software into
productive use.

I

Revision History
Date

Version

Note

Author

2013-05-16

V1.0.0

Draft

Xie Lihong

2013-10-18

V2.0.0

Update the document

Huang Lei

1.
2014-01-21

V2.0.1

Increase the description of
structure XuiSignPoint and
XuiSignData.
Huang Lei
2. Add
a
new
interface
XuiSigBoardSignData().
1.

2014-03-25

V2.0.2

Modify the description of the
structure XuiSignPoint.
3. Add three new interfaces Huang Lei
XuiCreateCanvasEx(),
XuiCanvasMoveToY(),
XuiImgLoadFromMem().
1.

2015-04-28

2015-09-02

V2.0.3

V2.0.4

2016-03-01

V2.0.5

2016-03-28

V2.0.6

Added the support of bmp and
mbmp in XuiImgSaveToFile().
2. Modify the ending point of the
signature data to 0xffff in
XuiSigBoardSignData().
Huang Lei
3. Modify the parameter type of
maxlen from unsigned to
unsigned int in function
XuiGetHzString().
1. Added
the
support
of
combination key.
Huang Lei
2. Added
a
function
XuiBidiStrdup().
1. Added the instruction in
XuiCreateSignatureBoard().
2. Added
alpha_key
and
sharp_key to the structure
XuiImeAttr and alpha_key to
the structure XuiGetStrAttr.
Huang Lei
3. Added
XuiShowMode,
XuiAnimationType,XuiGesture
Type,XuiGesture structures in
2.2 Macro Definition.
4. Added XuiCanvasAnimation()
and XuiGetGesture().
1.

Added
XuiSetGestureRect()
Huang Lei
and XuiClearGesture().
II

2.

Added
XUI_GESTURE_CLICKDOW
N
and
XUI_GESTURE_CLICKUP
in XuiGestureType of 2.2
macro definition chapter.
3. Added down_x, down_y, cur_x
and cur_y four members in
XuiGesture of 2.4 structure
chapter.
1.

2016-04-15

V2.0.7

Added the soft key definition
to 2.1 definition of key values
table.
2. Added two new functions
which are XuiImgCompose() Huang Lei &
and XuiShowSoftKeyboard().
Ye Si ning
3. The title of this document
changed
from
“XUI
Programming
Guide”
to
“Prolin XUI Interface”.

III

Contents
1

2

3

Introduction ......................................................................................................................... 1
1.1

Purpose ..................................................................................................................... 1

1.2

Function .................................................................................................................... 1

1.3

Feature ...................................................................................................................... 2

1.4

XUI Programming Logic .......................................................................................... 2

Macro and Structure ............................................................................................................ 4
2.1

Definition of Key Values .......................................................................................... 4

2.2

Macro Definition .................................................................................................... 10

2.3

Other Macro Definition .......................................................................................... 13

2.4

Structure .................................................................................................................. 14

XUI API............................................................................................................................. 19
3.1

XuiOpen .................................................................................................................. 19

3.2

XuiIsRunning .......................................................................................................... 20

3.3

XuiClose ................................................................................................................. 20

3.4

XuiSuspend ............................................................................................................. 20

3.5

XuiResume ............................................................................................................. 21

3.6

XuiRootCanvas ....................................................................................................... 21

3.7

XuiStatusbarCanvas ................................................................................................ 22

3.8

XuiCreateFont......................................................................................................... 22

3.9

XuiDestroyFont ...................................................................................................... 23

3.10

XuiCanvasDrawText ........................................................................................... 23

3.11

XuiCanvasDrawImg ............................................................................................ 24

3.12

XuiCanvasDrawRect ........................................................................................... 25

3.13

XuiClearArea ...................................................................................................... 25

3.14

XuiTextWidth...................................................................................................... 26

3.15

XuiCreateCanvas ................................................................................................. 26

3.16

XuiCreateCanvasEx ............................................................................................ 27

3.17

XuiCanvasMoveToY .......................................................................................... 28

IV

3.18

XuiDestroyWindow ............................................................................................ 28

3.19

XuiShowWindow ................................................................................................ 28

3.20

XuiCanvasSetBackground .................................................................................. 29

3.21

XuiCreateButton.................................................................................................. 29

3.22

XuiButtonSetStat ................................................................................................. 30

3.23

XuiButtonSetKey ................................................................................................ 30

3.24

XuiCreateSignatureBoard ................................................................................... 31

3.25

XuiSigBoardSetStat ............................................................................................ 31

3.26

XuiSigBoardImg ................................................................................................. 32

3.27

XuiSigBoardSignData ......................................................................................... 32

3.28

XuiCreateGif ....................................................................................................... 32

3.29

XuiHasKey .......................................................................................................... 33

3.30

XuiGetKey .......................................................................................................... 33

3.31

XuiClearKey........................................................................................................ 33

3.32

XuiCaptureScreen ............................................................................................... 34

3.33

XuiCaptureCanvas .............................................................................................. 34

3.34

XuiImgLoadFormFile ......................................................................................... 35

3.35

XuiImgLoadFromMem ....................................................................................... 35

3.36

XuiImgSaveToFile .............................................................................................. 35

3.37

XuiImgToRgba.................................................................................................... 36

3.38

XuiImgTransform................................................................................................ 36

3.39

XuiImgCompose ................................................................................................. 37

3.40

XuiImgFree ......................................................................................................... 37

3.41

XuiSetStatusbarIcon ............................................................................................ 38

3.42

XuiGetHzString ................................................................................................... 38

3.43

XuiGetString ....................................................................................................... 39

3.44

XuiBidiStrdup ..................................................................................................... 40

3.45

XuiCanvasAnimation .......................................................................................... 41

3.46

XuiGetGesture ..................................................................................................... 42

3.47

XuiSetGestureRect .............................................................................................. 42
V

4

5

3.48

XuiClearGesture .................................................................................................. 43

3.49

XuiShowSoftKeyboard ....................................................................................... 43

Note ................................................................................................................................... 44
4.1

Multi-process .......................................................................................................... 44

4.2

XuiDestroyWindow ................................................................................................ 44

FAQ ................................................................................................................................... 46

VI

Table List
Table 1 Definition of Key Values ...................................................................................... 4
Table 2 Macro Definition ................................................................................................. 10
Table 3 XuiTransform ...................................................................................................... 10
Table 4 XuiButtonStatType ............................................................................................. 11
Table 5 XuiBgStyle .......................................................................................................... 11
Table 6 XuiFontSet .......................................................................................................... 11
Table 7 XuiTextStyle ....................................................................................................... 11
Table 8 XuiSigPenFlat ..................................................................................................... 12
Table 9 XuiWindowType ................................................................................................. 12
Table 10 XuiShowMode .................................................................................................. 12
Table 11 XuiAnimationType ........................................................................................... 12
Table 12 XuiGestureType ................................................................................................ 13
Table 13 Structure XuiWindow ....................................................................................... 14
Table 14 Structure XuiImg ............................................................................................... 14
Table 15 Structure XuiButtonStat .................................................................................... 14
Table 16 Structure XuiSigBoardStat ................................................................................ 15
Table 17 Structure XuiImeAttr ........................................................................................ 16
Table 18 Structure XuiGetStrAttr .................................................................................... 16
Table 19 Structure XuiSignPoint ..................................................................................... 17
Table 20 Structure XuiSignData ...................................................................................... 17

VII

Prolin XUI Interface

1 Introduction

1.1 Purpose
In contrast to other GUIs, XUI is relatively easy to understand and use. It adopts imperative
programming interfaces, and it is suitable for developing the wizard-style interface for
customer-oriented terminals such as POS machine, handhold terminal and ATM etc.
XUI cannot implement a variety of special features as complicated as GUI, but in wizard-style
interface, it is simpler and more efficient.
To put it simply, XUI programming is to draw, to write and to wait for keypress.

1.2 Function
The functions of XUI are listed as follows:
Support black-and-white screen.
Support monochrome font and gray font.
Support touch screen.
Support graphical display.
Support multi-font display.
Support bidirectional text display.
Support translucent. (Alpha Channel)
Support screenshot.
Support outputting the screenshot to printer, which means displaying interface and
printing interface are unified.
PAX Computer Technology(Shenzhen)Co.,Ltd.

1

Prolin XUI Interface

Support multi-platform, including Linux Framebuffer, X11, SDL, Windows, Android,
iOS, platform without operating system etc.
Support screen rotation.

1.3 Feature
Imperative programming interface.
Screen keys and physical buttons are unified.

1.4 XUI Programming Logic
The interface is designed as below.
Button
RootWindow
Text

Normal
Two state
Presse
d

Draw SomeText

SubWindow
Background
Color
RootWindow
Background
Picture

RootWindow
Background
Color

SubWindow
Background
Picture

The design only includes three elements: canvas, button and key value.
1.
2.
3.

1.
2.
3.

1.

Canvas
It must have a RootCanvas, and sub-canvas can be created.
Text, picture and buttons can be painted on the canvas.
It contains background image and background color, the background will not be cleared
when CLS.
Button
Buttons contain two states, normal and pressed.
Each state includes the following parameters: border, background color, icon, text font,
text color and text content.
When clicking on the button, the parameter key takes the value of GetKey().The key
value and physical button value are in the same queue.
Key value
The key value and physical button value are in the same queue.

PAX Computer Technology(Shenzhen)Co.,Ltd.

2

Prolin XUI Interface

2.
3.

All windows have only one queue.
Not applicable to multithreading.

When programming, operations are mainly done on the RootCanvas. If dialog boxes are
needed, create a sub-canvas, and close it after operation.
For printer, the user only needs to create a hidden canvas and write on it. After that, cut out
the canvas and send it to the printer.

PAX Computer Technology(Shenzhen)Co.,Ltd.

3

Prolin XUI Interface

2 Macro and Structure

2.1 Definition of Key Values
Table 1 Definition of Key Values
Macro

Value

Description

XUI_KEY1

2

1

XUI_KEY2

3

2

XUI_KEY3

4

3

XUI_KEY4

5

4

XUI_KEY5

6

5

XUI_KEY6

7

6

XUI_KEY7

8

7

XUI_KEY8

9

8

XUI_KEY9

10

9

XUI_KEY0

11

0

XUI_KEYCANCEL

223

Cancel

PAX Computer Technology(Shenzhen)Co.,Ltd.

4

Prolin XUI Interface

XUI_KEYCLEAR

14

Clear

XUI_KEYENTER

28

Enter

XUI_KEYALPHA

69

Alpha

XUI_KEYF1

59

XUI_KEYFUNC

102

XUI_KEYUP

103

XUI_KEYDOWN

108

XUI_KEYMENU

139

XUI_KEYENTER1

30

/* Enter+1 */ The combination of Enter key
and Key1.

XUI_KEYENTER2

31

/* Enter+2 */ The combination of Enter key
and Key2.

XUI_KEYENTER3

32

/* Enter+3 */ The combination of Enter key
and Key 3.

XUI_KEYENTER4

33

/* Enter+4 */ The combination of Enter key
and Key4.

XUI_KEYENTER5

34

/* Enter+5*/ The combination of Enter key
and Key5.

XUI_KEYENTER6

35

/* Enter+6*/ The combination of Enter key
and Key6.

XUI_KEYENTER7

36

/* Enter+7/ The combination of Enter key
and Key7.

XUI_KEYENTER8

37

/* Enter+8/ The combination of Enter key
and Key8.

XUI_KEYENTER9

38

/* Enter+9 */ The combination of Enter key
and Key9.

XUI_KEYENTER0

39

/* Enter+0 */ The combination of Enter key
and Key10.

XUI_SOFTKEYBOARD_KEYB
ACKSPACE

0xff+8

/* backspace key */

XUI_SOFTKEYBOARD_KEYS
PACE

0xff+32

/* space key*/

XUI_SOFTKEYBOARD_KEYE
XCLAM

0xff+33

/* ! */

XUI_SOFTKEYBOARD_KEYD
OUBLEQUOTE

0xff+34

/* " */

PAX Computer Technology(Shenzhen)Co.,Ltd.

5

Prolin XUI Interface

XUI_SOFTKEYBOARD_KEYS
HARP

0xff+35

/* # */

XUI_SOFTKEYBOARD_KEYD
OLLAR

0xff+36

/* $ */

XUI_SOFTKEYBOARD_KEYP
ERCENT

0xff+37

/* % */

XUI_SOFTKEYBOARD_KEYA
MPERSAND

0xff+38

/* & */

XUI_SOFTKEYBOARD_KEYSI
NGLEQUOTE

0xff+39

/* ' */

XUI_SOFTKEYBOARD_KEYP
ARENLEFT

0xff+40

/* ( */

XUI_SOFTKEYBOARD_KEYP
ARENRIGHT

0xff+41

/* ) */

XUI_SOFTKEYBOARD_KEYA
STERISK

0xff+42

/* * */

XUI_SOFTKEYBOARD_KEYP
LUS

0xff+43

/* + */

XUI_SOFTKEYBOARD_KEYC
OMMA

0xff+44

/* , */

XUI_SOFTKEYBOARD_KEYM
INUS

0xff+45

/* - */

XUI_SOFTKEYBOARD_KEYP
ERIOD

0xff+46

/* . */

XUI_SOFTKEYBOARD_KEYS
LASH

0xff+47

/* / */

XUI_SOFTKEYBOARD_KEY0

0xff+48

/* 0 */

XUI_SOFTKEYBOARD_KEY1

0xff+49

/* 1 */

XUI_SOFTKEYBOARD_KEY2

0xff+50

/* 2 */

XUI_SOFTKEYBOARD_KEY3

0xff+51

/* 3 */

XUI_SOFTKEYBOARD_KEY4

0xff+52

/* 4 */

PAX Computer Technology(Shenzhen)Co.,Ltd.

6

Prolin XUI Interface

XUI_SOFTKEYBOARD_KEY5

0xff+53

/* 5 */

XUI_SOFTKEYBOARD_KEY6

0xff+54

/* 6 */

XUI_SOFTKEYBOARD_KEY7

0xff+55

/* 7 */

XUI_SOFTKEYBOARD_KEY8

0xff+56

/* 8 */

XUI_SOFTKEYBOARD_KEY9

0xff+57

/* 9 */

XUI_SOFTKEYBOARD_KEYC
OLON

0xff+58

/* : */

XUI_SOFTKEYBOARD_KEYS
EMICOLON

0xff+59

/* ; */

XUI_SOFTKEYBOARD_KEYL
ESS

0xff+60

/* < */

XUI_SOFTKEYBOARD_KEYE
QUAL

0xff+61

/* = */

XUI_SOFTKEYBOARD_KEYG
REATER

0xff+62

/* > */

XUI_SOFTKEYBOARD_KEYQ
UESTION

0xff+63

/* ? */

XUI_SOFTKEYBOARD_KEYA
T

0xff+64

/* @ */

XUI_SOFTKEYBOARD_KEYA

0xff+65

/* A */

XUI_SOFTKEYBOARD_KEYB

0xff+66

/* B */

XUI_SOFTKEYBOARD_KEYC

0xff+67

/* C */

XUI_SOFTKEYBOARD_KEYD

0xff+68

/* D */

XUI_SOFTKEYBOARD_KEYE

0xff+69

/* E */

XUI_SOFTKEYBOARD_KEYF

0xff+70

/* F */

XUI_SOFTKEYBOARD_KEYG

0xff+71

/* G */

XUI_SOFTKEYBOARD_KEYH

0xff+72

/* H */

XUI_SOFTKEYBOARD_KEYI

0xff+73

/* I */

PAX Computer Technology(Shenzhen)Co.,Ltd.

7

Prolin XUI Interface

XUI_SOFTKEYBOARD_KEYJ

0xff+74

/* J */

XUI_SOFTKEYBOARD_KEYK

0xff+75

/* K */

XUI_SOFTKEYBOARD_KEYL

0xff+76

/* L */

XUI_SOFTKEYBOARD_KEYM

0xff+77

/* M */

XUI_SOFTKEYBOARD_KEYN

0xff+78

/* N */

XUI_SOFTKEYBOARD_KEYO

0xff+79

/* O */

XUI_SOFTKEYBOARD_KEYP

0xff+80

/* P */

XUI_SOFTKEYBOARD_KEYQ

0xff+81

/* Q */

XUI_SOFTKEYBOARD_KEYR

0xff+82

/* R */

XUI_SOFTKEYBOARD_KEYS

0xff+83

/* S */

XUI_SOFTKEYBOARD_KEYT

0xff+84

/* T */

XUI_SOFTKEYBOARD_KEYU

0xff+85

/* U */

XUI_SOFTKEYBOARD_KEYV

0xff+86

/* V */

XUI_SOFTKEYBOARD_KEYW

0xff+87

/* W */

XUI_SOFTKEYBOARD_KEYX

0xff+88

/* X */

XUI_SOFTKEYBOARD_KEYY

0xff+89

/* Y */

XUI_SOFTKEYBOARD_KEYZ

0xff+90

/* Z */

XUI_SOFTKEYBOARD_KEYB
RACKETLEFT

0xff+91

/* [ */

XUI_SOFTKEYBOARD_KEYB
ACKSLASH

0xff+92

/* \ */

XUI_SOFTKEYBOARD_KEYB
RACKETRIGHT

0xff+93

/* ] */

XUI_SOFTKEYBOARD_KEYC
ARET

0xff+94

/* ^ */

XUI_SOFTKEYBOARD_KEYU
NDERSCORE

0xff+95

/* _ */

XUI_SOFTKEYBOARD_KEYB

0xff+96

/* ` */

PAX Computer Technology(Shenzhen)Co.,Ltd.

8

Prolin XUI Interface

ACKQUOTE
XUI_SOFTKEYBOARD_KEYa

0xff+97

/* a */

XUI_SOFTKEYBOARD_KEYb

0xff+98

/* b */

XUI_SOFTKEYBOARD_KEYc

0xff+99

/* c */

XUI_SOFTKEYBOARD_KEYd

0xff+100

/* d */

XUI_SOFTKEYBOARD_KEYe

0xff+101

/* e */

XUI_SOFTKEYBOARD_KEYf

0xff+102

/* f */

XUI_SOFTKEYBOARD_KEYg

0xff+103

/* g */

XUI_SOFTKEYBOARD_KEYh

0xff+104

/* h */

XUI_SOFTKEYBOARD_KEYi

0xff+105

/* i */

XUI_SOFTKEYBOARD_KEYj

0xff+106

/* j */

XUI_SOFTKEYBOARD_KEYk

0xff+107

/* k */

XUI_SOFTKEYBOARD_KEYl

0xff+108

/* l */

XUI_SOFTKEYBOARD_KEYm

0xff+109

/* m */

XUI_SOFTKEYBOARD_KEYn

0xff+110

/* n */

XUI_SOFTKEYBOARD_KEYo

0xff+111

/* o */

XUI_SOFTKEYBOARD_KEYp

0xff+112

/* p */

XUI_SOFTKEYBOARD_KEYq

0xff+113

/* q */

XUI_SOFTKEYBOARD_KEYr

0xff+114

/* r */

XUI_SOFTKEYBOARD_KEYs

0xff+115

/* s */

XUI_SOFTKEYBOARD_KEYt

0xff+116

/* t */

XUI_SOFTKEYBOARD_KEYu

0xff+117

/* u */

XUI_SOFTKEYBOARD_KEYv

0xff+118

/* v */

XUI_SOFTKEYBOARD_KEYw

0xff+119

/* w */

XUI_SOFTKEYBOARD_KEYx

0xff+120

/* x */

XUI_SOFTKEYBOARD_KEYy

0xff+121

/* y */

PAX Computer Technology(Shenzhen)Co.,Ltd.

9

Prolin XUI Interface

XUI_SOFTKEYBOARD_KEYz

0xff+122

/* z */

XUI_SOFTKEYBOARD_KEYB
RACELEFT

0xff+123

/* { */

XUI_SOFTKEYBOARD_KEYB
AR

0xff+124

/* | */

XUI_SOFTKEYBOARD_KEYB
RACERIGHT

0xff+125

/* } */

XUI_SOFTKEYBOARD_KEYTI
LDE

0xff+126

/* ~ */

1.

2.
3.

All the combination keys must be generated through “Enter” key
and digital key on the physical keypad, and virtual key cannot
generate combination keys. But if the virtual key is bound to the
value of a certain combination key, then in this case, this virtual
key can also generate this combination key value.
D200 (touch-key) doesn’t support combination key.
In addition, the value of soft keyboard minus 0xff will be equal to
the key value defined by ASCII.

2.2 Macro Definition
Table 2 Macro Definition
Macro

Description

b

Blue channel

g

Green channel

r

Red channel

a

ALPHA channel

Table 3 XuiTransform
Macro
PAX Computer Technology(Shenzhen)Co.,Ltd.

Description
10

Prolin XUI Interface

XUI_ROTATE_0

No rotation

XUI_ROTATE_90

Rotate clockwise by 90 degrees

XUI_ROTATE_180

Rotate clockwise by 180 degrees

XUI_ROTATE_270

Rotate clockwise by 270 degrees

XUI_FLIP_VERT

Flip vertically

XUI_FLIP_HORIZ

Flip horizontally

Table 4 XuiButtonStatType
Macro

Description

XUI_BTN_NORMAL

Normal state

XUI_BTN_PRESSED

Pressed State

Table 5 XuiBgStyle
Macro

Description

XUI_BG_NORMAL

Normal, display the picture from the origin x, y.

XUI_BG_TILE

Tile

XUI_BG_CENTER

Center

XUI_BG_FOUR_CORNER

Stretch to four corners

Table 6 XuiFontSet
Macro

Description

XUI_FONT_MONO

Monochrome font(black and white)

XUI_FONT_GREY

Grey font

Table 7 XuiTextStyle

PAX Computer Technology(Shenzhen)Co.,Ltd.

11

Prolin XUI Interface

Macro

Description

XUI_TEXT_NORMAL

Normal

XUI_BOLD

Bold

XUI_ITALIC

Italic

XUI_TEXT_BOLD_ITALIC

Bold and italic

Table 8 XuiSigPenFlat
Macro

Description

XUI_SIG_FLAT

Signing Board with smooth processing

XUI_SIG_NORMAL

The normal Signing Board without smooth
processing

Table 9 XuiWindowType
Macro

Description

XUI_WIN_CANVAS

Canvas window

XUI_WIN_BUTTON

Button window

XUI_WIN_GIF

GIF window

XUI_WIN_SIGBOARD

Signature Board window

Table 10 XuiShowMode
Macro

Description

XUI_SHOW_NORMAL

Display on the screen normally

XUI_SHOW_MIRROR

Display on the mirror

XUI_SHOW_ALL

Display on the screen and mirror at the same
time.

Table 11 XuiAnimationType
PAX Computer Technology(Shenzhen)Co.,Ltd.

12

Prolin XUI Interface

Macro

Description

XUI_TRANSLATION

Translate right or left.

XUI_POLL

Translate up or down

XUI_SCALE

Scale

Table 12 XuiGestureType
Macro

Description

XUI_GESTURE_FLINGLEFT

Slid to the left

XUI_GESTURE_FLINGRIGHT

Slid to the right

XUI_GESTURE_FLINGUP

Slid up

XUI_GESTURE_FLINGDOWN

Slid down

XUI_GESTURE_FLINGZOOMOUT

Zoom out with two fingers

XUI_GESTURE_FLINGZOOMIN

Zoom in with two fingers.

XUI_GESTURE_SCROLLLEFT

Scroll to the left

XUI_GESTURE_SCROLLRIGHT

Scroll to the right

XUI_GESTURE_SCROLLUP

Scroll up

XUI_GESTURE_SCROLLDOWN

Scroll down

XUI_GESTURE_SCROLLZOOMOUT

Zoom out with two fingers

XUI_GESTURE_SCROLLZOOMIN

Zoom in with two fingers

XUI_GESTURE_CLICKDOWN

Click down finger event

XUI_GESTURE_CLICKUP

Click up finger event

2.3 Other Macro Definition
Macro
XUI_RIGHT_X(_x, _width, _extend)

PAX Computer Technology(Shenzhen)Co.,Ltd.

Description
Get text in the right-most position within
_width (text-align right)
13

Prolin XUI Interface

XUI_CENTER_X(_x, _width, _extend)

Get text in the middle position within _width
(text-align horizontal center)

XUI_CENTER_Y(_y, _height, _extend)

Get text in the middle position within _height
(text-align vertical center)

2.4 Structure
1.

Structure XuiWindow
Table 13 Structure XuiWindow
Structure Member

2.

Description

width

Window width

height

Window height

widget

Window related canvas pointer

type

Window type, refers to XuiWindowType

key

Window related key values

Structure XuiImg
Table 14 Structure XuiImg
Structure Member

3.

Description

width

Img width

height

Img height

priy

Img data pointer

Structure XuiButtonStat
Table 15 Structure XuiButtonStat
Structure Member
btn_round

Description
rounded corner(0 means no rounded corner,
1 means rounded corner, and the default

PAX Computer Technology(Shenzhen)Co.,Ltd.

14

Prolin XUI Interface

value is 0)

4.

btn_bg

background color

Text

text

text_fg

text color

text_font

text font

text_x

text position:x

text_y

text position:y

text_height

text height(font size)

Img

Image

img_x

Image position:x

img_y

Image position:y

img_style

Image type

Structure XuiSigBoardStat
Table 16 Structure XuiSigBoardStat
Structure Member

Description

btn_round

rounded corner (0 means has no rounded
corner, 1 means has rounded corner, and the
default value is 0)

btn_bg

Background color (Transparency is not
supported)

text

text

text_fg

text color

text_font

text font

text_x

Text position: x

text_y

Text position: y

text_height

Text height(font size)

PAX Computer Technology(Shenzhen)Co.,Ltd.

15

Prolin XUI Interface

5.

img

Image

img_x

Image position: x

img_y

Image position: y

img_style

image type

pen_fg

pen color

pen_width

Pen width (ranges from 1 to 10)

pen_flat

Pen with smooth processing

Structure XuiImeAttr
Table 17 Structure XuiImeAttr
Structure Member

6.

Description

parent

Parent canvas (valid canvas pointer)

x

IME position x (greater than 0)

y

IME position y (greater than 0)

width

IME width (greater than 0)

height

IME height (greater than 4* (text_size+10))

text_font

IME text font (pointer of valid font)

text_size

IME text size (greater than 12)

text_fg

IME text color

focus_fg

Switch IME color

img

IME background image

img_bg

IME background color (transparency is not
supported)

alpha_key

Customize alpha key value

sharp_key

Customize sharp key value

Structure XuiGetStrAttr
Table 18 Structure XuiGetStrAttr

PAX Computer Technology(Shenzhen)Co.,Ltd.

16

Prolin XUI Interface

Structure Member

7.

Description

parent

Parent canvas (valid canvas pointer)

x

Input position x (greater than 0)

y

Input position y (greater than 0)

font

Input text font (valid font pointer)

size

Input text size (greater than 12)

fg

Input text color

alpha_key

Customize alpha key value.

Structure XuiSignPoint
Table 19 Structure XuiSignPoint

8.

Structure Member

Description

x

The value of x coordinate of Signature point, the type is unsigned
short.

y

The value of y coordinate of Signature point, the type is unsigned
short.

Structure XuiSignData
Table 20 Structure XuiSignData
Structure Member

9.

Description

point_array

Array of XuiSignPoint structure, which is used to
save the coordinates of all the signature track
points

point_len

Length of Point_array, the number of saved
signature track points

Structure XuiGesture
Table 21 Structure XuiGesture
Structure Member
type

PAX Computer Technology(Shenzhen)Co.,Ltd.

Description
Gesture type, for more information , please
17

Prolin XUI Interface

refer to XuiGestureType
velocity

The velocity of sliding the screen.

distance

The sliding distance.

down_x

The x-coordinate of where the finger presses
down.

down_y

The y-coordinate of where the finger presses
down.

cur_x

The current x-coordinate of gesture.

cur_y

The current y-coordinate of gesture.

PAX Computer Technology(Shenzhen)Co.,Ltd.

18

Prolin XUI Interface

3 XUI API

3.1 XuiOpen
Prototype

int XuiOpen(int argc,
char **argv);

Function

Open XUI and initialize it.
argc 【Input】 Number of parameters

Parameters

Return

Instruction

argv 【Input】 Parameter list
0

Success

<0

Failed

The supported formats for argv are as below:
FB=xxxxx. /*Device node of framebuffer, and the default is
"/dev/graphics/fb0".*/
INPUT=xxxx /*Input device nodes, multiple nodes are allowed,
and the default is "/dev/input/event0".*/
ROTATE=xxx /*Screen rotation (values can be 0,90,180, the
default value is 0, the default value will be used when the value is
invalid)*/
TSDEV=xxxx /*Device node of touch screen, the default is
"/dev/input/event2".*/
STATUSBAR=xxx
/*Height of the status bar(0-64,the default
value is 0, the default value will be used when value is invalid) */
For example:
char *xui_argv[] = {"ROTATE=90","STATUSBAR=18"};

PAX Computer Technology(Shenzhen)Co.,Ltd.

19

Prolin XUI Interface

XuiOpen(sizeof(xui_argv)/sizeof(xui_argv[0]), xui_argv);

1.

2.
3.

4.
5.

6.

When calling XuiOpen() for multiple times, only the first time
takes effect, the later calls will not work unless XuiClose() is
called.
When parameter argc=0 and argv=NULL, default settings will be
enabled.
XUI does not support multi-process, Calling XuiOpen() between
different processes will cause screen robbery during canvas
operations.
Parameters in argv are independent.
After setting the ROTATE parameter in argv, the left upper corner
of the screen will be defined as coordinate origin in the subsequent
operations for API.
Xuiopen() must be called before calling other related interfaces.

3.2 XuiIsRunning
Prototype

int XuiIsRunning(void);

Function

Check if the XUI is running.

Parameters
Return

None
1

Running.

0

Not running.

Instruction

3.3 XuiClose
Prototype

void XuiClose(void);

Function

Close the XUI.

Parameters

None

Return

None

Instruction

Call this function when the application exits.

3.4 XuiSuspend
Prototype

int XuiSuspend (void);

PAX Computer Technology(Shenzhen)Co.,Ltd.

20

Prolin XUI Interface

Function
Parameters
Return

Suspend the XUI.
None
0

Success

-1

Failed

1.
Instruction
2.

When the application needs to call another process which
occupies fb and event resource. This function needs to be called
suspend the XUI; otherwise, two processes will preempt fb and
event resource at the same time.
After suspension, if necessary, call XuiResume() to resume the
operation.

3.5 XuiResume
Prototype

int XuiResume(void);

Function

Resume the running status from suspended state.

Parameters
Return

Instruction

None
0

Success

-1

Failed

Key and touchscreen events will no longer be received after calling
XuiSuspend(), so the XUI can’t be resumed through those events, it
can only be resumed through this function.

3.6 XuiRootCanvas
Prototype

XuiWindow *XuiRootCanvas(void);

Function

Get root canvas.

Parameters
Return

Instruction

None
NULL

Failed

else

Pointer of the root canvas

Call this function to do the operation on the root canvas:
For example:
XuiWindow* root;
root= XuiRootCanvas();
XuiCanvasSetBackground(root,XUI_BG_NORMAL,img_bg,color_bg
);

PAX Computer Technology(Shenzhen)Co.,Ltd.

21

Prolin XUI Interface

3.7 XuiStatusbarCanvas
Prototype

XuiWindow * XuiStatusbarCanvas (void);

Function

Get status bar canvas.

Parameters
Return
Instruction

None
NULL

Failed

else

Pointer of the status bar canvas

It is similar to XuiRootCanvas().

3.8 XuiCreateFont

Prototype

XuiFont *XuiCreateFont(char *fontfile,
int index,
XuiFontSet fontset);

Function

Create font.
fontfile 【Input】 Path of the font file.
index

Parameters

【Input】 Index of the font file.

Font style, it supports monochrome and grey
Fontset 【Input】 modes.
Details refer to XuiFontSet.
Return

Instruction

NULL

Failed

else

Font pointer

Font of displaying text is created by this function.
For Example:
XuiFont *font_simsun_0;
font_simsun_0 = XuiCreateFont("/usr/font/paxfont.ttf", 0, 0);

1.
2.

3.
4.

Custom font and ttc/ttf vector fonts are supported.
The font is matched according to parameter fontfile. Firstly, match
it with custom font by default, if it doesn’t match, then match it
with ttf or ttc font. If it doesn’t match with all these three font
types, NULL will be returned.
The parameter index is valid for ttc font; it is used to specify a font
type of ttc font. It is invalid for custom font and ttf font since these
two only contain one type of font.
Users can call XuiDestroyFont() to destroy the created fonts which

PAX Computer Technology(Shenzhen)Co.,Ltd.

22

Prolin XUI Interface

5.

are no longer needed.
The custom font is created by fontextract tool, which can create
highly customized bitmap fonts.

3.9 XuiDestroyFont
Prototype

void XuiDestroyFont(XuiFont *font);

Function

Destroy fonts.

Parameters
Return
Instruction

font 【Input】 Font pointer
None
Destroy the fonts created by XuiCreateFont().

3.10 XuiCanvasDrawText

Prototype

int XuiCanvasDrawText(XuiWindow *window,
unsigned int x,
unsigned int y,
unsigned int height,
XuiFont *font,
XuiTextStyle textstyle,
XuiColor fg,
char *text);

Function

Display string on canvas window.

Parameters

window

【Input】 Canvas window

x

【Input】 The position x relative to canvas window.

y

【Input】 The position y relative to canvas window.

height

【Input】 Text height.

font

【Input】 Font, created by XuiCreateFont().

textstyle 【Input】

Return
Instruction

Text style (bold, italic), details refer to the
XuiTextStyle.

fg

【Input】 Font color.

text

【Input】 Text (UTF-8 code).

0

Success

<0

Failed

1.

Auto linefeed, ‘\n’ or ‘\r’ linefeed is not supported. When the

PAX Computer Technology(Shenzhen)Co.,Ltd.

23

Prolin XUI Interface

2.
3.

displaying length is beyond the canvas, the excess part will not
be displayed.
Parameter text only supports UTF -8 coding; other formats
should be converted to UTF-8 code first.
Parameter window must be a valid canvas pointer, or it will lead
to a crash. And this warning applies to all the following
interfaces.

3.11 XuiCanvasDrawImg

Prototype

int XuiCanvasDrawImg(XuiWindow *window,
unsigned int x,
unsigned int y,
unsigned int width,
unsigned int height,
XuiBgStyle bgstyle,
XuiImg *img);

Function

Display images on the canvas window.

Parameters

Return

Instruction

window

【Input】 Canvas window

x

【Input】 The position x relative to canvas window.

y

【Input】 The position y relative to canvas window.

width

【Input】 Image width.

height

【Input】 Image height.

bgstyle

【Input】 Background
XuiBgStyle.

img

【Input】 Image pointer.

0

Success

<0

Failed

style,

details

refer

to

the

Parameter img must be a valid image pointer created by
XuiImgLoadFormFile(); otherwise, the image can’t be displayed
correctly.

PAX Computer Technology(Shenzhen)Co.,Ltd.

24

Prolin XUI Interface

3.12 XuiCanvasDrawRect

Prototype

int XuiCanvasDrawRect(XuiWindow *window,
unsigned int x,
unsigned int y,
unsigned int width,
unsigned int height,
XuiColor fg,
int round,
int fill);

Function

Display rectangle on the canvas window.

Parameters

Return

window

【Input】 Canvas window

x

【Input】 The position x relative to canvas window.

y

【Input】 The position y relative to canvas window.

width

【Input】 Rectangle width.

height

【Input】 Rectangle height.

Fg

【Input】 Foreground color.

round

【Input】

fill

【Input】

1: Rounded,
0: Rectangular.
1: Filled
0: Hollowed

0

Success

<0

Failed

Instruction

3.13 XuiClearArea

Prototype

int XuiClearArea(XuiWindow *window,
unsigned int x,
unsigned int y,
unsigned int width,

PAX Computer Technology(Shenzhen)Co.,Ltd.

25

Prolin XUI Interface

unsigned int height);
Function

Parameters

Return
Instruction

Clear the canvas area and cleared area will show the window
background color.
window

【Input】 Canvas window

x

【Input】 The position x relative to canvas window

y

【Input】 The position y relative to canvas window

width

【Input】 Width of clearing area

height

【Input】 Height of clearing area

0

Success

<0

Failed

When multiple canvases are overlapped, only the content specified by
parameter window will be cleared.

3.14 XuiTextWidth

Prototype

int XuiTextWidth(XuiFont *font,
int size,
char *text);

Function

Get the text width.

Parameters

Return

font

【Input】 The specified font created by XuiCreateFont()

size

【Input】 Font size (text height)

text

【Input】 Text string

Returns the string width.
1.
2.

Instruction

3.
4.

Call this function when setting text alignment to center or right.
Parameter font must be a valid font created by XuiCreateFont();
otherwise, it will cause program crash.
Parameter text must be a valid string pointer.
Only UTF-8 coding is supported; other formats need to be
converted to UTF-8 code first.

3.15 XuiCreateCanvas

Prototype

XuiWindow *XuiCreateCanvas(XuiWindow *parent,
unsigned int x,
unsigned int y,
unsigned int width,

PAX Computer Technology(Shenzhen)Co.,Ltd.

26

Prolin XUI Interface

unsigned int height);
Function

Parameters

Return

Create canvas.
parent

【Input】 Parent canvas

x

【Input】 The position x relative to canvas window

y

【Input】 The position y relative to canvas window

width

【Input】 Canvas width

height

【Input】 Canvas height

NULL
else
1.

Instruction

2.

Failed
Canvas pointer

Parameter parent must be a valid canvas pointer, and this rule
also applies to the following interfaces.
The new canvas will be displayed on the screen by calling
XuiShowWindow(), and the parent canvas will be covered.

3.16 XuiCreateCanvasEx

Prototype

XuiWindow *XuiCreateCanvasEx(XuiWindow *parent,
unsigned int x,
unsigned int y,
unsigned int width,
unsigned int height,
unsigned int vh);

Function

Create the movable canvas window, and the canvas height can be
greater than the window height.

Parameters

Return
Instruction

parent

【Input】 Parent canvas

x

【Input】

The position x of canvas window relative to the
parent canvas

y

【Input】

The position y of canvas window relative to the
parent canvas

width

【Input】 width of the canvas window

height

【Input】 height of the canvas window

vh

【Input】

The height of the actual operation area of the
canvas

NULL

Failed

else

Pointer of the canvas window

1.
2.

The canvas width cannot be greater than the window width.
When the parameter vh is not more than height, this function is

PAX Computer Technology(Shenzhen)Co.,Ltd.

27

Prolin XUI Interface

equivalent to the XuiCreateCanvas().

3.17 XuiCanvasMoveToY
Prototype

void XuiCanvasMoveToY (XuiWindow * window,
unsigned int my);

Function

Move the canvas in the canvas window.

Parameters
Return

parent

【Input】 Parent canvas created by XuiCreateCanvasEx().

my

【Input】

None
1.

Instruction

The moving height of canvas, the height is
relative to the original height of canvas window.

2.
3.

This function has no effect on the canvas created by
XuiCreateCanvas(). It is only valid when the canvas is created by
XuiCreateCanvasEx() and actual canvas height is greater than the
window height.
Canvas can only be moved within the canvas window.
When moving the canvas, only the contents drawn by the
function of XuiCanvasDraw() series are moveable, but
sub-windows such as button, signature board and GIF are
unmovable.

3.18 XuiDestroyWindow
Prototype

void XuiDestroyWindow(XuiWindow *window);

Function

Destroy the canvas windows.

Parameters

window
1.

Instruction

2.

【Input】 Canvas window

Destroy the canvas windows created by XuiCreateCanvas(),
XuiCreateButton(),
XuiCreateSignatureBoard()
and
XuiCreateGIF().
When destroying the nested canvas windows, user should follow
the principle of “the former created canvas windows should be
destroyed after the latter created canvas windows”.

3.19 XuiShowWindow

Prototype

void XuiShowWindow(XuiWindow *window,
int show,
int flag);

PAX Computer Technology(Shenzhen)Co.,Ltd.

28

Prolin XUI Interface

Function

Parameters

Return
Instruction

Show or hide the window.
window

【Input】 window

show

【Input】

flag

【Input】 Reserved for future use, the default value is 0.

1: Show
0: Hide

None

3.20 XuiCanvasSetBackground

Prototype

void XuiCanvasSetBackground(XuiWindow *window,
XuiBgStyle bgstyle,
XuiImg *img,
XuiColor bg);

Function

Set the canvas background.
window

【Input】 Canvas

bgstyle

【Input】

img

【Input】 Image, NULL indicates no image.

Parameters
bg
Return
Instruction

Background
XuiBgStyle.

style.

Details

refer

to

the

Background color.

None
1.
Screen will be cleared after calling this function.
2.
This interface only takes effect on the canvas specified by
window. Other canvas area will not be affected.
3.
It does not support transparency in the background.

3.21 XuiCreateButton

Prototype

XuiWindow *XuiCreateButton(XuiWindow *parent,
unsigned int x,
unsigned int y,
unsigned int width,
unsigned int height);

Function

Create button in canvas.

Parameters

parent

【Input】 Parent canvas

x

【Input】 The position x relative to canvas window

PAX Computer Technology(Shenzhen)Co.,Ltd.

29

Prolin XUI Interface

Return

y

【Input】 The position y relative to canvas window

width

【Input】 width

height

【Input】 height

NULL

Failed

else

Button pointer

Instruction

3.22 XuiButtonSetStat

Prototype

int XuiButtonSetStat(XuiWindow *window,
XuiButtonStatType type,
XuiButtonStat *stat);

Function

Set the button state.

Parameters

Return

Instruction

window

【Input】 Button

type

【Input】

State type, details
XuiButtonStatType.

refer

stat

【Input】

State variable, details
XuiButtonStat.

refer to structure

0

Success

<0

Failed

1.
2.
3.

to

macro

The setting takes effect immediately after calling this function.
The parameter stat must be a valid state pointer; otherwise, it will
lead to crashes. It also applies to the following interfaces.
When stat’s text_font and text are NULL, the function can return
correctly, and text will not be displayed.

3.23 XuiButtonSetKey
Prototype

int XuiButtonSetKey(XuiWindow *window,
int key);

Function

Set the key value of the button.

Parameters

Return

window

【Input】 Button

key

【Input】 Key value (key>0)

0

Success

<0

Failed

PAX Computer Technology(Shenzhen)Co.,Ltd.

30

Prolin XUI Interface

1.
Instruction

2.

After releasing the button, key values can be acquired through
XuiGetKey().
The key value must be greater than 0.

3.24 XuiCreateSignatureBoard

Prototype

XuiWindow * XuiCreateSignatureBoard (XuiWindow *parent,
unsigned int x,
unsigned int y,
unsigned int width,
unsigned int height);

Function

Create the signature board.

Parameters

Return

parent

【Input】 Parent canvas.

x

【Input】 The position x relative to canvas window.

y

【Input】 The position y relative to canvas window.

width

【Input】 Width.

height

【Input】 Height.

NULL

Failed

else

Pointer of the signature board

1.
Instruction

2.
3.

When creating signature board, several canvases cannot be
overlapped.
Prolin-2.4 doesn’t support multi-touch.
Prolin-phoenix-2.5 support multi-touch and it supports up to 3
points.

3.25 XuiSigBoardSetStat
Prototype

int XuiSigBoardSetStat (XuiWindow *window,
XuiSigBoardStat *stat);

Function

Set the state of signature board.

Parameters

Return
Instruction

window

【Input】 Signature board.

stat

【Input】

State variable, details refer to the structure
XuiSigBoardStat.

0

Success

<0

Failed

1.

The setting will take effect immediately after calling this
function.

PAX Computer Technology(Shenzhen)Co.,Ltd.

31

Prolin XUI Interface

2.
3.
4.

When pen_flat is XUI_SIG_FLAT in parameter stat , pen color
and pen width can’t be changed.
When text_font and text are NULL in parameter stat, the function
will return successfully, but the text will not be displayed.
The background of signature board does not support
semitransparency.

3.26 XuiSigBoardImg
Prototype

XuiImg * XuiSigBoardImg(XuiWindow *window);

Function

Get the signature image.

Parameters
Return
Instruction

window

【Input】 Signature board。

NULL

Failed

else

Image pointer

After calling this function, call XuiImgFree() to destroy the image.

3.27 XuiSigBoardSignData
Prototype

XuiSignData* XuiSigBoardSignData(XuiWindow *window);

Function

Get the signature data.

Parameters
Return

window
NULL

Failed

else

Data pointer, details refer to structure
XuiSignData.

1.
Instruction

【Input】 Signature board

2.

Record the location of the signature point, the ending point of
signature is 0xffff.
The obtained signature data pointer does not need to be released.

3.28 XuiCreateGif

Prototype

XuiWindow * XuiCreateGif (XuiWindow *parent,
unsigned int x,
unsigned int y,
unsigned int width,
unsigned int height ,
const char* path);

Function

Create the GIF animation.

PAX Computer Technology(Shenzhen)Co.,Ltd.

32

Prolin XUI Interface

Parameters

Return

parent

【Input】 Parent canvas.

x

【Input】 The position x relative to canvas window.

y

【Input】 The position y relative to canvas window.

width

【Input】 width

height

【Input】 height

path

【Input】 path of GIF image

NULL

Failed

else

Pointer of GIF window

Instruction

3.29 XuiHasKey
Prototype

int XuiHasKey(void);

Function

Check whether the key value exists or not.

Parameters
Return

None
1

Yes

0

No

Instruction

3.30 XuiGetKey
Prototype

int XuiGetKey(void);

Function

Get the key.

Parameters
Return
Instruction

None
Key value.
This function won’t return until there is a key value.

3.31 XuiClearKey
Prototype

void XuiClearKey(void);

Function

Clear the key buffer.

Parameters

None

Return

None

PAX Computer Technology(Shenzhen)Co.,Ltd.

33

Prolin XUI Interface

Instruction

Clear the key buffer queue, this buffer is a dynamic linked list and the
length is not fixed.

3.32 XuiCaptureScreen
Prototype

XuiImg *XuiCaptureScreen(void);

Function

Capture the screen.

Parameters
Return
Instruction

None
NULL

Failed

else

Pointer of image

After calling this function, call XuiImgFree() to destroy the
screenshot.

3.33 XuiCaptureCanvas

Prototype

XuiImg *XuiCaptureCanvas(XuiWindow *window,
unsigned int x,
unsigned int y,
unsigned int width,
unsigned int height);

Function

Capture the canvas.

Parameters

Return

window

【Input】 canvas

x

【Input】

The starting position x relative to canvas
window

y

【Input】

The starting position y relative to canvas
window

width

【Input】 width

height

【Input】 height

NULL

Failed

else

Pointer of image

1.
2.
Instruction

3.
4.
5.

After using this interface, call XuiImgFree() to destroy the
canvas.
It will not capture the button on the canvas when capturing the
canvas.
It also applies to hidden canvas.
This function can generate images for printer.
Compare the parameter width (height) with the width (height) of
canvas, and the smaller value will be used as the width (height)

PAX Computer Technology(Shenzhen)Co.,Ltd.

34

Prolin XUI Interface

of the captured image.

3.34 XuiImgLoadFormFile
Prototype

XuiImg *XuiImgLoadFromFile(const char *file);

Function

Load the image from a file.

Parameters
Return
Instruction

file

【Input】 The file path.

NULL

Failed

else

Pointer of image

Currently it only supports images in bmp and png format.

3.35 XuiImgLoadFromMem

Prototype

XuiImg *XuiImgLoadFromMem(unsigned char *address,
unsigned long length,
int type);

Function

Load the image from the image data buffer.
address

【Input】 Address of the image data buffer

length

【Input】 Length of the image data buffer

type

Image data types.
【Input】 0 represents bmp data,
1 represents png data.

Parameters

Return
Instruction

NULL

Failed

else

Image pointer

Currently it only supports images in bmp and png format.

3.36 XuiImgSaveToFile
Prototype

int XuiImgSaveToFile(XuiImg *img,
const char *file);

Function

Save the image to a file.

Parameters

img

【Input】 Image pointer.

file

【Input】 The file path of the image to be saved.
Distinguish the different file types according to

PAX Computer Technology(Shenzhen)Co.,Ltd.

35

Prolin XUI Interface

suffixes. It supports suffixes of png, bmp
(24-bit true color), and mbmp (monochrome
bmp).
Return
Instruction

0

Success

<0

Failed

Currently it supports png, 24-bit true color bmp and monochrome
bmp, the suffix of monochrome bmp is mbmp.

3.37 XuiImgToRgba
Prototype

int XuiImgToRgba(XuiImg *img,
const char *rgba);

Function

Save the image to the rgba buffer.

Parameters

Return

img

【Input】 Image pointer

rgba

【Input】 rgba buffer.

0

Success

<0

Failed

1.
Instruction

2.

It does not check the buffer size, please allocate a buffer with
size of 4* width * height to save the image.
The parameter img must be a valid XuiImg pointer; this rule also
applies to the following functions.

3.38 XuiImgTransform
Prototype

int XuiImgTransform(XuiImg *img,
XuiTransform transform);

Function

Transform the image.
img

Parameters

Return

【Input】 Image pointer

transform 【Input】

Transform mode.
Details refer to the macro XuiTransform.

0

Success

<0

Failed

Instruction

PAX Computer Technology(Shenzhen)Co.,Ltd.

36

Prolin XUI Interface

3.39 XuiImgCompose
Prototype

XuiImg*

XuiImgCompose(XuiImg* img1,
XuiImg* img2,
unsigned int rate1,
unsigned int rate2,
int type);

Function

Parameters

Return

Instruction

Combine two XiuImg images.
img1

【Input】 Pointer to the buffer of first XuiImg image

img2

【Input】 Pointer to the buffer of second XuiImg image

rate1

【Input】 The ratio of the first image width

rate2

【Input】 The ratio of the second image width

type

【Input】

Reserved for future use, the default value is 0.

NULL

Failed

else

Pointer to the newly combined XuiImg image.

1. When the combined XuiImg image is no longer in use, call
XuiImgFree() to release the memory; otherwise, it will cause
memory leak.
2. The width and height of the img1 and img2 must be equal;
otherwise, combination will fail and NULL will be returned.
3. The sum of rate1 and rate2 must be equal to the width of img1 or
img2; otherwise, combination will fail and NULL will be
returned.

3.40 XuiImgFree
Prototype

void XuiImgFree(XuiImg *img);

Function

Destroy the image.

Parameters
Return

img

【Input】 Image pointer

None

PAX Computer Technology(Shenzhen)Co.,Ltd.

37

Prolin XUI Interface

Instruction

3.41 XuiSetStatusbarIcon
Prototype

int XuiSetStatusbarIcon(int index,
const char* path);

Function

Set the icon of status bar.

Parameters

Return

index

【Input】 The specified icon index, 0-7 from left to right.

path

Image path.
【Input】 When it is NULL, the icon will not be
displayed.

0

Success

-1

Failed

1.
Instruction

2.

It takes effect after setting STATUSBAR by the parameter argv
of XuiOpen(). (that is, the height of the status bar has been set)
When the path is NULL or wrong, the original icon will be
hidden.

3.42 XuiGetHzString

Prototype

int XuiGetHzString(XuiImeAttr attr,
char *outstr,
unsigned int maxlen,
unsigned int timeout);

Function

It is a Chinese inputting interface with the mnemonic function,
English letter and numeric character can also be inputted.

attr

Attributes of the input method, refer to the
structure XuiImeAttr.
Parameter specification:
All the pointers must be valid, such as
pointers of font and parent canvas and so
on;
【Input】
x and y can’t be negative;
12 < text_size < 40 ;
height
must
be
greater
than
4*(text_size+10);
The transparent background is not
supported.

outstr

【Input】 Store the input string (ending with ‘\0’)

Parameters

PAX Computer Technology(Shenzhen)Co.,Ltd.

38

Prolin XUI Interface

Return

maxlen

【Input】

The maximum length of the input string (the
maximum is 1024 bytes)

timeout

【Input】

Timeout value,
【unit:second】.

0x00

Success

0xFE

Invalid parameter.

0xFD

Timeout

1.
2.
3.

Instruction

4.

5.
6.
7.

0

means

no

timeout.

Press key 【 Alpha 】 to switch input methods among
“PinYin-Chinese”, “uppercase”, “lowercase” and “area code”.
Input area code. Users can input Chinese character according to
the code in the mode of “area code” inputting.
Input Chinese. Press the corresponding numeric key in turn in the
mode of “PinYin-Chinese” inputting. For example, inputting the
Chinese character “中”, users should input “1466” successively,
then press 【Enter】and key 【1】 to select the “中”.
Input alphabet. Press letter in the mode of “Abc” inputting, and it
will display on the screen, turn pages by pressing【Enter】, then
select the target character. For example, if you press key【1】
twice in succession, character “Q” will be inputted.
Input number. Press number in the mode of “123” inputting, then
it will display on the screen.
Press key【Clear】to clear the inputted characters.
After inputting, press【Cancel】to exit the input method, and the
inputted character can be obtained from the parameter OutStr.

3.43 XuiGetString

Prototype

int XuiGetString(XuiGetStrAttr attr,
char *outstr,
unsigned char mode,
int minlen,
int maxlen);

Function

Input the character string and display it on the screen with the
specified mode, the character string can be letter, amount or password
etc.

Parameters

Attributes of inputting string, details refer to
structure XuiGetStrAttr.

attr

【Input】

outstr

【Input】 Store the input string (ending with ‘‗\0’)

mode

【Input】

PAX Computer Technology(Shenzhen)Co.,Ltd.

D7 1(0) reserved
D6 1(0) reserved
39

Prolin XUI Interface

D5 1(0) whether to input number
D4 1(0) whether to input letter
D3
1(0)
whether to display the
ciphertext as ‘*’
D2 1(0) left(right)-aligned input
D1
1(0)
whether the string has a
decimal point
D0 1(0) reserved

Return

Minlen

【Input】 The minimum length of the input string.

maxlen

【Input】

The maximum length of the input string (the
maximum value is 128 bytes)

0x00

Input successfully

0xFE

Invalid parameter value (including the mode
value is invalid; MaxLen =0; and the initial
digital string is invalid.)

0xFD

Input timeout (120 seconds, and this value
can’t be modified.)

Instruction

3.44 XuiBidiStrdup
Prototype

char * XuiBidiStrdup(const char *str);

Function

To do the string conversion for Arabic and Hebrew string characters,
and display the Arabic and Hebrew string characters.

Parameters str

Return

Instruction

【Input】

The UTF-8 coding string character that needs
conversion.

NULL

Conversion failed, parameter str is invalid.

a string

The converted UTF-8 coding string character.

When displaying Arabic and Hebrew characters, the contents need to
be converted by this interface. Call XuiCanvasDrawText() after
conversion to display the string as follows:
char* hebrew_text=NULL;
hebrew_text = XuiBidiStrdup("‫;)"אותך אוהב אני‬
//I love you.
XuiCanvasDrawText(XuiRootCanvas(), XUI_RIGHT_X(10, 220,
XuiTextWidth(font_simsun_0, 25, hebrew_text)), 260, 25,
font_simsun_0,0, color_text, hebrew_text);

PAX Computer Technology(Shenzhen)Co.,Ltd.

40

Prolin XUI Interface

1.

The Arabic and Hebrew string character will be displayed from
right to left. Macro XUI_RIGHT_X can be used to display
character in right alignment.
2. This function is similar to strdup. The return value is stored in the
memory assigned by function, and the memory needs to be
released after using it; otherwise, it will cause memory leak.
bidistr= XuiBidiStrdup(str);
if(bidistr) free(bidistr);

3.45 XuiCanvasAnimation

Prototype

int XuiCanvasAnimation(XuiWindow *front,
XuiWindow *background,
unsigned int front_rate,
unsigned int background_rate,
int type);

Function

Create switching animations of two XuiWindows.
front

【Input】 XuiWindow before switching

background【Input】 XuiWindow after switching
front_rate 【Input】
Parameters

background_rate
【Input】

type

Return

Instruction

【Input】

The ratio of front window on the display
window during the switch process.
The ratio of background window on the display
window during the switch process.
The animation type used during the switch
process.
For more information,
XuiAnimationType

0

Success

<0

Failed

please

refer

to

1. This function is used for switching the windows in the form of
animation, currently animation supports up/down/left/right
translation and scaling.

PAX Computer Technology(Shenzhen)Co.,Ltd.

41

Prolin XUI Interface

2. When switching the two windows in the form of animation, these
two windows need to be displayed on the mirror first, that is,
calling XuiShowWindow() with XUI_SHOW_MIRROR mode.
3. This function only applies to Prolin-cygnus-2.6.

3.46 XuiGetGesture
Prototype

int XuiGetGesture(XuiGesture* gesture);

Function

Get gesture event.

Parameters

gesture【Output】

Gesture type, refer to structure XuiGesture.

1

Gesture event exists in current state.

<= 0

Gesture event doesn’t exist in current state.

Return

Instruction

1. The current supported gesture event types are up/down/left/right
slide, translation and scaling.
2. This function only applies to Prolin-cygnus-2.6.

3.47 XuiSetGestureRect

Prototype

int XuiSetGestureRect(unsigned int x,
unsigned int y,
unsigned int width,
unsigned int height);

Function

Set the corresponding area of gesture event.

Parameters

Return

Instruction

x

【Input】

x coordinate of the gesture corresponding area.

y

【Input】

y coordinate of the gesture corresponding area.

width

【Input】

The width of the corresponding area.

height 【Input】

The height of the corresponding area.

0

Success

<0

Failed.

1. This function is called in combination with XuiGetGesture().

PAX Computer Technology(Shenzhen)Co.,Ltd.

42

Prolin XUI Interface

2. This function only applies to Prolin-cygnus-2.6.

3.48 XuiClearGesture
Prototype

void XuiClearGesture(void);

Function

Clear gesture event.

Parameters None
Return
Instruction

None
This function only applies to Prolin-cygnus-2.6.

3.49 XuiShowSoftKeyboard
Prototype

int XuiShowSoftKeyboard(int type,
int show);

Function

Show or hide input/password soft keyboard.
Soft keyboard type:
type

【Input】 0 means input soft keyboard;
1 means password soft keyboard.

Parameters
show

Return

Instruction

【Input】

1-show
0-hide

0

Success

<0

Failed

When showing input soft keyboard, the password soft keyboard will be
automatically hidden (if it is showing). When showing password soft
keyboard, the input soft keyboard will be hidden too (if it is showing).
This function only applies to the POS terminal with touch screen.

PAX Computer Technology(Shenzhen)Co.,Ltd.

43

Prolin XUI Interface

4 Note

4.1 Multi-process
Currently, XUI does not support multi-process, because they will preempt screen when
running at the same time. (Multiple processes will respond to key pressing and touch duration
at the same time, and showing the windows on the screen inconsistently.)
If multiple processes need to run at the same time, users can implement it by remote calling.
Use a main process to manage the screen and create a canvas for each process to implement
screen switches of the multiple processes.

4.2 XuiDestroyWindow
Note that when calling XuiDestroyWindow() to destroy the window, other resources used by
the window have not been destroyed . So destroy window firstly and then resource (such as
image, font) followed.
Please abide to this principle: the former created canvas windows should be destroyed after
the latter created canvas windows. For example:
The right way to destroy:
/*Create*/
font_simsun_0 = XuiCreateFont ("./res/fallback.ttf", 0, 0);
img_bg = XuiImgLoadFromFile ("./res/bg.png");
btn = XuiCreateButton(XuiRootCanvas(), 10, 50, 220, 30);
/*Destroy*/
XuiDestroyWindow(btn);
PAX Computer Technology(Shenzhen)Co.,Ltd.

44

Prolin XUI Interface

XuiImgFree(img_bg);
XuiDestroyFont(font_simsun_0);

The wrong way to destroy:
/*Create*/
font_simsun_0 = XuiCreateFont ("./res/fallback.ttf", 0, 0);
img_bg = XuiImgLoadFromFile ("./res/bg.png");
btn = XuiCreateButton(XuiRootCanvas(), 10, 50, 220, 30);
/*Destroy*/
XuiImgFree(img_bg);
XuiDestroyFont(font_simsun_0);
XuiDestroyWindow(btn);

PAX Computer Technology(Shenzhen)Co.,Ltd.

45

Prolin XUI Interface

5 FAQ

1.

The root canvas exists after opening the XUI, so can the root canvas be gotten by calling
XuiRootCanvas()? Can the root canvas be destroyed?

Answer: Users can call XuiRootCanvas() to get the root canvas which cannot be destroyed.
In addition, if the status bar has been set in XuiOpen(), and the status bar canvas exists after
calling the XuiOpen(), users can directly get the status bar canvas by XuiStatusbarCanvas(),
and the canvas cannot be destroyed.

2.

Does XUI support canvas nesting? For example, Root canvas-> sub-canvas 1 ->
sub-canvas 2-> sub-canvas 3-> ... -> sub-canvas N? Is there a limit to N?

Answer: Yes, it supports nesting and there is no limit to N. But users need to manage
XuiWondow pointer of each canvas and not to mix them up. Follow the principle to destroy
windows: the former created canvas windows should be destroyed after the latter created
canvas windows.

3.

Does the canvas support using the ShowWindow to display?

Answer: Yes, it does.

4.

Does DestoryWindow() need to be called to release the signature board?

Answer: Yes, it does. All the returning type of XuiWindow* need to be destroyed except
XuiRootCanvas() and XuiStatusbarCanvas(), since they will be destroyed automatically.
PAX Computer Technology(Shenzhen)Co.,Ltd.

46

Prolin XUI Interface

5.

When displaying images, how to adjust the image size? Stretch or fill?

Answer: Do not stretch. If the image size is larger than the display area, it only displays the
part which is in the area. If the image size is smaller than the display area, the blank space will
be filled with the background color.

6.

When calling ClearArea(), does it only clear contents in the upmost layer or all the
layers? Or it is just a form of covering the area with background color?

Answer: It depends on the parameter XuiWindow *window, user can specify the canvas
pointer of the layer that needs to be cleared, and the canvas background color will be
displayed when clearing the canvas.

PAX Computer Technology(Shenzhen)Co.,Ltd.

47

Prolin XUI Interface

Prolin XUI Interface

PAX Computer Technology(Shenzhen)Co.,Ltd.

48



Source Exif Data:
File Type                       : PDF
File Type Extension             : pdf
MIME Type                       : application/pdf
Linearized                      : No
Page Count                      : 56
PDF Version                     : 1.4
Title                           : Prolin XUI Interface
Author                          : wangfen
Subject                         : V2.0.7
Producer                        : Mac OS X 10.11.5 Quartz PDFContext
Creator                         : Microsoft® Office Word 2007
Create Date                     : 2016:09:28 14:19:45Z
Modify Date                     : 2016:09:28 14:19:45Z
EXIF Metadata provided by EXIF.tools

Navigation menu