extern uint64_t art_read(art_t art, uint64_t pSkip, uint64_t pRead, stai_t *data) { uint64_t numPartsReadTotal = UINT64_C(0); int firstFile, lastFile; assert(art != NULL); assert(pSkip + pRead <= artHeader_getNumParticlesTotal(art->header)); local_calcFirstLast(art->numParticlesInFile, art->numFiles - 1, pSkip, pRead, &firstFile, &lastFile); pSkip -= ((uint64_t)firstFile) * art->numParticlesInFile; for (int i = firstFile; i <= lastFile; i++) { uint64_t pSkipFile, pReadFile, actualRead; art_open(art, ART_MODE_READ, i); local_calcSkipAct(art->numParticlesInThisFile, pSkip, pRead, &pSkipFile, &pReadFile); actualRead = art_readFromFile(art, i, pSkipFile, pReadFile, data); assert(actualRead == pReadFile); art_close(art); local_rebaseStaisData(data, actualRead); numPartsReadTotal += actualRead; pSkip -= pSkipFile; pRead -= pReadFile; } local_rebaseStaisData(data, -((int64_t)numPartsReadTotal)); return numPartsReadTotal; }
extern uint64_t art_write(art_t art, uint64_t pSkip, uint64_t pWrite, stai_t *data) { uint64_t numPartsWriteTotal = UINT64_C(0); int firstFile, lastFile; assert(art != NULL); assert(pSkip + pWrite <= artHeader_getNumParticlesTotal(art->header)); local_calcFirstLast(art->numParticlesInFile, art->numFiles - 1, pSkip, pWrite, &firstFile, &lastFile); pSkip -= ((uint64_t)firstFile) * art->numParticlesInFile; for (int i = firstFile; i <= lastFile; i++) { uint64_t pSkipFile, pWriteFile, actualWrite; art_open(art, ART_MODE_WRITE, i); local_calcSkipAct(art->numParticlesInThisFile, pSkip, pWrite, &pSkipFile, &pWriteFile); actualWrite = art_writeToFile(art, i, pSkipFile, pWriteFile, data); assert(actualWrite == pWriteFile); art_close(art); local_rebaseStaisData(data, actualWrite); numPartsWriteTotal += actualWrite; pSkip -= pSkipFile; pWrite -= pWriteFile; } local_rebaseStaisData(data, -((int64_t)numPartsWriteTotal)); return numPartsWriteTotal; }
int main(int argc, char *argv[]) { /* Initialize Artist library, creates window */ art_initSimple(800, 600, 0); /* Initial window settings */ art_setWinTitle("Artist Demo #5"); art_setBackgroundColor(0, 0, 0); int exit = 0; // Load image to a layer Art_Layer* image = art_loadImage("media/saturn.jpg"); int color = 255; int deltaColor = -1; /* Drawing loop */ while (!exit) { color += deltaColor; if (color < 0) { color = 0; deltaColor = 1; } else if (color > 255) { color = 255; deltaColor = -1; } art_setColor(255, color, color, 255); art_drawLayer(image, 80.0f, 25.0f); /* Update window */ art_update(); /* Check events */ while (art_nextEvent()) { if (art_getEventType() == ART_EVENT_QUIT) { exit = 1; } else if (art_getEventType() == ART_EVENT_KEY_DOWN) { if (art_getKeyCode() == ART_KEY_ESCAPE) { exit = 1; } } } } /* Close artist libarary before exiting program */ art_close(); return 0; }
int main(int argc, char *argv[]) { /* Initialize Artist library, creates window */ art_initSimple(800, 600, 0); /* Initial window settings */ art_setWinTitle("Artist Demo #1"); art_setBackgroundColor(255, 255, 255); int exit = 0; /* Drawing loop */ while (!exit) { /* Draw frame */ art_setColor(255, 0, 0, 255); art_drawTriangle(50.0, 150.0, 150.0, 150.0, 100.0, 50.0); art_drawSquare(300.0, 100.0, 100.0); art_drawCircle(500.0, 100.0, 50.0); art_drawRectangle(680.0, 50.0, 40.0, 100.0); art_drawRectangle(650.0, 80.0, 100.0, 40.0); art_setColor(0, 255, 0, 255); art_fillTriangle(50.0, 350.0, 150.0, 350.0, 100.0, 250.0); art_fillSquare(300.0, 300.0, 100.0); art_fillCircle(500.0, 300.0, 50.0); art_fillRectangle(680.0, 250.0, 40.0, 100.0); art_fillRectangle(650.0, 280.0, 100.0, 40.0); art_setColor(0, 0, 255, 255); art_fillCircleSlice(100.0f, 500.0f, 50.0f, 0.0, M_PI * 0.5); art_fillCircleSlice(300.0f, 500.0f, 50.0f, 0.0, M_PI); art_fillCircleSlice(500.0f, 500.0f, 50.0f, 0.0, M_PI * 1.5); art_fillCircle(700.0f, 500.0f, 50.0f); /* Update window */ art_update(); /* Check events */ while (art_nextEvent()) { if (art_getEventType() == ART_EVENT_QUIT) { exit = 1; } else if (art_getEventType() == ART_EVENT_KEY_DOWN) { if (art_getKeyCode() == ART_KEY_ESCAPE) { exit = 1; } } } } /* Close artist libarary before exiting program */ art_close(); return 0; }
extern void art_del(art_t *art) { assert(art != NULL && *art != NULL); if ((*art)->header != NULL) artHeader_del(&((*art)->header)); art_close(*art); if ((*art)->fileNamesData != NULL) { for (int i = 0; i < (*art)->numFiles; i++) { if ((*art)->fileNamesData[i] != NULL) xfree((*art)->fileNamesData[i]); } xfree((*art)->fileNamesData); } if ((*art)->fileNameHeader != NULL) xfree((*art)->fileNameHeader); xfree(*art); art = NULL; }
extern uint64_t art_readFromFile(art_t art, int fileNumber, uint64_t pSkip, uint64_t pRead, stai_t *data) { bool wasOpened; uint64_t numPartsReadTotal = UINT64_C(0); int firstPage, lastPage; wasOpened = (art->f == NULL) ? false : true; art_open(art, ART_MODE_READ, fileNumber); local_calcFirstLast(art->numParticlesInPage, art->numPagesInThisFile, pSkip, pRead, &firstPage, &lastPage); pSkip -= ((uint64_t)firstPage) * art->numParticlesInPage; for (int i = firstPage; i <= lastPage; i++) { uint64_t pSkipPage, pReadPage, actualRead; local_calcSkipAct(art->numParticlesInPage, pSkip, pRead, &pSkipPage, &pReadPage); actualRead = art_readFromPage(art, i, pSkipPage, pReadPage, data); assert(actualRead == pReadPage); local_rebaseStaisData(data, actualRead); numPartsReadTotal += actualRead; pSkip -= pSkipPage; pRead -= pReadPage; } local_rebaseStaisData(data, -((int64_t)numPartsReadTotal)); if (!wasOpened) art_close(art); return numPartsReadTotal; }
extern uint64_t art_writeToFile(art_t art, int fileNumber, uint64_t pSkip, uint64_t pWrite, stai_t *data) { bool wasOpened; uint64_t numPartsWriteTotal = UINT64_C(0); int firstPage, lastPage; wasOpened = (art->f == NULL) ? false : true; art_open(art, ART_MODE_WRITE, fileNumber); local_calcFirstLast(art->numParticlesInPage, art->numPagesInThisFile, pSkip, pWrite, &firstPage, &lastPage); pSkip -= ((uint64_t)firstPage) * art->numParticlesInPage; for (int i = firstPage; i <= lastPage; i++) { uint64_t pSkipPage, pWritePage, actualWrite; local_calcSkipAct(art->numParticlesInPage, pSkip, pWrite, &pSkipPage, &pWritePage); actualWrite = art_writeToPage(art, i, pSkipPage, pWritePage, data); assert(actualWrite == pWritePage); local_rebaseStaisData(data, actualWrite); numPartsWriteTotal += actualWrite; pSkip -= pSkipPage; pWrite -= pWritePage; } local_rebaseStaisData(data, -((int64_t)numPartsWriteTotal)); if (!wasOpened) art_close(art); return numPartsWriteTotal; }
int main(int argc, char *argv[]) { /* Initialize Artist library, creates window */ art_initSimple(800, 600, 0); /* Initial window settings */ art_setWinTitle("Artist Demo #7"); art_setBackgroundColor(0, 0, 0); int exit = 0; // Load image to a layer Art_Layer* image = art_loadImage("media/saturn.jpg"); float scale = 1.0f; float rot = 0.0f; /* Drawing loop */ while (!exit) { art_setRotation(400, 300, rot); art_setColor(255, 255, 255, 255); art_drawLayer(image, 80.0f, 25.0f); rot += 0.005f; /* Update window */ art_update(); /* Check events */ while (art_nextEvent()) { if (art_getEventType() == ART_EVENT_QUIT) { exit = 1; } else if (art_getEventType() == ART_EVENT_KEY_DOWN) { if (art_getKeyCode() == ART_KEY_ESCAPE) { exit = 1; } } else if (art_getEventType() == ART_EVENT_MOUSE_WHEEL_UP) { scale += 0.05f; updateScale(scale); } else if (art_getEventType() == ART_EVENT_MOUSE_WHEEL_DOWN) { if (scale >= 0.05f) { scale -= 0.05f; updateScale(scale); } } } } /* Close artist libarary before exiting program */ art_close(); return 0; }