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/blender/freestyle/intern/app/AppCanvas.cpp')
-rwxr-xr-xsource/blender/freestyle/intern/app/AppCanvas.cpp404
1 files changed, 0 insertions, 404 deletions
diff --git a/source/blender/freestyle/intern/app/AppCanvas.cpp b/source/blender/freestyle/intern/app/AppCanvas.cpp
deleted file mode 100755
index 3ca06fddfe7..00000000000
--- a/source/blender/freestyle/intern/app/AppCanvas.cpp
+++ /dev/null
@@ -1,404 +0,0 @@
-
-//
-// Copyright (C) : Please refer to the COPYRIGHT file distributed
-// with this source distribution.
-//
-// 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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
-//
-///////////////////////////////////////////////////////////////////////////////
-
-#include "AppGLWidget.h"
-#include "../image/Image.h"
-#include "../system/TimeStamp.h"
-#include "Controller.h"
-#include "../stroke/StrokeRenderer.h"
-#include "AppCanvas.h"
-#include "../rendering/GLRenderer.h"
-#include "../rendering/GLStrokeRenderer.h"
-#include "../rendering/GLUtils.h"
-#include "AppConfig.h"
-#include <QImage>
-
-#ifdef WIN32
-# include <windows.h>
-# include "../rendering/extgl.h"
-#endif
-#ifdef __MACH__
-# include <OpenGL/gl.h>
-#else
-# include <GL/gl.h>
-#endif
-
-AppCanvas::AppCanvas()
-:Canvas()
-{
- _pViewer = 0;
- _blendEquation = true;
- _MapsPath = (const char*)(Config::Path::getInstance()->getMapsDir().toAscii().data());
-}
-
-AppCanvas::AppCanvas(AppGLWidget* iViewer)
-:Canvas()
-{
- _pViewer = iViewer;
- _blendEquation = true;
-}
-
-AppCanvas::AppCanvas(const AppCanvas& iBrother)
-:Canvas(iBrother)
-{
- _pViewer = iBrother._pViewer;
- _blendEquation = iBrother._blendEquation;
-}
-
-AppCanvas::~AppCanvas()
-{
- _pViewer = 0;
-}
-
-void AppCanvas::setViewer(AppGLWidget *iViewer)
-{
- _pViewer = iViewer;
-}
-
-int AppCanvas::width() const
-{
- return _pViewer->width();
-}
-
-int AppCanvas::height() const
-{
- return _pViewer->height();
-}
-
-BBox<Vec3r> AppCanvas::scene3DBBox() const
-{
- return _pViewer->scene3DBBox();
-}
-
-void AppCanvas::preDraw()
-{
- Canvas::preDraw();
-
- _pViewer->prepareCanvas();
- glClearColor(0,0,0,0);
- glClear(GL_COLOR_BUFFER_BIT);
- glDisable(GL_LIGHTING);
- glPolygonMode(GL_FRONT, GL_FILL);
- glShadeModel(GL_SMOOTH);
- glDisable(GL_DEPTH_TEST);
- glEnable(GL_TEXTURE_2D);
- glEnable(GL_BLEND);
-}
-
-void AppCanvas::init()
-{
-#ifdef WIN32
- static bool firsttime = true;
- if (firsttime)
- {
- if (extgl_Initialize() != 0)
- cerr << "Error: problem occurred while initializing GL extensions" << endl;
- else
- cout << "GL extensions initialized" << endl;
-
- if(!glutils_extgl_GetProcAddress("glBlendEquation")){
- _blendEquation = false;
- cout << "glBlendEquation unavailable on this hardware -> switching to strokes basic rendering mode" << endl;
- }
- firsttime=false;
- }
-#endif
-
- _Renderer = new GLStrokeRenderer;
- if(!StrokeRenderer::loadTextures())
- {
- cerr << "unable to load stroke textures" << endl;
- return;
- }
-}
-
-void AppCanvas::postDraw()
-{
- //inverse frame buffer
- glDisable(GL_TEXTURE_2D);
- glDisable(GL_BLEND);
- _pViewer->releaseCanvas();
-
- Canvas::postDraw();
-}
-
-void AppCanvas::Erase()
-{
- Canvas::Erase();
- //_pViewer->clear();
-}
-
-#include "../image/GaussianFilter.h"
-void AppCanvas::readColorPixels(int x,int y,int w, int h, RGBImage& oImage) const
-{
- //static unsigned number = 0;
- float *rgb = new float[3*w*h];
- _pViewer->readPixels(x,y,w,h,AppGLWidget::RGB,rgb);
- oImage.setArray(rgb, width(), height(), w,h, x, y, false);
- // FIXME
- // QImage qtmp(w, h, 32);
- // for(unsigned py=0;py<h;++py){
- // for(unsigned px=0;px<w;++px){
- // int r = (int)255*(oImage.getR(x+px,y+py));
- // int g = (int)255*(oImage.getG(x+px,y+py));
- // int b = (int)255*(oImage.getB(x+px,y+py));
- // qtmp.setPixel(px,py,qRgb(r,g,b));
- // }
- // }
- // qtmp.save("densityQuery"+QString::number(number)+".png", "PNG");
- // if(number == 1090){
- // RGBImage img;
- // float *rgbtmp = new float[3*width()*height()];
- // _pViewer->readPixels(0,0,width(),height(),AppGLWidget::RGB,rgbtmp);
- // img.setArray(rgbtmp, width(), height(), width(), height(), 0, 0, false);
- // QImage qtmp(width(), height(), 32);
- // for(unsigned py=0;py<height();++py){
- // for(unsigned px=0;px<width();++px){
- // int r = (int)255*(img.getR(px,py));
- // int g = (int)255*(img.getG(px,py));
- // int b = (int)255*(img.getB(px,py));
- // qtmp.setPixel(px,height()-1-py,qRgb(r,g,b));
- // }
- // }
- // qtmp.save("densityQuery"+QString::number(number)+".png", "PNG");
- //
- // GaussianFilter filter;
- // filter.setSigma(4.0);
- // int bound = filter.getBound();
- // QImage qtmp2(width(), height(), 32);
- // for(int py2=0;py2<height();++py2){
- // for(int px2=0;px2<width();++px2){
- // if( (px2-bound < 0) || (px2+bound>width())
- // || (py2-bound < 0) || (py2+bound>height()))
- // continue;
- // int g = 255*filter.getSmoothedPixel<RGBImage>(&img, px2,py2);
- // qtmp2.setPixel(px2,height()-1-py2,qRgb(g,g,g));
- // }
- // }
- // qtmp2.save("blurredCausalDensity"+QString::number(number)+".png", "PNG");
- // }
- // cout << number << endl;
- // ++number;
-}
-
-void AppCanvas::readDepthPixels(int x,int y,int w, int h, GrayImage& oImage) const
-{
- float *rgb = new float[w*h];
- _pViewer->readPixels(x,y,w,h,AppGLWidget::DEPTH,rgb);
- oImage.setArray(rgb, width(), height(), w,h, x, y, false);
-}
-
-void AppCanvas::update()
-{
-// static int counter = 0;
-// char fileName[100] = "framebuffer";
-// char number[10];
-//
- _pViewer->updateGL();
- _pViewer->swapBuffers();
- //QImage fb = _pViewer->grabFrameBuffer();
- // sprintf(number, "%3d", counter);
- // strcat(fileName, number);
- // strcat(fileName, ".bmp");
- // fb.save(fileName, "BMP");
- //counter++;
-}
-
-void AppCanvas::Render(const StrokeRenderer *iRenderer)
-{
- if(!_blendEquation){
- RenderBasic(iRenderer);
- return;
- }
-
- glClearColor(1,1,1,1);
- glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
- glDisable(GL_LIGHTING);
- glPolygonMode(GL_FRONT, GL_FILL);
- glShadeModel(GL_SMOOTH);
-
- if(_pViewer->draw3DsceneEnabled())
- {
- glClearColor(1,1,1,0);
- glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
- glMatrixMode(GL_PROJECTION);
- glPushMatrix();
- glMatrixMode(GL_MODELVIEW);
- glPushMatrix();
-
- glEnable(GL_LIGHTING);
- glEnable(GL_DEPTH_TEST);
- _pViewer->set3DContext();
- _pViewer->DrawScene(_pViewer->glRenderer());
- glDisable(GL_DEPTH_TEST);
- glDisable(GL_LIGHTING);
- glMatrixMode(GL_PROJECTION);
- glPopMatrix();
- glMatrixMode(GL_MODELVIEW);
- glPopMatrix();
- }
-
-
- glDisable(GL_DEPTH_TEST);
- glBlendEquation(GL_ADD);
-
- glBlendFunc(GL_DST_COLOR, GL_ZERO);
-
- if(_drawPaper)
- {
- glEnable(GL_BLEND);
- glEnable(GL_TEXTURE_2D);
- float zfar = _pViewer->zfar();
- zfar = zfar+0.1*zfar;
- //draw background paper // FIXME
- //glTexEnvf(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_REPLACE);
- glTexEnvf(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_MODULATE);
- glBindTexture(GL_TEXTURE_2D, StrokeRenderer::_textureManager->getPaperTextureIndex(_paperTextureIndex));
- glColor4f(1,1,1,0.0);
- glBegin(GL_TRIANGLE_STRIP);
- {
- glTexCoord2f(0,0); glVertex3f(0, 0, -1);
- glTexCoord2f(4,0); glVertex3f(2048, 0, -1);
- glTexCoord2f(0,4); glVertex3f(0, 2048, -1);
- glTexCoord2f(4,4); glVertex3f(2048, 2048, -1);
- }
- glEnd();
- }
-
- glPushAttrib(GL_COLOR_BUFFER_BIT);
- glBlendEquation(GL_FUNC_SUBTRACT);
- glBlendFunc(GL_ONE, GL_ONE);
-
- glDisable(GL_TEXTURE_2D);
- glEnable(GL_BLEND);
- glColor4f(1,1,1,1);
- glBegin(GL_TRIANGLE_STRIP);
- {
- glVertex2f(0, 0);
- glVertex2f(2048, 0);
- glVertex2f(0, 2048);
- glVertex2f(2048, 2048);
- }
- glEnd();
- glPopAttrib();
-
- glDisable(GL_DEPTH_TEST);
- glBlendEquation(GL_ADD);
- glBlendFunc(GL_SRC_ALPHA, GL_ONE);
-
- glEnable(GL_TEXTURE_2D);
- Canvas::Render(iRenderer);
- //
- glPushAttrib(GL_COLOR_BUFFER_BIT);
- glBlendEquation(GL_FUNC_SUBTRACT);
- glBlendFunc(GL_ONE, GL_ONE);
-
- glDisable(GL_TEXTURE_2D);
- glEnable(GL_BLEND);
- glColor3f(1,1,1);
- glBegin(GL_TRIANGLE_STRIP);
- {
- glVertex2f(0, 0);
- glVertex2f(2048, 0);
- glVertex2f(0, 2048);
- glVertex2f(2048, 2048);
- }
- glEnd();
- glPopAttrib();
-
- glDisable(GL_TEXTURE_2D);
- glDisable(GL_BLEND);
-}
-
-void AppCanvas::RenderBasic(const StrokeRenderer *iRenderer)
-{
- glClearColor(1,1,1,1);
- glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
- glDisable(GL_LIGHTING);
- glPolygonMode(GL_FRONT, GL_FILL);
- glShadeModel(GL_SMOOTH);
-
- if(_pViewer->draw3DsceneEnabled())
- {
- glClearColor(1,1,1,0);
- glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
- glMatrixMode(GL_PROJECTION);
- glPushMatrix();
- glMatrixMode(GL_MODELVIEW);
- glPushMatrix();
-
- glEnable(GL_LIGHTING);
- glEnable(GL_DEPTH_TEST);
- _pViewer->set3DContext();
- _pViewer->DrawScene(_pViewer->glRenderer());
- glDisable(GL_DEPTH_TEST);
- glDisable(GL_LIGHTING);
- glMatrixMode(GL_PROJECTION);
- glPopMatrix();
- glMatrixMode(GL_MODELVIEW);
- glPopMatrix();
- }
-
- glBlendFunc(GL_DST_COLOR, GL_ZERO);
- if(_drawPaper)
- {
- glEnable(GL_BLEND);
- glEnable(GL_TEXTURE_2D);
- float zfar = _pViewer->zfar();
- zfar = zfar+0.1*zfar;
- //draw background paper // FIXME
- //glTexEnvf(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_REPLACE);
- glTexEnvf(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_MODULATE);
- glBindTexture(GL_TEXTURE_2D, StrokeRenderer::_textureManager->getPaperTextureIndex(_paperTextureIndex));
- glColor4f(1,1,1,0.0);
- glBegin(GL_TRIANGLE_STRIP);
- {
- glTexCoord2f(0,0); glVertex3f(0, 0, -1);
- glTexCoord2f(4,0); glVertex3f(2048, 0, -1);
- glTexCoord2f(0,4); glVertex3f(0, 2048, -1);
- glTexCoord2f(4,4); glVertex3f(2048, 2048, -1);
- }
- glEnd();
- }
-
- glDisable(GL_DEPTH_TEST);
- glPushAttrib(GL_COLOR_BUFFER_BIT);
- glEnable(GL_BLEND);
- glPopAttrib();
-
- glDisable(GL_DEPTH_TEST);
- glBlendFunc(GL_SRC_ALPHA, GL_ONE);
-
- glEnable(GL_TEXTURE_2D);
- Canvas::RenderBasic(iRenderer);
-
- glDisable(GL_TEXTURE_2D);
- glDisable(GL_BLEND);
-}
-
-
-void AppCanvas::RenderStroke(Stroke *iStroke) {
- iStroke->Render(_Renderer);
- if(_pViewer->getRecordFlag()){
- //Sleep(1000);
- _pViewer->saveSnapshot(true);
- }
-}