示例#1
0
文件: art.c 项目: adrpar/densfield
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;
}
示例#2
0
文件: art.c 项目: adrpar/densfield
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;
}
示例#3
0
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;
}
示例#4
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;
}
示例#5
0
文件: art.c 项目: adrpar/densfield
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;
}
示例#6
0
文件: art.c 项目: adrpar/densfield
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;
}
示例#7
0
文件: art.c 项目: adrpar/densfield
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;
}
示例#8
0
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;
}