界面库
更新
This commit is contained in:
Binary file not shown.
BIN
Binary file not shown.
Binary file not shown.
Binary file not shown.
BIN
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
@@ -783,7 +783,7 @@ type tsgtkapi = class(tgtkapis)
|
||||
end
|
||||
Function TextOutA(hdc :pointer;X:integer;y:integer;txt:string;len:integer):integer;
|
||||
begin
|
||||
cl := gtk_object_get_data(hdc,"text.color");
|
||||
cl := gtk_object_get_data(hdc,"text.color");
|
||||
// gtk_rgb_color_rgb(cl,r,g,b);
|
||||
// cairo_set_source_rgb(hdc, r, g, b);
|
||||
xb := gtk_object_get_data(hdc,"viewport.x");
|
||||
@@ -815,8 +815,7 @@ type tsgtkapi = class(tgtkapis)
|
||||
end }
|
||||
cft := (fnotset?fc:"AR PL UKai CN");
|
||||
global g_gtk_font_get_size ;
|
||||
if not ifarray(g_gtk_font_get_size) then g_gtk_font_get_size := array();
|
||||
cfinfo := g_gtk_font_get_size[cft,ht,wd,it,wt];
|
||||
cfinfo := g_gtk_font_get_size[cft{,ht},wd,it,wt];
|
||||
if cfinfo then
|
||||
begin
|
||||
wd := cfinfo["width"];
|
||||
@@ -826,13 +825,13 @@ type tsgtkapi = class(tgtkapis)
|
||||
cairo_set_font_size(hdc,cfinfo["iwd2"]);
|
||||
end else
|
||||
begin
|
||||
cairo_select_font_face(hdc,cft,it,wt);
|
||||
ext := new _cairo_text_extents_t(nil);
|
||||
cairo_select_font_face(hdc,cft,it,wt);
|
||||
brk := 0;
|
||||
wd2 := wd*2-2-wt; //ÉÔ΢ËõСһµã
|
||||
wd2 := wd*2{-2-wt}; //ÉÔ΢ËõСһµã
|
||||
iwd2 := wd2;
|
||||
brk_Ct := 0;
|
||||
dkzt := false;
|
||||
{ext := new _cairo_text_extents_t(nil);
|
||||
while not brk do
|
||||
begin
|
||||
brk_Ct++;
|
||||
@@ -851,25 +850,28 @@ type tsgtkapi = class(tgtkapis)
|
||||
iwd2 := wd+1+it-wt;
|
||||
end
|
||||
end
|
||||
if nwd>(wd2+0.4) then
|
||||
if nwd>(wd2+0.04) then
|
||||
begin
|
||||
iwd2-=0.25;
|
||||
iwd2-=0.001;
|
||||
end else
|
||||
if nwd<(wd2) then
|
||||
if nwd<(wd2+0.04) then
|
||||
begin
|
||||
iwd2+=0.25;
|
||||
iwd2+=0.001;
|
||||
end else
|
||||
begin
|
||||
brk := true;
|
||||
end
|
||||
end
|
||||
echo "\r\n",iwd2,"++++",wd;
|
||||
if brk_Ct>50 then break;
|
||||
end
|
||||
g_gtk_font_get_size[cft,ht,wd,it,wt] := array("width":wd,"zczw":dkzt,"iwd2":iwd2);
|
||||
echo "\r\ncalc count:",brk_Ct;}
|
||||
g_gtk_font_get_size[cft,{ht,}wd,it,wt] := array("width":wd,"zczw":dkzt,"iwd2":iwd2);
|
||||
cairo_set_font_size(hdc,iwd2);
|
||||
end
|
||||
end
|
||||
|
||||
end
|
||||
|
||||
ht := wd*2;
|
||||
wid := wd;
|
||||
idx := 1 ;
|
||||
tlen := (len<0)?length(txt):(min(len,length(txt)));
|
||||
@@ -878,23 +880,69 @@ type tsgtkapi = class(tgtkapis)
|
||||
///////////////////±³¾°/////////////////////////////////////////
|
||||
if gtk_object_get_data(hdc,"font.bkmode") = 2 then
|
||||
begin
|
||||
gtk_rgb_color_rgb(gtk_object_get_data(hdc,"font.bkcolor"),r,g,b);
|
||||
fillbk := true;
|
||||
gtk_rgb_color_rgb(gtk_object_get_data(hdc,"font.bkcolor"),bkr,bkg,bkb);
|
||||
//cairo_fill
|
||||
cairo_move_to(hdc,xp,yp);
|
||||
cairo_line_to(hdc,xp+wid*tlen,yp);
|
||||
cairo_line_to(hdc,xp+wid*tlen,yp-ht);
|
||||
cairo_line_to(hdc,xp,yp-ht);
|
||||
cairo_line_to(hdc,xp,yp);
|
||||
cairo_set_source_rgb(hdc, r, g, b);
|
||||
cairo_fill(hdc);
|
||||
|
||||
end
|
||||
gtk_rgb_color_rgb(cl,r,g,b);
|
||||
cairo_set_source_rgb(hdc, r, g, b);
|
||||
|
||||
////////////////////////////////////////////////////////
|
||||
if udl then
|
||||
begin
|
||||
cairo_set_line_width(hdc,0.5);
|
||||
cairo_set_line_width(hdc,0.4);
|
||||
end
|
||||
txts := array();
|
||||
txtidx := 0;
|
||||
txti := "";
|
||||
while idx<=tlen do
|
||||
begin
|
||||
ci := GetChar(txt,idx);
|
||||
idx++;
|
||||
if ci=10 then
|
||||
begin
|
||||
txts[txtidx++] := array(txti,yp,xp);
|
||||
txti := "";
|
||||
yp+=ht;
|
||||
continue;
|
||||
end
|
||||
if ci=13 then
|
||||
continue;
|
||||
if ci=9 then txti+=" ";
|
||||
else
|
||||
txti+=txt[idx-1];
|
||||
end
|
||||
if txti then txts[txtidx++] := array(txti,yp,xp);
|
||||
gtk_rgb_color_rgb(cl,pr,pg,pb);
|
||||
for i ,v in txts do
|
||||
begin
|
||||
v0 := v[0];
|
||||
if not v0 then continue;
|
||||
vl := length(v0);
|
||||
xx := v[2];
|
||||
yy := v[1];
|
||||
if fillbk then
|
||||
begin
|
||||
cairo_move_to(hdc,xx,yy);
|
||||
cairo_line_to(hdc,xx+wid*vl,yy);
|
||||
cairo_line_to(hdc,xx+wid*vl,yy-ht);
|
||||
cairo_line_to(hdc,xx,yy-ht);
|
||||
cairo_line_to(hdc,xx,yy);
|
||||
cairo_set_source_rgb(hdc, bkr, bkg, bkb);
|
||||
cairo_fill(hdc);
|
||||
end
|
||||
|
||||
cairo_set_source_rgb(hdc, pr, pg, pb);
|
||||
if udl then
|
||||
begin
|
||||
cairo_move_to(hdc,xx,yy-1);
|
||||
cairo_line_to(hdc,(xx+wid*vl),yy-1);
|
||||
end
|
||||
cairo_move_to(hdc,xx,yy);
|
||||
cairo_show_text(hdc,TslStringToGtk(v0));
|
||||
cairo_stroke(hdc);
|
||||
end
|
||||
|
||||
return 1;
|
||||
while idx<=tlen do
|
||||
begin
|
||||
if udl then bxp := xp;
|
||||
@@ -8957,7 +9005,8 @@ begin
|
||||
end
|
||||
function igtk();
|
||||
begin
|
||||
global g_w_i_datas,g_w_c_width, g_gtk_buttontable,g_gtk_keytable,g_gtk_call_handler_manager;
|
||||
global g_w_i_datas,g_w_c_width, g_gtk_buttontable,g_gtk_keytable,g_gtk_call_handler_manager,g_gtk_font_get_size;
|
||||
g_gtk_font_get_size := array();
|
||||
gtk_init_check(nil,nil);
|
||||
g_w_i_datas := array();
|
||||
g_w_c_width := 35;
|
||||
|
||||
@@ -2643,6 +2643,7 @@ type TSynCompletion = class(TSynCompletionList)
|
||||
function Create(AOwner);override;
|
||||
begin
|
||||
inherited;
|
||||
fmatchfirst := true;
|
||||
{$ifdef linuxpop} //处理避免闪烁
|
||||
|
||||
{$else}
|
||||
@@ -2871,7 +2872,8 @@ type TSynCompletion = class(TSynCompletionList)
|
||||
for i,v in FCompData do
|
||||
begin
|
||||
vi := v[cindex];
|
||||
if pos(cs,vi)=1 then
|
||||
ps := pos(cs,vi);
|
||||
if (fmatchfirst?(ps=1):(ps>=1)) then
|
||||
begin
|
||||
d[ld++] := v;
|
||||
wd := max(wd,v["clen"]);
|
||||
@@ -2902,7 +2904,9 @@ type TSynCompletion = class(TSynCompletionList)
|
||||
property Memo Read FMemo write SetMemo; //编辑器
|
||||
property IgnoreCase read FIgnoreCase Write SetIgnoreCase; //忽略大小写
|
||||
property OnJumpChoosed read GetJumpChoosed write SetJumpChoosed;
|
||||
property matchfirst read fmatchfirst write fmatchfirst ;//匹配首字母
|
||||
private
|
||||
fmatchfirst;
|
||||
FCurrentWidth;
|
||||
FCompData;
|
||||
[weakref]FMemo;
|
||||
|
||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
BIN
Binary file not shown.
BIN
Binary file not shown.
BIN
Binary file not shown.
Reference in New Issue
Block a user