Skip to main content
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
Diffstat (limited to 'bundles/org.eclipse.swt/Eclipse SWT PI/wpf/library/os_custom.cpp')
-rw-r--r--bundles/org.eclipse.swt/Eclipse SWT PI/wpf/library/os_custom.cpp1569
1 files changed, 1569 insertions, 0 deletions
diff --git a/bundles/org.eclipse.swt/Eclipse SWT PI/wpf/library/os_custom.cpp b/bundles/org.eclipse.swt/Eclipse SWT PI/wpf/library/os_custom.cpp
new file mode 100644
index 0000000000..0c804dea08
--- /dev/null
+++ b/bundles/org.eclipse.swt/Eclipse SWT PI/wpf/library/os_custom.cpp
@@ -0,0 +1,1569 @@
+/*******************************************************************************
+ * Copyright (c) 2000, 2008 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * IBM Corporation - initial API and implementation
+ *******************************************************************************/
+
+#include "swt.h"
+#include "os_structs.h"
+#include "os_stats.h"
+#include "string.h"
+
+#define OS_NATIVE(func) Java_org_eclipse_swt_internal_wpf_OS_##func
+
+static JavaVM *jvm = NULL;
+
+/* */
+/* SWT Handle Table */
+/* */
+#ifndef GCHANDLE_TABLE
+#define GCHANDLE_STACKS
+public ref class SWTObjectTable {
+private:
+ static int nextHandle = 0;
+ static array<Object^>^table = nullptr;
+ static Object^ mutex = gcnew Object();
+
+#ifdef GCHANDLE_STACKS
+ static array<int>^exceptions = nullptr;
+#endif
+
+public:
+static int ToHandle(Object^ obj) {
+ if (obj == nullptr) return 0;
+ System::Threading::Monitor::Enter(mutex);
+ if (table == nullptr || nextHandle == -1) {
+ int length = 0;
+ if (table != nullptr) length = table->GetLength(0);
+ int newLength = length * 2;
+ if (newLength < 1024) newLength = 1024;
+// System::Console::Error->WriteLine("\t\t***grow={1}", length, newLength);
+ Array::Resize(table, newLength);
+#ifdef GCHANDLE_STACKS
+ Array::Resize(exceptions, newLength);
+#endif
+ for (int i=length; i<newLength-1; i++) table[i] = i + 1;
+ table[newLength-1] = -1;
+ nextHandle = length;
+ }
+ int handle = nextHandle;
+ nextHandle = (int)(Int32)table[handle];
+ table[handle] = obj;
+#ifdef GCHANDLE_STACKS
+ if (jvm) {
+ JNIEnv* env;
+ if (IS_JNI_1_2) {
+ jvm->GetEnv((void **)&env, JNI_VERSION_1_2);
+ }
+ jclass exceptionClass = env->FindClass("java/lang/Exception");
+ exceptions[handle] = (int)env->NewGlobalRef(env->NewObject(exceptionClass, env->GetMethodID(exceptionClass, "<init>", "()V")));
+ }
+#endif
+ System::Threading::Monitor::Exit(mutex);
+ return handle + 1;
+}
+
+static Object^ ToObject(int handle) {
+ System::Threading::Monitor::Enter(mutex);
+ Object^ result = nullptr;
+ if (handle > 0) result = table[handle - 1];
+ System::Threading::Monitor::Exit(mutex);
+ return result;
+}
+
+static void Free(int handle) {
+ System::Threading::Monitor::Enter(mutex);
+ if (handle > 0) {
+ table[handle - 1] = nextHandle;
+ nextHandle = handle - 1;
+#ifdef GCHANDLE_STACKS
+ if (exceptions[handle - 1] != 0) {
+ JNIEnv* env;
+ if (IS_JNI_1_2) {
+ jvm->GetEnv((void **)&env, JNI_VERSION_1_2);
+ }
+ env->DeleteGlobalRef((jobject)exceptions[handle - 1]);
+ exceptions[handle - 1] = 0;
+ }
+#endif
+ }
+ System::Threading::Monitor::Exit(mutex);
+}
+
+static void Dump() {
+ System::Threading::Monitor::Enter(mutex);
+ for (int i=0; i<table->GetLength(0); i++) {
+ if (table[i]->GetType() != Int32::typeid) {
+ System::Console::Error->WriteLine("LEAK -> {0}={1} type={2}", i + 1, table[i], table[i]->GetType());
+#ifdef GCHANDLE_STACKS
+ if (exceptions[i] != 0) {
+ JNIEnv* env;
+ jvm->GetEnv((void **)&env, JNI_VERSION_1_2);
+ jclass exceptionClass = env->FindClass("java/lang/Throwable");
+ jmethodID mid = env->GetMethodID(exceptionClass, "printStackTrace", "()V");
+ if (mid != NULL) env->CallVoidMethod((jobject)exceptions[i], mid, 0);
+ }
+#endif
+ }
+ }
+ System::Threading::Monitor::Exit(mutex);
+}
+
+};
+#endif // GCHANDLE_TABLE
+
+extern "C" {
+
+#ifdef GCHANDLE_TABLE
+
+jint GCHandle_GetHandle(Object^ obj) {
+ return obj == nullptr ? 0 : (int)GCHandle::ToIntPtr(GCHandle::Alloc(obj));
+}
+
+#else
+
+int SWTObjectTable_ToHandle(Object^ obj) {
+ return SWTObjectTable::ToHandle(obj);
+}
+
+Object^ SWTObjectTable_ToObject(int handle) {
+ return SWTObjectTable::ToObject(handle);
+}
+
+void SWTObjectTable_Free(int handle) {
+ return SWTObjectTable::Free(handle);
+}
+
+#endif // GCHANDLE_TABLE
+
+} // extern "C" ends
+
+/* */
+/* JNI Ref Cookie */
+/* */
+public ref class JniRefCookie {
+public:
+ jobject object;
+
+ JniRefCookie (JNIEnv* env, jint jniRef) {
+ if (jvm == NULL) env->GetJavaVM(&jvm);
+ this->object = env->NewGlobalRef((jobject)jniRef);
+ }
+
+ ~JniRefCookie() {
+ this->!JniRefCookie();
+ }
+
+ !JniRefCookie() {
+ if (object == NULL) return;
+ JNIEnv* env;
+ bool detach = false;
+
+#ifdef JNI_VERSION_1_2
+ if (IS_JNI_1_2) {
+ jvm->GetEnv((void **)&env, JNI_VERSION_1_2);
+ }
+#endif
+ if (env == NULL) {
+ jvm->AttachCurrentThread((void **)&env, NULL);
+ if (IS_JNI_1_2) detach = true;
+ }
+ if (env != NULL) {
+ env->DeleteGlobalRef(object);
+ if (detach) jvm->DetachCurrentThread();
+ }
+ }
+};
+
+
+/* */
+/* Animation */
+/* */
+
+public ref class SWTAnimator : FrameworkElement {
+public:
+ static DependencyProperty^ DoubleValueProperty = DependencyProperty::Register("DoubleValue", double::typeid, SWTAnimator::typeid, gcnew PropertyMetadata(gcnew PropertyChangedCallback(OnPropertyChanged)));
+ static DependencyProperty^ IntValueProperty = DependencyProperty::Register("IntValue", Int32::typeid, SWTAnimator::typeid, gcnew PropertyMetadata(gcnew PropertyChangedCallback(OnPropertyChanged)));
+private:
+ jmethodID OnPropertyChangedMID;
+ JniRefCookie^ cookie;
+public:
+ SWTAnimator(JNIEnv* env, jint jniRef) {
+ cookie = gcnew JniRefCookie(env, jniRef);
+ jobject object = cookie->object;
+ if (object) {
+ jclass javaClass = env->GetObjectClass(object);
+ OnPropertyChangedMID = env->GetMethodID(javaClass, "OnPropertyChanged", "(II)V");
+ }
+ }
+
+ static void OnPropertyChanged(DependencyObject^ obj, DependencyPropertyChangedEventArgs args) {
+ SWTAnimator^ animator = (SWTAnimator^) obj;
+ animator->callin(obj, args);
+ }
+
+private:
+ void callin (DependencyObject^ obj, DependencyPropertyChangedEventArgs args) {
+ jobject object = cookie->object;
+ if (object == NULL || OnPropertyChangedMID == NULL) return;
+ JNIEnv* env;
+ int result = 0;
+ bool detach = false;
+
+#ifdef JNI_VERSION_1_2
+ if (IS_JNI_1_2) {
+ jvm->GetEnv((void **)&env, JNI_VERSION_1_2);
+ }
+#endif
+ if (env == NULL) {
+ jvm->AttachCurrentThread((void **)&env, NULL);
+ if (IS_JNI_1_2) detach = true;
+ }
+
+ if (env != NULL) {
+ if (!env->ExceptionOccurred()) {
+ int arg0 = TO_HANDLE(obj);
+ int arg1 = TO_HANDLE(args);
+ env->CallVoidMethod(object, OnPropertyChangedMID, arg0, arg1);
+ FREE_HANDLE(arg0);
+ FREE_HANDLE(arg1);
+ }
+ if (detach) jvm->DetachCurrentThread();
+ }
+ }
+};
+
+public ref class SWTAnimation : DoubleAnimation {
+private:
+ JniRefCookie^ cookie;
+ jmethodID GetCurrentValueCoreMID;
+public:
+ SWTAnimation (JNIEnv* env, jint jniRef) {
+ cookie = gcnew JniRefCookie(env, jniRef);
+ jobject object = cookie->object;
+ if (object) {
+ jclass javaClass = env->GetObjectClass(object);
+ GetCurrentValueCoreMID = env->GetMethodID(javaClass, "GetCurrentValueCore", "(D)V");
+ }
+ }
+private:
+ SWTAnimation (JniRefCookie^ cookie, jmethodID methodID) {
+ this->cookie = cookie;
+ this->GetCurrentValueCoreMID = methodID;
+ }
+protected:
+ virtual Freezable^ CreateInstanceCore () override {
+ return gcnew SWTAnimation(cookie, GetCurrentValueCoreMID);
+ }
+ virtual double GetCurrentValueCore(double fromVal, double toVal, AnimationClock^ clock) override {
+ Nullable<TimeSpan> currentTime = clock->CurrentTime;
+ if (currentTime.HasValue) {
+ double ms = currentTime.Value.TotalMilliseconds;
+ callin(ms);
+ }
+ return DoubleAnimation::GetCurrentValueCore(fromVal, toVal, clock);
+ }
+private:
+ void callin (double args) {
+ jobject object = cookie->object;
+ if (object == NULL || GetCurrentValueCoreMID == NULL) return;
+ JNIEnv* env;
+ int result = 0;
+ bool detach = false;
+
+#ifdef JNI_VERSION_1_2
+ if (IS_JNI_1_2) {
+ jvm->GetEnv((void **)&env, JNI_VERSION_1_2);
+ }
+#endif
+ if (env == NULL) {
+ jvm->AttachCurrentThread((void **)&env, NULL);
+ if (IS_JNI_1_2) detach = true;
+ }
+
+ if (env != NULL) {
+ if (!env->ExceptionOccurred()) {
+ env->CallVoidMethod(object, GetCurrentValueCoreMID, args);
+ }
+ if (detach) jvm->DetachCurrentThread();
+ }
+ }
+};
+
+/* */
+/* Table and Tree Classes */
+/* */
+
+public ref class SWTDockPanel : DockPanel {
+public:
+ static DependencyProperty^ JNIRefProperty = DependencyProperty::Register("JNIRef", Int32::typeid, SWTDockPanel::typeid);
+private:
+ jmethodID OnRenderMID;
+ JniRefCookie^ cookie;
+
+ void callin (jmethodID mid, DrawingContext^ context) {
+ JNIEnv* env;
+ bool detach = false;
+
+#ifdef JNI_VERSION_1_2
+ if (IS_JNI_1_2) {
+ jvm->GetEnv((void **)&env, JNI_VERSION_1_2);
+ }
+#endif
+ if (env == NULL) {
+ jvm->AttachCurrentThread((void **)&env, NULL);
+ if (IS_JNI_1_2) detach = true;
+ }
+ if (env != NULL) {
+ if (cookie == nullptr) {
+ cookie = gcnew JniRefCookie(env, (jint)(Int32)GetValue(SWTDockPanel::JNIRefProperty));
+ }
+ jobject object = cookie->object;
+ if (object == NULL) {
+ return;
+ }
+ if (mid == NULL){
+ jclass javaClass = env->GetObjectClass(object);
+ OnRenderMID = env->GetMethodID(javaClass, "OnRender", "(II)V");
+ mid = OnRenderMID;
+ }
+ if (!env->ExceptionOccurred()) {
+ int arg0 = TO_HANDLE(this);
+ int arg1 = TO_HANDLE(context);
+ env->CallVoidMethod(object, mid, arg0, arg1);
+ FREE_HANDLE(arg0);
+ FREE_HANDLE(arg1);
+ }
+ if (detach) jvm->DetachCurrentThread();
+ }
+ }
+protected:
+ virtual void OnRender(DrawingContext^ drawingContext) override {
+ this->DockPanel::OnRender(drawingContext);
+ callin(OnRenderMID, drawingContext);
+ }
+};
+
+public ref class SWTTreeView : TreeView {
+private:
+ JniRefCookie^ cookie;
+ jmethodID HandlerMID;
+
+ void callin (jmethodID mid, RoutedPropertyChangedEventArgs<Object^>^ args) {
+ jobject object = cookie->object;
+ if (object == NULL || mid == NULL) return;
+ JNIEnv* env;
+ int result = 0;
+ bool detach = false;
+
+#ifdef JNI_VERSION_1_2
+ if (IS_JNI_1_2) {
+ jvm->GetEnv((void **)&env, JNI_VERSION_1_2);
+ }
+#endif
+ if (env == NULL) {
+ jvm->AttachCurrentThread((void **)&env, NULL);
+ if (IS_JNI_1_2) detach = true;
+ }
+ if (env != NULL) {
+ if (!env->ExceptionOccurred()) {
+ int arg0 = TO_HANDLE(args);
+ env->CallVoidMethod(object, mid, arg0);
+ FREE_HANDLE(arg0);
+ }
+ if (detach) jvm->DetachCurrentThread();
+ }
+ }
+protected:
+ virtual void OnSelectedItemChanged (RoutedPropertyChangedEventArgs<Object^>^ args) override {
+ callin(HandlerMID, args);
+ TreeView::OnSelectedItemChanged(args);
+ }
+public:
+ SWTTreeView (JNIEnv* env, jint jniRef) {
+ cookie = gcnew JniRefCookie(env, jniRef);
+ jobject object = cookie->object;
+ if (object) {
+ jclass javaClass = env->GetObjectClass(object);
+ HandlerMID = env->GetMethodID(javaClass, "OnSelectedItemChanged", "(I)V");
+ }
+ }
+};
+
+public ref class SWTTreeViewRowPresenter : GridViewRowPresenter {
+private:
+ TreeView^ tree;
+ static void Handle_Loaded (Object^ sender, RoutedEventArgs^ args) {
+ SWTTreeViewRowPresenter^ presenter = (SWTTreeViewRowPresenter^) sender;
+ presenter->InvalidateMeasure ();
+ }
+public:
+ SWTTreeViewRowPresenter (Object^ treeview) {
+ this->tree = (TreeView^)treeview;
+ Loaded += gcnew RoutedEventHandler (&SWTTreeViewRowPresenter::Handle_Loaded);
+ }
+protected:
+ virtual Size MeasureOverride (Size constraint) override {
+ Point point = TranslatePoint(*gcnew Point (0,0), tree);
+ Size size = GridViewRowPresenter::MeasureOverride (constraint);
+ size.Width -= Math::Min (point.X, size.Width);
+ return size;
+ }
+ virtual Size ArrangeOverride (Size arrangeSize) override {
+ double availableWidth = arrangeSize.Width;
+ int i = VisualChildrenCount - 1;
+ for (; i>=0; i--) {
+ UIElement^ child = (UIElement^) GetVisualChild (i);
+ GridViewColumn^ column = Columns [i];
+ double x = 0;
+ double width = 0;
+ if (i == 0) {
+ width = availableWidth;
+ } else {
+ width = column->ActualWidth;
+ //if (Double::IsNaN(width)) width = 0;
+ x = availableWidth - width;
+ }
+ width = Math::Max (0.0, width);
+ Point^ loc = gcnew Point (x, 0);
+ Size^ size = gcnew Size (width, arrangeSize.Height);
+ Rect^ rect = gcnew Rect (*loc, *size);
+ child->Arrange (*rect);
+ availableWidth -= width;
+ }
+ return arrangeSize;
+ }
+};
+
+
+/* */
+/* Canvas */
+/* */
+
+public ref class SWTCanvas : Canvas {
+private:
+ DrawingVisual^ _visual;
+ jmethodID OnRenderMID;
+ JniRefCookie^ cookie;
+
+ void callin (jmethodID mid, DrawingContext^ context) {
+ jobject object = cookie->object;
+ if (object == NULL || mid == NULL) return;
+ JNIEnv* env;
+ bool detach = false;
+
+#ifdef JNI_VERSION_1_2
+ if (IS_JNI_1_2) {
+ jvm->GetEnv((void **)&env, JNI_VERSION_1_2);
+ }
+#endif
+ if (env == NULL) {
+ jvm->AttachCurrentThread((void **)&env, NULL);
+ if (IS_JNI_1_2) detach = true;
+ }
+ if (env != NULL) {
+ if (!env->ExceptionOccurred()) {
+ int arg0 = TO_HANDLE(context);
+ env->CallVoidMethod(object, mid, arg0);
+ FREE_HANDLE(arg0);
+ }
+ if (detach) jvm->DetachCurrentThread();
+ }
+ }
+ void updateVisual(DrawingVisual^ visual) {
+ if (_visual != nullptr) {
+ RemoveVisualChild(_visual);
+ }
+ _visual = visual;
+ if (_visual != nullptr) {
+ AddVisualChild(_visual);
+ }
+ }
+
+protected:
+ virtual void OnRender(DrawingContext^ drawingContext) override {
+ this->Canvas::OnRender(drawingContext);
+ callin(OnRenderMID, drawingContext);
+ }
+
+ property int VisualChildrenCount {
+ virtual int get () override {
+ int count = this->Canvas::VisualChildrenCount;
+ if (_visual != nullptr) count++;
+ return count;
+ }
+ }
+
+ virtual Visual^ GetVisualChild(int index) override {
+ if (_visual != nullptr) {
+ //int count = this->Canvas::VisualChildrenCount;
+ //if (index == count) return _visual;
+ if (index == 0) return _visual;
+ return this->Canvas::GetVisualChild(index - 1);
+ }
+ return this->Canvas::GetVisualChild(index);
+ }
+
+public:
+ SWTCanvas (JNIEnv* env, jint jniRef) {
+ cookie = gcnew JniRefCookie(env, jniRef);
+ jobject object = cookie->object;
+ if (object) {
+ jclass javaClass = env->GetObjectClass(object);
+ OnRenderMID = env->GetMethodID(javaClass, "OnRender", "(I)V");
+ }
+ _visual = nullptr;
+ }
+ property DrawingVisual^ Visual {
+ DrawingVisual^ get() {
+ return _visual;
+ }
+ void set(DrawingVisual^ visual) {
+ updateVisual(visual);
+ }
+ }
+};
+
+/* */
+/* Cursor Support Class */
+/* */
+
+public ref class SWTSafeHandle : SafeHandle {
+private:
+ bool _isIcon;
+public:
+ SWTSafeHandle (IntPtr handle, bool isIcon) : SafeHandle ((IntPtr)-1, true) {
+ this->handle = handle;
+ _isIcon = isIcon;
+ }
+ [DllImport("user32.dll", SetLastError = true)]
+ static bool DestroyIcon(int hIcon);
+
+ [DllImport("user32.dll", SetLastError = true)]
+ static bool DestroyCursor(int hCursor);
+
+ virtual bool ReleaseHandle () override {
+ bool result;
+ if (_isIcon) {
+ result = DestroyIcon((int)handle);
+ } else {
+ result = DestroyCursor((int)handle);
+ }
+ handle = (IntPtr)(-1);
+ return result;
+ }
+ property bool IsInvalid {
+ virtual bool get() override { return (int)handle == -1; }
+ }
+};
+
+/* */
+/* Text Layout Classes */
+/* */
+
+public ref class SWTTextEmbeddedObject : TextEmbeddedObject {
+private:
+ int _length;
+ double _width, _height, _baseline;
+ TextRunProperties^ _properties;
+
+public:
+ SWTTextEmbeddedObject (TextRunProperties^ properties, int length, double width, double height, double baseline) {
+ _properties = properties;
+ _length = length;
+ _width = width;
+ _height = height;
+ _baseline = baseline;
+ }
+
+ virtual void Draw(DrawingContext^ drawingContext, Point origin, bool rightToLeft, bool sideways) override {
+ }
+ virtual System::Windows::Rect ComputeBoundingBox(bool rightToLeft, bool sideways) override {
+ return System::Windows::Rect(0, 0, _width, _height);
+ }
+ virtual TextEmbeddedObjectMetrics^ Format(double remainingParagraphWidth) override {
+ return gcnew TextEmbeddedObjectMetrics(_width, _height, _baseline);
+ }
+ property LineBreakCondition BreakAfter {
+ virtual LineBreakCondition get() override { return LineBreakCondition::BreakAlways; }
+ }
+ property LineBreakCondition BreakBefore {
+ virtual LineBreakCondition get() override { return LineBreakCondition::BreakAlways; }
+ }
+ property bool HasFixedSize {
+ virtual bool get() override { return true; }
+ }
+ property System::Windows::Media::TextFormatting::CharacterBufferReference CharacterBufferReference {
+ virtual System::Windows::Media::TextFormatting::CharacterBufferReference get() override { throw gcnew Exception("The method or operation is not implemented."); }
+ }
+ property int Length {
+ virtual int get() override { return _length; }
+ }
+ property TextRunProperties^ Properties {
+ virtual TextRunProperties^ get() override { return _properties; }
+ }
+};
+
+public ref class SWTTextParagraphProperties : TextParagraphProperties {
+private:
+ System::Windows::FlowDirection _flowDirection;
+ System::Windows::TextAlignment _textAlignment;
+ bool _firstLineInParagraph;
+ TextRunProperties^ _defaultTextRunProperties;
+ System::Windows::TextWrapping _textWrap;
+ double _indent;
+ double _paragraphIndent;
+ double _lineHeight;
+ System::Collections::Generic::IList<TextTabProperties^>^ _tabs;
+
+public:
+ SWTTextParagraphProperties (
+ System::Windows::FlowDirection flowDirection,
+ System::Windows::TextAlignment textAlignment,
+ bool firstLineInParagraph,
+ TextRunProperties^ defaultTextRunProperties,
+ System::Windows::TextWrapping textWrap,
+ double lineHeight,
+ double indent,
+ System::Collections::Generic::IList<TextTabProperties^>^ tabs)
+ {
+ _flowDirection = flowDirection;
+ _textAlignment = textAlignment;
+ _firstLineInParagraph = firstLineInParagraph;
+ _defaultTextRunProperties = defaultTextRunProperties;
+ _textWrap = textWrap;
+ _lineHeight = lineHeight;
+ _indent = indent;
+ _tabs = tabs;
+ }
+ property System::Windows::FlowDirection FlowDirection {
+ virtual System::Windows::FlowDirection get() override { return _flowDirection; }
+ }
+ property System::Windows::TextAlignment TextAlignment {
+ virtual System::Windows::TextAlignment get() override { return _textAlignment; }
+ }
+ property bool FirstLineInParagraph {
+ virtual bool get() override { return _firstLineInParagraph; }
+ }
+ property TextRunProperties^ DefaultTextRunProperties {
+ virtual TextRunProperties^ get() override { return _defaultTextRunProperties; }
+ }
+ property System::Windows::TextWrapping TextWrapping {
+ virtual System::Windows::TextWrapping get() override { return _textWrap; }
+ }
+ property double LineHeight {
+ virtual double get() override { return _lineHeight; }
+ }
+ property double Indent {
+ virtual double get() override { return _indent; }
+ }
+ property System::Windows::Media::TextFormatting::TextMarkerProperties^ TextMarkerProperties {
+ virtual System::Windows::Media::TextFormatting::TextMarkerProperties^ get() override { return nullptr; }
+ }
+ property double ParagraphIndent {
+ virtual double get() override { return _paragraphIndent; }
+ }
+ property System::Collections::Generic::IList<TextTabProperties^>^ Tabs {
+ virtual System::Collections::Generic::IList<TextTabProperties^>^ get() override { return _tabs; }
+ }
+};
+
+public ref class SWTTextRunProperties : TextRunProperties {
+private:
+ System::Windows::Media::Typeface^ _typeface;
+ double _emSize;
+ double _emHintingSize;
+ System::Windows::TextDecorationCollection^ _textDecorations;
+ System::Windows::Media::Brush^ _foregroundBrush;
+ System::Windows::Media::Brush^ _backgroundBrush;
+ System::Windows::BaselineAlignment _baselineAlignment;
+ System::Globalization::CultureInfo^ _culture;
+
+public:
+ SWTTextRunProperties (
+ System::Windows::Media::Typeface^ typeface,
+ double size,
+ double hintingSize,
+ System::Windows::TextDecorationCollection^ textDecorations,
+ System::Windows::Media::Brush^ forgroundBrush,
+ System::Windows::Media::Brush^ backgroundBrush,
+ System::Windows::BaselineAlignment baselineAlignment,
+ System::Globalization::CultureInfo^ culture)
+ {
+ _typeface = typeface;
+ _emSize = size;
+ _emHintingSize = hintingSize;
+ _textDecorations = textDecorations;
+ _foregroundBrush = forgroundBrush;
+ _backgroundBrush = backgroundBrush;
+ _baselineAlignment = baselineAlignment;
+ _culture = culture;
+ }
+ property System::Windows::Media::Typeface^ Typeface {
+ virtual System::Windows::Media::Typeface^ get() override { return _typeface; }
+ }
+ property double FontRenderingEmSize {
+ virtual double get() override { return _emSize; }
+ }
+ property double FontHintingEmSize {
+ virtual double get() override { return _emHintingSize; }
+ }
+ property System::Windows::TextDecorationCollection^ TextDecorations {
+ virtual System::Windows::TextDecorationCollection^ get() override { return _textDecorations; }
+ }
+ property System::Windows::Media::Brush^ ForegroundBrush {
+ virtual System::Windows::Media::Brush^ get() override { return _foregroundBrush; }
+ void set(System::Windows::Media::Brush^ brush) { _foregroundBrush = brush; }
+ }
+ property System::Windows::Media::Brush^ BackgroundBrush {
+ virtual System::Windows::Media::Brush^ get() override { return _backgroundBrush; }
+ }
+ property System::Windows::BaselineAlignment BaselineAlignment {
+ virtual System::Windows::BaselineAlignment get() override { return _baselineAlignment; }
+ }
+ property System::Globalization::CultureInfo^ CultureInfo {
+ virtual System::Globalization::CultureInfo^ get() override { return _culture; }
+ }
+ property System::Windows::Media::TextFormatting::TextRunTypographyProperties^ TypographyProperties {
+ virtual System::Windows::Media::TextFormatting::TextRunTypographyProperties^ get() override { return nullptr; }
+ }
+ property System::Windows::Media::TextEffectCollection^ TextEffects {
+ virtual System::Windows::Media::TextEffectCollection^ get() override { return nullptr; }
+ }
+ property System::Windows::Media::NumberSubstitution^ NumberSubstitution {
+ virtual System::Windows::Media::NumberSubstitution^ get() override { return nullptr; }
+ }
+};
+
+public ref class SWTTextSource : TextSource {
+private:
+ jmethodID GetTextRunMID, GetPrecedingTextMID;
+ JniRefCookie^ cookie;
+
+public:
+ SWTTextSource (JNIEnv* env, jint jniRef) {
+ cookie = gcnew JniRefCookie(env, jniRef);
+ jobject object = cookie->object;
+ if (object) {
+ jclass javaClass = env->GetObjectClass(object);
+ GetTextRunMID = env->GetMethodID(javaClass, "GetTextRun", "(I)I");
+ GetPrecedingTextMID = env->GetMethodID(javaClass, "GetPrecedingText", "(I)I");
+ }
+ }
+ Object^ callin (jmethodID mid, int arg0) {
+ jobject object = cookie->object;
+ if (object == NULL || mid == NULL) return nullptr;
+ JNIEnv* env;
+ bool detach = false;
+ int result = 0;
+
+#ifdef JNI_VERSION_1_2
+ if (IS_JNI_1_2) {
+ jvm->GetEnv((void **)&env, JNI_VERSION_1_2);
+ }
+#endif
+ if (env == NULL) {
+ jvm->AttachCurrentThread((void **)&env, NULL);
+ if (IS_JNI_1_2) detach = true;
+ }
+ if (env != NULL) {
+ if (!env->ExceptionOccurred()) {
+ result = env->CallIntMethod(object, mid, arg0);
+ }
+ if (detach) jvm->DetachCurrentThread();
+ }
+ return TO_OBJECT (result);
+ }
+
+ virtual TextRun^ GetTextRun(int textSourceCharacterIndex) override {
+ return (TextRun^) callin(GetTextRunMID, textSourceCharacterIndex);
+ }
+ virtual TextSpan<CultureSpecificCharacterBufferRange^>^ GetPrecedingText(int textSourceCharacterIndexLimit) override {
+ return (TextSpan<CultureSpecificCharacterBufferRange^>^) callin(GetPrecedingTextMID, textSourceCharacterIndexLimit);
+ }
+ virtual int GetTextEffectCharacterIndexFromTextSourceCharacterIndex(int textSourceCharacterIndex) override {
+ return 0;
+ }
+};
+
+/* */
+/* Event Handler Class */
+/* */
+
+delegate void NoArgsDelegate ();
+
+ref class SWTHandler {
+private:
+ jmethodID mid;
+ JniRefCookie^ cookie;
+
+public:
+ SWTHandler() {
+ }
+
+ SWTHandler(JNIEnv* env, jint jniRef, jstring method, char* signature) {
+ const char * methodString;
+ cookie = gcnew JniRefCookie(env, jniRef);
+ jobject object = cookie->object;
+ if (method) methodString = (const char *) env->GetStringUTFChars(method, NULL);
+ if (object && methodString) {
+ jclass javaClass = env->GetObjectClass(object);
+ mid = env->GetMethodID(javaClass, methodString, signature);
+ }
+ if (method && methodString) env->ReleaseStringUTFChars(method, methodString);
+ }
+
+ void EventHandler (Object^ sender, EventArgs^ e) {
+ jobject object = cookie->object;
+ if (object == NULL || mid == NULL) return;
+ JNIEnv* env;
+ bool detach = false;
+
+#ifdef JNI_VERSION_1_2
+ if (IS_JNI_1_2) {
+ jvm->GetEnv((void **)&env, JNI_VERSION_1_2);
+ }
+#endif
+ if (env == NULL) {
+ jvm->AttachCurrentThread((void **)&env, NULL);
+ if (IS_JNI_1_2) detach = true;
+ }
+ if (env != NULL) {
+ if (!env->ExceptionOccurred()) {
+ //TODO alloc sender causes handle table corruption
+ int arg0 = TO_HANDLE(sender);
+ int arg1 = TO_HANDLE(e);
+ env->CallVoidMethod(object, mid, arg0, arg1);
+ //env->CallVoidMethod(object, mid, 0, arg1);
+ FREE_HANDLE(arg0);
+ FREE_HANDLE(arg1);
+ }
+ if (detach) jvm->DetachCurrentThread();
+ }
+ }
+
+ void TimerHandler (Object^ sender, EventArgs^ e) {
+ jobject object = cookie->object;
+ if (object == NULL || mid == NULL) return;
+ JNIEnv* env;
+ bool detach = false;
+
+#ifdef JNI_VERSION_1_2
+ if (IS_JNI_1_2) {
+ jvm->GetEnv((void **)&env, JNI_VERSION_1_2);
+ }
+#endif
+ if (env == NULL) {
+ jvm->AttachCurrentThread((void **)&env, NULL);
+ if (IS_JNI_1_2) detach = true;
+ }
+ if (env != NULL) {
+ if (!env->ExceptionOccurred()) {
+ if (sender->GetType() == DispatcherTimer::typeid) {
+ DispatcherTimer^ timer = (DispatcherTimer^)sender;
+ int index = (int)timer->Tag;
+ int arg1 = TO_HANDLE(e);
+ env->CallVoidMethod(object, mid, index, arg1);
+ FREE_HANDLE(arg1);
+ }
+ }
+ if (detach) jvm->DetachCurrentThread();
+ }
+ }
+
+ void CancelEventHandler (Object^ sender, CancelEventArgs^ e) {
+ EventHandler (sender, e);
+ }
+
+ void RoutedEventHandler (Object^ sender, RoutedEventArgs^ e) {
+ EventHandler (sender, e);
+ }
+
+ void RoutedPropertyChangedEventHandler (Object^ sender, RoutedPropertyChangedEventArgs<double>^ e) {
+ EventHandler (sender, e);
+ }
+
+ void RoutedPropertyChangedEventHandlerObject (Object^ sender, RoutedPropertyChangedEventArgs<Object^>^ e) {
+ EventHandler (sender, e);
+ }
+
+ void ExecutedRoutedEventHandler (Object^ sender, ExecutedRoutedEventArgs^ e) {
+ EventHandler (sender, e);
+ }
+
+ void DispatcherHookEventHandler (Object^ sender, DispatcherHookEventArgs^ e) {
+ EventHandler (sender, e);
+ }
+
+ void SizeChangedEventHandler (Object^ sender, SizeChangedEventArgs^ e) {
+ EventHandler (sender, e);
+ }
+
+ void ScrollEventHandler (Object^ sender, ScrollEventArgs^ e) {
+ EventHandler (sender, e);
+ }
+
+ void SelectionChangedEventHandler (Object^ sender, SelectionChangedEventArgs^ e) {
+ EventHandler (sender, e);
+ }
+
+ void KeyEventHandler (Object^ sender, KeyEventArgs^ e) {
+ EventHandler (sender, e);
+ }
+
+ void MouseEventHandler (Object^ sender, MouseEventArgs^ e) {
+ EventHandler (sender, e);
+ }
+
+ void FormsMouseEventHandler (Object^ sender, System::Windows::Forms::MouseEventArgs^ e) {
+ EventHandler (sender, e);
+ }
+
+ void MouseButtonEventHandler (Object^ sender, MouseButtonEventArgs^ e) {
+ EventHandler (sender, e);
+ }
+
+ void MouseWheelEventHandler (Object^ sender, MouseWheelEventArgs^ e) {
+ EventHandler (sender, e);
+ }
+
+ void TextCompositionEventHandler (Object^ sender, TextCompositionEventArgs^ e) {
+ EventHandler (sender, e);
+ }
+
+ void TextChangedEventHandler (Object^ sender, TextChangedEventArgs^ e) {
+ EventHandler (sender, e);
+ }
+
+ void KeyboardFocusChangedEventHandler (Object^ sender, KeyboardFocusChangedEventArgs^ e) {
+ EventHandler (sender, e);
+ }
+
+ void ContextMenuEventHandler (Object^ sender, ContextMenuEventArgs^ e) {
+ EventHandler (sender, e);
+ }
+
+ void DragEventHandler (Object^ sender, DragEventArgs^ e) {
+ EventHandler (sender, e);
+ }
+
+ void DragDeltaEventHandler (Object^ sender, DragDeltaEventArgs^ e) {
+ EventHandler (sender, e);
+ }
+
+ void GiveFeedbackEventHandler (Object^ sender, GiveFeedbackEventArgs^ e) {
+ EventHandler (sender, e);
+ }
+
+ void QueryContinueDragEventHandler (Object^ sender, QueryContinueDragEventArgs^ e) {
+ EventHandler (sender, e);
+ }
+
+ void WebBrowserNavigatingEventHandler (Object^ sender, System::Windows::Forms::WebBrowserNavigatingEventArgs^ e) {
+ EventHandler (sender, e);
+ }
+
+ void WebBrowserNavigatedEventHandler (Object^ sender, System::Windows::Forms::WebBrowserNavigatedEventArgs^ e) {
+ EventHandler (sender, e);
+ }
+
+ void WebBrowserProgressChangedEventHandler (Object^ sender, System::Windows::Forms::WebBrowserProgressChangedEventArgs^ e) {
+ EventHandler (sender, e);
+ }
+
+ void WebBrowserDocumentCompletedEventHandler (Object^ sender, System::Windows::Forms::WebBrowserDocumentCompletedEventArgs^ e) {
+ EventHandler (sender, e);
+ }
+
+ void NoArgsDelegate() {
+ jobject object = cookie->object;
+ if (object == NULL || mid == NULL) return;
+ JNIEnv* env;
+ bool detach = false;
+
+#ifdef JNI_VERSION_1_2
+ if (IS_JNI_1_2) {
+ jvm->GetEnv((void **)&env, JNI_VERSION_1_2);
+ }
+#endif
+ if (env == NULL) {
+ jvm->AttachCurrentThread((void **)&env, NULL);
+ if (IS_JNI_1_2) detach = true;
+ }
+ if (env != NULL) {
+ if (!env->ExceptionOccurred()) {
+ env->CallVoidMethod(object, mid);
+ }
+ if (detach) jvm->DetachCurrentThread();
+ }
+ }
+};
+
+#define HANDLER_CONSTRUCTOR(name, type, signature) extern "C" JNIEXPORT jint JNICALL OS_NATIVE(gcnew_1##name##) (JNIEnv *env, jclass that, jint arg0, jstring arg1); \
+JNIEXPORT jint JNICALL OS_NATIVE(gcnew_1##name##) (JNIEnv *env, jclass that, jint arg0, jstring arg1) { \
+ jint rc = 0; \
+ OS_NATIVE_ENTER(env, that, gcnew_1##name##_FUNC); \
+ rc = (jint)TO_HANDLE(gcnew type (gcnew SWTHandler(env, arg0, arg1, signature), &SWTHandler::##name##)); \
+ OS_NATIVE_EXIT(env, that, gcnew_1##name##_FUNC); \
+ return rc; \
+} \
+
+#ifndef NO_gcnew_1EventHandler
+HANDLER_CONSTRUCTOR (EventHandler, EventHandler, "(II)V")
+#endif
+
+#ifndef NO_gcnew_1CancelEventHandler
+HANDLER_CONSTRUCTOR (CancelEventHandler, CancelEventHandler, "(II)V")
+#endif
+
+#ifndef NO_gcnew_1ExecutedRoutedEventHandler
+HANDLER_CONSTRUCTOR (ExecutedRoutedEventHandler, ExecutedRoutedEventHandler, "(II)V")
+#endif
+
+#ifndef NO_gcnew_1DispatcherHookEventHandler
+HANDLER_CONSTRUCTOR (DispatcherHookEventHandler, DispatcherHookEventHandler, "(II)V")
+#endif
+
+#ifndef NO_gcnew_1SizeChangedEventHandler
+HANDLER_CONSTRUCTOR (SizeChangedEventHandler, SizeChangedEventHandler, "(II)V")
+#endif
+
+#ifndef NO_gcnew_1ScrollEventHandler
+HANDLER_CONSTRUCTOR (ScrollEventHandler, ScrollEventHandler, "(II)V")
+#endif
+
+#ifndef NO_gcnew_1SelectionChangedEventHandler
+HANDLER_CONSTRUCTOR (SelectionChangedEventHandler, SelectionChangedEventHandler, "(II)V")
+#endif
+
+#ifndef NO_gcnew_1KeyEventHandler
+HANDLER_CONSTRUCTOR (KeyEventHandler, KeyEventHandler, "(II)V")
+#endif
+
+#ifndef NO_gcnew_1MouseEventHandler
+HANDLER_CONSTRUCTOR (MouseEventHandler, MouseEventHandler, "(II)V")
+#endif
+
+#ifndef NO_gcnew_1FormsMouseEventHandler
+HANDLER_CONSTRUCTOR (FormsMouseEventHandler, System::Windows::Forms::MouseEventHandler, "(II)V")
+#endif
+
+#ifndef NO_gcnew_1MouseButtonEventHandler
+HANDLER_CONSTRUCTOR (MouseButtonEventHandler, MouseButtonEventHandler, "(II)V")
+#endif
+
+#ifndef NO_gcnew_1MouseWheelEventHandler
+HANDLER_CONSTRUCTOR (MouseWheelEventHandler, MouseWheelEventHandler, "(II)V")
+#endif
+
+#ifndef NO_gcnew_1TextCompositionEventHandler
+HANDLER_CONSTRUCTOR (TextCompositionEventHandler, TextCompositionEventHandler, "(II)V")
+#endif
+
+#ifndef NO_gcnew_1TextChangedEventHandler
+HANDLER_CONSTRUCTOR (TextChangedEventHandler, TextChangedEventHandler, "(II)V")
+#endif
+
+#ifndef NO_gcnew_1KeyboardFocusChangedEventHandler
+HANDLER_CONSTRUCTOR (KeyboardFocusChangedEventHandler, KeyboardFocusChangedEventHandler, "(II)V")
+#endif
+
+#ifndef NO_gcnew_1ContextMenuEventHandler
+HANDLER_CONSTRUCTOR (ContextMenuEventHandler, ContextMenuEventHandler, "(II)V")
+#endif
+
+#ifndef NO_gcnew_1RoutedEventHandler
+HANDLER_CONSTRUCTOR (RoutedEventHandler, RoutedEventHandler, "(II)V")
+#endif
+
+#ifndef NO_gcnew_1DragEventHandler
+HANDLER_CONSTRUCTOR (DragEventHandler, DragEventHandler, "(II)V")
+#endif
+
+#ifndef NO_gcnew_1DragDeltaEventHandler
+HANDLER_CONSTRUCTOR (DragDeltaEventHandler, DragDeltaEventHandler, "(II)V")
+#endif
+
+#ifndef NO_gcnew_1GiveFeedbackEventHandler
+HANDLER_CONSTRUCTOR (GiveFeedbackEventHandler, GiveFeedbackEventHandler, "(II)V")
+#endif
+
+#ifndef NO_gcnew_1QueryContinueDragEventHandler
+HANDLER_CONSTRUCTOR (QueryContinueDragEventHandler, QueryContinueDragEventHandler, "(II)V")
+#endif
+
+#ifndef NO_gcnew_1RoutedPropertyChangedEventHandlerObject
+HANDLER_CONSTRUCTOR (RoutedPropertyChangedEventHandlerObject, RoutedPropertyChangedEventHandler<Object^>, "(II)V")
+#endif
+
+#ifndef NO_gcnew_1RoutedPropertyChangedEventHandler
+HANDLER_CONSTRUCTOR (RoutedPropertyChangedEventHandler, RoutedPropertyChangedEventHandler<double>, "(II)V")
+#endif
+
+#ifndef NO_gcnew_1WebBrowserNavigatingEventHandler
+HANDLER_CONSTRUCTOR (WebBrowserNavigatingEventHandler, System::Windows::Forms::WebBrowserNavigatingEventHandler, "(II)V")
+#endif
+
+#ifndef NO_gcnew_1WebBrowserNavigatedEventHandler
+HANDLER_CONSTRUCTOR (WebBrowserNavigatedEventHandler, System::Windows::Forms::WebBrowserNavigatedEventHandler, "(II)V")
+#endif
+
+#ifndef NO_gcnew_1WebBrowserProgressChangedEventHandler
+HANDLER_CONSTRUCTOR (WebBrowserProgressChangedEventHandler, System::Windows::Forms::WebBrowserProgressChangedEventHandler, "(II)V")
+#endif
+
+#ifndef NO_gcnew_1WebBrowserDocumentCompletedEventHandler
+HANDLER_CONSTRUCTOR (WebBrowserDocumentCompletedEventHandler, System::Windows::Forms::WebBrowserDocumentCompletedEventHandler, "(II)V")
+#endif
+
+#ifndef NO_gcnew_1NoArgsDelegate
+HANDLER_CONSTRUCTOR (NoArgsDelegate, NoArgsDelegate, "()V")
+#endif
+
+// special cases
+#ifndef NO_gcnew_1TimerHandler
+extern "C" JNIEXPORT jint JNICALL OS_NATIVE(gcnew_1TimerHandler) (JNIEnv *env, jclass that, jint arg0, jstring arg1);
+JNIEXPORT jint JNICALL OS_NATIVE(gcnew_1TimerHandler) (JNIEnv *env, jclass that, jint arg0, jstring arg1) {
+ jint rc = 0;
+ OS_NATIVE_ENTER(env, that, gcnew_1TimerHandler_FUNC);
+ rc = (jint)TO_HANDLE(gcnew EventHandler (gcnew SWTHandler(env, arg0, arg1, "(II)V"), &SWTHandler::TimerHandler));
+ OS_NATIVE_EXIT(env, that, gcnew_1TimerHandler_FUNC);
+ return rc;
+}
+#endif
+
+/* */
+/* Custom Classes Constructors and Functions */
+/* */
+
+#ifndef NO_gcnew_1SWTCanvas
+extern "C" JNIEXPORT jint JNICALL OS_NATIVE(gcnew_1SWTCanvas)(JNIEnv *env, jclass that, jint arg0);
+JNIEXPORT jint JNICALL OS_NATIVE(gcnew_1SWTCanvas)
+ (JNIEnv *env, jclass that, jint arg0)
+{
+ jint rc = 0;
+ OS_NATIVE_ENTER(env, that, gcnew_1SWTCanvas_FUNC);
+ rc = (jint)TO_HANDLE(gcnew SWTCanvas(env, arg0));
+ OS_NATIVE_EXIT(env, that, gcnew_1SWTCanvas_FUNC);
+ return rc;
+}
+#endif
+
+#ifndef NO_SWTDockPanel_1JNIRefProperty
+extern "C" JNIEXPORT jint JNICALL OS_NATIVE(SWTDockPanel_1JNIRefProperty)(JNIEnv *env, jclass that);
+JNIEXPORT jint JNICALL OS_NATIVE(SWTDockPanel_1JNIRefProperty)
+ (JNIEnv *env, jclass that)
+{
+ jint rc = 0;
+ OS_NATIVE_ENTER(env, that, SWTDockPanel_1JNIRefProperty_FUNC);
+ rc = (jint)TO_HANDLE(SWTDockPanel::JNIRefProperty);
+ OS_NATIVE_EXIT(env, that, SWTDockPanel_1JNIRefProperty_FUNC);
+ return rc;
+}
+#endif
+
+#ifndef NO_SWTDockPanel_1typeid
+extern "C" JNIEXPORT jint JNICALL OS_NATIVE(SWTDockPanel_1typeid)(JNIEnv *env, jclass that);
+JNIEXPORT jint JNICALL OS_NATIVE(SWTDockPanel_1typeid)
+ (JNIEnv *env, jclass that)
+{
+ jint rc = 0;
+ OS_NATIVE_ENTER(env, that, SWTDockPanel_1typeid_FUNC);
+ rc = (jint)TO_HANDLE(SWTDockPanel::typeid);
+ OS_NATIVE_EXIT(env, that, SWTDockPanel_1typeid_FUNC);
+ return rc;
+}
+#endif
+
+#ifndef NO_gcnew_1SWTSafeHandle
+extern "C" JNIEXPORT jint JNICALL OS_NATIVE(gcnew_1SWTSafeHandle)(JNIEnv *env, jclass that, jint arg0, jboolean arg1);
+JNIEXPORT jint JNICALL OS_NATIVE(gcnew_1SWTSafeHandle)
+ (JNIEnv *env, jclass that, jint arg0, jboolean arg1)
+{
+ jint rc = 0;
+ OS_NATIVE_ENTER(env, that, gcnew_1SWTSafeHandle_FUNC);
+ rc = (jint)TO_HANDLE(gcnew SWTSafeHandle((IntPtr)arg0, (bool)arg1));
+ OS_NATIVE_EXIT(env, that, gcnew_1SWTSafeHandle_FUNC);
+ return rc;
+}
+#endif
+
+#ifndef NO_gcnew_1SWTTextSource
+extern "C" JNIEXPORT jint JNICALL OS_NATIVE(gcnew_1SWTTextSource)(JNIEnv *env, jclass that, jint arg0);
+JNIEXPORT jint JNICALL OS_NATIVE(gcnew_1SWTTextSource)
+ (JNIEnv *env, jclass that, jint arg0)
+{
+ jint rc = 0;
+ OS_NATIVE_ENTER(env, that, gcnew_1SWTTextSource_FUNC);
+ rc = (jint)TO_HANDLE(gcnew SWTTextSource(env, arg0));
+ OS_NATIVE_EXIT(env, that, gcnew_1SWTTextSource_FUNC);
+ return rc;
+}
+#endif
+
+#ifndef NO_gcnew_1SWTTextParagraphProperties
+extern "C" JNIEXPORT jint JNICALL OS_NATIVE(gcnew_1SWTTextParagraphProperties)(JNIEnv *env, jclass that, jint arg0, jint arg1, jboolean arg2, jint arg3, jint arg4, jdouble arg5, jdouble arg6, int arg7);
+JNIEXPORT jint JNICALL OS_NATIVE(gcnew_1SWTTextParagraphProperties)
+ (JNIEnv *env, jclass that, jint arg0, jint arg1, jboolean arg2, jint arg3, jint arg4, jdouble arg5, jdouble arg6, int arg7)
+{
+ jint rc = 0;
+ OS_NATIVE_ENTER(env, that, gcnew_1SWTTextParagraphProperties_FUNC);
+ rc = (jint)TO_HANDLE(gcnew SWTTextParagraphProperties((FlowDirection)arg0, (TextAlignment)arg1, arg2, (TextRunProperties^)TO_OBJECT(arg3), (TextWrapping)arg4, arg5, arg6, (System::Collections::Generic::IList<TextTabProperties^>^)TO_OBJECT(arg7)));
+ OS_NATIVE_EXIT(env, that, gcnew_1SWTTextParagraphProperties_FUNC);
+ return rc;
+}
+#endif
+
+#ifndef NO_gcnew_1SWTTextEmbeddedObject
+extern "C" JNIEXPORT jint JNICALL OS_NATIVE(gcnew_1SWTTextEmbeddedObject)(JNIEnv *env, jclass that, jint arg0, jint arg1, jdouble arg2, jdouble arg3, jdouble arg4);
+JNIEXPORT jint JNICALL OS_NATIVE(gcnew_1SWTTextEmbeddedObject)
+ (JNIEnv *env, jclass that, jint arg0, jint arg1, jdouble arg2, jdouble arg3, jdouble arg4)
+{
+ jint rc = 0;
+ OS_NATIVE_ENTER(env, that, gcnew_1SWTTextEmbeddedObject_FUNC);
+ rc = (jint)TO_HANDLE(gcnew SWTTextEmbeddedObject((TextRunProperties^)TO_OBJECT(arg0), arg1, arg2, arg3, arg4));
+ OS_NATIVE_EXIT(env, that, gcnew_1SWTTextEmbeddedObject_FUNC);
+ return rc;
+}
+#endif
+
+#ifndef NO_gcnew_1SWTTextRunProperties
+extern "C" JNIEXPORT jint JNICALL OS_NATIVE(gcnew_1SWTTextRunProperties)(JNIEnv *env, jclass that, jint arg0, jdouble arg1, jdouble arg2, jint arg3, jint arg4, jint arg5, jint arg6, jint arg7);
+JNIEXPORT jint JNICALL OS_NATIVE(gcnew_1SWTTextRunProperties)
+ (JNIEnv *env, jclass that, jint arg0, jdouble arg1, jdouble arg2, jint arg3, jint arg4, jint arg5, jint arg6, jint arg7)
+{
+ jint rc = 0;
+ OS_NATIVE_ENTER(env, that, gcnew_1SWTTextRunProperties_FUNC);
+ rc = (jint)TO_HANDLE(gcnew SWTTextRunProperties((Typeface^)TO_OBJECT(arg0), arg1, arg2, (TextDecorationCollection^)TO_OBJECT(arg3), (Brush^)TO_OBJECT(arg4), (Brush^)TO_OBJECT(arg5), (BaselineAlignment)arg6, (CultureInfo^)TO_OBJECT(arg7)));
+ OS_NATIVE_EXIT(env, that, gcnew_1SWTTextRunProperties_FUNC);
+ return rc;
+}
+#endif
+
+#ifndef NO_gcnew_1SWTTreeView
+extern "C" JNIEXPORT jint JNICALL OS_NATIVE(gcnew_1SWTTreeView)(JNIEnv *env, jclass that, jint arg0);
+JNIEXPORT jint JNICALL OS_NATIVE(gcnew_1SWTTreeView)
+ (JNIEnv *env, jclass that, jint arg0)
+{
+ jint rc = 0;
+ OS_NATIVE_ENTER(env, that, gcnew_1SWTTreeView_FUNC);
+ rc = (jint)TO_HANDLE(gcnew SWTTreeView(env, arg0));
+ OS_NATIVE_EXIT(env, that, gcnew_1SWTTreeView_FUNC);
+ return rc;
+}
+#endif
+
+#ifndef NO_gcnew_1SWTTreeViewRowPresenter
+extern "C" JNIEXPORT jint JNICALL OS_NATIVE(gcnew_1SWTTreeViewRowPresenter)(JNIEnv *env, jclass that, jint arg0);
+JNIEXPORT jint JNICALL OS_NATIVE(gcnew_1SWTTreeViewRowPresenter)
+ (JNIEnv *env, jclass that, jint arg0)
+{
+ jint rc = 0;
+ OS_NATIVE_ENTER(env, that, gcnew_1SWTTreeViewRowPresenter_FUNC);
+ rc = (jint)TO_HANDLE(gcnew SWTTreeViewRowPresenter(TO_OBJECT(arg0)));
+ OS_NATIVE_EXIT(env, that, gcnew_1SWTTreeViewRowPresenter_FUNC);
+ return rc;
+}
+#endif
+
+#ifndef NO_gcnew_1SWTAnimator
+extern "C" JNIEXPORT jint JNICALL OS_NATIVE(gcnew_1SWTAnimator)(JNIEnv *env, jclass that, jint arg0);
+JNIEXPORT jint JNICALL OS_NATIVE(gcnew_1SWTAnimator)
+ (JNIEnv *env, jclass that, jint arg0)
+{
+ jint rc = 0;
+ OS_NATIVE_ENTER(env, that, gcnew_1SWTAnimator_FUNC);
+ rc = (jint)TO_HANDLE(gcnew SWTAnimator(env, arg0));
+ OS_NATIVE_EXIT(env, that, gcnew_1SWTAnimator_FUNC);
+ return rc;
+}
+#endif
+
+#ifndef NO_SWTTextRunProperties_1ForegroundBrush
+extern "C" JNIEXPORT void JNICALL OS_NATIVE(SWTTextRunProperties_1ForegroundBrush)(JNIEnv *env, jclass that, jint arg0, jint arg1);
+JNIEXPORT void JNICALL OS_NATIVE(SWTTextRunProperties_1ForegroundBrush)
+ (JNIEnv *env, jclass that, jint arg0, jint arg1)
+{
+ OS_NATIVE_ENTER(env, that, SWTTextRunProperties_1ForegroundBrush_FUNC);
+ ((SWTTextRunProperties^)TO_OBJECT(arg0))->ForegroundBrush = ((Brush^)TO_OBJECT(arg1));
+ OS_NATIVE_EXIT(env, that, SWTTextRunProperties_1ForegroundBrush_FUNC);
+}
+#endif
+
+#ifndef NO_SWTCanvas_1Visual__I
+extern "C" JNIEXPORT jint JNICALL OS_NATIVE(SWTCanvas_1Visual__I)(JNIEnv *env, jclass that, jint arg0);
+JNIEXPORT jint JNICALL OS_NATIVE(SWTCanvas_1Visual__I)
+ (JNIEnv *env, jclass that, jint arg0)
+{
+ jint rc = 0;
+ OS_NATIVE_ENTER(env, that, SWTCanvas_1Visual__I_FUNC);
+ rc = (jint)TO_HANDLE(((SWTCanvas^)TO_OBJECT(arg0))->Visual);
+ OS_NATIVE_EXIT(env, that, SWTCanvas_1Visual__I_FUNC);
+ return rc;
+}
+#endif
+
+#ifndef NO_SWTCanvas_1Visual__II
+extern "C" JNIEXPORT void JNICALL OS_NATIVE(SWTCanvas_1Visual__II)(JNIEnv *env, jclass that, jint arg0, jint arg1);
+JNIEXPORT void JNICALL OS_NATIVE(SWTCanvas_1Visual__II)
+ (JNIEnv *env, jclass that, jint arg0, jint arg1)
+{
+ OS_NATIVE_ENTER(env, that, SWTCanvas_1Visual__II_FUNC);
+ ((SWTCanvas^)TO_OBJECT(arg0))->Visual = ((DrawingVisual^)TO_OBJECT(arg1));
+ OS_NATIVE_EXIT(env, that, SWTCanvas_1Visual__II_FUNC);
+}
+#endif
+
+#ifndef NO_JNIGetObject
+extern "C" JNIEXPORT jobject JNICALL OS_NATIVE(JNIGetObject)(JNIEnv *env, jclass that, jint arg0);
+JNIEXPORT jobject JNICALL OS_NATIVE(JNIGetObject)
+ (JNIEnv *env, jclass that, jint arg0)
+{
+ jobject rc = 0;
+ OS_NATIVE_ENTER(env, that, JNIGetObject_FUNC);
+ rc = (jobject)arg0;
+ OS_NATIVE_EXIT(env, that, JNIGetObject_FUNC);
+ return rc;
+}
+#endif
+
+#ifndef NO_GCHandle_1Free
+extern "C" JNIEXPORT void JNICALL OS_NATIVE(GCHandle_1Free) (JNIEnv *env, jclass that, jint arg0);
+JNIEXPORT void JNICALL OS_NATIVE(GCHandle_1Free) (JNIEnv *env, jclass that, jint arg0) {
+ OS_NATIVE_ENTER(env, that, GCHandle_1Free_FUNC);
+ FREE_HANDLE(arg0);
+ OS_NATIVE_EXIT(env, that, GCHandle_1Free_FUNC);
+}
+#endif
+
+#ifndef NO_GCHandle_1Dump
+extern "C" JNIEXPORT void JNICALL OS_NATIVE(GCHandle_1Dump) (JNIEnv *env, jclass that);
+JNIEXPORT void JNICALL OS_NATIVE(GCHandle_1Dump) (JNIEnv *env, jclass that) {
+ OS_NATIVE_ENTER(env, that, GCHandle_1Dump_FUNC);
+#ifndef GCHANDLE_TABLE
+ SWTObjectTable::Dump();
+#endif
+ OS_NATIVE_EXIT(env, that, GCHandle_1Dump_FUNC);
+}
+#endif
+
+#ifndef NO_GCHandle_1Alloc
+extern "C" JNIEXPORT jint JNICALL OS_NATIVE(GCHandle_1Alloc) (JNIEnv *env, jclass that, jint arg0);
+JNIEXPORT jint JNICALL OS_NATIVE(GCHandle_1Alloc) (JNIEnv *env, jclass that, jint arg0) {
+ jint rc = 0;
+ OS_NATIVE_ENTER(env, that, GCHandle_1Alloc_FUNC);
+ rc = TO_HANDLE (TO_OBJECT (arg0));
+ OS_NATIVE_EXIT(env, that, GCHandle_1Alloc_FUNC);
+ return rc;
+}
+#endif
+
+#ifndef NO_GCHandle_1ToHandle
+extern "C" JNIEXPORT jint JNICALL OS_NATIVE(GCHandle_1ToHandle) (JNIEnv *env, jclass that, jint arg0);
+JNIEXPORT jint JNICALL OS_NATIVE(GCHandle_1ToHandle) (JNIEnv *env, jclass that, jint arg0) {
+ jint rc = 0;
+ OS_NATIVE_ENTER(env, that, GCHandle_1ToHandle_FUNC);
+#ifdef GCHANDLE_TABLE
+ rc = arg0;
+#else
+ GCHandle gc = GCHandle::FromIntPtr((IntPtr)arg0);
+ rc = TO_HANDLE (gc.Target);
+ gc.Free();
+#endif
+ OS_NATIVE_EXIT(env, that, GCHandle_1ToHandle_FUNC);
+ return rc;
+}
+#endif
+
+#ifndef NO_Bitmap_1GetHicon
+extern "C" JNIEXPORT jint JNICALL OS_NATIVE(Bitmap_1GetHicon)(JNIEnv *env, jclass that, jint arg0);
+JNIEXPORT jint JNICALL OS_NATIVE(Bitmap_1GetHicon)
+ (JNIEnv *env, jclass that, jint arg0)
+{
+ jint rc = 0;
+ OS_NATIVE_ENTER(env, that, Bitmap_1GetHicon_FUNC);
+ rc = (jint)(int)((System::Drawing::Bitmap^)TO_OBJECT(arg0))->GetHicon();
+ OS_NATIVE_EXIT(env, that, Bitmap_1GetHicon_FUNC);
+ return rc;
+}
+#endif
+
+#ifndef NO_Icon_1FromHandle
+extern "C" JNIEXPORT jint JNICALL OS_NATIVE(Icon_1FromHandle)(JNIEnv *env, jclass that, jint arg0);
+JNIEXPORT jint JNICALL OS_NATIVE(Icon_1FromHandle)
+ (JNIEnv *env, jclass that, jint arg0)
+{
+ jint rc = 0;
+ OS_NATIVE_ENTER(env, that, Icon_1FromHandle_FUNC);
+ rc = (jint)TO_HANDLE(System::Drawing::Icon::FromHandle((IntPtr)(int)arg0));
+ OS_NATIVE_EXIT(env, that, Icon_1FromHandle_FUNC);
+ return rc;
+}
+#endif
+
+#ifndef NO_memcpy___3CII
+extern "C" JNIEXPORT void JNICALL OS_NATIVE(memcpy___3CII)(JNIEnv *env, jclass that, jcharArray arg0, jint arg1, jint arg2);
+JNIEXPORT void JNICALL OS_NATIVE(memcpy___3CII)
+ (JNIEnv *env, jclass that, jcharArray arg0, jint arg1, jint arg2)
+{
+ jchar *lparg0=NULL;
+ pin_ptr<wchar_t> lparg1;
+ OS_NATIVE_ENTER(env, that, memcpy___3CII_FUNC);
+#ifdef JNI_VERSION_1_2
+ if (IS_JNI_1_2) {
+ if (arg0) if ((lparg0 = (jchar *)env->GetPrimitiveArrayCritical(arg0, NULL)) == NULL) goto fail;
+ } else
+#endif
+ {
+ if (arg0) if ((lparg0 = env->GetCharArrayElements(arg0, NULL)) == NULL) goto fail;
+ }
+ if (arg2 > 0) {
+ lparg1 = &((array<wchar_t>^)TO_OBJECT(arg1))[0];
+ memcpy(lparg0, lparg1, arg2);
+ }
+fail:
+#ifdef JNI_VERSION_1_2
+ if (IS_JNI_1_2) {
+ if (arg0 && lparg0) env->ReleasePrimitiveArrayCritical(arg0, lparg0, 0);
+ } else
+#endif
+ {
+ if (arg0 && lparg0) env->ReleaseCharArrayElements(arg0, lparg0, 0);
+ }
+ OS_NATIVE_EXIT(env, that, memcpy___3CII_FUNC);
+}
+#endif
+
+#ifndef NO_memcpy__I_3BI
+extern "C" JNIEXPORT void JNICALL OS_NATIVE(memcpy__I_3BI)(JNIEnv *env, jclass that, jint arg0, jbyteArray arg1, jint arg2);
+JNIEXPORT void JNICALL OS_NATIVE(memcpy__I_3BI)
+ (JNIEnv *env, jclass that, jint arg0, jbyteArray arg1, jint arg2)
+{
+ jbyte *lparg1=NULL;
+ pin_ptr<Byte> lparg0;
+ OS_NATIVE_ENTER(env, that, memcpy__I_3BI_FUNC);
+#ifdef JNI_VERSION_1_2
+ if (IS_JNI_1_2) {
+ if (arg1) if ((lparg1 = (jbyte*)env->GetPrimitiveArrayCritical(arg1, NULL)) == NULL) goto fail;
+ } else
+#endif
+ {
+ if (arg1) if ((lparg1 = env->GetByteArrayElements(arg1, NULL)) == NULL) goto fail;
+ }
+ if (arg2 > 0) {
+ lparg0 = &((array<Byte>^)TO_OBJECT(arg0))[0];
+ memcpy(lparg0, lparg1, arg2);
+ }
+fail:
+#ifdef JNI_VERSION_1_2
+ if (IS_JNI_1_2) {
+ if (arg1 && lparg1) env->ReleasePrimitiveArrayCritical(arg1, lparg1, JNI_ABORT);
+ } else
+#endif
+ {
+ if (arg1 && lparg1) env->ReleaseByteArrayElements(arg1, lparg1, JNI_ABORT);
+ }
+ OS_NATIVE_EXIT(env, that, memcpy__I_3BI_FUNC);
+}
+#endif
+
+#ifndef NO_memcpy___3BII
+extern "C" JNIEXPORT void JNICALL OS_NATIVE(memcpy___3BII)(JNIEnv *env, jclass that, jbyteArray arg0, jint arg1, jint arg2);
+JNIEXPORT void JNICALL OS_NATIVE(memcpy___3BII)
+ (JNIEnv *env, jclass that, jbyteArray arg0, jint arg1, jint arg2)
+{
+ jbyte *lparg0=NULL;
+ pin_ptr<Byte> lparg1;
+ OS_NATIVE_ENTER(env, that, memcpy___3BII_FUNC);
+#ifdef JNI_VERSION_1_2
+ if (IS_JNI_1_2) {
+ if (arg0) if ((lparg0 = (jbyte*)env->GetPrimitiveArrayCritical(arg0, NULL)) == NULL) goto fail;
+ } else
+#endif
+ {
+ if (arg0) if ((lparg0 = env->GetByteArrayElements(arg0, NULL)) == NULL) goto fail;
+ }
+ if (arg2 > 0) {
+ lparg1 = &((array<Byte>^)TO_OBJECT(arg1))[0];
+ memcpy(lparg0, lparg1, arg2);
+ }
+fail:
+#ifdef JNI_VERSION_1_2
+ if (IS_JNI_1_2) {
+ if (arg0 && lparg0) env->ReleasePrimitiveArrayCritical(arg0, lparg0, 0);
+ } else
+#endif
+ {
+ if (arg0 && lparg0) env->ReleaseByteArrayElements(arg0, lparg0, 0);
+ }
+ OS_NATIVE_EXIT(env, that, memcpy___3BII_FUNC);
+}
+#endif
+
+#ifndef NO_ToggleButton_1IsCheckedNullSetter
+extern "C" JNIEXPORT void JNICALL OS_NATIVE(ToggleButton_1IsCheckedNullSetter)(JNIEnv *env, jclass that, jint arg0);
+JNIEXPORT void JNICALL OS_NATIVE(ToggleButton_1IsCheckedNullSetter)
+ (JNIEnv *env, jclass that, jint arg0)
+{
+ OS_NATIVE_ENTER(env, that, ToggleButton_1IsCheckedNullSetter_FUNC);
+ ((ToggleButton^)TO_OBJECT(arg0))->IsChecked = Nullable<bool>();
+ OS_NATIVE_EXIT(env, that, ToggleButton_1IsCheckedNullSetter_FUNC);
+}
+#endif
+
+#ifndef NO_SWTAnimator_1DoubleValueProperty
+extern "C" JNIEXPORT jint JNICALL OS_NATIVE(SWTAnimator_1DoubleValueProperty)(JNIEnv *env, jclass that);
+JNIEXPORT jint JNICALL OS_NATIVE(SWTAnimator_1DoubleValueProperty)
+ (JNIEnv *env, jclass that)
+{
+ jint rc = 0;
+ OS_NATIVE_ENTER(env, that, SWTAnimator_1DoubleValueProperty_FUNC);
+ rc = (jint)TO_HANDLE(SWTAnimator::DoubleValueProperty);
+ OS_NATIVE_EXIT(env, that, SWTAnimator_1DoubleValueProperty_FUNC);
+ return rc;
+}
+#endif
+
+#ifndef NO_SWTAnimator_1IntValueProperty
+extern "C" JNIEXPORT jint JNICALL OS_NATIVE(SWTAnimator_1IntValueProperty)(JNIEnv *env, jclass that);
+JNIEXPORT jint JNICALL OS_NATIVE(SWTAnimator_1IntValueProperty)
+ (JNIEnv *env, jclass that)
+{
+ jint rc = 0;
+ OS_NATIVE_ENTER(env, that, SWTAnimator_1IntValueProperty_FUNC);
+ rc = (jint)TO_HANDLE(SWTAnimator::IntValueProperty);
+ OS_NATIVE_EXIT(env, that, SWTAnimator_1IntValueProperty_FUNC);
+ return rc;
+}
+#endif
+
+#ifndef NO_Timeline_1BeginTime__II
+extern "C" JNIEXPORT void JNICALL OS_NATIVE(Timeline_1BeginTime__II)(JNIEnv *env, jclass that, jint arg0, jint arg1);
+JNIEXPORT void JNICALL OS_NATIVE(Timeline_1BeginTime__II)
+ (JNIEnv *env, jclass that, jint arg0, jint arg1)
+{
+ OS_NATIVE_ENTER(env, that, Timeline_1BeginTime__II_FUNC);
+ TimeSpan^ span = (TimeSpan^)TO_OBJECT(arg1);
+ Timeline^ timeline = (Timeline^)TO_OBJECT(arg0);
+ timeline->BeginTime = (Nullable<TimeSpan>(span));
+ OS_NATIVE_EXIT(env, that, Timeline_1BeginTime__II_FUNC);
+}
+#endif
+
+#ifndef NO_gcnew_1SWTAnimation
+extern "C" JNIEXPORT jint JNICALL OS_NATIVE(gcnew_1SWTAnimation)(JNIEnv *env, jclass that, jint arg0);
+JNIEXPORT jint JNICALL OS_NATIVE(gcnew_1SWTAnimation)
+ (JNIEnv *env, jclass that, jint arg0)
+{
+ jint rc = 0;
+ OS_NATIVE_ENTER(env, that, gcnew_1SWTAnimation_FUNC);
+ rc = (jint)TO_HANDLE(gcnew SWTAnimation(env, arg0));
+ OS_NATIVE_EXIT(env, that, gcnew_1SWTAnimation_FUNC);
+ return rc;
+}
+#endif

Back to the top