#define LIBEDITTEXT_API_LINECTRL extern
#endif
LIBEDITTEXT_API_LINECTRL
- int LibEditText_InsertLine_toLine( int i_tinfoid, DWord dw_line, char *pstr_text, DWord dw_length );
+ int LibEditText_DeleteLine_toLine( int i_tinfoid, DWord dw_line );
+LIBEDITTEXT_API_LINECTRL
+ int LibEditText_JoinLine_toLine( int i_tinfoid, DWord dw_line );
+LIBEDITTEXT_API_LINECTRL
+ int LibEditText_InsertLine_toLine(
+ int i_tinfoid, DWord dw_line, char *pstr_text, DWord dw_length );
LIBEDITTEXT_API_LINECTRL
int LibEditText_AppendLine( int i_tinfoid, char *pstr_text, DWord dw_length );
#else
#define LIBEDITTEXT_API_LINEEDIT extern
#endif
-LIBEDITTEXT_API_LINECTRL
- int LibEditText_DeleteLine_toLine(
- int i_tinfoid, DWord dw_line );
LIBEDITTEXT_API_LINEEDIT
int LibEditText_InsertChar_toLine(
int i_tinfoid, DWord dw_line, DWord dw_pos, Byte b_char );
----------------------------------------------------------------------*/
LIBEDITTEXT_LINECTRL_EXTERN
int
+ LibEditText_LineCtrl_JoinLine(
+ LibEditText_TextInfo *p_tinfo,
+ LibEditText_LineInfo *p_ldest,
+ DWord dw_line )
+{
+ int i_result;
+ Byte *pb_dest;
+ Byte *pb_src;
+ DWord dw_linelen;
+ LibEditText_LineInfo *p_lsrc;
+
+ // Check
+ assert( NULL != p_tinfo );
+ assert( NULL != p_ldest );
+
+ if( p_tinfo->dw_line_end == p_ldest->dw_id )
+ { return 0x01; }
+
+ p_lsrc = LINFO(p_tinfo, p_ldest->dw_next);
+ assert( NULL != p_lsrc );
+
+ // Merge Memory data
+ if((p_ldest->dw_strlen + p_lsrc->dw_strlen + 5) > p_ldest->dw_linelen ) {
+ dw_linelen = p_ldest->dw_strlen + p_lsrc->dw_strlen
+ + DRD64_LIBEDITTEXT_DEFAULT_RESERVEBUF_INLINE;
+ i_result = LibEditText_LineInfo_ExpandLineBuffer(
+ p_tinfo, p_ldest, dw_linelen );
+ if( 0x00 != i_result ) { return -0x02; }
+ }
+
+ pb_dest = p_tinfo->pb_text + p_ldest->dw_start + p_ldest->dw_strlen - 1;
+ pb_src = p_tinfo->pb_text + p_lsrc->dw_start;
+
+ assert( '\n' == *pb_dest );
+
+ memcpy( pb_dest, pb_src, p_lsrc->dw_strlen );
+ *(pb_dest + p_lsrc->dw_strlen) = '\0';
+
+ p_ldest->dw_strlen = p_ldest->dw_strlen - 1 + p_lsrc->dw_strlen;
+
+ // delete line
+ i_result = LibEditText_LineCtrl_DeleteLine( p_tinfo, p_lsrc, dw_line + 1 );
+ if( 0x00 != i_result ) { return -0x02; }
+
+ return 0x00;
+}
+
+
+/*----------------------------------------------------------------------
+----------------------------------------------------------------------*/
+LIBEDITTEXT_API_LINECTRL
+int
+ LibEditText_JoinLine_toLine(
+ int i_tinfoid,
+ DWord dw_line )
+{
+ int i_result;
+ LibEditText_TextInfo *p_tinfo;
+ LibEditText_LineInfo *p_line;
+
+ if( 0 > i_tinfoid ) { return -0x01; }
+ p_tinfo = LibEditText_System_GetTextInfo( i_tinfoid );
+ if( NULL == p_tinfo ) { return -0x02; }
+
+ p_line = LibEditText_Section_SearchLine( p_tinfo, dw_line );
+ assert( NULL != p_line );
+
+ i_result = LibEditText_LineCtrl_JoinLine( p_tinfo, p_line, dw_line );
+
+ return i_result;
+}
+
+
+/*----------------------------------------------------------------------
+----------------------------------------------------------------------*/
+LIBEDITTEXT_LINECTRL_EXTERN
+int
LibEditText_LineCtrl_InsertLine(
LibEditText_TextInfo *p_tinfo,
DWord dw_line,
LibEditText_LineEdit_DeleteString(
LibEditText_TextInfo *p_tinfo,
LibEditText_LineInfo *p_line,
+ DWord dw_line,
DWord dw_pos,
DWord dw_len )
{
if( 0 == p_line->dw_strlen ) {
// Delete Line ---
-
+ i_result = LibEditText_LineCtrl_DeleteLine( p_tinfo, p_line, dw_line );
goto goto_LibEditText_LineEdit_DeleteString_post;
}
{ goto goto_LibEditText_LineEdit_DeleteString_post; }
// Merge line ---
-
+ i_result = LibEditText_LineCtrl_JoinLine( p_tinfo, p_line, dw_line );
goto_LibEditText_LineEdit_DeleteString_post:
return i_result;
if( p_line->dw_strlen < dw_pos + dw_len ) { return -0x04; }
i_result = LibEditText_LineEdit_DeleteString(
- p_tinfo, p_line, dw_pos, dw_len );
+ p_tinfo, p_line, dw_line, dw_pos, dw_len );
return i_result;
}
#endif
LIBEDITTEXT_LINEEDIT_EXTERN
+ int LibEditText_LineEdit_DeleteString(
+ LibEditText_TextInfo *p_tinfo, LibEditText_LineInfo *p_line,
+ DWord dw_line, DWord dw_pos, DWord dw_len );
+LIBEDITTEXT_LINEEDIT_EXTERN
int LibEditText_LineEdit_InsertString(
LibEditText_TextInfo *p_tinfo,
LibEditText_LineInfo *p_line,