Beispiel #1
0
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
Beispiel #2
0
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();
};
Beispiel #3
0
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;
}