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/src/radialcontrol.c')
-rw-r--r--source/blender/src/radialcontrol.c267
1 files changed, 0 insertions, 267 deletions
diff --git a/source/blender/src/radialcontrol.c b/source/blender/src/radialcontrol.c
deleted file mode 100644
index b61a150bada..00000000000
--- a/source/blender/src/radialcontrol.c
+++ /dev/null
@@ -1,267 +0,0 @@
-/*
- * $Id$
- *
- * ***** 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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
- *
- * The Original Code is Copyright (C) 2006 by Nicholas Bishop
- * All rights reserved.
- *
- * The Original Code is: all of this file.
- *
- * Contributor(s): none yet.
- *
- * ***** END GPL LICENSE BLOCK *****
- *
- * Implements the multiresolution modeling tools.
- *
- * multires.h
- *
- */
-
-#include "MEM_guardedalloc.h"
-
-#include "BIF_gl.h"
-#include "BIF_glutil.h"
-#include "BIF_mywindow.h"
-#include "BIF_screen.h"
-#include "BIF_space.h"
-#include "BIF_radialcontrol.h"
-
-#include "BKE_global.h"
-#include "BLI_arithb.h"
-
-#include "mydevice.h"
-#include "transform.h"
-
-#include "math.h"
-
-/* Prints the value being edited in the view header */
-static void radialcontrol_header(const RadialControl *rc)
-{
- if(rc) {
- char str[512];
- const char *name= "";
-
- if(rc->mode == RADIALCONTROL_SIZE)
- name= "Size";
- else if(rc->mode == RADIALCONTROL_STRENGTH)
- name= "Strength";
- else if(rc->mode == RADIALCONTROL_ROTATION)
- name= "Angle";
-
- sprintf(str, "%s: %d", name, (int)(rc->new_value));
- headerprint(str);
- }
-}
-
-/* Creates, initializes, and returns the control */
-RadialControl *radialcontrol_start(const int mode, RadialControlCallback callback,
- const int original_value, const int max_value,
- const unsigned int tex)
-{
- RadialControl *rc= MEM_callocN(sizeof(RadialControl), "radial control");
- short mouse[2];
-
- getmouseco_areawin(mouse);
- rc->origloc[0]= mouse[0];
- rc->origloc[1]= mouse[1];
-
- if(mode == RADIALCONTROL_SIZE)
- rc->origloc[0]-= original_value;
- else if(mode == RADIALCONTROL_STRENGTH)
- rc->origloc[0]-= 200 - 2*original_value;
- else if(mode == RADIALCONTROL_ROTATION) {
- rc->origloc[0]-= 200 * cos(original_value * M_PI / 180.0);
- rc->origloc[1]-= 200 * sin(original_value * M_PI / 180.0);
- }
-
- rc->callback = callback;
- rc->original_value = original_value;
- rc->max_value = max_value;
-
- rc->tex = tex;
-
- /* NumInput is used for keyboard input */
- rc->num = MEM_callocN(sizeof(NumInput), "radialcontrol numinput");
- rc->num->idx_max= 0;
-
- rc->mode= mode;
- radialcontrol_header(rc);
-
- allqueue(REDRAWVIEW3D, 0);
-
- return rc;
-}
-
-
-static void radialcontrol_end(RadialControl *rc)
-{
- if(rc) {
- rc->callback(rc->mode, rc->new_value);
- BIF_undo_push("Brush property set");
-
- /* Free everything */
- glDeleteTextures(1, (GLuint*)(&rc->tex));
- MEM_freeN(rc->num);
- MEM_freeN(rc);
-
- allqueue(REDRAWVIEW3D, 0);
- allqueue(REDRAWBUTSEDIT, 0);
- allqueue(REDRAWHEADERS, 0);
- }
-}
-
-void radialcontrol_do_events(RadialControl *rc, unsigned short event)
-{
- short mouse[2];
- short tmp[2];
- float dist;
- char valset= 0;
-
- if(!rc)
- return;
-
- handleNumInput(rc->num, event);
-
- if(hasNumInput(rc->num)) {
- float val;
- applyNumInput(rc->num, &val);
- rc->new_value = val;
- valset= 1;
- allqueue(REDRAWVIEW3D, 0);
- }
-
- switch(event) {
- case MOUSEX:
- case MOUSEY:
- if(!hasNumInput(rc->num)) {
- char ctrl= G.qual & LR_CTRLKEY;
- getmouseco_areawin(mouse);
- tmp[0]= rc->origloc[0]-mouse[0];
- tmp[1]= rc->origloc[1]-mouse[1];
- dist= sqrt(tmp[0]*tmp[0]+tmp[1]*tmp[1]);
- if(rc->mode == RADIALCONTROL_SIZE)
- rc->new_value = dist;
- else if(rc->mode == RADIALCONTROL_STRENGTH) {
- float fin= (200.0f - dist) * 0.5f;
- rc->new_value= fin>=0 ? fin : 0;
- } else if(rc->mode == RADIALCONTROL_ROTATION)
- rc->new_value= ((int)(atan2(tmp[1], tmp[0]) * (180.0 / M_PI)) + 180);
-
- if(ctrl)
- rc->new_value= (rc->new_value + 5) / 10*10;
-
- valset= 1;
- allqueue(REDRAWVIEW3D, 0);
- }
- break;
- case ESCKEY:
- case RIGHTMOUSE:
- rc->new_value = rc->original_value;
- case LEFTMOUSE:
- while(get_mbut()==L_MOUSE);
- case RETKEY:
- case PADENTER:
- radialcontrol_end(rc);
- return;
- default:
- break;
- };
-
- if(valset) {
- if(rc->new_value > rc->max_value)
- rc->new_value = rc->max_value;
- }
-
- radialcontrol_header(rc);
-}
-
-static void rot_line(const short o[2], const float ang)
-{
- sdrawXORline(o[0], o[1], o[0] + 200*cos(ang), o[1] + 200*sin(ang));
-}
-
-void radialcontrol_draw(RadialControl *rc)
-{
- short r1=200, r2=200, r3=200;
- float angle = 0;
-
- if(rc && rc->mode) {
- if(rc->mode == RADIALCONTROL_SIZE) {
- r1= rc->new_value;
- r2= rc->original_value;
- r3= r1;
- } else if(rc->mode == RADIALCONTROL_STRENGTH) {
- r1= 200 - rc->new_value * 2;
- r2= 200;
- r3= 200;
- } else if(rc->mode == RADIALCONTROL_ROTATION) {
- r1= r2= 200;
- r3= 200;
- angle = rc->new_value;
- }
-
- /* Draw brush with texture */
- glPushMatrix();
- glTranslatef(rc->origloc[0], rc->origloc[1], 0);
- glRotatef(angle, 0, 0, 1);
-
- if(rc->tex) {
- const float str = rc->mode == RADIALCONTROL_STRENGTH ? (rc->new_value / 200.0 + 0.5) : 1;
-
- glEnable(GL_BLEND);
- glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
-
- glBindTexture(GL_TEXTURE_2D, rc->tex);
-
- glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
- glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
-
- glEnable(GL_TEXTURE_2D);
- glBegin(GL_QUADS);
- glColor4f(0,0,0, str);
- glTexCoord2f(0,0);
- glVertex2f(-r3, -r3);
- glTexCoord2f(1,0);
- glVertex2f(r3, -r3);
- glTexCoord2f(1,1);
- glVertex2f(r3, r3);
- glTexCoord2f(0,1);
- glVertex2f(-r3, r3);
- glEnd();
- glDisable(GL_TEXTURE_2D);
- }
-
- glPopMatrix();
-
- if(r1 != r2)
- fdrawXORcirc(rc->origloc[0], rc->origloc[1], r1);
- fdrawXORcirc(rc->origloc[0], rc->origloc[1], r2);
-
- if(rc->mode == RADIALCONTROL_ROTATION) {
- float ang1= rc->original_value * (M_PI/180.0f);
- float ang2= rc->new_value * (M_PI/180.0f);
-
- if(rc->new_value > 359)
- ang2 = 0;
-
- rot_line(rc->origloc, ang1);
- if(ang1 != ang2)
- rot_line(rc->origloc, ang2);
- }
- }
-}