Exemplo n.º 1
0
///////////////////////////////////////////////////////////////////////////////////////////
//
// moves the lower scores down the array one step (the lowest score falls off the array)
//
///////////////////////////////////////////////////////////////////////////////////////////
void CHighScores::Cascade( int index, const char* name, int score )
{
	// base case, we have reached the end of the array
	if( index >= NUM_HIGH_SCORES || score == 0)
		return;

    // recursively move the next one down.
	Cascade( index+1, this->high_scores[index].name, this->high_scores[index].high_score );
	
	// insert the new item
	strcpy( this->high_scores[index].name, name );
	this->high_scores[index].high_score = score;

}
void __fastcall TfrmMain::New1Click(TObject *Sender)
{
    if (workingOnTexture)
    {
        if (CloseTexture("This will close current texture, are you sure?", "Warning") == false)
        {
            return;
        }
    }

    frmNew = new TfrmNew(this);

    if (frmNew->ShowModal() == mrOk)
    {
        nrLayers = 0;

        textureWidth  = newInputTextureWidth;
        textureHeight = newInputTextureHeight;

        generator = new TextureGenerator(textureWidth, textureHeight);

        NewLayer1Click(this);

        layerPreview = new unsigned int[textureWidth * textureHeight];

        mnuMain->Items->Items[menuIndexGenerate]->Visible = true;
        mnuMain->Items->Items[menuIndexDistort]->Visible  = true;
        mnuMain->Items->Items[menuIndexLayer]->Visible    = true;
        mnuMain->Items->Items[menuIndexBlur]->Visible     = true;
        Undo1->Enabled = true;
        Export1->Enabled = true;
        mnuMain->Items->Items[menuIndexColor]->Visible    = true;
        mnuMain->Items->Items[menuIndexFile]->Items[menuIndexClose]->Visible  = true;
        mnuMain->Items->Items[menuIndexFile]->Items[menuIndexSave]->Visible   = true;
        mnuMain->Items->Items[menuIndexFile]->Items[menuIndexSaveAs]->Visible = true;

        Cascade();

        workingOnTexture = true;
        havesFilename    = false;

        Caption = "Aardbei Texture Studio";
    }

    frmNew->Release();
}
Exemplo n.º 3
0
//---------------------------------------------------------------------------
void __fastcall TMainWindow::Cascade1Click(TObject *Sender)
{
	Cascade();
}
Exemplo n.º 4
0
//---------------------------------------------------------
void CSAGA_Frame::On_Frame_Cascade(wxCommandEvent &WXUNUSED(event))
{
	Cascade();
}
void __fastcall TfrmMain::Cascade1Click(TObject *Sender)
{
    Cascade();
}
void __fastcall TfrmMain::Open1Click(TObject *Sender)
{
    if (CloseTexture("This will close current texture, are you sure?", "Warning") == false)
    {
        return;
    }

    if (openedByClicking)
    {
        openedByClicking = false;
    }
    else
    {
        if (dlgOpen->Execute() == false)
        {
            return;
        }

        textureFilename = dlgOpen->Files->Strings[0].c_str();
    }

    loadingTexture = true;

    nrLayers = 0;

    int handle;

    if ((handle = open(textureFilename, O_RDONLY | O_BINARY, S_IREAD)) == -1)
    {
        Application->MessageBoxA("Error opening file", "Error", MB_OK);
        return;
    }

    char header[5] = {'0','0','0','0','\0'};
    read(handle, header, 4);

    int version = - 1;
    if (strcmp(header, TEXGEN_HEADER1) == 0)
    {
        version = 1;
    }
    else
    if (strcmp(header, TEXGEN_HEADER2) == 0)
    {
        version = 2;
    }
    if (version == -1)
    {
        Application->MessageBoxA("Not a valid Aardbei Texture Studio file", "Error", MB_OK);
        return;
    }

    read(handle, &nrFilters, 2);

    read(handle, &textureWidth, 2);
    read(handle, &textureHeight, 2);

    generator = new TextureGenerator(textureWidth, textureHeight);

    NewLayer1Click(this);

    layerPreview = new unsigned int[textureWidth * textureHeight];

    for (int i = 0; i < nrFilters; i++)
    {
        stbMain->SimpleText = "Loading texture (filter " + IntToStr(i + 1) + " / " + IntToStr(nrFilters) + ")";
        unsigned char command;
        long offset = lseek(handle, 0, SEEK_CUR);
        read(handle, &command, 1);
        lseek(handle, offset, SEEK_SET);
        if (command == TEXGEN_NEWLAYER)
        {
            Filter *filter = new Filter();
            filters[i] = filter;
            read(handle, filter, sizeof(Filter));
            NewLayer1Click(this);
        }
        if (command == TEXGEN_CHANGELAYER)
        {
            FilterChangeLayer *filter = new FilterChangeLayer();
            filters[i] = filter;
            read(handle, filter, sizeof(FilterChangeLayer));
            frmLayers[filter->layerNr]->SetFocus();
        }
        if (command == TEXGEN_COPY)
        {
            FilterCopy *filter = new FilterCopy();
            filters[i] = filter;
            read(handle, filter, sizeof(FilterCopy));
            generator->FilterCopy(generator->layerActive,
                                  generator->layers[filter->sourceNr],
                                  filter->channel);
        }
        if (command == TEXGEN_ADD)
        {
            FilterAdd *filter = new FilterAdd();
            filters[i] = filter;
            read(handle, filter, sizeof(FilterAdd));
            generator->FilterAdd(generator->layerActive,
                                 generator->layers[filter->sourceNr],
                                 filter->channel);
        }
        if (command == TEXGEN_SUB)
        {
            FilterSub *filter = new FilterSub();
            filters[i] = filter;
            read(handle, filter, sizeof(FilterSub));
            generator->FilterSub(generator->layerActive,
                                 generator->layers[filter->sourceNr],
                                 filter->channel);
        }
        if (command == TEXGEN_MUL)
        {
            FilterMul *filter = new FilterMul();
            filters[i] = filter;
            read(handle, filter, sizeof(FilterMul));
            generator->FilterMul(generator->layerActive,
                                 generator->layers[filter->sourceNr],
                                 filter->channel);
        }
        if (command == TEXGEN_NOTNULLCOPY)
        {
            FilterNotNull *filter = new FilterNotNull();
            filters[i] = filter;
            read(handle, filter, sizeof(FilterNotNull));
            generator->FilterNotNullCopy(generator->layerActive,
                                         generator->layers[filter->sourceNr],
                                         filter->channel);
        }
        if (command == TEXGEN_MIX)
        {
            FilterMix *filter = new FilterMix();
            filters[i] = filter;
            read(handle, filter, sizeof(FilterMix));
            generator->FilterMix(generator->layerActive,
                                 generator->layers[filter->sourceNr],
                                 filter->alpha,
                                 filter->channel);
        }
        if (command == TEXGEN_SHADE)
        {
            FilterShade *filter = new FilterShade();
            filters[i] = filter;
            read(handle, filter, sizeof(FilterShade));
            generator->FilterShade(generator->layerActive,
                                   generator->layers[filter->sourceNr],
                                   filter->lightning,
                                   filter->channel);
        }
        if (command == TEXGEN_PLASMA)
        {
            FilterPlasma *filter = new FilterPlasma();
            filters[i] = filter;
            read(handle, filter, sizeof(FilterPlasma));
            generator->FilterPlasma(filter->aantalX,
                                    filter->aantalY,
                                    filter->shiftX,
                                    filter->shiftY,
                                    filter->channel,
                                    filter->method);
        }
        if (command == TEXGEN_FRACTALPLASMA)
        {
            FilterFractalPlasma *filter = new FilterFractalPlasma();
            filters[i] = filter;
            read(handle, filter, sizeof(FilterFractalPlasma));
            generator->FilterFractalPlasma(filter->factor,
                                           filter->seed,
                                           filter->channel,
                                           filter->method);
        }
        if (command == TEXGEN_CELLS)
        {
            FilterCells *filter = new FilterCells();
            filters[i] = filter;
            read(handle, filter, sizeof(FilterCells));
            generator->FilterCells(filter->density,
                                   filter->strength,
                                   filter->seed,
                                   filter->channel,
                                   filter->method);
        }
        if (command == TEXGEN_TEXT)
        {
            FilterText *filter = new FilterText();
            filters[i] = filter;
            read(handle, filter, sizeof(FilterText));
            generator->FilterText(filter->text,
                                  filter->font,
                                  filter->color,
                                  filter->size,
                                  filter->x,
                                  filter->y,
                                  filter->aa,
                                  filter->style,
                                  filter->clip,
                                  filter->method);
        }
        if (command == TEXGEN_BRUSH)
        {
            FilterBrush *filter = new FilterBrush();
            filters[i] = filter;
            read(handle, filter, sizeof(FilterBrush));
            generator->FilterBrush(filter->x,
                                    filter->y,
                                    filter->size,
                                    filter->density,
                                    filter->hardness,
                                    filter->opacity,
                                    filter->color);
        }
        if (command == TEXGEN_NOISE)
        {
            FilterNoise *filter = new FilterNoise();
            filters[i] = filter;
            read(handle, filter, sizeof(FilterNoise));
            generator->FilterNoise(filter->strength,
                                   filter->uniform,
                                   filter->multi,
                                   filter->seed,
                                   filter->channel,
                                   filter->method);
        }
        if (command == TEXGEN_RECTANGLE)
        {
            FilterRectangle *filter = new FilterRectangle();
            filters[i] = filter;
            read(handle, filter, sizeof(FilterRectangle));
            generator->FilterRectangle(filter->x1,
                                       filter->y1,
                                       filter->x2,
                                       filter->y2,
                                       filter->color,
                                       filter->method);
        }
        if (command == TEXGEN_GAUSSIANBLUR)
        {
            FilterGaussianBlur *filter = new FilterGaussianBlur();
            filters[i] = filter;
            read(handle, filter, sizeof(FilterGaussianBlur));
            if (version == 1)
            {
                filter->radius *= 27;
            }
            generator->FilterGaussianBlur(filter->radius);
        }
        if (command == TEXGEN_MOTIONBLUR)
        {
            FilterMotionBlur *filter = new FilterMotionBlur();
            filters[i] = filter;
            read(handle, filter, sizeof(FilterMotionBlur));
            generator->FilterMotionBlur(filter->angle,
                                        filter->radius);
        }
        if (command == TEXGEN_DIRBLUR)
        {
            FilterDirBlur *filter = new FilterDirBlur();
            filters[i] = filter;
            read(handle, filter, sizeof(FilterDirBlur));
            generator->FilterDirBlur(generator->layers[filter->sourceNr],
                                     filter->aantal,
                                     filter->channel);
        }
        if (command == TEXGEN_BOXBLUR)
        {
            Filter *filter = new Filter();
            filters[i] = filter;
            read(handle, filter, sizeof(Filter));
            generator->FilterBoxBlur();
        }
        if (command == TEXGEN_EMBOSS)
        {
            Filter *filter = new Filter();
            filters[i] = filter;
            read(handle, filter, sizeof(Filter));
            generator->FilterEmboss();
        }
        if (command == TEXGEN_SOBEL)
        {
            Filter *filter = new Filter();
            filters[i] = filter;
            read(handle, filter, sizeof(Filter));
            generator->FilterSobel();
        }
        if (command == TEXGEN_EDGE)
        {
            Filter *filter = new Filter();
            filters[i] = filter;
            read(handle, filter, sizeof(Filter));
            generator->FilterEdge();
        }
        if (command == TEXGEN_TOPLEFT)
        {
            Filter *filter = new Filter();
            filters[i] = filter;
            read(handle, filter, sizeof(Filter));
            generator->FilterTopLeft();
        }
        if (command == TEXGEN_HSV)
        {
            FilterHsv *filter = new FilterHsv();
            filters[i] = filter;
            read(handle, filter, sizeof(FilterHsv));
            generator->FilterHsv(filter->rotation,
                                 filter->saternation);
        }
        if (command == TEXGEN_INVERT)
        {
            Filter *filter = new Filter();
            filters[i] = filter;
            read(handle, filter, sizeof(Filter));
            generator->FilterInvert();
        }
        if (command == TEXGEN_CONTRAST)
        {
            FilterContrast *filter = new FilterContrast();
            filters[i] = filter;
            read(handle, filter, sizeof(FilterContrast));
            generator->FilterContrast(filter->strength);
        }
        if (command == TEXGEN_BRIGHTNESS)
        {
            FilterBrightness *filter = new FilterBrightness();
            filters[i] = filter;
            read(handle, filter, sizeof(FilterBrightness));
            generator->FilterBrightness(filter->strength);
        }
        if (command == TEXGEN_SINEDISTORT)
        {
            FilterSineDistort *filter = new FilterSineDistort();
            filters[i] = filter;
            read(handle, filter, sizeof(FilterSineDistort));
            generator->FilterSineDistort(filter->nrX,
                                         filter->nrY,
                                         filter->ampX,
                                         filter->ampY,
                                         filter->shiftX,
                                         filter->shiftY);
        }
        if (command == TEXGEN_TILE)
        {
            FilterTile *filter = new FilterTile();
            filters[i] = filter;
            read(handle, filter, sizeof(FilterTile));
            generator->FilterTile(filter->repX,
                                  filter->repY);
        }
    }

    close(handle);

    mnuMain->Items->Items[menuIndexGenerate]->Visible = true;
    mnuMain->Items->Items[menuIndexDistort]->Visible  = true;
    mnuMain->Items->Items[menuIndexLayer]->Visible    = true;
    mnuMain->Items->Items[menuIndexBlur]->Visible     = true;
    Undo1->Enabled = true;
    Export1->Enabled = true;
    mnuMain->Items->Items[menuIndexColor]->Visible    = true;
    mnuMain->Items->Items[menuIndexFile]->Items[menuIndexClose]->Visible  = true;
    mnuMain->Items->Items[menuIndexFile]->Items[menuIndexSave]->Visible   = true;
    mnuMain->Items->Items[menuIndexFile]->Items[menuIndexSaveAs]->Visible = true;

    Caption = "Aardbei Texture Studio (" + AnsiString(textureFilename) + ")";

    havesFilename    = true;
    workingOnTexture = true;
    loadingTexture   = false;

    for (int i = 0; i < nrLayers; i++)
    {
        frmLayers[i]->UpdateOutput();
    }

    stbMain->SimpleText = "";

    Cascade();
}