0024699: Visualization - prototype interoperation of TKOpenGl viewer with Direct3D viewer
Add new C# sample which allow to render the OCCT scene to a Direct3D context in a WPF application. DirectX SDK is required in order to build this sample.
@ -9,6 +9,7 @@ overview/overview.md
|
||||
|
||||
../samples/mfc/standard/ReadMe.md
|
||||
../samples/CSharp/ReadMe.md
|
||||
../samples/CSharp/ReadMe_D3D.md
|
||||
|
||||
tutorial/tutorial.md
|
||||
|
||||
|
@ -623,5 +623,9 @@ Export:
|
||||
* Stl
|
||||
* Vrml
|
||||
|
||||
See \subpage samples_csharp "Readme" for details.
|
||||
See \subpage samples_csharp_occt "Readme" for details.
|
||||
|
||||
Also there is an other C# example with the same functionality which demonstrates integration of Direct3D Viewer into .NET applications using WPF front end.
|
||||
|
||||
See \subpage samples_csharp_direct3d "Readme" for details.
|
||||
|
||||
|
@ -1,6 +1,6 @@
|
||||
Microsoft Visual Studio Solution File, Format Version 11.00
|
||||
# Visual Studio 2010
|
||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "IE_WPF", "WPF\IE_WPF.csproj", "{D12A8897-5BF8-4345-BBB0-8ADE4B9FB9A7}"
|
||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "IE_WPF_WinForms", "WPF_WinForms\IE_WPF_WinForms.csproj", "{D12A8897-5BF8-4345-BBB0-8ADE4B9FB9A7}"
|
||||
EndProject
|
||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "IE_WinForms", "WinForms\IE_WinForms.csproj", "{B9914BB3-B886-4B41-B48D-350EBEBEFD1F}"
|
||||
EndProject
|
@ -1,10 +1,8 @@
|
||||
Microsoft Visual Studio Solution File, Format Version 10.00
|
||||
# Visual Studio 2008
|
||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "IE_WPF", "WPF\IE_WPF.csproj", "{D12A8897-5BF8-4345-BBB0-8ADE4B9FB9A7}"
|
||||
Microsoft Visual Studio Solution File, Format Version 11.00
|
||||
# Visual Studio 2010
|
||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "IE_WPF_D3D", "WPF_D3D\IE_WPF_D3D.csproj", "{D12A8897-5BF8-4345-BBB0-8ADE4B9FB9A7}"
|
||||
EndProject
|
||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "IE_WinForms", "WinForms\IE_WinForms.csproj", "{B9914BB3-B886-4B41-B48D-350EBEBEFD1F}"
|
||||
EndProject
|
||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "OCCTProxy", "OCCTProxy\OCCTProxy.vcproj", "{969912D9-78E7-4AB8-B4FF-6B52B4F03991}"
|
||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "OCCTProxy_D3D", "OCCTProxy_D3D\OCCTProxy_D3D.vcxproj", "{969912D9-78E7-4AB8-B4FF-6B52B4F03991}"
|
||||
EndProject
|
||||
Global
|
||||
GlobalSection(SolutionConfigurationPlatforms) = preSolution
|
||||
@ -22,14 +20,6 @@ Global
|
||||
{D12A8897-5BF8-4345-BBB0-8ADE4B9FB9A7}.Release|Win32.Build.0 = Release|x86
|
||||
{D12A8897-5BF8-4345-BBB0-8ADE4B9FB9A7}.Release|x64.ActiveCfg = Release|x64
|
||||
{D12A8897-5BF8-4345-BBB0-8ADE4B9FB9A7}.Release|x64.Build.0 = Release|x64
|
||||
{B9914BB3-B886-4B41-B48D-350EBEBEFD1F}.Debug|Win32.ActiveCfg = Debug|x86
|
||||
{B9914BB3-B886-4B41-B48D-350EBEBEFD1F}.Debug|Win32.Build.0 = Debug|x86
|
||||
{B9914BB3-B886-4B41-B48D-350EBEBEFD1F}.Debug|x64.ActiveCfg = Debug|x64
|
||||
{B9914BB3-B886-4B41-B48D-350EBEBEFD1F}.Debug|x64.Build.0 = Debug|x64
|
||||
{B9914BB3-B886-4B41-B48D-350EBEBEFD1F}.Release|Win32.ActiveCfg = Release|x86
|
||||
{B9914BB3-B886-4B41-B48D-350EBEBEFD1F}.Release|Win32.Build.0 = Release|x86
|
||||
{B9914BB3-B886-4B41-B48D-350EBEBEFD1F}.Release|x64.ActiveCfg = Release|x64
|
||||
{B9914BB3-B886-4B41-B48D-350EBEBEFD1F}.Release|x64.Build.0 = Release|x64
|
||||
{969912D9-78E7-4AB8-B4FF-6B52B4F03991}.Debug|Win32.ActiveCfg = Debug|Win32
|
||||
{969912D9-78E7-4AB8-B4FF-6B52B4F03991}.Debug|Win32.Build.0 = Debug|Win32
|
||||
{969912D9-78E7-4AB8-B4FF-6B52B4F03991}.Debug|x64.ActiveCfg = Debug|x64
|
@ -1094,5 +1094,5 @@ private:
|
||||
NCollection_Haft<Handle_V3d_Viewer> myViewer;
|
||||
NCollection_Haft<Handle_V3d_View> myView;
|
||||
NCollection_Haft<Handle_AIS_InteractiveContext> myAISContext;
|
||||
NCollection_Haft<Handle_OpenGl_GraphicDriver> myGraphicDriver;
|
||||
NCollection_Haft<Handle_OpenGl_GraphicDriver> myGraphicDriver;
|
||||
};
|
||||
|
@ -78,8 +78,6 @@
|
||||
<OutDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">..\win64\bin\</OutDir>
|
||||
<IntDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">obj\$(Platform)\$(Configuration)\</IntDir>
|
||||
<LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</LinkIncremental>
|
||||
<IncludePath Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">D:\builds\vc10\CR25067-master-occt\inc;$(IncludePath)</IncludePath>
|
||||
<LibraryPath Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">D:\builds\vc10\CR25067-master-occt\win32\vc10\lib;$(LibraryPath)</LibraryPath>
|
||||
</PropertyGroup>
|
||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
|
||||
<ClCompile>
|
||||
|
152
samples/CSharp/OCCTProxy_D3D/BridgeFBO.cxx
Normal file
@ -0,0 +1,152 @@
|
||||
#include "BridgeFBO.hxx"
|
||||
|
||||
#include <OpenGl_ArbFBO.hxx>
|
||||
|
||||
#include <Graphic3d_TextureParams.hxx>
|
||||
|
||||
#include <d3dx9.h>
|
||||
|
||||
// list of required libraries
|
||||
#pragma comment(lib, "TKOpenGl.lib")
|
||||
#pragma comment(lib, "opengl32.lib")
|
||||
|
||||
// =======================================================================
|
||||
// function : Init
|
||||
// purpose :
|
||||
// =======================================================================
|
||||
Standard_Boolean BridgeFBO::Init (const Handle(OpenGl_Context)& theGlContext,
|
||||
void* theD3DDevice)
|
||||
{
|
||||
const OpenGl_GlFunctions* aFuncs = (const OpenGl_GlFunctions* )theGlContext->core11;
|
||||
if (aFuncs->wglDXOpenDeviceNV == NULL)
|
||||
{
|
||||
return Standard_False;
|
||||
}
|
||||
|
||||
myGlD3DHandle = aFuncs->wglDXOpenDeviceNV (theD3DDevice);
|
||||
if (myGlD3DHandle == NULL)
|
||||
{
|
||||
std::cerr << "Could not create the GL <-> DirectX Interop" << std::endl;
|
||||
return Standard_False;
|
||||
}
|
||||
|
||||
theGlContext->arbFBO->glGenFramebuffers (1, &myGlFBufferId);
|
||||
return Standard_True;
|
||||
}
|
||||
|
||||
// =======================================================================
|
||||
// function : Release
|
||||
// purpose :
|
||||
// =======================================================================
|
||||
void BridgeFBO::Release (OpenGl_Context* theGlContext)
|
||||
{
|
||||
if (myGlD3DHandle != NULL)
|
||||
{
|
||||
const OpenGl_GlFunctions* aFuncs = (const OpenGl_GlFunctions* )theGlContext->core11;
|
||||
if (myGlD3DSharedColorHandle != NULL)
|
||||
{
|
||||
aFuncs->wglDXUnregisterObjectNV (myGlD3DHandle, myGlD3DSharedColorHandle);
|
||||
myGlD3DSharedColorHandle = NULL;
|
||||
}
|
||||
|
||||
aFuncs->wglDXCloseDeviceNV (myGlD3DHandle);
|
||||
myGlD3DHandle = NULL;
|
||||
}
|
||||
|
||||
OpenGl_FrameBuffer::Release (theGlContext);
|
||||
}
|
||||
|
||||
// =======================================================================
|
||||
// function : RegisterD3DColorBuffer
|
||||
// purpose :
|
||||
// =======================================================================
|
||||
Standard_Boolean BridgeFBO::RegisterD3DColorBuffer (const Handle(OpenGl_Context)& theGlContext,
|
||||
void* theD3DBuffer,
|
||||
void* theBufferShare)
|
||||
{
|
||||
const OpenGl_GlFunctions* aFuncs = (const OpenGl_GlFunctions* )theGlContext->core11;
|
||||
if (myGlD3DSharedColorHandle != NULL)
|
||||
{
|
||||
if (!aFuncs->wglDXUnregisterObjectNV (myGlD3DHandle, myGlD3DSharedColorHandle))
|
||||
{
|
||||
return Standard_False;
|
||||
}
|
||||
myGlD3DSharedColorHandle = NULL;
|
||||
}
|
||||
|
||||
if (!aFuncs->wglDXSetResourceShareHandleNV (theD3DBuffer, theBufferShare))
|
||||
{
|
||||
return Standard_False;
|
||||
}
|
||||
|
||||
myColorTexture->Release (theGlContext.operator->());
|
||||
myColorTexture->Create (theGlContext);
|
||||
|
||||
myGlD3DSharedColorHandle = aFuncs->wglDXRegisterObjectNV (myGlD3DHandle,
|
||||
theD3DBuffer, myColorTexture->TextureId(), GL_TEXTURE_2D, WGL_ACCESS_WRITE_DISCARD_NV);
|
||||
|
||||
if (myGlD3DSharedColorHandle == NULL)
|
||||
{
|
||||
std::cerr << "Could not register color buffer" << std::endl;
|
||||
return Standard_False;
|
||||
}
|
||||
|
||||
return Standard_True;
|
||||
}
|
||||
|
||||
// =======================================================================
|
||||
// function : Resize
|
||||
// purpose :
|
||||
// =======================================================================
|
||||
void BridgeFBO::Resize (const Handle(OpenGl_Context)& theGlContext,
|
||||
int theSizeX,
|
||||
int theSizeY)
|
||||
{
|
||||
myVPSizeX = theSizeX;
|
||||
myVPSizeY = theSizeY;
|
||||
|
||||
myDepthStencilTexture->Init (theGlContext, GL_DEPTH24_STENCIL8,
|
||||
GL_DEPTH_STENCIL, GL_UNSIGNED_INT_24_8,
|
||||
myVPSizeX, myVPSizeY, Graphic3d_TOT_2D);
|
||||
}
|
||||
|
||||
// =======================================================================
|
||||
// function : BindBuffer
|
||||
// purpose :
|
||||
// =======================================================================
|
||||
void BridgeFBO::BindBuffer (const Handle(OpenGl_Context)& theGlContext)
|
||||
{
|
||||
if (myGlD3DSharedColorHandle != NULL)
|
||||
{
|
||||
// Lock for OpenGL
|
||||
const OpenGl_GlFunctions* aFuncs = (const OpenGl_GlFunctions* )theGlContext->core11;
|
||||
aFuncs->wglDXLockObjectsNV (myGlD3DHandle, 1, &myGlD3DSharedColorHandle);
|
||||
}
|
||||
|
||||
OpenGl_FrameBuffer::BindBuffer (theGlContext);
|
||||
theGlContext->arbFBO->glFramebufferTexture2D (GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0,
|
||||
GL_TEXTURE_2D, myColorTexture->TextureId(), 0);
|
||||
theGlContext->arbFBO->glFramebufferTexture2D (GL_FRAMEBUFFER, GL_DEPTH_STENCIL_ATTACHMENT,
|
||||
GL_TEXTURE_2D, myDepthStencilTexture->TextureId(), 0);
|
||||
if (theGlContext->arbFBO->glCheckFramebufferStatus (GL_FRAMEBUFFER) != GL_FRAMEBUFFER_COMPLETE)
|
||||
{
|
||||
std::cerr << "Invalid FBO can not be bound!\n";
|
||||
Release (theGlContext.operator->());
|
||||
}
|
||||
}
|
||||
|
||||
// =======================================================================
|
||||
// function : UnbindBuffer
|
||||
// purpose :
|
||||
// =======================================================================
|
||||
void BridgeFBO::UnbindBuffer (const Handle(OpenGl_Context)& theGlContext)
|
||||
{
|
||||
// Unbind the frame buffer
|
||||
OpenGl_FrameBuffer::UnbindBuffer (theGlContext);
|
||||
if (myGlD3DSharedColorHandle != NULL)
|
||||
{
|
||||
// Unlock for Direct3D
|
||||
const OpenGl_GlFunctions* aFuncs = (const OpenGl_GlFunctions* )theGlContext->core11;
|
||||
aFuncs->wglDXUnlockObjectsNV (myGlD3DHandle, 1, &myGlD3DSharedColorHandle);
|
||||
}
|
||||
}
|
53
samples/CSharp/OCCTProxy_D3D/BridgeFBO.hxx
Normal file
@ -0,0 +1,53 @@
|
||||
#ifndef BRIDGE_FBO_HEADER
|
||||
#define BRIDGE_FBO_HEADER
|
||||
|
||||
#include <OpenGl_GlCore20.hxx>
|
||||
#include <OpenGl_FrameBuffer.hxx>
|
||||
|
||||
//! Implements bridge FBO for direct rendering to Direct3D surfaces.
|
||||
class BridgeFBO : public OpenGl_FrameBuffer
|
||||
{
|
||||
public:
|
||||
|
||||
//! Creates new bridge FBO.
|
||||
BridgeFBO() : OpenGl_FrameBuffer()
|
||||
{
|
||||
//
|
||||
}
|
||||
|
||||
//! Releases resources of bridge FBO.
|
||||
~BridgeFBO()
|
||||
{
|
||||
Release (NULL);
|
||||
}
|
||||
|
||||
//! Releases resources of bridge FBO.
|
||||
virtual void Release (OpenGl_Context* theGlContext);
|
||||
|
||||
//! Initializes OpenGL FBO for Direct3D interoperability.
|
||||
Standard_Boolean Init (const Handle(OpenGl_Context)& theGlContext,
|
||||
void* theD3DDevice);
|
||||
|
||||
//! Binds Direcr3D color buffer to OpenGL texture.
|
||||
Standard_Boolean RegisterD3DColorBuffer (const Handle(OpenGl_Context)& theGlContext,
|
||||
void* theD3DBuffer,
|
||||
void* theBufferShare);
|
||||
|
||||
//! Locks Direct3D objects for OpenGL drawing.
|
||||
virtual void BindBuffer (const Handle(OpenGl_Context)& theGlContext);
|
||||
|
||||
//! Unlocks Direct3D objects after OpenGL drawing.
|
||||
virtual void UnbindBuffer (const Handle(OpenGl_Context)& theGlContext);
|
||||
|
||||
//! Resizes buffer according to Direct3D surfaces.
|
||||
void Resize (const Handle(OpenGl_Context)& theGlContext,
|
||||
int theSizeX,
|
||||
int theSizeY);
|
||||
|
||||
private:
|
||||
|
||||
HANDLE myGlD3DHandle;
|
||||
HANDLE myGlD3DSharedColorHandle;
|
||||
};
|
||||
|
||||
#endif
|
278
samples/CSharp/OCCTProxy_D3D/Direct3DProxy.cpp
Normal file
@ -0,0 +1,278 @@
|
||||
#include <iostream>
|
||||
#include <windows.h>
|
||||
#include <d3dx9.h>
|
||||
|
||||
using namespace System::Runtime::InteropServices;
|
||||
|
||||
typedef HRESULT (WINAPI *DIRECT3DCREATE9EX)(UINT SDKVersion, IDirect3D9Ex**);
|
||||
|
||||
LRESULT WINAPI MsgProc (HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam)
|
||||
{
|
||||
return DefWindowProcW (hWnd, msg, wParam, lParam);
|
||||
}
|
||||
|
||||
WNDCLASSEXW THE_WNDCLASS_D3D =
|
||||
{
|
||||
sizeof (WNDCLASSEXW),
|
||||
CS_CLASSDC, MsgProc, NULL, NULL,
|
||||
GetModuleHandle (NULL),
|
||||
NULL, NULL, NULL, NULL, L"D3D", NULL
|
||||
};
|
||||
|
||||
// =======================================================================
|
||||
// function : GetVertexProcessingCaps
|
||||
// purpose :
|
||||
// =======================================================================
|
||||
DWORD GetVertexProcessingCaps (LPDIRECT3D9 theD3D)
|
||||
{
|
||||
D3DCAPS9 aCaps;
|
||||
return !SUCCEEDED (theD3D->GetDeviceCaps (D3DADAPTER_DEFAULT, D3DDEVTYPE_HAL, &aCaps))
|
||||
|| !(aCaps.DevCaps & D3DDEVCAPS_HWTRANSFORMANDLIGHT)
|
||||
? D3DCREATE_SOFTWARE_VERTEXPROCESSING
|
||||
: D3DCREATE_HARDWARE_VERTEXPROCESSING;
|
||||
}
|
||||
|
||||
//! Encapsulates state of Direct3D renderer.
|
||||
class D3DRender
|
||||
{
|
||||
public:
|
||||
|
||||
D3DRender (int theSizeX = 512,
|
||||
int theSizeY = 512)
|
||||
: D3D (NULL),
|
||||
D3DEx (NULL),
|
||||
D3DDevice (NULL),
|
||||
D3DDeviceEx (NULL),
|
||||
D3DColorSurf (NULL),
|
||||
D3DColorSurfShare (NULL),
|
||||
FuncCreate9Ex (NULL),
|
||||
WinSizeX (theSizeX),
|
||||
WinSizeY (theSizeY)
|
||||
{
|
||||
CheckRegisterClass();
|
||||
WinHandle = CreateWindowW (L"D3D", L"D3D",
|
||||
WS_OVERLAPPEDWINDOW, 0, 0, 1, 1,
|
||||
NULL, NULL, THE_WNDCLASS_D3D.hInstance, NULL);
|
||||
Init();
|
||||
}
|
||||
|
||||
~D3DRender()
|
||||
{
|
||||
// do not release class instance shared between all renderers
|
||||
//UnregisterClass (NULL, THE_WNDCLASS_D3D.hInstance);
|
||||
if (D3DDevice != NULL)
|
||||
{
|
||||
D3DDevice->Release();
|
||||
}
|
||||
if (D3DDeviceEx != NULL)
|
||||
{
|
||||
D3DDeviceEx->Release();
|
||||
}
|
||||
if (D3D != NULL)
|
||||
{
|
||||
D3D->Release();
|
||||
}
|
||||
if (D3DEx != NULL)
|
||||
{
|
||||
D3DEx->Release();
|
||||
}
|
||||
if (D3DColorSurf != NULL)
|
||||
{
|
||||
D3DColorSurf->Release();
|
||||
D3DColorSurfShare = NULL;
|
||||
}
|
||||
}
|
||||
|
||||
//! Creates Direct3D render target.
|
||||
bool CreateRenderTarget()
|
||||
{
|
||||
if (!SetWindowPos (WinHandle, 0, 0, 0, WinSizeX, WinSizeY, 0))
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
if (D3DColorSurf != NULL)
|
||||
{
|
||||
D3DColorSurf->Release();
|
||||
D3DColorSurfShare = NULL;
|
||||
}
|
||||
|
||||
// Note: Render target surface should be lockable on
|
||||
// Windows XP and non-lockable on Windows Vista or higher
|
||||
if (FAILED (D3DDevice->CreateRenderTarget (WinSizeX, WinSizeY,
|
||||
D3DFMT_X8R8G8B8, D3DMULTISAMPLE_NONE, 0, FuncCreate9Ex != NULL,
|
||||
&D3DColorSurf, FuncCreate9Ex == NULL ? NULL : &D3DColorSurfShare)))
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
D3DDevice->SetRenderTarget (0, D3DColorSurf);
|
||||
return true;
|
||||
}
|
||||
|
||||
private:
|
||||
|
||||
void Init()
|
||||
{
|
||||
// Vista requires the D3D "Ex" functions for optimal performance.
|
||||
// The Ex functions are only supported with WDDM drivers, so they will not be available on XP.
|
||||
HMODULE aD3D9 = GetModuleHandleW (L"d3d9");
|
||||
FuncCreate9Ex = (DIRECT3DCREATE9EX )GetProcAddress (aD3D9, "Direct3DCreate9Ex");
|
||||
|
||||
// Set up the structure used to create the D3DDevice
|
||||
D3DPRESENT_PARAMETERS aParams;
|
||||
ZeroMemory (&aParams, sizeof(aParams));
|
||||
aParams.Windowed = TRUE;
|
||||
aParams.BackBufferHeight = 1;
|
||||
aParams.BackBufferWidth = 1;
|
||||
aParams.SwapEffect = D3DSWAPEFFECT_DISCARD;
|
||||
aParams.BackBufferFormat = D3DFMT_X8R8G8B8;
|
||||
(FuncCreate9Ex != NULL) ? InitializeD3DEx (aParams) : InitializeD3D (aParams);
|
||||
}
|
||||
|
||||
bool InitializeD3D (D3DPRESENT_PARAMETERS theParams)
|
||||
{
|
||||
D3D = Direct3DCreate9 (D3D_SDK_VERSION);
|
||||
if (D3D == NULL)
|
||||
return false;
|
||||
|
||||
DWORD aVertProcessCaps = GetVertexProcessingCaps (D3D);
|
||||
HRESULT aResult = D3D->CreateDevice (D3DADAPTER_DEFAULT, D3DDEVTYPE_HAL, WinHandle,
|
||||
aVertProcessCaps | D3DCREATE_MULTITHREADED | D3DCREATE_FPU_PRESERVE,
|
||||
&theParams, &D3DDevice);
|
||||
return SUCCEEDED (aResult);
|
||||
}
|
||||
|
||||
bool InitializeD3DEx (D3DPRESENT_PARAMETERS theParams)
|
||||
{
|
||||
if (FAILED (FuncCreate9Ex (D3D_SDK_VERSION, &D3DEx))
|
||||
|| FAILED (D3DEx->QueryInterface (__uuidof (IDirect3D9), reinterpret_cast<void**> (&D3D))))
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
DWORD aVertProcessCaps = GetVertexProcessingCaps (D3D);
|
||||
if (FAILED (D3DEx->CreateDeviceEx (D3DADAPTER_DEFAULT, D3DDEVTYPE_HAL, WinHandle,
|
||||
aVertProcessCaps | D3DCREATE_MULTITHREADED | D3DCREATE_FPU_PRESERVE,
|
||||
&theParams, NULL, &D3DDeviceEx)))
|
||||
return false;
|
||||
|
||||
return SUCCEEDED (D3DDeviceEx->QueryInterface (__uuidof (IDirect3DDevice9), reinterpret_cast<void**> (&D3DDevice)));
|
||||
}
|
||||
|
||||
static void CheckRegisterClass()
|
||||
{
|
||||
static bool isRegistered = false;
|
||||
if (!isRegistered)
|
||||
{
|
||||
RegisterClassExW (&THE_WNDCLASS_D3D);
|
||||
isRegistered = true;
|
||||
}
|
||||
}
|
||||
|
||||
public:
|
||||
|
||||
LPDIRECT3D9 D3D;
|
||||
LPDIRECT3D9EX D3DEx;
|
||||
LPDIRECT3DDEVICE9 D3DDevice;
|
||||
LPDIRECT3DDEVICE9EX D3DDeviceEx;
|
||||
|
||||
LPDIRECT3DSURFACE9 D3DColorSurf;
|
||||
HANDLE D3DColorSurfShare;
|
||||
|
||||
DIRECT3DCREATE9EX FuncCreate9Ex;
|
||||
|
||||
HWND WinHandle;
|
||||
INT WinSizeX;
|
||||
INT WinSizeY;
|
||||
|
||||
};
|
||||
|
||||
public ref struct WndSize
|
||||
{
|
||||
public:
|
||||
|
||||
WndSize(int theSizeX, int theSizeY)
|
||||
{
|
||||
mySize = new SIZE();
|
||||
mySize->cx = theSizeX;
|
||||
mySize->cy = theSizeY;
|
||||
}
|
||||
|
||||
~WndSize()
|
||||
{
|
||||
delete mySize;
|
||||
}
|
||||
|
||||
property int cx
|
||||
{
|
||||
int get() { return mySize->cx; }
|
||||
}
|
||||
|
||||
property int cy
|
||||
{
|
||||
int get() { return mySize->cy; }
|
||||
}
|
||||
|
||||
LPSIZE GetPointer()
|
||||
{
|
||||
return mySize;
|
||||
}
|
||||
|
||||
private:
|
||||
|
||||
LPSIZE mySize;
|
||||
};
|
||||
|
||||
public ref class Direct3DProxy
|
||||
{
|
||||
public :
|
||||
|
||||
Direct3DProxy()
|
||||
{
|
||||
//
|
||||
}
|
||||
|
||||
// =======================================================================
|
||||
// function : InitializeScene
|
||||
// purpose :
|
||||
// =======================================================================
|
||||
static System::IntPtr InitRender ([Out] System::IntPtr% theWinHandle,
|
||||
[Out] System::IntPtr% theD3DDevice)
|
||||
{
|
||||
D3DRender* aRender = new D3DRender();
|
||||
theWinHandle = System::IntPtr(aRender->WinHandle);
|
||||
theD3DDevice = System::IntPtr(aRender->D3DDevice);
|
||||
|
||||
return System::IntPtr(aRender);
|
||||
}
|
||||
|
||||
// =======================================================================
|
||||
// function : ResizeWindow
|
||||
// purpose :
|
||||
// =======================================================================
|
||||
static void ResizeWindow ([In] System::IntPtr% theRender,
|
||||
[In] WndSize^% theWndSize,
|
||||
[Out] System::IntPtr% theColorSurf,
|
||||
[Out] System::IntPtr% theColorSurfShare)
|
||||
{
|
||||
D3DRender* aRender = reinterpret_cast<D3DRender*> (theRender.ToPointer());
|
||||
LPSIZE aSize = theWndSize->GetPointer();
|
||||
aRender->WinSizeX = aSize->cx;
|
||||
aRender->WinSizeY = aSize->cy;
|
||||
aRender->CreateRenderTarget();
|
||||
|
||||
theColorSurf = System::IntPtr(aRender->D3DColorSurf);
|
||||
theColorSurfShare = System::IntPtr(aRender->D3DColorSurfShare);
|
||||
}
|
||||
|
||||
// =======================================================================
|
||||
// function : ReleaseRender
|
||||
// purpose :
|
||||
// =======================================================================
|
||||
static void ReleaseRender ([In] System::IntPtr% theRender)
|
||||
{
|
||||
D3DRender* aRender = reinterpret_cast<D3DRender*> (theRender.ToPointer());
|
||||
delete aRender;
|
||||
}
|
||||
};
|
1109
samples/CSharp/OCCTProxy_D3D/OCCTProxyD3D.cpp
Normal file
379
samples/CSharp/OCCTProxy_D3D/OCCTProxy_D3D.vcproj
Normal file
@ -0,0 +1,379 @@
|
||||
<?xml version="1.0" encoding="windows-1251"?>
|
||||
<VisualStudioProject
|
||||
ProjectType="Visual C++"
|
||||
Version="9.00"
|
||||
Name="OCCTProxy_D3D"
|
||||
ProjectGUID="{969912D9-78E7-4AB8-B4FF-6B52B4F03991}"
|
||||
RootNamespace="OCCTProxy_D3D"
|
||||
Keyword="Win32Proj"
|
||||
TargetFrameworkVersion="131072"
|
||||
>
|
||||
<Platforms>
|
||||
<Platform
|
||||
Name="Win32"
|
||||
/>
|
||||
<Platform
|
||||
Name="x64"
|
||||
/>
|
||||
</Platforms>
|
||||
<ToolFiles>
|
||||
</ToolFiles>
|
||||
<Configurations>
|
||||
<Configuration
|
||||
Name="Debug|Win32"
|
||||
OutputDirectory="..\win32\bind"
|
||||
IntermediateDirectory="obj\$(PlatformName)\$(ConfigurationName)"
|
||||
ConfigurationType="2"
|
||||
InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops"
|
||||
CharacterSet="2"
|
||||
ManagedExtensions="1"
|
||||
>
|
||||
<Tool
|
||||
Name="VCPreBuildEventTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCCustomBuildTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCXMLDataGeneratorTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCWebServiceProxyGeneratorTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCMIDLTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCCLCompilerTool"
|
||||
Optimization="0"
|
||||
AdditionalIncludeDirectories="..\OCC\;$(CSF_OPT_INC);"$(DXSDK_DIR)Include""
|
||||
PreprocessorDefinitions="WNT;_DEBUG"
|
||||
MinimalRebuild="false"
|
||||
BasicRuntimeChecks="0"
|
||||
RuntimeLibrary="3"
|
||||
UsePrecompiledHeader="0"
|
||||
WarningLevel="3"
|
||||
DebugInformationFormat="3"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCManagedResourceCompilerTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCResourceCompilerTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCPreLinkEventTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCLinkerTool"
|
||||
OutputFile="$(OutDir)/OCCTProxy_D3D.dll"
|
||||
LinkIncremental="1"
|
||||
AdditionalLibraryDirectories="$(CSF_OPT_LIB32D)"
|
||||
GenerateDebugInformation="true"
|
||||
AssemblyDebug="1"
|
||||
ProgramDatabaseFile="$(OutDir)/OCCTProxy_D3D.pdb"
|
||||
SubSystem="2"
|
||||
RandomizedBaseAddress="1"
|
||||
DataExecutionPrevention="0"
|
||||
ImportLibrary="$(OutDir)/OCCTProxy_D3D.lib"
|
||||
TargetMachine="1"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCALinkTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCManifestTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCXDCMakeTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCBscMakeTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCFxCopTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCAppVerifierTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCPostBuildEventTool"
|
||||
/>
|
||||
</Configuration>
|
||||
<Configuration
|
||||
Name="Debug|x64"
|
||||
OutputDirectory="..\win64\bind"
|
||||
IntermediateDirectory="obj\$(PlatformName)\$(ConfigurationName)"
|
||||
ConfigurationType="2"
|
||||
InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops"
|
||||
CharacterSet="2"
|
||||
ManagedExtensions="1"
|
||||
>
|
||||
<Tool
|
||||
Name="VCPreBuildEventTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCCustomBuildTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCXMLDataGeneratorTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCWebServiceProxyGeneratorTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCMIDLTool"
|
||||
TargetEnvironment="3"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCCLCompilerTool"
|
||||
Optimization="0"
|
||||
AdditionalIncludeDirectories="..\OCC\;$(CSF_OPT_INC);"$(DXSDK_DIR)Include""
|
||||
PreprocessorDefinitions="WNT;_DEBUG"
|
||||
MinimalRebuild="false"
|
||||
BasicRuntimeChecks="0"
|
||||
RuntimeLibrary="3"
|
||||
UsePrecompiledHeader="0"
|
||||
WarningLevel="3"
|
||||
DebugInformationFormat="3"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCManagedResourceCompilerTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCResourceCompilerTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCPreLinkEventTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCLinkerTool"
|
||||
OutputFile="$(OutDir)/OCCTProxy_D3D.dll"
|
||||
LinkIncremental="1"
|
||||
AdditionalLibraryDirectories="$(CSF_OPT_LIB64D)"
|
||||
GenerateDebugInformation="true"
|
||||
AssemblyDebug="1"
|
||||
ProgramDatabaseFile="$(OutDir)/OCCTProxy_D3D.pdb"
|
||||
SubSystem="2"
|
||||
RandomizedBaseAddress="1"
|
||||
DataExecutionPrevention="0"
|
||||
ImportLibrary="$(OutDir)/OCCTProxy_D3D.lib"
|
||||
TargetMachine="17"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCALinkTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCManifestTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCXDCMakeTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCBscMakeTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCFxCopTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCAppVerifierTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCPostBuildEventTool"
|
||||
/>
|
||||
</Configuration>
|
||||
<Configuration
|
||||
Name="Release|Win32"
|
||||
OutputDirectory="..\win32\bin"
|
||||
IntermediateDirectory="obj\$(PlatformName)\$(ConfigurationName)"
|
||||
ConfigurationType="2"
|
||||
InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops"
|
||||
CharacterSet="2"
|
||||
ManagedExtensions="1"
|
||||
>
|
||||
<Tool
|
||||
Name="VCPreBuildEventTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCCustomBuildTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCXMLDataGeneratorTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCWebServiceProxyGeneratorTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCMIDLTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCCLCompilerTool"
|
||||
AdditionalIncludeDirectories="..\OCC\;$(CSF_OPT_INC);"$(DXSDK_DIR)Include""
|
||||
PreprocessorDefinitions="WNT"
|
||||
RuntimeLibrary="2"
|
||||
UsePrecompiledHeader="0"
|
||||
WarningLevel="3"
|
||||
DebugInformationFormat="3"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCManagedResourceCompilerTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCResourceCompilerTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCPreLinkEventTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCLinkerTool"
|
||||
OutputFile="$(OutDir)/OCCTProxy_D3D.dll"
|
||||
LinkIncremental="1"
|
||||
AdditionalLibraryDirectories="$(CSF_OPT_LIB32)"
|
||||
GenerateDebugInformation="true"
|
||||
SubSystem="2"
|
||||
OptimizeReferences="2"
|
||||
EnableCOMDATFolding="2"
|
||||
RandomizedBaseAddress="1"
|
||||
DataExecutionPrevention="0"
|
||||
ImportLibrary="$(OutDir)/OCCTProxy_D3D.lib"
|
||||
TargetMachine="1"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCALinkTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCManifestTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCXDCMakeTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCBscMakeTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCFxCopTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCAppVerifierTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCPostBuildEventTool"
|
||||
/>
|
||||
</Configuration>
|
||||
<Configuration
|
||||
Name="Release|x64"
|
||||
OutputDirectory="..\win64\bin"
|
||||
IntermediateDirectory="obj\$(PlatformName)\$(ConfigurationName)"
|
||||
ConfigurationType="2"
|
||||
InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops"
|
||||
CharacterSet="2"
|
||||
ManagedExtensions="1"
|
||||
>
|
||||
<Tool
|
||||
Name="VCPreBuildEventTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCCustomBuildTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCXMLDataGeneratorTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCWebServiceProxyGeneratorTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCMIDLTool"
|
||||
TargetEnvironment="3"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCCLCompilerTool"
|
||||
AdditionalIncludeDirectories="..\OCC\;$(CSF_OPT_INC);"$(DXSDK_DIR)Include""
|
||||
PreprocessorDefinitions="WNT"
|
||||
RuntimeLibrary="2"
|
||||
UsePrecompiledHeader="0"
|
||||
WarningLevel="3"
|
||||
DebugInformationFormat="3"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCManagedResourceCompilerTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCResourceCompilerTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCPreLinkEventTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCLinkerTool"
|
||||
OutputFile="$(OutDir)/OCCTProxy_D3D.dll"
|
||||
LinkIncremental="1"
|
||||
AdditionalLibraryDirectories="$(CSF_OPT_LIB64)"
|
||||
GenerateDebugInformation="true"
|
||||
SubSystem="2"
|
||||
OptimizeReferences="2"
|
||||
EnableCOMDATFolding="2"
|
||||
RandomizedBaseAddress="1"
|
||||
DataExecutionPrevention="0"
|
||||
ImportLibrary="$(OutDir)/OCCTProxy_D3D.lib"
|
||||
TargetMachine="17"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCALinkTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCManifestTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCXDCMakeTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCBscMakeTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCFxCopTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCAppVerifierTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCPostBuildEventTool"
|
||||
/>
|
||||
</Configuration>
|
||||
</Configurations>
|
||||
<References>
|
||||
</References>
|
||||
<Files>
|
||||
<Filter
|
||||
Name="Source Files"
|
||||
Filter="cpp;c;cxx;def;odl;idl;hpj;bat;asm;asmx"
|
||||
UniqueIdentifier="{4FC737F1-C7A5-4376-A066-2A32D752A2FF}"
|
||||
>
|
||||
<File
|
||||
RelativePath=".\BridgeFBO.cxx"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\OCCTProxyD3D.cpp"
|
||||
>
|
||||
</File>
|
||||
</Filter>
|
||||
<Filter
|
||||
Name="Header Files"
|
||||
Filter="h;hpp;hxx;hm;inl;inc;xsd"
|
||||
UniqueIdentifier="{93995380-89BD-4b04-88EB-625FBE52EBFB}"
|
||||
>
|
||||
<File
|
||||
RelativePath=".\BridgeFBO.hxx"
|
||||
>
|
||||
</File>
|
||||
</Filter>
|
||||
<Filter
|
||||
Name="Resource Files"
|
||||
Filter="rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx"
|
||||
UniqueIdentifier="{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}"
|
||||
>
|
||||
</Filter>
|
||||
</Files>
|
||||
<Globals>
|
||||
</Globals>
|
||||
</VisualStudioProject>
|
203
samples/CSharp/OCCTProxy_D3D/OCCTProxy_D3D.vcxproj
Normal file
@ -0,0 +1,203 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||
<ItemGroup Label="ProjectConfigurations">
|
||||
<ProjectConfiguration Include="Debug|Win32">
|
||||
<Configuration>Debug</Configuration>
|
||||
<Platform>Win32</Platform>
|
||||
</ProjectConfiguration>
|
||||
<ProjectConfiguration Include="Debug|x64">
|
||||
<Configuration>Debug</Configuration>
|
||||
<Platform>x64</Platform>
|
||||
</ProjectConfiguration>
|
||||
<ProjectConfiguration Include="Release|Win32">
|
||||
<Configuration>Release</Configuration>
|
||||
<Platform>Win32</Platform>
|
||||
</ProjectConfiguration>
|
||||
<ProjectConfiguration Include="Release|x64">
|
||||
<Configuration>Release</Configuration>
|
||||
<Platform>x64</Platform>
|
||||
</ProjectConfiguration>
|
||||
</ItemGroup>
|
||||
<PropertyGroup Label="Globals">
|
||||
<ProjectGuid>{969912D9-78E7-4AB8-B4FF-6B52B4F03991}</ProjectGuid>
|
||||
<RootNamespace>OCCTProxy_D3D</RootNamespace>
|
||||
<Keyword>Win32Proj</Keyword>
|
||||
<ProjectName>OCCTProxy_D3D</ProjectName>
|
||||
</PropertyGroup>
|
||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
|
||||
<ConfigurationType>DynamicLibrary</ConfigurationType>
|
||||
<CharacterSet>MultiByte</CharacterSet>
|
||||
<CLRSupport>true</CLRSupport>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
|
||||
<ConfigurationType>DynamicLibrary</ConfigurationType>
|
||||
<CharacterSet>MultiByte</CharacterSet>
|
||||
<CLRSupport>true</CLRSupport>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
|
||||
<ConfigurationType>DynamicLibrary</ConfigurationType>
|
||||
<CharacterSet>MultiByte</CharacterSet>
|
||||
<CLRSupport>true</CLRSupport>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
|
||||
<ConfigurationType>DynamicLibrary</ConfigurationType>
|
||||
<CharacterSet>MultiByte</CharacterSet>
|
||||
<CLRSupport>true</CLRSupport>
|
||||
</PropertyGroup>
|
||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
|
||||
<ImportGroup Label="ExtensionSettings">
|
||||
</ImportGroup>
|
||||
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
|
||||
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
|
||||
<Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
|
||||
</ImportGroup>
|
||||
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
|
||||
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
|
||||
<Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
|
||||
</ImportGroup>
|
||||
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
|
||||
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
|
||||
<Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
|
||||
</ImportGroup>
|
||||
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
|
||||
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
|
||||
<Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
|
||||
</ImportGroup>
|
||||
<PropertyGroup Label="UserMacros" />
|
||||
<PropertyGroup>
|
||||
<_ProjectFileVersion>10.0.40219.1</_ProjectFileVersion>
|
||||
<OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">..\win32\bind\</OutDir>
|
||||
<IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">obj\$(Platform)\$(Configuration)\</IntDir>
|
||||
<LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">false</LinkIncremental>
|
||||
<OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">..\win64\bind\</OutDir>
|
||||
<IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">obj\$(Platform)\$(Configuration)\</IntDir>
|
||||
<LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">false</LinkIncremental>
|
||||
<OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">..\win32\bin\</OutDir>
|
||||
<IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">obj\$(Platform)\$(Configuration)\</IntDir>
|
||||
<LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>
|
||||
<OutDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">..\win64\bin\</OutDir>
|
||||
<IntDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">obj\$(Platform)\$(Configuration)\</IntDir>
|
||||
<LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</LinkIncremental>
|
||||
</PropertyGroup>
|
||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
|
||||
<ClCompile>
|
||||
<Optimization>Disabled</Optimization>
|
||||
<AdditionalIncludeDirectories>..\OCC\;$(CSF_OPT_INC);$(DXSDK_DIR)Include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
<PreprocessorDefinitions>WNT;_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<MinimalRebuild>false</MinimalRebuild>
|
||||
<BasicRuntimeChecks>Default</BasicRuntimeChecks>
|
||||
<RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
|
||||
<PrecompiledHeader>
|
||||
</PrecompiledHeader>
|
||||
<WarningLevel>Level3</WarningLevel>
|
||||
<DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
|
||||
</ClCompile>
|
||||
<Link>
|
||||
<OutputFile>$(OutDir)OCCTProxy_D3D.dll</OutputFile>
|
||||
<AdditionalLibraryDirectories>$(CSF_OPT_LIB32D);$(DXSDK_DIR)Lib\x86;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
|
||||
<GenerateDebugInformation>true</GenerateDebugInformation>
|
||||
<AssemblyDebug>true</AssemblyDebug>
|
||||
<ProgramDatabaseFile>$(OutDir)OCCTProxy_D3D.pdb</ProgramDatabaseFile>
|
||||
<SubSystem>Windows</SubSystem>
|
||||
<RandomizedBaseAddress>false</RandomizedBaseAddress>
|
||||
<DataExecutionPrevention>
|
||||
</DataExecutionPrevention>
|
||||
<ImportLibrary>$(OutDir)OCCTProxy_D3D.lib</ImportLibrary>
|
||||
<TargetMachine>MachineX86</TargetMachine>
|
||||
<AdditionalDependencies>d3d9.lib;d3dx9d.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||
</Link>
|
||||
</ItemDefinitionGroup>
|
||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
|
||||
<Midl>
|
||||
<TargetEnvironment>X64</TargetEnvironment>
|
||||
</Midl>
|
||||
<ClCompile>
|
||||
<Optimization>Disabled</Optimization>
|
||||
<AdditionalIncludeDirectories>..\OCC\;$(CSF_OPT_INC);$(DXSDK_DIR)Include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
<PreprocessorDefinitions>WNT;_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<MinimalRebuild>false</MinimalRebuild>
|
||||
<BasicRuntimeChecks>Default</BasicRuntimeChecks>
|
||||
<RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
|
||||
<PrecompiledHeader>
|
||||
</PrecompiledHeader>
|
||||
<WarningLevel>Level3</WarningLevel>
|
||||
<DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
|
||||
</ClCompile>
|
||||
<Link>
|
||||
<OutputFile>$(OutDir)OCCTProxy_D3D.dll</OutputFile>
|
||||
<AdditionalLibraryDirectories>$(CSF_OPT_LIB64D);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
|
||||
<GenerateDebugInformation>true</GenerateDebugInformation>
|
||||
<AssemblyDebug>true</AssemblyDebug>
|
||||
<ProgramDatabaseFile>$(OutDir)OCCTProxy_D3D.pdb</ProgramDatabaseFile>
|
||||
<SubSystem>Windows</SubSystem>
|
||||
<RandomizedBaseAddress>false</RandomizedBaseAddress>
|
||||
<DataExecutionPrevention>
|
||||
</DataExecutionPrevention>
|
||||
<ImportLibrary>$(OutDir)OCCTProxy_D3D.lib</ImportLibrary>
|
||||
<TargetMachine>MachineX64</TargetMachine>
|
||||
</Link>
|
||||
</ItemDefinitionGroup>
|
||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
|
||||
<ClCompile>
|
||||
<AdditionalIncludeDirectories>..\OCC\;$(CSF_OPT_INC);$(DXSDK_DIR)Include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
<PreprocessorDefinitions>WNT;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
|
||||
<PrecompiledHeader>
|
||||
</PrecompiledHeader>
|
||||
<WarningLevel>Level3</WarningLevel>
|
||||
<DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
|
||||
</ClCompile>
|
||||
<Link>
|
||||
<OutputFile>$(OutDir)OCCTProxy_D3D.dll</OutputFile>
|
||||
<AdditionalLibraryDirectories>$(CSF_OPT_LIB32);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
|
||||
<GenerateDebugInformation>true</GenerateDebugInformation>
|
||||
<SubSystem>Windows</SubSystem>
|
||||
<OptimizeReferences>true</OptimizeReferences>
|
||||
<EnableCOMDATFolding>true</EnableCOMDATFolding>
|
||||
<RandomizedBaseAddress>false</RandomizedBaseAddress>
|
||||
<DataExecutionPrevention>
|
||||
</DataExecutionPrevention>
|
||||
<ImportLibrary>$(OutDir)OCCTProxy_D3D.lib</ImportLibrary>
|
||||
<TargetMachine>MachineX86</TargetMachine>
|
||||
</Link>
|
||||
</ItemDefinitionGroup>
|
||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
|
||||
<Midl>
|
||||
<TargetEnvironment>X64</TargetEnvironment>
|
||||
</Midl>
|
||||
<ClCompile>
|
||||
<AdditionalIncludeDirectories>..\OCC\;$(CSF_OPT_INC);$(DXSDK_DIR)Include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
<PreprocessorDefinitions>WNT;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
|
||||
<PrecompiledHeader>
|
||||
</PrecompiledHeader>
|
||||
<WarningLevel>Level3</WarningLevel>
|
||||
<DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
|
||||
</ClCompile>
|
||||
<Link>
|
||||
<OutputFile>$(OutDir)OCCTProxy_D3D.dll</OutputFile>
|
||||
<AdditionalLibraryDirectories>$(CSF_OPT_LIB64);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
|
||||
<GenerateDebugInformation>true</GenerateDebugInformation>
|
||||
<SubSystem>Windows</SubSystem>
|
||||
<OptimizeReferences>true</OptimizeReferences>
|
||||
<EnableCOMDATFolding>true</EnableCOMDATFolding>
|
||||
<RandomizedBaseAddress>false</RandomizedBaseAddress>
|
||||
<DataExecutionPrevention>
|
||||
</DataExecutionPrevention>
|
||||
<ImportLibrary>$(OutDir)OCCTProxy_D3D.lib</ImportLibrary>
|
||||
<TargetMachine>MachineX64</TargetMachine>
|
||||
</Link>
|
||||
</ItemDefinitionGroup>
|
||||
<ItemGroup>
|
||||
<ClCompile Include="BridgeFBO.cxx" />
|
||||
<ClCompile Include="Direct3DProxy.cpp" />
|
||||
<ClCompile Include="OCCTProxyD3D.cpp" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ClInclude Include="BridgeFBO.hxx" />
|
||||
</ItemGroup>
|
||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
|
||||
<ImportGroup Label="ExtensionTargets">
|
||||
</ImportGroup>
|
||||
</Project>
|
@ -1,4 +1,4 @@
|
||||
OCCT CSharp sample {#samples_csharp}
|
||||
OCCT CSharp sample {#samples_csharp_occt}
|
||||
==================
|
||||
|
||||
This sample demonstrates simple way of using OCCT libraries in .Net application
|
||||
@ -14,7 +14,7 @@ The sample implements two approaches for organizing user interface with C#.
|
||||
Both applications provide the same functionality as the standard OCCT
|
||||
Import/Export sample.
|
||||
First project is called "IE_WinForms" and uses Windows Forms for GUI.
|
||||
Second application is called "IE_WPF" and uses Windows Presentation Foundation.
|
||||
Second application is called "IE_WPF_WinForms" and uses Windows Presentation Foundation.
|
||||
|
||||
Note a few important details:
|
||||
|
||||
@ -39,7 +39,7 @@ Note a few important details:
|
||||
control embedding OCCT viewer.
|
||||
|
||||
Run msvc.bat to start MS Visual Studio for building the sample.
|
||||
Note that project files are provided only for VS 2008, you can open them in
|
||||
Note that project files are provided only for VS 2010, you can open them in
|
||||
newer versions of Visual Studio using automatic converter.
|
||||
After conversion check option "Target framework" in properties of C# projects
|
||||
(tab "Application") to ensure that it corresponds to the version set in
|
||||
@ -51,4 +51,4 @@ Note that all batch scripts use configuration defined in OCCT custom.bat file
|
||||
as default; you can provide arguments specifying VS version, bitness, and mode
|
||||
to override these settings, e.g.:
|
||||
|
||||
> msvc.bat vc9 win64 Debug
|
||||
> msvc.bat vc10 win64 Debug
|
||||
|
56
samples/CSharp/ReadMe_D3D.md
Normal file
@ -0,0 +1,56 @@
|
||||
Direct3D CSharp sample {#samples_csharp_direct3d}
|
||||
==================
|
||||
|
||||
This sample demonstrates simple way of using OCCT and DirectX libraries in .Net application
|
||||
whitten using CSharp and Windows Presentation Foundation (WPF).
|
||||
|
||||
The connection between .Net, OCCT (C++) and DirectX level is provided by proxy libraies,
|
||||
OCCProxy and D3DProxy, written in C++/CLI. The proxy OCCProxy library contains single ref class
|
||||
encapsulating OCCT viewer and providing functionality to manipulate this viewer
|
||||
and to import / export OCCT shapes from / to several supported formats of CAD
|
||||
files (IGES, STEP, BREP). And the proxy D3DProxy library contains helper methods for rendering
|
||||
via DirectX.
|
||||
|
||||
Organizing of user interface in this sample is provided by Windows Presentation Foundation (WPF).
|
||||
And it has the same functionality as the standard OCCT Import/Export sample. The project is
|
||||
called "IE_WPF_D3D".
|
||||
|
||||
Note a few important details:
|
||||
|
||||
- to build this sample you should to download and install DirectX SDK
|
||||
http://www.microsoft.com/en-us/download/details.aspx?id=6812
|
||||
|
||||
- to encapsulate C++ class into a field of ref class, template class
|
||||
NCollection_Haft provided by OCCT is used
|
||||
|
||||
- in order to work consistently on 64-bit systems with OCCT libraries built in
|
||||
32-bit mode, C# assemblies need to have platform target explicitly set to "x86"
|
||||
(in project Properties / Build)
|
||||
|
||||
- this sample demonstrates indirect method of wrapping C++ to C# using manually
|
||||
created proxy library. Alternative method is available, wrapping individual
|
||||
OCCT classes to C# equivalents so that their full API is available to C# user
|
||||
and the code can be programmed on C# level similarly to C++ one. See desciption
|
||||
of OCCT C# Wrapper in Advanced Samples and Tools on OCCT web site at
|
||||
http://www.opencascade.org/support/products/advsamples
|
||||
|
||||
- in WPF sample, WinForms control is used to encapsulate OCC viewer since WPF
|
||||
does not provide necessary interface to embed OpenGl view. Other possible
|
||||
solution could be to render OpenGl scene in off-screen buffer and map it
|
||||
to WPF control as image. That approach would allow using all WPF features in
|
||||
control embedding OCCT viewer.
|
||||
|
||||
Run msvc.bat to start MS Visual Studio for building the sample.
|
||||
Note that project files are provided only for VS 2010, you can open them in
|
||||
newer versions of Visual Studio using automatic converter.
|
||||
After conversion check option "Target framework" in properties of C# projects
|
||||
(tab "Application") to ensure that it corresponds to the version set in
|
||||
the properties of the C++ projects (e.g. ".Net Framework 4.0" for VS 2010).
|
||||
|
||||
Run run_wpf-D3D.bat to launch the corresponding sample.
|
||||
|
||||
Note that all batch scripts use configuration defined in OCCT custom.bat file
|
||||
as default; you can provide arguments specifying VS version, bitness, and mode
|
||||
to override these settings, e.g.:
|
||||
|
||||
> msvc.bat vc10 win64 Debug
|
@ -1,9 +1,9 @@
|
||||
<Window
|
||||
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
|
||||
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
|
||||
x:Class="IE_WPF.AboutDialog"
|
||||
x:Class="IE_WPF_D3D.AboutDialog"
|
||||
x:Name="Window"
|
||||
xmlns:local="clr-namespace:IE_WPF"
|
||||
xmlns:local="clr-namespace:IE_WPF_D3D"
|
||||
Title="About Import/Export Sample"
|
||||
Width="312" Height="285">
|
||||
|
@ -10,7 +10,7 @@ using System.Windows.Media;
|
||||
using System.Windows.Media.Imaging;
|
||||
using System.Windows.Shapes;
|
||||
|
||||
namespace IE_WPF
|
||||
namespace IE_WPF_D3D
|
||||
{
|
||||
/// <summary>
|
||||
/// Interaction logic for About.xaml
|
@ -1,4 +1,4 @@
|
||||
<Application x:Class="IE_WPF.App"
|
||||
<Application x:Class="IE_WPF_D3D.App"
|
||||
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
|
||||
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
|
||||
StartupUri="MainWindow.xaml">
|
@ -5,7 +5,7 @@ using System.Data;
|
||||
using System.Linq;
|
||||
using System.Windows;
|
||||
|
||||
namespace IE_WPF
|
||||
namespace IE_WPF_D3D
|
||||
{
|
||||
/// <summary>
|
||||
/// Interaction logic for App.xaml
|
160
samples/CSharp/WPF_D3D/D3DViewer.cs
Normal file
@ -0,0 +1,160 @@
|
||||
using System;
|
||||
using System.Windows;
|
||||
using System.Windows.Media;
|
||||
using System.Windows.Interop;
|
||||
using System.Runtime.InteropServices;
|
||||
|
||||
namespace IE_WPF_D3D
|
||||
{
|
||||
/// <summary>
|
||||
/// Tool object for output OCCT rendering with Direct3D.
|
||||
/// </summary>
|
||||
class D3DViewer
|
||||
{
|
||||
/// <summary> Direct3D renderer. </summary>
|
||||
private IntPtr myD3DRender;
|
||||
|
||||
/// <summary> Direct3D output image. </summary>
|
||||
private D3DImage myD3DImage = new D3DImage ();
|
||||
|
||||
/// <summary> Direct3D color surface. </summary>
|
||||
private IntPtr myColorSurf;
|
||||
|
||||
public OCCViewer Viewer;
|
||||
|
||||
/// <summary> Creates new Direct3D-based OCCT viewer. </summary>
|
||||
public D3DViewer ()
|
||||
{
|
||||
myD3DImage.IsFrontBufferAvailableChanged
|
||||
+= new DependencyPropertyChangedEventHandler (OnIsFrontBufferAvailableChanged);
|
||||
|
||||
BeginRenderingScene ();
|
||||
}
|
||||
|
||||
/// <summary> Creates new Direct3D-based OCCT viewer. </summary>
|
||||
private void OnIsFrontBufferAvailableChanged (object sender, DependencyPropertyChangedEventArgs e)
|
||||
{
|
||||
// If the front buffer is available, then WPF has just created a new
|
||||
// Direct3D device, thus we need to start rendering our custom scene
|
||||
if (myD3DImage.IsFrontBufferAvailable)
|
||||
{
|
||||
BeginRenderingScene ();
|
||||
}
|
||||
else
|
||||
{
|
||||
// If the front buffer is no longer available, then WPF has lost Direct3D
|
||||
// device, thus we need to stop rendering until the new device is created
|
||||
StopRenderingScene ();
|
||||
}
|
||||
}
|
||||
|
||||
private bool myIsFailed = false;
|
||||
|
||||
/// <summary> Initializes Direct3D-OCCT rendering. </summary>
|
||||
private void BeginRenderingScene ()
|
||||
{
|
||||
if (myIsFailed)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
if (myD3DImage.IsFrontBufferAvailable)
|
||||
{
|
||||
IntPtr aWinHandle;
|
||||
IntPtr aD3DDevice;
|
||||
|
||||
// Initialize Direct3D device and render target
|
||||
myD3DRender = Direct3DProxy.InitRender(out aWinHandle, out aD3DDevice);
|
||||
|
||||
Viewer = new OCCViewer();
|
||||
|
||||
if (!Viewer.InitInterop (aWinHandle, aD3DDevice))
|
||||
{
|
||||
MessageBox.Show ("Failed to initialize OpenGL-Direct3D interoperability!",
|
||||
"Error", MessageBoxButton.OK, MessageBoxImage.Error);
|
||||
|
||||
myIsFailed = true;
|
||||
|
||||
if (myD3DRender != IntPtr.Zero)
|
||||
Direct3DProxy.ReleaseRender(ref myD3DRender);
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
// Leverage the Rendering event of WPF composition
|
||||
// target to update the our custom Direct3D scene
|
||||
CompositionTarget.Rendering += OnRendering;
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary> Initializes Direct3D-OCCT rendering. </summary>
|
||||
public void StopRenderingScene ()
|
||||
{
|
||||
// This method is called when WPF loses its Direct3D device,
|
||||
// so we should just release our custom Direct3D scene
|
||||
CompositionTarget.Rendering -= OnRendering;
|
||||
|
||||
if (myD3DRender != IntPtr.Zero)
|
||||
Direct3DProxy.ReleaseRender(ref myD3DRender);
|
||||
|
||||
myColorSurf = IntPtr.Zero;
|
||||
}
|
||||
|
||||
/// <summary> Initializes Direct3D-OCCT rendering. </summary>
|
||||
private void OnRendering (object sender, EventArgs e)
|
||||
{
|
||||
UpdateScene ();
|
||||
}
|
||||
|
||||
/// <summary> Current size of rendering window. </summary>
|
||||
private WndSize mySize = new WndSize(1, 1);
|
||||
|
||||
/// <summary> Initializes Direct3D-OCCT rendering. </summary>
|
||||
private void UpdateScene ()
|
||||
{
|
||||
if (!myIsFailed && myD3DImage.IsFrontBufferAvailable && myColorSurf != IntPtr.Zero)
|
||||
{
|
||||
myD3DImage.Lock ();
|
||||
{
|
||||
// Update the scene (via a call into our custom library)
|
||||
Viewer.View.RedrawView ();
|
||||
|
||||
// Invalidate the updated region of the D3DImage
|
||||
myD3DImage.AddDirtyRect(new Int32Rect(0, 0, mySize.cx, mySize.cy));
|
||||
}
|
||||
myD3DImage.Unlock ();
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary> Resizes Direct3D surfaces and OpenGL FBO. </summary>
|
||||
public void Resize (int theSizeX, int theSizeY)
|
||||
{
|
||||
mySize = new WndSize(theSizeX, theSizeY);
|
||||
|
||||
if (!myIsFailed && myD3DImage.IsFrontBufferAvailable)
|
||||
{
|
||||
IntPtr aColorSurfShare;
|
||||
|
||||
// Initialize Direct3D device and render target
|
||||
Direct3DProxy.ResizeWindow(ref myD3DRender, ref mySize, out myColorSurf, out aColorSurfShare);
|
||||
|
||||
// Set the back buffer for Direct3D WPF image
|
||||
myD3DImage.Lock ();
|
||||
{
|
||||
myD3DImage.SetBackBuffer (D3DResourceType.IDirect3DSurface9, myColorSurf);
|
||||
}
|
||||
myD3DImage.Unlock ();
|
||||
|
||||
Viewer.View.ResizeBridgeFBO(mySize.cx, mySize.cy, myColorSurf, aColorSurfShare);
|
||||
}
|
||||
}
|
||||
|
||||
public D3DImage Image
|
||||
{
|
||||
get
|
||||
{
|
||||
return myD3DImage;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
@ -4,7 +4,7 @@ using System.Linq;
|
||||
using System.Text;
|
||||
using System.Windows.Input;
|
||||
|
||||
namespace IE_WPF
|
||||
namespace IE_WPF_D3D
|
||||
{
|
||||
public class IECommands
|
||||
{
|
268
samples/CSharp/WPF_D3D/IE_WPF_D3D.csproj
Normal file
@ -0,0 +1,268 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||
<PropertyGroup>
|
||||
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
|
||||
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
|
||||
<ProductVersion>9.0.30729</ProductVersion>
|
||||
<SchemaVersion>2.0</SchemaVersion>
|
||||
<ProjectGuid>{D12A8897-5BF8-4345-BBB0-8ADE4B9FB9A7}</ProjectGuid>
|
||||
<OutputType>WinExe</OutputType>
|
||||
<AppDesignerFolder>Properties</AppDesignerFolder>
|
||||
<RootNamespace>IE_WPF_D3D</RootNamespace>
|
||||
<AssemblyName>IE_WPF_D3D</AssemblyName>
|
||||
<TargetFrameworkVersion>v4.0</TargetFrameworkVersion>
|
||||
<FileAlignment>512</FileAlignment>
|
||||
<ProjectTypeGuids>{60dc8134-eba5-43b8-bcc9-bb4bc16c2548};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</ProjectTypeGuids>
|
||||
<WarningLevel>4</WarningLevel>
|
||||
<ExpressionBlendVersion>3.0.1927.0</ExpressionBlendVersion>
|
||||
<FileUpgradeFlags>
|
||||
</FileUpgradeFlags>
|
||||
<OldToolsVersion>3.5</OldToolsVersion>
|
||||
<UpgradeBackupLocation />
|
||||
<TargetFrameworkProfile />
|
||||
<IsWebBootstrapper>false</IsWebBootstrapper>
|
||||
<PublishUrl>publish\</PublishUrl>
|
||||
<Install>true</Install>
|
||||
<InstallFrom>Disk</InstallFrom>
|
||||
<UpdateEnabled>false</UpdateEnabled>
|
||||
<UpdateMode>Foreground</UpdateMode>
|
||||
<UpdateInterval>7</UpdateInterval>
|
||||
<UpdateIntervalUnits>Days</UpdateIntervalUnits>
|
||||
<UpdatePeriodically>false</UpdatePeriodically>
|
||||
<UpdateRequired>false</UpdateRequired>
|
||||
<MapFileExtensions>true</MapFileExtensions>
|
||||
<ApplicationRevision>0</ApplicationRevision>
|
||||
<ApplicationVersion>1.0.0.%2a</ApplicationVersion>
|
||||
<UseApplicationTrust>false</UseApplicationTrust>
|
||||
<BootstrapperEnabled>true</BootstrapperEnabled>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
|
||||
<DebugSymbols>true</DebugSymbols>
|
||||
<DebugType>full</DebugType>
|
||||
<Optimize>false</Optimize>
|
||||
<OutputPath>bin\Debug\</OutputPath>
|
||||
<DefineConstants>DEBUG;TRACE</DefineConstants>
|
||||
<ErrorReport>prompt</ErrorReport>
|
||||
<WarningLevel>4</WarningLevel>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
|
||||
<DebugType>pdbonly</DebugType>
|
||||
<Optimize>true</Optimize>
|
||||
<OutputPath>bin\Release\</OutputPath>
|
||||
<DefineConstants>TRACE</DefineConstants>
|
||||
<ErrorReport>prompt</ErrorReport>
|
||||
<WarningLevel>4</WarningLevel>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|x86' ">
|
||||
<DebugSymbols>true</DebugSymbols>
|
||||
<OutputPath>..\win32\bind\</OutputPath>
|
||||
<DefineConstants>DEBUG;TRACE</DefineConstants>
|
||||
<DebugType>full</DebugType>
|
||||
<PlatformTarget>x86</PlatformTarget>
|
||||
<ErrorReport>prompt</ErrorReport>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|x86' ">
|
||||
<OutputPath>..\win32\bin\</OutputPath>
|
||||
<DefineConstants>TRACE</DefineConstants>
|
||||
<Optimize>true</Optimize>
|
||||
<DebugType>pdbonly</DebugType>
|
||||
<PlatformTarget>x86</PlatformTarget>
|
||||
<ErrorReport>prompt</ErrorReport>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|x64' ">
|
||||
<DebugSymbols>true</DebugSymbols>
|
||||
<OutputPath>..\win64\bind\</OutputPath>
|
||||
<DefineConstants>DEBUG;TRACE</DefineConstants>
|
||||
<DebugType>full</DebugType>
|
||||
<PlatformTarget>x64</PlatformTarget>
|
||||
<ErrorReport>prompt</ErrorReport>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|x64' ">
|
||||
<OutputPath>..\win64\bin\</OutputPath>
|
||||
<DefineConstants>TRACE</DefineConstants>
|
||||
<Optimize>true</Optimize>
|
||||
<DebugType>pdbonly</DebugType>
|
||||
<PlatformTarget>x64</PlatformTarget>
|
||||
<ErrorReport>prompt</ErrorReport>
|
||||
</PropertyGroup>
|
||||
<ItemGroup>
|
||||
<Reference Include="System" />
|
||||
<Reference Include="System.Core">
|
||||
<RequiredTargetFramework>3.5</RequiredTargetFramework>
|
||||
</Reference>
|
||||
<Reference Include="System.Drawing" />
|
||||
<Reference Include="System.Windows.Forms" />
|
||||
<Reference Include="System.Xaml" />
|
||||
<Reference Include="System.Xml.Linq">
|
||||
<RequiredTargetFramework>3.5</RequiredTargetFramework>
|
||||
</Reference>
|
||||
<Reference Include="System.Data.DataSetExtensions">
|
||||
<RequiredTargetFramework>3.5</RequiredTargetFramework>
|
||||
</Reference>
|
||||
<Reference Include="System.Data" />
|
||||
<Reference Include="System.Xml" />
|
||||
<Reference Include="UIAutomationProvider">
|
||||
<RequiredTargetFramework>3.0</RequiredTargetFramework>
|
||||
</Reference>
|
||||
<Reference Include="WindowsBase">
|
||||
<RequiredTargetFramework>3.0</RequiredTargetFramework>
|
||||
</Reference>
|
||||
<Reference Include="PresentationCore">
|
||||
<RequiredTargetFramework>3.0</RequiredTargetFramework>
|
||||
</Reference>
|
||||
<Reference Include="PresentationFramework">
|
||||
<RequiredTargetFramework>3.0</RequiredTargetFramework>
|
||||
</Reference>
|
||||
<Reference Include="WindowsFormsIntegration">
|
||||
<RequiredTargetFramework>3.0</RequiredTargetFramework>
|
||||
</Reference>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ApplicationDefinition Include="App.xaml">
|
||||
<Generator>MSBuild:Compile</Generator>
|
||||
<SubType>Designer</SubType>
|
||||
<Generator>MSBuild:Compile</Generator>
|
||||
<SubType>Designer</SubType>
|
||||
</ApplicationDefinition>
|
||||
<Page Include="About.xaml">
|
||||
<Generator>MSBuild:Compile</Generator>
|
||||
<SubType>Designer</SubType>
|
||||
<Generator>MSBuild:Compile</Generator>
|
||||
<SubType>Designer</SubType>
|
||||
</Page>
|
||||
<Page Include="MaterialDlg.xaml">
|
||||
<Generator>MSBuild:Compile</Generator>
|
||||
<SubType>Designer</SubType>
|
||||
<Generator>MSBuild:Compile</Generator>
|
||||
<SubType>Designer</SubType>
|
||||
</Page>
|
||||
<Page Include="Simple Styles.xaml">
|
||||
<Generator>MSBuild:Compile</Generator>
|
||||
<SubType>Designer</SubType>
|
||||
<Generator>MSBuild:Compile</Generator>
|
||||
<SubType>Designer</SubType>
|
||||
</Page>
|
||||
<Page Include="MainWindow.xaml">
|
||||
<Generator>MSBuild:Compile</Generator>
|
||||
<SubType>Designer</SubType>
|
||||
<Generator>MSBuild:Compile</Generator>
|
||||
<SubType>Designer</SubType>
|
||||
</Page>
|
||||
<Compile Include="App.xaml.cs">
|
||||
<DependentUpon>App.xaml</DependentUpon>
|
||||
<SubType>Code</SubType>
|
||||
</Compile>
|
||||
<Compile Include="MainWindow.xaml.cs">
|
||||
<DependentUpon>MainWindow.xaml</DependentUpon>
|
||||
<SubType>Code</SubType>
|
||||
</Compile>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<Compile Include="About.xaml.cs">
|
||||
<DependentUpon>About.xaml</DependentUpon>
|
||||
</Compile>
|
||||
<Compile Include="D3DViewer.cs" />
|
||||
<Compile Include="IECommands.cs" />
|
||||
<Compile Include="MaterialDlg.xaml.cs">
|
||||
<DependentUpon>MaterialDlg.xaml</DependentUpon>
|
||||
</Compile>
|
||||
<Compile Include="Properties\AssemblyInfo.cs">
|
||||
<SubType>Code</SubType>
|
||||
</Compile>
|
||||
<Compile Include="Properties\Resources.Designer.cs">
|
||||
<AutoGen>True</AutoGen>
|
||||
<DesignTime>True</DesignTime>
|
||||
<DependentUpon>Resources.resx</DependentUpon>
|
||||
</Compile>
|
||||
<Compile Include="Properties\Settings.Designer.cs">
|
||||
<AutoGen>True</AutoGen>
|
||||
<DependentUpon>Settings.settings</DependentUpon>
|
||||
<DesignTimeSharedInput>True</DesignTimeSharedInput>
|
||||
</Compile>
|
||||
<Compile Include="OCCViewer.cs">
|
||||
</Compile>
|
||||
<Compile Include="TransparencyDialog.cs">
|
||||
<SubType>Form</SubType>
|
||||
</Compile>
|
||||
<EmbeddedResource Include="Properties\Resources.resx">
|
||||
<Generator>ResXFileCodeGenerator</Generator>
|
||||
<LastGenOutput>Resources.Designer.cs</LastGenOutput>
|
||||
</EmbeddedResource>
|
||||
<EmbeddedResource Include="TransparencyDialog.resx">
|
||||
<DependentUpon>TransparencyDialog.cs</DependentUpon>
|
||||
</EmbeddedResource>
|
||||
<None Include="app.config" />
|
||||
<None Include="Properties\Settings.settings">
|
||||
<Generator>SettingsSingleFileGenerator</Generator>
|
||||
<LastGenOutput>Settings.Designer.cs</LastGenOutput>
|
||||
</None>
|
||||
<AppDesigner Include="Properties\" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<Resource Include="res\help.png" />
|
||||
<Resource Include="res\lamp.png" />
|
||||
<Resource Include="res\MainFrame.ico" />
|
||||
<Resource Include="res\new.png" />
|
||||
<Resource Include="res\tool_color.png" />
|
||||
<Resource Include="res\tool_delete.png" />
|
||||
<Resource Include="res\tool_material.png" />
|
||||
<Resource Include="res\tool_shading.png" />
|
||||
<Resource Include="res\tool_transparency.png" />
|
||||
<Resource Include="res\tool_wireframe.png" />
|
||||
<Resource Include="res\view_axo.png" />
|
||||
<Resource Include="res\view_back.png" />
|
||||
<Resource Include="res\view_bottom.png" />
|
||||
<Resource Include="res\view_comp_off.png" />
|
||||
<Resource Include="res\view_comp_on.png" />
|
||||
<Resource Include="res\view_fitall.png" />
|
||||
<Resource Include="res\view_fitarea.png" />
|
||||
<Resource Include="res\view_front.png" />
|
||||
<Resource Include="res\view_glpan.png" />
|
||||
<Resource Include="res\view_left.png" />
|
||||
<Resource Include="res\view_pan.png" />
|
||||
<Resource Include="res\view_reset.png" />
|
||||
<Resource Include="res\view_right.png" />
|
||||
<Resource Include="res\view_rotate.png" />
|
||||
<Resource Include="res\view_top.png" />
|
||||
<Resource Include="res\view_zoom.png" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<Resource Include="res\occ_logo.bmp" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<BootstrapperPackage Include=".NETFramework,Version=v4.0">
|
||||
<Visible>False</Visible>
|
||||
<ProductName>Microsoft .NET Framework 4 %28x86 and x64%29</ProductName>
|
||||
<Install>true</Install>
|
||||
</BootstrapperPackage>
|
||||
<BootstrapperPackage Include="Microsoft.Net.Client.3.5">
|
||||
<Visible>False</Visible>
|
||||
<ProductName>.NET Framework 3.5 SP1 Client Profile</ProductName>
|
||||
<Install>false</Install>
|
||||
</BootstrapperPackage>
|
||||
<BootstrapperPackage Include="Microsoft.Net.Framework.3.5.SP1">
|
||||
<Visible>False</Visible>
|
||||
<ProductName>.NET Framework 3.5 SP1</ProductName>
|
||||
<Install>false</Install>
|
||||
</BootstrapperPackage>
|
||||
<BootstrapperPackage Include="Microsoft.Windows.Installer.3.1">
|
||||
<Visible>False</Visible>
|
||||
<ProductName>Windows Installer 3.1</ProductName>
|
||||
<Install>true</Install>
|
||||
</BootstrapperPackage>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ProjectReference Include="..\OCCTProxy_D3D\OCCTProxy_D3D.vcxproj">
|
||||
<Project>{969912D9-78E7-4AB8-B4FF-6B52B4F03991}</Project>
|
||||
<Name>OCCTProxy_D3D</Name>
|
||||
</ProjectReference>
|
||||
</ItemGroup>
|
||||
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
|
||||
<!-- To modify your build process, add your task inside one of the targets below and uncomment it.
|
||||
Other similar extension points exist, see Microsoft.Common.targets.
|
||||
<Target Name="BeforeBuild">
|
||||
</Target>
|
||||
<Target Name="AfterBuild">
|
||||
</Target>
|
||||
-->
|
||||
</Project>
|
177
samples/CSharp/WPF_D3D/MainWindow.xaml
Normal file
@ -0,0 +1,177 @@
|
||||
<Window
|
||||
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
|
||||
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
|
||||
x:Class="IE_WPF_D3D.MainWindow"
|
||||
xmlns:local="clr-namespace:IE_WPF_D3D"
|
||||
Title="Sample Import/Export" Height="600" Width="900" Icon="res/MainFrame.ico">
|
||||
|
||||
<Window.Background>
|
||||
<SolidColorBrush Color="{DynamicResource {x:Static SystemColors.ControlDarkColorKey}}"/>
|
||||
</Window.Background>
|
||||
|
||||
<Window.Resources>
|
||||
<BooleanToVisibilityConverter x:Key="boolToVisibilityConverter"/>
|
||||
</Window.Resources>
|
||||
|
||||
<Grid>
|
||||
<Grid.RowDefinitions>
|
||||
<RowDefinition Height="auto"/>
|
||||
<RowDefinition Height="auto"/>
|
||||
<RowDefinition />
|
||||
<RowDefinition Height="auto"/>
|
||||
</Grid.RowDefinitions>
|
||||
|
||||
<Menu Height="25" Grid.Row="0">
|
||||
<MenuItem Header="File">
|
||||
<MenuItem Command="local:IECommands.New"/>
|
||||
<MenuItem Command="local:IECommands.Close"/>
|
||||
<MenuItem Header="Import" IsEnabled="{Binding RelativeSource={RelativeSource Mode=FindAncestor, AncestorType={x:Type Window}}, Path=IsDocumentOpen}">
|
||||
<MenuItem Name="ImportBrep" Header="BRep..." Click="ImportBRep_Click"/>
|
||||
<MenuItem Name="ImportIges" Header="Iges..." Click="ImportIges_Click"/>
|
||||
<MenuItem Name="ImportStep" Header="Step..." Click="ImportStep_Click"/>
|
||||
</MenuItem>
|
||||
<MenuItem Header="Export" IsEnabled="{Binding RelativeSource={RelativeSource Mode=FindAncestor, AncestorType={x:Type Window}}, Path=IsDocumentOpen}">
|
||||
<MenuItem Name="ExportBrep" Header="BRep..." Click="ExportBRep_Click"/>
|
||||
<MenuItem Name="ExportIges" Header="Iges..." Click="ExportIges_Click"/>
|
||||
<MenuItem Name="ExportStep" Header="Step..." Click="ExportStep_Click"/>
|
||||
<MenuItem Name="ExportStl" Header="Stl..." Click="ExportStl_Click"/>
|
||||
<MenuItem Name="ExportVrml" Header="Vrml..." Click="ExportVrml_Click"/>
|
||||
<Separator/>
|
||||
<MenuItem Name="ExportImage" Header="Image..." Click="ExportImage_Click"/>
|
||||
</MenuItem>
|
||||
<Separator/>
|
||||
<MenuItem Command="local:IECommands.Quit"/>
|
||||
</MenuItem>
|
||||
<MenuItem Header="View">
|
||||
<MenuItem Name="ActivateToolbar" IsCheckable="True" IsChecked="True" Header="Toolbar"/>
|
||||
<MenuItem Name="ActivateStatusbar" IsCheckable="True" IsChecked="True" Header="Statusbar"/>
|
||||
</MenuItem>
|
||||
<MenuItem Header="Help">
|
||||
<MenuItem Header="About" Command="local:IECommands.About"/>
|
||||
</MenuItem>
|
||||
</Menu>
|
||||
|
||||
<ToolBarTray Background="White" Grid.Row="1">
|
||||
<ToolBar Name="ToolBar" Band="1" BandIndex="1"
|
||||
Visibility="{Binding ElementName=ActivateToolbar, Path=IsChecked, Converter={StaticResource boolToVisibilityConverter}}"
|
||||
MouseEnter="ToolBar_MouseEnter" MouseLeave="ToolBar_MouseLeave">
|
||||
<Button ToolTip="New" Command="local:IECommands.New">
|
||||
<Image Source="res/new.png" Style="{StaticResource toolbarImageStyle}"/>
|
||||
</Button>
|
||||
<Button ToolTip="About" Command="local:IECommands.About">
|
||||
<Image Source="res/help.png" Style="{StaticResource toolbarImageStyle}"/>
|
||||
</Button>
|
||||
</ToolBar>
|
||||
<ToolBar Name="DocumentToolBar" Band="1" BandIndex="2"
|
||||
Visibility="{Binding ElementName=ActivateToolbar, Path=IsChecked, Converter={StaticResource boolToVisibilityConverter}}"
|
||||
IsEnabled="{Binding RelativeSource={RelativeSource Mode=FindAncestor, AncestorType={x:Type Window}}, Path=IsDocumentOpen}"
|
||||
MouseEnter="DocumentToolBar_MouseEnter" MouseLeave="ToolBar_MouseLeave">
|
||||
<Button ToolTip="Wireframe" Click="Wireframe_Click"
|
||||
IsEnabled="{Binding RelativeSource={RelativeSource Mode=FindAncestor, AncestorType={x:Type Window}}, Path=IsWireframeEnabled}">
|
||||
<Image Source="res/tool_wireframe.png" Style="{StaticResource toolbarImageStyle}"/>
|
||||
</Button>
|
||||
<Button ToolTip="Shading" Click="Shading_Click"
|
||||
IsEnabled="{Binding RelativeSource={RelativeSource Mode=FindAncestor, AncestorType={x:Type Window}}, Path=IsShadingEnabled}">
|
||||
<Image Source="res/tool_shading.png" Style="{StaticResource toolbarImageStyle}"/>
|
||||
</Button>
|
||||
<Button ToolTip="Color" Click="Color_Click"
|
||||
IsEnabled="{Binding RelativeSource={RelativeSource Mode=FindAncestor, AncestorType={x:Type Window}}, Path=IsColorEnabled}">
|
||||
<Image Source="res/tool_color.png" Style="{StaticResource toolbarImageStyle}"/>
|
||||
</Button>
|
||||
<Button ToolTip="Material" Click="Material_Click"
|
||||
IsEnabled="{Binding RelativeSource={RelativeSource Mode=FindAncestor, AncestorType={x:Type Window}}, Path=IsMaterialEnabled}">
|
||||
<Image Source="res/tool_material.png" Style="{StaticResource toolbarImageStyle}"/>
|
||||
</Button>
|
||||
<Button ToolTip="Transparency" Click="Transparency_Click"
|
||||
IsEnabled="{Binding RelativeSource={RelativeSource Mode=FindAncestor, AncestorType={x:Type Window}}, Path=IsTransparencyEnabled}">
|
||||
<Image Source="res/tool_transparency.png" Style="{StaticResource toolbarImageStyle}"/>
|
||||
</Button>
|
||||
<Button ToolTip="Delete" Click="Delete_Click"
|
||||
IsEnabled="{Binding RelativeSource={RelativeSource Mode=FindAncestor, AncestorType={x:Type Window}}, Path=IsDeleteEnabled}">
|
||||
<Image Source="res/tool_delete.png" Style="{StaticResource toolbarImageStyle}"/>
|
||||
</Button>
|
||||
</ToolBar>
|
||||
<ToolBar Name="ViewToolBar" Band="1" BandIndex="1"
|
||||
Visibility="{Binding ElementName=ActivateToolbar, Path=IsChecked, Converter={StaticResource boolToVisibilityConverter}}"
|
||||
IsEnabled="{Binding RelativeSource={RelativeSource Mode=FindAncestor, AncestorType={x:Type Window}}, Path=IsDocumentOpen}"
|
||||
MouseEnter="ViewToolBar_MouseEnter" MouseLeave="ToolBar_MouseLeave">
|
||||
<Button ToolTip="FitAll" Name="FitAllBtn" Click="FitAllBtn_Click">
|
||||
<Image Source="res/view_fitall.png" Style="{StaticResource toolbarImageStyle}"/>
|
||||
</Button>
|
||||
<Button ToolTip="Zoom Window" Name="ZoomWindowBtn" Click="ZoomWindowBtn_Click"
|
||||
IsEnabled="{Binding RelativeSource={RelativeSource Mode=FindAncestor, AncestorType={x:Type Window}}, Path=IsZoomWinEnabled}">
|
||||
<Image Source="res/view_fitarea.png" Style="{StaticResource toolbarImageStyle}"/>
|
||||
</Button>
|
||||
<Button ToolTip="Dynamic Zooming" Name="DynamicZoomingBtn" Click="DynamicZoomingBtn_Click">
|
||||
<Image Source="res/view_zoom.png" Style="{StaticResource toolbarImageStyle}"/>
|
||||
</Button>
|
||||
<Button ToolTip="Dynamic Panning" Name="DynamicPanningBtn" Click="DynamicPanningBtn_Click">
|
||||
<Image Source="res/view_pan.png" Style="{StaticResource toolbarImageStyle}"/>
|
||||
</Button>
|
||||
<Button ToolTip="Global Panning" Name="GlobalPanningBtn" Click="GlobalPanningBtn_Click">
|
||||
<Image Source="res/view_glpan.png" Style="{StaticResource toolbarImageStyle}"/>
|
||||
</Button>
|
||||
<Button ToolTip="Front" Name="FrontBtn" Click="FrontBtn_Click">
|
||||
<Image Source="res/view_front.png" Style="{StaticResource toolbarImageStyle}"/>
|
||||
</Button>
|
||||
<Button ToolTip="Back" Name="BackBtn" Click="BackBtn_Click">
|
||||
<Image Source="res/view_back.png" Style="{StaticResource toolbarImageStyle}"/>
|
||||
</Button>
|
||||
<Button ToolTip="Top" Name="TopBtn" Click="TopBtn_Click">
|
||||
<Image Source="res/view_top.png" Style="{StaticResource toolbarImageStyle}"/>
|
||||
</Button>
|
||||
<Button ToolTip="Bottom" Name="BottomBtn" Click="BottomBtn_Click">
|
||||
<Image Source="res/view_bottom.png" Style="{StaticResource toolbarImageStyle}"/>
|
||||
</Button>
|
||||
<Button ToolTip="Left" Name="LeftBtn" Click="LeftBtn_Click">
|
||||
<Image Source="res/view_left.png" Style="{StaticResource toolbarImageStyle}"/>
|
||||
</Button>
|
||||
<Button ToolTip="Right" Name="RightBtn" Click="RightBtn_Click">
|
||||
<Image Source="res/view_right.png" Style="{StaticResource toolbarImageStyle}"/>
|
||||
</Button>
|
||||
<Button ToolTip="Axo" Name="AxoBtn" Click="AxoBtn_Click">
|
||||
<Image Source="res/view_axo.png" Style="{StaticResource toolbarImageStyle}"/>
|
||||
</Button>
|
||||
<Button ToolTip="Dynamic Rotation" Name="DynamicRotationBtn" Click="DynamicRotationBtn_Click">
|
||||
<Image Source="res/view_rotate.png" Style="{StaticResource toolbarImageStyle}"/>
|
||||
</Button>
|
||||
<Button ToolTip="Reset" Name="ResetBtn" Click="ResetBtn_Click">
|
||||
<Image Source="res/view_reset.png" Style="{StaticResource toolbarImageStyle}"/>
|
||||
</Button>
|
||||
<Button ToolTip="Hidden Off" Name="HiddenOffBtn" Click="HiddenOffBtn_Click"
|
||||
IsEnabled="{Binding RelativeSource={RelativeSource Mode=FindAncestor, AncestorType={x:Type Window}}, Path=IsHlrOnPushed}">
|
||||
<Image Source="vres/iew_comp_on.png" Style="{StaticResource toolbarImageStyle}"/>
|
||||
</Button>
|
||||
<Button ToolTip="Hidden On" Name="HiddenOnBtn" Click="HiddenOnBtn_Click"
|
||||
IsEnabled="{Binding RelativeSource={RelativeSource Mode=FindAncestor, AncestorType={x:Type Window}}, Path=IsHlrOffPushed}">
|
||||
<Image Source="res/view_comp_off.png" Style="{StaticResource toolbarImageStyle}"/>
|
||||
</Button>
|
||||
</ToolBar>
|
||||
</ToolBarTray>
|
||||
|
||||
<TabControl Name="ViewPanel" Grid.Row="2"
|
||||
SelectionChanged="OnViewerChanged"
|
||||
Visibility="{Binding RelativeSource={RelativeSource Mode=FindAncestor, AncestorType={x:Type Window}}, Path=IsDocumentOpen, Converter={StaticResource boolToVisibilityConverter}}">
|
||||
|
||||
<TabControl.ContextMenu>
|
||||
<ContextMenu Opened="OnContextOpened">
|
||||
<MenuItem Name="WireframeItem" Header="Wireframe" Click="Wireframe_Click" Style="{StaticResource popupItem}"/>
|
||||
<MenuItem Name="ShadingItem" Header="Shading" Click="Shading_Click" Style="{StaticResource popupItem}"/>
|
||||
<MenuItem Name="ColorItem" Header="Color" Click="Color_Click" Style="{StaticResource popupItem}"/>
|
||||
<MenuItem Name="MaterialItem" Header="Material" Click="Material_Click" Style="{StaticResource popupItem}"/>
|
||||
<MenuItem Name="TransparencyItem" Header="Transparency" Click="Transparency_Click" Style="{StaticResource popupItem}"/>
|
||||
<MenuItem Name="DeleteItem" Header="Delete" Click="Delete_Click" Style="{StaticResource popupItem}"/>
|
||||
<MenuItem Name="BackgroundItem" Header="Background" Click="Background_Click" Style="{StaticResource popupItem}"/>
|
||||
<Separator/>
|
||||
<MenuItem Command="local:IECommands.New" Style="{StaticResource popupItem}"/>
|
||||
<MenuItem Command="local:IECommands.Close" Style="{StaticResource popupItem}"/>
|
||||
</ContextMenu>
|
||||
</TabControl.ContextMenu>
|
||||
|
||||
</TabControl>
|
||||
|
||||
<StatusBar Background="White" Grid.Row="3" Visibility="{Binding ElementName=ActivateStatusbar, Path=IsChecked, Converter={StaticResource boolToVisibilityConverter}}">
|
||||
<TextBlock Text="{Binding RelativeSource={RelativeSource Mode=FindAncestor, AncestorType={x:Type Window}}, Path=StatusBarText}"/>
|
||||
</StatusBar>
|
||||
</Grid>
|
||||
</Window>
|
695
samples/CSharp/WPF_D3D/MainWindow.xaml.cs
Normal file
@ -0,0 +1,695 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Windows;
|
||||
using System.Windows.Controls;
|
||||
using System.Windows.Data;
|
||||
using System.Windows.Documents;
|
||||
using System.Windows.Input;
|
||||
using System.Windows.Media;
|
||||
using System.Windows.Media.Imaging;
|
||||
using System.Windows.Navigation;
|
||||
using System.Windows.Shapes;
|
||||
using System.ComponentModel;
|
||||
using System.Windows.Forms.Integration;
|
||||
using System.Windows.Interop;
|
||||
using System.Runtime.InteropServices;
|
||||
|
||||
namespace IE_WPF_D3D
|
||||
{
|
||||
/// <summary>
|
||||
/// Interaction logic for MainWindow.xaml
|
||||
/// </summary>
|
||||
public partial class MainWindow : Window, INotifyPropertyChanged
|
||||
{
|
||||
public event PropertyChangedEventHandler PropertyChanged;
|
||||
protected void RaisePropertyChanged (string thePropertyName)
|
||||
{
|
||||
if (PropertyChanged != null)
|
||||
{
|
||||
PropertyChanged (this, new PropertyChangedEventArgs (thePropertyName));
|
||||
}
|
||||
}
|
||||
|
||||
public MainWindow ()
|
||||
{
|
||||
InitializeComponent ();
|
||||
|
||||
StatusBarText = String.Empty;
|
||||
IsHlrOffPushed = false;
|
||||
IsHlrOnPushed = true;
|
||||
IsZoomWinEnabled = true;
|
||||
|
||||
#region menu operations
|
||||
|
||||
CommandBinding aBind_New = new CommandBinding (IECommands.New);
|
||||
aBind_New.Executed += NewCommand_Executed;
|
||||
CommandBindings.Add (aBind_New);
|
||||
|
||||
CommandBinding aBind_Close = new CommandBinding (IECommands.Close);
|
||||
aBind_Close.Executed += CloseCommand_Executed;
|
||||
aBind_Close.CanExecute += CloseCommand_CanExecute;
|
||||
CommandBindings.Add (aBind_Close);
|
||||
|
||||
CommandBinding aBind_Quit = new CommandBinding (IECommands.Quit);
|
||||
aBind_Quit.Executed += QuitCommand_Executed;
|
||||
CommandBindings.Add (aBind_Quit);
|
||||
|
||||
CommandBinding aBind_About = new CommandBinding (IECommands.About);
|
||||
aBind_About.Executed += AboutCommand_Executed;
|
||||
CommandBindings.Add (aBind_About);
|
||||
|
||||
#endregion
|
||||
}
|
||||
|
||||
private String myStatusBarText;
|
||||
public String StatusBarText
|
||||
{
|
||||
get
|
||||
{
|
||||
return myStatusBarText;
|
||||
}
|
||||
private set
|
||||
{
|
||||
myStatusBarText = value;
|
||||
RaisePropertyChanged ("StatusBarText");
|
||||
}
|
||||
}
|
||||
|
||||
private bool isHlrOffPushed;
|
||||
public Boolean IsHlrOffPushed
|
||||
{
|
||||
get
|
||||
{
|
||||
return isHlrOffPushed;
|
||||
}
|
||||
set
|
||||
{
|
||||
isHlrOffPushed = value;
|
||||
RaisePropertyChanged ("isHlrOffPushed");
|
||||
}
|
||||
}
|
||||
|
||||
private bool isHlrOnPushed;
|
||||
public Boolean IsHlrOnPushed
|
||||
{
|
||||
get
|
||||
{
|
||||
return isHlrOnPushed;
|
||||
}
|
||||
set
|
||||
{
|
||||
isHlrOnPushed = value;
|
||||
RaisePropertyChanged ("IsHlrOnPushed");
|
||||
}
|
||||
}
|
||||
|
||||
private bool isZoomWinEnabled;
|
||||
public Boolean IsZoomWinEnabled
|
||||
{
|
||||
get
|
||||
{
|
||||
return isZoomWinEnabled;
|
||||
}
|
||||
set
|
||||
{
|
||||
isZoomWinEnabled = value;
|
||||
RaisePropertyChanged ("IsZoomWinEnabled");
|
||||
}
|
||||
}
|
||||
|
||||
private OCCViewer ActiveViewer
|
||||
{
|
||||
get
|
||||
{
|
||||
if (!IsDocumentOpen)
|
||||
{
|
||||
return null;
|
||||
}
|
||||
|
||||
Grid aGrid = (ViewPanel.SelectedContent) as Grid;
|
||||
|
||||
if (aGrid == null)
|
||||
{
|
||||
return null;
|
||||
}
|
||||
|
||||
return Map[aGrid].Viewer;
|
||||
}
|
||||
}
|
||||
|
||||
public Boolean IsDocumentOpen
|
||||
{
|
||||
get
|
||||
{
|
||||
return ViewPanel.Items.Count > 0;
|
||||
}
|
||||
}
|
||||
|
||||
private int myDocumentCounter = 1;
|
||||
|
||||
Dictionary<Grid, D3DViewer> Map = new Dictionary<Grid, D3DViewer> ();
|
||||
|
||||
private void NewCommand_Executed (object sender, ExecutedRoutedEventArgs e)
|
||||
{
|
||||
D3DViewer aViwer = new D3DViewer ();
|
||||
|
||||
Grid g = new Grid ();
|
||||
|
||||
Map.Add (g, aViwer);
|
||||
|
||||
ImageBrush anImage = new ImageBrush (aViwer.Image);
|
||||
|
||||
anImage.RelativeTransform = new ScaleTransform (1.0, -1.0, 0.5, 0.5);
|
||||
|
||||
g.Background = anImage;
|
||||
g.MouseMove += new MouseEventHandler (g_MouseMove);
|
||||
g.MouseDown += new MouseButtonEventHandler (g_MouseDown);
|
||||
g.MouseUp += new MouseButtonEventHandler (g_MouseUp);
|
||||
|
||||
g.HorizontalAlignment = System.Windows.HorizontalAlignment.Stretch;
|
||||
|
||||
|
||||
TabItem aNewTab = new TabItem ();
|
||||
aNewTab.Content = g;
|
||||
|
||||
aNewTab.HorizontalAlignment = System.Windows.HorizontalAlignment.Stretch;
|
||||
aNewTab.HorizontalContentAlignment = System.Windows.HorizontalAlignment.Stretch;
|
||||
aNewTab.VerticalContentAlignment = System.Windows.VerticalAlignment.Stretch;
|
||||
|
||||
g.SizeChanged += new SizeChangedEventHandler (g_SizeChanged);
|
||||
|
||||
aNewTab.IsSelected = true;
|
||||
aNewTab.Header = "Document " + myDocumentCounter.ToString ();
|
||||
myDocumentCounter++;
|
||||
|
||||
ViewPanel.Items.Add (aNewTab);
|
||||
|
||||
ViewPanel.Focus ();
|
||||
|
||||
// update XAML property
|
||||
RaisePropertyChanged ("IsDocumentOpen");
|
||||
}
|
||||
|
||||
void g_SizeChanged (object sender, SizeChangedEventArgs e)
|
||||
{
|
||||
if (!IsDocumentOpen)
|
||||
return;
|
||||
|
||||
Grid aGrid = (ViewPanel.SelectedContent) as Grid;
|
||||
|
||||
if (aGrid == null)
|
||||
return;
|
||||
|
||||
Map[aGrid].Resize (Convert.ToInt32 (e.NewSize.Width),
|
||||
Convert.ToInt32 (e.NewSize.Height));
|
||||
}
|
||||
|
||||
void g_MouseUp (object sender, MouseButtonEventArgs e)
|
||||
{
|
||||
Grid aGrid = (ViewPanel.SelectedContent) as Grid;
|
||||
|
||||
if (aGrid != null)
|
||||
{
|
||||
ActiveViewer.OnMouseUp(aGrid, e);
|
||||
}
|
||||
}
|
||||
|
||||
void g_MouseDown (object sender, MouseButtonEventArgs e)
|
||||
{
|
||||
Grid aGrid = (ViewPanel.SelectedContent) as Grid;
|
||||
|
||||
if (aGrid != null)
|
||||
{
|
||||
ActiveViewer.OnMouseDown(ViewPanel, e);
|
||||
}
|
||||
}
|
||||
|
||||
void g_MouseMove (object sender, MouseEventArgs e)
|
||||
{
|
||||
Grid aGrid = (ViewPanel.SelectedContent) as Grid;
|
||||
|
||||
if (aGrid != null)
|
||||
{
|
||||
ActiveViewer.OnMouseMove (aGrid, e);
|
||||
}
|
||||
}
|
||||
|
||||
private void CloseCommand_Executed (object sender, ExecutedRoutedEventArgs e)
|
||||
{
|
||||
if (ViewPanel.Items.Count > 0)
|
||||
{
|
||||
Grid aGrid = (ViewPanel.SelectedContent) as Grid;
|
||||
|
||||
if (aGrid == null)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
Map[aGrid].StopRenderingScene ();
|
||||
|
||||
ViewPanel.Items.Remove (ViewPanel.SelectedItem);
|
||||
}
|
||||
|
||||
// update XAML property
|
||||
RaisePropertyChanged ("IsDocumentOpen");
|
||||
}
|
||||
|
||||
private void CloseCommand_CanExecute (object sender, CanExecuteRoutedEventArgs e)
|
||||
{
|
||||
e.CanExecute = IsDocumentOpen;
|
||||
}
|
||||
|
||||
private void QuitCommand_Executed (object sender, ExecutedRoutedEventArgs e)
|
||||
{
|
||||
this.Close ();
|
||||
}
|
||||
|
||||
private void ImportBRep_Click (object sender, RoutedEventArgs e)
|
||||
{
|
||||
if (ActiveViewer != null)
|
||||
{
|
||||
ActiveViewer.ImportModel (ModelFormat.BREP);
|
||||
}
|
||||
}
|
||||
|
||||
private void ImportIges_Click (object sender, RoutedEventArgs e)
|
||||
{
|
||||
if (ActiveViewer != null)
|
||||
{
|
||||
ActiveViewer.ImportModel (ModelFormat.IGES);
|
||||
}
|
||||
}
|
||||
|
||||
private void ImportStep_Click (object sender, RoutedEventArgs e)
|
||||
{
|
||||
if (ActiveViewer != null)
|
||||
{
|
||||
ActiveViewer.ImportModel (ModelFormat.STEP);
|
||||
}
|
||||
}
|
||||
|
||||
private void ExportBRep_Click (object sender, RoutedEventArgs e)
|
||||
{
|
||||
if (ActiveViewer != null)
|
||||
{
|
||||
ActiveViewer.ExportModel (ModelFormat.BREP);
|
||||
}
|
||||
}
|
||||
|
||||
private void ExportStep_Click (object sender, RoutedEventArgs e)
|
||||
{
|
||||
if (ActiveViewer != null)
|
||||
{
|
||||
ActiveViewer.ExportModel (ModelFormat.STEP);
|
||||
}
|
||||
}
|
||||
|
||||
private void ExportIges_Click (object sender, RoutedEventArgs e)
|
||||
{
|
||||
if (ActiveViewer != null)
|
||||
{
|
||||
ActiveViewer.ExportModel (ModelFormat.IGES);
|
||||
}
|
||||
}
|
||||
|
||||
private void ExportStl_Click (object sender, RoutedEventArgs e)
|
||||
{
|
||||
if (ActiveViewer != null)
|
||||
{
|
||||
ActiveViewer.ExportModel (ModelFormat.STL);
|
||||
}
|
||||
}
|
||||
|
||||
private void ExportVrml_Click (object sender, RoutedEventArgs e)
|
||||
{
|
||||
if (ActiveViewer != null)
|
||||
{
|
||||
ActiveViewer.ExportModel (ModelFormat.VRML);
|
||||
}
|
||||
}
|
||||
|
||||
private void ExportImage_Click (object sender, RoutedEventArgs e)
|
||||
{
|
||||
if (ActiveViewer != null)
|
||||
{
|
||||
ActiveViewer.ExportModel (ModelFormat.IMAGE);
|
||||
}
|
||||
}
|
||||
|
||||
private void FitAllBtn_Click (object sender, RoutedEventArgs e)
|
||||
{
|
||||
if (ActiveViewer != null)
|
||||
{
|
||||
ActiveViewer.FitAll ();
|
||||
}
|
||||
}
|
||||
|
||||
private void ZoomWindowBtn_Click (object sender, RoutedEventArgs e)
|
||||
{
|
||||
if (ActiveViewer != null)
|
||||
{
|
||||
IsZoomWinEnabled = false;
|
||||
ActiveViewer.ZoomWindow ();
|
||||
}
|
||||
}
|
||||
|
||||
private void DynamicZoomingBtn_Click (object sender, RoutedEventArgs e)
|
||||
{
|
||||
if (ActiveViewer != null)
|
||||
{
|
||||
ActiveViewer.DynamicZooming ();
|
||||
}
|
||||
}
|
||||
|
||||
private void DynamicPanningBtn_Click (object sender, RoutedEventArgs e)
|
||||
{
|
||||
if (ActiveViewer != null)
|
||||
{
|
||||
ActiveViewer.DynamicPanning ();
|
||||
}
|
||||
}
|
||||
|
||||
private void GlobalPanningBtn_Click (object sender, RoutedEventArgs e)
|
||||
{
|
||||
if (ActiveViewer != null)
|
||||
{
|
||||
ActiveViewer.GlobalPanning ();
|
||||
}
|
||||
}
|
||||
|
||||
private void FrontBtn_Click (object sender, RoutedEventArgs e)
|
||||
{
|
||||
if (ActiveViewer != null)
|
||||
{
|
||||
ActiveViewer.FrontView ();
|
||||
}
|
||||
}
|
||||
|
||||
private void BackBtn_Click (object sender, RoutedEventArgs e)
|
||||
{
|
||||
if (ActiveViewer != null)
|
||||
{
|
||||
ActiveViewer.BackView ();
|
||||
}
|
||||
}
|
||||
|
||||
private void TopBtn_Click (object sender, RoutedEventArgs e)
|
||||
{
|
||||
if (ActiveViewer != null)
|
||||
{
|
||||
ActiveViewer.TopView ();
|
||||
}
|
||||
}
|
||||
|
||||
private void BottomBtn_Click (object sender, RoutedEventArgs e)
|
||||
{
|
||||
if (ActiveViewer != null)
|
||||
{
|
||||
ActiveViewer.BottomView ();
|
||||
}
|
||||
}
|
||||
|
||||
private void LeftBtn_Click (object sender, RoutedEventArgs e)
|
||||
{
|
||||
if (ActiveViewer != null)
|
||||
{
|
||||
ActiveViewer.LeftView ();
|
||||
}
|
||||
}
|
||||
|
||||
private void RightBtn_Click (object sender, RoutedEventArgs e)
|
||||
{
|
||||
if (ActiveViewer != null)
|
||||
{
|
||||
ActiveViewer.RightView ();
|
||||
}
|
||||
}
|
||||
|
||||
private void AxoBtn_Click (object sender, RoutedEventArgs e)
|
||||
{
|
||||
if (ActiveViewer != null)
|
||||
{
|
||||
ActiveViewer.AxoView ();
|
||||
}
|
||||
}
|
||||
|
||||
private void ResetBtn_Click (object sender, RoutedEventArgs e)
|
||||
{
|
||||
if (ActiveViewer != null)
|
||||
{
|
||||
ActiveViewer.Reset ();
|
||||
}
|
||||
}
|
||||
|
||||
private void DynamicRotationBtn_Click (object sender, RoutedEventArgs e)
|
||||
{
|
||||
if (ActiveViewer != null)
|
||||
{
|
||||
ActiveViewer.DynamicRotation ();
|
||||
}
|
||||
}
|
||||
|
||||
private void HiddenOffBtn_Click (object sender, RoutedEventArgs e)
|
||||
{
|
||||
IsHlrOffPushed = true;
|
||||
IsHlrOnPushed = false;
|
||||
if (ActiveViewer != null)
|
||||
{
|
||||
ActiveViewer.HiddenOff ();
|
||||
}
|
||||
}
|
||||
|
||||
private void HiddenOnBtn_Click (object sender, RoutedEventArgs e)
|
||||
{
|
||||
IsHlrOffPushed = false;
|
||||
IsHlrOnPushed = true;
|
||||
if (ActiveViewer != null)
|
||||
{
|
||||
ActiveViewer.HiddenOn ();
|
||||
}
|
||||
}
|
||||
|
||||
private void AboutCommand_Executed (object sender, ExecutedRoutedEventArgs e)
|
||||
{
|
||||
AboutDialog aDlg = new AboutDialog ();
|
||||
aDlg.ShowDialog ();
|
||||
}
|
||||
|
||||
private void ToolBar_MouseEnter (object sender, MouseEventArgs e)
|
||||
{
|
||||
StatusBarText = "Toolbar";
|
||||
}
|
||||
|
||||
private void DocumentToolBar_MouseEnter (object sender, MouseEventArgs e)
|
||||
{
|
||||
StatusBarText = "Document toolbar";
|
||||
}
|
||||
|
||||
private void ViewToolBar_MouseEnter (object sender, MouseEventArgs e)
|
||||
{
|
||||
StatusBarText = "View toolbar";
|
||||
}
|
||||
|
||||
private void ToolBar_MouseLeave (object sender, MouseEventArgs e)
|
||||
{
|
||||
StatusBarText = "";
|
||||
}
|
||||
|
||||
public void OnZoomingFinished (object sender, EventArgs e)
|
||||
{
|
||||
IsZoomWinEnabled = true;
|
||||
}
|
||||
|
||||
public bool IsWireframeEnabled
|
||||
{
|
||||
get
|
||||
{
|
||||
if (ActiveViewer != null)
|
||||
{
|
||||
return ActiveViewer.IsWireframeEnabled;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
private void Wireframe_Click (object sender, RoutedEventArgs e)
|
||||
{
|
||||
if (ActiveViewer != null)
|
||||
{
|
||||
ActiveViewer.Wireframe ();
|
||||
}
|
||||
}
|
||||
|
||||
private void Shading_Click (object sender, RoutedEventArgs e)
|
||||
{
|
||||
if (ActiveViewer != null)
|
||||
{
|
||||
ActiveViewer.Shading ();
|
||||
}
|
||||
}
|
||||
|
||||
public bool IsShadingEnabled
|
||||
{
|
||||
get
|
||||
{
|
||||
if (ActiveViewer != null)
|
||||
{
|
||||
return ActiveViewer.IsShadingEnabled;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
private void Color_Click (object sender, RoutedEventArgs e)
|
||||
{
|
||||
if (ActiveViewer != null)
|
||||
{
|
||||
ActiveViewer.Color ();
|
||||
}
|
||||
}
|
||||
|
||||
public bool IsColorEnabled
|
||||
{
|
||||
get
|
||||
{
|
||||
if (ActiveViewer != null)
|
||||
{
|
||||
return ActiveViewer.IsColorEnabled;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
private void Material_Click (object sender, RoutedEventArgs e)
|
||||
{
|
||||
if (ActiveViewer != null)
|
||||
{
|
||||
ActiveViewer.Material ();
|
||||
}
|
||||
}
|
||||
|
||||
public bool IsMaterialEnabled
|
||||
{
|
||||
get
|
||||
{
|
||||
if (ActiveViewer != null)
|
||||
{
|
||||
return ActiveViewer.IsMaterialEnabled;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
private void Transparency_Click (object sender, RoutedEventArgs e)
|
||||
{
|
||||
if (ActiveViewer != null)
|
||||
{
|
||||
ActiveViewer.Transparency ();
|
||||
}
|
||||
}
|
||||
|
||||
public bool IsTransparencyEnabled
|
||||
{
|
||||
get
|
||||
{
|
||||
if (ActiveViewer != null)
|
||||
{
|
||||
return ActiveViewer.IsTransparencyEnabled;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
private void Delete_Click (object sender, RoutedEventArgs e)
|
||||
{
|
||||
if (ActiveViewer != null)
|
||||
{
|
||||
ActiveViewer.Delete ();
|
||||
}
|
||||
}
|
||||
|
||||
private void Background_Click(object sender, RoutedEventArgs e)
|
||||
{
|
||||
if (ActiveViewer != null)
|
||||
{
|
||||
ActiveViewer.Background();
|
||||
}
|
||||
}
|
||||
|
||||
public bool IsDeleteEnabled
|
||||
{
|
||||
get
|
||||
{
|
||||
if (ActiveViewer != null)
|
||||
{
|
||||
return ActiveViewer.IsDeleteEnabled;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
private void AvaliabiltyOfOperationToolbarChanged ()
|
||||
{
|
||||
RaisePropertyChanged ("IsWireframeEnabled");
|
||||
RaisePropertyChanged ("IsShadingEnabled");
|
||||
RaisePropertyChanged ("IsTransparencyEnabled");
|
||||
RaisePropertyChanged ("IsColorEnabled");
|
||||
RaisePropertyChanged ("IsMaterialEnabled");
|
||||
RaisePropertyChanged ("IsDeleteEnabled");
|
||||
}
|
||||
|
||||
public void OnAvaliabiltyOfOperationsChanged (object sender, EventArgs e)
|
||||
{
|
||||
AvaliabiltyOfOperationToolbarChanged ();
|
||||
}
|
||||
|
||||
private void OnViewerChanged (object sender, SelectionChangedEventArgs e)
|
||||
{
|
||||
if (e.RemovedItems.Count > 0)
|
||||
{
|
||||
Grid aHost = ((e.RemovedItems[0] as TabItem).Content) as Grid;
|
||||
if (aHost == null)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
OCCViewer aViewer = Map[aHost].Viewer;
|
||||
if (aViewer != null)
|
||||
{
|
||||
aViewer.ZoomingFinished -= new EventHandler (OnZoomingFinished);
|
||||
aViewer.AvaliabiltyOfOperationsChanged -= new EventHandler (OnAvaliabiltyOfOperationsChanged);
|
||||
}
|
||||
}
|
||||
|
||||
if (e.AddedItems.Count > 0)
|
||||
{
|
||||
Grid aHost = ((e.AddedItems[0] as TabItem).Content) as Grid;
|
||||
if (aHost == null)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
OCCViewer aViewer = Map[aHost].Viewer;
|
||||
if (aViewer != null)
|
||||
{
|
||||
aViewer.ZoomingFinished += new EventHandler (OnZoomingFinished);
|
||||
aViewer.AvaliabiltyOfOperationsChanged += new EventHandler (OnAvaliabiltyOfOperationsChanged);
|
||||
}
|
||||
}
|
||||
|
||||
AvaliabiltyOfOperationToolbarChanged ();
|
||||
}
|
||||
|
||||
private void OnContextOpened(object sender, RoutedEventArgs e)
|
||||
{
|
||||
this.WireframeItem.IsEnabled = IsWireframeEnabled;
|
||||
this.ShadingItem.IsEnabled = IsShadingEnabled;
|
||||
this.ColorItem.IsEnabled = IsColorEnabled;
|
||||
this.MaterialItem.IsEnabled = IsMaterialEnabled;
|
||||
this.TransparencyItem.IsEnabled = IsTransparencyEnabled;
|
||||
this.DeleteItem.IsEnabled = IsDeleteEnabled;
|
||||
}
|
||||
}
|
||||
}
|
@ -2,7 +2,7 @@
|
||||
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
|
||||
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
|
||||
xmlns:d="http://schemas.microsoft.com/expression/blend/2008" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
|
||||
x:Class="IE_WPF.MaterialDlg"
|
||||
x:Class="IE_WPF_D3D.MaterialDlg"
|
||||
x:Name="Window"
|
||||
Title="Material"
|
||||
Width="133" Height="181" mc:Ignorable="d">
|
101
samples/CSharp/WPF_D3D/MaterialDlg.xaml.cs
Normal file
@ -0,0 +1,101 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Text;
|
||||
using System.Windows;
|
||||
using System.Windows.Controls;
|
||||
using System.Windows.Data;
|
||||
using System.Windows.Documents;
|
||||
using System.Windows.Input;
|
||||
using System.Windows.Media;
|
||||
using System.Windows.Media.Imaging;
|
||||
using System.Windows.Shapes;
|
||||
|
||||
namespace IE_WPF_D3D
|
||||
{
|
||||
public enum Material
|
||||
{
|
||||
Brass,
|
||||
Bronze,
|
||||
Copper,
|
||||
Gold,
|
||||
Pewter,
|
||||
Plaster,
|
||||
Plastic,
|
||||
Silver
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Interaction logic for MaterialDlg.xaml
|
||||
/// </summary>
|
||||
public partial class MaterialDlg : Window
|
||||
{
|
||||
public MaterialDlg( OCCTProxyD3D theView )
|
||||
{
|
||||
this.InitializeComponent();
|
||||
|
||||
if ( theView == null )
|
||||
{
|
||||
MessageBox.Show( "Fatal Error during the graphic initialisation", "Error!" );
|
||||
}
|
||||
|
||||
View = theView;
|
||||
|
||||
SetInitialState();
|
||||
}
|
||||
|
||||
public OCCTProxyD3D View { get; private set; }
|
||||
|
||||
private void PlasterBtn_Checked( object sender, RoutedEventArgs e )
|
||||
{
|
||||
View.SetMaterial( (int)Material.Plaster );
|
||||
View.UpdateCurrentViewer();
|
||||
}
|
||||
|
||||
private void BrassBtn_Checked( object sender, RoutedEventArgs e )
|
||||
{
|
||||
View.SetMaterial( (int)Material.Brass );
|
||||
View.UpdateCurrentViewer();
|
||||
}
|
||||
|
||||
private void BronzeBtn_Checked( object sender, RoutedEventArgs e )
|
||||
{
|
||||
View.SetMaterial( (int)Material.Bronze );
|
||||
View.UpdateCurrentViewer();
|
||||
}
|
||||
|
||||
private void CopperBtn_Checked( object sender, RoutedEventArgs e )
|
||||
{
|
||||
View.SetMaterial( (int)Material.Copper );
|
||||
View.UpdateCurrentViewer();
|
||||
}
|
||||
|
||||
private void GoldBtn_Checked( object sender, RoutedEventArgs e )
|
||||
{
|
||||
View.SetMaterial( (int)Material.Gold );
|
||||
View.UpdateCurrentViewer();
|
||||
}
|
||||
|
||||
private void PewterBtn_Checked( object sender, RoutedEventArgs e )
|
||||
{
|
||||
View.SetMaterial( (int)Material.Pewter );
|
||||
View.UpdateCurrentViewer();
|
||||
}
|
||||
|
||||
private void PlasticBtn_Checked( object sender, RoutedEventArgs e )
|
||||
{
|
||||
View.SetMaterial( (int)Material.Plastic );
|
||||
View.UpdateCurrentViewer();
|
||||
}
|
||||
|
||||
private void SilverBtn_Checked( object sender, RoutedEventArgs e )
|
||||
{
|
||||
View.SetMaterial( (int)Material.Silver );
|
||||
View.UpdateCurrentViewer();
|
||||
}
|
||||
|
||||
private void SetInitialState()
|
||||
{
|
||||
// TODO
|
||||
}
|
||||
}
|
||||
}
|
673
samples/CSharp/WPF_D3D/OCCViewer.cs
Normal file
@ -0,0 +1,673 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Windows.Forms;
|
||||
using System.Windows.Input;
|
||||
using System.Drawing;
|
||||
|
||||
namespace IE_WPF_D3D
|
||||
{
|
||||
public enum CurrentAction3d
|
||||
{
|
||||
CurAction3d_Nothing,
|
||||
CurAction3d_DynamicZooming,
|
||||
CurAction3d_WindowZooming,
|
||||
CurAction3d_DynamicPanning,
|
||||
CurAction3d_GlobalPanning,
|
||||
CurAction3d_DynamicRotation
|
||||
}
|
||||
public enum CurrentPressedKey
|
||||
{
|
||||
CurPressedKey_Nothing,
|
||||
CurPressedKey_Ctrl,
|
||||
CurPressedKey_Shift
|
||||
}
|
||||
public enum ModelFormat
|
||||
{
|
||||
BREP,
|
||||
CSFDB,
|
||||
STEP,
|
||||
IGES,
|
||||
VRML,
|
||||
STL,
|
||||
IMAGE
|
||||
}
|
||||
|
||||
public enum DisplayMode
|
||||
{
|
||||
Wireframe,
|
||||
Shading
|
||||
}
|
||||
|
||||
public class OCCViewer
|
||||
{
|
||||
public event EventHandler ZoomingFinished;
|
||||
protected void RaiseZoomingFinished ()
|
||||
{
|
||||
if (ZoomingFinished != null)
|
||||
{
|
||||
ZoomingFinished (this, EventArgs.Empty);
|
||||
}
|
||||
}
|
||||
|
||||
public event EventHandler AvaliabiltyOfOperationsChanged;
|
||||
protected void RaiseAvaliabiltyOfOperationsChanged ()
|
||||
{
|
||||
if (AvaliabiltyOfOperationsChanged != null)
|
||||
{
|
||||
AvaliabiltyOfOperationsChanged (this, EventArgs.Empty);
|
||||
}
|
||||
}
|
||||
|
||||
public OCCTProxyD3D View { get; private set; }
|
||||
public CurrentAction3d CurrentMode { get; private set; }
|
||||
private bool IsRectVisible { get; set; }
|
||||
public bool DegenerateMode { get; private set; }
|
||||
|
||||
public bool IsWireframeEnabled { get; private set; }
|
||||
public bool IsShadingEnabled { get; private set; }
|
||||
public bool IsTransparencyEnabled { get; private set; }
|
||||
public bool IsColorEnabled { get; private set; }
|
||||
public bool IsMaterialEnabled { get; private set; }
|
||||
public bool IsDeleteEnabled { get; private set; }
|
||||
|
||||
private float myCurZoom;// ~ Quantity_Factor
|
||||
private int myXmin;
|
||||
private int myYmin;
|
||||
private int myXmax;
|
||||
private int myYmax;
|
||||
private int myButtonDownX;
|
||||
private int myButtonDownY;
|
||||
public OCCViewer()
|
||||
{
|
||||
View = new OCCTProxyD3D ();
|
||||
View.InitOCCTProxy ();
|
||||
CurrentMode = CurrentAction3d.CurAction3d_Nothing;
|
||||
IsRectVisible = false;
|
||||
DegenerateMode = true;
|
||||
}
|
||||
|
||||
public bool InitInterop (IntPtr theHWND, IntPtr theD3DDevice)
|
||||
{
|
||||
return View.InitViewer (theHWND, theD3DDevice);
|
||||
}
|
||||
|
||||
public void ImportModel (ModelFormat theFormat)
|
||||
{
|
||||
int aFormat = 10;
|
||||
OpenFileDialog anOpenDialog = new OpenFileDialog ();
|
||||
string aDataDir = ((Environment.GetEnvironmentVariable ("CASROOT")) + "\\..\\data");
|
||||
string aFilter = "";
|
||||
|
||||
switch (theFormat)
|
||||
{
|
||||
case ModelFormat.BREP:
|
||||
anOpenDialog.InitialDirectory = (aDataDir + "\\occ");
|
||||
aFormat = 0;
|
||||
aFilter = "BREP Files (*.brep *.rle)|*.brep; *.rle";
|
||||
break;
|
||||
case ModelFormat.CSFDB:
|
||||
aFormat = 1;
|
||||
aFilter = "CSFDB Files (*.csfdb)|*.csfdb";
|
||||
break;
|
||||
case ModelFormat.STEP:
|
||||
anOpenDialog.InitialDirectory = (aDataDir + "\\step");
|
||||
aFormat = 2;
|
||||
aFilter = "STEP Files (*.stp *.step)|*.stp; *.step";
|
||||
break;
|
||||
case ModelFormat.IGES:
|
||||
anOpenDialog.InitialDirectory = (aDataDir + "\\iges");
|
||||
aFormat = 3;
|
||||
aFilter = "IGES Files (*.igs *.iges)|*.igs; *.iges";
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
||||
anOpenDialog.Filter = aFilter + "|All files (*.*)|*.*";
|
||||
if (anOpenDialog.ShowDialog () == DialogResult.OK)
|
||||
{
|
||||
string aFileName = anOpenDialog.FileName;
|
||||
if (aFileName == "")
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
if (!View.TranslateModel (aFileName, aFormat, true))
|
||||
{
|
||||
MessageBox.Show ("Cann't read this file", "Error!", MessageBoxButtons.OK, MessageBoxIcon.Warning);
|
||||
}
|
||||
}
|
||||
View.ZoomAllView ();
|
||||
}
|
||||
|
||||
public void ExportModel (ModelFormat theFormat)
|
||||
{
|
||||
int aFormat = 10;
|
||||
SaveFileDialog saveDialog = new SaveFileDialog ();
|
||||
string aDataDir = ((Environment.GetEnvironmentVariable ("CASROOT")) + "\\..\\data");
|
||||
string aFilter = "";
|
||||
|
||||
switch (theFormat)
|
||||
{
|
||||
case ModelFormat.BREP:
|
||||
saveDialog.InitialDirectory = (aDataDir + "\\occ");
|
||||
aFormat = 0;
|
||||
aFilter = "BREP Files (*.brep *.rle)|*.brep; *.rle";
|
||||
break;
|
||||
case ModelFormat.CSFDB:
|
||||
aFormat = 1;
|
||||
aFilter = "CSFDB Files (*.csfdb)|*.csfdb";
|
||||
break;
|
||||
case ModelFormat.STEP:
|
||||
saveDialog.InitialDirectory = (aDataDir + "\\step");
|
||||
aFormat = 2;
|
||||
aFilter = "STEP Files (*.stp *.step)|*.step; *.stp";
|
||||
break;
|
||||
case ModelFormat.IGES:
|
||||
saveDialog.InitialDirectory = (aDataDir + "\\iges");
|
||||
aFormat = 3;
|
||||
aFilter = "IGES Files (*.igs *.iges)| *.iges; *.igs";
|
||||
break;
|
||||
case ModelFormat.VRML:
|
||||
saveDialog.InitialDirectory = (aDataDir + "\\vrml");
|
||||
aFormat = 4;
|
||||
aFilter = "VRML Files (*.vrml)|*.vrml";
|
||||
break;
|
||||
case ModelFormat.STL:
|
||||
saveDialog.InitialDirectory = (aDataDir + "\\stl");
|
||||
aFormat = 5;
|
||||
aFilter = "STL Files (*.stl)|*.stl";
|
||||
break;
|
||||
case ModelFormat.IMAGE:
|
||||
saveDialog.InitialDirectory = (aDataDir + "\\images");
|
||||
aFormat = 6;
|
||||
aFilter = "Images Files (*.bmp)|*.bmp";
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
||||
saveDialog.Filter = aFilter;
|
||||
if (saveDialog.ShowDialog () == DialogResult.OK)
|
||||
{
|
||||
string aFileName = saveDialog.FileName;
|
||||
if (aFileName == "")
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
if (!View.TranslateModel (aFileName, aFormat, false))
|
||||
{
|
||||
MessageBox.Show ("Can not write this file", "Error!", MessageBoxButtons.OK, MessageBoxIcon.Warning);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public void FitAll ()
|
||||
{
|
||||
View.ZoomAllView ();
|
||||
}
|
||||
|
||||
public void ZoomWindow ()
|
||||
{
|
||||
CurrentMode = CurrentAction3d.CurAction3d_WindowZooming;
|
||||
}
|
||||
|
||||
public void DynamicZooming ()
|
||||
{
|
||||
CurrentMode = CurrentAction3d.CurAction3d_DynamicZooming;
|
||||
}
|
||||
|
||||
public void DynamicPanning ()
|
||||
{
|
||||
CurrentMode = CurrentAction3d.CurAction3d_DynamicPanning;
|
||||
}
|
||||
|
||||
public void GlobalPanning ()
|
||||
{
|
||||
myCurZoom = View.Scale ();
|
||||
CurrentMode = CurrentAction3d.CurAction3d_GlobalPanning;
|
||||
}
|
||||
|
||||
public void AxoView ()
|
||||
{
|
||||
View.AxoView ();
|
||||
}
|
||||
|
||||
public void FrontView ()
|
||||
{
|
||||
View.FrontView ();
|
||||
}
|
||||
|
||||
public void TopView ()
|
||||
{
|
||||
View.TopView ();
|
||||
}
|
||||
|
||||
public void LeftView ()
|
||||
{
|
||||
View.LeftView ();
|
||||
}
|
||||
|
||||
public void BackView ()
|
||||
{
|
||||
View.BackView ();
|
||||
}
|
||||
|
||||
public void RightView ()
|
||||
{
|
||||
View.RightView ();
|
||||
}
|
||||
|
||||
public void Reset ()
|
||||
{
|
||||
View.Reset ();
|
||||
}
|
||||
|
||||
public void BottomView ()
|
||||
{
|
||||
View.BottomView ();
|
||||
}
|
||||
|
||||
public void HiddenOff ()
|
||||
{
|
||||
View.SetDegenerateModeOff ();
|
||||
DegenerateMode = false;
|
||||
}
|
||||
|
||||
public void HiddenOn ()
|
||||
{
|
||||
View.SetDegenerateModeOn ();
|
||||
DegenerateMode = true;
|
||||
}
|
||||
|
||||
public void DynamicRotation ()
|
||||
{
|
||||
CurrentMode = CurrentAction3d.CurAction3d_DynamicRotation;
|
||||
}
|
||||
|
||||
public void SelectionChanged ()
|
||||
{
|
||||
switch (View.DisplayMode ())
|
||||
{
|
||||
case -1:
|
||||
IsShadingEnabled = false;
|
||||
IsWireframeEnabled = false;
|
||||
break;
|
||||
case 0:
|
||||
IsWireframeEnabled = false;
|
||||
IsShadingEnabled = true;
|
||||
IsTransparencyEnabled = false;
|
||||
break;
|
||||
case 1:
|
||||
IsWireframeEnabled = true;
|
||||
IsShadingEnabled = false;
|
||||
IsTransparencyEnabled = true;
|
||||
break;
|
||||
case 10:
|
||||
IsWireframeEnabled = true;
|
||||
IsShadingEnabled = true;
|
||||
IsTransparencyEnabled = true;
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
||||
if (View.IsObjectSelected ())
|
||||
{
|
||||
IsColorEnabled = true;
|
||||
IsMaterialEnabled = true;
|
||||
IsDeleteEnabled = true;
|
||||
}
|
||||
else
|
||||
{
|
||||
IsColorEnabled = false;
|
||||
IsMaterialEnabled = false;
|
||||
IsTransparencyEnabled = false;
|
||||
IsDeleteEnabled = false;
|
||||
}
|
||||
|
||||
RaiseAvaliabiltyOfOperationsChanged ();
|
||||
}
|
||||
|
||||
public void ChangeColor (bool IsObjectColor)
|
||||
{
|
||||
int r, g, b;
|
||||
if (IsObjectColor)
|
||||
{
|
||||
r = View.GetObjColR ();
|
||||
g = View.GetObjColG ();
|
||||
b = View.GetObjColB ();
|
||||
}
|
||||
else
|
||||
{
|
||||
r = View.GetBGColR ();
|
||||
g = View.GetBGColG ();
|
||||
b = View.GetBGColB ();
|
||||
}
|
||||
System.Windows.Forms.ColorDialog ColDlg = new System.Windows.Forms.ColorDialog ();
|
||||
ColDlg.Color = System.Drawing.Color.FromArgb (r, g, b);
|
||||
if (ColDlg.ShowDialog () == System.Windows.Forms.DialogResult.OK)
|
||||
{
|
||||
System.Drawing.Color c = ColDlg.Color;
|
||||
r = c.R;
|
||||
g = c.G;
|
||||
b = c.B;
|
||||
if (IsObjectColor)
|
||||
{
|
||||
View.SetColor (r, g, b);
|
||||
}
|
||||
else
|
||||
{
|
||||
View.SetBackgroundColor (r, g, b);
|
||||
}
|
||||
}
|
||||
View.UpdateCurrentViewer ();
|
||||
}
|
||||
|
||||
public void Wireframe ()
|
||||
{
|
||||
View.SetDisplayMode ((int)DisplayMode.Wireframe);
|
||||
View.UpdateCurrentViewer ();
|
||||
|
||||
SelectionChanged ();
|
||||
RaiseZoomingFinished ();
|
||||
}
|
||||
|
||||
public void Shading ()
|
||||
{
|
||||
View.SetDisplayMode ((int)DisplayMode.Shading);
|
||||
View.UpdateCurrentViewer ();
|
||||
|
||||
SelectionChanged ();
|
||||
RaiseZoomingFinished ();
|
||||
}
|
||||
|
||||
public void Color ()
|
||||
{
|
||||
ChangeColor (true);
|
||||
}
|
||||
|
||||
public void Background ()
|
||||
{
|
||||
ChangeColor (false);
|
||||
}
|
||||
|
||||
public void Material ()
|
||||
{
|
||||
MaterialDlg aDlg = new MaterialDlg (View);
|
||||
aDlg.ShowDialog ();
|
||||
}
|
||||
|
||||
public void Transparency ()
|
||||
{
|
||||
TransparencyDialog dlg = new TransparencyDialog ();
|
||||
dlg.View = View;
|
||||
dlg.ShowDialog ();
|
||||
}
|
||||
|
||||
public void Delete ()
|
||||
{
|
||||
View.EraseObjects ();
|
||||
}
|
||||
|
||||
protected void MultiDragEvent (int x, int y, int theState)
|
||||
{
|
||||
if (theState == -1) //mouse is down
|
||||
{
|
||||
myButtonDownX = x;
|
||||
myButtonDownY = y;
|
||||
}
|
||||
else if (theState == 1) //mouse is up
|
||||
{
|
||||
View.ShiftSelect (Math.Min (myButtonDownX, x), Math.Min (myButtonDownY, y),
|
||||
Math.Max (myButtonDownX, x), Math.Max (myButtonDownY, y));
|
||||
}
|
||||
}
|
||||
|
||||
protected void DragEvent (int x, int y, int theState)
|
||||
{
|
||||
if (theState == -1) //mouse is down
|
||||
{
|
||||
myButtonDownX = x;
|
||||
myButtonDownY = y;
|
||||
}
|
||||
else if (theState == 1) //mouse is up
|
||||
{
|
||||
View.Select (Math.Min (myButtonDownX, x), Math.Min (myButtonDownY, y),
|
||||
Math.Max (myButtonDownX, x), Math.Max (myButtonDownY, y));
|
||||
}
|
||||
}
|
||||
|
||||
public void OnMouseDown (System.Windows.IInputElement sender, MouseButtonEventArgs e)
|
||||
{
|
||||
System.Windows.Controls.TabControl aTabControl = sender as System.Windows.Controls.TabControl;
|
||||
System.Windows.Controls.Grid aGrid = aTabControl.SelectedContent as System.Windows.Controls.Grid;
|
||||
|
||||
Point p = new Point((int)e.GetPosition(aGrid).X, (int)e.GetPosition(aGrid).Y);
|
||||
|
||||
// to avoid the context menu opening
|
||||
aTabControl.ContextMenu.Visibility = System.Windows.Visibility.Collapsed;
|
||||
aTabControl.ContextMenu.IsOpen = false;
|
||||
|
||||
if (e.LeftButton == MouseButtonState.Pressed)
|
||||
{
|
||||
myXmin = p.X;
|
||||
myXmax = p.X;
|
||||
myYmin = p.Y;
|
||||
myYmax = p.Y;
|
||||
|
||||
if (Keyboard.IsKeyDown (Key.LeftCtrl) || Keyboard.IsKeyDown (Key.RightCtrl))
|
||||
{
|
||||
// start the dinamic zooming....
|
||||
CurrentMode = CurrentAction3d.CurAction3d_DynamicZooming;
|
||||
}
|
||||
else
|
||||
{
|
||||
switch (CurrentMode)
|
||||
{
|
||||
case CurrentAction3d.CurAction3d_Nothing:
|
||||
if (Keyboard.IsKeyDown (Key.LeftShift) || Keyboard.IsKeyDown (Key.RightShift))
|
||||
{
|
||||
MultiDragEvent (myXmax, myYmax, -1);
|
||||
}
|
||||
else
|
||||
{
|
||||
DragEvent (myXmax, myYmax, -1);
|
||||
}
|
||||
break;
|
||||
case CurrentAction3d.CurAction3d_DynamicRotation:
|
||||
if (!DegenerateMode)
|
||||
{
|
||||
View.SetDegenerateModeOn ();
|
||||
}
|
||||
View.StartRotation (p.X, p.Y);
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
else if (e.RightButton == MouseButtonState.Pressed)
|
||||
{
|
||||
if (Keyboard.IsKeyDown(Key.LeftCtrl) || Keyboard.IsKeyDown(Key.RightCtrl))
|
||||
{
|
||||
if (!DegenerateMode)
|
||||
{
|
||||
View.SetDegenerateModeOn();
|
||||
}
|
||||
View.StartRotation(p.X, p.Y);
|
||||
}
|
||||
else
|
||||
{
|
||||
// show context menu only in this case
|
||||
aTabControl.ContextMenu.Visibility = System.Windows.Visibility.Visible;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public void OnMouseUp(System.Windows.IInputElement sender, MouseButtonEventArgs e)
|
||||
{
|
||||
Point p = new Point((int)e.GetPosition(sender).X, (int)e.GetPosition(sender).Y);
|
||||
|
||||
if (e.ChangedButton == MouseButton.Left)
|
||||
{
|
||||
if (Keyboard.IsKeyDown (Key.LeftCtrl) || Keyboard.IsKeyDown (Key.RightCtrl))
|
||||
{
|
||||
CurrentMode = CurrentAction3d.CurAction3d_Nothing;
|
||||
return;
|
||||
}
|
||||
switch (CurrentMode)
|
||||
{
|
||||
case CurrentAction3d.CurAction3d_Nothing:
|
||||
if (p.X == myXmin && p.Y == myYmin)
|
||||
{
|
||||
myXmax = p.X;
|
||||
myYmax = p.Y;
|
||||
if (Keyboard.IsKeyDown (Key.LeftShift) || Keyboard.IsKeyDown (Key.RightShift))
|
||||
{
|
||||
View.ShiftSelect ();
|
||||
}
|
||||
else
|
||||
{
|
||||
View.Select ();
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
myXmax = p.X;
|
||||
myYmax = p.Y;
|
||||
if (Keyboard.IsKeyDown (Key.LeftShift) || Keyboard.IsKeyDown (Key.RightShift))
|
||||
{
|
||||
MultiDragEvent (myXmax, myYmax, 1);
|
||||
}
|
||||
else
|
||||
{
|
||||
DragEvent (myXmax, myYmax, 1);
|
||||
}
|
||||
}
|
||||
break;
|
||||
case CurrentAction3d.CurAction3d_DynamicZooming:
|
||||
CurrentMode = CurrentAction3d.CurAction3d_Nothing;
|
||||
break;
|
||||
case CurrentAction3d.CurAction3d_WindowZooming:
|
||||
myXmax = p.X;
|
||||
myYmax = p.Y;
|
||||
int ValZWMin = 1;
|
||||
if (Math.Abs (myXmax - myXmin) > ValZWMin &&
|
||||
Math.Abs (myXmax - myYmax) > ValZWMin)
|
||||
{
|
||||
View.WindowFitAll (myXmin, myYmin, myXmax, myYmax);
|
||||
}
|
||||
RaiseZoomingFinished ();
|
||||
CurrentMode = CurrentAction3d.CurAction3d_Nothing;
|
||||
break;
|
||||
case CurrentAction3d.CurAction3d_DynamicPanning:
|
||||
CurrentMode = CurrentAction3d.CurAction3d_Nothing;
|
||||
break;
|
||||
case CurrentAction3d.CurAction3d_GlobalPanning:
|
||||
View.Place (p.X, p.Y, myCurZoom);
|
||||
CurrentMode = CurrentAction3d.CurAction3d_Nothing;
|
||||
break;
|
||||
case CurrentAction3d.CurAction3d_DynamicRotation:
|
||||
CurrentMode = CurrentAction3d.CurAction3d_Nothing;
|
||||
if (!DegenerateMode)
|
||||
{
|
||||
View.SetDegenerateModeOff ();
|
||||
}
|
||||
else
|
||||
{
|
||||
View.SetDegenerateModeOn ();
|
||||
}
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
else if (e.ChangedButton == MouseButton.Right)
|
||||
{
|
||||
if (!DegenerateMode)
|
||||
{
|
||||
View.SetDegenerateModeOff ();
|
||||
}
|
||||
else
|
||||
{
|
||||
View.SetDegenerateModeOn ();
|
||||
}
|
||||
}
|
||||
|
||||
SelectionChanged ();
|
||||
}
|
||||
|
||||
public void OnMouseMove (System.Windows.IInputElement sender, System.Windows.Input.MouseEventArgs e)
|
||||
{
|
||||
Point p = new Point ((int)e.GetPosition (sender).X, (int)e.GetPosition (sender).Y);
|
||||
|
||||
if (e.LeftButton == MouseButtonState.Pressed) //left button is pressed
|
||||
{
|
||||
if (Keyboard.IsKeyDown (Key.LeftCtrl) || Keyboard.IsKeyDown (Key.RightCtrl))
|
||||
{
|
||||
View.Zoom (myXmax, myYmax, p.X, p.Y);
|
||||
myXmax = p.X;
|
||||
myYmax = p.Y;
|
||||
}
|
||||
else
|
||||
{
|
||||
switch (CurrentMode)
|
||||
{
|
||||
case CurrentAction3d.CurAction3d_Nothing:
|
||||
myXmax = p.X;
|
||||
myYmax = p.Y;
|
||||
break;
|
||||
case CurrentAction3d.CurAction3d_DynamicZooming:
|
||||
View.Zoom (myXmax, myYmax, p.X, p.Y);
|
||||
myXmax = p.X;
|
||||
myYmax = p.Y;
|
||||
break;
|
||||
case CurrentAction3d.CurAction3d_WindowZooming:
|
||||
myXmax = p.X;
|
||||
myYmax = p.Y;
|
||||
break;
|
||||
case CurrentAction3d.CurAction3d_DynamicPanning:
|
||||
View.Pan (p.X - myXmax, myYmax - p.Y);
|
||||
myXmax = p.X;
|
||||
myYmax = p.Y;
|
||||
break;
|
||||
case CurrentAction3d.CurAction3d_GlobalPanning:
|
||||
break;
|
||||
case CurrentAction3d.CurAction3d_DynamicRotation:
|
||||
View.Rotation (p.X, p.Y);
|
||||
View.RedrawView ();
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
else if (e.MiddleButton == MouseButtonState.Pressed) //middle button is pressed
|
||||
{
|
||||
if (Keyboard.IsKeyDown (Key.LeftCtrl) || Keyboard.IsKeyDown (Key.RightCtrl))
|
||||
{
|
||||
View.Pan (p.X - myXmax, myYmax - p.Y);
|
||||
myXmax = p.X;
|
||||
myYmax = p.Y;
|
||||
}
|
||||
}
|
||||
else if (e.RightButton == MouseButtonState.Pressed) //right button is pressed
|
||||
{
|
||||
if (Keyboard.IsKeyDown (Key.LeftCtrl) || Keyboard.IsKeyDown (Key.RightCtrl))
|
||||
{
|
||||
View.Rotation (p.X, p.Y);
|
||||
}
|
||||
}
|
||||
else // no buttons are pressed
|
||||
{
|
||||
myXmax = p.X;
|
||||
myYmax = p.Y;
|
||||
View.MoveTo (p.X, p.Y);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
@ -1,14 +1,14 @@
|
||||
//------------------------------------------------------------------------------
|
||||
// <auto-generated>
|
||||
// This code was generated by a tool.
|
||||
// Runtime Version:2.0.50727.5472
|
||||
// Runtime Version:4.0.30319.18444
|
||||
//
|
||||
// Changes to this file may cause incorrect behavior and will be lost if
|
||||
// the code is regenerated.
|
||||
// </auto-generated>
|
||||
//------------------------------------------------------------------------------
|
||||
|
||||
namespace IE_WPF.Properties {
|
||||
namespace IE_WPF_D3D.Properties {
|
||||
using System;
|
||||
|
||||
|
||||
@ -19,7 +19,7 @@ namespace IE_WPF.Properties {
|
||||
// class via a tool like ResGen or Visual Studio.
|
||||
// To add or remove a member, edit your .ResX file then rerun ResGen
|
||||
// with the /str option, or rebuild your VS project.
|
||||
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "2.0.0.0")]
|
||||
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "4.0.0.0")]
|
||||
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
|
||||
[global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
|
||||
internal class Resources {
|
||||
@ -39,7 +39,7 @@ namespace IE_WPF.Properties {
|
||||
internal static global::System.Resources.ResourceManager ResourceManager {
|
||||
get {
|
||||
if (object.ReferenceEquals(resourceMan, null)) {
|
||||
global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("IE_WPF.Properties.Resources", typeof(Resources).Assembly);
|
||||
global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("IE_WPF_D3D.Properties.Resources", typeof(Resources).Assembly);
|
||||
resourceMan = temp;
|
||||
}
|
||||
return resourceMan;
|
@ -1,18 +1,18 @@
|
||||
//------------------------------------------------------------------------------
|
||||
// <auto-generated>
|
||||
// This code was generated by a tool.
|
||||
// Runtime Version:2.0.50727.5472
|
||||
// Runtime Version:4.0.30319.18444
|
||||
//
|
||||
// Changes to this file may cause incorrect behavior and will be lost if
|
||||
// the code is regenerated.
|
||||
// </auto-generated>
|
||||
//------------------------------------------------------------------------------
|
||||
|
||||
namespace IE_WPF.Properties {
|
||||
namespace IE_WPF_D3D.Properties {
|
||||
|
||||
|
||||
[global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
|
||||
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "9.0.0.0")]
|
||||
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "10.0.0.0")]
|
||||
internal sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase {
|
||||
|
||||
private static Settings defaultInstance = ((Settings)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new Settings())));
|
108
samples/CSharp/WPF_D3D/TransparencyDialog.cs
Normal file
@ -0,0 +1,108 @@
|
||||
using System;
|
||||
using System.Drawing;
|
||||
using System.Collections;
|
||||
using System.ComponentModel;
|
||||
using System.Windows.Forms;
|
||||
|
||||
namespace IE_WPF_D3D
|
||||
{
|
||||
/// <summary>
|
||||
/// Summary description for TransparencyDialog.
|
||||
/// </summary>
|
||||
public class TransparencyDialog : System.Windows.Forms.Form
|
||||
{
|
||||
private System.Windows.Forms.NumericUpDown MyTransparency;
|
||||
/// <summary>
|
||||
/// Required designer variable.
|
||||
/// </summary>
|
||||
private System.ComponentModel.Container components = null;
|
||||
private OCCTProxyD3D myView;
|
||||
|
||||
public TransparencyDialog()
|
||||
{
|
||||
//
|
||||
// Required for Windows Form Designer support
|
||||
//
|
||||
InitializeComponent();
|
||||
|
||||
//
|
||||
// TODO: Add any constructor code after InitializeComponent call
|
||||
//
|
||||
myView = null;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Clean up any resources being used.
|
||||
/// </summary>
|
||||
protected override void Dispose(bool disposing)
|
||||
{
|
||||
if (disposing)
|
||||
{
|
||||
if (components != null)
|
||||
{
|
||||
components.Dispose();
|
||||
}
|
||||
}
|
||||
base.Dispose(disposing);
|
||||
}
|
||||
|
||||
#region Windows Form Designer generated code
|
||||
/// <summary>
|
||||
/// Required method for Designer support - do not modify
|
||||
/// the contents of this method with the code editor.
|
||||
/// </summary>
|
||||
private void InitializeComponent()
|
||||
{
|
||||
System.Resources.ResourceManager resources = new System.Resources.ResourceManager(typeof(TransparencyDialog));
|
||||
this.MyTransparency = new System.Windows.Forms.NumericUpDown();
|
||||
((System.ComponentModel.ISupportInitialize)(this.MyTransparency)).BeginInit();
|
||||
this.SuspendLayout();
|
||||
//
|
||||
// MyTransparency
|
||||
//
|
||||
this.MyTransparency.Location = new System.Drawing.Point(16, 16);
|
||||
this.MyTransparency.Maximum = new System.Decimal(new int[] {
|
||||
10,
|
||||
0,
|
||||
0,
|
||||
0});
|
||||
this.MyTransparency.Name = "MyTransparency";
|
||||
this.MyTransparency.Size = new System.Drawing.Size(96, 20);
|
||||
this.MyTransparency.TabIndex = 0;
|
||||
this.MyTransparency.ValueChanged += new System.EventHandler(this.MyTransparency_ValueChanged);
|
||||
//
|
||||
// TransparencyDialog
|
||||
//
|
||||
this.AutoScaleBaseSize = new System.Drawing.Size(5, 13);
|
||||
this.ClientSize = new System.Drawing.Size(128, 53);
|
||||
this.Controls.Add(this.MyTransparency);
|
||||
this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedDialog;
|
||||
this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon")));
|
||||
this.MaximizeBox = false;
|
||||
this.MinimizeBox = false;
|
||||
this.Name = "TransparencyDialog";
|
||||
this.Text = "TransparencyDialog";
|
||||
((System.ComponentModel.ISupportInitialize)(this.MyTransparency)).EndInit();
|
||||
this.ResumeLayout(false);
|
||||
|
||||
}
|
||||
#endregion
|
||||
|
||||
private void MyTransparency_ValueChanged(object sender, System.EventArgs e)
|
||||
{
|
||||
if (this.myView == null)
|
||||
return;
|
||||
int transp = (int)this.MyTransparency.Value;
|
||||
this.myView.SetTransparency(transp);
|
||||
}
|
||||
|
||||
public OCCTProxyD3D View
|
||||
{
|
||||
set
|
||||
{
|
||||
this.myView = value;
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
}
|
Before Width: | Height: | Size: 3.7 KiB After Width: | Height: | Size: 3.7 KiB |
Before Width: | Height: | Size: 241 B After Width: | Height: | Size: 241 B |
Before Width: | Height: | Size: 214 B After Width: | Height: | Size: 214 B |
Before Width: | Height: | Size: 1.3 KiB After Width: | Height: | Size: 1.3 KiB |
Before Width: | Height: | Size: 177 B After Width: | Height: | Size: 177 B |
Before Width: | Height: | Size: 57 KiB After Width: | Height: | Size: 57 KiB |
Before Width: | Height: | Size: 283 B After Width: | Height: | Size: 283 B |
Before Width: | Height: | Size: 1.2 KiB After Width: | Height: | Size: 1.2 KiB |
Before Width: | Height: | Size: 283 B After Width: | Height: | Size: 283 B |
Before Width: | Height: | Size: 256 B After Width: | Height: | Size: 256 B |
Before Width: | Height: | Size: 234 B After Width: | Height: | Size: 234 B |
Before Width: | Height: | Size: 186 B After Width: | Height: | Size: 186 B |
Before Width: | Height: | Size: 262 B After Width: | Height: | Size: 262 B |
Before Width: | Height: | Size: 233 B After Width: | Height: | Size: 233 B |
Before Width: | Height: | Size: 233 B After Width: | Height: | Size: 233 B |
Before Width: | Height: | Size: 199 B After Width: | Height: | Size: 199 B |
Before Width: | Height: | Size: 180 B After Width: | Height: | Size: 180 B |
Before Width: | Height: | Size: 231 B After Width: | Height: | Size: 231 B |
Before Width: | Height: | Size: 224 B After Width: | Height: | Size: 224 B |
Before Width: | Height: | Size: 238 B After Width: | Height: | Size: 238 B |
Before Width: | Height: | Size: 205 B After Width: | Height: | Size: 205 B |
Before Width: | Height: | Size: 231 B After Width: | Height: | Size: 231 B |
Before Width: | Height: | Size: 178 B After Width: | Height: | Size: 178 B |
Before Width: | Height: | Size: 204 B After Width: | Height: | Size: 204 B |
Before Width: | Height: | Size: 230 B After Width: | Height: | Size: 230 B |
Before Width: | Height: | Size: 224 B After Width: | Height: | Size: 224 B |
Before Width: | Height: | Size: 235 B After Width: | Height: | Size: 235 B |
Before Width: | Height: | Size: 222 B After Width: | Height: | Size: 222 B |
18
samples/CSharp/WPF_WinForms/About.xaml
Normal file
@ -0,0 +1,18 @@
|
||||
<Window
|
||||
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
|
||||
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
|
||||
x:Class="IE_WPF_WinForms.AboutDialog"
|
||||
x:Name="Window"
|
||||
xmlns:local="clr-namespace:IE_WPF_WinForms"
|
||||
Title="About Import/Export Sample"
|
||||
Width="312" Height="285">
|
||||
|
||||
<StackPanel Orientation="Vertical">
|
||||
<Label Content="Import/Export Sample," HorizontalAlignment="Center"/>
|
||||
<Label Content="Open CASCADE Technology " HorizontalAlignment="Center"/>
|
||||
<Image Source="occ_logo.bmp" Width="194" Height="100" />
|
||||
<Label Content="Copyright (C) 2004-2013, Open CASCADE S.A.S" HorizontalAlignment="Center"/>
|
||||
<Label Content="http://www.opencascade.com" HorizontalAlignment="Center"/>
|
||||
<Button Content="OK" HorizontalAlignment="Center" Width="75" Command="local:IECommands.AboutOk"/>
|
||||
</StackPanel>
|
||||
</Window>
|
40
samples/CSharp/WPF_WinForms/About.xaml.cs
Normal file
@ -0,0 +1,40 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Text;
|
||||
using System.Windows;
|
||||
using System.Windows.Controls;
|
||||
using System.Windows.Data;
|
||||
using System.Windows.Documents;
|
||||
using System.Windows.Input;
|
||||
using System.Windows.Media;
|
||||
using System.Windows.Media.Imaging;
|
||||
using System.Windows.Shapes;
|
||||
|
||||
namespace IE_WPF_WinForms
|
||||
{
|
||||
/// <summary>
|
||||
/// Interaction logic for About.xaml
|
||||
/// </summary>
|
||||
public partial class AboutDialog : Window
|
||||
{
|
||||
public AboutDialog()
|
||||
{
|
||||
this.InitializeComponent();
|
||||
|
||||
CommandBinding aBind_Ok = new CommandBinding( IECommands.AboutOk );
|
||||
aBind_Ok.Executed += OkCommand_Executed;
|
||||
aBind_Ok.CanExecute += OkCommand_CanExecute;
|
||||
CommandBindings.Add( aBind_Ok );
|
||||
}
|
||||
|
||||
private void OkCommand_Executed( object sender, ExecutedRoutedEventArgs e )
|
||||
{
|
||||
this.Close();
|
||||
}
|
||||
|
||||
private void OkCommand_CanExecute( object sender, CanExecuteRoutedEventArgs e )
|
||||
{
|
||||
e.CanExecute = true;
|
||||
}
|
||||
}
|
||||
}
|
14
samples/CSharp/WPF_WinForms/App.xaml
Normal file
@ -0,0 +1,14 @@
|
||||
<Application x:Class="IE_WPF_WinForms.App"
|
||||
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
|
||||
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
|
||||
StartupUri="MainWindow.xaml">
|
||||
<Application.Resources>
|
||||
|
||||
<ResourceDictionary>
|
||||
<ResourceDictionary.MergedDictionaries>
|
||||
<ResourceDictionary Source="Simple Styles.xaml"/>
|
||||
</ResourceDictionary.MergedDictionaries>
|
||||
</ResourceDictionary>
|
||||
|
||||
</Application.Resources>
|
||||
</Application>
|
16
samples/CSharp/WPF_WinForms/App.xaml.cs
Normal file
@ -0,0 +1,16 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Configuration;
|
||||
using System.Data;
|
||||
using System.Linq;
|
||||
using System.Windows;
|
||||
|
||||
namespace IE_WPF_WinForms
|
||||
{
|
||||
/// <summary>
|
||||
/// Interaction logic for App.xaml
|
||||
/// </summary>
|
||||
public partial class App : Application
|
||||
{
|
||||
}
|
||||
}
|
44
samples/CSharp/WPF_WinForms/IECommands.cs
Normal file
@ -0,0 +1,44 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Windows.Input;
|
||||
|
||||
namespace IE_WPF_WinForms
|
||||
{
|
||||
public class IECommands
|
||||
{
|
||||
public static RoutedUICommand New { get; private set; }
|
||||
public static RoutedUICommand Close { get; private set; }
|
||||
public static RoutedUICommand Quit { get; private set; }
|
||||
public static RoutedUICommand About { get; private set; }
|
||||
public static RoutedUICommand AboutOk { get; private set; }
|
||||
|
||||
static IECommands()
|
||||
{
|
||||
#region menu
|
||||
|
||||
InputGestureCollection inputsNew = new InputGestureCollection();
|
||||
inputsNew.Add( new KeyGesture( Key.N, ModifierKeys.Control, "Ctrl + N" ) );
|
||||
New = new RoutedUICommand( "New", "New", typeof(IECommands), inputsNew );
|
||||
|
||||
Close = new RoutedUICommand( "Close", "Close", typeof(IECommands) );
|
||||
|
||||
InputGestureCollection inputsQuit = new InputGestureCollection();
|
||||
inputsQuit.Add( new KeyGesture( Key.F4, ModifierKeys.Alt, "Alt + F4" ) );
|
||||
Quit = new RoutedUICommand( "Quit", "Quit", typeof(IECommands), inputsQuit );
|
||||
|
||||
InputGestureCollection inputsAbout = new InputGestureCollection();
|
||||
inputsAbout.Add( new KeyGesture( Key.F1 ) );
|
||||
About = new RoutedUICommand( "About", "About", typeof(IECommands), inputsAbout );
|
||||
|
||||
#endregion
|
||||
|
||||
#region aboutDlg
|
||||
InputGestureCollection inputsAboutOk = new InputGestureCollection();
|
||||
inputsAboutOk.Add( new KeyGesture( Key.Enter ) );
|
||||
AboutOk = new RoutedUICommand( "AboutOk", "AboutOk", typeof(IECommands), inputsAboutOk );
|
||||
#endregion
|
||||
}
|
||||
}
|
||||
}
|
@ -8,8 +8,8 @@
|
||||
<ProjectGuid>{D12A8897-5BF8-4345-BBB0-8ADE4B9FB9A7}</ProjectGuid>
|
||||
<OutputType>WinExe</OutputType>
|
||||
<AppDesignerFolder>Properties</AppDesignerFolder>
|
||||
<RootNamespace>IE_WPF</RootNamespace>
|
||||
<AssemblyName>IE_WPF</AssemblyName>
|
||||
<RootNamespace>IE_WPF_WinForms</RootNamespace>
|
||||
<AssemblyName>IE_WPF_WinForms</AssemblyName>
|
||||
<TargetFrameworkVersion>v4.0</TargetFrameworkVersion>
|
||||
<FileAlignment>512</FileAlignment>
|
||||
<ProjectTypeGuids>{60dc8134-eba5-43b8-bcc9-bb4bc16c2548};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</ProjectTypeGuids>
|
||||
@ -20,6 +20,21 @@
|
||||
<OldToolsVersion>3.5</OldToolsVersion>
|
||||
<UpgradeBackupLocation />
|
||||
<TargetFrameworkProfile />
|
||||
<IsWebBootstrapper>false</IsWebBootstrapper>
|
||||
<PublishUrl>publish\</PublishUrl>
|
||||
<Install>true</Install>
|
||||
<InstallFrom>Disk</InstallFrom>
|
||||
<UpdateEnabled>false</UpdateEnabled>
|
||||
<UpdateMode>Foreground</UpdateMode>
|
||||
<UpdateInterval>7</UpdateInterval>
|
||||
<UpdateIntervalUnits>Days</UpdateIntervalUnits>
|
||||
<UpdatePeriodically>false</UpdatePeriodically>
|
||||
<UpdateRequired>false</UpdateRequired>
|
||||
<MapFileExtensions>true</MapFileExtensions>
|
||||
<ApplicationRevision>0</ApplicationRevision>
|
||||
<ApplicationVersion>1.0.0.%2a</ApplicationVersion>
|
||||
<UseApplicationTrust>false</UseApplicationTrust>
|
||||
<BootstrapperEnabled>true</BootstrapperEnabled>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
|
||||
<DebugSymbols>true</DebugSymbols>
|
||||
@ -220,6 +235,23 @@
|
||||
<Name>OCCTProxy</Name>
|
||||
</ProjectReference>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<BootstrapperPackage Include="Microsoft.Net.Client.3.5">
|
||||
<Visible>False</Visible>
|
||||
<ProductName>.NET Framework 3.5 SP1 Client Profile</ProductName>
|
||||
<Install>false</Install>
|
||||
</BootstrapperPackage>
|
||||
<BootstrapperPackage Include="Microsoft.Net.Framework.3.5.SP1">
|
||||
<Visible>False</Visible>
|
||||
<ProductName>.NET Framework 3.5 SP1</ProductName>
|
||||
<Install>true</Install>
|
||||
</BootstrapperPackage>
|
||||
<BootstrapperPackage Include="Microsoft.Windows.Installer.3.1">
|
||||
<Visible>False</Visible>
|
||||
<ProductName>Windows Installer 3.1</ProductName>
|
||||
<Install>true</Install>
|
||||
</BootstrapperPackage>
|
||||
</ItemGroup>
|
||||
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
|
||||
<!-- To modify your build process, add your task inside one of the targets below and uncomment it.
|
||||
Other similar extension points exist, see Microsoft.Common.targets.
|
@ -1,8 +1,8 @@
|
||||
<Window
|
||||
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
|
||||
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
|
||||
x:Class="IE_WPF.MainWindow"
|
||||
xmlns:local="clr-namespace:IE_WPF"
|
||||
x:Class="IE_WPF_WinForms.MainWindow"
|
||||
xmlns:local="clr-namespace:IE_WPF_WinForms"
|
||||
Title="Sample Import/Export" Height="600" Width="900" Icon="res/MainFrame.ico">
|
||||
|
||||
<Window.Background>
|
@ -14,7 +14,7 @@ using System.Windows.Shapes;
|
||||
using System.ComponentModel;
|
||||
using System.Windows.Forms.Integration;
|
||||
|
||||
namespace IE_WPF
|
||||
namespace IE_WPF_WinForms
|
||||
{
|
||||
/// <summary>
|
||||
/// Interaction logic for MainWindow.xaml
|
20
samples/CSharp/WPF_WinForms/MaterialDlg.xaml
Normal file
@ -0,0 +1,20 @@
|
||||
<Window
|
||||
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
|
||||
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
|
||||
xmlns:d="http://schemas.microsoft.com/expression/blend/2008" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
|
||||
x:Class="IE_WPF_WinForms.MaterialDlg"
|
||||
x:Name="Window"
|
||||
Title="Material"
|
||||
Width="133" Height="181" mc:Ignorable="d">
|
||||
|
||||
<StackPanel Orientation="Vertical" d:LayoutOverrides="Height" HorizontalAlignment="Center" VerticalAlignment="Center">
|
||||
<RadioButton Name="PlasterBtn" Content="Plaster" Checked="PlasterBtn_Checked"/>
|
||||
<RadioButton Name="BrassBtn" Content="Brass" Checked="BrassBtn_Checked"/>
|
||||
<RadioButton Name="BronzeBtn" Content="Bronze" Checked="BronzeBtn_Checked"/>
|
||||
<RadioButton Name="CopperBtn" Content="Copper" Checked="CopperBtn_Checked"/>
|
||||
<RadioButton Name="GoldBtn" Content="Gold" Checked="GoldBtn_Checked"/>
|
||||
<RadioButton Name="PewterBtn" Content="Pewter" Checked="PewterBtn_Checked"/>
|
||||
<RadioButton Name="PlasticBtn" Content="Plastic" Checked="PlasticBtn_Checked"/>
|
||||
<RadioButton Name="SilverBtn" Content="Silver" Checked="SilverBtn_Checked"/>
|
||||
</StackPanel>
|
||||
</Window>
|
@ -10,7 +10,7 @@ using System.Windows.Media;
|
||||
using System.Windows.Media.Imaging;
|
||||
using System.Windows.Shapes;
|
||||
|
||||
namespace IE_WPF
|
||||
namespace IE_WPF_WinForms
|
||||
{
|
||||
public enum Material
|
||||
{
|
@ -4,7 +4,7 @@ using System.Linq;
|
||||
using System.Text;
|
||||
using System.Windows.Forms;
|
||||
|
||||
namespace IE_WPF
|
||||
namespace IE_WPF_WinForms
|
||||
{
|
||||
public enum CurrentAction3d
|
||||
{
|
55
samples/CSharp/WPF_WinForms/Properties/AssemblyInfo.cs
Normal file
@ -0,0 +1,55 @@
|
||||
using System.Reflection;
|
||||
using System.Resources;
|
||||
using System.Runtime.CompilerServices;
|
||||
using System.Runtime.InteropServices;
|
||||
using System.Windows;
|
||||
|
||||
// General Information about an assembly is controlled through the following
|
||||
// set of attributes. Change these attribute values to modify the information
|
||||
// associated with an assembly.
|
||||
[assembly: AssemblyTitle("IE")]
|
||||
[assembly: AssemblyDescription("")]
|
||||
[assembly: AssemblyConfiguration("")]
|
||||
[assembly: AssemblyCompany("")]
|
||||
[assembly: AssemblyProduct("IE")]
|
||||
[assembly: AssemblyCopyright("Copyright © 2013")]
|
||||
[assembly: AssemblyTrademark("")]
|
||||
[assembly: AssemblyCulture("")]
|
||||
|
||||
// Setting ComVisible to false makes the types in this assembly not visible
|
||||
// to COM components. If you need to access a type in this assembly from
|
||||
// COM, set the ComVisible attribute to true on that type.
|
||||
[assembly: ComVisible(false)]
|
||||
|
||||
//In order to begin building localizable applications, set
|
||||
//<UICulture>CultureYouAreCodingWith</UICulture> in your .csproj file
|
||||
//inside a <PropertyGroup>. For example, if you are using US english
|
||||
//in your source files, set the <UICulture> to en-US. Then uncomment
|
||||
//the NeutralResourceLanguage attribute below. Update the "en-US" in
|
||||
//the line below to match the UICulture setting in the project file.
|
||||
|
||||
//[assembly: NeutralResourcesLanguage("en-US", UltimateResourceFallbackLocation.Satellite)]
|
||||
|
||||
|
||||
[assembly: ThemeInfo(
|
||||
ResourceDictionaryLocation.None, //where theme specific resource dictionaries are located
|
||||
//(used if a resource is not found in the page,
|
||||
// or application resource dictionaries)
|
||||
ResourceDictionaryLocation.SourceAssembly //where the generic resource dictionary is located
|
||||
//(used if a resource is not found in the page,
|
||||
// app, or any theme specific resource dictionaries)
|
||||
)]
|
||||
|
||||
|
||||
// Version information for an assembly consists of the following four values:
|
||||
//
|
||||
// Major Version
|
||||
// Minor Version
|
||||
// Build Number
|
||||
// Revision
|
||||
//
|
||||
// You can specify all the values or you can default the Build and Revision Numbers
|
||||
// by using the '*' as shown below:
|
||||
// [assembly: AssemblyVersion("1.0.*")]
|
||||
[assembly: AssemblyVersion("1.0.0.0")]
|
||||
[assembly: AssemblyFileVersion("1.0.0.0")]
|
63
samples/CSharp/WPF_WinForms/Properties/Resources.Designer.cs
generated
Normal file
@ -0,0 +1,63 @@
|
||||
//------------------------------------------------------------------------------
|
||||
// <auto-generated>
|
||||
// This code was generated by a tool.
|
||||
// Runtime Version:4.0.30319.18444
|
||||
//
|
||||
// Changes to this file may cause incorrect behavior and will be lost if
|
||||
// the code is regenerated.
|
||||
// </auto-generated>
|
||||
//------------------------------------------------------------------------------
|
||||
|
||||
namespace IE_WPF_WinForms.Properties {
|
||||
using System;
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// A strongly-typed resource class, for looking up localized strings, etc.
|
||||
/// </summary>
|
||||
// This class was auto-generated by the StronglyTypedResourceBuilder
|
||||
// class via a tool like ResGen or Visual Studio.
|
||||
// To add or remove a member, edit your .ResX file then rerun ResGen
|
||||
// with the /str option, or rebuild your VS project.
|
||||
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "4.0.0.0")]
|
||||
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
|
||||
[global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
|
||||
internal class Resources {
|
||||
|
||||
private static global::System.Resources.ResourceManager resourceMan;
|
||||
|
||||
private static global::System.Globalization.CultureInfo resourceCulture;
|
||||
|
||||
[global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
|
||||
internal Resources() {
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Returns the cached ResourceManager instance used by this class.
|
||||
/// </summary>
|
||||
[global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
|
||||
internal static global::System.Resources.ResourceManager ResourceManager {
|
||||
get {
|
||||
if (object.ReferenceEquals(resourceMan, null)) {
|
||||
global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("IE_WPF_WinForms.Properties.Resources", typeof(Resources).Assembly);
|
||||
resourceMan = temp;
|
||||
}
|
||||
return resourceMan;
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Overrides the current thread's CurrentUICulture property for all
|
||||
/// resource lookups using this strongly typed resource class.
|
||||
/// </summary>
|
||||
[global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
|
||||
internal static global::System.Globalization.CultureInfo Culture {
|
||||
get {
|
||||
return resourceCulture;
|
||||
}
|
||||
set {
|
||||
resourceCulture = value;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
117
samples/CSharp/WPF_WinForms/Properties/Resources.resx
Normal file
@ -0,0 +1,117 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<root>
|
||||
<!--
|
||||
Microsoft ResX Schema
|
||||
|
||||
Version 2.0
|
||||
|
||||
The primary goals of this format is to allow a simple XML format
|
||||
that is mostly human readable. The generation and parsing of the
|
||||
various data types are done through the TypeConverter classes
|
||||
associated with the data types.
|
||||
|
||||
Example:
|
||||
|
||||
... ado.net/XML headers & schema ...
|
||||
<resheader name="resmimetype">text/microsoft-resx</resheader>
|
||||
<resheader name="version">2.0</resheader>
|
||||
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
|
||||
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
|
||||
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
|
||||
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
|
||||
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
|
||||
<value>[base64 mime encoded serialized .NET Framework object]</value>
|
||||
</data>
|
||||
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
|
||||
<comment>This is a comment</comment>
|
||||
</data>
|
||||
|
||||
There are any number of "resheader" rows that contain simple
|
||||
name/value pairs.
|
||||
|
||||
Each data row contains a name, and value. The row also contains a
|
||||
type or mimetype. Type corresponds to a .NET class that support
|
||||
text/value conversion through the TypeConverter architecture.
|
||||
Classes that don't support this are serialized and stored with the
|
||||
mimetype set.
|
||||
|
||||
The mimetype is used for serialized objects, and tells the
|
||||
ResXResourceReader how to depersist the object. This is currently not
|
||||
extensible. For a given mimetype the value must be set accordingly:
|
||||
|
||||
Note - application/x-microsoft.net.object.binary.base64 is the format
|
||||
that the ResXResourceWriter will generate, however the reader can
|
||||
read any of the formats listed below.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.binary.base64
|
||||
value : The object must be serialized with
|
||||
: System.Serialization.Formatters.Binary.BinaryFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.soap.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.bytearray.base64
|
||||
value : The object must be serialized into a byte array
|
||||
: using a System.ComponentModel.TypeConverter
|
||||
: and then encoded with base64 encoding.
|
||||
-->
|
||||
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
|
||||
<xsd:element name="root" msdata:IsDataSet="true">
|
||||
<xsd:complexType>
|
||||
<xsd:choice maxOccurs="unbounded">
|
||||
<xsd:element name="metadata">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" />
|
||||
<xsd:attribute name="type" type="xsd:string" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="assembly">
|
||||
<xsd:complexType>
|
||||
<xsd:attribute name="alias" type="xsd:string" />
|
||||
<xsd:attribute name="name" type="xsd:string" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="data">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" msdata:Ordinal="1" />
|
||||
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="resheader">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:choice>
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:schema>
|
||||
<resheader name="resmimetype">
|
||||
<value>text/microsoft-resx</value>
|
||||
</resheader>
|
||||
<resheader name="version">
|
||||
<value>2.0</value>
|
||||
</resheader>
|
||||
<resheader name="reader">
|
||||
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<resheader name="writer">
|
||||
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
</root>
|
26
samples/CSharp/WPF_WinForms/Properties/Settings.Designer.cs
generated
Normal file
@ -0,0 +1,26 @@
|
||||
//------------------------------------------------------------------------------
|
||||
// <auto-generated>
|
||||
// This code was generated by a tool.
|
||||
// Runtime Version:4.0.30319.18444
|
||||
//
|
||||
// Changes to this file may cause incorrect behavior and will be lost if
|
||||
// the code is regenerated.
|
||||
// </auto-generated>
|
||||
//------------------------------------------------------------------------------
|
||||
|
||||
namespace IE_WPF_WinForms.Properties {
|
||||
|
||||
|
||||
[global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
|
||||
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "10.0.0.0")]
|
||||
internal sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase {
|
||||
|
||||
private static Settings defaultInstance = ((Settings)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new Settings())));
|
||||
|
||||
public static Settings Default {
|
||||
get {
|
||||
return defaultInstance;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
7
samples/CSharp/WPF_WinForms/Properties/Settings.settings
Normal file
@ -0,0 +1,7 @@
|
||||
<?xml version='1.0' encoding='utf-8'?>
|
||||
<SettingsFile xmlns="uri:settings" CurrentProfile="(Default)">
|
||||
<Profiles>
|
||||
<Profile Name="(Default)" />
|
||||
</Profiles>
|
||||
<Settings />
|
||||
</SettingsFile>
|
1134
samples/CSharp/WPF_WinForms/Simple Styles.xaml
Normal file
@ -4,7 +4,7 @@ using System.Collections;
|
||||
using System.ComponentModel;
|
||||
using System.Windows.Forms;
|
||||
|
||||
namespace IE_WPF
|
||||
namespace IE_WPF_WinForms
|
||||
{
|
||||
/// <summary>
|
||||
/// Summary description for TransparencyDialog.
|
206
samples/CSharp/WPF_WinForms/TransparencyDialog.resx
Normal file
@ -0,0 +1,206 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<root>
|
||||
<!--
|
||||
Microsoft ResX Schema
|
||||
|
||||
Version 1.3
|
||||
|
||||
The primary goals of this format is to allow a simple XML format
|
||||
that is mostly human readable. The generation and parsing of the
|
||||
various data types are done through the TypeConverter classes
|
||||
associated with the data types.
|
||||
|
||||
Example:
|
||||
|
||||
... ado.net/XML headers & schema ...
|
||||
<resheader name="resmimetype">text/microsoft-resx</resheader>
|
||||
<resheader name="version">1.3</resheader>
|
||||
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
|
||||
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
|
||||
<data name="Name1">this is my long string</data>
|
||||
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
|
||||
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
|
||||
[base64 mime encoded serialized .NET Framework object]
|
||||
</data>
|
||||
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
[base64 mime encoded string representing a byte array form of the .NET Framework object]
|
||||
</data>
|
||||
|
||||
There are any number of "resheader" rows that contain simple
|
||||
name/value pairs.
|
||||
|
||||
Each data row contains a name, and value. The row also contains a
|
||||
type or mimetype. Type corresponds to a .NET class that support
|
||||
text/value conversion through the TypeConverter architecture.
|
||||
Classes that don't support this are serialized and stored with the
|
||||
mimetype set.
|
||||
|
||||
The mimetype is used forserialized objects, and tells the
|
||||
ResXResourceReader how to depersist the object. This is currently not
|
||||
extensible. For a given mimetype the value must be set accordingly:
|
||||
|
||||
Note - application/x-microsoft.net.object.binary.base64 is the format
|
||||
that the ResXResourceWriter will generate, however the reader can
|
||||
read any of the formats listed below.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.binary.base64
|
||||
value : The object must be serialized with
|
||||
: System.Serialization.Formatters.Binary.BinaryFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.soap.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.bytearray.base64
|
||||
value : The object must be serialized into a byte array
|
||||
: using a System.ComponentModel.TypeConverter
|
||||
: and then encoded with base64 encoding.
|
||||
-->
|
||||
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
|
||||
<xsd:element name="root" msdata:IsDataSet="true">
|
||||
<xsd:complexType>
|
||||
<xsd:choice maxOccurs="unbounded">
|
||||
<xsd:element name="data">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" msdata:Ordinal="1" />
|
||||
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="resheader">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:choice>
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:schema>
|
||||
<resheader name="resmimetype">
|
||||
<value>text/microsoft-resx</value>
|
||||
</resheader>
|
||||
<resheader name="version">
|
||||
<value>1.3</value>
|
||||
</resheader>
|
||||
<resheader name="reader">
|
||||
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<resheader name="writer">
|
||||
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<data name="MyTransparency.Locked" type="System.Boolean, mscorlib, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
||||
<value>False</value>
|
||||
</data>
|
||||
<data name="MyTransparency.DefaultModifiers" type="System.CodeDom.MemberAttributes, System, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
||||
<value>Private</value>
|
||||
</data>
|
||||
<data name="MyTransparency.Modifiers" type="System.CodeDom.MemberAttributes, System, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
||||
<value>Private</value>
|
||||
</data>
|
||||
<data name="$this.Locked" type="System.Boolean, mscorlib, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
||||
<value>False</value>
|
||||
</data>
|
||||
<data name="$this.Language" type="System.Globalization.CultureInfo, mscorlib, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
||||
<value>(Default)</value>
|
||||
</data>
|
||||
<data name="$this.TrayLargeIcon" type="System.Boolean, mscorlib, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
||||
<value>False</value>
|
||||
</data>
|
||||
<data name="$this.Localizable" type="System.Boolean, mscorlib, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
||||
<value>False</value>
|
||||
</data>
|
||||
<data name="$this.GridSize" type="System.Drawing.Size, System.Drawing, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
|
||||
<value>8, 8</value>
|
||||
</data>
|
||||
<data name="$this.DrawGrid" type="System.Boolean, mscorlib, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
||||
<value>True</value>
|
||||
</data>
|
||||
<data name="$this.TrayHeight" type="System.Int32, mscorlib, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
||||
<value>80</value>
|
||||
</data>
|
||||
<data name="$this.SnapToGrid" type="System.Boolean, mscorlib, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
||||
<value>True</value>
|
||||
</data>
|
||||
<data name="$this.DefaultModifiers" type="System.CodeDom.MemberAttributes, System, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
||||
<value>Private</value>
|
||||
</data>
|
||||
<data name="$this.Name">
|
||||
<value>TransparencyDialog</value>
|
||||
</data>
|
||||
<data name="$this.Icon" type="System.Drawing.Icon, System.Drawing, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>
|
||||
AAABAAEAMDAAAAAAAACoDgAAFgAAACgAAAAwAAAAYAAAAAEACAAAAAAAgAoAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAACAAACAAAAAgIAAgAAAAIAAgACAgAAAwMDAAMDcwADwyqYABAQEAAgICAAMDAwAERERABYW
|
||||
FgAcHBwAIiIiACkpKQBVVVUATU1NAEJCQgA5OTkAgHz/AFBQ/wCTANYA/+zMAMbW7wDW5+cAkKmtAAAA
|
||||
MwAAAGYAAACZAAAAzAAAMwAAADMzAAAzZgAAM5kAADPMAAAz/wAAZgAAAGYzAABmZgAAZpkAAGbMAABm
|
||||
/wAAmQAAAJkzAACZZgAAmZkAAJnMAACZ/wAAzAAAAMwzAADMZgAAzJkAAMzMAADM/wAA/2YAAP+ZAAD/
|
||||
zAAzAAAAMwAzADMAZgAzAJkAMwDMADMA/wAzMwAAMzMzADMzZgAzM5kAMzPMADMz/wAzZgAAM2YzADNm
|
||||
ZgAzZpkAM2bMADNm/wAzmQAAM5kzADOZZgAzmZkAM5nMADOZ/wAzzAAAM8wzADPMZgAzzJkAM8zMADPM
|
||||
/wAz/zMAM/9mADP/mQAz/8wAM///AGYAAABmADMAZgBmAGYAmQBmAMwAZgD/AGYzAABmMzMAZjNmAGYz
|
||||
mQBmM8wAZjP/AGZmAABmZjMAZmZmAGZmmQBmZswAZpkAAGaZMwBmmWYAZpmZAGaZzABmmf8AZswAAGbM
|
||||
MwBmzJkAZszMAGbM/wBm/wAAZv8zAGb/mQBm/8wAzAD/AP8AzACZmQAAmTOZAJkAmQCZAMwAmQAAAJkz
|
||||
MwCZAGYAmTPMAJkA/wCZZgAAmWYzAJkzZgCZZpkAmWbMAJkz/wCZmTMAmZlmAJmZmQCZmcwAmZn/AJnM
|
||||
AACZzDMAZsxmAJnMmQCZzMwAmcz/AJn/AACZ/zMAmcxmAJn/mQCZ/8wAmf//AMwAAACZADMAzABmAMwA
|
||||
mQDMAMwAmTMAAMwzMwDMM2YAzDOZAMwzzADMM/8AzGYAAMxmMwCZZmYAzGaZAMxmzACZZv8AzJkAAMyZ
|
||||
MwDMmWYAzJmZAMyZzADMmf8AzMwAAMzMMwDMzGYAzMyZAMzMzADMzP8AzP8AAMz/MwCZ/2YAzP+ZAMz/
|
||||
zADM//8AzAAzAP8AZgD/AJkAzDMAAP8zMwD/M2YA/zOZAP8zzAD/M/8A/2YAAP9mMwDMZmYA/2aZAP9m
|
||||
zADMZv8A/5kAAP+ZMwD/mWYA/5mZAP+ZzAD/mf8A/8wAAP/MMwD/zGYA/8yZAP/MzAD/zP8A//8zAMz/
|
||||
ZgD//5kA///MAGZm/wBm/2YAZv//AP9mZgD/Zv8A//9mACEApQBfX18Ad3d3AIaGhgCWlpYAy8vLALKy
|
||||
sgDX19cA3d3dAOPj4wDq6uoA8fHxAPj4+ADw+/8ApKCgAICAgAAAAP8AAP8AAAD//wD/AAAA/wD/AP//
|
||||
AAD///8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABMT
|
||||
ExMTExMTEyIiQiI8HTyCAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAALwDODg4Nzc4MQMdAAAA
|
||||
AADDAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOw4ODgyOCQAAAAdAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAODIyMSIAHewAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAA7DI3MSIdCwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAADEyMQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAs4JAALAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAALwxJAAhAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA4IgC8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAJAxJB0LAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
ALwLCx0dIh0dCwATAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACx0dAB0dIiIiIiId
|
||||
CxMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAvAsdAB0dIiQkAyQkIiIiHSIAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAALAAAAIgMxMVhZmZqZAyQiHR0AAAAAkAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAvAsdISIDMThZWVmgvaCZWVIkIh0AAB0dIh0hCwALCwALtgAAAAAAAAAAAAAAAOwAAB0iMTEx
|
||||
ODhYWZrDw8Ofn1hSJCIAHQAdACIAHSIkAwsdOAAAAADeExMTCwsLIiIkMTEyODg3MllZmprDw8PDwllS
|
||||
MSQdHQAAAB0AIiQkAAAAvDi8AAAxAzExMTExMTI4Nzg4ODc4ODhZXpnDw8PDml1YNwMkIh0AAB0hIiQA
|
||||
AAAAACIAAAA4ODc4Nzg4ODg4ODg4ODg4ODhZWV6avb2gmllZODcxJCIAAAAdIgMLAAAAACIAAACGE0+G
|
||||
T4bs7Oy8vLy8vAAxODg4ODg4NzIyMSQdHQAAvADsCwAiJDExAAAAwjjsAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAALMSQAAAAAAAAAAAAAAAAAEyI4MQsiOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAALMSQAAAAA
|
||||
AAAAAAAAAAAAAAC8CwsAEwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAC8AAsAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA////////AAD///////8AAP///////wAA////////
|
||||
AAD///////8AAP///////wAA////////AAD///////8AAP///////wAA////////AAD///////8AAP//
|
||||
/////wAA//8AAH//AAD//wAAf/8AAP//4AP//wAA///4B///AAD///gP//8AAP///B///wAA///8H///
|
||||
AAD///wf//8AAP///h///wAA///8H///AAD//+AD//8AAP//wAD//wAA//4AAD//AAD//AAAB/8AAP/w
|
||||
AAAAAwAA/8AAAAABAADAAAAAADgAAMAAAAAAPAAAwAAAAAA8AADAAAAAIDgAAP///j/+AQAA///+P/+D
|
||||
AAD///4///8AAP///////wAA////////AAD///////8AAP///////wAA////////AAD///////8AAP//
|
||||
/////wAA////////AAD///////8AAP///////wAA////////AAD///////8AAP///////wAA
|
||||
</value>
|
||||
</data>
|
||||
</root>
|
3
samples/CSharp/WPF_WinForms/app.config
Normal file
@ -0,0 +1,3 @@
|
||||
<?xml version="1.0"?>
|
||||
<configuration>
|
||||
<startup><supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.0"/></startup></configuration>
|
BIN
samples/CSharp/WPF_WinForms/res/MainFrame.ico
Normal file
After Width: | Height: | Size: 3.7 KiB |
BIN
samples/CSharp/WPF_WinForms/res/document.png
Normal file
After Width: | Height: | Size: 241 B |
BIN
samples/CSharp/WPF_WinForms/res/help.png
Normal file
After Width: | Height: | Size: 214 B |
BIN
samples/CSharp/WPF_WinForms/res/lamp.png
Normal file
After Width: | Height: | Size: 1.3 KiB |
BIN
samples/CSharp/WPF_WinForms/res/new.png
Normal file
After Width: | Height: | Size: 177 B |
BIN
samples/CSharp/WPF_WinForms/res/occ_logo.bmp
Normal file
After Width: | Height: | Size: 57 KiB |
BIN
samples/CSharp/WPF_WinForms/res/tool_color.png
Normal file
After Width: | Height: | Size: 283 B |
BIN
samples/CSharp/WPF_WinForms/res/tool_delete.png
Normal file
After Width: | Height: | Size: 1.2 KiB |
BIN
samples/CSharp/WPF_WinForms/res/tool_material.png
Normal file
After Width: | Height: | Size: 283 B |
BIN
samples/CSharp/WPF_WinForms/res/tool_shading.png
Normal file
After Width: | Height: | Size: 256 B |
BIN
samples/CSharp/WPF_WinForms/res/tool_transparency.png
Normal file
After Width: | Height: | Size: 234 B |
BIN
samples/CSharp/WPF_WinForms/res/tool_wireframe.png
Normal file
After Width: | Height: | Size: 186 B |
BIN
samples/CSharp/WPF_WinForms/res/view_axo.png
Normal file
After Width: | Height: | Size: 262 B |
BIN
samples/CSharp/WPF_WinForms/res/view_back.png
Normal file
After Width: | Height: | Size: 233 B |
BIN
samples/CSharp/WPF_WinForms/res/view_bottom.png
Normal file
After Width: | Height: | Size: 233 B |
BIN
samples/CSharp/WPF_WinForms/res/view_comp_off.png
Normal file
After Width: | Height: | Size: 199 B |
BIN
samples/CSharp/WPF_WinForms/res/view_comp_on.png
Normal file
After Width: | Height: | Size: 180 B |