#else
#define LIBEDITTEXT_API_CURSORAPI extern
#endif
+
+#define LibEditText_ForwardCursor(m,n) LibEditText_MoveRightCursor((m),(n),1)
+#define LibEditText_BackCursor(m,n) LibEditText_MoveLeftCursor((m),(n),1)
+#define LibEditText_UpCursor(m,n) LibEditText_MoveUpCursor((m),(n),1)
+#define LibEditText_DownCursor(m,n) LibEditText_MoveDownCursor((m),(n),1)
+
+LIBEDITTEXT_API_CURSORAPI
+ int LibEditText_MoveUpCursor( int i_tinfoid, int i_curid, DWord dw_lines );
+LIBEDITTEXT_API_CURSORAPI
+ int LibEditText_MoveDownCursor( int i_tinfoid, int i_curid, DWord dw_lines );
+LIBEDITTEXT_API_CURSORAPI
+ int LibEditText_MoveRightCursor( int i_tinfoid, int i_curid, DWord dw_len );
+LIBEDITTEXT_API_CURSORAPI
+ int LibEditText_MoveLeftCursor( int i_tinfoid, int i_curid, DWord dw_len );
LIBEDITTEXT_API_CURSORAPI
int LibEditText_JumpCursor( int i_tinfoid, int i_curid, DWord dw_line );
LIBEDITTEXT_API_CURSORAPI
DeleteString
DeleteChar
JoinLine
- MoveCursor(Right)
- MoveCursor(Left)
- MoveCursor(Up)
- MoveCursor(Down)
+ EndCursor(End)
+ StartCursor(Start)
+ * MoveCursor(Right)
+ * MoveCursor(Left)
+ * MoveCursor(Up)
+ * MoveCursor(Down)
* JumpCursor
* AllocCursor
* FreeCursor
/***********************************************************************
***********************************************************************/
+/*LIBEDITTEXT_API_CURSORAPI
+int
+ LibEditText_MoveEndCursor(
+ int i_tinfoid,
+ int i_curid )
+{
+ int i_result;
+ LibEditText_TextInfo *p_tinfo;
+ LibEditText_Cursor *p_cursor;
+ LibEditText_LineInfo *p_line;
+
+ p_tinfo = LibEditText_System_GetTextInfo( i_tinfoid );
+ if( NULL == p_tinfo ) {
+ return -0x01;
+ }
+
+ p_cursor = LibEditText_CursorInfo_GetCursor( p_tinfo, i_curid );
+ if( NULL == p_cursor ) {
+ return -0x02;
+ }
+
+ p_line = LINFO(p_tinfo, p_cursor->dw_lineid);
+ if( NULL == p_line ) {
+ return -0x03;
+ }
+
+ i_result = LibEditText_CursorMove_MoveRight( p_tinfo, p_cursor, dw_len );
+ return i_result;
+}*/
+
+
+/***********************************************************************
+***********************************************************************/
LIBEDITTEXT_API_CURSORAPI
int
- LibEditText_JumpCursor(
- int i_tinfoid,
+ LibEditText_MoveUpCursor(
+ int i_tinfoid,
int i_curid,
- DWord dw_line )
+ DWord dw_lines )
+{
+ int i_result;
+ LibEditText_TextInfo *p_tinfo;
+ LibEditText_Cursor *p_cursor;
+
+ p_tinfo = LibEditText_System_GetTextInfo( i_tinfoid );
+ if( NULL == p_tinfo ) {
+ return -0x01;
+ }
+
+ p_cursor = LibEditText_CursorInfo_GetCursor( p_tinfo, i_curid );
+ if( NULL == p_cursor ) {
+ return -0x02;
+ }
+
+ i_result = LibEditText_CursorMove_MoveUp( p_tinfo, p_cursor, dw_lines );
+ return i_result;
+}
+
+
+/***********************************************************************
+***********************************************************************/
+LIBEDITTEXT_API_CURSORAPI
+int
+ LibEditText_MoveDownCursor(
+ int i_tinfoid,
+ int i_curid,
+ DWord dw_lines )
+{
+ int i_result;
+ LibEditText_TextInfo *p_tinfo;
+ LibEditText_Cursor *p_cursor;
+
+ p_tinfo = LibEditText_System_GetTextInfo( i_tinfoid );
+ if( NULL == p_tinfo ) {
+ return -0x01;
+ }
+
+ p_cursor = LibEditText_CursorInfo_GetCursor( p_tinfo, i_curid );
+ if( NULL == p_cursor ) {
+ return -0x02;
+ }
+
+ i_result = LibEditText_CursorMove_MoveDown( p_tinfo, p_cursor, dw_lines );
+ return i_result;
+}
+
+
+/***********************************************************************
+***********************************************************************/
+LIBEDITTEXT_API_CURSORAPI
+int
+ LibEditText_MoveRightCursor(
+ int i_tinfoid,
+ int i_curid,
+ DWord dw_len )
{
int i_result;
LibEditText_TextInfo *p_tinfo;
LibEditText_Cursor *p_cursor;
- if( 0 > i_tinfoid ) {
+ p_tinfo = LibEditText_System_GetTextInfo( i_tinfoid );
+ if( NULL == p_tinfo ) {
return -0x01;
}
+ p_cursor = LibEditText_CursorInfo_GetCursor( p_tinfo, i_curid );
+ if( NULL == p_cursor ) {
+ return -0x02;
+ }
+
+ i_result = LibEditText_CursorMove_MoveRight( p_tinfo, p_cursor, dw_len );
+ return i_result;
+}
+
+
+/***********************************************************************
+***********************************************************************/
+LIBEDITTEXT_API_CURSORAPI
+int
+ LibEditText_MoveLeftCursor(
+ int i_tinfoid,
+ int i_curid,
+ DWord dw_len )
+{
+ int i_result;
+ LibEditText_TextInfo *p_tinfo;
+ LibEditText_Cursor *p_cursor;
+
p_tinfo = LibEditText_System_GetTextInfo( i_tinfoid );
if( NULL == p_tinfo ) {
+ return -0x01;
+ }
+
+ p_cursor = LibEditText_CursorInfo_GetCursor( p_tinfo, i_curid );
+ if( NULL == p_cursor ) {
return -0x02;
}
+ i_result = LibEditText_CursorMove_MoveLeft( p_tinfo, p_cursor, dw_len );
+ return i_result;
+}
+
+
+/***********************************************************************
+***********************************************************************/
+LIBEDITTEXT_API_CURSORAPI
+int
+ LibEditText_JumpCursor(
+ int i_tinfoid,
+ int i_curid,
+ DWord dw_line )
+{
+ int i_result;
+ LibEditText_TextInfo *p_tinfo;
+ LibEditText_Cursor *p_cursor;
+
+ p_tinfo = LibEditText_System_GetTextInfo( i_tinfoid );
+ if( NULL == p_tinfo ) {
+ return -0x01;
+ }
+
p_cursor = LibEditText_CursorInfo_GetCursor( p_tinfo, i_curid );
if( NULL == p_cursor ) {
- return -0x03;
+ return -0x02;
}
i_result = LibEditText_CursorInfo_JumpCursor( p_tinfo, p_cursor, dw_line );
int i_curid;
LibEditText_TextInfo *p_tinfo;
- if( 0 > i_tinfoid ) {
- return -0x01;
- }
-
p_tinfo = LibEditText_System_GetTextInfo( i_tinfoid );
if( NULL == p_tinfo ) {
- return -0x02;
+ return -0x01;
}
i_curid = LibEditText_CursorInfo_AllocCursor( p_tinfo, dw_ranges );
int i_result;
LibEditText_TextInfo *p_tinfo;
- if( 0 > i_tinfoid ) {
- return -0x01;
- }
-
p_tinfo = LibEditText_System_GetTextInfo( i_tinfoid );
if( NULL == p_tinfo ) {
- return -0x02;
+ return -0x01;
}
i_result = LibEditText_CursorInfo_FreeCursor( p_tinfo, i_curid );
----------------------------------------------------------------------*/
LIBEDITTEXT_CURSORCTRL_EXTERN
int
+ LibEditText_CursorCtrl_PreProc_DeleteLine(
+ LibEditText_TextInfo *p_tinfo,
+ DWord dw_line )
+{
+ int i_cnt;
+ LibEditText_Cursor *p_cursor;
+ LibEditText_LineInfo *p_line;
+
+ assert( NULL != p_tinfo );
+ assert( 1 < p_tinfo->dw_maxline );
+
+ for( i_cnt = 0; i_cnt < p_tinfo->dw_maxcursors; i_cnt++ ) {
+ p_cursor = &(p_tinfo->t_cursor[i_cnt]);
+
+ if( 0 == p_cursor->dw_rangelines ) { continue; }
+
+ assert( INVALID_LINE != p_cursor->dw_lineid );
+ assert( INVALID_LINE != p_cursor->dw_start_lineid );
+ assert( INVALID_LINE != p_cursor->dw_end_lineid );
+
+ if( dw_line == p_cursor->dw_line ) {
+ if( dw_line + 1 == p_tinfo->dw_maxline )
+ { LibEditText_CursorMove_MoveUp( p_tinfo, p_cursor, 1 ); }
+ else
+ { LibEditText_CursorMove_MoveDown( p_tinfo, p_cursor, 1 ); }
+ }
+ else if( dw_line == p_cursor->dw_start_line ) {
+ assert( p_cursor->dw_start_line + 1 < p_tinfo->dw_maxline );
+ p_cursor->dw_start_line++;
+ p_line = LINFO(p_tinfo, p_cursor->dw_start_lineid);
+ assert( NULL != p_line );
+ p_cursor->dw_start_lineid = p_line->dw_next;
+ }
+ else if( dw_line == p_cursor->dw_end_line ) {
+ if( p_cursor->dw_end_line + 1 == p_tinfo->dw_maxline ) {
+ assert( p_cursor->dw_end_line > 0 );
+ p_cursor->dw_end_line--;
+ p_line = LINFO(p_tinfo, p_cursor->dw_end_lineid);
+ assert( NULL != p_line );
+ p_cursor->dw_end_lineid = p_line->dw_before;
+ }
+ else {
+ p_cursor->dw_end_line++;
+ p_line = LINFO(p_tinfo, p_cursor->dw_end_lineid);
+ assert( NULL != p_line );
+ p_cursor->dw_end_lineid = p_line->dw_next;
+ }
+
+ }
+ }
+
+ return 0x00;
+}
+
+
+/*----------------------------------------------------------------------
+----------------------------------------------------------------------*/
+LIBEDITTEXT_CURSORCTRL_EXTERN
+int
LibEditText_CursorCtrl_DeleteLine(
LibEditText_TextInfo *p_tinfo,
DWord dw_line )
LIBEDITTEXT_CURSORCTRL_EXTERN
int LibEditText_CursorCtrl_InsertLine( LibEditText_TextInfo *p_tinfo, DWord dw_line );
LIBEDITTEXT_CURSORCTRL_EXTERN
+ int LibEditText_CursorCtrl_PreProc_DeleteLine( LibEditText_TextInfo *p_tinfo, DWord dw_line );
+LIBEDITTEXT_CURSORCTRL_EXTERN
int LibEditText_CursorCtrl_DeleteLine( LibEditText_TextInfo *p_tinfo, DWord dw_line );
#ifdef LIBEDITTEXT_CURSORCTRL_INTERNALFUNC
/*----------------------------------------------------------------------
----------------------------------------------------------------------*/
+LIBEDITTEXT_CURSORINFO_EXTERN
+void
+ LibEditText_CursorInfo_SetCurrentCursor(
+ LibEditText_TextInfo *p_tinfo,
+ int i_nowcursor )
+{
+ assert( NULL != p_tinfo );
+ assert( 0 <= i_nowcursor );
+ assert( p_tinfo->dw_maxcursors > i_nowcursor );
+
+ p_tinfo->i_cursor_now = i_nowcursor;
+
+ return;
+}
+
+
+/*----------------------------------------------------------------------
+----------------------------------------------------------------------*/
+LIBEDITTEXT_CURSORINFO_EXTERN
+void
+ LibEditText_CursorInfo_ClearCurrentCursor(
+ LibEditText_TextInfo *p_tinfo )
+{
+ assert( NULL != p_tinfo );
+
+ p_tinfo->i_cursor_now = DRD64_LIBEDITTEXT_DEFAULT_MAX_CURSORS;
+
+ return;
+}
+
+
+/*----------------------------------------------------------------------
+----------------------------------------------------------------------*/
int
LibEditText_CursorInfo_LocateCursor(
LibEditText_TextInfo *p_tinfo,
}
p_tinfo->dw_maxcursors = 0;
+ p_tinfo->i_cursor_now = DRD64_LIBEDITTEXT_DEFAULT_MAX_CURSORS;
return 0x00;
}
assert( NULL != p_tinfo );
p_tinfo->dw_maxcursors = 0;
+ p_tinfo->i_cursor_now = DRD64_LIBEDITTEXT_DEFAULT_MAX_CURSORS;
return 0x00;
}
LibEditText_Cursor *LibEditText_CursorInfo_GetCursor(
LibEditText_TextInfo *p_tinfo, int i_curid );
LIBEDITTEXT_CURSORINFO_EXTERN
+ void LibEditText_CursorInfo_SetCurrentCursor(
+ LibEditText_TextInfo *p_tinfo, int i_nowcursor );
+LIBEDITTEXT_CURSORINFO_EXTERN
+ void LibEditText_CursorInfo_ClearCurrentCursor(
+ LibEditText_TextInfo *p_tinfo );
+LIBEDITTEXT_CURSORINFO_EXTERN
int LibEditText_CursorInfo_JumpCursor(
LibEditText_TextInfo *p_tinfo, LibEditText_Cursor *p_cursor, DWord dw_targline );
LIBEDITTEXT_CURSORINFO_EXTERN
if( 1 == p_tinfo->dw_maxline ) { return 0x00; }
+ LibEditText_CursorCtrl_PreProc_DeleteLine( p_tinfo, dw_line );
+
// Check & Remove Section ---
LibEditText_Section_DeleteLine( p_tinfo, dw_line );
p_tinfo->dw_maxline--;
+ LibEditText_CursorCtrl_DeleteLine( p_tinfo, dw_line );
+
return 0x00;
}
p_tinfo->dw_maxline++;
+ LibEditText_CursorCtrl_InsertLine( p_tinfo, dw_line );
+
return 0x00;
}
else if( 0x00 < i_result ) { i_result = 0x00; }
p_tinfo->dw_maxline++;
+
+ LibEditText_CursorCtrl_InsertLine( p_tinfo, (p_tinfo->dw_maxline - 1) );
}
return 0x00;
typedef struct {
int i_id; /* ID of TextInfo Struct */
int i_fd;
+ int i_cursor_now;
Word w_subtype; /* TextFile Sub-Type (.c/.h/Makefile/etc) */
Byte *pb_text; /* Buffer of TextData */
Byte *pb_attr; /* Attribute Buffer of Text */