/////////////////////////////////////////////////////////////////////////////////////////// // // 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(); }
//--------------------------------------------------------------------------- void __fastcall TMainWindow::Cascade1Click(TObject *Sender) { Cascade(); }
//--------------------------------------------------------- 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(); }