Files
vitasdk-odin/Ime/types.odin
T

232 lines
5.8 KiB
Odin

package ime
import "core:c"
import sce "../common"
import sceCommonDialog "../CommonDialog"
SCE_IME_DIALOG_MAX_TITLE_LENGTH :: 128
SCE_IME_DIALOG_MAX_TEXT_LENGTH :: 2048
SCE_IME_WORK_BUFFER_SIZE :: (20*1024)
SCE_IME_MAX_PREEDIT_LENGTH :: (30)
SCE_IME_MAX_TEXT_LENGTH :: (2048)
SceImeDialogErrorCode :: enum c.uint {
PARAM = 0x80102001,
INTERNAL = 0x80102002,
INVALID_DIALOG_MODE = 0x80102003,
INVALID_TEXT_BOX_MODE = 0x80102004,
INVALID_TITLE = 0x80102005
}
SceImeDialogDialogMode :: enum c.int {
DEFAULT = 0,
WITH_CANCEL = 1
}
SceImeDialogTextboxMode :: enum c.int {
DEFAULT = 0,
PASSWORD = 1,
WITH_CLEAR = 2
}
SceImeDialogButton :: enum c.int {
NONE = 0,
CLOSE = 1,
ENTER = 2
}
SceImeDialogParam :: struct {
sdkVersion: sce.UInt32,
inputMethod: sce.UInt32,
supportedLanguages: sce.UInt64, //!< Dialog languages (One or more ::SceImeLanguage)
languagesForced: sce.Bool,
type: sce.UInt32, //!< Dialog type (One of ::SceImeType)
option: sce.UInt32, //!< Dialog options (One or more ::SceImeOption)
filter: SceImeTextFilter,
dialogMode: sce.UInt32, //!< Dialog mode (One of ::SceImeDialogDialogMode)
textBoxMode: sce.UInt32, //!< Textbox mode (One of ::SceImeDialogTextboxMode)
title: [^]sce.WChar16,
maxTextLength: sce.UInt32,
initialText: [^]sce.WChar16,
inputTextBuffer: [^]sce.WChar16,
commonParam: sceCommonDialog.SceCommonDialogParam,
enterLabel: sce.UChar8,
reserved: [35]sce.Char8,
}
when size_of(rawptr) == 4 {
#assert(size_of(SceImeDialogParam) == 0xA8)
}
SceImeDialogResult :: struct {
result: sce.Int32,
button: sce.Int32,
reserved: [28]sce.Char8,
}
#assert(size_of(SceImeDialogResult) == 0x24)
SceImeErrorCode :: enum c.uint {
ALREADY_OPENED = 0x80100700,
NOT_OPENED = 0x80100701,
INVALID_POINTER = 0x80100702,
INVALID_PARAM = 0x80100703,
NO_MEMORY = 0x80100704,
CONNECTION_FAILED = 0x80100705,
INVALID_TEXT = 0x80100706,
TOO_MANY_REQUESTS = 0x80100707,
INVALID_SIZE = 0x80100710,
INVALID_INPUT_METHOD = 0x80100712,
INVALID_SUPPORTED_LANGUAGES = 0x80100713,
INVALID_TYPE = 0x80100714,
INVALID_OPTION = 0x80100715,
INVALID_WORK = 0x80100716,
INVALID_ARG = 0x80100717,
INVALID_HANDLER = 0x80100718,
INVALID_MAX_TEXT_LENGTH = 0x80100719,
INVALID_INPUT_TEXT_BUFFER = 0x8010071a,
INVALID_RESERVED = 0x8010071b,
INVALID_ENTER_LABEL = 0x8010071c,
INTERNAL = 0x80100750
}
SceImeLanguage :: enum c.ulonglong {
DANISH = 0x00000001,
GERMAN = 0x00000002,
ENGLISH = 0x00000004,
SPANISH = 0x00000008,
FRENCH = 0x00000010,
ITALIAN = 0x00000020,
DUTCH = 0x00000040,
NORWEGIAN = 0x00000080,
POLISH = 0x00000100,
PORTUGUESE = 0x00000200,
RUSSIAN = 0x00000400,
FINNISH = 0x00000800,
SWEDISH = 0x00001000,
JAPANESE = 0x00002000,
KOREAN = 0x00004000,
SIMPLIFIED_CHINESE = 0x00008000,
TRADITIONAL_CHINESE = 0x00010000,
PORTUGUESE_BR = 0x00020000,
ENGLISH_GB = 0x00040000,
TURKISH = 0x00080000,
}
SceImeType :: enum c.int {
DEFAULT = 0,
BASIC_LATIN = 1,
NUMBER = 2,
EXTENDED_NUMBER = 3,
URL = 4,
MAIL = 5
}
SceImeEnterLabel :: enum c.int {
DEFAULT = 0,
SEND = 1,
SEARCH = 2,
GO = 3
}
SceImeOption :: enum c.int {
MULTILINE = 0x01,
NO_AUTO_CAPITALIZATION = 0x02,
NO_ASSISTANCE = 0x04
}
SceImeEvent :: enum c.int {
OPEN = 0,
UPDATE_TEXT = 1,
UPDATE_CARET = 2,
CHANGE_SIZE = 3,
PRESS_CLOSE = 4,
PRESS_ENTER = 5
}
SceImeRect :: struct {
x: sce.UInt32,
y: sce.UInt32,
width: sce.UInt32,
height: sce.UInt32,
}
#assert(size_of(SceImeRect) == 0x10)
SceImeEditText :: struct {
preeditIndex: sce.UInt32,
preeditLength: sce.UInt32,
caretIndex: sce.UInt32,
str: [^]sce.WChar16,
editIndex: sce.UInt32,
editLengthChange: sce.Int32,
}
when size_of(rawptr) == 4 {
#assert(size_of(SceImeEditText) == 0x18)
}
SceImeEventParam :: struct #raw_union {
rect: SceImeRect,
text: SceImeEditText,
caretIndex: sce.UInt32,
reserved: [40]sce.UChar8,
}
#assert(size_of(SceImeEventParam) == 0x28)
SceImeEventData :: struct #packed {
id: sce.UInt32,
param: SceImeEventParam,
}
#assert(size_of(SceImeEventData) == 0x2C)
SceImeCaret :: struct {
x: sce.UInt32,
y: sce.UInt32,
height: sce.UInt32,
index: sce.UInt32,
}
#assert(size_of(SceImeCaret) == 0x10)
SceImePreeditGeometry :: struct {
x: sce.UInt32,
y: sce.UInt32,
height: sce.UInt32,
}
#assert(size_of(SceImePreeditGeometry) == 0xC)
SceImeTextFilter :: #type ^proc(
outText: [^]sce.WChar16,
outTextLength: ^sce.UInt32,
srcText: [^]sce.WChar16,
srcTextLength: sce.UInt32) -> sce.UInt32
SceImeEventHandler :: #type ^proc(arg: rawptr, #by_ptr e: SceImeEventData)
SceImeParam :: struct {
sdkVersion: sce.UInt32,
inputMethod: sce.UInt32,
supportedLanguages: sce.UInt64, //!< Dialog languages (One or more ::SceImeLanguage)
languagesForced: sce.Bool,
type: sce.UInt32, //!< Dialog type (One of ::SceImeType)
option: sce.UInt32, //!< Dialog options (One or more ::SceImeOption)
work: rawptr,
arg: rawptr,
handler: SceImeEventHandler,
filter: SceImeTextFilter,
initialText: [^]sce.WChar16,
maxTextLength: sce.UInt32,
inputTextBuffer: [^]sce.WChar16,
enterLabel: sce.UChar8,
reserved: [7]sce.UChar8,
}
when size_of(rawptr) == 4 {
#assert(size_of(SceImeParam) == 0x40)
}