2008-12-01 06:52:18 +00:00
|
|
|
|
/**
|
|
|
|
|
|
* $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.
|
|
|
|
|
|
*
|
|
|
|
|
|
* Contributor(s): Blender Foundation (2008), Juho Veps<EFBFBD>l<EFBFBD>inen
|
|
|
|
|
|
*
|
|
|
|
|
|
* ***** END GPL LICENSE BLOCK *****
|
|
|
|
|
|
*/
|
|
|
|
|
|
|
|
|
|
|
|
#include <stdlib.h>
|
|
|
|
|
|
|
|
|
|
|
|
#include "RNA_define.h"
|
|
|
|
|
|
#include "RNA_types.h"
|
|
|
|
|
|
|
|
|
|
|
|
#include "rna_internal.h"
|
|
|
|
|
|
|
|
|
|
|
|
#include "DNA_brush_types.h"
|
2009-01-10 22:57:33 +00:00
|
|
|
|
#include "DNA_texture_types.h"
|
2008-12-01 06:52:18 +00:00
|
|
|
|
|
|
|
|
|
|
#ifdef RNA_RUNTIME
|
|
|
|
|
|
|
2009-07-15 19:20:59 +00:00
|
|
|
|
#include "MEM_guardedalloc.h"
|
|
|
|
|
|
|
|
|
|
|
|
#include "BKE_texture.h"
|
|
|
|
|
|
|
2009-01-10 22:57:33 +00:00
|
|
|
|
static void rna_Brush_mtex_begin(CollectionPropertyIterator *iter, PointerRNA *ptr)
|
|
|
|
|
|
{
|
|
|
|
|
|
Brush *brush= (Brush*)ptr->data;
|
2009-07-13 19:33:59 +00:00
|
|
|
|
rna_iterator_array_begin(iter, (void*)brush->mtex, sizeof(MTex*), MAX_MTEX, 0, NULL);
|
2009-01-10 22:57:33 +00:00
|
|
|
|
}
|
|
|
|
|
|
|
2009-02-02 19:57:57 +00:00
|
|
|
|
static PointerRNA rna_Brush_active_texture_get(PointerRNA *ptr)
|
2009-01-10 22:57:33 +00:00
|
|
|
|
{
|
|
|
|
|
|
Brush *brush= (Brush*)ptr->data;
|
2009-02-02 19:57:57 +00:00
|
|
|
|
return rna_pointer_inherit_refine(ptr, &RNA_TextureSlot, brush->mtex[(int)brush->texact]);
|
2009-01-10 22:57:33 +00:00
|
|
|
|
}
|
|
|
|
|
|
|
2009-07-15 19:20:59 +00:00
|
|
|
|
static void rna_Brush_active_texture_index_set(PointerRNA *ptr, int value)
|
|
|
|
|
|
{
|
|
|
|
|
|
Brush *brush= (Brush*)ptr->data;
|
|
|
|
|
|
int act= brush->texact;
|
|
|
|
|
|
|
|
|
|
|
|
if(value == act || value < 0 || value >= MAX_MTEX)
|
|
|
|
|
|
return;
|
|
|
|
|
|
|
|
|
|
|
|
/* auto create/free mtex on activate/deactive, so we can edit
|
|
|
|
|
|
* the texture pointer in the buttons UI. */
|
|
|
|
|
|
if(brush->mtex[act] && !brush->mtex[act]->tex) {
|
|
|
|
|
|
MEM_freeN(brush->mtex[act]);
|
|
|
|
|
|
brush->mtex[act]= NULL;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
brush->texact= value;
|
|
|
|
|
|
|
|
|
|
|
|
if(!brush->mtex[value])
|
|
|
|
|
|
brush->mtex[value]= add_mtex();
|
|
|
|
|
|
}
|
|
|
|
|
|
|
2009-01-24 22:58:22 +00:00
|
|
|
|
static float rna_Brush_rotation_get(PointerRNA *ptr)
|
|
|
|
|
|
{
|
|
|
|
|
|
Brush *brush= (Brush*)ptr->data;
|
|
|
|
|
|
const float conv = 57.295779506;
|
|
|
|
|
|
return brush->rot * conv;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
static void rna_Brush_rotation_set(PointerRNA *ptr, float v)
|
|
|
|
|
|
{
|
|
|
|
|
|
Brush *brush= (Brush*)ptr->data;
|
|
|
|
|
|
const float conv = 0.017453293;
|
|
|
|
|
|
brush->rot = v * conv;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
2008-12-01 06:52:18 +00:00
|
|
|
|
#else
|
|
|
|
|
|
|
2008-12-01 19:02:27 +00:00
|
|
|
|
void rna_def_brush(BlenderRNA *brna)
|
2008-12-01 06:52:18 +00:00
|
|
|
|
{
|
|
|
|
|
|
StructRNA *srna;
|
|
|
|
|
|
PropertyRNA *prop;
|
|
|
|
|
|
static EnumPropertyItem prop_blend_items[] = {
|
2009-06-16 00:52:21 +00:00
|
|
|
|
{BRUSH_BLEND_MIX, "MIX", 0, "Mix", "Use mix blending mode while painting."},
|
|
|
|
|
|
{BRUSH_BLEND_ADD, "ADD", 0, "Add", "Use add blending mode while painting."},
|
|
|
|
|
|
{BRUSH_BLEND_SUB, "SUB", 0, "Subtract", "Use subtract blending mode while painting."},
|
|
|
|
|
|
{BRUSH_BLEND_MUL, "MUL", 0, "Multiply", "Use multiply blending mode while painting."},
|
|
|
|
|
|
{BRUSH_BLEND_LIGHTEN, "LIGHTEN", 0, "Lighten", "Use lighten blending mode while painting."},
|
|
|
|
|
|
{BRUSH_BLEND_DARKEN, "DARKEN", 0, "Darken", "Use darken blending mode while painting."},
|
|
|
|
|
|
{BRUSH_BLEND_ERASE_ALPHA, "ERASE_ALPHA", 0, "Erase Alpha", "Erase alpha while painting."},
|
|
|
|
|
|
{BRUSH_BLEND_ADD_ALPHA, "ADD_ALPHA", 0, "Add Alpha", "Add alpha while painting."},
|
|
|
|
|
|
{0, NULL, 0, NULL, NULL}};
|
2009-01-21 20:03:41 +00:00
|
|
|
|
static EnumPropertyItem prop_texture_mode_items[] = {
|
2009-06-16 00:52:21 +00:00
|
|
|
|
{BRUSH_TEX_DRAG, "TEX_DRAG", 0, "Drag", ""},
|
|
|
|
|
|
{BRUSH_TEX_TILE, "TEX_TILE", 0, "Tile", ""},
|
|
|
|
|
|
{BRUSH_TEX_3D, "TEX_3D", 0, "3D", ""},
|
|
|
|
|
|
{0, NULL, 0, NULL, NULL}};
|
2009-01-14 15:29:29 +00:00
|
|
|
|
static EnumPropertyItem prop_sculpt_tool_items[] = {
|
2009-06-16 00:52:21 +00:00
|
|
|
|
{SCULPT_TOOL_DRAW, "DRAW", 0, "Draw", ""},
|
|
|
|
|
|
{SCULPT_TOOL_SMOOTH, "SMOOTH", 0, "Smooth", ""},
|
|
|
|
|
|
{SCULPT_TOOL_PINCH, "PINCH", 0, "Pinch", ""},
|
|
|
|
|
|
{SCULPT_TOOL_INFLATE, "INFLATE", 0, "Inflate", ""},
|
|
|
|
|
|
{SCULPT_TOOL_GRAB, "GRAB", 0, "Grab", ""},
|
|
|
|
|
|
{SCULPT_TOOL_LAYER, "LAYER", 0, "Layer", ""},
|
|
|
|
|
|
{SCULPT_TOOL_FLATTEN, "FLATTEN", 0, "Flatten", ""},
|
2009-07-21 00:55:20 +00:00
|
|
|
|
{SCULPT_TOOL_CLAY, "CLAY", 0, "Clay", ""},
|
2009-06-16 00:52:21 +00:00
|
|
|
|
{0, NULL, 0, NULL, NULL}};
|
2008-12-01 06:52:18 +00:00
|
|
|
|
|
2008-12-19 04:06:24 +00:00
|
|
|
|
srna= RNA_def_struct(brna, "Brush", "ID");
|
2009-01-10 22:57:33 +00:00
|
|
|
|
RNA_def_struct_ui_text(srna, "Brush", "Brush datablock for storing brush settings for painting and sculpting.");
|
2009-06-03 23:16:51 +00:00
|
|
|
|
RNA_def_struct_ui_icon(srna, ICON_BRUSH_DATA);
|
2008-12-01 06:52:18 +00:00
|
|
|
|
|
2008-12-02 23:45:11 +00:00
|
|
|
|
/* enums */
|
2008-12-01 06:52:18 +00:00
|
|
|
|
prop= RNA_def_property(srna, "blend", PROP_ENUM, PROP_NONE);
|
|
|
|
|
|
RNA_def_property_enum_items(prop, prop_blend_items);
|
|
|
|
|
|
RNA_def_property_ui_text(prop, "Blending mode", "Brush blending mode.");
|
2009-01-14 15:29:29 +00:00
|
|
|
|
|
2009-01-21 20:03:41 +00:00
|
|
|
|
prop= RNA_def_property(srna, "texture_mode", PROP_ENUM, PROP_NONE);
|
|
|
|
|
|
RNA_def_property_enum_sdna(prop, NULL, "tex_mode");
|
|
|
|
|
|
RNA_def_property_enum_items(prop, prop_texture_mode_items);
|
|
|
|
|
|
RNA_def_property_ui_text(prop, "Texture Mode", "");
|
|
|
|
|
|
|
2009-01-14 15:29:29 +00:00
|
|
|
|
prop= RNA_def_property(srna, "sculpt_tool", PROP_ENUM, PROP_NONE);
|
|
|
|
|
|
RNA_def_property_enum_items(prop, prop_sculpt_tool_items);
|
|
|
|
|
|
RNA_def_property_ui_text(prop, "Sculpt Tool", "");
|
2008-12-01 06:52:18 +00:00
|
|
|
|
|
2008-12-02 23:45:11 +00:00
|
|
|
|
/* number values */
|
|
|
|
|
|
prop= RNA_def_property(srna, "size", PROP_INT, PROP_NONE);
|
2008-12-01 06:52:18 +00:00
|
|
|
|
RNA_def_property_range(prop, 1, 200);
|
2008-12-02 23:45:11 +00:00
|
|
|
|
RNA_def_property_ui_text(prop, "Size", "Diameter of the brush.");
|
2008-12-01 06:52:18 +00:00
|
|
|
|
|
|
|
|
|
|
prop= RNA_def_property(srna, "falloff", PROP_FLOAT, PROP_NONE);
|
|
|
|
|
|
RNA_def_property_float_sdna(prop, NULL, "innerradius");
|
|
|
|
|
|
RNA_def_property_range(prop, 0.0f, 1.0f);
|
2008-12-02 23:45:11 +00:00
|
|
|
|
RNA_def_property_ui_text(prop, "Falloff", "Falloff radius of the brush.");
|
2008-12-01 06:52:18 +00:00
|
|
|
|
|
|
|
|
|
|
prop= RNA_def_property(srna, "spacing", PROP_FLOAT, PROP_NONE);
|
|
|
|
|
|
RNA_def_property_float_sdna(prop, NULL, "spacing");
|
|
|
|
|
|
RNA_def_property_range(prop, 1.0f, 100.0f);
|
|
|
|
|
|
RNA_def_property_ui_text(prop, "Spacing", "Spacing between brush stamps.");
|
|
|
|
|
|
|
|
|
|
|
|
prop= RNA_def_property(srna, "rate", PROP_FLOAT, PROP_NONE);
|
|
|
|
|
|
RNA_def_property_float_sdna(prop, NULL, "rate");
|
|
|
|
|
|
RNA_def_property_range(prop, 0.010f, 1.0f);
|
|
|
|
|
|
RNA_def_property_ui_text(prop, "Rate", "Number of paints per second for Airbrush.");
|
|
|
|
|
|
|
|
|
|
|
|
prop= RNA_def_property(srna, "color", PROP_FLOAT, PROP_COLOR);
|
|
|
|
|
|
RNA_def_property_float_sdna(prop, NULL, "rgb");
|
|
|
|
|
|
RNA_def_property_ui_text(prop, "Color", "");
|
|
|
|
|
|
|
2009-01-06 01:37:12 +00:00
|
|
|
|
prop= RNA_def_property(srna, "strength", PROP_FLOAT, PROP_NONE);
|
2008-12-01 06:52:18 +00:00
|
|
|
|
RNA_def_property_float_sdna(prop, NULL, "alpha");
|
|
|
|
|
|
RNA_def_property_range(prop, 0.0f, 1.0f);
|
2009-01-06 01:37:12 +00:00
|
|
|
|
RNA_def_property_ui_text(prop, "Strength", "The amount of pressure on the brush.");
|
2009-01-24 22:58:22 +00:00
|
|
|
|
|
|
|
|
|
|
prop= RNA_def_property(srna, "rotation", PROP_FLOAT, PROP_NONE);
|
|
|
|
|
|
RNA_def_property_float_sdna(prop, NULL, "rot");
|
|
|
|
|
|
RNA_def_property_range(prop, 0, 360);
|
|
|
|
|
|
RNA_def_property_float_funcs(prop, "rna_Brush_rotation_get", "rna_Brush_rotation_set", NULL);
|
|
|
|
|
|
RNA_def_property_ui_text(prop, "Rotation", "Angle of the brush texture.");
|
2008-12-01 06:52:18 +00:00
|
|
|
|
|
|
|
|
|
|
/* flag */
|
|
|
|
|
|
prop= RNA_def_property(srna, "airbrush", PROP_BOOLEAN, PROP_NONE);
|
|
|
|
|
|
RNA_def_property_boolean_sdna(prop, NULL, "flag", BRUSH_AIRBRUSH);
|
2008-12-02 23:45:11 +00:00
|
|
|
|
RNA_def_property_ui_text(prop, "Airbrush", "Keep applying paint effect while holding mouse (spray).");
|
2008-12-01 06:52:18 +00:00
|
|
|
|
|
2008-12-02 23:45:11 +00:00
|
|
|
|
prop= RNA_def_property(srna, "wrap", PROP_BOOLEAN, PROP_NONE);
|
2008-12-01 06:52:18 +00:00
|
|
|
|
RNA_def_property_boolean_sdna(prop, NULL, "flag", BRUSH_TORUS);
|
2008-12-02 23:45:11 +00:00
|
|
|
|
RNA_def_property_ui_text(prop, "Wrap", "Enable torus wrapping while painting.");
|
2008-12-01 06:52:18 +00:00
|
|
|
|
|
2009-07-25 22:31:02 +00:00
|
|
|
|
prop= RNA_def_property(srna, "opacity_pressure", PROP_BOOLEAN, PROP_NONE);
|
2008-12-01 06:52:18 +00:00
|
|
|
|
RNA_def_property_boolean_sdna(prop, NULL, "flag", BRUSH_ALPHA_PRESSURE);
|
2008-12-02 23:45:11 +00:00
|
|
|
|
RNA_def_property_ui_text(prop, "Opacity Pressure", "Enable tablet pressure sensitivity for opacity.");
|
2008-12-01 06:52:18 +00:00
|
|
|
|
|
|
|
|
|
|
prop= RNA_def_property(srna, "size_pressure", PROP_BOOLEAN, PROP_NONE);
|
|
|
|
|
|
RNA_def_property_boolean_sdna(prop, NULL, "flag", BRUSH_SIZE_PRESSURE);
|
2008-12-02 23:45:11 +00:00
|
|
|
|
RNA_def_property_ui_text(prop, "Size Pressure", "Enable tablet pressure sensitivity for size.");
|
2008-12-01 06:52:18 +00:00
|
|
|
|
|
|
|
|
|
|
prop= RNA_def_property(srna, "falloff_pressure", PROP_BOOLEAN, PROP_NONE);
|
|
|
|
|
|
RNA_def_property_boolean_sdna(prop, NULL, "flag", BRUSH_RAD_PRESSURE);
|
2008-12-02 23:45:11 +00:00
|
|
|
|
RNA_def_property_ui_text(prop, "Falloff Pressure", "Enable tablet pressure sensitivity for falloff.");
|
2008-12-01 06:52:18 +00:00
|
|
|
|
|
|
|
|
|
|
prop= RNA_def_property(srna, "spacing_pressure", PROP_BOOLEAN, PROP_NONE);
|
|
|
|
|
|
RNA_def_property_boolean_sdna(prop, NULL, "flag", BRUSH_SPACING_PRESSURE);
|
2008-12-02 23:45:11 +00:00
|
|
|
|
RNA_def_property_ui_text(prop, "Spacing Pressure", "Enable tablet pressure sensitivity for spacing.");
|
2009-01-14 18:48:16 +00:00
|
|
|
|
|
|
|
|
|
|
prop= RNA_def_property(srna, "rake", PROP_BOOLEAN, PROP_NONE);
|
|
|
|
|
|
RNA_def_property_boolean_sdna(prop, NULL, "flag", BRUSH_RAKE);
|
|
|
|
|
|
RNA_def_property_ui_text(prop, "Rake", "Rotate the brush texture to match the stroke direction.");
|
|
|
|
|
|
|
|
|
|
|
|
prop= RNA_def_property(srna, "anchored", PROP_BOOLEAN, PROP_NONE);
|
2009-01-15 05:09:33 +00:00
|
|
|
|
RNA_def_property_boolean_sdna(prop, NULL, "flag", BRUSH_ANCHORED);
|
2009-01-14 18:48:16 +00:00
|
|
|
|
RNA_def_property_ui_text(prop, "Anchored", "Keep the brush anchored to the initial location.");
|
|
|
|
|
|
|
|
|
|
|
|
prop= RNA_def_property(srna, "flip_direction", PROP_BOOLEAN, PROP_NONE);
|
|
|
|
|
|
RNA_def_property_boolean_sdna(prop, NULL, "flag", BRUSH_DIR_IN);
|
|
|
|
|
|
RNA_def_property_ui_text(prop, "Flip Direction", "Move vertices in the opposite direction.");
|
2009-01-21 22:40:28 +00:00
|
|
|
|
|
|
|
|
|
|
prop= RNA_def_property(srna, "space", PROP_BOOLEAN, PROP_NONE);
|
|
|
|
|
|
RNA_def_property_boolean_sdna(prop, NULL, "flag", BRUSH_SPACE);
|
|
|
|
|
|
RNA_def_property_ui_text(prop, "Space", "Limit brush application to the distance specified by spacing.");
|
2.5/Sculpt:
== Re-added smooth stroke ==
UI: toggle is just in the sculpt menu for now. Also changes the sculpt paint cursor slightly, draws a line between previous and current locations.
It's a different implementation than in 2.4, works like this:
The stroke interpolates between the last mouse location and the current location, weighted towards the previous location. If the stroke gets within a certain radius of the current mouse location, the stroke stops. This radius allows for sharp turns in the stroke.
Todo: there are two hard-coded parameters that should become user settable, that's the weighting between previous and current locations, and most important, the no-update radius.
Note also that this option was added as a per-brush flag, worth discussing whether that's the correct place, or whether it should be a sculpt setting like symmetry?
== Improved stroke spacing ==
The previous implementation of stroke spacing simply guaranteed that stroke dots would not occur any closer than the space setting. It now forces stroke dots to always be the specified distance apart.
Todo: Performance gets pretty awful with a small spacing setting, this needs optimization.
2009-06-30 23:06:50 +00:00
|
|
|
|
|
|
|
|
|
|
prop= RNA_def_property(srna, "smooth_stroke", PROP_BOOLEAN, PROP_NONE);
|
|
|
|
|
|
RNA_def_property_boolean_sdna(prop, NULL, "flag", BRUSH_SMOOTH_STROKE);
|
|
|
|
|
|
RNA_def_property_ui_text(prop, "Smooth Stroke", "Brush lags behind mouse and follows a smoother path.");
|
2008-12-01 06:52:18 +00:00
|
|
|
|
|
2008-12-02 23:45:11 +00:00
|
|
|
|
/* not exposed in the interface yet
|
2008-12-01 06:52:18 +00:00
|
|
|
|
prop= RNA_def_property(srna, "fixed_tex", PROP_BOOLEAN, PROP_NONE);
|
|
|
|
|
|
RNA_def_property_boolean_sdna(prop, NULL, "flag", BRUSH_FIXED_TEX);
|
2008-12-02 23:45:11 +00:00
|
|
|
|
RNA_def_property_ui_text(prop, "Fixed Texture", "Keep texture origin in fixed position.");*/
|
|
|
|
|
|
|
2009-05-28 23:23:47 +00:00
|
|
|
|
prop= RNA_def_property(srna, "curve", PROP_POINTER, PROP_NEVER_NULL);
|
2009-01-14 18:48:16 +00:00
|
|
|
|
RNA_def_property_ui_text(prop, "Curve", "Editable falloff curve.");
|
|
|
|
|
|
|
2008-12-02 23:45:11 +00:00
|
|
|
|
/* texture */
|
2009-07-15 19:20:59 +00:00
|
|
|
|
rna_def_mtex_common(srna, "rna_Brush_mtex_begin", "rna_Brush_active_texture_get", "rna_Brush_active_texture_index_set", "TextureSlot");
|
2008-12-02 23:45:11 +00:00
|
|
|
|
|
|
|
|
|
|
/* clone tool */
|
|
|
|
|
|
prop= RNA_def_property(srna, "clone_image", PROP_POINTER, PROP_NONE);
|
|
|
|
|
|
RNA_def_property_pointer_sdna(prop, NULL, "clone.image");
|
2009-05-28 23:23:47 +00:00
|
|
|
|
RNA_def_property_flag(prop, PROP_EDITABLE);
|
UI: don't use operators anymore for handling user interface events, but rather
a special UI handler which makes the code clearer. This UI handler is attached
to the region along with other handlers, and also gets a callback when all
handlers for the region are removed to ensure things are properly cleaned up.
This should fix XXX's in the UI code related to events and context switching.
Most of the changes are in interface_handlers.c, which was renamed from
interface_ops.c, to convert operators to the UI handler. UI code notes:
* uiBeginBlock/uiEndBlock/uiFreeBlocks now takes a context argument, this is
required to properly cancel things like timers or tooltips when the region
gets removed.
* UI_add_region_handlers will add the region level UI handlers, to be used
when adding keymap handlers etc. This replaces the UI keymap.
* When the UI code starts a modal interaction (number sliding, text editing,
opening a menu, ..), it will add an UI handler at the window level which
will block events.
Windowmanager changes:
* Added an UI handler next to the existing keymap and operator modal handlers.
It has an event handling and remove callback, and like operator modal handlers
will remember the area and region if it is registered at the window level.
* Removed the MESSAGE event.
* Operator cancel and UI handler remove callbacks now get the
window/area/region restored in the context, like the operator modal and UI
handler event callbacks.
* Regions now receive MOUSEMOVE events for the mouse going outside of the
region. This was already happening for areas, but UI buttons are at the region
level so we need it there.
Issues:
* Tooltips and menus stay open when switching to another window, and button
highlight doesn't work without moving the mouse first when Blender starts up.
I tried using some events like Q_FIRSTTIME, WINTHAW, but those don't seem to
arrive..
* Timeline header buttons seem to be moving one pixel or so sometimes when
interacting with them.
* Seems not due to this commit, but UI and keymap handlers are leaking. It
seems that handlers are being added to regions in all screens, also in regions
of areas that are not visible, but these handlers are not removed. Probably
there should only be handlers in visible regions?
2008-12-10 04:36:33 +00:00
|
|
|
|
RNA_def_property_ui_text(prop, "Clone Image", "Image for clone tool.");
|
2008-12-02 23:45:11 +00:00
|
|
|
|
|
|
|
|
|
|
prop= RNA_def_property(srna, "clone_opacity", PROP_FLOAT, PROP_NONE);
|
|
|
|
|
|
RNA_def_property_float_sdna(prop, NULL, "clone.alpha");
|
|
|
|
|
|
RNA_def_property_range(prop, 0.0f, 1.0f);
|
|
|
|
|
|
RNA_def_property_ui_text(prop, "Clone Opacity", "Opacity of clone image display.");
|
|
|
|
|
|
|
|
|
|
|
|
prop= RNA_def_property(srna, "clone_offset", PROP_FLOAT, PROP_VECTOR);
|
|
|
|
|
|
RNA_def_property_float_sdna(prop, NULL, "clone.offset");
|
|
|
|
|
|
RNA_def_property_ui_text(prop, "Clone Offset", "");
|
2008-12-26 02:02:06 +00:00
|
|
|
|
RNA_def_property_ui_range(prop, -1.0f , 1.0f, 10.0f, 3);
|
2008-12-01 06:52:18 +00:00
|
|
|
|
}
|
|
|
|
|
|
|
2009-01-13 20:50:07 +00:00
|
|
|
|
|
|
|
|
|
|
/* A brush stroke is a list of changes to the brush that
|
|
|
|
|
|
* can occur during a stroke
|
|
|
|
|
|
*
|
2009-01-15 05:09:33 +00:00
|
|
|
|
* o 3D location of the brush
|
|
|
|
|
|
* o 2D mouse location
|
2009-01-13 20:50:07 +00:00
|
|
|
|
* o Tablet pressure
|
|
|
|
|
|
* o Direction flip
|
|
|
|
|
|
* o Tool switch
|
|
|
|
|
|
* o Time
|
|
|
|
|
|
*/
|
|
|
|
|
|
static void rna_def_operator_stroke_element(BlenderRNA *brna)
|
|
|
|
|
|
{
|
|
|
|
|
|
StructRNA *srna;
|
|
|
|
|
|
PropertyRNA *prop;
|
|
|
|
|
|
|
|
|
|
|
|
srna= RNA_def_struct(brna, "OperatorStrokeElement", "IDPropertyGroup");
|
|
|
|
|
|
RNA_def_struct_ui_text(srna, "Operator Stroke Element", "");
|
|
|
|
|
|
|
|
|
|
|
|
prop= RNA_def_property(srna, "location", PROP_FLOAT, PROP_VECTOR);
|
|
|
|
|
|
RNA_def_property_flag(prop, PROP_IDPROPERTY);
|
|
|
|
|
|
RNA_def_property_array(prop, 3);
|
|
|
|
|
|
RNA_def_property_ui_text(prop, "Location", "");
|
|
|
|
|
|
|
2009-01-15 05:09:33 +00:00
|
|
|
|
prop= RNA_def_property(srna, "mouse", PROP_INT, PROP_VECTOR);
|
|
|
|
|
|
RNA_def_property_flag(prop, PROP_IDPROPERTY);
|
|
|
|
|
|
RNA_def_property_array(prop, 2);
|
|
|
|
|
|
RNA_def_property_ui_text(prop, "Mouse", "");
|
|
|
|
|
|
|
2009-02-19 23:53:40 +00:00
|
|
|
|
prop= RNA_def_property(srna, "pressure", PROP_FLOAT, PROP_NONE);
|
2009-01-13 20:50:07 +00:00
|
|
|
|
RNA_def_property_flag(prop, PROP_IDPROPERTY);
|
2009-02-19 23:53:40 +00:00
|
|
|
|
RNA_def_property_range(prop, 0.0f, 1.0f);
|
|
|
|
|
|
RNA_def_property_ui_text(prop, "Pressure", "Tablet pressure.");
|
|
|
|
|
|
|
|
|
|
|
|
prop= RNA_def_property(srna, "time", PROP_FLOAT, PROP_UNSIGNED);
|
|
|
|
|
|
RNA_def_property_flag(prop, PROP_IDPROPERTY);
|
|
|
|
|
|
RNA_def_property_ui_text(prop, "Time", "");
|
2009-01-13 20:50:07 +00:00
|
|
|
|
|
2009-01-14 03:02:44 +00:00
|
|
|
|
prop= RNA_def_property(srna, "flip", PROP_BOOLEAN, PROP_NONE);
|
2009-01-13 20:50:07 +00:00
|
|
|
|
RNA_def_property_flag(prop, PROP_IDPROPERTY);
|
2009-01-14 03:02:44 +00:00
|
|
|
|
RNA_def_property_ui_text(prop, "Flip", "");
|
2009-01-13 20:50:07 +00:00
|
|
|
|
|
|
|
|
|
|
/* XXX: Tool (this will be for pressing a modifier key for a different brush,
|
|
|
|
|
|
e.g. switching to a Smooth brush in the middle of the stroke */
|
|
|
|
|
|
}
|
|
|
|
|
|
|
2008-12-01 19:02:27 +00:00
|
|
|
|
void RNA_def_brush(BlenderRNA *brna)
|
|
|
|
|
|
{
|
|
|
|
|
|
rna_def_brush(brna);
|
2009-01-13 20:50:07 +00:00
|
|
|
|
rna_def_operator_stroke_element(brna);
|
2008-12-01 19:02:27 +00:00
|
|
|
|
}
|
|
|
|
|
|
|
2008-12-01 06:52:18 +00:00
|
|
|
|
#endif
|