Beispiel #1
0
int main(int argc, char** argv)
{
	Image screen_image;

	ScreenImage Screen;
	Screen.Init();

	ScreenArea ScreenArea;
	char esc;


	int* cood=ScreenArea.TakeArea();

	Rect Corte(cood[0],cood[1],cood[2],cood[3]);
  	while(esc!='s')
  	{		
  		
  		//pega imagem da tela
  		screen_image.SetData(Screen.ScreenShot(),"Tela",WINDOW_NORMAL);

  		//screen_image.ScaleImg(1.0f);
  		Mat result=screen_image.img(Corte);
    	imshow("Result",result);
    	namedWindow("Result",WINDOW_NORMAL); 
    	esc=screen_image.Show();


    	//O buffer do screen_image precisa ser limpo após tratamento com a imagem
    	Screen.Flush();    	
 	}
  return 0;
}
void PolycodeScreenEditor::handleDroppedFile(OSFileEntry file, Number x, Number y) {
	ScreenEntity *newEntity = NULL;
	if(file.extension == "png") {
		ScreenImage *newImage = new ScreenImage(file.fullPath);
		newImage->setPositionMode(ScreenEntity::POSITION_CENTER);
		baseEntity->addChild(newImage);
		newImage->setPosition(x-baseEntity->getPosition2D().x,y-baseEntity->getPosition2D().y);
		newEntity = newImage;
		newImage->processInputEvents = true;
	}
	
	if(newEntity) {
		newEntity->addEventListener(this, InputEvent::EVENT_MOUSEDOWN);
		newEntity->blockMouseInput = true;
	}
}
HelloPolycodeApp::HelloPolycodeApp(PolycodeView *view) : EventHandler() {

	core = new POLYCODE_CORE(view, 640,480,false,false,0,0,90);

	CoreServices::getInstance()->getResourceManager()->addArchive("Resources/default.pak");
	CoreServices::getInstance()->getResourceManager()->addDirResource("default", false);

	Screen *screen = new Screen();			
	for(Number i=0; i < 10; i++) {
		ScreenImage *image = new ScreenImage("Resources/polycode_logo.png");
		screen->addChild(image);	
		image->setPosition(160+(42*i), 230);
		image->setPositionMode(ScreenEntity::POSITION_CENTER);
		image->setRotation(45*i);
		image->setScale(1.0-(0.1*i),1.0-(0.1*i));
	}
}
Beispiel #4
0
BOOL Game::start(DWORD currentTime)
{
	Bmp8BitFileReader reader;
	itsGameSelectImages = new SimpleArray(4);
	ScreenImage *image = new ScreenImage();
	image->init(theDirectDrawObject,&reader,"game1select.bmp",NULL);
	itsGameSelectImages->addElement(image);

	image = new ScreenImage();
	image->init(theDirectDrawObject,&reader,"game2select.bmp",NULL);
	itsGameSelectImages->addElement(image);

	image = new ScreenImage();
	image->init(theDirectDrawObject,&reader,"game3select.bmp",NULL);
	itsGameSelectImages->addElement(image);

	image = new ScreenImage();
	image->init(theDirectDrawObject,&reader,"moreselect.bmp",NULL);
	itsGameSelectImages->addElement(image);

	itsCurrentlySelectedGame = 0;
	theEventDispatcher.init();
	itsSoundPlayer = new SoundPlayer(itsSoundManager);
	itsCurrentState = GAMESTATE_PREGAME;
	itsInstructionMessageTimerID = theEventDispatcher.setTimer(this,3500);
	isDisplayingInstructions = FALSE;

	DDCOLORKEY colorKey;
    colorKey.dwColorSpaceHighValue = ScreenImage::theTransparencyColor;
    colorKey.dwColorSpaceLowValue = ScreenImage::theTransparencyColor;

	itsInstructionMessage.init(theDirectDrawObject,&reader,"instructions.bmp",&colorKey);

	itsWorld = NULL;

	return TRUE;
}
Beispiel #5
0
PolycodeFrame::PolycodeFrame() : ScreenEntity() {

    globalFrame = this;
    processInputEvents = true;
    willHideModal = false;
    showingConsole = true;
    modalChild = NULL;

    welcomeEntity = new ScreenEntity();
    welcomeEntity->processInputEvents = true;
    addChild(welcomeEntity);
    welcomeImage = new ScreenImage("Images/welcome.png");
    welcomeEntity->addChild(welcomeImage);
    welcomeEntity->snapToPixels = true;

    newProjectButton = new UIButton("Create A New Project!", 220);
    newProjectButton->setPosition(230,80);
    newProjectButton->addEventListener(this, UIEvent::CLICK_EVENT);

    examplesButton = new UIButton("Browse Example Projects!", 220);
    examplesButton->setPosition(460,80);
    examplesButton->addEventListener(this, UIEvent::CLICK_EVENT);

    welcomeEntity->addChild(newProjectButton);
    welcomeEntity->addChild(examplesButton);

    mainSizer = new UIHSizer(100,100,200,true);
    mainSizer->setPosition(0, 45);
    addChild(mainSizer);

    consoleSize = 200;

    consoleSizer = new UIVSizer(100,100,200, false);
    mainSizer->addRightChild(consoleSizer);

    projectBrowser = new PolycodeProjectBrowser();
    mainSizer->addLeftChild(projectBrowser);

    editorHolder = new EditorHolder();
    consoleSizer->addTopChild(editorHolder);

    console = new PolycodeConsole();
    consoleSizer->addBottomChild(console);

    projectBrowser->treeContainer->getRootNode()->addEventListener(this, UITreeEvent::DRAG_START_EVENT);

    topBarBg = new ScreenShape(ScreenShape::SHAPE_RECT, 2,2);
    topBarBg->setColorInt(21, 18, 17, 255);
    topBarBg->setPositionMode(ScreenEntity::POSITION_TOPLEFT);
    topBarBg->processInputEvents = true;
    topBarBg->blockMouseInput = true;
    addChild(topBarBg);

    logo = new ScreenImage("Images/barlogo.png");
    addChild(logo);


    playButton = new UIImageButton("Images/play_button.png");
    addChild(playButton);
    playButton->setPosition(10,4);

    stopButton = new UIImageButton("Images/stop_button.png");
    addChild(stopButton);
    stopButton->setPosition(10,4);

    currentProjectTitle = new ScreenLabel("", 32, "section");
    addChild(currentProjectTitle);
    currentProjectTitle->color.a = 0.4;
    currentProjectTitle->setPosition(70, 0);

    currentFileSelector = new UIComboBox(globalMenu, 300);
    currentFileSelector->addEventListener(this, UIEvent::CHANGE_EVENT);

    addChild(currentFileSelector);


    resizer = new ScreenImage("Images/corner_resize.png");
    addChild(resizer);
    resizer->setColor(0,0,0,0.4);

    modalBlocker = new ScreenShape(ScreenShape::SHAPE_RECT, 10,10);
    modalBlocker->setColor(0,0,0,0.4);
    modalBlocker->setPositionMode(ScreenEntity::POSITION_TOPLEFT);
    modalBlocker->enabled = false;
    modalBlocker->blockMouseInput = true;
    modalBlocker->processInputEvents = true;
    addChild(modalBlocker);

    assetBrowser = new AssetBrowser();
    assetBrowser->visible = false;

    newProjectWindow = new NewProjectWindow();
    newProjectWindow->visible = false;

    exampleBrowserWindow = new ExampleBrowserWindow();
    exampleBrowserWindow->visible = false;

    newFileWindow = new NewFileWindow();
    newFileWindow->visible = false;

    exportProjectWindow = new ExportProjectWindow();
    exportProjectWindow->visible = false;

    textInputPopup = new TextInputPopup();
    textInputPopup->visible = false;

    yesNoPopup = new YesNoPopup();
    yesNoPopup->visible = false;

    yesNoCancelPopup = new YesNoCancelPopup();
    yesNoCancelPopup->visible = false;


    aboutWindow = new UIWindow("", 800, 440);
    aboutWindow->closeOnEscape = true;
    ScreenImage *aboutImage = new ScreenImage("Images/about.png");
    aboutWindow->addChild(aboutImage);
    aboutImage->setPosition(20, 40);
    aboutWindow->visible = false;
    aboutOKButton = new UIButton("OK", 100);
    aboutWindow->addChild(aboutOKButton);
    aboutOKButton->setPosition(700, 420);
    aboutOKButton->addEventListener(this, UIEvent::CLICK_EVENT);

    ScreenLabel *versionLabel = new ScreenLabel("version 0.8.2", 12, "mono");
    aboutWindow->addChild(versionLabel);
    versionLabel->setPosition(20, 430);
    versionLabel->color.a = 0.4;

    isDragging  = false;
    dragLabel = new ScreenLabel("NONE", 11, "sans");
    dragLabel->setPosition(0,-15);

    dragEntity = new ScreenEntity();
    dragEntity->addChild(dragLabel);
    addChild(dragEntity);
    dragEntity->visible = false;


    CoreServices::getInstance()->getCore()->getInput()->addEventListener(this, InputEvent::EVENT_MOUSEUP);
    CoreServices::getInstance()->getCore()->getInput()->addEventListener(this, InputEvent::EVENT_MOUSEMOVE);

    curveEditor = new CurveEditor();
    addChild(curveEditor);
    curveEditor->setPosition(200,100);
    curveEditor->visible = false;
    curveEditor->enabled = false;


    globalColorPicker = new UIColorPicker();
    globalColorPicker->setPosition(300,300);
    addChild(globalColorPicker);

    modalRoot = new UIElement();
    addChild(modalRoot);

    fileDialogBlocker = new ScreenShape(ScreenShape::SHAPE_RECT, 100, 100);
    fileDialogBlocker->setPositionMode(ScreenEntity::POSITION_TOPLEFT);
    addChild(fileDialogBlocker);
    fileDialogBlocker->setColor(0.0, 0.0, 0.0, 0.5);
    fileDialogBlocker->processInputEvents = true;
    fileDialogBlocker->blockMouseInput = true;
    fileDialogBlocker->visible = false;
    fileDialogBlocker->enabled = false;

    fileBrowserRoot = new UIElement();
    addChild(fileBrowserRoot);

    fileDialog = NULL;
}
Beispiel #6
0
vector<FindResult> 
Vision::find(ScreenImage simg, Pattern ptn) { 

//	SYSTEMTIME begin, end;
    
//    GetSystemTime(&begin);

   Mat screenImage = simg.getMat();
      
   vector<FindResult> results;
   if (ptn.bAll()){
      
      results = getFindResults(screenImage, ptn, true, ptn.getSimilarity());
      
      
      if (ptn.getOrdering() == TOPDOWN){
         sort(results.begin(), results.end(), sort_by_y_asc);
      }else if (ptn.getOrdering() == BOTTOMUP){
         sort(results.begin(), results.end(), sort_by_y_dsc);
      }else if (ptn.getOrdering() == LEFTRIGHT){
         sort(results.begin(), results.end(), sort_by_x_asc);
      }else if (ptn.getOrdering() == RIGHTLEFT){
         sort(results.begin(), results.end(), sort_by_x_dsc);
      }
   
   
   }else{
      
      if (ptn.where() != ANYWHERE){
      
         results = getFindResults(screenImage, ptn, true, ptn.getSimilarity());      
            
         
         cout << "found " << results.size() << " matches." << endl;
         
         if (!results.empty()){
            // Filter Results
            FindResult r = results[0];
            for (int i=1; i<results.size(); ++i){
               FindResult& ri = results[i];
               if ((ptn.where() == TOPMOST && ri.y < r.y) ||
                   (ptn.where() == BOTTOMMOST && ri.y > r.y) ||
                   (ptn.where() == LEFTMOST && ri.x < r.x) ||
                   (ptn.where() == RIGHTMOST && ri.x > r.x))
                  r = ri;
            }
            
            results.clear();
            results.push_back(r);
         }
      }
      else {

         results = getFindResults(screenImage, ptn, false, ptn.getSimilarity());
            
      }
      
   }
   
   vector<FindResult> final_results;
   int n = min((int)results.size(), (int)ptn.getLimit());
   for (int i=0; i< n; ++i){
      final_results.push_back(results[i]);
   }
   
//    GetSystemTime(&end);
//	WORD elapsed_ms = (end.wSecond - begin.wSecond)*1000+(end.wMilliseconds - begin.wMilliseconds);
//	cout << elapsed_ms << " ms." << endl;

   return final_results;
}
Beispiel #7
0
vector<Match>
Region::doFind(Pattern target) {

 
   dout << "[Region::doFind] Searching in (" << xo+x << "," << yo+y << ")-(" << xo+x+w << "," << yo+y+h << ")" << endl; 
  
   ScreenImage simg = capture();

   FindInput* fi;
   
   if (target.isText())
      fi = new FindInput(simg.getMat(), TARGET_TYPE_TEXT, target.getText());
   else
      fi = new FindInput(simg.getMat(), TARGET_TYPE_IMAGE, target.getImageURL());   
      

   FindInput& input = *fi;   
   input.setFindAll(target.bAll());
   input.setLimit(target.getLimit());
   input.setSimilarity(target.getSimilarity());
   
   
  if (!target.bAll() && target.where() != ANYWHERE){
     input.setFindAll(true);
  }
   
   vector<FindResult> results = Vision::find(input);
   delete fi;
   
            
   if (target.getOrdering() == TOPDOWN){
      sort(results.begin(), results.end(), sort_by_y_asc);
   }else if (target.getOrdering() == BOTTOMUP){
      sort(results.begin(), results.end(), sort_by_y_dsc);
   }else if (target.getOrdering() == LEFTRIGHT){
      sort(results.begin(), results.end(), sort_by_x_asc);
   }else if (target.getOrdering() == RIGHTLEFT){
      sort(results.begin(), results.end(), sort_by_x_dsc);
   }
   
   if (!target.bAll() && target.where() != ANYWHERE){   
         if (!results.empty()){
            // Filter Results
            FindResult r = results[0];
            for (int i=1; i<results.size(); ++i){
               FindResult& ri = results[i];
               if ((target.where() == TOPMOST && ri.y < r.y) ||
                   (target.where() == BOTTOMMOST && ri.y > r.y) ||
                   (target.where() == LEFTMOST && ri.x < r.x) ||
                   (target.where() == RIGHTMOST && ri.x > r.x))
                  r = ri;
            }
            
            results.clear();
            results.push_back(r);
         }
   }   
   
   vector<Match> matches;
   int n = min((int)results.size(), (int)target.getLimit());
   for (int i=0; i< n; ++i){
      FindResult& r = results[i];
      Match match(inner(r.x,r.y,r.w,r.h),r.score); 
      matches.push_back(match);
   }
   
   
   if (!matches.empty()){
      SikuliUI::sikuliUI->handleMatchFound(*this, target, matches);

      setLastMatch(matches[0]);
      setLastMatches(matches);
   }
   
   // TODO: setTargetOffset 
   //match.setTargetOffset(ptn.getTargetOffset());
   return matches;
}
Beispiel #8
0
BOOL Game::initSurfaces(HWND hwnd,HINSTANCE hinstance)
{
    DDSURFACEDESC surfaceDesc;

	// This is cheesy, but I'm not sure how to deal with it for right now
	ScreenImage bgImage;
	Bmp8BitFileReader reader;
	bgImage.init(theDirectDrawObject,&reader,"bg.bmp");

    memset(&surfaceDesc,0,sizeof(surfaceDesc));
    surfaceDesc.dwSize  = sizeof(surfaceDesc);
    surfaceDesc.dwFlags = DDSD_CAPS | DDSD_BACKBUFFERCOUNT;
    surfaceDesc.ddsCaps.dwCaps = DDSCAPS_PRIMARYSURFACE|DDSCAPS_FLIP|DDSCAPS_COMPLEX;
    surfaceDesc.dwBackBufferCount = 1;

    if ( SUCCEEDED(theDirectDrawObject->CreateSurface(&surfaceDesc,&thePrimarySurface,NULL)) )
    {
        assert(theBitDepth == 8);

        PALETTEENTRY palette[256];
        bgImage.getPalette()->GetEntries(0,0,256,palette);
		PALETTEENTRY dimmedPalette[256];
		for (UINT i=0;i<256;i++)
		{
			dimmedPalette[i].peBlue = (palette[i].peBlue / 3) * 2;
			dimmedPalette[i].peRed = (palette[i].peRed / 3) * 2;
			dimmedPalette[i].peGreen = (palette[i].peGreen / 3) * 2;
		}
        
        if ( (SUCCEEDED(theDirectDrawObject->CreatePalette(DDPCAPS_8BIT | DDPCAPS_ALLOW256 | DDPCAPS_INITIALIZE,
                                                         palette,&thePalette,NULL)) ) &&
			 (SUCCEEDED(theDirectDrawObject->CreatePalette(DDPCAPS_8BIT | DDPCAPS_ALLOW256 | DDPCAPS_INITIALIZE,
                                                         dimmedPalette,&theDimmedPalette,NULL)) ) )

        {
            thePrimarySurface->SetPalette(thePalette);
            DDSCAPS surfaceCaps;

            memset(&surfaceCaps,0,sizeof(surfaceCaps));
            surfaceCaps.dwCaps = DDSCAPS_BACKBUFFER;

            if ( SUCCEEDED(thePrimarySurface->GetAttachedSurface(&surfaceCaps,&theBackbuffer)) )
            {
                if (SUCCEEDED(theDirectDrawObject->CreatePalette(DDPCAPS_8BIT | DDPCAPS_ALLOW256 | DDPCAPS_INITIALIZE,
                                                                 palette,&theBackbufferPalette,NULL) ))
                {
                    theBackbuffer->SetPalette(theBackbufferPalette);
                    if (SUCCEEDED(theDirectDrawObject->CreateClipper(NULL,&theClipper,NULL)))
                    {
                        if (SUCCEEDED(theClipper->SetHWnd(NULL,hwnd)))
                        {
                            if (SUCCEEDED(theBackbuffer->SetClipper(theClipper)))
                            {
                                bgImage.copyDataToSurface(thePrimarySurface);
                                bgImage.copyDataToSurface(theBackbuffer);
                                return TRUE;                
                            }
                            else
                            {
                                Logger::error("Couldn't set clipper on the backbuffer");
                            }
                        }
                        else
                        {
                            Logger::error("Couldn't set HWND on the clipper");
                        }
                    }
                    else
                    {
                        Logger::error("Couldn't create the clipper");
                    }
                }
                else
                {
                    Logger::error("Couldn't create a palette!");
                }
            }
            else
            {
                Logger::error("Couldn't get attached surface from primary surface");
            }
        }
        else
        {
            Logger::error("Couldn't create the palette");
        }
    }
    else
    {
        Logger::error("Couldn't create primary surface");
    }
    return FALSE;
}