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:
authorTamito Kajiyama <rd6t-kjym@asahi-net.or.jp>2012-01-08 15:57:53 +0400
committerTamito Kajiyama <rd6t-kjym@asahi-net.or.jp>2012-01-08 15:57:53 +0400
commit76a211d80947a453f594e4cf0a1e0acc6786eddf (patch)
tree59d806409fe72f733bce9c43eb6823b59642c6fd /source/blender/editors/interface
parentf88501a44d1f519539d056a7d1f240d126a5071a (diff)
parent3dead22c7322cf72ee63a003ba50940abc12e7c9 (diff)
Merged changes in the trunk up to revision 43219.
Conflicts resolved: source/blender/blenkernel/intern/scene.c source/blender/blenloader/intern/readfile.c source/blender/render/intern/source/pipeline.c
Diffstat (limited to 'source/blender/editors/interface')
-rw-r--r--source/blender/editors/interface/interface_draw.c35
-rw-r--r--source/blender/editors/interface/interface_handlers.c83
-rw-r--r--source/blender/editors/interface/interface_templates.c4
-rw-r--r--source/blender/editors/interface/view2d_ops.c9
4 files changed, 81 insertions, 50 deletions
diff --git a/source/blender/editors/interface/interface_draw.c b/source/blender/editors/interface/interface_draw.c
index 6ebb67af67a..1f1228a9bc5 100644
--- a/source/blender/editors/interface/interface_draw.c
+++ b/source/blender/editors/interface/interface_draw.c
@@ -1465,21 +1465,16 @@ static ImBuf *scale_trackpreview_ibuf(ImBuf *ibuf, float zoomx, float zoomy)
{
ImBuf *scaleibuf;
int x, y, w= ibuf->x*zoomx, h= ibuf->y*zoomy;
- const float max_x= ibuf->x-1.0f;
- const float max_y= ibuf->y-1.0f;
const float scalex= 1.0f/zoomx;
const float scaley= 1.0f/zoomy;
scaleibuf= IMB_allocImBuf(w, h, 32, IB_rect);
- for(y= 0; y<scaleibuf->y; y++) {
- for (x= 0; x<scaleibuf->x; x++) {
+ for(y= 0; y<h; y++) {
+ for (x= 0; x<w; x++) {
float src_x= scalex*x;
float src_y= scaley*y;
- CLAMP(src_x, 0, max_x);
- CLAMP(src_y, 0, max_y);
-
bicubic_interpolation(ibuf, scaleibuf, src_x, src_y, x, y);
}
}
@@ -1514,28 +1509,36 @@ void ui_draw_but_TRACKPREVIEW(ARegion *ar, uiBut *but, uiWidgetColors *UNUSED(wc
ok= 1;
}
else if(scopes->track_preview) {
- int a, off_x, off_y;
- float zoomx, zoomy;
+ /* additional margin around image */
+ /* NOTE: should be kept in sync with value from BKE_movieclip_update_scopes */
+ const int margin= 2;
+ float zoomx, zoomy, track_pos[2], off_x, off_y;
+ int a;
ImBuf *drawibuf;
glPushMatrix();
+ track_pos[0]= scopes->track_pos[0]-margin;
+ track_pos[1]= scopes->track_pos[1]-margin;
+
/* draw content of pattern area */
glScissor(ar->winrct.xmin+rect.xmin, ar->winrct.ymin+rect.ymin, scissor[2], scissor[3]);
- zoomx= (rect.xmax-rect.xmin) / (scopes->track_preview->x-2.0f);
- zoomy= (rect.ymax-rect.ymin) / (scopes->track_preview->y-2.0f);
+ zoomx= (rect.xmax-rect.xmin) / (scopes->track_preview->x-2*margin);
+ zoomy= (rect.ymax-rect.ymin) / (scopes->track_preview->y-2*margin);
- off_x= ((int)scopes->track_pos[0]-scopes->track_pos[0]-0.5f)*zoomx;
- off_y= ((int)scopes->track_pos[1]-scopes->track_pos[1]-0.5f)*zoomy;
+ off_x= ((int)track_pos[0]-track_pos[0]+0.5)*zoomx;
+ off_y= ((int)track_pos[1]-track_pos[1]+0.5)*zoomy;
drawibuf= scale_trackpreview_ibuf(scopes->track_preview, zoomx, zoomy);
- glaDrawPixelsSafe(off_x+rect.xmin, off_y+rect.ymin, rect.xmax-rect.xmin+1.f-off_x, rect.ymax-rect.ymin+1.f-off_y, drawibuf->x, GL_RGBA, GL_UNSIGNED_BYTE, drawibuf->rect);
-
+ glaDrawPixelsSafe(off_x+rect.xmin-zoomx*(margin-0.5f), off_y+rect.ymin-zoomy*(margin-0.5f),
+ rect.xmax-rect.xmin+2+(int)(zoomx*(margin-0.5f)-off_x),
+ rect.ymax-rect.ymin+2+(int)(zoomy*(margin-0.5f)-off_y),
+ drawibuf->x, GL_RGBA, GL_UNSIGNED_BYTE, drawibuf->rect);
IMB_freeImBuf(drawibuf);
/* draw cross for pizel position */
- glTranslatef(off_x+rect.xmin+scopes->track_pos[0]*zoomx, off_y+rect.ymin+scopes->track_pos[1]*zoomy, 0.f);
+ glTranslatef(off_x+rect.xmin+track_pos[0]*zoomx, off_y+rect.ymin+track_pos[1]*zoomy, 0.f);
glScissor(ar->winrct.xmin + rect.xmin, ar->winrct.ymin+rect.ymin, rect.xmax-rect.xmin, rect.ymax-rect.ymin);
for(a= 0; a< 2; a++) {
diff --git a/source/blender/editors/interface/interface_handlers.c b/source/blender/editors/interface/interface_handlers.c
index 900cbbd5cbf..525b15ac7e3 100644
--- a/source/blender/editors/interface/interface_handlers.c
+++ b/source/blender/editors/interface/interface_handlers.c
@@ -114,6 +114,17 @@ typedef enum uiButtonJumpType {
BUTTON_EDIT_JUMP_ALL
} uiButtonJumpType;
+typedef enum uiButtonDelimType {
+ BUTTON_DELIM_NONE,
+ BUTTON_DELIM_ALPHA,
+ BUTTON_DELIM_PUNCT,
+ BUTTON_DELIM_BRACE,
+ BUTTON_DELIM_OPERATOR,
+ BUTTON_DELIM_QUOTE,
+ BUTTON_DELIM_WHITESPACE,
+ BUTTON_DELIM_OTHER
+} uiButtonDelimType;
+
typedef struct uiHandleButtonData {
wmWindowManager *wm;
wmWindow *window;
@@ -1230,46 +1241,60 @@ static void ui_but_copy_paste(bContext *C, uiBut *but, uiHandleButtonData *data,
/* ************* in-button text selection/editing ************* */
/* return 1 if char ch is special character, otherwise return 0 */
-static short test_special_char(char ch)
+static uiButtonDelimType test_special_char(const char ch)
{
+ if ((ch >= 'a' && ch <= 'z') || (ch >= 'A' && ch <= 'Z')) {
+ return BUTTON_DELIM_ALPHA;
+ }
+
switch(ch) {
- case '\\':
- case '/':
+ case ',':
+ case '.':
+ return BUTTON_DELIM_PUNCT;
+
+ case '{':
+ case '}':
+ case '[':
+ case ']':
+ case '(':
+ case ')':
+ return BUTTON_DELIM_BRACE;
+
+ case '+':
+ case '-':
+ case '=':
case '~':
+ case '%':
+ case '/':
+ case '<':
+ case '>':
+ case '^':
+ case '*':
+ case '&':
+ return BUTTON_DELIM_OPERATOR;
+
+ case '\'':
+ case '\"': // " - an extra closing one for Aligorith's text editor
+ return BUTTON_DELIM_QUOTE;
+
+ case ' ':
+ return BUTTON_DELIM_WHITESPACE;
+
+ case '\\':
case '!':
case '@':
case '#':
case '$':
- case '%':
- case '^':
- case '&':
- case '*':
- case '(':
- case ')':
- case '+':
- case '=':
- case '{':
- case '}':
- case '[':
- case ']':
case ':':
case ';':
- case '\'':
- case '\"': // " - an extra closing one for Aligorith's text editor
- case '<':
- case '>':
- case ',':
- case '.':
case '?':
case '_':
- case '-':
- case ' ':
- return 1;
- break;
+ return BUTTON_DELIM_OTHER;
+
default:
break;
}
- return 0;
+ return BUTTON_DELIM_NONE;
}
static int ui_textedit_step_next_utf8(const char *str, size_t maxlen, short *pos)
@@ -1308,12 +1333,13 @@ static void ui_textedit_step_utf8(const char *str, size_t maxlen,
if(direction) { /* right*/
if(jump != BUTTON_EDIT_JUMP_NONE) {
+ const uiButtonDelimType is_special= (*pos) < maxlen ? test_special_char(str[(*pos)]) : BUTTON_DELIM_NONE;
/* jump between special characters (/,\,_,-, etc.),
* look at function test_special_char() for complete
* list of special character, ctr -> */
while((*pos) < maxlen) {
if (ui_textedit_step_next_utf8(str, maxlen, pos)) {
- if((jump != BUTTON_EDIT_JUMP_ALL) && test_special_char(str[(*pos)])) break;
+ if((jump != BUTTON_EDIT_JUMP_ALL) && (is_special != test_special_char(str[(*pos)]))) break;
}
else {
break; /* unlikely but just incase */
@@ -1326,6 +1352,7 @@ static void ui_textedit_step_utf8(const char *str, size_t maxlen,
}
else { /* left */
if(jump != BUTTON_EDIT_JUMP_NONE) {
+ const uiButtonDelimType is_special= (*pos) > 1 ? test_special_char(str[(*pos) - 1]) : BUTTON_DELIM_NONE;
/* left only: compensate for index/change in direction */
ui_textedit_step_prev_utf8(str, maxlen, pos);
@@ -1334,7 +1361,7 @@ static void ui_textedit_step_utf8(const char *str, size_t maxlen,
* list of special character, ctr -> */
while ((*pos) > 0) {
if (ui_textedit_step_prev_utf8(str, maxlen, pos)) {
- if((jump != BUTTON_EDIT_JUMP_ALL) && test_special_char(str[(*pos)])) break;
+ if((jump != BUTTON_EDIT_JUMP_ALL) && (is_special != test_special_char(str[(*pos)]))) break;
}
else {
break;
diff --git a/source/blender/editors/interface/interface_templates.c b/source/blender/editors/interface/interface_templates.c
index 0670692a084..8df43b92760 100644
--- a/source/blender/editors/interface/interface_templates.c
+++ b/source/blender/editors/interface/interface_templates.c
@@ -55,6 +55,7 @@
#include "BKE_texture.h"
#include "BKE_report.h"
#include "BKE_displist.h"
+#include "BKE_scene.h"
#include "ED_screen.h"
#include "ED_object.h"
@@ -2126,6 +2127,7 @@ static void list_item_row(bContext *C, uiLayout *layout, PointerRNA *ptr, Pointe
else if(RNA_struct_is_a(itemptr->type, &RNA_MaterialSlot)) {
/* provision to draw active node name */
Material *ma, *manode;
+ Scene *scene= CTX_data_scene(C);
Object *ob= (Object*)ptr->id.data;
int index= (Material**)itemptr->data - ob->mat;
@@ -2133,7 +2135,7 @@ static void list_item_row(bContext *C, uiLayout *layout, PointerRNA *ptr, Pointe
uiItemL(sub, name, icon);
ma= give_current_material(ob, index+1);
- if(ma) {
+ if (ma && !scene_use_new_shading_nodes(scene)){
manode= give_node_material(ma);
if(manode) {
char str[MAX_ID_NAME + 12];
diff --git a/source/blender/editors/interface/view2d_ops.c b/source/blender/editors/interface/view2d_ops.c
index 5706da93fe9..a993e651b5f 100644
--- a/source/blender/editors/interface/view2d_ops.c
+++ b/source/blender/editors/interface/view2d_ops.c
@@ -248,20 +248,19 @@ static int view_pan_modal(bContext *C, wmOperator *op, wmEvent *event)
view_pan_apply(op);
}
break;
-
+ /* XXX - Mode switching isn't implemented. See comments in 36818.
+ * switch to zoom *
case LEFTMOUSE:
- /* switch to zoom */
if (event->val==KM_PRESS) {
- /* calculate overall delta mouse-movement for redo */
+ * calculate overall delta mouse-movement for redo *
RNA_int_set(op->ptr, "deltax", (vpd->startx - vpd->lastx));
RNA_int_set(op->ptr, "deltay", (vpd->starty - vpd->lasty));
view_pan_exit(op);
WM_cursor_restore(CTX_wm_window(C));
-
WM_operator_name_call(C, "VIEW2D_OT_zoom", WM_OP_INVOKE_DEFAULT, NULL);
return OPERATOR_FINISHED;
- }
+ }*/
default:
if (event->type == vpd->invoke_event || event->type==ESCKEY) {