/* * Public.cpp * * Created on: Jul 16, 2013 * Author: yiyu * QQ:1036184468 * Descriptoin: */ #include "Public.h" #include #include #include #include #include #include #include #include #include static QString FontName; Public::Public(){ } // "Zfull-GB";break;/ Public::~Public(){ FontName=""; } // 20160303 : #define FONTV "WenQuanYiCN" ; FONTV1 FONTV2 "WenQuanYiNX" //#define FONTV "DejaVuSansnx"//"DejaVu Sans" #define FONTV "WenQuanYiCN" //#define FONTV "WenQuanYiNX" #define FONTV1 "WenQuanYiNX" //#define FONTV1 "DejaVu Sans" //#define FONTV2 "DejaVu Sans" #define FONTV2 "WenQuanYiNX"//"WenQuanYi Micro Hei" //"Zfull-GB" #define FONTC "wenquanyi" //#define FONTC "WenQuanYi" int Public::getMinFontPixelSize(){ return 5; } QString Public::getFontFamily(int pixelSize){ switch(pixelSize){ case 5://return "SerifL";break; case 6: case 7: case 9:return "biyang";break; case 12:return "FZXS12";break; case 16:return "FZXS16";break; case 24:return "FZXS24";break; default:return FONTC; break;//return "WenQuanYi Zen Hei"; break; } return FONTV2; } QString Public::getFontFamily(int pixelSize, int vartype){ if(pixelSize >= 32) return "WenQuanYi32"; else if(pixelSize >= 22) return "WenQuanYi24"; else if(pixelSize >= 16) return "WenQuanYi16"; else if(pixelSize >= 12) return "WenQuanYi12"; else if(pixelSize >= 9) return "Dinkie9"; else if(pixelSize >= 7) return "WenQuanYi7"; else if(pixelSize >= 5) return "WenQuanYi5"; switch(pixelSize){ case 5:return "WenQuanYi5"; case 6:return "WenQuanYi5"; case 7:return "WenQuanYi7"; case 8:return "WenQuanYi7"; case 9: { if(vartype>19&& vartype<30) { return "SerifL"; } else if(vartype>39&& vartype<50) { return "SerifR"; } else if((vartype>29&& vartype<40) || vartype == 90 || vartype==91) { return "bangla"; } else if((vartype>49&& vartype<60) || vartype == 100 || vartype==101) { return "biyangF"; } else if((vartype>59&& vartype<70) || vartype == 110 || vartype==111) { return "Roman"; } else { return "Dinkie9"; } } break; case 12:return "WenQuanYi12";break; case 13:return "WenQuanYi12";break; case 16:return "WenQuanYi16";break; case 17:return "WenQuanYi16";break; case 24:return "WenQuanYi24";break; default:return FONTC; break;//return "WenQuanYi Zen Hei"; break; } return FONTV2; } static int pixel_size[] = {5,7,9,12,16,21,24,32};//,28,32}; #define NUM 6 int Public::derivePixelSizeFromHeight(int value){ if(value >= 22) return 24; else if(value >= 15) return 16; else if(value >= 11) return 12; else if(value >= 9) return 9; else if(value >= 7) return 7; else if(value >= 5) return 5; static int init_done; static int height[NUM*2]; if(!init_done){ for(int i = 0; i < NUM; i++){ QFont font; font.setFamily(Public::getFontFamily(pixel_size[i])); font.setPixelSize(pixel_size[i]); font.setBold(0); height[2*i] = getNumberHeight(font); font.setBold(1); height[2*i+1] = getNumberHeight(font); } init_done = 1; } /* HEIL 0 5 HEIL 1 7 HEIL 2 9 HEIL 3 12 HEIL 4 16 HEIL 5 21 HEIL 6 24 * */ for(int i = 0; i < (NUM) ; i ++){ if(value <= height[2*i]){ //qDebug()<<"pixel_size"<2) { len=file1.readLine((char*)buf,256); if(len){ buf[len]='\0'; QString s1 = buf; int n=s1.indexOf("\r\n"); if(n) s1 = s1.mid(0,n); if(s1.endsWith("utf8.txt")) InputTxtFileName = s1; else InputTxtFileName = "WINPY_utf8.txt"; } } if(file1.isOpen()) file1.close(); } return InputTxtFileName; } QString Public::ReadLanguageName() { QFile file1("/home/plg/UseEn"); QString language="Chinese"; char buf[256]; if(file1.exists()) { file1.open(QFile::ReadWrite); int len=file1.readLine((char*)buf,256); buf[len]='\0'; //qDebug()<<"language:"<2) { language = buf; int n=language.indexOf("\r\n"); if(n>0) language = language.mid(0,n); } if(file1.isOpen())file1.close(); } FontName = language; return language; } QString Public::ReadKeyBoardUse() { QFile file1("/home/plg/UseKBD"); QString language="MultiLanguage"; char buf[256]; if(file1.exists()) { file1.open(QFile::ReadWrite); int len=file1.readLine((char*)buf,256); buf[len]='\0'; if(len>2) { language = buf; int n=language.indexOf("\r\n"); if(n>0) language = language.mid(0,n); } if(file1.isOpen())file1.close(); } return language; } int Public::getNumberHeight(QFont font){ QFontMetrics fontMetrics(font); int height = fontMetrics.ascent()+ fontMetrics.descent(); int width1 = (fontMetrics.width("ABH89")); QTextEdit text1; text1.setFont(font); text1.setText("F08H"); text1.show(); QImage image(width1,height+16,QImage::Format_ARGB32); image.fill(0x00ffffff); QPainter painter(&image); text1.document()->drawContents (&painter, image.rect()); /*将text写到pic*/ text1.hide(); int imgHeight = image.height(); int imgWidth = image.width(); int FirstValidRow = 0; bool lastFlag=0; int k,j; for(k = 0; k 0 ; k--){ for( j = 0; j < imgWidth; j ++){ QRgb rgb = image.pixel(j,k); //qDebug()<= 60) tmp = vartype-60; else if(tmp >= 50) tmp = vartype-50; else if(tmp >= 40) tmp = vartype-40; else if(tmp >= 30) tmp = vartype-30; else if(tmp >= 20) tmp = vartype-20; return tmp; } /* * #ifdef MMVAR11 // 同一行先排序: ,不同行分开排序,如何实现。 int i,j; for(i=0;istatus.variNum-1;i++){ bool ch_flag=0; for(j=i+1;jstatus.variNum;j++){ if(sysPara->status.vars[j].startColPos < sysPara->status.vars[j-1].startColPos ){ int n=sysPara->status.vars[j].startRowPos; sysPara->status.vars[j].startRowPos = sysPara->status.vars[j-1].startRowPos; sysPara->status.vars[j-1].startRowPos = n; n=sysPara->status.vars[j].startColPos; sysPara->status.vars[j].startColPos = sysPara->status.vars[j-1].startColPos; sysPara->status.vars[j-1].startColPos = n; ch_flag =1; } } if(ch_flag==0) break; } #endif */