Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'source/gameengine/BlenderRoutines/KX_BlenderCanvas.cpp')
-rw-r--r--source/gameengine/BlenderRoutines/KX_BlenderCanvas.cpp352
1 files changed, 0 insertions, 352 deletions
diff --git a/source/gameengine/BlenderRoutines/KX_BlenderCanvas.cpp b/source/gameengine/BlenderRoutines/KX_BlenderCanvas.cpp
deleted file mode 100644
index 6fdc823ba1a..00000000000
--- a/source/gameengine/BlenderRoutines/KX_BlenderCanvas.cpp
+++ /dev/null
@@ -1,352 +0,0 @@
-/*
- * ***** BEGIN GPL LICENSE BLOCK *****
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public License
- * as published by the Free Software Foundation; either version 2
- * of the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
- *
- * The Original Code is Copyright (C) 2001-2002 by NaN Holding BV.
- * All rights reserved.
- *
- * The Original Code is: all of this file.
- *
- * Contributor(s): none yet.
- *
- * ***** END GPL LICENSE BLOCK *****
- */
-
-/** \file gameengine/BlenderRoutines/KX_BlenderCanvas.cpp
- * \ingroup blroutines
- */
-
-#include "GPU_glew.h"
-
-#include "MEM_guardedalloc.h"
-
-#include "KX_BlenderCanvas.h"
-
-#include "DNA_screen_types.h"
-#include "DNA_scene_types.h"
-#include "DNA_windowmanager_types.h"
-
-#include "BKE_image.h"
-
-#include <assert.h>
-#include <iostream>
-
-extern "C" {
-#include "WM_api.h"
-#include "wm_cursors.h"
-#include "wm_window.h"
-}
-
-KX_BlenderCanvas::KX_BlenderCanvas(wmWindowManager *wm, wmWindow *win, RAS_Rect &rect, struct ARegion *ar) :
-m_wm(wm),
-m_win(win),
-m_frame_rect(rect)
-{
- // initialize area so that it's available for game logic on frame 1 (ImageViewport)
- m_area_rect = rect;
- // area boundaries needed for mouse coordinates in Letterbox framing mode
- m_area_left = ar->winrct.xmin;
- m_area_top = ar->winrct.ymax;
- m_frame = 1;
-
- glGetIntegerv(GL_VIEWPORT, (GLint *)m_viewport);
-}
-
-KX_BlenderCanvas::~KX_BlenderCanvas()
-{
-}
-
-void KX_BlenderCanvas::Init()
-{
- glDepthFunc(GL_LEQUAL);
-}
-
-
-void KX_BlenderCanvas::SwapBuffers()
-{
- wm_window_swap_buffers(m_win);
-}
-
-void KX_BlenderCanvas::SetSwapInterval(int interval)
-{
- wm_window_set_swap_interval(m_win, interval);
-}
-
-bool KX_BlenderCanvas::GetSwapInterval(int &intervalOut)
-{
- return wm_window_get_swap_interval(m_win, &intervalOut);
-}
-
-void KX_BlenderCanvas::GetDisplayDimensions(int &width, int &height)
-{
- wm_get_screensize(&width, &height);
-}
-
-void KX_BlenderCanvas::ResizeWindow(int width, int height)
-{
- // Not implemented for the embedded player
-}
-
-void KX_BlenderCanvas::SetFullScreen(bool enable)
-{
- // Not implemented for the embedded player
-}
-
-bool KX_BlenderCanvas::GetFullScreen()
-{
- // Not implemented for the embedded player
- return false;
-}
-
-bool KX_BlenderCanvas::BeginDraw()
-{
- // in case of multi-window we need to ensure we are drawing to the correct
- // window always, because it may change in window event handling
- wm_window_make_drawable(m_wm, m_win);
- return true;
-}
-
-
-void KX_BlenderCanvas::EndDraw()
-{
- // nothing needs to be done here
-}
-
-void KX_BlenderCanvas::BeginFrame()
-{
- glEnable(GL_DEPTH_TEST);
- glDepthFunc(GL_LEQUAL);
-}
-
-
-void KX_BlenderCanvas::EndFrame()
-{
- glDisable(GL_FOG);
-}
-
-
-
-void KX_BlenderCanvas::ClearColor(float r,float g,float b,float a)
-{
- glClearColor(r,g,b,a);
-}
-
-
-
-void KX_BlenderCanvas::ClearBuffer(int type)
-{
- int ogltype = 0;
-
- if (type & RAS_ICanvas::COLOR_BUFFER )
- ogltype |= GL_COLOR_BUFFER_BIT;
-
- if (type & RAS_ICanvas::DEPTH_BUFFER )
- ogltype |= GL_DEPTH_BUFFER_BIT;
- glClear(ogltype);
-}
-
-int KX_BlenderCanvas::GetWidth(
-) const {
- return m_frame_rect.GetWidth();
-}
-
-int KX_BlenderCanvas::GetHeight(
-) const {
- return m_frame_rect.GetHeight();
-}
-
-int KX_BlenderCanvas::GetMouseX(int x)
-{
- int left = GetWindowArea().GetLeft();
- return x - (left - m_area_left);
-}
-
-int KX_BlenderCanvas::GetMouseY(int y)
-{
- int top = GetWindowArea().GetTop();
- return y - (m_area_top - top);
-}
-
-float KX_BlenderCanvas::GetMouseNormalizedX(int x)
-{
- int can_x = GetMouseX(x);
- return float(can_x)/this->GetWidth();
-}
-
-float KX_BlenderCanvas::GetMouseNormalizedY(int y)
-{
- int can_y = GetMouseY(y);
- return float(can_y)/this->GetHeight();
-}
-
-RAS_Rect &
-KX_BlenderCanvas::
-GetWindowArea(
-) {
- return m_area_rect;
-}
-
- void
-KX_BlenderCanvas::
-SetViewPort(
- int x1, int y1,
- int x2, int y2
-) {
- /* x1 and y1 are the min pixel coordinate (e.g. 0)
- * x2 and y2 are the max pixel coordinate
- * the width,height is calculated including both pixels
- * therefore: max - min + 1
- */
- int vp_width = (x2 - x1) + 1;
- int vp_height = (y2 - y1) + 1;
- int minx = m_frame_rect.GetLeft();
- int miny = m_frame_rect.GetBottom();
-
- m_area_rect.SetLeft(minx + x1);
- m_area_rect.SetBottom(miny + y1);
- m_area_rect.SetRight(minx + x2);
- m_area_rect.SetTop(miny + y2);
-
- m_viewport[0] = minx+x1;
- m_viewport[1] = miny+y1;
- m_viewport[2] = vp_width;
- m_viewport[3] = vp_height;
-
- glViewport(minx + x1, miny + y1, vp_width, vp_height);
- glScissor(minx + x1, miny + y1, vp_width, vp_height);
-}
-
- void
-KX_BlenderCanvas::
-UpdateViewPort(
- int x1, int y1,
- int x2, int y2
-) {
- m_viewport[0] = x1;
- m_viewport[1] = y1;
- m_viewport[2] = x2;
- m_viewport[3] = y2;
-}
-
- const int*
-KX_BlenderCanvas::
-GetViewPort() {
-#ifdef DEBUG
- // If we're in a debug build, we might as well make sure our values don't differ
- // from what the gpu thinks we have. This could lead to nasty, hard to find bugs.
- int viewport[4];
- glGetIntegerv(GL_VIEWPORT, viewport);
- assert(viewport[0] == m_viewport[0]);
- assert(viewport[1] == m_viewport[1]);
- assert(viewport[2] == m_viewport[2]);
- assert(viewport[3] == m_viewport[3]);
-#endif
-
- return m_viewport;
-}
-
-void KX_BlenderCanvas::SetMouseState(RAS_MouseState mousestate)
-{
- m_mousestate = mousestate;
-
- switch (mousestate)
- {
- case MOUSE_INVISIBLE:
- {
- WM_cursor_set(m_win, CURSOR_NONE);
- break;
- }
- case MOUSE_WAIT:
- {
- WM_cursor_set(m_win, CURSOR_WAIT);
- break;
- }
- case MOUSE_NORMAL:
- {
- WM_cursor_set(m_win, CURSOR_STD);
- break;
- }
- default:
- {
- }
- }
-}
-
-
-
-// (0,0) is top left, (width,height) is bottom right
-void KX_BlenderCanvas::SetMousePosition(int x,int y)
-{
- int winX = m_frame_rect.GetLeft();
- int winY = m_frame_rect.GetBottom();
- int winH = m_frame_rect.GetHeight();
-
- WM_cursor_warp(m_win, winX + x, winY + (winH-y));
-}
-
-
-/* get shot from frontbuffer sort of a copy from screendump.c */
-static unsigned int *screenshot(ScrArea *curarea, int *dumpsx, int *dumpsy)
-{
- int x=0, y=0;
- unsigned int *dumprect= NULL;
-
- x= curarea->totrct.xmin;
- y= curarea->totrct.ymin;
- *dumpsx= curarea->totrct.xmax-x;
- *dumpsy= curarea->totrct.ymax-y;
-
- if (*dumpsx && *dumpsy) {
-
- dumprect= (unsigned int *)MEM_mallocN(sizeof(int) * (*dumpsx) * (*dumpsy), "dumprect");
- glReadBuffer(GL_FRONT);
- glReadPixels(x, y, *dumpsx, *dumpsy, GL_RGBA, GL_UNSIGNED_BYTE, dumprect);
- glFinish();
- glReadBuffer(GL_BACK);
- }
-
- return dumprect;
-}
-
-void KX_BlenderCanvas::MakeScreenShot(const char *filename)
-{
- ScrArea area_dummy= {0};
- unsigned int *dumprect;
- int dumpsx, dumpsy;
-
- area_dummy.totrct.xmin = m_frame_rect.GetLeft();
- area_dummy.totrct.xmax = m_frame_rect.GetRight();
- area_dummy.totrct.ymin = m_frame_rect.GetBottom();
- area_dummy.totrct.ymax = m_frame_rect.GetTop();
-
- dumprect = screenshot(&area_dummy, &dumpsx, &dumpsy);
- if (!dumprect) {
- std::cerr << "KX_BlenderCanvas: Unable to take screenshot!" << std::endl;
- return;
- }
-
- /* initialize image file format data */
- Scene *scene = WM_window_get_active_scene(m_win);
- ImageFormatData *im_format = (ImageFormatData *)MEM_mallocN(sizeof(ImageFormatData), "im_format");
-
- if (scene)
- *im_format = scene->r.im_format;
- else
- BKE_imformat_defaults(im_format);
-
- /* save_screenshot() frees dumprect and im_format */
- save_screenshot(filename, dumpsx, dumpsy, dumprect, im_format);
-}