energy/cef/cef-types.go

593 lines
13 KiB
Go
Raw Normal View History

2022-10-04 13:21:05 +08:00
//----------------------------------------
//
// Copyright © yanghy. All Rights Reserved.
//
// Licensed under Apache License Version 2.0, January 2004
//
// https://www.apache.org/licenses/LICENSE-2.0
2022-10-04 13:21:05 +08:00
//
//----------------------------------------
2023-02-20 14:42:17 +08:00
// cef -> energy 结构类型定义
2022-10-04 13:21:05 +08:00
package cef
import (
2023-03-13 17:09:09 +08:00
"fmt"
"github.com/energye/energy/common"
2022-10-04 22:34:57 +08:00
. "github.com/energye/energy/consts"
2022-12-14 11:11:33 +08:00
. "github.com/energye/energy/types"
2023-03-03 10:00:29 +08:00
"github.com/energye/golcl/lcl"
2023-03-06 12:26:25 +08:00
"github.com/energye/golcl/lcl/api"
2022-10-04 13:21:05 +08:00
"time"
"unsafe"
)
2023-02-20 14:42:17 +08:00
// TCefCloseBrowsesAction 浏览器关闭控制
2022-12-13 22:43:31 +08:00
type TCefCloseBrowsesAction = CBS
2022-10-04 13:21:05 +08:00
2023-02-20 14:42:17 +08:00
// ICefCookie CEF Cookie
2022-10-04 13:21:05 +08:00
type ICefCookie struct {
Url, Name, Value, Domain, Path string
Secure, Httponly, HasExpires bool
Creation, LastAccess, Expires time.Time
Count, Total, ID int32
SameSite TCefCookieSameSite
Priority TCefCookiePriority
SetImmediately bool
DeleteCookie bool
Result bool
}
2023-02-20 14:42:17 +08:00
// TCefKeyEvent CEF 键盘事件
2022-10-04 13:21:05 +08:00
type TCefKeyEvent struct {
Kind TCefKeyEventType // called 'type' in the original CEF source code
Modifiers TCefEventFlags
2022-12-14 11:11:33 +08:00
WindowsKeyCode Int32
NativeKeyCode Int32
IsSystemKey Int32
Character UInt16
UnmodifiedCharacter UInt16
FocusOnEditableField Int32
2022-10-04 13:21:05 +08:00
}
2023-02-20 14:42:17 +08:00
// TCefRequestContextSettings CEF 请求上下文配置
2022-12-13 22:43:31 +08:00
type TCefRequestContextSettings struct {
2022-12-14 11:11:33 +08:00
Size UInt32
2022-12-13 22:43:31 +08:00
CachePath TCefString
2022-12-14 11:11:33 +08:00
PersistSessionCookies Int32
PersistUserPreferences Int32
2022-12-13 22:43:31 +08:00
AcceptLanguageList TCefString
CookieableSchemesList TCefString
2022-12-14 11:11:33 +08:00
CookieableSchemesExcludeDefaults Int32
}
func (m *TCefRequestContextSettings) ToPtr() *tCefRequestContextSettingsPtr {
return &tCefRequestContextSettingsPtr{
2023-03-06 12:26:25 +08:00
Size: uintptr(m.Size),
CachePath: api.PascalStr(string(m.CachePath)),
PersistSessionCookies: uintptr(m.PersistSessionCookies),
PersistUserPreferences: uintptr(m.PersistUserPreferences),
AcceptLanguageList: api.PascalStr(string(m.AcceptLanguageList)),
CookieableSchemesList: api.PascalStr(string(m.CookieableSchemesList)),
CookieableSchemesExcludeDefaults: uintptr(m.CookieableSchemesExcludeDefaults),
2022-12-14 11:11:33 +08:00
}
2022-12-13 22:43:31 +08:00
}
2023-02-20 14:42:17 +08:00
// TCefBrowserSettings CEF Browser配置
2022-12-13 22:43:31 +08:00
type TCefBrowserSettings struct {
Size NativeUInt
WindowlessFrameRate Integer
StandardFontFamily TCefString
FixedFontFamily TCefString
SerifFontFamily TCefString
SansSerifFontFamily TCefString
CursiveFontFamily TCefString
FantasyFontFamily TCefString
DefaultFontSize Integer
DefaultFixedFontSize Integer
MinimumFontSize Integer
MinimumLogicalFontSize Integer
DefaultEncoding TCefString
RemoteFonts TCefState
Javascript TCefState
JavascriptCloseWindows TCefState
JavascriptAccessClipboard TCefState
JavascriptDomPaste TCefState
ImageLoading TCefState
ImageShrinkStandaLonetoFit TCefState
TextAreaResize TCefState
TabToLinks TCefState
LocalStorage TCefState
Databases TCefState
Webgl TCefState
BackgroundColor TCefColor
AcceptLanguageList TCefString
ChromeStatusBubble TCefState
2022-10-04 13:21:05 +08:00
}
2023-02-20 14:42:17 +08:00
// TCefCommandLine 进程启动命令行参数设置
2022-12-13 22:43:31 +08:00
type TCefCommandLine struct {
commandLines map[string]string
2022-10-04 13:21:05 +08:00
}
2023-03-14 11:06:08 +08:00
// ICefCommandLine
type ICefCommandLine struct {
base TCefBaseRefCounted
instance unsafe.Pointer
}
2023-02-20 14:42:17 +08:00
// TCefProxy 代理配置
2022-10-04 13:21:05 +08:00
type TCefProxy struct {
ProxyType TCefProxyType
ProxyScheme TCefProxyScheme
ProxyServer string
ProxyPort int32
ProxyUsername string
ProxyPassword string
ProxyScriptURL string
ProxyByPassList string
MaxConnectionsPerProxy int32
}
2023-02-20 14:42:17 +08:00
// TCefTouchEvent 触摸事件
2022-10-04 13:21:05 +08:00
type TCefTouchEvent struct {
Id int32
X float32
Y float32
RadiusX float32
RadiusY float32
RotationAngle float32
Pressure float32
Type TCefTouchEeventType
Modifiers TCefEventFlags
PointerType TCefPointerType
}
2023-02-20 14:42:17 +08:00
// TCustomHeader 自定义请求头
type TCustomHeader struct {
CustomHeaderName string
CustomHeaderValue string
}
2023-02-20 14:42:17 +08:00
// TCefMouseEvent 鼠标事件
2022-10-04 13:21:05 +08:00
type TCefMouseEvent struct {
X int32
Y int32
Modifiers TCefEventFlags
}
2023-02-20 14:42:17 +08:00
// BeforePopupInfo 弹出子窗口信息
2022-10-04 13:21:05 +08:00
type BeforePopupInfo struct {
TargetUrl string
TargetFrameName string
TargetDisposition TCefWindowOpenDisposition
UserGesture bool
}
2023-02-20 14:42:17 +08:00
// TCefRect 矩形
2022-10-04 13:21:05 +08:00
type TCefRect struct {
X int32
Y int32
Width int32
Height int32
}
2023-02-20 14:42:17 +08:00
// TCefSize 大小
type TCefSize struct {
Width int32
Height int32
}
2023-02-20 14:42:17 +08:00
// TCefPoint 位置
type TCefPoint struct {
X int32
Y int32
}
2023-03-13 22:40:20 +08:00
// TCefSchemeRegistrarRef
type TCefSchemeRegistrarRef struct {
instance unsafe.Pointer
}
2023-03-13 17:09:09 +08:00
// ICefCallback
type ICefCallback struct {
instance unsafe.Pointer
}
2023-03-09 23:17:55 +08:00
// TCefBaseRefCounted
type TCefBaseRefCounted struct {
2023-03-08 23:32:52 +08:00
instance unsafe.Pointer
2023-03-07 22:25:08 +08:00
}
2023-03-03 17:08:06 +08:00
// ICefBrowser main
type ICefBrowser struct {
2023-03-09 23:17:55 +08:00
base TCefBaseRefCounted
2023-03-03 17:08:06 +08:00
instance unsafe.Pointer
mainFrame *ICefFrame
}
// ICefFrame
// Html <iframe></iframe>
type ICefFrame struct {
2023-03-09 23:17:55 +08:00
base TCefBaseRefCounted
2023-03-03 17:08:06 +08:00
instance unsafe.Pointer
}
2023-03-01 13:38:43 +08:00
// ICefImage
type ICefImage struct {
2023-03-14 22:20:08 +08:00
base TCefBaseRefCounted
2023-03-01 13:38:43 +08:00
instance unsafe.Pointer
}
2023-02-20 14:42:17 +08:00
// TCefDraggableRegions 拖拽区域集合
type TCefDraggableRegions struct {
regions []TCefDraggableRegion
regionsCount int
}
2023-02-20 14:42:17 +08:00
// TCefDraggableRegion 拖拽区域集
2022-12-12 18:09:31 +08:00
type TCefDraggableRegion struct {
Bounds TCefRect
Draggable bool
2022-12-12 18:09:31 +08:00
}
// ICefProcessMessage
type ICefProcessMessage struct {
2023-03-12 15:29:46 +08:00
base TCefBaseRefCounted
2023-03-01 14:18:39 +08:00
instance unsafe.Pointer
argumentList *ICefListValue
2023-03-03 15:26:27 +08:00
name string
}
2023-03-09 16:35:38 +08:00
// ICefBinaryValue -> ArgumentList
type ICefBinaryValue struct {
2023-03-09 23:17:55 +08:00
base TCefBaseRefCounted
2023-03-09 16:35:38 +08:00
instance unsafe.Pointer
}
// ICefValue -> ArgumentList
type ICefValue struct {
2023-03-09 23:17:55 +08:00
base TCefBaseRefCounted
2023-03-09 16:35:38 +08:00
instance unsafe.Pointer
binaryValue *ICefBinaryValue
dictionaryValue *ICefDictionaryValue
listValue *ICefListValue
}
// ICefListValue -> ArgumentList
type ICefListValue struct {
2023-03-09 23:17:55 +08:00
base TCefBaseRefCounted
2023-03-09 16:35:38 +08:00
instance unsafe.Pointer
values map[int]*ICefValue
binaryValues map[int]*ICefBinaryValue
dictionaryValues map[int]*ICefDictionaryValue
listValues map[int]*ICefListValue
}
// ICefDictionaryValue -> ArgumentList
type ICefDictionaryValue struct {
2023-03-09 23:17:55 +08:00
base TCefBaseRefCounted
2023-03-09 16:35:38 +08:00
instance unsafe.Pointer
values map[string]*ICefValue
binaryValues map[string]*ICefBinaryValue
dictionaryValues map[string]*ICefDictionaryValue
listValues map[string]*ICefListValue
}
2023-02-20 14:42:17 +08:00
// ICefDisplay
2022-12-13 09:14:59 +08:00
type ICefDisplay struct {
2023-03-13 18:12:55 +08:00
base TCefBaseRefCounted
2022-12-13 09:14:59 +08:00
instance unsafe.Pointer
}
2023-02-20 14:42:17 +08:00
// ICefWindow
2022-12-13 11:49:32 +08:00
type ICefWindow struct {
2023-03-14 22:20:08 +08:00
base TCefBaseRefCounted
2022-12-13 11:49:32 +08:00
instance unsafe.Pointer
}
2023-02-26 22:29:03 +08:00
// ICefRequest
type ICefRequest struct {
2023-03-13 11:54:52 +08:00
base TCefBaseRefCounted
2023-02-26 22:29:03 +08:00
instance unsafe.Pointer
Url string
Method string
ReferrerUrl string
ReferrerPolicy TCefReferrerPolicy
Flags TCefUrlRequestFlags
FirstPartyForCookies string
ResourceType TCefResourceType
TransitionType TCefTransitionType
Identifier uint64
}
// ICefResponse 实例
type ICefResponse struct {
2023-03-13 11:54:52 +08:00
base TCefBaseRefCounted
2023-02-26 22:29:03 +08:00
instance unsafe.Pointer
Status int32
StatusText string
MimeType string
Charset string
Error TCefErrorCode
URL string
}
2023-03-13 11:54:52 +08:00
// ICefMenuModel 菜单
type ICefMenuModel struct {
base TCefBaseRefCounted
instance unsafe.Pointer
CefMis *keyEventAccelerator
}
2023-02-26 22:29:03 +08:00
2023-02-27 09:15:37 +08:00
// ICefStringMultiMap 实例
type ICefStringMultiMap struct {
instance unsafe.Pointer
}
2023-02-26 23:21:44 +08:00
// ICefPostData
type ICefPostData struct {
instance unsafe.Pointer
}
2023-02-27 11:33:00 +08:00
// ICefPostDataElement
type ICefPostDataElement struct {
instance unsafe.Pointer
}
// TCefPostDataElementArray
type TCefPostDataElementArray struct {
instance unsafe.Pointer
postDataElement uintptr
postDataElementLength uint32
}
2023-02-28 21:52:13 +08:00
// ICefBrowserView
type ICefBrowserView struct {
instance unsafe.Pointer
}
2023-02-20 14:42:17 +08:00
// ICefView
type ICefView struct {
instance unsafe.Pointer
}
2023-02-20 14:42:17 +08:00
// ICefClient
2022-10-04 13:21:05 +08:00
type ICefClient struct {
instance unsafe.Pointer
}
2023-02-20 14:42:17 +08:00
// ICefDragData
type ICefDragData struct {
instance unsafe.Pointer
}
2023-02-24 10:12:55 +08:00
// ICefV8Exception
type ICefV8Exception struct {
instance unsafe.Pointer
}
2023-02-23 14:34:23 +08:00
// ICefV8Context
2023-03-01 23:15:39 +08:00
//
// v8上下文对象
//
// 生命周期
// 1. 在回调函数中有效
// 2. 回调函数外使用 cef.V8ContextRef.Current() 获取上下文对象
2023-02-23 14:34:23 +08:00
type ICefV8Context struct {
2023-03-09 23:17:55 +08:00
base TCefBaseRefCounted
2023-02-23 14:34:23 +08:00
instance unsafe.Pointer
2023-03-02 18:47:39 +08:00
browser *ICefBrowser
frame *ICefFrame
global *ICefV8Value
2023-02-23 14:34:23 +08:00
}
// ICefV8Value
type ICefV8Value struct {
2023-03-13 10:50:45 +08:00
base TCefBaseRefCounted
instance unsafe.Pointer
valueType V8ValueType
valueByIndex []*ICefV8Value
valueByKeys map[string]*ICefV8Value
2023-03-16 14:04:39 +08:00
cantFree bool
2023-02-23 14:34:23 +08:00
}
2023-03-03 10:00:29 +08:00
// ICefV8ValueKeys
type ICefV8ValueKeys struct {
2023-03-03 11:43:19 +08:00
keys *lcl.TStrings
count int
keyArray []string
2023-03-03 10:00:29 +08:00
}
2023-02-27 11:33:00 +08:00
// TCefV8ValueArray ICefV8Value 数组的替代结构
type TCefV8ValueArray struct {
2023-03-02 22:20:42 +08:00
instance unsafe.Pointer
arguments uintptr
argumentsLength int
argumentsCollect []*ICefV8Value
2023-02-27 11:33:00 +08:00
}
2023-02-23 14:34:23 +08:00
// ICefV8Handler
type ICefV8Handler struct {
instance unsafe.Pointer
}
//ICefV8Interceptor
type ICefV8Interceptor struct {
instance unsafe.Pointer
}
//ICefV8Accessor
type ICefV8Accessor struct {
instance unsafe.Pointer
}
//ICefV8ArrayBufferReleaseCallback
type ICefV8ArrayBufferReleaseCallback struct {
instance unsafe.Pointer
}
2023-02-28 09:55:20 +08:00
// ICefDownloadItem 下载项
type ICefDownloadItem struct {
2023-03-13 18:12:55 +08:00
base TCefBaseRefCounted
2023-02-28 09:55:20 +08:00
instance unsafe.Pointer
}
// ICefDownloadItemCallback
//
// 下载中回调
type ICefDownloadItemCallback struct {
2023-03-13 18:12:55 +08:00
base TCefBaseRefCounted
2023-02-28 09:55:20 +08:00
instance unsafe.Pointer
}
// ICefBeforeDownloadCallback
//
// 下载之前回调
type ICefBeforeDownloadCallback struct {
2023-03-13 18:12:55 +08:00
base TCefBaseRefCounted
2023-02-28 09:55:20 +08:00
instance unsafe.Pointer
}
2023-03-01 23:02:14 +08:00
// ICefPdfPrintCallback
type ICefPdfPrintCallback struct {
2023-03-13 18:12:55 +08:00
base TCefBaseRefCounted
2023-03-01 23:02:14 +08:00
instance unsafe.Pointer
}
2023-03-14 11:06:08 +08:00
// ICefV8StackTrace
type ICefV8StackTrace struct {
2023-03-13 22:40:20 +08:00
base TCefBaseRefCounted
instance unsafe.Pointer
}
2023-03-14 11:06:08 +08:00
// ICefDomNode
type ICefDomNode struct {
base TCefBaseRefCounted
instance unsafe.Pointer
}
// TCefPreferenceRegistrarRef
type TCefPreferenceRegistrarRef struct {
instance unsafe.Pointer
}
2023-03-01 20:25:21 +08:00
type CefPdfPrintSettings struct {
2023-03-01 23:02:14 +08:00
Landscape int32 // Integer
PrintBackground int32 // Integer
Scale float64 // double
PaperWidth float64 // double
PaperHeight float64 // double
PreferCssPageSize int32 // Integer
MarginType TCefPdfPrintMarginType // TCefPdfPrintMarginType
MarginTop float64 // double
MarginRight float64 // double
MarginBottom float64 // double
MarginLeft float64 // double
PageRanges string // TCefString
DisplayHeaderFooter int32 // Integer
HeaderTemplate string // TCefString
FooterTemplate string // TCefString
2023-03-01 20:25:21 +08:00
}
2023-03-14 11:06:08 +08:00
// ResultString 字符串返回值
type ResultString struct {
value string
}
func (m *ResultString) SetValue(value string) {
m.value = value
}
func (m *ResultString) Value() string {
return m.value
}
// ResultBool bool返回值
type ResultBool struct {
value bool
}
func (m *ResultBool) SetValue(value bool) {
m.value = value
}
func (m *ResultBool) Value() bool {
return m.value
}
// ResultBytes []byte返回值
type ResultBytes struct {
value []byte
2023-02-23 22:19:04 +08:00
}
2023-03-14 11:06:08 +08:00
func (m *ResultBytes) SetValue(value []byte) {
m.value = value
2023-02-23 22:19:04 +08:00
}
2023-03-14 11:06:08 +08:00
func (m *ResultBytes) Value() []byte {
return m.value
2023-02-23 22:19:04 +08:00
}
2023-02-20 14:42:17 +08:00
// NewCefRect
func NewCefRect(x, y, width, height int32) *TCefRect {
return &TCefRect{
X: x,
Y: y,
Width: width,
Height: height,
}
}
2023-02-20 14:42:17 +08:00
// NewCefSize
2022-12-27 21:38:01 +08:00
func NewCefSize(width, height int32) *TCefSize {
return &TCefSize{
Width: width,
Height: height,
}
}
2023-02-20 14:42:17 +08:00
// NewCefPoint
func NewCefPoint(x, y int32) *TCefPoint {
return &TCefPoint{
X: x,
Y: y,
}
}
func (m *ICefClient) SetClient(client *ICefClient) {
m.instance = client.instance
2022-10-04 13:21:05 +08:00
}
func (m *TCefKeyEvent) KeyDown() bool {
return m.Kind == KEYEVENT_RAW_KEYDOWN || m.Kind == KEYEVENT_KEYDOWN
}
func (m *TCefKeyEvent) KeyUp() bool {
return m.Kind == KEYEVENT_KEYUP
}
2023-03-13 17:09:09 +08:00
func (m *VT) ToString() string {
gov := common.FuncParamGoTypeStr(m.Gov)
jsv := common.FuncParamJsTypeStr(m.Jsv)
return fmt.Sprintf("GO=%s JS=%s", gov, jsv)
}
// IsGoIntAuto 判断Go 所有 int 类型
func (m *VT) IsGoIntAuto() bool {
switch m.Gov {
case GO_VALUE_INT, GO_VALUE_INT8, GO_VALUE_INT16, GO_VALUE_INT32, GO_VALUE_INT64, GO_VALUE_UINT, GO_VALUE_UINT8, GO_VALUE_UINT16, GO_VALUE_UINT32, GO_VALUE_UINT64:
return true
}
return false
}
// IsGoFloatAuto 判断Go 所有 float 类型
func (m *VT) IsGoFloatAuto() bool {
switch m.Gov {
case GO_VALUE_FLOAT32, GO_VALUE_FLOAT64:
return true
}
return false
}