Revision: 15491
          
http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=15491
Author:   campbellbarton
Date:     2008-07-08 20:32:42 +0200 (Tue, 08 Jul 2008)

Log Message:
-----------
svn  merge  -r15478:HEAD 
https://svn.blender.org/svnroot/bf-blender/trunk/blender/

Modified Paths:
--------------
    branches/apricot/intern/ghost/intern/GHOST_SystemWin32.cpp
    branches/apricot/projectfiles_vc7/blender/blenlib/BLI_blenlib.vcproj
    branches/apricot/source/blender/blenkernel/BKE_bmeshCustomData.h
    branches/apricot/source/blender/blenkernel/BKE_customdata.h
    branches/apricot/source/blender/blenkernel/intern/BME_Customdata.c
    branches/apricot/source/blender/blenkernel/intern/BME_conversions.c
    branches/apricot/source/blender/blenkernel/intern/BME_eulers.c
    branches/apricot/source/blender/blenkernel/intern/BME_structure.c
    branches/apricot/source/blender/blenkernel/intern/BME_tools.c
    branches/apricot/source/blender/blenkernel/intern/customdata.c
    branches/apricot/source/blender/blenkernel/intern/library.c
    branches/apricot/source/blender/blenlib/BLI_mempool.h
    branches/apricot/source/blender/blenlib/intern/BLI_kdopbvh.c
    branches/apricot/source/blender/blenlib/intern/BLI_mempool.c
    branches/apricot/source/blender/include/BDR_drawobject.h
    branches/apricot/source/blender/include/BIF_editarmature.h
    branches/apricot/source/blender/makesdna/DNA_actuator_types.h
    branches/apricot/source/blender/src/buttons_logic.c
    branches/apricot/source/blender/src/drawarmature.c
    branches/apricot/source/blender/src/drawobject.c
    branches/apricot/source/blender/src/drawview.c
    branches/apricot/source/blender/src/editarmature.c
    branches/apricot/source/blender/src/editmesh_add.c
    branches/apricot/source/blender/src/editsima.c
    branches/apricot/source/blender/src/header_view3d.c
    branches/apricot/source/blender/src/space.c
    branches/apricot/source/blender/src/view.c
    branches/apricot/source/gameengine/Converter/BL_BlenderDataConversion.cpp
    branches/apricot/source/gameengine/Converter/KX_ConvertActuators.cpp
    branches/apricot/source/gameengine/Expressions/PyObjectPlus.h
    branches/apricot/source/gameengine/GameLogic/SCA_ActuatorSensor.cpp
    branches/apricot/source/gameengine/GameLogic/SCA_IActuator.h
    branches/apricot/source/gameengine/GameLogic/SCA_IObject.cpp
    branches/apricot/source/gameengine/GameLogic/SCA_IObject.h
    branches/apricot/source/gameengine/GameLogic/SCA_ISensor.h
    branches/apricot/source/gameengine/Ketsji/KX_GameObject.cpp
    branches/apricot/source/gameengine/Ketsji/KX_GameObject.h
    branches/apricot/source/gameengine/Ketsji/KX_IPO_SGController.cpp
    branches/apricot/source/gameengine/Ketsji/KX_IPO_SGController.h
    branches/apricot/source/gameengine/Ketsji/KX_IpoActuator.cpp
    branches/apricot/source/gameengine/Ketsji/KX_IpoActuator.h
    branches/apricot/source/gameengine/Ketsji/KX_ParentActuator.cpp
    branches/apricot/source/gameengine/Ketsji/KX_Scene.cpp
    branches/apricot/source/gameengine/SceneGraph/SG_Controller.h

Modified: branches/apricot/intern/ghost/intern/GHOST_SystemWin32.cpp
===================================================================
--- branches/apricot/intern/ghost/intern/GHOST_SystemWin32.cpp  2008-07-08 
17:57:31 UTC (rev 15490)
+++ branches/apricot/intern/ghost/intern/GHOST_SystemWin32.cpp  2008-07-08 
18:32:42 UTC (rev 15491)
@@ -302,6 +302,15 @@
 {
        GHOST_TSuccess success = GHOST_System::init();
 
+       /* Disable scaling on high DPI displays on Vista */
+       HMODULE user32 = ::LoadLibraryA("user32.dll");
+       typedef BOOL (WINAPI * LPFNSETPROCESSDPIAWARE)();
+       LPFNSETPROCESSDPIAWARE SetProcessDPIAware =
+               (LPFNSETPROCESSDPIAWARE)GetProcAddress(user32, 
"SetProcessDPIAware");
+       if (SetProcessDPIAware)
+               SetProcessDPIAware();
+       FreeLibrary(user32);
+
        // Determine whether this system has a high frequency performance 
counter. */
        m_hasPerformanceCounter = 
::QueryPerformanceFrequency((LARGE_INTEGER*)&m_freq) == TRUE;
        if (m_hasPerformanceCounter) {

Modified: branches/apricot/projectfiles_vc7/blender/blenlib/BLI_blenlib.vcproj
===================================================================
--- branches/apricot/projectfiles_vc7/blender/blenlib/BLI_blenlib.vcproj        
2008-07-08 17:57:31 UTC (rev 15490)
+++ branches/apricot/projectfiles_vc7/blender/blenlib/BLI_blenlib.vcproj        
2008-07-08 18:32:42 UTC (rev 15491)
@@ -359,6 +359,9 @@
                                
RelativePath="..\..\..\source\blender\blenlib\intern\BLI_memarena.c">
                        </File>
                        <File
+                               
RelativePath="..\..\..\source\blender\blenlib\intern\BLI_mempool.c">
+                       </File>
+                       <File
                                
RelativePath="..\..\..\source\blender\blenlib\intern\boxpack2d.c">
                        </File>
                        <File
@@ -474,6 +477,9 @@
                                
RelativePath="..\..\..\source\blender\blenlib\BLI_memarena.h">
                        </File>
                        <File
+                               
RelativePath="..\..\..\source\blender\blenlib\BLI_mempool.h">
+                       </File>
+                       <File
                                
RelativePath="..\..\..\source\blender\blenlib\intern\BLI_scanfill.h">
                        </File>
                        <File

Modified: branches/apricot/source/blender/blenkernel/BKE_bmeshCustomData.h
===================================================================
--- branches/apricot/source/blender/blenkernel/BKE_bmeshCustomData.h    
2008-07-08 17:57:31 UTC (rev 15490)
+++ branches/apricot/source/blender/blenkernel/BKE_bmeshCustomData.h    
2008-07-08 18:32:42 UTC (rev 15491)
@@ -38,7 +38,7 @@
 #ifndef BKE_BMESHCUSTOMDATA_H
 #define BKE_BMESHCUSTOMDATA_H
 
-struct BME_mempool;
+struct BLI_mempool;
 
 /*Custom Data Types and defines
        Eventual plan is to move almost everything to custom data and let caller
@@ -62,7 +62,7 @@
 
 typedef struct BME_CustomData {
        struct BME_CustomDataLayer *layers;     /*Custom Data Layers*/
-       struct BME_mempool *pool;                               /*pool for 
alloc of blocks*/
+       struct BLI_mempool *pool;                               /*pool for 
alloc of blocks*/
        int totlayer, totsize;          /*total layers and total size in bytes 
of each block*/
 } BME_CustomData;
 

Modified: branches/apricot/source/blender/blenkernel/BKE_customdata.h
===================================================================
--- branches/apricot/source/blender/blenkernel/BKE_customdata.h 2008-07-08 
17:57:31 UTC (rev 15490)
+++ branches/apricot/source/blender/blenkernel/BKE_customdata.h 2008-07-08 
18:32:42 UTC (rev 15491)
@@ -41,6 +41,7 @@
 extern const CustomDataMask CD_MASK_EDITMESH;
 extern const CustomDataMask CD_MASK_DERIVEDMESH;
 extern const CustomDataMask CD_MASK_BMESH;
+extern const CustomDataMask CD_MASK_FACECORNERS;
 
 /* for ORIGINDEX layer type, indicates no original index for this element */
 #define ORIGINDEX_NONE -1
@@ -264,4 +265,8 @@
 /* for file reading compatibility, returns false if the layer was freed,
    only after this test passes, layer->data should be assigned */
 int CustomData_verify_versions(struct CustomData *data, int index);
+
+void CustomData_to_bmeshpoly(struct CustomData *fdata, struct CustomData 
*pdata, struct CustomData *ldata);
+void CustomData_from_bmeshpoly(struct CustomData *fdata, struct CustomData 
*pdata, struct CustomData *ldata);
+void CustomData_bmesh_init_pool(struct CustomData *data, int allocsize);
 #endif

Modified: branches/apricot/source/blender/blenkernel/intern/BME_Customdata.c
===================================================================
--- branches/apricot/source/blender/blenkernel/intern/BME_Customdata.c  
2008-07-08 17:57:31 UTC (rev 15490)
+++ branches/apricot/source/blender/blenkernel/intern/BME_Customdata.c  
2008-07-08 18:32:42 UTC (rev 15491)
@@ -40,6 +40,7 @@
 #include "bmesh_private.h"
 #include <string.h>
 #include "MEM_guardedalloc.h"
+#include "BLI_mempool.h"
 
 /********************* Layer type information **********************/
 typedef struct BME_LayerTypeInfo {
@@ -83,7 +84,7 @@
        if(data->totlayer){
                /*alloc memory*/
                data->layers = 
MEM_callocN(sizeof(BME_CustomDataLayer)*data->totlayer, "BMesh Custom Data 
Layers");
-               data->pool = BME_mempool_create(data->totsize, initalloc, 
initalloc);
+               data->pool = BLI_mempool_create(data->totsize, initalloc, 
initalloc);
                /*initialize layer data*/
                for(i=0; i < BME_CD_NUMTYPES; i++){
                        if(init->layout[i]){
@@ -102,7 +103,7 @@
 
 void BME_CD_Free(BME_CustomData *data)
 {
-       if(data->pool) BME_mempool_destroy(data->pool);
+       if(data->pool) BLI_mempool_destroy(data->pool);
 }
 
 /*Block level ops*/
@@ -119,7 +120,7 @@
                        typeInfo->free((char*)*block + offset, 1, 
typeInfo->size);
                }
        }
-       BME_mempool_free(data->pool, *block);
+       BLI_mempool_free(data->pool, *block);
        *block = NULL;
 }
 
@@ -130,7 +131,7 @@
        if (*block) BME_CD_free_block(data, block); //if we copy layers that 
have their own free functions like deformverts
        
        if (data->totsize > 0)
-               *block = BME_mempool_alloc(data->pool); 
+               *block = BLI_mempool_alloc(data->pool); 
        else
                *block = NULL;
 }

Modified: branches/apricot/source/blender/blenkernel/intern/BME_conversions.c
===================================================================
--- branches/apricot/source/blender/blenkernel/intern/BME_conversions.c 
2008-07-08 17:57:31 UTC (rev 15490)
+++ branches/apricot/source/blender/blenkernel/intern/BME_conversions.c 
2008-07-08 18:32:42 UTC (rev 15491)
@@ -55,14 +55,104 @@
 #include "bmesh_private.h"
 
 #include "BSE_edit.h"
-/*Converts an EditMesh to a BME_Mesh.*/
-static void bmesh_init_cdPool(CustomData *data, int allocsize){
-       if(data->totlayer)data->pool = BLI_mempool_create(data->totsize, 
allocsize, allocsize);
+
+static void BME_corners_to_loops(BME_Mesh *bm, CustomData *facedata, void 
*face_block, BME_Poly *f,int numCol, int numTex){
+       int i, j;
+       BME_Loop *l;
+       MTFace *texface;
+       MTexPoly *texpoly;
+       MCol *mcol;
+       MLoopCol *mloopcol;
+       MLoopUV *mloopuv;
+
+       for(i=0; i < numTex; i++){
+               texface = CustomData_em_get_n(facedata, face_block, CD_MTFACE, 
i);
+               texpoly = CustomData_bmesh_get_n(&bm->pdata, f->data, 
CD_MTEXPOLY, i);
+               
+               texpoly->tpage = texface->tpage;
+               texpoly->flag = texface->flag;
+               texpoly->transp = texface->transp;
+               texpoly->mode = texface->mode;
+               texpoly->tile = texface->tile;
+               texpoly->unwrap = texface->unwrap;
+
+               j = 0;
+               l = f->loopbase;
+               do{
+                       mloopuv = CustomData_bmesh_get_n(&bm->ldata, l->data, 
CD_MLOOPUV, i);
+                       mloopuv->uv[0] = texface->uv[j][0];
+                       mloopuv->uv[1] = texface->uv[j][1];
+                       j++;
+                       l = l->next;
+               }while(l!=f->loopbase);
+
+       }
+       for(i=0; i < numCol; i++){
+               mcol = CustomData_em_get_n(facedata, face_block, CD_MCOL, i);
+               j = 0;
+               l = f->loopbase;
+               do{
+                       mloopcol = CustomData_bmesh_get_n(&bm->ldata, l->data, 
CD_MLOOPCOL, i);
+                       mloopcol->r = mcol[j].r;
+                       mloopcol->g = mcol[j].g;
+                       mloopcol->b = mcol[j].b;
+                       mloopcol->a = mcol[j].a;
+                       j++;
+                       l = l->next;
+               }while(l!=f->loopbase);
+       }
 }
 
+static void BME_loops_to_corners(BME_Mesh *bm, CustomData *facedata, void 
*face_block, BME_Poly *f,int numCol, int numTex){
+       int i, j;
+       BME_Loop *l;
+       MTFace *texface;
+       MTexPoly *texpoly;
+       MCol *mcol;
+       MLoopCol *mloopcol;
+       MLoopUV *mloopuv;
+
+       for(i=0; i < numTex; i++){
+               texface = CustomData_em_get_n(facedata, face_block, CD_MTFACE, 
i);
+               texpoly = CustomData_bmesh_get_n(&bm->pdata, f->data, 
CD_MTEXPOLY, i);
+               
+               texface->tpage = texpoly->tpage;
+               texface->flag = texpoly->flag;
+               texface->transp = texpoly->transp;
+               texface->mode = texpoly->mode;
+               texface->tile = texpoly->tile;
+               texface->unwrap = texpoly->unwrap;
+
+               j = 0;
+               l = f->loopbase;
+               do{
+                       mloopuv = CustomData_bmesh_get_n(&bm->ldata, l->data, 
CD_MLOOPUV, i);
+                       texface->uv[j][0] = mloopuv->uv[0];
+                       texface->uv[j][1] = mloopuv->uv[1];
+                       j++;
+                       l = l->next;
+               }while(l!=f->loopbase);
+
+       }
+       for(i=0; i < numCol; i++){
+               mcol = CustomData_em_get_n(facedata, face_block, CD_MCOL, i);
+               j = 0;
+               l = f->loopbase;
+               do{
+                       mloopcol = CustomData_bmesh_get_n(&bm->ldata, l->data, 
CD_MLOOPCOL, i);
+                       mcol[j].r = mloopcol->r;
+                       mcol[j].g = mloopcol->g;
+                       mcol[j].b = mloopcol->b;
+                       mcol[j].a = mloopcol->a;
+                       j++;
+                       l = l->next;
+               }while(l!=f->loopbase);
+       }
+}
+/*move the EditMesh conversion functions to editmesh_tools.c*/
 BME_Mesh *BME_editmesh_to_bmesh(EditMesh *em) {
        BME_Mesh *bm;
-       int allocsize[4] = {512,512,2048,512};
+       int allocsize[4] = {512,512,2048,512}, numTex, numCol;
        BME_Vert *v1, *v2;
        BME_Edge *e, *edar[4];
        BME_Poly *f;
@@ -74,9 +164,22 @@
        int len;
        bm = BME_make_mesh(allocsize);
 
+       /*copy custom data layout*/
        CustomData_copy(&em->vdata, &bm->vdata, CD_MASK_BMESH, CD_CALLOC, 0);
-       bmesh_init_cdPool(&bm->vdata, allocsize[0]);
+       CustomData_copy(&em->edata, &bm->edata, CD_MASK_BMESH, CD_CALLOC, 0);
+       CustomData_copy(&em->fdata, &bm->pdata, CD_MASK_BMESH, CD_CALLOC, 0);
 
+       /*copy face corner data*/
+       CustomData_to_bmeshpoly(&em->fdata, &bm->pdata, &bm->ldata);
+       /*initialize memory pools*/
+       CustomData_bmesh_init_pool(&bm->vdata, allocsize[0]);
+       CustomData_bmesh_init_pool(&bm->edata, allocsize[1]);
+       CustomData_bmesh_init_pool(&bm->ldata, allocsize[2]);
+       CustomData_bmesh_init_pool(&bm->pdata, allocsize[3]);
+       /*needed later*/
+       numTex = CustomData_number_of_layers(&bm->pdata, CD_MTEXPOLY);
+       numCol = CustomData_number_of_layers(&bm->ldata, CD_MLOOPCOL);
+
        BME_model_begin(bm);
        /*add verts*/
        eve= em->verts.first;
@@ -86,7 +189,6 @@
                v1->flag = eve->f;
                v1->h = eve->h;
                v1->bweight = eve->bweight;
-
                /*Copy Custom Data*/
                CustomData_bmesh_copy_data(&em->vdata, &bm->vdata, eve->data, 
&v1->data);
                eve->tmp.v = (EditVert*)v1;
@@ -106,15 +208,10 @@
                if(eed->seam) e->flag |= ME_SEAM;
                if(eed->h & EM_FGON) e->flag |= ME_FGON;
                if(eed->h & 1) e->flag |= ME_HIDE;
-
-               /* link the edges for face construction;

@@ Diff output truncated at 10240 characters. @@

_______________________________________________
Bf-blender-cvs mailing list
[email protected]
http://lists.blender.org/mailman/listinfo/bf-blender-cvs

Reply via email to