//////////////////////////////////////////////////// // OnSavesvg 矩形内SVG保存函数 //////////////////////////////////////////////////// CString CRectangle::OnSavesvg() { HDC hDC = CreateCompatibleDC(NULL); int cut = round( ( double ) 10 * 1.0); CString rec_Temp,text_Temp; //rec_Temp保存绘制形状的路径 text_Temp保存绘制文字的变量 rec_Temp.Format("<rect x=\"%d\" y=\"%d\" width=\"%d\" height=\"%d\" style=\"fill:rgb(255,255,255);stroke-width:1;stroke:rgb(0,0,0)\"/>\r\n",point1.x,point1.y,point2.x-point1.x,point2.y-point1.y); CString isItalic,isUnderline; // isItalic和isUnderline分别为是否斜体和下划线 if(logFont.lfItalic == true) isItalic="Italic"; else isItalic="Normal"; if(logFont.lfUnderline == true) isUnderline="Underline"; else isUnderline="none"; text_Temp.Format("<text x=\"%d\" y=\"%d\" style=\"fill:RGB(%d,%d,%d); text-anchor: middle; font-size:%dpt; font-weight:%d; font-family:%s; font-style:%s; text-decoration:%s\">%s</text>\r\n", (point1.x + point2.x) / 2,point1.y + cut / 2 + abs(logFont.lfHeight),GetRValue(GetClr()),GetGValue(GetClr()),GetBValue(GetClr()),(int)(-(float)logFont.lfHeight * 72.0 / GetDeviceCaps(hDC, LOGPIXELSY) + 0.5),logFont.lfWeight,logFont.lfFaceName,(LPCTSTR)isItalic,(LPCTSTR)isUnderline,GetTitle()); return rec_Temp+text_Temp; //return 向flowchart_testDoc中返回上述两字符串 }
//////////////////////////////////////////////////// // OnSavesvg 折线内SVG保存函数 //////////////////////////////////////////////////// CString CLine::OnSavesvg() { HDC hDC = CreateCompatibleDC(NULL); CString lne_Temp,text_Temp,array_Temp; //rec_Temp保存绘制形状的路径 text_Temp保存绘制文字的变量 array_Temp保存箭头绘制变量 lne_Temp.Format("<polyline points=\"%d,%d %d,%d %d,%d %d,%d %d,%d %d,%d\" style=\"fill:rgb(255,255,255);fill-opacity:0;stroke-width:1;stroke:rgb(0,0,0)\"/>\r\n",point1.x,point1.y,mpoint1.x,mpoint1.y,mpoint2.x,mpoint2.y,mpoint3.x,mpoint3.y,mpoint4.x,mpoint4.y,point2.x,point2.y); if(mpoint4.x==point2.x) //如果是向下的箭头 array_Temp.Format("<polyline points=\"%d,%d %d,%d %d,%d\" style=\"fill:rgb(255,255,255);fill-opacity:0;stroke-width:1;stroke:rgb(0,0,0)\"/>\r\n",point2.x-5,point2.y-5,point2.x,point2.y,point2.x+5,point2.y-5); else if(mpoint4.y==point2.y) //如果是向右的箭头 array_Temp.Format("<polyline points=\"%d,%d %d,%d %d,%d\" style=\"fill:rgb(255,255,255);fill-opacity:0;stroke-width:1;stroke:rgb(0,0,0)\"/>\r\n",point2.x-5,point2.y-5,point2.x,point2.y,point2.x-5,point2.y+5); CString isItalic,isUnderline; // isItalic和isUnderline分别为是否斜体和下划线 int cut = round( ( double ) 10 * 1.0 ); if(logFont.lfItalic == true) isItalic="Italic"; else isItalic="Normal"; if(logFont.lfUnderline == true) isUnderline="Underline"; else isUnderline="none"; text_Temp.Format("<text x=\"%d\" y=\"%d\" style=\"fill:RGB(%d,%d,%d); text-anchor: middle; font-size:%dpt; font-weight:%d; font-family:%s; font-style:%s; text-decoration:%s\">%s</text>\r\n", (point1.x + point2.x) / 2,point1.y + (point2.x-point1.x) / 10 + abs(logFont.lfHeight),GetRValue(GetClr()),GetGValue(GetClr()),GetBValue(GetClr()),(int)(-(float)logFont.lfHeight * 72.0 / GetDeviceCaps(hDC, LOGPIXELSY) + 0.5),logFont.lfWeight,logFont.lfFaceName,(LPCTSTR)isItalic,(LPCTSTR)isUnderline,GetTitle()); return lne_Temp+text_Temp+array_Temp; //return 向flowchart_testDoc中返回上述三字符串 }
void format::button_ok_VwXEvOnButtonClick(wxCommandEvent& event,int index) { FB_Edit * stc = Parent->stc; int idx = Parent->FBNotebook->GetSelection(); Buffer * buff = Parent->bufferList[idx]; if (buff->GetFileType()>0) return; wxString guts=Parent->stc->GetText(),tagstart="",tagend=""; int sel=chc15->GetSelection(); bool dotags=false,dokeyws=false; wxString output=""; StyleInfo * Style = &(Parent->Style); switch(sel) { case 0: dokeyws=true; break; case 1: dokeyws=true; break; case 2: dokeyws=true; break; case 3: dotags=true; tagstart="["; tagend="]"; output="[quote=\"fbide 0.4 bbcode generator\"][size=12]"; break; case 4: dotags=true; tagstart="<"; tagend=">"; output="<!DOCTYPE html PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\">\n<html>\n<head>\n<meta http-equiv=\"content-type\" content=\"text/html;charset=iso-8859-1\">\n<title></title>\n</head>\n<body style=\"font-size:12pt; background-color:#"+hex(GetClr(Style->DefaultBgColour))+"; color:#"+hex(GetClr(Style->Info[wxSTC_B_IDENTIFIER].foreground))+"\"><pre>"; break; } wxString curword=""; initkeywords(); int kwtyp=0; bool commenting=false,dontadd=false,quoting=false,bold=false,italic=false; wxString colours[]={hex(GetClr(Style->Info[wxSTC_B_KEYWORD].foreground)), hex(GetClr(Style->Info[wxSTC_B_KEYWORD2].foreground)), hex(GetClr(Style->Info[wxSTC_B_KEYWORD3].foreground)), hex(GetClr(Style->Info[wxSTC_B_KEYWORD4].foreground)), hex(GetClr(Style->Info[wxSTC_B_COMMENT].foreground)), hex(GetClr(Style->Info[wxSTC_B_OPERATOR].foreground)), hex(GetClr(Style->Info[wxSTC_B_STRING].foreground)), hex(GetClr(Style->Info[wxSTC_B_NUMBER].foreground)), hex(GetClr(Style->Info[wxSTC_B_PREPROCESSOR].foreground))}; int teh_len=(int)guts.Len(),real_len=(int)guts.Len(),color=-1; for(int i=0;i<teh_len;i++) { unsigned char j00_n00b=guts.GetChar(i); curword+=j00_n00b; if(j00_n00b!=38&& (j00_n00b>0&&j00_n00b<46)|| j00_n00b==47|| (j00_n00b>57&&j00_n00b<65)|| (j00_n00b>90&&j00_n00b<95)|| j00_n00b==96|| (j00_n00b>122&&j00_n00b<128)) { curword=curword.Left(curword.Len()-1); if(dotags&&!commenting&&!quoting&&(kwtyp=isKeyword(curword))!=0) { if(color!=kwtyp-1) { if(color!=-1) output+=tagstart+(sel==4?"/span":"/color")+tagend; if(bold) output+=tagstart+"/b"+tagend; if(italic) output+=tagstart+"/i"+tagend; output+=tagstart+"b"+tagend+tagstart+(sel==4?"span style=\"color:#":"color=#")+colours[kwtyp-1]+ \ (sel==4?"\"":"")+tagend+curword+(dontadd?"":wxString::Format("%c",j00_n00b)); } else output+=curword+(dontadd?"":wxString::Format("%c",j00_n00b)); color=kwtyp-1; bold=true; italic=false; } else if(dotags&&!commenting&&!quoting&&isNumeric(curword)) { if(color!=7) { if(color!=-1) output+=tagstart+(sel==4?"/span":"/color")+tagend; if(bold) output+=tagstart+"/b"+tagend; if(italic) output+=tagstart+"/i"+tagend; output+=tagstart+(sel==4?"span style=\"color:#":"color=#")+colours[7]+ \ (sel==4?"\"":"")+tagend+curword+(dontadd?"":wxString::Format("%c",j00_n00b)); } else output+=curword+(dontadd?"":wxString::Format("%c",j00_n00b)); color=7; bold=false; italic=false; } else if(dokeyws&&!commenting&&!quoting&&isKeyword(curword)!=0) { switch(sel) { case 0: curword=curword.Left(1).MakeUpper()+curword.Mid(1).MakeLower(); break; case 1: curword=curword.MakeUpper(); break; case 2: curword=curword.MakeLower(); break; } output+=curword+(dontadd?"":wxString::Format("%c",j00_n00b)); } else { if(!commenting&&!quoting) { if(color!=-1) output+=tagstart+(sel==4?"/span":"/color")+tagend; if(bold) output+=tagstart+"/b"+tagend; if(italic) output+=tagstart+"/i"+tagend; color=-1; } bold=false; italic=false; output+=curword+(dontadd?"":wxString::Format("%c",j00_n00b)); } curword=""; int mylen=output.Len(); if(!commenting&&!quoting&&j00_n00b=='\'') { commenting=true; if(dotags) { output=output.Left(mylen-1); if(color!=-1) output+=tagstart+(sel==4?"/span":"/color")+tagend; if(bold) output+=tagstart+"/b"+tagend; if(italic) output+=tagstart+"/i"+tagend; output+=tagstart+"i"+tagend+tagstart+(sel==4?"span style=\"color:#":"color=#")+colours[4]+ \ (sel==4?"\"":"")+tagend; output+=j00_n00b; } } else if((j00_n00b=='\n'||j00_n00b=='\r')&&commenting) { commenting=false; color=-1; bold=false; italic=false; if(dotags) { output=output.Left(mylen-1); output+=tagstart+(sel==4?"/span":"/color")+tagend+tagstart+"/i"+tagend; output+=j00_n00b; } } if(!commenting&&!quoting&&j00_n00b=='\"') { if(dotags) { output=output.Left(mylen-1); if(color!=-1) output+=tagstart+(sel==4?"/span":"/color")+tagend; if(bold) output+=tagstart+"/b"+tagend; if(italic) output+=tagstart+"/i"+tagend; output+=tagstart+(sel==4?"span style=\"color:#":"color=#")+colours[6]+ \ (sel==4?"\"":"")+tagend; output+=j00_n00b; } quoting=true; } else if((j00_n00b=='\"'||j00_n00b=='\n'||j00_n00b=='\r')&"ing) { quoting=false; color=-1; bold=false; italic=false; if(dotags) output+=tagstart+(sel==4?"/span":"/color")+tagend; } if(!commenting&&!quoting&&j00_n00b=='#'&&(i==0||(output.Mid(output.Len()-2,1)=="\n"||output.Mid(output.Len()-2,1)=="\r"))) { output=output.Left(mylen-1); if(color!=-1) output+=tagstart+(sel==4?"/span":"/color")+tagend; if(bold) output+=tagstart+"/b"+tagend; if(italic) output+=tagstart+"/i"+tagend; color=-1; bold=false; italic=false; if(dotags) output+=tagstart+(sel==4?"span style=\"color:#":"color=#")+colours[8]+ \ (sel==4?"\"":"")+tagend; output+=j00_n00b; for(i++;guts.GetChar(i)!='\n'&&i<teh_len;i++) { output+=guts.Mid(i,1); } output+='\n'; if(dotags) output << tagstart+(sel==4?"/span":"/color")+tagend << guts.GetChar(i); } else if(dotags&&!commenting&&!quoting&&j00_n00b=='#') { output=output.Left(mylen-1); output+=tagstart+"b"+tagend+tagstart+(sel==4?"span style=\"color:#":"color=#")+colours[5]+ \ (sel==4?"\"":"")+tagend; output+=j00_n00b; output+=tagstart+(sel==4?"/span":"/color")+tagend+tagstart+"/b"+tagend; } if(dotags&&((j00_n00b>39&&j00_n00b<46)||j00_n00b==47|| (j00_n00b>57&&j00_n00b<64)||j00_n00b==92||j00_n00b==94|| (j00_n00b>122&&j00_n00b<128))&&!commenting&&!quoting) { output=output.Left(mylen-1); output+=tagstart+"b"+tagend+tagstart+(sel==4?"span style=\"color:#":"color=#")+colours[5]+ \ (sel==4?"\"":"")+tagend; output+=j00_n00b; output+=tagstart+(sel==4?"/span":"/color")+tagend+tagstart+"/b"+tagend; } } if(i+1==real_len) { guts+="\n"; teh_len++; dontadd=true; } } if (sel < 3) { buff = stc->buff; buff->SetPositions(stc->GetSelectionStart(), stc->GetSelectionEnd()); buff->SetLine(stc->GetFirstVisibleLine()); buff->SetCaretPos(stc->GetCurrentPos()); stc->SetText(output); stc->ScrollToLine(buff->GetLine()); stc->SetCurrentPos(buff->GetCaretPos()); stc->SetSelectionStart(buff->GetSelectionStart()); stc->SetSelectionEnd(buff->GetSelectionEnd()); } else { if(color!=-1) output+=tagstart+(sel==4?"/span":"/color")+tagend; if(bold) output+=tagstart+"/b"+tagend; if(italic) output+=tagstart+"/i"+tagend; if (sel==4) output+="</pre></body></html>"; else if(sel==3) output+="[/size][/quote]"; Parent->NewSTCPage("",true, 1); stc->SetText(output); } }