void wxJigsawEditorCanvas::OnSize( wxSizeEvent& event )
{
	m_DoubleBufferDC.SelectObject(wxNullBitmap);
	m_DoubleBufferBitmap = wxBitmap(event.GetSize().GetWidth(), event.GetSize().GetHeight());
	m_DoubleBufferDC.SelectObject(m_DoubleBufferBitmap);
	RefreshBuffer();
}
Exemple #2
0
void App::Update()
{
	static float elapsed = 0;
	static int frames = 0;

	clock.Tick();
	float time = clock.TotalTime();
	float dt = clock.DeltaTime();

	frames++;
	elapsed += dt;

	// Count and print FPS data to title
	if (elapsed >= 1.0f)
	{
		float secsperframe = 1.0f / (float)frames;
		std::wstringstream ss;
		ss.precision(6);
		ss << "ExplosionDemo FPS: " << frames << "   ||    ms/frame: " << secsperframe;
		SetWindowText(mainWnd, ss.str().c_str());
		frames = 0;
		elapsed = 0;
		ss.flush();
		ss << " lacunarity: " << shaderParams->lacunarity << " gain: " << shaderParams->gain << " offset: " << shaderParams->gradOffset << " scale: " << shaderParams->gradScale << std::endl;
		OutputDebugStringW(ss.str().c_str());
	}

	ScanInput(dt);
	
	for(auto it = viewports.begin(); it != viewports.end(); it++)
	{
		it->SetTime(time);
		it->RefreshBuffer();
	}
}
Exemple #3
0
void SimpleConsole::ClearScreen()
{
	memsetw( buffer, charStyle, width * height );
	RefreshBuffer();
	cursorX = 0;
	cursorY = 0;
	MoveCursor();
}
void wxJigsawEditorCanvas::OnScrollThumbRelease(wxScrollWinEvent & event)
{
	wxLogTrace(wxTraceMask(), _("wxJigsawEditorCanvas::OnScrollThumbRelease; ScrollPos = %i"),
		event.GetPosition());
	SetScrollPos(event.GetOrientation(), event.GetPosition());
	FixViewOffset();
	RefreshBuffer();
}
void wxJigsawEditorCanvas::OnScrollPageDown(wxScrollWinEvent & event)
{
	wxLogTrace(wxTraceMask(), _("wxJigsawEditorCanvas::OnScrollPageDown;"));
	SetScrollPos(event.GetOrientation(), 
		GetScrollPos(event.GetOrientation()) + GetScrollThumb(event.GetOrientation()));
	FixViewOffset();
	RefreshBuffer();
}
void wxJigsawEditorCanvas::OnScrollLineDown(wxScrollWinEvent & event)
{
	wxLogTrace(wxTraceMask(), _("wxJigsawEditorCanvas::OnScrollLineDown;"));
	int increment = wxJigsawEditorCanvas::ScrollIncrement;
	SetScrollPos(event.GetOrientation(), GetScrollPos(event.GetOrientation()) + increment);
	FixViewOffset();
	RefreshBuffer();
}
void wxJigsawEditorCanvas::Scroll(const wxPoint & pt)
{
	if((pt.x) >= 0 && (GetScrollPos(wxHORIZONTAL) != pt.x))
		SetScrollPos(wxHORIZONTAL, pt.x);
	if((pt.y) >= 0 && (GetScrollPos(wxVERTICAL) != pt.y))
		SetScrollPos(wxVERTICAL, pt.y);
	RefreshBuffer();
}
void wxJigsawEditorCanvas::MotionUpdate(wxPoint currentPos)
{		
	// get scroll position
	wxPoint scrollPos = GetScrollPosition();
	wxPoint viewPos = PointToViewPoint(currentPos);
	AutoScroll(currentPos, scrollPos);
	FixViewOffset();
	FixActiveHotSpot(viewPos);
	RefreshBuffer();
}
void wxJigsawEditorCanvas::OnLeftDown( wxMouseEvent& event )
{
	SetFocus();
	wxRect displayRect = GetDisplayRect(GetScrollPosition());
	m_MouseDownPos = event.GetPosition();
	
	do
	{
		if(!m_View) break;
		
		wxPoint diagramPoint = PointToViewPoint(m_MouseDownPos);		
		wxJigsawShape * shape(NULL);		
		wxJigsawEditorCanvasHitTest hitTest = HitTest(m_MouseDownPos, infoSelectedShape, NULL);

		static wxJigsawShapeList m_PaletteShapeList;
		static wxJigsawShapeList *pPaletteShapeList = NULL;
		if(infoSelectedShape.GetResult() == wxJigsawShape::wxJigsawShapeHitTest::wxJS_HITTEST_SLOT)
		{
			//Must save the current selected category or save the current search			
			if(!pPaletteShapeList) pPaletteShapeList = wxJigsawEditorMainFrame::Get()->GetPalette()->GetShapes();
			wxJigsawEditorMainFrame::Get()->SearchStyle(infoSelectedShape.GetInputParameterStyle());
		}
		else if(pPaletteShapeList)
		{
			//Restore the search or selected category
			if(wxJigsawEditorMainFrame::Get()->IsSearchStyleSelected())
			{
				wxJigsawEditorMainFrame::Get()->GetPalette()->SetShapes(pPaletteShapeList);
				wxJigsawEditorMainFrame::Get()->GetPalette()->Refresh();
				wxJigsawEditorMainFrame::Get()->GetPalette()->AdjustScrollBars();
			}
			pPaletteShapeList = NULL;			
		}

		switch(hitTest)
		{
		case wxJSEC_HITTEST_SHAPE:
			shape = m_View->GetShapeFromPoint(m_DoubleBufferDC, diagramPoint, infoSelectedShape, NULL);			
			if(shape)
			{				
				SetSelectedShape(shape);
				CaptureMouse();							
			}
			break;
		case wxJSEC_HITTEST_NONE:
			SetSelectedObject(NULL);
		default:
			break;
		}
	}
	while(false);

	RefreshBuffer();
}
void wxJigsawEditorCanvas::SetScale(double value)
{
	do
	{
		if(!m_View) break;
		m_View->SetScale(value);
		RefreshBuffer();
		wxJigsawEditorDocument * document = GetDocument();
		if(!document) break;
		document->ReCreateHotSpots(m_DoubleBufferDC, m_HotSpots, m_View->GetSelectedObject(), m_View->GetScale());
	}
	while(false);
}
void wxJigsawEditorCanvas::OnLeftUp( wxMouseEvent& event )
{
	m_MouseDownPos = wxPoint(-1, -1);
	if(HasCapture())
	{
		ReleaseMouse();

		do
		{
			if(!m_View) break;
			wxJigsawEditorDocument * document = GetDocument();
			if(!document) break;
			wxPoint realPosition = PointToViewPoint(event.GetPosition());
			wxJigsawShapeGroup *group = document->GetShapeGroup(m_SelectedShape);
			if(group != m_View->GetSelectedObject()) SetSelectedObject(group);
			if(group)
			{
				//Update the offset to the next mouse down event
				wxPoint groupPosition = m_View->GetRealGroupPosition(group);
					m_SelectedObjectOffset = wxSize(
						realPosition.x - groupPosition.x,
						realPosition.y - groupPosition.y); 

				//drop?
				if(document->ProcessDrop(m_DoubleBufferDC, realPosition, 
					group, m_SelectedObjectOffset, m_View->GetScale()))
				{
					SetSelectedObject(NULL);
				}
				document->RequestSizeRecalculation();
				/*wxWindowDC dc(this);
				dc.SetFont(GetFont());
				m_View->OnDraw(&dc);*/
				document->UpdateLayout(m_DoubleBufferDC, m_View->GetScale());
			}
		}
		while(false);

		RefreshBuffer();
		m_TR = m_BL = wxPoint(0,0);
		m_SelectionRect.SetPosition(m_TR);
		m_SelectionRect.SetSize(wxSize(0,0));
		m_ActiveHotSpot = NULL;
		m_HotSpots.Clear();
	}
}
void wxJigsawEditorCanvas::ProcessDrop(const wxPoint & pos, 
		const wxJigsawShape * shape, 
		const wxSize & hotSpotOffset)
{
	do
	{
		if(!shape) break;
		wxJigsawEditorDocument * document = GetDocument();
		if(!document) break;
		wxPoint realPosition = PointToViewPoint(pos);
		wxJigsawShape * newShape = new wxJigsawShape(*shape);
		newShape->SetPosition(	realPosition.x - hotSpotOffset.GetWidth(),
			realPosition.y - hotSpotOffset.GetHeight());
		wxJigsawShapeGroup * newGroup = document->CreateGroupByShape(m_DoubleBufferDC, newShape);
		if(!newGroup) break;
		document->ProcessDrop(m_DoubleBufferDC, realPosition, newGroup, hotSpotOffset, m_View->GetScale());
		m_View->BringToFront(newGroup);
		SetSelectedShape(newShape);
		RefreshBuffer();
	}
	while(false);
}
Exemple #13
0
int main()
{
	gfxInitDefault();
        gfxSet3D(true); // uncomment if using stereoscopic 3D

        gfxFlushBuffers();

        transparent = BLACK;
	 gfxSetScreenFormat(GFX_TOP, GSP_BGR8_OES);
	 gfxSetScreenFormat(GFX_BOTTOM, GSP_BGR8_OES);
        InitParx(BLACK);
/*
	ParxLeft = gfxGetFramebuffer(GFX_TOP, GFX_LEFT, NULL, NULL); 
	ParxRight = gfxGetFramebuffer(GFX_TOP, GFX_RIGHT, NULL, NULL); 
	ParxBot = gfxGetFramebuffer(GFX_BOTTOM, GFX_LEFT, NULL, NULL); 

	ClrParx(ParxLeft, BLACK); 
	ClrParx(ParxRight, BLACK); 
	ClrParx(ParxBot, BLACK);
*/

	char* str[256];
        int l, k, j, i=20, posx = 100, posy = 100;
        TBGR rgbsam;
        TBGR rgb;
	u64 time; 

	// Main loop
	while (aptMainLoop())
	{
//		gspWaitForVBlank();

//		  	ParxLeft = gfxGetFramebuffer(GFX_TOP, GFX_LEFT, NULL, NULL); 
//			ParxRight = gfxGetFramebuffer(GFX_TOP, GFX_RIGHT, NULL, NULL); 
//			ParxBot = gfxGetFramebuffer(GFX_BOTTOM, GFX_LEFT, NULL, NULL); 

		hidScanInput();              
		u32 kDown = hidKeysHeld();

		if (kDown & KEY_START)
			break; // break in order to return to hbmenu
                if (kDown & KEY_A)
			{
                          CanvasString(ParxBot, CopyRight(), 10,10, LIGHT_GREEN);
			}
                if (kDown & KEY_B)
			{
                          time= osGetTime();
			
			rgb.r= 0xCC;
			rgb.g= 0x33;
			rgb.b= 0xCC;
			
                        for (k=0;k<400;k++)
                          for (l=0;l<240;l++)
{
  SetPixL(k,l,rgb); //TopLCD
  SetPixR(k,l,rgb);
  if (k<320) SetPixB(k,l,rgb); //BotLCD
}

time = osGetTime() - time; 
sprintf(str, "%i:ms ParxPro SetPix L/R/B,kdl", time);
CanvasString(ParxBot, str, 10,10, GREEN);  

			}
                if (kDown & KEY_X)
			{
                          TestPattern();
			}
                if (kDown & KEY_Y)
			{
			InitParx(BLACK);
		  	
//			  PasBotfill(ParxBot);
			rgb.r= 0xFF;
			rgb.g= 0x00;
			rgb.b= 0x8F;
			  PasClrSrc(ParxBot, rgb);
			  CanvasString(ParxBot, "InitParx", 10,10, GREEN);  
			}
                if(kDown & KEY_CPAD_DOWN)
                        {	     
			rgb.r= 0x00;
			rgb.g= 0x00;
			rgb.b= 0XFF;
			PasTopfill(ParxLeft, rgb);
			PasTopfill(ParxRight, rgb);
			}

                if(kDown & KEY_CPAD_UP) 
                        {	
                        
			rgb.r= 0xFF;
			rgb.g= 0x00;
			rgb.b= 0x00;		
			PasTopfill(ParxLeft, rgb);
			PasTopfill(ParxRight, rgb);
			}
                if(kDown & KEY_CPAD_RIGHT) 
                        {	
                        
			rgb.r= 0x00;
			rgb.g= 0xFF;
			rgb.b= 0x00;
time= osGetTime();
			PasTopfill(ParxLeft, rgb);
			PasTopfill(ParxRight, rgb);

time = osGetTime() - time; 
sprintf(str, "%i:ms L&R BGRTop,kdl", time);
CanvasString(ParxBot, str, 10,10, GREEN);  
			}

                if(kDown & KEY_CPAD_LEFT)
                        {
                        
			rgb.r= 0x00;
			rgb.g= 0x11;
			rgb.b= 0x00;
time= osGetTime();					
						
			HexTopfill(ParxLeft);
			HexTopfill(ParxRight);

time = osGetTime() - time; 
sprintf(str, "%i:ms L&R TopMapLED,kdl", time);
CanvasString(ParxBot, str, 10,10, GREEN);  
			}               
                if(kDown & KEY_R)
                        {	
                              	InitBufSingle(BLACK);
                                Topfill2;
                              //  ClrParx(ParxBot, BLACK);
                               // sprintf(str, "Dergibal Rad:%i  X:%i  Y:%i", i, posx, posy);
			//	CanvasString(ParxBot, str, 0, 0, RED);
			}

                if(kDown & KEY_L) 
                        {	
                        	InitBufDub(BLACK);		
			        Topfill1;
                             //   ClrParx(ParxBot, BLACK);
                              //  sprintf(str, "Dergibal Rad:%i  X:%i  Y:%i", i, posx, posy);
			//	CanvasString(ParxBot, str, 0, 0, RED);
			}
                if(kDown & KEY_DUP)
                        {	
                        for (k=0;k<400;k++)
                          for (l=0;l<240;l++)
{
  if (k<320) PSetPixT(ParxRight,k,l, GetPixB(k,l));
} 

			}

                if(kDown & KEY_DDOWN)
                        {	
time= osGetTime();
			
			rgb.r= 0xCC;
			rgb.g= 0x11;
			rgb.b= 0xCC;
			
                        for (k=0;k<400;k++)
                          for (l=0;l<240;l++)
{
  PSetPixT(ParxRight,k,l, rgb); //TopLCD
  PSetPixT(ParxLeft,k,l, rgb);
  if (k<320) PSetPixB(ParxBot,k,l, rgb); //BotLCD
}

time = osGetTime() - time; 
sprintf(str, "%i:ms ParxPro,kdl", time);
CanvasString(ParxBot, str, 10,10, GREEN);  
		
			}                
		if(kDown & KEY_DRIGHT)
                        {

                         ClrParx(ParxBot, BLACK);    
                          
			rgb.r= 0xEE;
			rgb.g= 0x00;
			rgb.b= 0xCC;
		
time= osGetTime();			
                       for (k=0;k<400;k++)
                          for (l=0;l<240;l++) SetPixL(k,l,rgb); //TopLCD
time = osGetTime() - time; 
sprintf(str, "Left %i:ms ParxPro,kdl", time);
CanvasString(ParxBot, str, 10,10, LIGHT_GREEN); 

time= osGetTime();			
                       for (k=0;k<400;k++)
                          for (l=0;l<240;l++) SetPixR(k,l,rgb);                       
time = osGetTime() - time; 
sprintf(str, "Right %i:ms ParxPro,kdl", time);
CanvasString(ParxBot, str, 10,20, LIGHT_GREEN); 
			}

                if(kDown & KEY_DLEFT)
                        {				
                     //   SetTopFramebuffers(0);  
time= osGetTime();
			
                        for (k=0;k<400;k++)
                          for (l=0;l<240;l++)
{
  SetPix(ParxRight,k,l,BLACK);
  SetPix(ParxLeft,k,l,BLACK);
  if (k<320) SetPix(ParxBot,k,l,BLACK);
}

time = osGetTime() - time; 
sprintf(str, "%i:ms Parx-GDI,kdl", time);
CanvasString(ParxBot, str, 10,10, GREEN);  
		}
//gfxString(ParxRight, str, 30,30, 3, rgb); 
//gfxString(ParxLeft, str, 30,30, 3, rgb);   
//for (l=1;l<16;l++) print3d(rgb,10*l,10*l,l-1,3,str);



		//render rainbow
//		renderEffect();
		//copy buffer to lower screen (don't have to do it every frame)
//		memcpy(gfxGetFramebuffer(GFX_BOTTOM, GFX_BOTTOM, NULL, NULL), buffer, size);
		//wait & swap
//		gfxSwapBuffersGpu();
//		gspWaitForEvent(GSPGPU_EVENT_VBlank0, false);

		// Flush and swap framebuffers
	//	gfxFlushBuffers();
	//	gfxSwapBuffers();
        	RefreshBuffer();
		//Wait for VBlank
		gspWaitForVBlank();
	}

	gfxExit();
	return 0;
}
void wxJigsawEditorCanvas::OnMotion( wxMouseEvent& event )
{
	UpdateCursor(event.GetPosition());
	if(HasCapture())
	{
		if(event.GetPosition() != m_MouseDownPos && m_MouseDownPos != wxPoint(-1, -1) && m_SelectedShape)
		{
			do
			{
				if(!m_View) break;
				wxJigsawEditorDocument * document = GetDocument();
				if(!document) break;
				document->ReCreateHotSpots(m_DoubleBufferDC, m_HotSpots, NULL, m_View->GetScale());
				wxPoint diagramPoint = PointToViewPoint(m_MouseDownPos);
				wxLogTrace(wxTraceMask(), 
					_("wxJigsawEditorCanvas::OnLeftDown: Client Pos (%i, %i); View offset (%i, %i); Point (%i, %i)"),
					m_MouseDownPos.x, m_MouseDownPos.y,
					m_View->GetViewOffset().GetWidth(), m_View->GetViewOffset().GetHeight(),
					diagramPoint.x, diagramPoint.y);

				wxJigsawShapeGroup * group(NULL);
				group = document->GetShapeGroup(m_SelectedShape);
				if(!group)
				{
					group = document->CreateGroupByShape(m_DoubleBufferDC, m_SelectedShape);
				}
				else
				{
					// If it is not the first shape in a group
					if(group->GetShapes().IndexOf(m_SelectedShape) > 0)
					{
						// Then extract the shape and all shapes after it into separate group
						group = document->CreateGroupByShape(m_DoubleBufferDC, m_SelectedShape);
					}
				}

				if(!group) 
				{
					wxLogTrace(wxTraceMask(), _("Error obtaining group of shapes"));
					break;
				}
				else
				{
					m_View->BringToFront(group);
					wxPoint groupPosition = m_View->GetRealGroupPosition(group);
					m_SelectedObjectOffset = wxSize(
						diagramPoint.x - groupPosition.x,
						diagramPoint.y - groupPosition.y);
				}

				SetSelectedObject(group);
				document->ReCreateHotSpots(m_DoubleBufferDC, m_HotSpots, m_View->GetSelectedObject(), m_View->GetScale());
				FixActiveHotSpot(diagramPoint);
				m_Mode = wxJSEC_MODE_DRAGGING;

				RefreshBuffer();
				m_TR = m_BL = m_MouseDownPos;
				m_SelectionRect.SetPosition(m_MouseDownPos);
				m_SelectionRect.SetSize(wxSize(0,0));
			}
			while(false);

			m_MouseDownPos = wxPoint(-1, -1);
		}
		else
		{
			MotionUpdate(event.GetPosition());
		}
	}
}
Exemple #15
0
int main()
{
	gfxInitDefault();
        gfxSet3D(true); // uncomment if using stereoscopic 3D

        gfxFlushBuffers();

        transparent = BLACK;
	 gfxSetScreenFormat(GFX_TOP, GSP_BGR8_OES);
	 gfxSetScreenFormat(GFX_BOTTOM, GSP_BGR8_OES);
        InitParx(BLACK);
/*
	ParxLeft = gfxGetFramebuffer(GFX_TOP, GFX_LEFT, NULL, NULL); 
	ParxRight = gfxGetFramebuffer(GFX_TOP, GFX_RIGHT, NULL, NULL); 
	ParxBot = gfxGetFramebuffer(GFX_BOTTOM, GFX_LEFT, NULL, NULL); 

	ClrParx(ParxLeft, BLACK); 
	ClrParx(ParxRight, BLACK); 
	ClrParx(ParxBot, BLACK);
*/

	char* str[256];
        int l, k, j, i=20, posx = 100, posy = 100;
        TBGR rgbsam;
        TBGR rgb;
	u64 time; 
	u8* tempScr;
	bool Dbuf;	
	
	circlePosition pos;
	touchPosition touch;

	// Main loop
	while (aptMainLoop())
	{
//		gspWaitForVBlank();

//		  	ParxLeft = gfxGetFramebuffer(GFX_TOP, GFX_LEFT, NULL, NULL); 
//			ParxRight = gfxGetFramebuffer(GFX_TOP, GFX_RIGHT, NULL, NULL); 
//			ParxBot = gfxGetFramebuffer(GFX_BOTTOM, GFX_LEFT, NULL, NULL); 

		hidScanInput();              
		u32 kDown = hidKeysHeld();

         
		//Read the CirclePad position
		hidCircleRead(&pos);

		//Print the CirclePad position
//-		printf("\x1b[2;0H%04d; %04d", pos.dx, pos.dy);
		

		//Read the touch screen coordinates
		hidTouchRead(&touch);
		
		//Print the touch screen coordinates
//		printf("\x1b[2;0H%03d; %03d", touch.px, touch.py);
		

		if (kDown & KEY_START)
			break; // break in order to return to hbmenu
                if (kDown & KEY_A)
			{
                          CanvasString(ParxBot, CopyRight(), 10,10, LIGHT_GREEN);
			}
                if (kDown & KEY_B)
			{
                          time= osGetTime();
			
			rgb.r= 0xCC;
			rgb.g= 0x33;
			rgb.b= 0xCC;
			
                        for (k=0;k<400;k++)
                          for (l=0;l<240;l++)
{
  SetPixL(k,l,rgb); //TopLCD
  SetPixR(k,l,rgb);
  if (k<320) SetPixB(k,l,rgb); //BotLCD
}

time = osGetTime() - time; 
sprintf(str, "%i:ms ParxPro SetPix L/R/B,kdl", time);
CanvasString(ParxBot, str, 10,10, GREEN);  

			}
                if (kDown & KEY_X)
			{
                          TestPattern();
			}
                if (kDown & KEY_Y)
			{
			InitParx(BLACK);
		  	
//			  PasBotfill(ParxBot);
			rgb.r= 0xFF;
			rgb.g= 0x00;
			rgb.b= 0x8F;
			  PasClrSrc(ParxBot, rgb);
			  CanvasString(ParxBot, "InitParx", 10,10, GREEN);  
			}
                if(kDown & KEY_CPAD_DOWN)
                        {	     
			rgb.r= 0x00;
			rgb.g= 0x00;
			rgb.b= 0XFF;
			PasTopfill(ParxLeft, rgb);
			PasTopfill(ParxRight, rgb);
			}

                if(kDown & KEY_CPAD_UP) 
                        {	
                        
			rgb.r= 0xFF;
			rgb.g= 0x00;
			rgb.b= 0x00;		
			PasTopfill(ParxLeft, rgb);
			PasTopfill(ParxRight, rgb);
			}
                if(kDown & KEY_CPAD_RIGHT) 
                        {	
                        
			rgb.r= 0x00;
			rgb.g= 0xFF;
			rgb.b= 0x00;
time= osGetTime();
			PasTopfill(ParxLeft, rgb);
			PasTopfill(ParxRight, rgb);

time = osGetTime() - time; 
sprintf(str, "%i:ms L&R BGRTop,kdl", time);
CanvasString(ParxBot, str, 10,10, GREEN);  
			}

                if(kDown & KEY_CPAD_LEFT)
                        {
                        
			rgb.r= 0x00;
			rgb.g= 0x11;
			rgb.b= 0x00;
time= osGetTime();					
						
			HexTopfill(ParxLeft);
			HexTopfill(ParxRight);

time = osGetTime() - time; 
sprintf(str, "%i:ms L&R TopMapLED,kdl", time);
CanvasString(ParxBot, str, 10,10, GREEN);  
			}               
                if(kDown & KEY_R)
                        {	
                              	//InitBufSingle(BLACK);
                                ClrParx(ParxBot, BLACK);
                                //i of linearSpaceFree(); //no effect
                                //i of vramSpaceFree(); //reads as Zero 
                                //i of mappableSpaceFree(); //no change in alloc & free 
                                
                                sprintf(str, "v:%i  m:%i  l:%i", vramSpaceFree, mappableSpaceFree, linearSpaceFree);
				CanvasString(ParxBot, str, 0, 10, RED);
				
                                Topfill2;
                                sprintf(str, "v:%i  m:%i  l:%i", vramSpaceFree, mappableSpaceFree, linearSpaceFree);
				CanvasString(ParxBot, str, 0, 20, RED);
				
                               // Topfill3;
                               // sprintf(str, "Topfill3 Free :%i", vramSpaceFree);
				//CanvasString(ParxBot, str, 0, 40, RED);
				
                                //sprintf(str, "Topfill3 Free :%i", );
				//CanvasString(ParxBot, str, 0, 40, RED);
			}

                if(kDown & KEY_L) 
                        {	
                        	if (Dbuf) InitBufDub(BLACK); else InitBufSingle(BLACK);		
			        Topfill1;
                                ClrParx(ParxBot, BLACK);
                              //  sprintf(str, "Dergibal Rad:%i  X:%i  Y:%i", i, posx, posy);
                              
                        	if (Dbuf) CanvasString(ParxBot, "InitBufDub", 0, 40, RED); else
                        	CanvasString(ParxBot, "InitBufSingle", 0, 40, RED); (BLACK);	
                        	Dbuf = !Dbuf;
			}
                if(kDown & KEY_DUP)
                        {	
                        for (k=0;k<400;k++)
                          for (l=0;l<240;l++)
{
  if (k<320) PSetPixT(ParxRight,k,l, GetPixB(k,l));
} 

			}

                if(kDown & KEY_DDOWN)
                        {	
time= osGetTime();
			
			rgb.r= 0xCC;
			rgb.g= 0x11;
			rgb.b= 0xCC;
			
                        for (k=0;k<400;k++)
                          for (l=0;l<240;l++)
{
  PSetPixT(ParxRight,k,l, rgb); //TopLCD
  PSetPixT(ParxLeft,k,l, rgb);
  if (k<320) PSetPixB(ParxBot,k,l, rgb); //BotLCD
}

time = osGetTime() - time; 
sprintf(str, "%i:ms ParxPro,kdl", time);
CanvasString(ParxBot, str, 10,10, GREEN);  
		
			}                
		if(kDown & KEY_DRIGHT)
                        {

                         ClrParx(ParxBot, BLACK);    
                          
			rgb.r= 0xEE;
			rgb.g= 0x00;
			rgb.b= 0xCC;
		
time= osGetTime();			
                       for (k=0;k<400;k++)
                          for (l=0;l<240;l++) SetPixL(k,l,rgb); //TopLCD
time = osGetTime() - time; 
sprintf(str, "Left %i:ms ParxPro,kdl", time);
CanvasString(ParxBot, str, 10,10, LIGHT_GREEN); 

time= osGetTime();				
//ParxLeft = GetSrcL(-1); // good!!			
//tempScr = GetSrcL(0); // good!!	
//tempScr = GetSrcL(1); // good!!
//                       for (k=0;k<400;k++)
//                        { 
//                            ParxLeft = GetSrcL(-1); // good!!
//                          for (l=0;l<80;l++) PSetPixT(ParxRight,k,l, GetPixL(k,l)); // 
//       			    ParxLeft = GetSrcL(0); // good!!
//                          for (l=80;l<160;l++) PSetPixT(ParxRight,k,l, GetPixL(k,l));   		
//     			    ParxLeft = GetSrcL(1); // good!!
//                          for (l=160;l<240;l++) PSetPixT(ParxRight,k,l, GetPixL(k,l)); 
//                          //assignment to eg PSetPixT(GetSrcR(-1),k,l, GetPixL(k,l)) poops out                      
//                        }  
time = osGetTime() - time; 
sprintf(str, "ParxLeft = GetSrcL(-1&0&1); %i:ms ,kdl", time);
CanvasString(ParxBot, str, 10,20, LIGHT_GREEN); 

time= osGetTime();			
//SetSrcR(0,tempScr);	// No Good 

//SetSrcL(-1,ParxLeft);	// 
//sprintf(str, "SetSrcL(-1,ParxLeft); %i:ms ,kdl", time);
//CanvasString(ParxBot, str, 10,40, LIGHT_GREEN); 

//BufSub(-1);
//BufSub(-2);
//BufSub(-3);

//SetSrcL(-1,ParxLeft);	// 
sprintf(str, "SetSrcL(1,ParxLeft); %i:ms ,kdl", time);
CanvasString(ParxBot, str, 10,50, LIGHT_GREEN); 
//SetSrcR(0,ParxRight);	//
//sprintf(str, "SetSrcR(0,ParxRight) %i:ms ,kdl", time);
//CanvasString(ParxBot, str, 10,60, LIGHT_GREEN); 

                    //   for (k=0;k<400;k++)
                    //      for (l=0;l<240;l++) PSetPixT(GetSrcR(0),k,l,rgb); //GetSrcR(0) works                      
time = osGetTime() - time; 
sprintf(str, "SetSrc L&R(-1,(ParxLeft & ParxRight); %i:ms ,kdl", time);
CanvasString(ParxBot, str, 10,30, LIGHT_GREEN); 
			}

                if(kDown & KEY_DLEFT)
                        {				
                     //   SetTopFramebuffers(0);  
time= osGetTime();
			
                        for (k=0;k<400;k++)
                          for (l=0;l<240;l++)
{
  SetPix(ParxRight,k,l,BLACK);
  SetPix(ParxLeft,k,l,BLACK);
  if (k<320) SetPix(ParxBot,k,l,BLACK);
}

time = osGetTime() - time; 
sprintf(str, "%i:ms Parx-GDI,kdl", time);
CanvasString(ParxBot, str, 10,10, GREEN);  
		}
//gfxString(ParxRight, str, 30,30, 3, rgb); 
//gfxString(ParxLeft, str, 30,30, 3, rgb);   
//for (l=1;l<16;l++) print3d(rgb,10*l,10*l,l-1,3,str);



		//render rainbow
//		renderEffect();
		//copy buffer to lower screen (don't have to do it every frame)
//		memcpy(gfxGetFramebuffer(GFX_BOTTOM, GFX_BOTTOM, NULL, NULL), buffer, size);
		//wait & swap
//		gfxSwapBuffersGpu();
//		gspWaitForEvent(GSPGPU_EVENT_VBlank0, false);

		// Flush and swap framebuffers
	//	gfxFlushBuffers();
	//	gfxSwapBuffers();
        	RefreshBuffer();
		//Wait for VBlank
		gspWaitForVBlank();
	}

	gfxExit();
	return 0;
}