Qt: textRanges(). issue #35657

git-svn-id: trunk@61322 -
This commit is contained in:
zeljko 2019-06-05 13:15:36 +00:00
parent 4ec80d561c
commit 3f2cd1ae7e
6 changed files with 64 additions and 56 deletions

View File

@ -93,13 +93,12 @@ typedef struct {
} TQColor; } TQColor;
typedef TQColor *PQColor; typedef TQColor *PQColor;
typedef struct { typedef struct {
int start; int start;
int length; int length;
QTextCharFormatH format; } TTextRange;
} TQTextLayoutFormatRange; typedef TTextRange *PTextRange;
typedef TQTextLayoutFormatRange *PQTextLayoutFormatRange;
#if defined DARWIN #if defined DARWIN
typedef struct CGImage *CGImageRef; typedef struct CGImage *CGImageRef;

View File

@ -306,43 +306,28 @@ void QTextLayout_clearFormats(QTextLayoutH handle)
((QTextLayout *)handle)->clearFormats(); ((QTextLayout *)handle)->clearFormats();
} }
void QTextLayout_formats(QTextLayoutH handle, PPtrIntArray retval) int QTextLayout_formatsCount(QTextLayoutH handle)
{ {
QVector<QTextLayout::FormatRange> t_retval; return ((QTextLayout *)handle)->formats().size();
QVector<TQTextLayoutFormatRange> t_trans;
t_retval = ((QTextLayout *)handle)->formats();
int len = t_retval.size();
t_trans.resize(len);
setPtrIntArrayLength(retval, len);
if (len>0) {
PTRINT *array = (PTRINT *)getPtrIntArrayAddr(retval);
for (int i = 0; i < len; i++) {
t_trans[i].start = t_retval.at(i).start;
t_trans[i].length = t_retval.at(i).length;
t_trans[i].format = (const QTextCharFormatH) &t_retval.at(i).format;
array[i] = (PTRINT) (&t_trans.at(i));
}
}
} }
void QTextLayout_setFormats(QTextLayoutH handle, PPtrIntArray fmts) int QTextLayout_textFormatsRanges(QTextLayoutH handle, PTextRange ranges, int maxCount)
{ {
QVector<QTextLayout::FormatRange> t_formats; QVector<QTextLayout::FormatRange> t_retval;
QVector<TQTextLayoutFormatRange*> t_trans; int res = 0;
int cnt = maxCount;
int sz;
int len = getPtrIntArrayLength(fmts); t_retval = ((QTextLayout *)handle)->formats();
t_formats.resize(len); sz = t_retval.size();
t_trans.resize(len); if (sz > cnt) cnt = sz;
if (len>0) {
PTRINT *array = (PTRINT *)getPtrIntArrayAddr(fmts); for (int i=0; i<sz; i++)
for (int i = 0; i < len; i++) { {
t_trans[i] = reinterpret_cast <TQTextLayoutFormatRange*>(array[i]); ranges[i].start = t_retval.at(i).start;
t_formats[i].start = t_trans[i]->start; ranges[i].length = t_retval.at(i).length;
t_formats[i].length = t_trans[i]->length;
t_formats[i].format = *(const QTextCharFormat*) t_trans[i]->format;
}
} }
((QTextLayout *)handle)->setFormats(t_formats); return res;
} }
QTextLineH QTextLine_Create() QTextLineH QTextLine_Create()

View File

@ -72,8 +72,10 @@ C_EXPORT void QTextLayout_glyphRuns(QTextLayoutH handle, PPtrIntArray retval, in
C_EXPORT void QTextLayout_setFlags(QTextLayoutH handle, int flags); C_EXPORT void QTextLayout_setFlags(QTextLayoutH handle, int flags);
C_EXPORT void QTextLayout_clearFormats(QTextLayoutH handle); C_EXPORT void QTextLayout_clearFormats(QTextLayoutH handle);
C_EXPORT void QTextLayout_formats(QTextLayoutH handle, PPtrIntArray retval); /* utility function, there's no direct Qt mapping */
C_EXPORT void QTextLayout_setFormats(QTextLayoutH handle, PPtrIntArray fmts); C_EXPORT int QTextLayout_formatsCount(QTextLayoutH handle);
/* utility function, there's no direct Qt mapping */
C_EXPORT int QTextLayout_formatsRanges(QTextLayoutH handle, PTextRange ranges, int maxCount);
C_EXPORT QTextLineH QTextLine_Create(); C_EXPORT QTextLineH QTextLine_Create();
C_EXPORT void QTextLine_Destroy(QTextLineH handle); C_EXPORT void QTextLine_Destroy(QTextLineH handle);

View File

@ -245,25 +245,31 @@ int QTextBlock_fragmentIndex(QTextBlockH handle)
return (int) ((QTextBlock *)handle)->fragmentIndex(); return (int) ((QTextBlock *)handle)->fragmentIndex();
} }
void QTextBlock_textFormats(QTextBlockH handle, PPtrIntArray retval) int QTextBlock_textFormatsCount(QTextBlockH handle)
{
return ((QTextBlock *)handle)->textFormats().size();
}
int QTextBlock_textFormatsRanges(QTextBlockH handle, PTextRange ranges, int maxCount)
{ {
QVector<QTextLayout::FormatRange> t_retval; QVector<QTextLayout::FormatRange> t_retval;
QVector<TQTextLayoutFormatRange> t_trans; int res = 0;
t_retval = ((QTextBlock *)handle)->textFormats(); int cnt = maxCount;
int len = t_retval.size(); int sz;
t_trans.resize(len);
setPtrIntArrayLength(retval, len); t_retval = ((QTextBlock *)handle)->textFormats();
if (len>0) { sz = t_retval.size();
PTRINT *array = (PTRINT *)getPtrIntArrayAddr(retval); if (sz > cnt) cnt = sz;
for (int i = 0; i < len; i++) {
t_trans[i].start = t_retval.at(i).start; for (int i=0; i<sz; i++)
t_trans[i].length = t_retval.at(i).length; {
t_trans[i].format = (const QTextCharFormatH) &t_retval.at(i).format; ranges[i].start = t_retval.at(i).start;
array[i] = (PTRINT) (&t_trans.at(i)); ranges[i].length = t_retval.at(i).length;
} }
} return res;
} }
QTextFragmentH QTextFragment_Create() QTextFragmentH QTextFragment_Create()
{ {
return (QTextFragmentH) new QTextFragment(); return (QTextFragmentH) new QTextFragment();

View File

@ -61,7 +61,12 @@ C_EXPORT int QTextBlock_lineCount(QTextBlockH handle);
C_EXPORT void QTextBlock_next(QTextBlockH handle, QTextBlockH retval); C_EXPORT void QTextBlock_next(QTextBlockH handle, QTextBlockH retval);
C_EXPORT void QTextBlock_previous(QTextBlockH handle, QTextBlockH retval); C_EXPORT void QTextBlock_previous(QTextBlockH handle, QTextBlockH retval);
C_EXPORT int QTextBlock_fragmentIndex(QTextBlockH handle); C_EXPORT int QTextBlock_fragmentIndex(QTextBlockH handle);
C_EXPORT void QTextBlock_textFormats(QTextBlockH handle, PPtrIntArray retval);
/* utility function, there's no direct Qt mapping */
C_EXPORT int QTextBlock_textFormatsCount(QTextBlockH handle);
/* utility function, there's no direct Qt mapping */
C_EXPORT int QTextBlock_textFormatsRanges(QTextBlockH handle, PTextRange ranges, int maxCount);
C_EXPORT QTextFragmentH QTextFragment_Create(); C_EXPORT QTextFragmentH QTextFragment_Create();
C_EXPORT void QTextFragment_Destroy(QTextFragmentH handle); C_EXPORT void QTextFragment_Destroy(QTextFragmentH handle);
C_EXPORT QTextFragmentH QTextFragment_Create2(const QTextFragmentH o); C_EXPORT QTextFragmentH QTextFragment_Create2(const QTextFragmentH o);

View File

@ -8747,6 +8747,15 @@ function QTextInlineObject_textPosition(handle: QTextInlineObjectH): Integer; cd
function QTextInlineObject_formatIndex(handle: QTextInlineObjectH): Integer; cdecl; external Qt5PasLib name 'QTextInlineObject_formatIndex'; function QTextInlineObject_formatIndex(handle: QTextInlineObjectH): Integer; cdecl; external Qt5PasLib name 'QTextInlineObject_formatIndex';
procedure QTextInlineObject_format(handle: QTextInlineObjectH; retval: QTextFormatH); cdecl; external Qt5PasLib name 'QTextInlineObject_format'; procedure QTextInlineObject_format(handle: QTextInlineObjectH; retval: QTextFormatH); cdecl; external Qt5PasLib name 'QTextInlineObject_format';
type
TTextRange = packed record
start : longint;
length : longint;
end;
PTextRange = ^TTextRange;
TTextRangeArray = array[word] of TTextRange;
PTextRangeArray = ^TTextRangeArray;
function QTextLayout_Create(): QTextLayoutH; cdecl; external Qt5PasLib name 'QTextLayout_Create'; function QTextLayout_Create(): QTextLayoutH; cdecl; external Qt5PasLib name 'QTextLayout_Create';
procedure QTextLayout_Destroy(handle: QTextLayoutH); cdecl; external Qt5PasLib name 'QTextLayout_Destroy'; procedure QTextLayout_Destroy(handle: QTextLayoutH); cdecl; external Qt5PasLib name 'QTextLayout_Destroy';
function QTextLayout_Create(text: PWideString): QTextLayoutH; cdecl; external Qt5PasLib name 'QTextLayout_Create2'; function QTextLayout_Create(text: PWideString): QTextLayoutH; cdecl; external Qt5PasLib name 'QTextLayout_Create2';
@ -8789,8 +8798,8 @@ procedure QTextLayout_glyphRuns(handle: QTextLayoutH; retval: PPtrIntArray; from
procedure QTextLayout_setFlags(handle: QTextLayoutH; flags: Integer); cdecl; external Qt5PasLib name 'QTextLayout_setFlags'; procedure QTextLayout_setFlags(handle: QTextLayoutH; flags: Integer); cdecl; external Qt5PasLib name 'QTextLayout_setFlags';
procedure QTextLayout_clearFormats(handle: QTextLayoutH); cdecl; external Qt5PasLib name 'QTextLayout_clearFormats'; procedure QTextLayout_clearFormats(handle: QTextLayoutH); cdecl; external Qt5PasLib name 'QTextLayout_clearFormats';
procedure QTextLayout_formats(handle: QTextLayoutH; retval: PPtrIntArray); cdecl; external Qt5PasLib name 'QTextLayout_formats'; function QTextLayout_formatsCount(handle: QTextLayoutH): longint; cdecl; external Qt5PasLib name 'QTextLayout_formatsCount';
procedure QTextLayout_setFormats(handle: QTextLayoutH; formats: PPtrIntArray); cdecl; external Qt5PasLib name 'QTextLayout_setFormats'; function QTextLayout_formatsRanges(handle: QTextLayoutH; ranges: PTextRangeArray; longint: integer): longint; cdecl; external Qt5PasLib name 'QTextLayout_formatsRanges';
function QTextLine_Create(): QTextLineH; cdecl; external Qt5PasLib name 'QTextLine_Create'; function QTextLine_Create(): QTextLineH; cdecl; external Qt5PasLib name 'QTextLine_Create';
procedure QTextLine_Destroy(handle: QTextLineH); cdecl; external Qt5PasLib name 'QTextLine_Destroy'; procedure QTextLine_Destroy(handle: QTextLineH); cdecl; external Qt5PasLib name 'QTextLine_Destroy';
@ -8871,7 +8880,9 @@ function QTextBlock_lineCount(handle: QTextBlockH): Integer; cdecl; external Qt5
procedure QTextBlock_next(handle: QTextBlockH; retval: QTextBlockH); cdecl; external Qt5PasLib name 'QTextBlock_next'; procedure QTextBlock_next(handle: QTextBlockH; retval: QTextBlockH); cdecl; external Qt5PasLib name 'QTextBlock_next';
procedure QTextBlock_previous(handle: QTextBlockH; retval: QTextBlockH); cdecl; external Qt5PasLib name 'QTextBlock_previous'; procedure QTextBlock_previous(handle: QTextBlockH; retval: QTextBlockH); cdecl; external Qt5PasLib name 'QTextBlock_previous';
function QTextBlock_fragmentIndex(handle: QTextBlockH): Integer; cdecl; external Qt5PasLib name 'QTextBlock_fragmentIndex'; function QTextBlock_fragmentIndex(handle: QTextBlockH): Integer; cdecl; external Qt5PasLib name 'QTextBlock_fragmentIndex';
procedure QTextBlock_textFormats(handle: QTextBlockH; retval: PPtrIntArray); cdecl; external Qt5PasLib name 'QTextBlock_textFormats';
function QTextBlock_textFormatsCount(handle: QTextBlockH): longint; cdecl; external Qt5PasLib name 'QTextBlock_textFormatsCount';
function QTextBlock_textFormatsRanges(handle: QTextBlockH; ranges: PTextRangeArray; longint: integer): longint; cdecl; external Qt5PasLib name 'QTextBlock_textFormatsRanges';
function QTextFragment_Create(): QTextFragmentH; cdecl; external Qt5PasLib name 'QTextFragment_Create'; function QTextFragment_Create(): QTextFragmentH; cdecl; external Qt5PasLib name 'QTextFragment_Create';
procedure QTextFragment_Destroy(handle: QTextFragmentH); cdecl; external Qt5PasLib name 'QTextFragment_Destroy'; procedure QTextFragment_Destroy(handle: QTextFragmentH); cdecl; external Qt5PasLib name 'QTextFragment_Destroy';