Data Structures | Defines | Typedefs | Enumerations | Functions | Variables

smt.h File Reference

This header defines the structs, constants, Types and registers of the SMT multi-touch library. More...

#include <stdio.h>
#include <string.h>
#include <assert.h>
#include <math.h>

Go to the source code of this file.

Data Structures

struct  tagTOUCHBLOB
struct  tagTOUCHEVENT

Defines

#define _SMT_H_
#define DEFAULT_NCOL_SENSOR   640
#define DEFAULT_NROW_SENSOR   480
#define DEFAULT_NCOL_PROC   320
#define DEFAULT_NROW_PROC   240
#define MAX_COORD   100
#define MAXCOL   640
#define MAXROW   480
#define MAXFILTERSIZE   10
#define MAXTOUCH   100
#define MAX_EVENT   100
#define SWIPE_LEFT   1
#define SWIPE_RIGHT   2
#define SWIPE_UP   3
#define SWIPE_DOWN   4

Typedefs

typedef struct tagTOUCHBLOB TOUCHBLOB
typedef struct tagTOUCHEVENT TOUCHEVENT

Enumerations

enum  TOUCH_EVENTS {
  E_NOEVENT, E_FINGER_DOWN, E_FINGER_UP, E_FINGER_MOVE,
  E_FINGER_DRAG, E_TOUCH_START, E_TAP, E_RIGHT_TAP,
  E_DOUBLE_TAP, E_FINGER_HOLD, E_TOUCH_END, E_ROTATE,
  E_SCALE, E_FLICK, E_NFINGER_MOVE, E_NFINGER_SWIPE,
  E_NFINGER_TAP
}
enum  TOUCH_STATES {
  TSTATE_IDLE, TSTATE_DOUBLE_TAP, TSTATE_UP, TSTATE_INITPRESS,
  TSTATE_MULTITOUCH, TSTATE_DOWN, TSTATE_DRAG, TSTATE_HOLD
}

Functions

void initsmt (void)
void setoffset (void)
void runsmt (void)
void preprocessing (void)
void cclabel (void)
void blobprops (void)
void identtouch (void)
void tracktouch (void)
void gonext (void)
void runsmtwin32 (int *x, int *y, int ntouch)
void gesture_recognition (void)
int flick (void)
int rotate (void)
int scale (void)
void state_machine (void)
void initeventlist (void)
void notifyevent (int eventid, TOUCHBLOB *touch, TOUCHEVENT *tevent, int event_index, float x, float y, float dx, float dy, int num_touch, int info)
void initblob (TOUCHBLOB *b)
void copyblob (TOUCHBLOB *src, TOUCHBLOB *dest)
void addtouch (int x, int y)
void event_to_string (char *s, int e)
void savesnapshot (void)
void copyeventlist (TOUCHEVENT *src, TOUCHEVENT *dst, int n)
void computecaliparams (float *x, float *y, float *xd, float *yd, float *cali)
float computecalipos (float x, float y, float a, float b, float c)
float linearscale (float x, float min_x, float max_x, float min_y, float max_y)
int iminarray (int *x, int n)
int imaxarray (int *x, int n)
float fminarray (float *x, int n)
float fmaxarray (float *y, int n)
float favgarray (int *x, int n)
int computedist2 (int x1, int y1, int x2, int y2)
void meanfilter (int *Iy, int *Ix, int numrow, int numcol, int n)
void meanfilter_threshold (int *Iy, int *Ix, int numrow, int numcol, int n, int apply_filter_threshold)
unsigned int uimin (unsigned int x, unsigned int y)
unsigned int uimax (unsigned int x, unsigned int y)
void imresizenearest (int *x, int nrowx, int ncolx, int *y, int nrowy, int ncoly)
void imresizebilinear (int *x, int nrowx, int ncolx, int *y, int nrowy, int ncoly)
void imresizebicubic (int *x, int nrowx, int ncolx, int *y, int nrowy, int ncoly)
float interpcc (float v1, float v2, float v3, float v4, float d)
int ilimit (int x, int l, int u)
float flimit (float x, float l, float u)
float ucmse (unsigned char *x, unsigned char *y, int n)
float fpower (float a, int b)
void icopyarray (int *src, int *dst, int nlength)
void savearray (FILE *fp, const char *filename, int *x, int n)
unsigned char ucminarray (unsigned char *x, int n)
signed char scminarray (signed char *x, int n)
unsigned char ucmaxarray (unsigned char *y, int n)
void cwise2rwise (int *src, int *dst, int row, int col)
void rwise2cwise (int *src, int *dst, int row, int col)
void backgroundfiltering (unsigned char *src, unsigned char *dst, int row, int col)

Variables

int mt_do_smoothing
int mt_do_highpass
int mt_do_smoothing2
int mt_ncol_sensor
 original size of sensor (of columns of camera or pad)
int mt_nrow_sensor
 original size of sensor (of rows of camera or pad)
int mt_ncol_proc
int mt_nrow_proc
int mt_sensor_data [MAXCOL *MAXROW]
int mt_sensor_data_temp [MAXCOL *MAXROW]
int mt_resized [MAXCOL *MAXROW]
int mt_offset [MAXCOL *MAXROW]
int mt_diff [MAXCOL *MAXROW]
 After background filter.
int mt_smoothing [MAXCOL *MAXROW]
int mt_highpass [MAXCOL *MAXROW]
int mt_highpass_smoothing [MAXCOL *MAXROW]
 Edge detection. Useful for DI system.
float mt_amplification [MAXCOL *MAXROW]
int mt_BW [MAXCOL *MAXROW]
int mt_LABEL [MAXCOL *MAXROW]
 Labeling result.
int mt_nevent
 number of events for current time
int mt_noldevent
 number of old events
int mt_ntouch
 number of valid touches
int mt_nlabel
 number of blobs
int mt_noldtouch
 number of previous valid touches
int mt_masksize
 Filter size of smoothing filter.
int mt_masksize1
 Filter size of edge detection filter.
float mt_min_amplification_range
float mt_max_amplification_range
int mt_npower
int mt_max_sensor
 Max value of sensor data, usually 255.
int mt_bwthreshold1
 Obsolete.
int mt_bwthreshold2
 Upper bound of amplification result.
int mt_th_min_area
int mt_th_max_area
 mt_th_min_area < VALID_TOUCH_SIZE < mt_th_max_area
float mt_th_dist2
 Threshold to determine if a touch point moves or not.
int mt_angle
float mt_scale
int mt_oldangle
float mt_oldscale
float mt_xmin_n
float mt_xmax_n
float mt_ymin_n
float mt_ymax_n
int mt_id_ex
 counter to assign id_ex to a touch point
TOUCHBLOB BLOBS [MAXTOUCH]
TOUCHBLOB TOUCH [MAXTOUCH]
TOUCHBLOB OLD_TOUCH [MAXTOUCH]
TOUCHEVENT EVENTLIST [MAX_EVENT]
TOUCHEVENT EVENTLIST_OLD [MAX_EVENT]
float mt_calibration_params [6]

Detailed Description

This header defines the structs, constants, Types and registers of the SMT multi-touch library.

Version:
0.1.0
Date:
N/A

Define Documentation

#define _SMT_H_
#define DEFAULT_NCOL_PROC   320
#define DEFAULT_NCOL_SENSOR   640
#define DEFAULT_NROW_PROC   240
#define DEFAULT_NROW_SENSOR   480
#define MAX_COORD   100
#define MAX_EVENT   100
#define MAXCOL   640
#define MAXFILTERSIZE   10
#define MAXROW   480
#define MAXTOUCH   100
#define SWIPE_DOWN   4
#define SWIPE_LEFT   1
#define SWIPE_RIGHT   2
#define SWIPE_UP   3

Typedef Documentation

typedef struct tagTOUCHBLOB TOUCHBLOB
typedef struct tagTOUCHEVENT TOUCHEVENT

Enumeration Type Documentation

Enumerator:
E_NOEVENT 
E_FINGER_DOWN 
E_FINGER_UP 
E_FINGER_MOVE 
E_FINGER_DRAG 
E_TOUCH_START 
E_TAP 
E_RIGHT_TAP 
E_DOUBLE_TAP 
E_FINGER_HOLD 
E_TOUCH_END 
E_ROTATE 
E_SCALE 
E_FLICK 
E_NFINGER_MOVE 
E_NFINGER_SWIPE 
E_NFINGER_TAP 
Enumerator:
TSTATE_IDLE 
TSTATE_DOUBLE_TAP 
TSTATE_UP 
TSTATE_INITPRESS 
TSTATE_MULTITOUCH 
TSTATE_DOWN 
TSTATE_DRAG 
TSTATE_HOLD 

Function Documentation

void addtouch ( int  x,
int  y 
)
void backgroundfiltering ( unsigned char *  src,
unsigned char *  dst,
int  row,
int  col 
)
void blobprops ( void   )
void cclabel ( void   )
void computecaliparams ( float *  x,
float *  y,
float *  xd,
float *  yd,
float *  cali 
)
float computecalipos ( float  x,
float  y,
float  a,
float  b,
float  c 
)
int computedist2 ( int  x1,
int  y1,
int  x2,
int  y2 
)
void copyblob ( TOUCHBLOB src,
TOUCHBLOB dest 
)
void copyeventlist ( TOUCHEVENT src,
TOUCHEVENT dst,
int  n 
)
void cwise2rwise ( int *  src,
int *  dst,
int  row,
int  col 
)
void event_to_string ( char *  s,
int  e 
)
float favgarray ( int *  x,
int  n 
)
int flick ( void   )
float flimit ( float  x,
float  l,
float  u 
)
float fmaxarray ( float *  y,
int  n 
)
float fminarray ( float *  x,
int  n 
)
float fpower ( float  a,
int  b 
)
void gesture_recognition ( void   )
void gonext ( void   )
void icopyarray ( int *  src,
int *  dst,
int  nlength 
)
void identtouch ( void   )
int ilimit ( int  x,
int  l,
int  u 
)
int imaxarray ( int *  x,
int  n 
)
int iminarray ( int *  x,
int  n 
)
void imresizebicubic ( int *  x,
int  nrowx,
int  ncolx,
int *  y,
int  nrowy,
int  ncoly 
)
void imresizebilinear ( int *  x,
int  nrowx,
int  ncolx,
int *  y,
int  nrowy,
int  ncoly 
)
void imresizenearest ( int *  x,
int  nrowx,
int  ncolx,
int *  y,
int  nrowy,
int  ncoly 
)
void initblob ( TOUCHBLOB b )
void initeventlist ( void   )
void initsmt ( void   )
float interpcc ( float  v1,
float  v2,
float  v3,
float  v4,
float  d 
)
float linearscale ( float  x,
float  min_x,
float  max_x,
float  min_y,
float  max_y 
)
void meanfilter ( int *  Iy,
int *  Ix,
int  numrow,
int  numcol,
int  n 
)
void meanfilter_threshold ( int *  Iy,
int *  Ix,
int  numrow,
int  numcol,
int  n,
int  apply_filter_threshold 
)
void notifyevent ( int  eventid,
TOUCHBLOB touch,
TOUCHEVENT tevent,
int  event_index,
float  x,
float  y,
float  dx,
float  dy,
int  num_touch,
int  info 
)
void preprocessing ( void   )
int rotate ( void   )
void runsmt ( void   )
void runsmtwin32 ( int *  x,
int *  y,
int  ntouch 
)
void rwise2cwise ( int *  src,
int *  dst,
int  row,
int  col 
)
void savearray ( FILE *  fp,
const char *  filename,
int *  x,
int  n 
)
void savesnapshot ( void   )
int scale ( void   )
signed char scminarray ( signed char *  x,
int  n 
)
void setoffset ( void   )
void state_machine ( void   )
void tracktouch ( void   )
unsigned char ucmaxarray ( unsigned char *  y,
int  n 
)
unsigned char ucminarray ( unsigned char *  x,
int  n 
)
float ucmse ( unsigned char *  x,
unsigned char *  y,
int  n 
)
unsigned int uimax ( unsigned int  x,
unsigned int  y 
)
unsigned int uimin ( unsigned int  x,
unsigned int  y 
)

Variable Documentation

TOUCHBLOB BLOBS[MAXTOUCH]
TOUCHEVENT EVENTLIST[MAX_EVENT]
float mt_amplification[MAXCOL *MAXROW]
int mt_angle
int mt_BW[MAXCOL *MAXROW]

Obsolete.

Upper bound of amplification result.

int mt_diff[MAXCOL *MAXROW]

After background filter.

int mt_highpass[MAXCOL *MAXROW]
int mt_highpass_smoothing[MAXCOL *MAXROW]

Edge detection. Useful for DI system.

int mt_id_ex

counter to assign id_ex to a touch point

int mt_LABEL[MAXCOL *MAXROW]

Labeling result.

Filter size of smoothing filter.

Filter size of edge detection filter.

Max value of sensor data, usually 255.

original size of sensor (of columns of camera or pad)

int mt_nevent

number of events for current time

int mt_nlabel

number of blobs

number of old events

number of previous valid touches

int mt_npower

original size of sensor (of rows of camera or pad)

int mt_ntouch

number of valid touches

int mt_offset[MAXCOL *MAXROW]
float mt_oldscale
int mt_resized[MAXCOL *MAXROW]
float mt_scale
int mt_sensor_data[MAXCOL *MAXROW]
int mt_sensor_data_temp[MAXCOL *MAXROW]
int mt_smoothing[MAXCOL *MAXROW]
float mt_th_dist2

Threshold to determine if a touch point moves or not.

mt_th_min_area < VALID_TOUCH_SIZE < mt_th_max_area

float mt_xmax_n
float mt_xmin_n
float mt_ymax_n
float mt_ymin_n
TOUCHBLOB OLD_TOUCH[MAXTOUCH]
TOUCHBLOB TOUCH[MAXTOUCH]
 All Data Structures Files Functions Variables Typedefs Enumerations Enumerator Defines