*/}}
Browse Source

optimizations

YimingWu 2 years ago
parent
commit
f2810eacc0
3 changed files with 29 additions and 11 deletions
  1. 2 2
      la_kernel.c
  2. 26 8
      la_tns_kernel.c
  3. 1 1
      resources/la_templates.c

+ 2 - 2
la_kernel.c

@@ -341,7 +341,7 @@ void laShowProgress(real p1, real p2){
     XFillRectangle(MAIN.dpy,MAIN.Progress.w,MAIN.Progress.gc,LA_RH*2,LA_RH,PROGRESSW*MAIN.Progress.p2,LA_RH);
     tnsDrawLCD7_ProgressX11(LA_RH*1.5,0,MAIN.Progress.p1);
     tnsDrawLCD7_ProgressX11(LA_RH*1.5,LA_RH,MAIN.Progress.p2);
-    XSync(MAIN.dpy, 0); XFlush(MAIN.dpy);
+    XSync(MAIN.dpy, 1); XFlush(MAIN.dpy);
 }
 void laHideProgress(){
     if(!MAIN.Progress.Shown){
@@ -350,7 +350,7 @@ void laHideProgress(){
     laTimeRecorder tm; laRecordTime(&tm);
     real t=laTimeElapsedSecondsf(&tm,&MAIN.Progress.TimeCalled);
     if(t<0.2){ usleep((TNS_MIN2(0.2-t,0.2))*1000000); }
-    XUnmapWindow(MAIN.dpy,MAIN.Progress.w); XSync(MAIN.dpy, 0); XFlush(MAIN.dpy);
+    XUnmapWindow(MAIN.dpy,MAIN.Progress.w); XSync(MAIN.dpy, 1); XFlush(MAIN.dpy);
     MAIN.Progress.Called = MAIN.Progress.Shown = 0;
 }
 

+ 26 - 8
la_tns_kernel.c

@@ -356,6 +356,19 @@ char TNS_LCD_MAP_16[][16]={
     {0,0,0,0,1,1,1,1,0,0,1,1,0,0,0,0},{0,0,0,0,0,0,1,1,0,0,0,0,0,1,1,0},
     {0,0,0,0,0,0,1,1,0,0,1,1,0,0,1,1},{0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1},
     {0,0,0,0,0,0,0,0,0,1,0,0,1,1,0,0},{1,1,0,0,1,1,0,0,0,0,0,0,0,1,1,0},
+    {0,0,1,0,1,1,0,1,0,1,0,0,0,0,0,0},{0,0,0,1,1,1,0,0,1,1,0,1,0,0,0,0},//a
+    {0,0,1,1,1,1,0,1,0,0,0,0,0,0,0,0},{0,0,1,0,1,1,0,1,1,1,0,0,0,0,0,0},
+    {0,0,1,0,1,1,0,1,0,0,0,0,0,0,1,0},{0,1,1,1,1,0,0,0,1,1,0,0,0,0,0,0},
+    {0,1,0,1,1,1,0,1,1,0,1,1,0,0,0,0},{0,0,1,0,0,1,1,1,0,1,0,0,0,0,0,0},
+    {1,0,1,0,0,1,0,0,0,1,0,0,0,0,0,0},{0,1,0,1,1,1,0,0,0,0,0,1,0,0,0,0},
+    {0,0,1,1,0,0,0,1,1,0,0,0,0,0,0,1},{1,0,0,0,0,1,0,0,1,1,0,0,0,0,0,0},
+    {0,0,1,1,0,0,0,1,0,1,0,1,0,0,0,0},{0,0,1,0,0,1,0,1,0,1,0,0,0,0,0,0},
+    {0,0,1,1,1,1,0,1,0,0,0,1,0,0,0,0},{1,1,0,1,0,0,0,0,1,1,1,0,0,0,0,0},
+    {1,1,0,0,0,0,1,0,1,1,0,0,0,0,0,0},{0,0,0,1,0,0,0,0,0,0,0,0,0,0,1,0},
+    {0,0,0,1,1,1,0,0,0,0,0,0,0,0,0,1},{0,0,1,1,0,1,0,0,1,1,0,0,0,0,0,0},
+    {0,0,0,0,1,1,0,1,0,1,0,0,0,0,0,0},{0,0,0,0,0,0,0,1,0,0,0,0,0,0,1,0},
+    {0,0,0,0,0,0,0,1,0,0,0,1,0,0,1,1},{0,0,1,1,0,0,0,0,0,0,0,0,0,0,1,1},
+    {0,0,0,1,1,1,0,0,1,0,1,1,0,0,0,0},{0,0,1,0,1,1,0,0,0,0,0,0,0,0,1,0},
 };
 
 //   1
@@ -3161,7 +3174,7 @@ int tnsStringGetWidthU(uint32_t *contentU, int Count, int UseMono){
 int tnsDrawLCD7_ProgressX11(real x, real y, real Percent){
     real hgap=LA_RH/15; real vgap=LA_RH/5;
     real MA=FM->UsingFont->MonoAdvance;
-    real w=MA-hgap*2, h=LA_RH-vgap*2; y+=vgap; x+=hgap-MA;
+    real w=MA-hgap*2, h=LA_RH-vgap*2; y+=vgap; x+=hgap-MA; real shear=h/12;
     TNS_CLAMP(Percent,0,1);
     char str[10]; sprintf(str,"%d",(int)(Percent*100)); int len=strlen(str);
     for(int i=len-1;i>=0;i--){
@@ -3171,8 +3184,10 @@ int tnsDrawLCD7_ProgressX11(real x, real y, real Percent){
         for(int i=0;i<7;i++){
             if(TNS_LCD_MAP_7[uc][i]){
                 real* seg=TNS_LCD_SEG_7[i];
+                real s1=tnsInterpolate(shear,-shear,seg[1]); real s2=tnsInterpolate(shear,-shear,seg[3]);
                 XDrawLine(MAIN.dpy,MAIN.Progress.w,MAIN.Progress.gc,
-                    tnsInterpolate(x,x+w,seg[0]),tnsInterpolate(y,y+h,seg[1]),tnsInterpolate(x,x+w,seg[2]),tnsInterpolate(y,y+h,seg[3]));
+                    tnsInterpolate(x+s1,x+w+s1,seg[0]),tnsInterpolate(y,y+h,seg[1]),
+                    tnsInterpolate(x+s2,x+w+s2,seg[2]),tnsInterpolate(y,y+h,seg[3]));
             }
         }
         x-=MA;
@@ -3180,28 +3195,31 @@ int tnsDrawLCD7_ProgressX11(real x, real y, real Percent){
     return 1;
 }
 int tnsMakeLCD7(real x, real y, real w, real h, int ch){
-    int uc=ch;
+    int uc=ch; real shear=h/12;
     if(ch>='0' && ch<='9'){ uc-='0'; } 
     else {return 0;}
     for(int i=0;i<7;i++){
         if(TNS_LCD_MAP_7[uc][i]){
             real* seg=TNS_LCD_SEG_7[i];
-            tnsVertex2d(tnsInterpolate(x,x+w,seg[0]),tnsInterpolate(y,y+h,seg[1]));
-            tnsVertex2d(tnsInterpolate(x,x+w,seg[2]),tnsInterpolate(y,y+h,seg[3]));
+            real s1=tnsInterpolate(shear,-shear,seg[1]); real s2=tnsInterpolate(shear,-shear,seg[3]);
+            tnsVertex2d(tnsInterpolate(x+s1,x+w+s1,seg[0]),tnsInterpolate(y,y+h,seg[1]));
+            tnsVertex2d(tnsInterpolate(x+s2,x+w+s2,seg[2]),tnsInterpolate(y,y+h,seg[3]));
         }
     }
     return 1;
 }
 int tnsMakeLCD16(real x, real y, real w, real h, int ch){
-    int uc=ch;
+    int uc=ch; real shear=h/12;
     if(ch>='0' && ch<='9'){ uc-='0'; }
     elif(ch>='A' && ch<='Z'){ uc-='A'; uc+=10; }
+    elif(ch>='a' && ch<='z'){ uc-='a'; uc+=(10+26); }
     else {return 0;}
     for(int i=0;i<16;i++){
         if(TNS_LCD_MAP_16[uc][i]){
             real* seg=TNS_LCD_SEG_16[i];
-            tnsVertex2d(tnsInterpolate(x,x+w,seg[0]),tnsInterpolate(y,y+h,seg[1]));
-            tnsVertex2d(tnsInterpolate(x,x+w,seg[2]),tnsInterpolate(y,y+h,seg[3]));
+            real s1=tnsInterpolate(shear,-shear,seg[1]); real s2=tnsInterpolate(shear,-shear,seg[3]);
+            tnsVertex2d(tnsInterpolate(x+s1,x+w+s1,seg[0]),tnsInterpolate(y,y+h,seg[1]));
+            tnsVertex2d(tnsInterpolate(x+s2,x+w+s2,seg[2]),tnsInterpolate(y,y+h,seg[3]));
         }
     }
     return 1;

+ 1 - 1
resources/la_templates.c

@@ -1177,7 +1177,7 @@ void laui_ResourceFolderItem(laUiList *uil, laPropPack *Base, laPropPack *Operat
 }
 
 void laui_LogItem(laUiList *uil, laPropPack *Base, laPropPack *OperatorInst, laColumn *ExtraColumns, int context){
-    laShowItem(uil, ExtraColumns, Base, "content")->Flags|=LA_TEXT_LINE_WRAP|LA_TEXT_USE_NEWLINE|LA_TEXT_MONO;
+    laShowItem(uil, ExtraColumns, Base, "content")->Flags|=LA_TEXT_LINE_WRAP|LA_TEXT_USE_NEWLINE|LA_TEXT_MONO|LA_TEXT_LCD_16;
 }
 
 void laui_NodeRack(laUiList *uil, laPropPack *This, laPropPack *Extra, laColumn *UNUSED, int context){