示例#1
0
bool ANIObject::drawANI(Surface &dest, int16 &left, int16 &top,
                        int16 &right, int16 &bottom) {

    if (!hasBuffer()) {
        uint16 width, height;

        _ani->getMaxSize(width, height);

        resizeBuffer(width, height);
    }

    const ANIFile::Animation &animation = _ani->getAnimationInfo(_animation);
    if (_frame >= animation.frameCount)
        return false;

    const ANIFile::FrameArea &area = animation.frameAreas[_frame];

    left   = _x + area.left;
    top    = _y + area.top;
    right  = _x + area.right;
    bottom = _y + area.bottom;

    if (!saveScreen(dest, left, top, right, bottom))
        return false;

    _ani->draw(dest, _animation, _frame, _x, _y);

    return true;
}
示例#2
0
    void update() {
        if( goFullscreen == 2 ){
            ofSetFullscreen(false);
            ofSetWindowPosition(1920, 0);
        }
        if( goFullscreen == 4 ){
            ofSetFullscreen(true);
            ofViewport(ofGetNativeViewport());
        }
        goFullscreen++;
        if(goFullscreen > 4 && ofGetWindowPositionX() < 1440) {
            goFullscreen = 0;
        }
        
        renderTimer.tick();
        while(osc.hasWaitingMessages()) {
            ofxOscMessage msg;
            osc.getNextMessage(&msg);
            if(msg.getAddress() == "/lookAngle/set") {
                targetLookAngle = msg.getArgAsFloat(0);
            }
            if(msg.getAddress() == "/lookAngle/add") {
                targetLookAngle += msg.getArgAsFloat(0);
                ofLog() << "targetLookAngle: " << targetLookAngle;
            }
            if(msg.getAddress() == "/screenshot") {
                saveScreen("button/");
            }
        }
        lookAngle = ofLerp(lookAngle, targetLookAngle, .1);
        if(screenshotTimer.tick()) {
//            saveScreen("automatic/"); // uncomment to enable automatic screenshot
        }
	}
示例#3
0
void __fastcall writePanel(
	unsigned drawBorder,
	unsigned reverse,
	unsigned char color,
	unsigned char x, unsigned char y,
	unsigned char h, unsigned char w,
	unsigned char *title,
	unsigned char *cancel,
	unsigned char *ok)
{
	unsigned int i = 0, okLeft = 0, cancelLeft = 0;
	unsigned char titleBuffer[81];

	saveScreen();

	//textcolor(color);
	revers(reverse);

	if(drawBorder)
	{
		drawBox(x, y, w, h, color, reverse);
	}
	else
	{
		for(i=0; i<h; ++i)
		{
			cclearxy(x,y+i,w);
		}
	}

	if(title != NULL)
	{
		strcpy(titleBuffer, title);
		if(strlen(titleBuffer) > w-4)
		{
			titleBuffer[w-4]='\0';
		}

		gotoxy(x+2, y);
		cprintf("[%s]", titleBuffer);
	}

	revers(false);

	okLeft = x + w - 2;

	if(ok != NULL)
	{
		okLeft -= 4;
		cputsxy(okLeft, y + h - 1, ok);
	}

	cancelLeft = okLeft - 2;
	if(cancel != NULL)
	{
		cancelLeft -= 8;
		cputsxy(cancelLeft, y + h - 1, cancel);
	}
}
void activateScreenSaver(){
	saveScreen();
	clearFullScreen();
	lastbackgroundcolor = getBackgroundColor();
	setFullBackgroundColor(screensavercolor);
	screensaver = 1;
	return;
}
示例#5
0
文件: rays.cpp 项目: peterbraden/rays
extern "C" int main(int argc, char** argv) {
  // Parse Command Line Args...
  int width = 300;
  int height = 200;
  int opt = 0;
  while ((opt = getopt(argc, argv, "w:h:")) != -1) {
    switch (opt) {
        case 'w':
            width = atoi(optarg);
            break;
        case 'h':
            height = atoi(optarg);
            break;
        default: /* '?' */
            fprintf(stderr, "Usage: %s [-w width] [-h height] name\n",
                    argv[0]);
            exit(EXIT_FAILURE);
        }
  }

  Scene* scene = initScene(width, height);

  scene->objects.buildIndices();
  printf("Initialised scene, %i objects", scene->objects.size());


  time_t start;
  time(&start);
  RenderStats* stats = new RenderStats(0, start);
  RenderContext* ctx = initScreen(scene->width, scene->height);

  // render all as one.
  paint(*ctx, *scene, stats);

  time_t finish;
  time(&finish);
  double elapsed = difftime(finish, start);

  printf("\nImage: %ix%i  Total Rays: %zu (avg pp: %zu)\n",
      scene->width, scene->height, stats->raysTraced,
      stats->raysTraced / (scene->width * scene->height));

  printf("\n%.f seconds (%.f rays per sec)\n",
      elapsed, stats->raysTraced / elapsed);

  #ifndef __EMSCRIPTEN__
  saveScreen(ctx);
  #else
  renderBrowser();
  #endif

  return 0;
}
示例#6
0
void CWindow::paint()
{
	if(savescreen) 
		saveScreen();

	// shadow Box
	if(enableshadow)
		frameBuffer->paintBoxRel(cFrameBox.iX + SHADOW_OFFSET, cFrameBox.iY + SHADOW_OFFSET, cFrameBox.iWidth, cFrameBox.iHeight, COL_INFOBAR_SHADOW_PLUS_0, radius, corner);

	// window Box
	frameBuffer->paintBoxRel(cFrameBox.iX, cFrameBox.iY, cFrameBox.iWidth, cFrameBox.iHeight, color, radius, corner, gradient);
}
示例#7
0
bool ANIObject::drawCMP(Surface &dest, int16 &left, int16 &top,
                        int16 &right, int16 &bottom) {

    if (!hasBuffer()) {
        uint16 width, height;

        _cmp->getMaxSize(width, height);

        resizeBuffer(width, height);
    }

    left   = _x;
    top    = _y;
    right  = _x + _cmp->getWidth (_animation) - 1;
    bottom = _y + _cmp->getHeight(_animation) - 1;

    if (!saveScreen(dest, left, top, right, bottom))
        return false;

    _cmp->draw(dest, _animation, _x, _y, 0);

    return true;
}
示例#8
0
void  readKeyboard(void)
{
	struct dir_node *currentNode;
	unsigned char key;
	bool decision = false;

	key = toupper(cgetc());

	switch((int)key)
	{
	case HK_FORMATTER:
		if(loadOverlay(7))
		{
			formatDisk(selectedPanel);

			clrscr();
			writeMenuBar();
			reloadPanels();
		}
		break;
	case HK_BASIC_VIEWER:
		if(loadOverlay(6))
		{
			viewFileAsBASIC(selectedPanel);

			clrscr();
			writeMenuBar();
			reloadPanels();
		}
		break;
	case HK_HEX_EDIT:
		if(loadOverlay(5))
		{
			hexEditCurrentFile(selectedPanel);

			clrscr();
			writeMenuBar();
			reloadPanels();
		}
		break;

	case CH_ENTER:
		currentNode = getSelectedNode(selectedPanel);
		if(isDirectory(selectedPanel))
		{
			enterDirectory(selectedPanel);
		}
		else if(currentNode != NULL)
		{
			sprintf(filePath, "%s/%s", selectedPanel->path, currentNode->name);
			if(currentNode->type == 0x06
				|| currentNode->type == 0xFF)
			{
				saveScreen();
				decision = writeYesNo("Confirm", quit_message, 1);
				retrieveScreen();

				if(decision == true)
				{
					exec(filePath, NULL);
				}
			}
			else if(currentNode->type == 0xFC)
			{
				if(loadOverlay(6))
				{
					viewFileAsBASIC(selectedPanel);

					clrscr();
					writeMenuBar();
					reloadPanels();
				}
			}
			else
			{
				if(loadOverlay(1))
					viewFile(filePath);
			}
		}
		break;
	case KEY_F4:
		rereadSelectedPanel();
		break;
	case KEY_F3:
		selectDrive(selectedPanel);
		rereadSelectedPanel();
		break;
	case HK_SELECT:
		selectCurrentFile();
		break;
#ifdef __APPLE2ENH__
		case CH_CURS_UP:
#else
		case CH_CURS_LEFT:
#endif
		moveSelectorUp(selectedPanel);
		break;
#ifdef __APPLE2ENH__
		case CH_CURS_DOWN:
#else
		case CH_CURS_RIGHT:
#endif
		moveSelectorDown(selectedPanel);
		break;
#ifdef __APPLE2ENH__
	case CH_CURS_LEFT:
		if(selectedPanel == &rightPanelDrive
			&& strlen(leftPanelDrive.path) > 0)
		{
			selectedPanel = &leftPanelDrive;
			writeSelectorPosition(&leftPanelDrive, '>');
			writeSelectorPosition(&rightPanelDrive, ' ');
			writeCurrentFilename(selectedPanel);
		}
		break;
	case CH_CURS_RIGHT:
		if(selectedPanel == &leftPanelDrive
			&& strlen(rightPanelDrive.path) > 0)
		{
			selectedPanel = &rightPanelDrive;
			writeSelectorPosition(&leftPanelDrive, ' ');
			writeSelectorPosition(&rightPanelDrive, '>');
			writeCurrentFilename(selectedPanel);
		}
		break;
#endif
	case HK_SWITCH_PANEL:
		if(selectedPanel == &leftPanelDrive
			&& strlen(rightPanelDrive.path) > 0)
		{
			selectedPanel = &rightPanelDrive;
			writeSelectorPosition(&leftPanelDrive, ' ');
			writeSelectorPosition(&rightPanelDrive, '>');
			writeCurrentFilename(selectedPanel);
		}
		else if(selectedPanel == &rightPanelDrive
			&& strlen(leftPanelDrive.path) > 0)
		{
			selectedPanel = &leftPanelDrive;
			writeSelectorPosition(&leftPanelDrive, '>');
			writeSelectorPosition(&rightPanelDrive, ' ');
			writeCurrentFilename(selectedPanel);
		}
		break;

	case KEY_SH_PLUS:
		enterDirectory(selectedPanel);
		break;
	case KEY_SH_MINUS:
	case CH_ESC:
		leaveDirectory(selectedPanel);
		break;
	//case 188: // C= C - Command Menu
	//	writeMenu(command);
	//	break;
	//case 182: // C= L - Left Menu
	//	writeMenu(left);
	//	break;
	//case 178: // C= R - Right Menu
	//	writeMenu(right);
	//	break;
	//case 187: // C= F - File Menu
	//	writeMenu(file);
	//	break;
	//case 185: // C= O - Options Menu
	//	writeMenu(options);
	//	break;
	case HK_REREAD_LEFT:
		rereadDrivePanel(left);
		break;
	case HK_REREAD_RIGHT:
		rereadDrivePanel(right);
		break;
	case HK_DRIVE_LEFT:
		writeDriveSelectionPanel(left);
		break;
	case HK_DRIVE_RIGHT:
		writeDriveSelectionPanel(right);
		break;
	case HK_SELECT_ALL:
		selectAllFiles(selectedPanel, true);
		break;
	case HK_DESELECT_ALL:
		selectAllFiles(selectedPanel, false);
		break;
	case KEY_F1:
		if(loadOverlay(1))
			writeHelpPanel();
		break;
	case KEY_F2:
		quit();
		break;
	case KEY_F5:
		if(loadOverlay(4))
			copyFiles();
		break;
	case HK_RENAME:
	case KEY_F6:
		if(loadOverlay(4))
			renameFile();
		break;
	case HK_DELETE:
	case KEY_F8:
		if(loadOverlay(4))
			deleteFiles();
		break;
	//case KEY_AT:
	//	inputCommand();
	//	break;
	case KEY_F7:
		if(loadOverlay(4))
			makeDirectory();
		break;
	case HK_TO_TOP:
		moveTop(selectedPanel);
		break;
	case HK_TO_BOTTOM:
		moveBottom(selectedPanel);
		break;
	case HK_PAGE_UP:
		movePageUp(selectedPanel);
		break;
	case HK_PAGE_DOWN:
		movePageDown(selectedPanel);
		break;
	case HK_WRITE_DISK_IMAGE:
		if(loadOverlay(3))
			writeDiskImage();
		break;
	case HK_CREATE_DISK_IMAGE:
		if(loadOverlay(3))
			createDiskImage();
		break;
	case HK_COPY_DISK:
		if(loadOverlay(2))
			copyDisk();
		break;
	default:
		//writeStatusBarf("%c", key);
		break;
	}
}
示例#9
0
void TMouse::doMouse_init() {
	GetConsoleScreenBufferInfo(hStdout, &ConsoleInfo);
	chiBuffer = newBuffer();
	saveScreen(chiBuffer);
}
示例#10
0
bool Capture::saveScreen(int compression_level)
{
    return saveScreen(findFilename(), compression_level);
}