160 lines
7.7 KiB
C
Executable File
160 lines
7.7 KiB
C
Executable File
/***************************************************************************************
|
|
*
|
|
* WRITEPAD(r): Handwriting Recognition Engine (HWRE) and components.
|
|
* Copyright (c) 2001-2017 PhatWare (r) Corp. All rights reserved.
|
|
*
|
|
* Licensing and other inquires: <developer@phatware.com>
|
|
* Developer: Stan Miasnikov, et al. (c) PhatWare Corp. <http://www.phatware.com>
|
|
*
|
|
* WRITEPAD HWRE is free software: you can redistribute it and/or modify
|
|
* it under the terms of the GNU General Public License as published by
|
|
* the Free Software Foundation, either version 3 of the License, or
|
|
* (at your option) any later version.
|
|
*
|
|
* THE MATERIAL EMBODIED ON THIS SOFTWARE IS PROVIDED TO YOU "AS-IS"
|
|
* AND WITHOUT WARRANTY OF ANY KIND, EXPRESS, IMPLIED OR OTHERWISE,
|
|
* INCLUDING WITHOUT LIMITATION, ANY WARRANTY OF MERCHANTABILITY OR
|
|
* FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL PHATWARE CORP.
|
|
* BE LIABLE TO YOU OR ANYONE ELSE FOR ANY DIRECT, SPECIAL, INCIDENTAL,
|
|
* INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY KIND, OR ANY DAMAGES WHATSOEVER,
|
|
* INCLUDING WITHOUT LIMITATION, LOSS OF PROFIT, LOSS OF USE, SAVINGS
|
|
* OR REVENUE, OR THE CLAIMS OF THIRD PARTIES, WHETHER OR NOT PHATWARE CORP.
|
|
* HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH LOSS, HOWEVER CAUSED AND ON
|
|
* ANY THEORY OF LIABILITY, ARISING OUT OF OR IN CONNECTION WITH THE
|
|
* POSSESSION, USE OR PERFORMANCE OF THIS SOFTWARE.
|
|
* See the GNU General Public License for more details.
|
|
*
|
|
* You should have received a copy of the GNU General Public License
|
|
* along with WritePad. If not, see <http://www.gnu.org/licenses/>.
|
|
*
|
|
**************************************************************************************/
|
|
|
|
#ifndef __ink_wrapper_h__
|
|
#define __ink_wrapper_h__
|
|
|
|
#include <stdio.h>
|
|
#include "RecognizerApi.h"
|
|
|
|
#define LF_FONT_BOLD 0x00000001
|
|
#define LF_FONT_ITALIC 0x00000002
|
|
#define LF_FONT_UNDERSCORE 0x00000004
|
|
#define LF_FONT_STRIKE 0x00000008
|
|
|
|
#define OBJECTFLAG_POSITIONLOCKED 0x00010000
|
|
#define OBJECTFLAG_SIZELOCKED 0x00020000
|
|
#define OBJECTFLAG_CONTENTLOCKED 0x00040000
|
|
#define OBJECTFLAG_LOCKED 0x00070000
|
|
#define OBJECTFLAG_GROUPED 0x00100000
|
|
|
|
#if defined(__cplusplus)
|
|
extern "C"
|
|
{
|
|
#endif
|
|
|
|
typedef void * INK_DATA_PTR;
|
|
|
|
typedef struct __ImageAttributes
|
|
{
|
|
CGRect imagerect;
|
|
int iZOrder;
|
|
int nIndex;
|
|
void * pData;
|
|
UInt32 nDataSize;
|
|
void * userData;
|
|
UInt32 flags;
|
|
} ImageAttributes;
|
|
|
|
typedef struct __TextAttributes
|
|
{
|
|
CGRect textrect;
|
|
int iZOrder;
|
|
int nIndex;
|
|
LPCUSTR pUnicodeText;
|
|
UInt32 nTextLength;
|
|
LPUSTR pFontName;
|
|
int fontSize;
|
|
UInt32 fontAttributes;
|
|
UInt32 alignment;
|
|
COLORREF fontColor;
|
|
COLORREF backColor;
|
|
void * userData;
|
|
UInt32 flags;
|
|
} TextAttributes;
|
|
|
|
// Ink data API
|
|
INK_DATA_PTR INK_InitData();
|
|
void INK_FreeData( INK_DATA_PTR pData );
|
|
void INK_Erase( INK_DATA_PTR pData );
|
|
int INK_StrokeCount( INK_DATA_PTR pData, BOOL selectedOnly );
|
|
BOOL INK_DeleteStroke( INK_DATA_PTR pData, int nStroke );
|
|
SHAPETYPE INK_RecognizeShape( CGStroke pStroke, int nStrokeCnt, SHAPETYPE inType );
|
|
int INK_AddStroke( INK_DATA_PTR pData, CGStroke pStroke, int nStrokeCnt, float fWidth, COLORREF color );
|
|
int INK_GetStroke( INK_DATA_PTR pData, int nStroke, CGPoint ** ppoints, float * pfWidth, COLORREF * color );
|
|
int INK_GetStrokeP( INK_DATA_PTR pData, int nStroke, CGStroke * ppoints, float * pfWidth, COLORREF * pColor );
|
|
BOOL INK_GetStrokeRect( INK_DATA_PTR pData, int nStroke, CGRect * rect, BOOL bAddWidth );
|
|
BOOL INK_GetDataRect( INK_DATA_PTR pData, CGRect * rect, BOOL selectedOnly );
|
|
int INK_AddEmptyStroke( INK_DATA_PTR pData, float fWidth, COLORREF color );
|
|
int INK_AddPixelToStroke( INK_DATA_PTR pData, int nStroke, float x, float y, int p );
|
|
BOOL INK_GetStrokePointP( INK_DATA_PTR pData, int nStroke, int nPoint, float * pX, float * pY, int *pP );
|
|
BOOL INK_GetStrokePoint( INK_DATA_PTR pData, int nStroke, int nPoint, float * pX, float * pY );
|
|
INK_DATA_PTR INK_CreateCopy( INK_DATA_PTR pData );
|
|
void INK_SortInk( INK_DATA_PTR pData );
|
|
void INK_Undo( INK_DATA_PTR pData );
|
|
void INK_Redo( INK_DATA_PTR pData );
|
|
void INK_EnableUndo( INK_DATA_PTR pData, BOOL enable );
|
|
BOOL INK_CanRedo( INK_DATA_PTR pData );
|
|
BOOL INK_CanUndo( INK_DATA_PTR pData );
|
|
BOOL INK_SelectAllStrokes( INK_DATA_PTR pData, BOOL bSelect );
|
|
BOOL INK_DeleteSelectedStrokes( INK_DATA_PTR pData, BOOL bAll );
|
|
void INK_SetStrokesRecognizable( INK_DATA_PTR pData, BOOL bSet, BOOL bSelectedOnly );
|
|
void INK_SetStrokeRecognizable( INK_DATA_PTR pData, int nStroke, BOOL bSet );
|
|
void INK_SelectStroke( INK_DATA_PTR pData, int nStroke, BOOL bSelect );
|
|
BOOL INK_IsStrokeRecognizable( INK_DATA_PTR pData, int nStroke );
|
|
BOOL INK_IsStrokeSelected( INK_DATA_PTR pData, int nStroke );
|
|
void INK_SetUndoLevels( INK_DATA_PTR pData, int levels );
|
|
int INK_Serialize( INK_DATA_PTR pData, BOOL bWrite, FILE * pFile, void ** ppData, long * pcbSize, BOOL skipImages, BOOL savePressure );
|
|
BOOL INK_Paste( INK_DATA_PTR pData, const void * pRawData, long cbSize, CGPoint atPosition );
|
|
BOOL INK_Copy( INK_DATA_PTR pData, void ** ppRawData, long * pcbSize );
|
|
BOOL INK_MoveStroke( INK_DATA_PTR pData, int nStroke, float xOffset, float yOffset, CGRect * pRect, BOOL recordUndo );
|
|
void INK_ChangeSelZOrder( INK_DATA_PTR pData, int iDepth, BOOL bFwd );
|
|
BOOL INK_IsShapeRecognitionEnabled( INK_DATA_PTR pData );
|
|
void INK_EnableShapeRecognition( INK_DATA_PTR pData, BOOL bEnable );
|
|
int INK_FindStrokeByPoint( INK_DATA_PTR pData, CGPoint thePoint, float proximity );
|
|
int INK_SelectStrokesInRect( INK_DATA_PTR pData, CGRect selRect );
|
|
void INK_EmptyUndoBuffer( INK_DATA_PTR pData );
|
|
BOOL INK_CurveIntersectsStroke( INK_DATA_PTR pData, int nStroke, const CGStroke points, int nPointCount );
|
|
BOOL INK_SetStrokeWidthAndColor( INK_DATA_PTR pData, int nStroke, COLORREF color, float fWidth );
|
|
int INK_DeleteIntersectedStrokes( INK_DATA_PTR pData, const CGStroke points, int nPointCount );
|
|
BOOL INK_ResizeStroke( INK_DATA_PTR pData, int nStroke, float x0, float y0, float scalex, float scaley, BOOL bReset, CGRect * pRect, BOOL recordUndo );
|
|
|
|
int INK_GetStrokeZOrder( INK_DATA_PTR pData, int nStroke );
|
|
BOOL INK_SetStrokeZOrder( INK_DATA_PTR pData, int nStroke, int iZOrder );
|
|
|
|
// image support
|
|
int INK_AddImage( INK_DATA_PTR pData, const ImageAttributes * pImage );
|
|
int INK_SetImage( INK_DATA_PTR pData, int nImageIndex, const ImageAttributes * pImage );
|
|
BOOL INK_SetImageUserData( INK_DATA_PTR pData, int nImageIndex, void * userData );
|
|
BOOL INK_DeleteImage( INK_DATA_PTR pData, int nImageIndex );
|
|
BOOL INK_GetImage( INK_DATA_PTR pData, int nImageIndex, ImageAttributes * pAttrib );
|
|
int INK_GetImageFromPoint( INK_DATA_PTR pData, CGPoint point, ImageAttributes * pAttrib );
|
|
BOOL INK_DeleteAllImages( INK_DATA_PTR pData );
|
|
int INK_CountImages( INK_DATA_PTR pData );
|
|
BOOL INK_SetImageFrame( INK_DATA_PTR pData, int nImageIndex, CGRect frame );
|
|
|
|
// text support
|
|
BOOL INK_AddText( INK_DATA_PTR pData, const TextAttributes * pText );
|
|
BOOL INK_SetText( INK_DATA_PTR pData, int nTextIndex, const TextAttributes * pText );
|
|
BOOL INK_SetTextUserData( INK_DATA_PTR pData, int nTextIndex, void * userData );
|
|
BOOL INK_DeleteText( INK_DATA_PTR pData, int nTextIndex );
|
|
BOOL INK_GetText( INK_DATA_PTR pData, int nTextIndex, TextAttributes * pText );
|
|
int INK_GetTextFromPoint( INK_DATA_PTR pData, CGPoint point, TextAttributes * pText );
|
|
BOOL INK_DeleteAllTexts( INK_DATA_PTR pData, BOOL bRecordUndo );
|
|
int INK_CountTexts( INK_DATA_PTR pData );
|
|
BOOL INK_SetTextFrame( INK_DATA_PTR pData, int nTextIndex, CGRect frame );
|
|
|
|
#if defined(__cplusplus)
|
|
}
|
|
#endif
|
|
|
|
#endif
|