Files
wg_cpso/vtkControl/vtkControl.Designer.cs
2026-03-25 18:20:24 +08:00

486 lines
18 KiB
C#

namespace vtkControl
{
partial class vtkControl
{
/// <summary>
/// Required designer variable.
/// </summary>
private System.ComponentModel.IContainer components = null;
/// <summary>
/// Clean up any resources being used.
/// </summary>
/// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
protected override void Dispose(bool disposing)
{
try
{
if (disposing)
{
if (components != null)
{
components.Dispose();
}
}
}
finally
{
base.Dispose(disposing);
}
}
/// <summary>
/// Called to set the vtkRenderWindow size according to this control's
/// Size property.
/// </summary>
internal void SyncRenderWindowSize()
{
if (this._renderWindow != null)
{
this._renderWindow.SetSize(this.Size.Width, this.Size.Height);
}
}
private System.IntPtr XDisplay;
/// <summary>
/// Retrieve the X11 Display* to pass to VTK's vtkRenderWindow::SetDisplayId
/// </summary>
private System.IntPtr GetXDisplay()
{
System.Type xplatui = System.Type.GetType("System.Windows.Forms.XplatUIX11, System.Windows.Forms");
if (xplatui != null)
{
System.IntPtr DisplayHandle = (System.IntPtr)xplatui.
GetField("DisplayHandle", System.Reflection.BindingFlags.Static | System.Reflection.BindingFlags.NonPublic).
GetValue(null);
XDisplay = DisplayHandle;
// Also, may need possibly:
// Setup correct X visual and colormap so that VTK OpenGL stuff
// works properly on mono/X11. Cache the display value so that we
// can use it to set the RenderWindowId in OnCreated.
//System.IntPtr RootWindow = (System.IntPtr)xplatui.GetField("RootWindow", System.Reflection.BindingFlags.Static |
//System.Reflection.BindingFlags.NonPublic).GetValue(null);
//int ScreenNo = (int)xplatui.GetField("ScreenNo", System.Reflection.BindingFlags.Static |
//System.Reflection.BindingFlags.NonPublic).GetValue(null);
//int[] dblBuf = new int[] { 5, (int)GLXFlags.GLX_RGBA, (int)GLXFlags.GLX_RED_SIZE, 1, (int)GLXFlags.GLX_GREEN_SIZE,
//1, (int)GLXFlags.GLX_BLUE_SIZE, 1, (int)GLXFlags.GLX_DEPTH_SIZE, 1, 0 };
//GLXVisualInfo = glXChooseVisual(DisplayHandle, ScreenNo, dblBuf);
//XVisualInfo xVisualInfo = (XVisualInfo)Marshal.PtrToStructure(GLXVisualInfo, typeof(XVisualInfo));
//System.IntPtr visual = System.IntPtr.Zero; // xVisualInfo.visual;
//System.IntPtr colormap = XCreateColormap(DisplayHandle, RootWindow, visual, 0/*AllocNone*/);
//xplatui.GetField("CustomVisual", System.Reflection.BindingFlags.Static |
//System.Reflection.BindingFlags.NonPublic).SetValue(null, visual);
//xplatui.GetField("CustomColormap", System.Reflection.BindingFlags.Static |
//System.Reflection.BindingFlags.NonPublic).SetValue(null, colormap);
}
return XDisplay;
}
private bool AttachedInteractor;
private void AttachInteractor()
{
if (!this.AttachedInteractor)
{
this.AttachedInteractor = true;
this._renderWindow.SetInteractor(this._renderWindowInteractor);
}
}
/// <summary>
/// OnHandleCreated.
/// </summary>
protected override void OnHandleCreated(System.EventArgs e)
{
if (!this.DesignMode)
{
this._renderer = Kitware.VTK.vtkRenderer.New();
this._renderer.SetLayer(0);
this._overlayRenderer = Kitware.VTK.vtkRenderer.New();
this._overlayRenderer.SetLayer(1);
this._overlayRenderer.InteractiveOff();
this._overlayRenderer.SetActiveCamera(this._renderer.GetActiveCamera());
this._selectionRenderer = Kitware.VTK.vtkRenderer.New();
this._selectionRenderer.SetLayer(2);
this._selectionRenderer.InteractiveOff();
this._selectionRenderer.SetActiveCamera(this._renderer.GetActiveCamera());
this._renderWindow = Kitware.VTK.vtkRenderWindow.New();
System.IntPtr xdisplay = GetXDisplay();
bool isX11 = false;
if (System.IntPtr.Zero != xdisplay)
{
isX11 = true;
}
if (isX11)
{
// If running an X11-based build, then we must use a
// vtkGenericRenderWindowInteractor:
//
this._renderWindowInteractor = Kitware.VTK.vtkGenericRenderWindowInteractor.New();
this._renderWindow.SetDisplayId(xdisplay);
}
else
{
// Allow the native factory method to produce the natively expected subclass
// of vtkRenderWindowInteractor:
//
this._renderWindowInteractor = Kitware.VTK.vtkRenderWindowInteractor.New();
}
Kitware.VTK.vtkInteractorStyleSwitch style = this._renderWindowInteractor.GetInteractorStyle() as Kitware.VTK.vtkInteractorStyleSwitch;
if (null != style)
{
style.SetCurrentStyleToTrackballCamera();
}
this._renderWindow.SetParentId(this.Handle);
this._renderWindow.SetNumberOfLayers(3);
this._renderWindow.AddRenderer(this._renderer);
this._renderWindow.AddRenderer(this._overlayRenderer);
this._renderWindow.AddRenderer(this._selectionRenderer);
if (!isX11)
{
this.AttachInteractor();
}
//InitializeControl();
}
base.OnHandleCreated(e);
}
/// <summary>
/// OnHandleDestroyed.
/// </summary>
protected override void OnHandleDestroyed(System.EventArgs e)
{
if (this._renderer != null) this._renderer.SetRenderWindow(null);
if (this._overlayRenderer != null) this._overlayRenderer.SetRenderWindow(null);
if (this._selectionRenderer != null) this._selectionRenderer.SetRenderWindow(null);
if (this._renderWindowInteractor != null)
{
if (_coorSys != null) this._coorSys.SetInteractor(null);
//if (_statusBlockWidget != null) this._statusBlockWidget.SetInteractor(null, null);
//if (_minValueWidget != null) this._minValueWidget.SetInteractor(null, null);
//if (_maxValueWidget != null) this._maxValueWidget.SetInteractor(null, null);
//if (_probeWidget != null) this._probeWidget.SetInteractor(null, null);
//if (_scalarBarWidget != null) this._scalarBarWidget.SetInteractor(null, null);
this._renderWindowInteractor.Dispose();
this._renderWindowInteractor = null;
}
if (this._renderWindow != null)
{
this._renderWindow.Dispose();
this._renderWindow = null;
}
if (this._renderer != null)
{
this._renderer.Dispose();
this._renderer = null;
}
if (this._overlayRenderer != null)
{
this._overlayRenderer.Dispose();
this._overlayRenderer = null;
}
if (this._selectionRenderer != null)
{
this._selectionRenderer.Dispose();
this._selectionRenderer = null;
}
base.OnHandleDestroyed(e);
}
/// <summary>
/// OnMouseDown.
/// </summary>
protected override void OnMouseDown(System.Windows.Forms.MouseEventArgs e)
{
// This is only for X11
Kitware.VTK.vtkGenericRenderWindowInteractor grwi = this._renderWindowInteractor as Kitware.VTK.vtkGenericRenderWindowInteractor;
if (null != grwi)
{
grwi.SetEventInformationFlipY(e.X, e.Y, 0, 0, 0, e.Clicks, null);
switch (e.Button)
{
case System.Windows.Forms.MouseButtons.Left:
grwi.LeftButtonPressEvent();
break;
case System.Windows.Forms.MouseButtons.Middle:
grwi.MiddleButtonPressEvent();
break;
case System.Windows.Forms.MouseButtons.Right:
grwi.RightButtonPressEvent();
break;
}
}
Kitware.VTK.vtkRenderWindowInteractor rwi = this._renderWindowInteractor as Kitware.VTK.vtkRenderWindowInteractor;
if (null != rwi)
{
rwi.SetEventInformationFlipY(e.X, e.Y, 0, 0, 0, e.Clicks, null);
switch (e.Button)
{
case System.Windows.Forms.MouseButtons.Left:
rwi.LeftButtonPressEvent();
break;
case System.Windows.Forms.MouseButtons.Middle:
rwi.MiddleButtonPressEvent();
break;
case System.Windows.Forms.MouseButtons.Right:
rwi.RightButtonPressEvent();
break;
}
}
}
/// <summary>
/// OnMouseMove.
/// </summary>
protected override void OnMouseMove(System.Windows.Forms.MouseEventArgs e)
{
// This is only for X11
Kitware.VTK.vtkGenericRenderWindowInteractor grwi = this._renderWindowInteractor as Kitware.VTK.vtkGenericRenderWindowInteractor;
if (null != grwi)
{
grwi.SetEventInformationFlipY(e.X, e.Y, 0, 0, 0, e.Clicks, null);
grwi.MouseMoveEvent();
}
}
/// <summary>
/// OnMouseUp.
/// </summary>
protected override void OnMouseUp(System.Windows.Forms.MouseEventArgs e)
{
// This is only for X11
Kitware.VTK.vtkGenericRenderWindowInteractor grwi = this._renderWindowInteractor as Kitware.VTK.vtkGenericRenderWindowInteractor;
if (null != grwi)
{
grwi.SetEventInformationFlipY(e.X, e.Y, 0, 0, 0, e.Clicks, null);
switch (e.Button)
{
case System.Windows.Forms.MouseButtons.Left:
grwi.LeftButtonReleaseEvent();
break;
case System.Windows.Forms.MouseButtons.Middle:
grwi.MiddleButtonReleaseEvent();
break;
case System.Windows.Forms.MouseButtons.Right:
grwi.RightButtonReleaseEvent();
break;
}
}
}
/// <summary>
/// OnMouseWheel.
/// </summary>
protected override void OnMouseWheel(System.Windows.Forms.MouseEventArgs e)
{
//Kitware.VTK.vtkGenericRenderWindowInteractor grwi = this._renderWindowInteractor as Kitware.VTK.vtkGenericRenderWindowInteractor;
Kitware.VTK.vtkRenderWindowInteractor grwi = this._renderWindowInteractor;
if (null != grwi)
{
grwi.SetEventInformationFlipY(e.X, e.Y, 0, 0, 0, e.Clicks, null);
if (_mouseIn)
{
if (e.Delta > 0)
{
grwi.MouseWheelForwardEvent();
}
else
{
grwi.MouseWheelBackwardEvent();
}
}
}
}
/// <summary>
/// OnKeyDown.
/// </summary>
protected override void OnKeyDown(System.Windows.Forms.KeyEventArgs e)
{
if (this._renderWindowInteractor is Kitware.VTK.vtkGenericRenderWindowInteractor grwi)
{
grwi.SetKeyEventInformation(e.Control ? 1 : 0, e.Shift ? 1 : 0, (sbyte)e.KeyCode, 1, null);
grwi.KeyPressEvent();
}
else if (this._renderWindowInteractor is Kitware.VTK.vtkRenderWindowInteractor rwi)
{
rwi.SetKeyEventInformation(e.Control ? 1 : 0, e.Shift ? 1 : 0, (sbyte)e.KeyCode, 1, null);
rwi.KeyPressEvent();
}
}
/// <summary>
/// OnKeyPress.
/// </summary>
protected override void OnKeyPress(System.Windows.Forms.KeyPressEventArgs e)
{
Kitware.VTK.vtkGenericRenderWindowInteractor grwi = this._renderWindowInteractor as Kitware.VTK.vtkGenericRenderWindowInteractor;
if (null != grwi)
{
grwi.SetKeyEventInformation(0, 0, (sbyte)e.KeyChar, 1, e.KeyChar.ToString());
grwi.CharEvent();
}
}
/// <summary>
/// OnKeyUp.
/// </summary>
protected override void OnKeyUp(System.Windows.Forms.KeyEventArgs e)
{
Kitware.VTK.vtkGenericRenderWindowInteractor grwi = this._renderWindowInteractor as Kitware.VTK.vtkGenericRenderWindowInteractor;
if (null != grwi)
{
grwi.SetKeyEventInformation(e.Control ? 1 : 0, e.Shift ? 1 : 0, (sbyte)e.KeyCode, 1, null);
grwi.KeyReleaseEvent();
}
}
/// <summary>
/// OnSizeChanged fires after the Size property has changed value.
/// </summary>
protected override void OnSizeChanged(System.EventArgs e)
{
this.SyncRenderWindowSize();
Kitware.VTK.vtkGenericRenderWindowInteractor grwi = this._renderWindowInteractor as Kitware.VTK.vtkGenericRenderWindowInteractor;
if (null != grwi)
{
grwi.ConfigureEvent();
}
base.OnSizeChanged(e);
this.Invalidate();
}
[System.Runtime.InteropServices.DllImport("user32.dll")]
internal static extern System.IntPtr SetFocus(System.IntPtr hWnd);
/// <summary>
/// OnGotFocus fires after Windows keyboard focus enters the control.
/// </summary>
protected override void OnGotFocus(System.EventArgs e)
{
if (this._renderWindow != null)
{
System.IntPtr hWnd = (System.IntPtr)this._renderWindow.GetGenericWindowId();
if (System.IntPtr.Zero != hWnd)
{
try
{
// TODO: X-Windows equivalent to Win32 SetFocus?
//
// (For now, the try/catch block handles trying to call the Win32
// function even on mono/Linux/Mac, but it would be nice to have
// the correct behavior on all platforms...)
//
SetFocus(hWnd);
}
catch
{
}
}
}
base.OnGotFocus(e);
}
/// <summary>
/// Override to do "last minute cram" of child control...
/// </summary>
protected override void OnPaint(System.Windows.Forms.PaintEventArgs e)
{
if (this._renderWindow != null && _renderingOn)
{
if (this.Visible)
{
this.SyncRenderWindowSize();
//
if (this._renderWindow.GetInteractor() != this._renderWindowInteractor)
{
// On X11, the SetInteractor method cannot be called until the parent
// window is already visible/mapped/painting... Since SetInteractor
// is the method that does this in VTK, we avoid calling it until now:
// when our parent has definitely shown us and we are in the process
// of painting.
//
this.AttachInteractor();
//this._renderWindow.Render();
}
this._renderWindow.Render();
//System.Console.WriteLine(System.DateTime.Now + ": OnRender");
}
base.OnPaint(e);
}
}
/// <summary>
/// OnVisibleChanged fires after the Visible property has changed value.
/// </summary>
protected override void OnVisibleChanged(System.EventArgs e)
{
base.OnVisibleChanged(e);
}
#region Component 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()
{
this.SuspendLayout();
//
// vtkControl
//
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.Name = "vtkControl";
this.Size = new System.Drawing.Size(475, 326);
this.Load += new System.EventHandler(this.vtkControl_Load);
this.EnabledChanged += new System.EventHandler(this.vtkControl_EnabledChanged);
this.Resize += new System.EventHandler(this.vtkControl_Resize);
this.ResumeLayout(false);
}
#endregion
}
}