Refactor ImGuiInputTextData into an inner ImString class and rename to InputData

This commit is contained in:
SpaiR committed 2020-06-16 17:20:09 +03:00
1 parent e60f56beb7
commit ebd1e69f89
3 files changed
+46 -48

No files matched your search

+12 -13
View File
@@ -4,7 +4,6 @@ import imgui.flag.ImGuiInputTextFlags;
import imgui.type.ImBool;
import imgui.type.ImDouble;
import imgui.type.ImFloat;
import imgui.type.ImGuiInputTextData;
import imgui.type.ImInt;
import imgui.type.ImLong;
import imgui.type.ImShort;
@@ -2639,9 +2638,9 @@ public final class ImGui {
/*JNI
jmethodID jImStringResizeInternalMID;
jfieldID imTextInputDataSizeID;
jfieldID imTextInputDataIsDirtyID;
jfieldID imTextInputDataIsResizedID;
jfieldID inputDataSizeID;
jfieldID inputDataIsDirtyID;
jfieldID inputDataIsResizedID;
struct InputTextCallbackUserData {
JNIEnv* env;
@@ -2688,12 +2687,12 @@ public final class ImGui {
*/
private static native void nInitInputTextData(); /*
jclass jImInputTextDataClass = env->FindClass("imgui/ImGuiInputTextData");
imTextInputDataSizeID = env->GetFieldID(jImInputTextDataClass, "size", "I");
imTextInputDataIsDirtyID = env->GetFieldID(jImInputTextDataClass, "isDirty", "Z");
imTextInputDataIsResizedID = env->GetFieldID(jImInputTextDataClass, "isResized", "Z");
jclass jInputDataClass = env->FindClass("imgui/type/ImString$InputData");
inputDataSizeID = env->GetFieldID(jInputDataClass, "size", "I");
inputDataIsDirtyID = env->GetFieldID(jInputDataClass, "isDirty", "Z");
inputDataIsResizedID = env->GetFieldID(jInputDataClass, "isResized", "Z");
jclass jImString = env->FindClass("imgui/ImString");
jclass jImString = env->FindClass("imgui/type/ImString");
jImStringResizeInternalMID = env->GetMethodID(jImString, "resizeInternal", "(I)[B");
*/
@@ -2722,7 +2721,7 @@ public final class ImGui {
}
private static boolean preInputText(boolean multiline, String label, ImString text, float width, float height, int flags) {
final ImGuiInputTextData inputData = text.inputData;
final ImString.InputData inputData = text.inputData;
if (inputData.isResizable) {
flags |= ImGuiInputTextFlags.CallbackResize;
@@ -2735,7 +2734,7 @@ public final class ImGui {
return nInputText(multiline, label, text, text.getData(), text.getData().length, width, height, flags, inputData, inputData.allowedChars);
}
private static native boolean nInputText(boolean multiline, String label, ImString imString, byte[] buf, int maxSize, float width, float height, int flags, ImGuiInputTextData textInputData, String allowedChars); /*
private static native boolean nInputText(boolean multiline, String label, ImString imString, byte[] buf, int maxSize, float width, float height, int flags, ImString.InputData textInputData, String allowedChars); /*
InputTextCallbackUserData userData;
userData.imString = &imString;
userData.maxSize = maxSize;
@@ -2763,8 +2762,8 @@ public final class ImGui {
size = strlen(buf);
}
env->SetIntField(textInputData, imTextInputDataSizeID, size);
env->SetBooleanField(textInputData, imTextInputDataIsDirtyID, true);
env->SetIntField(textInputData, inputDataSizeID, size);
env->SetBooleanField(textInputData, inputDataIsDirtyID, true);
}
return valueChanged;
@@ -1,34 +0,0 @@
package imgui.type;
/**
* Use this class to customize your ImGui input.
*/
public final class ImGuiInputTextData {
private static final short DEFAULT_RESIZE_FACTOR = 10;
/**
* If not empty, then other chars which are different from provided will be filtered during the {@link imgui.ImGui#inputText}
* and {@link imgui.ImGui#inputTextMultiline} methods.
*/
public String allowedChars = "";
/**
* If true, then string will be resized during the the {@link imgui.ImGui#inputText} and {@link imgui.ImGui#inputTextMultiline} methods.
* Alternatively you can provide {@link imgui.flag.ImGuiInputTextFlags#CallbackResize} flag to the input text widgets to enable string resizing.
* Resize factor of the string could be modified by changing {@link #resizeFactor} field.
*/
public boolean isResizable;
/**
* String will be resized to the value equal to a new size plus this resize factor.
* Default value is 10.
*/
public int resizeFactor = DEFAULT_RESIZE_FACTOR;
int size;
boolean isDirty;
boolean isResized = false;
ImGuiInputTextData() {
}
}
@@ -20,7 +20,7 @@ public final class ImString implements Cloneable {
* Configuration class to setup some specific behaviour for current string.
* This is useful when string used inside of ImGui#InputText*() methods.
*/
public final ImGuiInputTextData inputData = new ImGuiInputTextData();
public final InputData inputData = new InputData();
private byte[] data;
private String text = "";
@@ -169,4 +169,37 @@ public final class ImString implements Cloneable {
public ImString clone() {
return new ImString(this);
}
/**
* Use this class to customize your ImGui input.
*/
public static final class InputData {
private static final short DEFAULT_RESIZE_FACTOR = 10;
/**
* If not empty, then other chars which are different from provided will be filtered during the {@link imgui.ImGui#inputText}
* and {@link imgui.ImGui#inputTextMultiline} methods.
*/
public String allowedChars = "";
/**
* If true, then string will be resized during the the {@link imgui.ImGui#inputText} and {@link imgui.ImGui#inputTextMultiline} methods.
* Alternatively you can provide {@link imgui.flag.ImGuiInputTextFlags#CallbackResize} flag to the input text widgets to enable string resizing.
* Resize factor of the string could be modified by changing {@link #resizeFactor} field.
*/
public boolean isResizable;
/**
* String will be resized to the value equal to a new size plus this resize factor.
* Default value is 10.
*/
public int resizeFactor = DEFAULT_RESIZE_FACTOR;
int size;
boolean isDirty;
boolean isResized = false;
private InputData() {
}
}
}