local bool CalcIsect( const SEGM2 & s0, const SEGM2 & s1, INT32 * xDiv, int * xSgn, INT32 * yDiv, int * ySgn) { assert(s0.n == &s1); // s0 is the lower neghbour of s1 if (not CheckSlope(s0, s1)) return false; INT64 xnom, xden, ynom, yden; if (not SegmIsect( s0.l->g.x, s0.l->g.y, s0.r->g.x, s0.r->g.y, s1.l->g.x, s1.l->g.y, s1.r->g.x, s1.r->g.y, &xnom, &xden, &ynom, &yden)) return false; RoundTo(xnom, xden, xDiv, xSgn); RoundTo(ynom, yden, yDiv, ySgn); return true; } // CalcIsect
void TForm1::fract_draw() { COLORREF *paletterS=new COLORREF[Kmax]; int dopC,dopC2; dopC=ceil((double)Kmax/6); int j=0; for (int i = 0; i <2*dopC; i++) { paletterS[i+j]=RGB(255,i*(255/(2*dopC)),0); } j+=2*dopC; for (int i = 0; i <dopC; i++) { paletterS[i+j]=RGB(255-i*(255/(dopC)),255,0); } j+=dopC; for (int i = 0; i <dopC; i++) { paletterS[i+j]=RGB(0,255,i*(255/(dopC))); } j+=dopC; for (int i = 0; i <dopC; i++) { paletterS[i+j]=RGB(0,255-i*(255/(dopC)),255); } j+=dopC; dopC2=Kmax-j; for (int i = 0; i <dopC2; i++) { paletterS[i+j]=RGB(i*(255/(dopC2)),0,255); } Graphics::TBitmap* after=new Graphics::TBitmap(); after->Width=M; after->Height=N; for (int i=0; i < N; i++) { for (int j=0; j < M; j++) { int f=RoundTo(Matrix[i][j],0); after->Canvas->Pixels[j][i]=paletterS[f]; } } ImageFract->Picture->Bitmap=after; ImageFract->Refresh(); };
local void Isect2X(const SEGM2 & b, INT64 X2, INT32 * yDiv) { INT32 x0 = b.l->g.x; INT32 y0 = b.l->g.y; INT32 x1 = b.r->g.x; INT32 y1 = b.r->g.y; INT64 yden = (INT64)(x1 - x0) * 2; assert(yden > 0); INT64 ynom = yden * y0 + (X2 - 2 * x0) * (y1 - y0); int ySgn; RoundTo(ynom, yden, yDiv, &ySgn); } // IsectX
void __fastcall TfrmOpenFTPDialog::ListDir(TTreeNode * ParentNode) { Screen->Cursor = crHourGlass; if(lvFiles->Items->Count > 100) lvFiles->Hide(); lvFiles->Items->Clear(); try { IdFTP1->List(NULL,"",true); TListItem * Item; TTreeNode * Node; AnsiString FileType; AnsiString FileName; AnsiString Path = IdFTP1->RetrieveCurrentDir(); int k; for(int n = 0;n < IdFTP1->DirectoryListing->Count;n++) { FileName = IdFTP1->DirectoryListing->Items[n]->FileName; if(FileName == "." || FileName == "..") continue; if(IdFTP1->DirectoryListing->Items[n]->ItemType == ditDirectory) { for(k = 0;k < ParentNode->Count;k++) { if(ParentNode->Item[k]->Text == FileName) break; } if(k < ParentNode->Count) continue; Node = tvFolder->Items->AddChild(ParentNode,FileName); Node->ImageIndex = 1; Node->SelectedIndex = 2; } else { Item = lvFiles->Items->Add(); Item->Caption = FileName; Item->ImageIndex = IMAGE_FILE; if(IdFTP1->DirectoryListing->Items[n]->Size > 1048576) Item->SubItems->Add(FloatToStr(RoundTo((float)IdFTP1->DirectoryListing->Items[n]->Size / 1048576,-2)) + "MB"); else if(IdFTP1->DirectoryListing->Items[n]->Size > 1024) Item->SubItems->Add(FloatToStr(RoundTo((float)IdFTP1->DirectoryListing->Items[n]->Size / 1024,-2)) + "KB"); else Item->SubItems->Add(IntToStr(IdFTP1->DirectoryListing->Items[n]->Size) +"B"); FileType = ExtractFileExt(FileName); if(FileType != "") Item->SubItems->Add(FileType.SubString(2,FileType.Length() - 1) + "文件"); else Item->SubItems->Add(""); Item->SubItems->Add(IdFTP1->DirectoryListing->Items[n]->ModifiedDate.FormatString("yyyy-mm-dd hh:nn:ss")); Item->SubItems->Add(Path); Item->Data = (void *)IdFTP1->DirectoryListing->Items[n]->Size; } } } catch(Exception * E) { MessageBox(Handle,E->Message.c_str(),"错误",MB_OK | MB_ICONSTOP); } ParentNode->Expand(false); Screen->Cursor = crDefault; lvFiles->Show(); }
//--------------------------------------------------------------------------- void __fastcall TfrmOpenFTPDialog::SearchFile(AnsiString APath,AnsiString SearchFileName,int Level) { TStringList * DirList = new TStringList; AnsiString FileName; TListItem * Item; AnsiString FileType; try { IdFTP1->ChangeDir(APath); AnsiString CurPath = IdFTP1->RetrieveCurrentDir(); IdFTP1->List(NULL,SearchFileName,true); for(int n = 0;n < IdFTP1->DirectoryListing->Count;n++) { FileName = IdFTP1->DirectoryListing->Items[n]->FileName; if(FileName == "." || FileName == "..") continue; if(IdFTP1->DirectoryListing->Items[n]->ItemType == ditDirectory) { DirList->Add(APath + FileName); } else { //Item = lvFiles->FindCaption(-1,FileName,false,false,false); //if(Item != NULL && strcmp(Item->SubItems->Strings[3].c_str(),CurPath.c_str()) == 0) //{ // continue; //} Item = lvFiles->Items->Add(); Item->Caption = FileName; Item->ImageIndex = IMAGE_FILE; if(IdFTP1->DirectoryListing->Items[n]->Size > 1048576) Item->SubItems->Add(FloatToStr(RoundTo((float)IdFTP1->DirectoryListing->Items[n]->Size / 1048576,-2)) + "MB"); else if(IdFTP1->DirectoryListing->Items[n]->Size > 1024) Item->SubItems->Add(FloatToStr(RoundTo((float)IdFTP1->DirectoryListing->Items[n]->Size / 1024,-2)) + "KB"); else Item->SubItems->Add(IntToStr(IdFTP1->DirectoryListing->Items[n]->Size) +"B"); FileType = ExtractFileExt(FileName); if(FileType != "") Item->SubItems->Add(FileType.SubString(2,FileType.Length() - 1) + "文件"); else Item->SubItems->Add(""); Item->SubItems->Add(IdFTP1->DirectoryListing->Items[n]->ModifiedDate.FormatString("yyyy-mm-dd hh:nn:ss")); Item->SubItems->Add(CurPath); Item->Data = (void *)IdFTP1->DirectoryListing->Items[n]->Size; } } } catch(Exception * E) { Screen->Cursor = crDefault; MessageBox(Handle,E->Message.c_str(),"错误",MB_OK | MB_ICONSTOP); } if(Level > 0) { for(int n = 0;n < DirList->Count;n++) { SearchFile(DirList->Strings[n],SearchFileName,Level - 1); } } delete DirList; }