//---------------------------------------------------------------------------
int __stdcall run(Block *aBlock)
{
	if(aBlock->input.size() != 1 || aBlock->input[0].getConnectedType().IsEmpty())
		return 1;

	Graphics::TBitmap* picture = new Graphics::TBitmap();
	AnsiString connectedType(aBlock->input[0].getConnectedType());
	
	if(connectedType == "Bitmap1bit")
		picture->Assign(const_cast<Graphics::TBitmap*>(&(IBitmap1bit::getBitmap(aBlock->input[0].getObject()))));

	else	if(connectedType == "Bitmap4bit")
		picture->Assign(const_cast<Graphics::TBitmap*>(&(IBitmap4bit::getBitmap(aBlock->input[0].getObject()))));

	else	if(connectedType == "Bitmap8bit")
		picture->Assign(const_cast<Graphics::TBitmap*>(&(IBitmap8bit::getBitmap(aBlock->input[0].getObject()))));

	else	if(connectedType == "Bitmap16bit")
		picture->Assign(const_cast<Graphics::TBitmap*>(&(IBitmap16bit::getBitmap(aBlock->input[0].getObject()))));

	else	if(connectedType == "Bitmap24bit")
		picture->Assign(const_cast<Graphics::TBitmap*>(&(IBitmap24bit::getBitmap(aBlock->input[0].getObject()))));

	else	if(connectedType == "Bitmap32bit")
		picture->Assign(const_cast<Graphics::TBitmap*>(&(IBitmap32bit::getBitmap(aBlock->input[0].getObject()))));

	int mode=aBlock->getConfig()->getInt("mode");

	if(mode == 0)
	{
		if(!Binarization(picture))
		{
			aBlock->output[0].setErrorCode(2);
			aBlock->output[0].setErrorDescription("Pusta bitmapa");
			picture->Free();
			return 2;
		}
	}
	else
	{
		int limitB(aBlock->getConfig()->getInt("limitB"));
		if(!BinarizationBalance(picture,limitB,clWhite,clBlack))
		{
			aBlock->output[0].setErrorCode(2);
			aBlock->output[0].setErrorDescription("Pusta bitmapa");
			picture->Free();
			return 2;
		}
	}
    
	TypeConfig* copy = IBitmap1bit::getNew();

	IBitmap1bit::setBitmap(copy, *picture);
	aBlock->output[0].setObject(*copy);

	picture->Free();
	delete copy;

	return 0;
}
示例#2
0
//---------------------------------------------------------------------------
void __fastcall TFormMain::FormCreate(TObject *Sender)
{
  SetFileName("");
  PaintBox->ControlStyle = PaintBox->ControlStyle << csOpaque;
  SetZoom(11);

  Graphics::TBitmap* BM = new Graphics::TBitmap;
  __try
  {
    BM->Width = 64;
    BM->Height = 64;
    
    for (int i = 0; i < YETI_TEXTURE_MAX; i++)
    {
      for (int y = 0; y < 64; y++)
      {
        for (int x = 0; x < 64; x++)
        {
          int c = textures[i][y][x];
          BM->Canvas->Pixels[x][y] = (TColor) RGB(
            palette[c][0], palette[c][1], palette[c][2]);
        }
      }
      TListItem* LI = ListView->Items->Add();
      LI->Caption = String("#") + i;
      LI->ImageIndex = ILTextures->Add(BM, NULL);
    }
  }
  __finally
  {
    BM->Free();
  }
  ListView->ItemIndex = 0;
}
//---------------------------------------------------------------------------
int __stdcall run(Block *aBlock)
{
	if(aBlock->input.size() != 1 || aBlock->input[0].getConnectedType().IsEmpty())
		return 1;

	Graphics::TBitmap* picture = new Graphics::TBitmap();
	AnsiString connectedType(aBlock->input[0].getConnectedType());
	
	if(connectedType == "Bitmap1bit")
		picture->Assign(const_cast<Graphics::TBitmap*>(&(IBitmap1bit::getBitmap(aBlock->input[0].getObject()))));

	else	if(connectedType == "Bitmap4bit")
		picture->Assign(const_cast<Graphics::TBitmap*>(&(IBitmap4bit::getBitmap(aBlock->input[0].getObject()))));

	else	if(connectedType == "Bitmap8bit")
		picture->Assign(const_cast<Graphics::TBitmap*>(&(IBitmap8bit::getBitmap(aBlock->input[0].getObject()))));

	else	if(connectedType == "Bitmap16bit")
		picture->Assign(const_cast<Graphics::TBitmap*>(&(IBitmap16bit::getBitmap(aBlock->input[0].getObject()))));

	else	if(connectedType == "Bitmap24bit")
		picture->Assign(const_cast<Graphics::TBitmap*>(&(IBitmap24bit::getBitmap(aBlock->input[0].getObject()))));

	else	if(connectedType == "Bitmap32bit")
		picture->Assign(const_cast<Graphics::TBitmap*>(&(IBitmap32bit::getBitmap(aBlock->input[0].getObject()))));
	Graphics::TBitmap** pict;
	if(picture->Width==picture->Height)
	{
		pict = Fimage(picture);
		if(pict[0]==NULL || pict[1]==NULL)//na razie dzial tylko dla obrazow NxN
		{
                aBlock->output[0].setErrorCode(2);
                aBlock->output[0].setErrorDescription("Pusta bitmapa");
                picture->Free();
                return 2;
		}
	}
	else {
                aBlock->output[0].setErrorCode(2);
                aBlock->output[0].setErrorDescription("Bitmapa musi byc kwadratowa");
                picture->Free();
                return 2;
	}

	TypeConfig* copy1;
    TypeConfig* copy2;

    copy1 = IBitmap8bit::getNew();
    IBitmap8bit::setBitmap(copy1, *pict[0]);

    copy2 = IBitmap8bit::getNew();
    IBitmap8bit::setBitmap(copy2, *pict[1]);


	aBlock->output[0].setObject(*copy1);
	aBlock->output[1].setObject(*copy2);
	
	pict[0]->Free();
    pict[1]->Free();
    delete pict;
	delete copy1;
    delete copy2;

	return 0;
}
//---------------------------------------------------------------------------
int __stdcall run(Block *aBlock)
{
	if(aBlock->input.size() != 1 || aBlock->input[0].getConnectedType().IsEmpty()||aBlock->getConfig()->getString("path").IsEmpty())
		return 1;

	Graphics::TBitmap* picture = new Graphics::TBitmap();
	AnsiString connectedType(aBlock->input[0].getConnectedType());

	if(connectedType == "Bitmap1bit")
		picture->Assign(const_cast<Graphics::TBitmap*>(&(IBitmap1bit::getBitmap(aBlock->input[0].getObject()))));

	else if(connectedType == "Bitmap4bit")
		picture->Assign(const_cast<Graphics::TBitmap*>(&(IBitmap4bit::getBitmap(aBlock->input[0].getObject()))));

	else	if(connectedType == "Bitmap8bit")
		picture->Assign(const_cast<Graphics::TBitmap*>(&(IBitmap8bit::getBitmap(aBlock->input[0].getObject()))));

	else if(connectedType == "Bitmap16bit")
		picture->Assign(const_cast<Graphics::TBitmap*>(&(IBitmap16bit::getBitmap(aBlock->input[0].getObject()))));

	else	if(connectedType == "Bitmap24bit")
		picture->Assign(const_cast<Graphics::TBitmap*>(&(IBitmap24bit::getBitmap(aBlock->input[0].getObject()))));

	else	if(connectedType == "Bitmap32bit")
		picture->Assign(const_cast<Graphics::TBitmap*>(&(IBitmap32bit::getBitmap(aBlock->input[0].getObject()))));


	AnsiString path(aBlock->getConfig()->getString("path"));
	AnsiString bitrate(aBlock->getConfig()->getString("bitrate"));

	if(bitrate == "Bitmap1bit")
	{
		if(!SaveImage(picture,path,bit_1))
		{
			aBlock->output[0].setErrorCode(2);
			aBlock->output[0].setErrorDescription("B³¹d zapisu obrazu");
			picture->Free();
			return 2;
		}
	}
	else if(bitrate == "Bitmap4bit")
	{
		if(!SaveImage(picture,path,bit_4))
		{
			aBlock->output[0].setErrorCode(2);
			aBlock->output[0].setErrorDescription("B³¹d zapisu obrazu");
			picture->Free();
			return 2;
		}
	}
	else if(bitrate == "Bitmap8bit")
	{
		if(!SaveImage(picture,path,bit_8))
		{
			aBlock->output[0].setErrorCode(2);
			aBlock->output[0].setErrorDescription("B³¹d zapisu obrazu");
			picture->Free();
			return 2;
		}
	}
	else if(bitrate == "Bitmap16bit")
	{
		if(!SaveImage(picture,path,bit_16))
		{
			aBlock->output[0].setErrorCode(2);
			aBlock->output[0].setErrorDescription("B³¹d zapisu obrazu");
			picture->Free();
			return 2;
		}
	}
	else if(bitrate == "Bitmap24bit")
	{
		if(!SaveImage(picture,path,bit_24))
		{
			aBlock->output[0].setErrorCode(2);
			aBlock->output[0].setErrorDescription("B³¹d zapisu obrazu");
			picture->Free();
			return 2;
		}
	}
	else if(bitrate == "Bitmap32bit")
	{
		if(!SaveImage(picture,path,bit_32))
		{
			aBlock->output[0].setErrorCode(2);
			aBlock->output[0].setErrorDescription("B³¹d zapisu obrazu");
			picture->Free();
			return 2;
		}
	}

	picture->Free();
	return 0;	
}
示例#5
0
//---------------------------------------------------------------------------
int __stdcall run(Block *aBlock)
{
	if(aBlock->input.size() != 1 || aBlock->input[0].getConnectedType().IsEmpty())
		return 1;

	Graphics::TBitmap* picture = new Graphics::TBitmap();
	AnsiString connectedType(aBlock->input[0].getConnectedType());
	
	if(connectedType == "Bitmap1bit")
		picture->Assign(const_cast<Graphics::TBitmap*>(&(IBitmap1bit::getBitmap(aBlock->input[0].getObject()))));

	else if(connectedType == "Bitmap4bit")
		picture->Assign(const_cast<Graphics::TBitmap*>(&(IBitmap4bit::getBitmap(aBlock->input[0].getObject()))));

	else	if(connectedType == "Bitmap8bit")
		picture->Assign(const_cast<Graphics::TBitmap*>(&(IBitmap8bit::getBitmap(aBlock->input[0].getObject()))));

	else if(connectedType == "Bitmap16bit")
		picture->Assign(const_cast<Graphics::TBitmap*>(&(IBitmap16bit::getBitmap(aBlock->input[0].getObject()))));

	else	if(connectedType == "Bitmap24bit")
		picture->Assign(const_cast<Graphics::TBitmap*>(&(IBitmap24bit::getBitmap(aBlock->input[0].getObject()))));

	else	if(connectedType == "Bitmap32bit")
		picture->Assign(const_cast<Graphics::TBitmap*>(&(IBitmap32bit::getBitmap(aBlock->input[0].getObject()))));

	if(!InversionColors(picture))
	{
		aBlock->output[0].setErrorCode(2);
		aBlock->output[0].setErrorDescription("Pusta bitmapa");
		picture->Free();
		return 2;
	}
    
	TypeConfig* copy;

	if(connectedType == "Bitmap1bit")
	{
		copy = IBitmap1bit::getNew();
		IBitmap1bit::setBitmap(copy, *picture);
	}
	else if(connectedType == "Bitmap4bit")
	{
		copy = IBitmap4bit::getNew();
		IBitmap4bit::setBitmap(copy, *picture);
	}
	else if(connectedType == "Bitmap8bit")
	{
		copy = IBitmap8bit::getNew();
		IBitmap8bit::setBitmap(copy, *picture);
	}
	else if(connectedType == "Bitmap16bit")
	{
		copy = IBitmap16bit::getNew();
		IBitmap16bit::setBitmap(copy, *picture);
	}
	else if(connectedType == "Bitmap24bit")
	{
		copy = IBitmap24bit::getNew();
		IBitmap24bit::setBitmap(copy, *picture);
	}
	else if(connectedType == "Bitmap32bit")
	{
		copy = IBitmap32bit::getNew();
		IBitmap32bit::setBitmap(copy, *picture);
	}

	aBlock->output[0].setObject(*copy);
	
	picture->Free();
	delete copy;

	return 0;
}