~ubuntu-branches/ubuntu/lucid/blender/lucid

« back to all changes in this revision

Viewing changes to source/blender/src/editnode.c

  • Committer: Bazaar Package Importer
  • Author(s): Chris Coulson
  • Date: 2009-08-06 22:32:19 UTC
  • mfrom: (1.2.10 upstream)
  • Revision ID: james.westby@ubuntu.com-20090806223219-8z4eej1u8levu4pz
Tags: 2.49a+dfsg-0ubuntu1
* Merge from debian unstable, remaining changes:
  - debian/control: Build-depend on python-2.6 rather than python-2.5.
  - debian/misc/*.desktop: Add Spanish translation to .desktop 
    files.
  - debian/pyversions: 2.6.
  - debian/rules: Clean *.o of source/blender/python/api2_2x/
* New upstream release (LP: #382153).
* Refreshed patches:
  - 01_sanitize_sys.patch
  - 02_tmp_in_HOME
  - 10_use_systemwide_ftgl
  - 70_portability_platform_detection
* Removed patches merged upstream:
  - 30_fix_python_syntax_warning
  - 90_ubuntu_ffmpeg_52_changes

Show diffs side-by-side

added added

removed removed

Lines of Context:
35
35
#include "MEM_guardedalloc.h"
36
36
 
37
37
#include "DNA_action_types.h"
 
38
#include "DNA_brush_types.h"
38
39
#include "DNA_color_types.h"
39
40
#include "DNA_image_types.h"
40
41
#include "DNA_ipo_types.h"
41
42
#include "DNA_object_types.h"
42
43
#include "DNA_material_types.h"
 
44
#include "DNA_texture_types.h"
43
45
#include "DNA_node_types.h"
44
46
#include "DNA_space_types.h"
45
47
#include "DNA_screen_types.h"
53
55
#include "BKE_main.h"
54
56
#include "BKE_node.h"
55
57
#include "BKE_material.h"
 
58
#include "BKE_texture.h"
56
59
#include "BKE_scene.h"
57
60
#include "BKE_utildefines.h"
58
61
 
176
179
 
177
180
                allqueue(REDRAWNODE, 1);
178
181
        }
 
182
        else if(snode->treetype==NTREE_TEXTURE) {
 
183
                ntreeTexUpdatePreviews(snode->nodetree);/* XXX texture nodes should follow shader node methods (ton) */
 
184
                BIF_preview_changed(ID_TE);
 
185
        }
179
186
}
180
187
 
181
188
static void shader_node_event(SpaceNode *snode, short event)
423
430
        }
424
431
}
425
432
 
 
433
static void texture_node_event(SpaceNode *snode, short event)
 
434
{
 
435
        switch(event) {
 
436
                case B_REDR:
 
437
                        allqueue(REDRAWNODE, 1);
 
438
                        break;
 
439
                case B_NODE_LOADIMAGE:
 
440
                {
 
441
                        bNode *node= nodeGetActive(snode->edittree);
 
442
                        char name[FILE_MAXDIR+FILE_MAXFILE];
 
443
                        
 
444
                        if(node->id)
 
445
                                strcpy(name, ((Image *)node->id)->name);
 
446
                        else strcpy(name, U.textudir);
 
447
                        if (G.qual & LR_CTRLKEY) {
 
448
                                activate_imageselect(FILE_SPECIAL, "SELECT IMAGE", name, load_node_image);
 
449
                        } else {
 
450
                                activate_fileselect(FILE_SPECIAL, "SELECT IMAGE", name, load_node_image);
 
451
                        }
 
452
                        break;
 
453
                }
 
454
                default:
 
455
                        /* B_NODE_EXEC */
 
456
                        ntreeTexCheckCyclics( snode->nodetree );
 
457
                        snode_handle_recalc(snode);
 
458
                        allqueue(REDRAWNODE, 1);
 
459
                        break;
 
460
        }
 
461
}
 
462
 
426
463
 
427
464
/* assumes nothing being done in ntree yet, sets the default in/out node */
428
465
/* called from shading buttons or header */
486
523
        ntreeCompositForceHidden(sce->nodetree);
487
524
}
488
525
 
 
526
/* assumes nothing being done in ntree yet, sets the default in/out node */
 
527
/* called from shading buttons or header */
 
528
void node_texture_default(Tex *tx)
 
529
{
 
530
        bNode *in, *out;
 
531
        bNodeSocket *fromsock, *tosock;
 
532
        
 
533
        /* but lets check it anyway */
 
534
        if(tx->nodetree) {
 
535
                printf("error in texture initialize\n");
 
536
                return;
 
537
        }
 
538
        
 
539
        tx->nodetree= ntreeAddTree(NTREE_TEXTURE);
 
540
        
 
541
        out= nodeAddNodeType(tx->nodetree, TEX_NODE_OUTPUT, NULL, NULL);
 
542
        out->locx= 300.0f; out->locy= 300.0f;
 
543
        
 
544
        in= nodeAddNodeType(tx->nodetree, TEX_NODE_CHECKER, NULL, NULL);
 
545
        in->locx= 10.0f; in->locy= 300.0f;
 
546
        nodeSetActive(tx->nodetree, in);
 
547
        
 
548
        fromsock= in->outputs.first;
 
549
        tosock= out->inputs.first;
 
550
        nodeAddLink(tx->nodetree, in, fromsock, out, tosock);
 
551
        
 
552
        ntreeSolveOrder(tx->nodetree);  /* needed for pointers */
 
553
        ntreeTexUpdatePreviews(tx->nodetree);/* XXX texture nodes should follow shader node methods (ton) */
 
554
}
 
555
 
489
556
/* Here we set the active tree(s), even called for each redraw now, so keep it fast :) */
490
557
void snode_set_context(SpaceNode *snode)
491
558
{
516
583
                
517
584
                snode->nodetree= G.scene->nodetree;
518
585
        }
 
586
        else if(snode->treetype==NTREE_TEXTURE) {
 
587
                Tex *tx= NULL;
 
588
 
 
589
                if(snode->texfrom==SNODE_TEX_OBJECT) {
 
590
                        if(ob) {
 
591
                                tx= give_current_texture(ob, ob->actcol);
 
592
                                snode->from= (ID *)ob;
 
593
                        }
 
594
                }
 
595
                else if(snode->texfrom==SNODE_TEX_WORLD) {
 
596
                        tx= give_current_world_texture();
 
597
                        snode->from= (ID *)G.scene->world;
 
598
                }
 
599
                else {
 
600
                        MTex *mtex= NULL;
 
601
                        
 
602
                        if(G.f & G_SCULPTMODE) {
 
603
                                SculptData *sd= &G.scene->sculptdata;
 
604
                                if(sd->texact != -1)
 
605
                                        mtex= sd->mtex[sd->texact];
 
606
                        }
 
607
                        else {
 
608
                                Brush *br= G.scene->toolsettings->imapaint.brush;
 
609
                                if(br) 
 
610
                                        mtex= br->mtex[br->texact];
 
611
                        }
 
612
                        
 
613
                        if(mtex) {
 
614
                                snode->from= (ID *)G.scene;
 
615
                                tx= mtex->tex;
 
616
                        }
 
617
                }
 
618
                
 
619
                if(tx) {
 
620
                        snode->id= &tx->id;
 
621
                        snode->nodetree= tx->nodetree;
 
622
                }
 
623
        }
519
624
        
520
625
        /* find editable group */
521
626
        if(snode->nodetree)
608
713
                                }
609
714
                        }
610
715
                }
 
716
                else if(snode->treetype==NTREE_TEXTURE) {
 
717
                        if(node->id)
 
718
                                BIF_preview_changed(-1);
 
719
                        allqueue(REDRAWBUTSSHADING, 1);
 
720
                        allqueue(REDRAWIPO, 0);
 
721
                }
611
722
        }
612
723
}
613
724
 
1188
1299
                BIF_undo_push("Scale Node");
1189
1300
        
1190
1301
        allqueue(REDRAWNODE, 1);
 
1302
        
 
1303
        if(snode->nodetree->type == NTREE_TEXTURE)
 
1304
                ntreeTexUpdatePreviews(snode->nodetree);/* XXX texture nodes should follow shader node methods (ton) */
1191
1305
}
1192
1306
 
1193
1307
/* ******************** rename ******************* */
1702
1816
                
1703
1817
                NodeTagChanged(snode->edittree, node);
1704
1818
        }
 
1819
        
 
1820
        if(snode->nodetree->type==NTREE_TEXTURE) {
 
1821
                ntreeTexCheckCyclics(snode->edittree);
 
1822
                ntreeTexUpdatePreviews(snode->edittree);/* XXX texture nodes should follow shader node methods (ton) */
 
1823
        }
 
1824
        
1705
1825
        return node;
1706
1826
}
1707
1827
 
2481
2601
                                shader_node_event(snode, val);
2482
2602
                        else if(snode->treetype==NTREE_COMPOSIT)
2483
2603
                                composit_node_event(snode, val);
 
2604
                        else if(snode->treetype==NTREE_TEXTURE)
 
2605
                                texture_node_event(snode, val);
2484
2606
                        break;
2485
2607
                        
2486
2608
                case RENDERPREVIEW:
2487
2609
                        if(snode->treetype==NTREE_SHADER)
2488
2610
                                shader_node_previewrender(sa, snode);
 
2611
                        else if(snode->nodetree->type==NTREE_TEXTURE)
 
2612
                                ntreeTexUpdatePreviews(snode->edittree); /* XXX texture nodes should follow shader node methods (ton) */
 
2613
                                
2489
2614
                        break;
2490
2615
                        
2491
2616
                case PADPLUSKEY: