init OpenCAX Src
This commit is contained in:
parent
d215190f0e
commit
5f83b9c4c4
12
.gitignore
vendored
Normal file
12
.gitignore
vendored
Normal file
@ -0,0 +1,12 @@
|
|||||||
|
/node_modules
|
||||||
|
/oh_modules
|
||||||
|
/local.properties
|
||||||
|
/.idea
|
||||||
|
**/build
|
||||||
|
/.hvigor
|
||||||
|
.cxx
|
||||||
|
/.clangd
|
||||||
|
/.clang-format
|
||||||
|
/.clang-tidy
|
||||||
|
**/.test
|
||||||
|
/.appanalyzer
|
||||||
10
AppScope/app.json5
Normal file
10
AppScope/app.json5
Normal file
@ -0,0 +1,10 @@
|
|||||||
|
{
|
||||||
|
"app": {
|
||||||
|
"bundleName": "com.example.opencax",
|
||||||
|
"vendor": "example",
|
||||||
|
"versionCode": 1000000,
|
||||||
|
"versionName": "1.0.0",
|
||||||
|
"icon": "$media:layered_image",
|
||||||
|
"label": "$string:app_name"
|
||||||
|
}
|
||||||
|
}
|
||||||
8
AppScope/resources/base/element/string.json
Normal file
8
AppScope/resources/base/element/string.json
Normal file
@ -0,0 +1,8 @@
|
|||||||
|
{
|
||||||
|
"string": [
|
||||||
|
{
|
||||||
|
"name": "app_name",
|
||||||
|
"value": "OpenCAX"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
BIN
AppScope/resources/base/media/background.png
Normal file
BIN
AppScope/resources/base/media/background.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 90 KiB |
BIN
AppScope/resources/base/media/foreground.png
Normal file
BIN
AppScope/resources/base/media/foreground.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 15 KiB |
7
AppScope/resources/base/media/layered_image.json
Normal file
7
AppScope/resources/base/media/layered_image.json
Normal file
@ -0,0 +1,7 @@
|
|||||||
|
{
|
||||||
|
"layered-image":
|
||||||
|
{
|
||||||
|
"background" : "$media:background",
|
||||||
|
"foreground" : "$media:foreground"
|
||||||
|
}
|
||||||
|
}
|
||||||
43
build-profile.json5
Normal file
43
build-profile.json5
Normal file
@ -0,0 +1,43 @@
|
|||||||
|
{
|
||||||
|
"app": {
|
||||||
|
"signingConfigs": [],
|
||||||
|
"products": [
|
||||||
|
{
|
||||||
|
"name": "default",
|
||||||
|
"signingConfig": "default",
|
||||||
|
"targetSdkVersion": "6.0.2(22)",
|
||||||
|
"compatibleSdkVersion": "6.0.2(22)",
|
||||||
|
"runtimeOS": "HarmonyOS",
|
||||||
|
"buildOption": {
|
||||||
|
"nativeCompiler": "BiSheng",
|
||||||
|
"strictMode": {
|
||||||
|
"caseSensitiveCheck": true,
|
||||||
|
"useNormalizedOHMUrl": true
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"buildModeSet": [
|
||||||
|
{
|
||||||
|
"name": "debug",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "release"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"modules": [
|
||||||
|
{
|
||||||
|
"name": "entry",
|
||||||
|
"srcPath": "./entry",
|
||||||
|
"targets": [
|
||||||
|
{
|
||||||
|
"name": "default",
|
||||||
|
"applyToProducts": [
|
||||||
|
"default"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
32
code-linter.json5
Normal file
32
code-linter.json5
Normal file
@ -0,0 +1,32 @@
|
|||||||
|
{
|
||||||
|
"files": [
|
||||||
|
"**/*.ets"
|
||||||
|
],
|
||||||
|
"ignore": [
|
||||||
|
"**/src/ohosTest/**/*",
|
||||||
|
"**/src/test/**/*",
|
||||||
|
"**/src/mock/**/*",
|
||||||
|
"**/node_modules/**/*",
|
||||||
|
"**/oh_modules/**/*",
|
||||||
|
"**/build/**/*",
|
||||||
|
"**/.preview/**/*"
|
||||||
|
],
|
||||||
|
"ruleSet": [
|
||||||
|
"plugin:@performance/recommended",
|
||||||
|
"plugin:@typescript-eslint/recommended"
|
||||||
|
],
|
||||||
|
"rules": {
|
||||||
|
"@security/no-unsafe-aes": "error",
|
||||||
|
"@security/no-unsafe-hash": "error",
|
||||||
|
"@security/no-unsafe-mac": "warn",
|
||||||
|
"@security/no-unsafe-dh": "error",
|
||||||
|
"@security/no-unsafe-dsa": "error",
|
||||||
|
"@security/no-unsafe-ecdsa": "error",
|
||||||
|
"@security/no-unsafe-rsa-encrypt": "error",
|
||||||
|
"@security/no-unsafe-rsa-sign": "error",
|
||||||
|
"@security/no-unsafe-rsa-key": "error",
|
||||||
|
"@security/no-unsafe-dsa-key": "error",
|
||||||
|
"@security/no-unsafe-dh-key": "error",
|
||||||
|
"@security/no-unsafe-3des": "error"
|
||||||
|
}
|
||||||
|
}
|
||||||
6
entry/.gitignore
vendored
Normal file
6
entry/.gitignore
vendored
Normal file
@ -0,0 +1,6 @@
|
|||||||
|
/node_modules
|
||||||
|
/oh_modules
|
||||||
|
/.preview
|
||||||
|
/build
|
||||||
|
/.cxx
|
||||||
|
/.test
|
||||||
55
entry/build-profile.json5
Normal file
55
entry/build-profile.json5
Normal file
@ -0,0 +1,55 @@
|
|||||||
|
{
|
||||||
|
"apiType": "stageMode",
|
||||||
|
"buildOption": {
|
||||||
|
"resOptions": {
|
||||||
|
"copyCodeResource": {
|
||||||
|
"enable": false
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"externalNativeOptions": {
|
||||||
|
"path": "./src/main/cpp/CMakeLists.txt",
|
||||||
|
"arguments": "-DOHOS_STL=c++_shared",
|
||||||
|
"cppFlags": "",
|
||||||
|
"abiFilters": [
|
||||||
|
"x86_64"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"arkOptions": {
|
||||||
|
"runtimeOnly" : {
|
||||||
|
"packages": [
|
||||||
|
"libocctrender.so"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"buildOptionSet": [
|
||||||
|
{
|
||||||
|
"name": "release",
|
||||||
|
"arkOptions": {
|
||||||
|
"obfuscation": {
|
||||||
|
"ruleOptions": {
|
||||||
|
"enable": false,
|
||||||
|
"files": [
|
||||||
|
"./obfuscation-rules.txt"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"nativeLib": {
|
||||||
|
"debugSymbol": {
|
||||||
|
"strip": true,
|
||||||
|
"exclude": []
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
],
|
||||||
|
"targets": [
|
||||||
|
{
|
||||||
|
"name": "default",
|
||||||
|
"runtimeOS": "HarmonyOS"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "ohosTest",
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
6
entry/hvigorfile.ts
Normal file
6
entry/hvigorfile.ts
Normal file
@ -0,0 +1,6 @@
|
|||||||
|
import { hapTasks } from '@ohos/hvigor-ohos-plugin';
|
||||||
|
|
||||||
|
export default {
|
||||||
|
system: hapTasks, /* Built-in plugin of Hvigor. It cannot be modified. */
|
||||||
|
plugins: [] /* Custom plugin to extend the functionality of Hvigor. */
|
||||||
|
}
|
||||||
BIN
entry/libs/x86_64/libTKBO.so.7.9
Normal file
BIN
entry/libs/x86_64/libTKBO.so.7.9
Normal file
Binary file not shown.
BIN
entry/libs/x86_64/libTKBRep.so.7.9
Normal file
BIN
entry/libs/x86_64/libTKBRep.so.7.9
Normal file
Binary file not shown.
BIN
entry/libs/x86_64/libTKBin.so.7.9
Normal file
BIN
entry/libs/x86_64/libTKBin.so.7.9
Normal file
Binary file not shown.
BIN
entry/libs/x86_64/libTKBinL.so.7.9
Normal file
BIN
entry/libs/x86_64/libTKBinL.so.7.9
Normal file
Binary file not shown.
BIN
entry/libs/x86_64/libTKBinTObj.so.7.9
Normal file
BIN
entry/libs/x86_64/libTKBinTObj.so.7.9
Normal file
Binary file not shown.
BIN
entry/libs/x86_64/libTKBinXCAF.so.7.9
Normal file
BIN
entry/libs/x86_64/libTKBinXCAF.so.7.9
Normal file
Binary file not shown.
BIN
entry/libs/x86_64/libTKBool.so.7.9
Normal file
BIN
entry/libs/x86_64/libTKBool.so.7.9
Normal file
Binary file not shown.
BIN
entry/libs/x86_64/libTKCAF.so.7.9
Normal file
BIN
entry/libs/x86_64/libTKCAF.so.7.9
Normal file
Binary file not shown.
BIN
entry/libs/x86_64/libTKCDF.so.7.9
Normal file
BIN
entry/libs/x86_64/libTKCDF.so.7.9
Normal file
Binary file not shown.
BIN
entry/libs/x86_64/libTKDE.so.7.9
Normal file
BIN
entry/libs/x86_64/libTKDE.so.7.9
Normal file
Binary file not shown.
BIN
entry/libs/x86_64/libTKDECascade.so.7.9
Normal file
BIN
entry/libs/x86_64/libTKDECascade.so.7.9
Normal file
Binary file not shown.
BIN
entry/libs/x86_64/libTKDEGLTF.so.7.9
Normal file
BIN
entry/libs/x86_64/libTKDEGLTF.so.7.9
Normal file
Binary file not shown.
BIN
entry/libs/x86_64/libTKDEIGES.so.7.9
Normal file
BIN
entry/libs/x86_64/libTKDEIGES.so.7.9
Normal file
Binary file not shown.
BIN
entry/libs/x86_64/libTKDEOBJ.so.7.9
Normal file
BIN
entry/libs/x86_64/libTKDEOBJ.so.7.9
Normal file
Binary file not shown.
BIN
entry/libs/x86_64/libTKDEPLY.so.7.9
Normal file
BIN
entry/libs/x86_64/libTKDEPLY.so.7.9
Normal file
Binary file not shown.
BIN
entry/libs/x86_64/libTKDESTEP.so.7.9
Normal file
BIN
entry/libs/x86_64/libTKDESTEP.so.7.9
Normal file
Binary file not shown.
BIN
entry/libs/x86_64/libTKDESTL.so.7.9
Normal file
BIN
entry/libs/x86_64/libTKDESTL.so.7.9
Normal file
Binary file not shown.
BIN
entry/libs/x86_64/libTKDEVRML.so.7.9
Normal file
BIN
entry/libs/x86_64/libTKDEVRML.so.7.9
Normal file
Binary file not shown.
BIN
entry/libs/x86_64/libTKFeat.so.7.9
Normal file
BIN
entry/libs/x86_64/libTKFeat.so.7.9
Normal file
Binary file not shown.
BIN
entry/libs/x86_64/libTKFillet.so.7.9
Normal file
BIN
entry/libs/x86_64/libTKFillet.so.7.9
Normal file
Binary file not shown.
BIN
entry/libs/x86_64/libTKG2d.so.7.9
Normal file
BIN
entry/libs/x86_64/libTKG2d.so.7.9
Normal file
Binary file not shown.
BIN
entry/libs/x86_64/libTKG3d.so.7.9
Normal file
BIN
entry/libs/x86_64/libTKG3d.so.7.9
Normal file
Binary file not shown.
BIN
entry/libs/x86_64/libTKGeomAlgo.so.7.9
Normal file
BIN
entry/libs/x86_64/libTKGeomAlgo.so.7.9
Normal file
Binary file not shown.
BIN
entry/libs/x86_64/libTKGeomBase.so.7.9
Normal file
BIN
entry/libs/x86_64/libTKGeomBase.so.7.9
Normal file
Binary file not shown.
BIN
entry/libs/x86_64/libTKHLR.so.7.9
Normal file
BIN
entry/libs/x86_64/libTKHLR.so.7.9
Normal file
Binary file not shown.
BIN
entry/libs/x86_64/libTKLCAF.so.7.9
Normal file
BIN
entry/libs/x86_64/libTKLCAF.so.7.9
Normal file
Binary file not shown.
BIN
entry/libs/x86_64/libTKMath.so.7.9
Normal file
BIN
entry/libs/x86_64/libTKMath.so.7.9
Normal file
Binary file not shown.
BIN
entry/libs/x86_64/libTKMesh.so.7.9
Normal file
BIN
entry/libs/x86_64/libTKMesh.so.7.9
Normal file
Binary file not shown.
BIN
entry/libs/x86_64/libTKMeshVS.so.7.9
Normal file
BIN
entry/libs/x86_64/libTKMeshVS.so.7.9
Normal file
Binary file not shown.
BIN
entry/libs/x86_64/libTKOffset.so.7.9
Normal file
BIN
entry/libs/x86_64/libTKOffset.so.7.9
Normal file
Binary file not shown.
BIN
entry/libs/x86_64/libTKOpenGles.so.7.9
Normal file
BIN
entry/libs/x86_64/libTKOpenGles.so.7.9
Normal file
Binary file not shown.
BIN
entry/libs/x86_64/libTKPrim.so.7.9
Normal file
BIN
entry/libs/x86_64/libTKPrim.so.7.9
Normal file
Binary file not shown.
BIN
entry/libs/x86_64/libTKRWMesh.so.7.9
Normal file
BIN
entry/libs/x86_64/libTKRWMesh.so.7.9
Normal file
Binary file not shown.
BIN
entry/libs/x86_64/libTKService.so.7.9
Normal file
BIN
entry/libs/x86_64/libTKService.so.7.9
Normal file
Binary file not shown.
BIN
entry/libs/x86_64/libTKShHealing.so.7.9
Normal file
BIN
entry/libs/x86_64/libTKShHealing.so.7.9
Normal file
Binary file not shown.
BIN
entry/libs/x86_64/libTKStd.so.7.9
Normal file
BIN
entry/libs/x86_64/libTKStd.so.7.9
Normal file
Binary file not shown.
BIN
entry/libs/x86_64/libTKStdL.so.7.9
Normal file
BIN
entry/libs/x86_64/libTKStdL.so.7.9
Normal file
Binary file not shown.
BIN
entry/libs/x86_64/libTKTObj.so.7.9
Normal file
BIN
entry/libs/x86_64/libTKTObj.so.7.9
Normal file
Binary file not shown.
BIN
entry/libs/x86_64/libTKTopAlgo.so.7.9
Normal file
BIN
entry/libs/x86_64/libTKTopAlgo.so.7.9
Normal file
Binary file not shown.
BIN
entry/libs/x86_64/libTKV3d.so.7.9
Normal file
BIN
entry/libs/x86_64/libTKV3d.so.7.9
Normal file
Binary file not shown.
BIN
entry/libs/x86_64/libTKVCAF.so.7.9
Normal file
BIN
entry/libs/x86_64/libTKVCAF.so.7.9
Normal file
Binary file not shown.
BIN
entry/libs/x86_64/libTKXCAF.so.7.9
Normal file
BIN
entry/libs/x86_64/libTKXCAF.so.7.9
Normal file
Binary file not shown.
BIN
entry/libs/x86_64/libTKXMesh.so.7.9
Normal file
BIN
entry/libs/x86_64/libTKXMesh.so.7.9
Normal file
Binary file not shown.
BIN
entry/libs/x86_64/libTKXSBase.so.7.9
Normal file
BIN
entry/libs/x86_64/libTKXSBase.so.7.9
Normal file
Binary file not shown.
BIN
entry/libs/x86_64/libTKXml.so.7.9
Normal file
BIN
entry/libs/x86_64/libTKXml.so.7.9
Normal file
Binary file not shown.
BIN
entry/libs/x86_64/libTKXmlL.so.7.9
Normal file
BIN
entry/libs/x86_64/libTKXmlL.so.7.9
Normal file
Binary file not shown.
BIN
entry/libs/x86_64/libTKXmlTObj.so.7.9
Normal file
BIN
entry/libs/x86_64/libTKXmlTObj.so.7.9
Normal file
Binary file not shown.
BIN
entry/libs/x86_64/libTKXmlXCAF.so.7.9
Normal file
BIN
entry/libs/x86_64/libTKXmlXCAF.so.7.9
Normal file
Binary file not shown.
BIN
entry/libs/x86_64/libTKernel.so.7.9
Normal file
BIN
entry/libs/x86_64/libTKernel.so.7.9
Normal file
Binary file not shown.
BIN
entry/libs/x86_64/libbrotlicommon.so.1
Normal file
BIN
entry/libs/x86_64/libbrotlicommon.so.1
Normal file
Binary file not shown.
BIN
entry/libs/x86_64/libbrotlidec.so.1
Normal file
BIN
entry/libs/x86_64/libbrotlidec.so.1
Normal file
Binary file not shown.
BIN
entry/libs/x86_64/libbrotlienc.so.1
Normal file
BIN
entry/libs/x86_64/libbrotlienc.so.1
Normal file
Binary file not shown.
BIN
entry/libs/x86_64/libbz2.so.1.0
Normal file
BIN
entry/libs/x86_64/libbz2.so.1.0
Normal file
Binary file not shown.
BIN
entry/libs/x86_64/libexpat.so.1
Normal file
BIN
entry/libs/x86_64/libexpat.so.1
Normal file
Binary file not shown.
BIN
entry/libs/x86_64/libfontconfig.so.1
Normal file
BIN
entry/libs/x86_64/libfontconfig.so.1
Normal file
Binary file not shown.
BIN
entry/libs/x86_64/libfreetype.so.6
Normal file
BIN
entry/libs/x86_64/libfreetype.so.6
Normal file
Binary file not shown.
BIN
entry/libs/x86_64/libpng16.so.16
Normal file
BIN
entry/libs/x86_64/libpng16.so.16
Normal file
Binary file not shown.
BIN
entry/libs/x86_64/libz.so.1
Normal file
BIN
entry/libs/x86_64/libz.so.1
Normal file
Binary file not shown.
23
entry/obfuscation-rules.txt
Normal file
23
entry/obfuscation-rules.txt
Normal file
@ -0,0 +1,23 @@
|
|||||||
|
# Define project specific obfuscation rules here.
|
||||||
|
# You can include the obfuscation configuration files in the current module's build-profile.json5.
|
||||||
|
#
|
||||||
|
# For more details, see
|
||||||
|
# https://developer.huawei.com/consumer/cn/doc/harmonyos-guides/source-obfuscation
|
||||||
|
|
||||||
|
# Obfuscation options:
|
||||||
|
# -disable-obfuscation: disable all obfuscations
|
||||||
|
# -enable-property-obfuscation: obfuscate the property names
|
||||||
|
# -enable-toplevel-obfuscation: obfuscate the names in the global scope
|
||||||
|
# -compact: remove unnecessary blank spaces and all line feeds
|
||||||
|
# -remove-log: remove all console.* statements
|
||||||
|
# -print-namecache: print the name cache that contains the mapping from the old names to new names
|
||||||
|
# -apply-namecache: reuse the given cache file
|
||||||
|
|
||||||
|
# Keep options:
|
||||||
|
# -keep-property-name: specifies property names that you want to keep
|
||||||
|
# -keep-global-name: specifies names that you want to keep in the global scope
|
||||||
|
|
||||||
|
-enable-property-obfuscation
|
||||||
|
-enable-toplevel-obfuscation
|
||||||
|
-enable-filename-obfuscation
|
||||||
|
-enable-export-obfuscation
|
||||||
19
entry/oh-package-lock.json5
Normal file
19
entry/oh-package-lock.json5
Normal file
@ -0,0 +1,19 @@
|
|||||||
|
{
|
||||||
|
"meta": {
|
||||||
|
"stableOrder": true,
|
||||||
|
"enableUnifiedLockfile": false
|
||||||
|
},
|
||||||
|
"lockfileVersion": 3,
|
||||||
|
"ATTENTION": "THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY.",
|
||||||
|
"specifiers": {
|
||||||
|
"libocctrender.so@src/main/cpp/types/libocctrender": "libocctrender.so@src/main/cpp/types/libocctrender"
|
||||||
|
},
|
||||||
|
"packages": {
|
||||||
|
"libocctrender.so@src/main/cpp/types/libocctrender": {
|
||||||
|
"name": "libocctrender.so",
|
||||||
|
"version": "1.0.0",
|
||||||
|
"resolved": "src/main/cpp/types/libocctrender",
|
||||||
|
"registryType": "local"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
11
entry/oh-package.json5
Normal file
11
entry/oh-package.json5
Normal file
@ -0,0 +1,11 @@
|
|||||||
|
{
|
||||||
|
"name": "entry",
|
||||||
|
"version": "1.0.0",
|
||||||
|
"description": "Please describe the basic information.",
|
||||||
|
"main": "",
|
||||||
|
"author": "",
|
||||||
|
"license": "",
|
||||||
|
"dependencies": {
|
||||||
|
"libocctrender.so": "file:./src/main/cpp/types/libocctrender"
|
||||||
|
}
|
||||||
|
}
|
||||||
86
entry/src/main/cpp/CMakeLists.txt
Normal file
86
entry/src/main/cpp/CMakeLists.txt
Normal file
@ -0,0 +1,86 @@
|
|||||||
|
# the minimum version of CMake.
|
||||||
|
cmake_minimum_required(VERSION 3.5.0)
|
||||||
|
project(OpenCAX)
|
||||||
|
|
||||||
|
set(NATIVERENDER_ROOT_PATH ${CMAKE_CURRENT_SOURCE_DIR})
|
||||||
|
add_definitions(-DOHOS_PLATFORM)
|
||||||
|
|
||||||
|
#if(DEFINED PACKAGE_FIND_FILE)
|
||||||
|
# include(${PACKAGE_FIND_FILE})
|
||||||
|
#endif()
|
||||||
|
|
||||||
|
# 添加NAPI头文件
|
||||||
|
include_directories(${NATIVERENDER_ROOT_PATH}
|
||||||
|
${NATIVERENDER_ROOT_PATH}/include
|
||||||
|
${NATIVERENDER_ROOT_PATH}/include/opencascade
|
||||||
|
)
|
||||||
|
|
||||||
|
# OCCT库配置
|
||||||
|
set(OCCT_LIB_DIR ${CMAKE_CURRENT_SOURCE_DIR}/../../../libs/${OHOS_ARCH})
|
||||||
|
set(OCCT_LIBS
|
||||||
|
${OCCT_LIB_DIR}/libTKernel.so.7.9
|
||||||
|
${OCCT_LIB_DIR}/libTKBRep.so.7.9
|
||||||
|
${OCCT_LIB_DIR}/libTKOpenGles.so.7.9
|
||||||
|
${OCCT_LIB_DIR}/libTKMath.so.7.9
|
||||||
|
${OCCT_LIB_DIR}/libTKG2d.so.7.9
|
||||||
|
${OCCT_LIB_DIR}/libTKG3d.so.7.9
|
||||||
|
${OCCT_LIB_DIR}/libTKGeomBase.so.7.9
|
||||||
|
${OCCT_LIB_DIR}/libTKGeomAlgo.so.7.9
|
||||||
|
${OCCT_LIB_DIR}/libTKTopAlgo.so.7.9
|
||||||
|
${OCCT_LIB_DIR}/libTKMesh.so.7.9
|
||||||
|
${OCCT_LIB_DIR}/libTKService.so.7.9
|
||||||
|
${OCCT_LIB_DIR}/libTKV3d.so.7.9
|
||||||
|
${OCCT_LIB_DIR}/libTKXCAF.so.7.9
|
||||||
|
${OCCT_LIB_DIR}/libTKCAF.so.7.9
|
||||||
|
${OCCT_LIB_DIR}/libTKLCAF.so.7.9
|
||||||
|
${OCCT_LIB_DIR}/libTKCDF.so.7.9
|
||||||
|
${OCCT_LIB_DIR}/libTKFillet.so.7.9
|
||||||
|
${OCCT_LIB_DIR}/libTKDESTEP.so.7.9
|
||||||
|
${OCCT_LIB_DIR}/libTKShHealing.so.7.9
|
||||||
|
${OCCT_LIB_DIR}/libTKHLR.so.7.9
|
||||||
|
${OCCT_LIB_DIR}/libTKVCAF.so.7.9
|
||||||
|
${OCCT_LIB_DIR}/libTKBO.so.7.9
|
||||||
|
${OCCT_LIB_DIR}/libTKPrim.so.7.9
|
||||||
|
${OCCT_LIB_DIR}/libTKBool.so.7.9
|
||||||
|
${OCCT_LIB_DIR}/libTKDE.so.7.9
|
||||||
|
${OCCT_LIB_DIR}/libTKXSBase.so.7.9
|
||||||
|
${OCCT_LIB_DIR}/libfreetype.so.6
|
||||||
|
${OCCT_LIB_DIR}/libfontconfig.so.1
|
||||||
|
${OCCT_LIB_DIR}/libexpat.so.1
|
||||||
|
${OCCT_LIB_DIR}/libz.so.1
|
||||||
|
${OCCT_LIB_DIR}/libbz2.so.1.0
|
||||||
|
${OCCT_LIB_DIR}/libpng16.so.16
|
||||||
|
${OCCT_LIB_DIR}/libbrotlicommon.so.1
|
||||||
|
${OCCT_LIB_DIR}/libbrotlidec.so.1
|
||||||
|
${OCCT_LIB_DIR}/libbrotlienc.so.1
|
||||||
|
)
|
||||||
|
|
||||||
|
# 添加源文件
|
||||||
|
add_library(occtrender SHARED
|
||||||
|
napi_init.cpp
|
||||||
|
#Header
|
||||||
|
EGLCore/EGLCore.h
|
||||||
|
OCCTRender/OCCTRender.h
|
||||||
|
OCCTRenderThread/OCCTRenderThread.h
|
||||||
|
#Cpp Src
|
||||||
|
EGLCore/EGLCore.cpp
|
||||||
|
OCCTRender/OCCTRender.cpp
|
||||||
|
OCCTRenderThread/OCCTRenderThread.cpp
|
||||||
|
)
|
||||||
|
find_library(EGL-lib EGL)
|
||||||
|
find_library(GLES-lib GLESv3)
|
||||||
|
find_library(hilog-lib hilog_ndk.z)
|
||||||
|
find_library(libace-lib ace_ndk.z)
|
||||||
|
find_library(libuv-lib uv)
|
||||||
|
|
||||||
|
target_link_libraries(occtrender PUBLIC
|
||||||
|
#EGL Hilog库
|
||||||
|
${EGL-lib}
|
||||||
|
${GLES-lib}
|
||||||
|
${hilog-lib}
|
||||||
|
${libace-lib}
|
||||||
|
${libuv-lib}
|
||||||
|
libnative_window.so
|
||||||
|
libace_napi.z.so
|
||||||
|
)
|
||||||
|
target_link_libraries(occtrender PUBLIC ${OCCT_LIBS})
|
||||||
74
entry/src/main/cpp/EGLCore/EGLCore.cpp
Normal file
74
entry/src/main/cpp/EGLCore/EGLCore.cpp
Normal file
@ -0,0 +1,74 @@
|
|||||||
|
//
|
||||||
|
// Created on 2026/2/18.
|
||||||
|
//
|
||||||
|
// Node APIs are not fully supported. To solve the compilation error of the interface cannot be found,
|
||||||
|
// please include "napi/native_api.h".
|
||||||
|
#include "EGLCore.h"
|
||||||
|
#include <GLES3/gl3.h>
|
||||||
|
#include <iostream>
|
||||||
|
|
||||||
|
EGLCore::EGLCore() : m_display(EGL_NO_DISPLAY), m_context(EGL_NO_CONTEXT), m_surface(EGL_NO_SURFACE) {}
|
||||||
|
|
||||||
|
EGLCore::~EGLCore() {
|
||||||
|
release();
|
||||||
|
}
|
||||||
|
|
||||||
|
bool EGLCore::init(EGLNativeWindowType window) {
|
||||||
|
m_display = eglGetDisplay(EGL_DEFAULT_DISPLAY);
|
||||||
|
if (m_display == EGL_NO_DISPLAY) return false;
|
||||||
|
|
||||||
|
if (!eglInitialize(m_display, nullptr, nullptr)) return false;
|
||||||
|
|
||||||
|
const EGLint attribs[] = {
|
||||||
|
EGL_RENDERABLE_TYPE, EGL_OPENGL_ES3_BIT_KHR,
|
||||||
|
EGL_SURFACE_TYPE, EGL_WINDOW_BIT,
|
||||||
|
EGL_BLUE_SIZE, 8,
|
||||||
|
EGL_GREEN_SIZE, 8,
|
||||||
|
EGL_RED_SIZE, 8,
|
||||||
|
EGL_ALPHA_SIZE, 8,
|
||||||
|
EGL_DEPTH_SIZE, 16,
|
||||||
|
EGL_NONE
|
||||||
|
};
|
||||||
|
|
||||||
|
EGLConfig config;
|
||||||
|
EGLint numConfigs;
|
||||||
|
eglChooseConfig(m_display, attribs, &config, 1, &numConfigs);
|
||||||
|
|
||||||
|
const EGLint contextAttribs[] = {
|
||||||
|
EGL_CONTEXT_CLIENT_VERSION, 3,
|
||||||
|
EGL_NONE
|
||||||
|
};
|
||||||
|
m_context = eglCreateContext(m_display, config, EGL_NO_CONTEXT, contextAttribs);
|
||||||
|
if (m_context == EGL_NO_CONTEXT) return false;
|
||||||
|
|
||||||
|
m_surface = eglCreateWindowSurface(m_display, config, window, nullptr);
|
||||||
|
if (m_surface == EGL_NO_SURFACE) return false;
|
||||||
|
|
||||||
|
m_initialized = true;
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
void EGLCore::makeCurrent() {
|
||||||
|
if (m_initialized) {
|
||||||
|
eglMakeCurrent(m_display, m_surface, m_surface, m_context);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void EGLCore::swapBuffers() {
|
||||||
|
if (m_initialized) {
|
||||||
|
eglSwapBuffers(m_display, m_surface);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void EGLCore::release() {
|
||||||
|
if (m_display != EGL_NO_DISPLAY) {
|
||||||
|
eglMakeCurrent(m_display, EGL_NO_SURFACE, EGL_NO_SURFACE, EGL_NO_CONTEXT);
|
||||||
|
if (m_context != EGL_NO_CONTEXT) eglDestroyContext(m_display, m_context);
|
||||||
|
if (m_surface != EGL_NO_SURFACE) eglDestroySurface(m_display, m_surface);
|
||||||
|
eglTerminate(m_display);
|
||||||
|
}
|
||||||
|
m_display = EGL_NO_DISPLAY;
|
||||||
|
m_context = EGL_NO_CONTEXT;
|
||||||
|
m_surface = EGL_NO_SURFACE;
|
||||||
|
m_initialized = false;
|
||||||
|
}
|
||||||
29
entry/src/main/cpp/EGLCore/EGLCore.h
Normal file
29
entry/src/main/cpp/EGLCore/EGLCore.h
Normal file
@ -0,0 +1,29 @@
|
|||||||
|
//
|
||||||
|
// Created on 2026/2/18.
|
||||||
|
//
|
||||||
|
// Node APIs are not fully supported. To solve the compilation error of the interface cannot be found,
|
||||||
|
// please include "napi/native_api.h".
|
||||||
|
|
||||||
|
#ifndef EGLCORE_H
|
||||||
|
#define EGLCORE_H
|
||||||
|
#include <EGL/egl.h>
|
||||||
|
#include <EGL/eglext.h>
|
||||||
|
|
||||||
|
class EGLCore {
|
||||||
|
public:
|
||||||
|
EGLCore();
|
||||||
|
~EGLCore();
|
||||||
|
|
||||||
|
bool init(EGLNativeWindowType window);
|
||||||
|
void makeCurrent();
|
||||||
|
void swapBuffers();
|
||||||
|
void release();
|
||||||
|
|
||||||
|
private:
|
||||||
|
EGLDisplay m_display;
|
||||||
|
EGLContext m_context;
|
||||||
|
EGLSurface m_surface;
|
||||||
|
bool m_initialized = false;
|
||||||
|
};
|
||||||
|
|
||||||
|
#endif // EGLCORE_H
|
||||||
94
entry/src/main/cpp/OCCTRender/OCCTRender.cpp
Normal file
94
entry/src/main/cpp/OCCTRender/OCCTRender.cpp
Normal file
@ -0,0 +1,94 @@
|
|||||||
|
//
|
||||||
|
// Created on 2026/2/18.
|
||||||
|
//
|
||||||
|
// Node APIs are not fully supported. To solve the compilation error of the interface cannot be found,
|
||||||
|
// please include "napi/native_api.h".
|
||||||
|
#include "OCCTRender.h"
|
||||||
|
|
||||||
|
#include <GLES3/gl3.h> // ← 提供 glViewport, glClear 等
|
||||||
|
#include <EGL/egl.h>
|
||||||
|
|
||||||
|
// OCCT 基础
|
||||||
|
#include <TDocStd_Document.hxx>
|
||||||
|
#include <TDF_Label.hxx>
|
||||||
|
#include <TDF_LabelSequence.hxx>
|
||||||
|
|
||||||
|
// XCAF 应用框架
|
||||||
|
#include <XCAFApp_Application.hxx>
|
||||||
|
#include <XCAFDoc_DocumentTool.hxx> // ← 解决当前错误
|
||||||
|
#include <XCAFDoc_ShapeTool.hxx> // ← 配套使用
|
||||||
|
|
||||||
|
// STEP 导入
|
||||||
|
#include <STEPCAFControl_Reader.hxx>
|
||||||
|
#include <IFSelect_ReturnStatus.hxx>
|
||||||
|
|
||||||
|
// 可视化
|
||||||
|
#include <AIS_Shape.hxx>
|
||||||
|
#include <AIS_InteractiveContext.hxx>
|
||||||
|
#include <V3d_View.hxx>
|
||||||
|
|
||||||
|
OCCTRender::OCCTRender(int width, int height)
|
||||||
|
: m_width(width), m_height(height)
|
||||||
|
{
|
||||||
|
// 创建一个“虚拟”的 DisplayConnection(HarmonyOS 无 X11/Wayland)
|
||||||
|
Handle(Aspect_DisplayConnection) aDispConnection;
|
||||||
|
|
||||||
|
// 关键:设置 OpenGl_GraphicDriver 复用当前 OpenGL context
|
||||||
|
// 第二个参数 'theIsOwnsContext' 设为 false,表示不创建新 context
|
||||||
|
Handle(OpenGl_GraphicDriver) aDriver = new OpenGl_GraphicDriver(aDispConnection, false);
|
||||||
|
|
||||||
|
m_viewer = new V3d_Viewer(aDriver);
|
||||||
|
m_view = m_viewer->CreateView();
|
||||||
|
m_context = new AIS_InteractiveContext(m_viewer);
|
||||||
|
|
||||||
|
m_view->SetBackgroundColor(Quantity_NOC_BLACK);
|
||||||
|
m_view->Camera()->SetProjectionType(Graphic3d_Camera::Projection_Perspective);
|
||||||
|
m_view->SetImmediateUpdate(false); // 禁用自动 redraw/swap
|
||||||
|
}
|
||||||
|
OCCTRender::~OCCTRender() {
|
||||||
|
// OCCT 对象由 Handle 自动管理,通常无需手动 delete
|
||||||
|
}
|
||||||
|
void OCCTRender::render()
|
||||||
|
{
|
||||||
|
if (m_width <= 0 || m_height <= 0) return;
|
||||||
|
|
||||||
|
// 设置 OpenGL viewport(由 EGLCore 控制 surface,此处仅设置视口)
|
||||||
|
glViewport(0, 0, m_width, m_height);
|
||||||
|
|
||||||
|
// 更新相机宽高比
|
||||||
|
m_view->Camera()->SetAspect(static_cast<Standard_Real>(m_width) / m_height);
|
||||||
|
|
||||||
|
// 让 OCCT 渲染到当前 OpenGL context 的 default framebuffer
|
||||||
|
m_view->Redraw();
|
||||||
|
// 注意:不要调用 RedrawImmediate(),也不要 swap buffer(由 EGLCore 负责)
|
||||||
|
}
|
||||||
|
void OCCTRender::loadModel(const char* stepPath) {
|
||||||
|
m_context->RemoveAll(false);
|
||||||
|
|
||||||
|
auto app = XCAFApp_Application::GetApplication();
|
||||||
|
m_doc = new TDocStd_Document("XmlXCAF"); // ← 关键修改
|
||||||
|
app->NewDocument("XmlXCAF", m_doc); // ← 保持一致
|
||||||
|
|
||||||
|
STEPCAFControl_Reader reader;
|
||||||
|
IFSelect_ReturnStatus status = reader.ReadFile(stepPath);
|
||||||
|
if (status == IFSelect_RetDone) {
|
||||||
|
reader.Transfer(m_doc);
|
||||||
|
Handle(XCAFDoc_ShapeTool) shapeTool = XCAFDoc_DocumentTool::ShapeTool(m_doc->Main());
|
||||||
|
if (!shapeTool.IsNull()) {
|
||||||
|
TDF_LabelSequence labels;
|
||||||
|
shapeTool->GetFreeShapes(labels);
|
||||||
|
for (Standard_Integer i = 1; i <= labels.Length(); ++i) {
|
||||||
|
TopoDS_Shape shape;
|
||||||
|
if (shapeTool->GetShape(labels.Value(i), shape)) {
|
||||||
|
Handle(AIS_Shape) aisShape = new AIS_Shape(shape);
|
||||||
|
m_context->Display(aisShape, false);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
m_view->FitAll();
|
||||||
|
}
|
||||||
|
|
||||||
|
void OCCTRender::rotateCamera(float deltaX, float deltaY) {
|
||||||
|
m_view->Rotate(deltaX * 0.01f, deltaY * 0.01f, 0.0f, true); // 相对旋转
|
||||||
|
}
|
||||||
44
entry/src/main/cpp/OCCTRender/OCCTRender.h
Normal file
44
entry/src/main/cpp/OCCTRender/OCCTRender.h
Normal file
@ -0,0 +1,44 @@
|
|||||||
|
//
|
||||||
|
// Created on 2026/2/18.
|
||||||
|
//
|
||||||
|
// Node APIs are not fully supported. To solve the compilation error of the interface cannot be found,
|
||||||
|
// please include "napi/native_api.h".
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Copyright (c) 2026 Your Company. All rights reserved.
|
||||||
|
* Description: OCCT rendering logic encapsulation.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef OCCT_RENDER_H
|
||||||
|
#define OCCT_RENDER_H
|
||||||
|
|
||||||
|
#include <Graphic3d_GraphicDriver.hxx>
|
||||||
|
#include <V3d_View.hxx>
|
||||||
|
#include <V3d_Viewer.hxx>
|
||||||
|
#include <AIS_InteractiveContext.hxx>
|
||||||
|
#include <OpenGl_GraphicDriver.hxx>
|
||||||
|
#include <XCAFApp_Application.hxx>
|
||||||
|
#include <STEPCAFControl_Reader.hxx>
|
||||||
|
#include <TDocStd_Document.hxx>
|
||||||
|
#include <XCAFDoc_ShapeTool.hxx>
|
||||||
|
#include <AIS_Shape.hxx>
|
||||||
|
|
||||||
|
class OCCTRender {
|
||||||
|
public:
|
||||||
|
OCCTRender(int width, int height); // 保持接口不变
|
||||||
|
~OCCTRender();
|
||||||
|
void loadModel(const char* stepPath);
|
||||||
|
void render();
|
||||||
|
void updateSize(int width, int height);
|
||||||
|
void rotateCamera(float deltaX, float deltaY);
|
||||||
|
|
||||||
|
private:
|
||||||
|
Handle(V3d_Viewer) m_viewer;
|
||||||
|
Handle(V3d_View) m_view;
|
||||||
|
Handle(AIS_InteractiveContext) m_context;
|
||||||
|
Handle(TDocStd_Document) m_doc;
|
||||||
|
int m_width;
|
||||||
|
int m_height;
|
||||||
|
};
|
||||||
|
|
||||||
|
#endif // OCCT_RENDER_H
|
||||||
73
entry/src/main/cpp/OCCTRenderThread/OCCTRenderThread.cpp
Normal file
73
entry/src/main/cpp/OCCTRenderThread/OCCTRenderThread.cpp
Normal file
@ -0,0 +1,73 @@
|
|||||||
|
//
|
||||||
|
// Created on 2026/2/18.
|
||||||
|
//
|
||||||
|
// Node APIs are not fully supported. To solve the compilation error of the interface cannot be found,
|
||||||
|
// please include "napi/native_api.h".
|
||||||
|
|
||||||
|
#include "OCCTRenderThread.h"
|
||||||
|
#include <unistd.h> // for usleep
|
||||||
|
|
||||||
|
OCCTRenderThread::OCCTRenderThread(EGLNativeWindowType window, int width, int height)
|
||||||
|
: m_window(window), m_width(width), m_height(height) {}
|
||||||
|
|
||||||
|
OCCTRenderThread::~OCCTRenderThread() {
|
||||||
|
stop();
|
||||||
|
delete m_occtRender;
|
||||||
|
}
|
||||||
|
|
||||||
|
void OCCTRenderThread::start() {
|
||||||
|
m_running = true;
|
||||||
|
m_thread = std::thread(&OCCTRenderThread::renderLoop, this);
|
||||||
|
}
|
||||||
|
|
||||||
|
void OCCTRenderThread::stop() {
|
||||||
|
m_running = false;
|
||||||
|
if (m_thread.joinable()) {
|
||||||
|
m_thread.join();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void OCCTRenderThread::loadModel(const char* path) {
|
||||||
|
std::lock_guard<std::mutex> lock(m_mutex);
|
||||||
|
m_pendingModelPath = std::string(path);
|
||||||
|
m_hasPendingModel = true;
|
||||||
|
}
|
||||||
|
|
||||||
|
void OCCTRenderThread::onMouseEvent(float dx, float dy) {
|
||||||
|
m_deltaX += dx;
|
||||||
|
m_deltaY += dy;
|
||||||
|
m_hasMouseInput = true;
|
||||||
|
}
|
||||||
|
|
||||||
|
void OCCTRenderThread::renderLoop() {
|
||||||
|
if (!m_eglCore.init(m_window)) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
m_occtRender = new OCCTRender(m_width, m_height);
|
||||||
|
|
||||||
|
while (m_running) {
|
||||||
|
m_eglCore.makeCurrent();
|
||||||
|
|
||||||
|
// Handle model loading
|
||||||
|
if (m_hasPendingModel) {
|
||||||
|
std::lock_guard<std::mutex> lock(m_mutex);
|
||||||
|
m_occtRender->loadModel(m_pendingModelPath.c_str());
|
||||||
|
m_hasPendingModel = false;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Handle mouse rotation
|
||||||
|
if (m_hasMouseInput.exchange(false)) {
|
||||||
|
m_occtRender->rotateCamera(m_deltaX, m_deltaY);
|
||||||
|
m_deltaX = m_deltaY = 0.0f;
|
||||||
|
}
|
||||||
|
|
||||||
|
m_occtRender->render();
|
||||||
|
m_eglCore.swapBuffers();
|
||||||
|
|
||||||
|
usleep(16000); // ~60 FPS
|
||||||
|
}
|
||||||
|
|
||||||
|
delete m_occtRender;
|
||||||
|
m_occtRender = nullptr;
|
||||||
|
m_eglCore.release();
|
||||||
|
}
|
||||||
45
entry/src/main/cpp/OCCTRenderThread/OCCTRenderThread.h
Normal file
45
entry/src/main/cpp/OCCTRenderThread/OCCTRenderThread.h
Normal file
@ -0,0 +1,45 @@
|
|||||||
|
//
|
||||||
|
// Created on 2026/2/18.
|
||||||
|
//
|
||||||
|
// Node APIs are not fully supported. To solve the compilation error of the interface cannot be found,
|
||||||
|
// please include "napi/native_api.h".
|
||||||
|
|
||||||
|
#ifndef OCCT_RENDER_THREAD_H
|
||||||
|
#define OCCT_RENDER_THREAD_H
|
||||||
|
|
||||||
|
#include <thread>
|
||||||
|
#include <atomic>
|
||||||
|
#include <mutex>
|
||||||
|
#include "EGLCore/EGLCore.h"
|
||||||
|
#include "OCCTRender/OCCTRender.h"
|
||||||
|
|
||||||
|
class OCCTRenderThread {
|
||||||
|
public:
|
||||||
|
OCCTRenderThread(EGLNativeWindowType window, int width, int height);
|
||||||
|
~OCCTRenderThread();
|
||||||
|
|
||||||
|
void start();
|
||||||
|
void stop();
|
||||||
|
void loadModel(const char* path);
|
||||||
|
void onMouseEvent(float dx, float dy);
|
||||||
|
|
||||||
|
private:
|
||||||
|
void renderLoop();
|
||||||
|
|
||||||
|
std::thread m_thread;
|
||||||
|
std::atomic<bool> m_running{false};
|
||||||
|
EGLNativeWindowType m_window;
|
||||||
|
int m_width, m_height;
|
||||||
|
|
||||||
|
EGLCore m_eglCore;
|
||||||
|
OCCTRender* m_occtRender = nullptr;
|
||||||
|
|
||||||
|
std::mutex m_mutex;
|
||||||
|
std::string m_pendingModelPath;
|
||||||
|
std::atomic<bool> m_hasPendingModel{false};
|
||||||
|
|
||||||
|
float m_deltaX = 0.0f, m_deltaY = 0.0f;
|
||||||
|
std::atomic<bool> m_hasMouseInput{false};
|
||||||
|
};
|
||||||
|
|
||||||
|
#endif //OCCT_RENDER_THREAD_H
|
||||||
12
entry/src/main/cpp/OCCT方案.txt
Normal file
12
entry/src/main/cpp/OCCT方案.txt
Normal file
@ -0,0 +1,12 @@
|
|||||||
|
按照下面要求生成实现代码:
|
||||||
|
1-HarmonyOS API 版本:22
|
||||||
|
2-OpenGL ES 版本:3.0
|
||||||
|
3-OCCT 版本:7.9.3
|
||||||
|
4-分别用类名字为EGLCore OCCTRenderThread OCCTRender实现
|
||||||
|
5-实现主线程和渲染线程分离.渲染线程循环渲染
|
||||||
|
6-实现通过loadmodel加载step文件进行渲染step模型
|
||||||
|
7-实现鼠标旋转相机观察渲染的模型.
|
||||||
|
8-Arkui通过XComponent的Native进行调用实现.
|
||||||
|
9-不得使用android的实现代码.使用鸿蒙原生API实现
|
||||||
|
10-在napi_init.cpp文件中写出给arkui调用的函数.包括回调函数
|
||||||
|
11-在Index.d.ts文件中写出暴露给arkui调用的代码
|
||||||
84
entry/src/main/cpp/include/opencascade/AIS.hxx
Normal file
84
entry/src/main/cpp/include/opencascade/AIS.hxx
Normal file
@ -0,0 +1,84 @@
|
|||||||
|
// Created on: 1996-12-11
|
||||||
|
// Created by: Robert COUBLANC
|
||||||
|
// Copyright (c) 1996-1999 Matra Datavision
|
||||||
|
// Copyright (c) 1999-2014 OPEN CASCADE SAS
|
||||||
|
//
|
||||||
|
// This file is part of Open CASCADE Technology software library.
|
||||||
|
//
|
||||||
|
// This library is free software; you can redistribute it and/or modify it under
|
||||||
|
// the terms of the GNU Lesser General Public License version 2.1 as published
|
||||||
|
// by the Free Software Foundation, with special exception defined in the file
|
||||||
|
// OCCT_LGPL_EXCEPTION.txt. Consult the file LICENSE_LGPL_21.txt included in OCCT
|
||||||
|
// distribution for complete text of the license and disclaimer of any warranty.
|
||||||
|
//
|
||||||
|
// Alternatively, this file may be used under the terms of Open CASCADE
|
||||||
|
// commercial license or contractual agreement.
|
||||||
|
|
||||||
|
#ifndef _AIS_HeaderFile
|
||||||
|
#define _AIS_HeaderFile
|
||||||
|
|
||||||
|
#include "Prs3d_Presentation.hxx"
|
||||||
|
#include "Standard.hxx"
|
||||||
|
#include "Standard_DefineAlloc.hxx"
|
||||||
|
|
||||||
|
//! Application Interactive Services provide the means to create links between an application GUI
|
||||||
|
//! viewer and the packages which are used to manage selection and presentation. The tools AIS
|
||||||
|
//! defined in order to do this include different sorts of entities: both the selectable viewable
|
||||||
|
//! objects themselves and the context and attribute managers to define their selection and display.
|
||||||
|
//! To orient the user as he works in a modeling environment, views and selections must be
|
||||||
|
//! comprehensible. There must be several different sorts of selectable and viewable object defined.
|
||||||
|
//! These must also be interactive, that is, connecting graphic representation and the underlying
|
||||||
|
//! reference geometry. These entities are called Interactive Objects, and are divided into four
|
||||||
|
//! types:
|
||||||
|
//! - the Datum
|
||||||
|
//! - the Relation
|
||||||
|
//! - the Object
|
||||||
|
//! - None.
|
||||||
|
//! The Datum groups together the construction elements such as lines, circles, points, trihedra,
|
||||||
|
//! plane trihedra, planes and axes. The Relation is made up of constraints on one or more
|
||||||
|
//! interactive shapes and the corresponding reference geometry. For example, you might want to
|
||||||
|
//! constrain two edges in a parallel relation. This constraint is considered as an object in its
|
||||||
|
//! own right, and is shown as a sensitive primitive. This takes the graphic form of a perpendicular
|
||||||
|
//! arrow marked with the || symbol and lying between the two edges. The Object type includes
|
||||||
|
//! topological shapes, and connections between shapes. None, in order not to eliminate the object,
|
||||||
|
//! tells the application to look further until it finds an object definition in its generation
|
||||||
|
//! which is accepted. Inside these categories, you have the possibility of an additional
|
||||||
|
//! characterization by means of a signature. The signature provides an index to the further
|
||||||
|
//! characterization. By default, the Interactive Object has a None type and a signature of 0
|
||||||
|
//! (equivalent to None.) If you want to give a particular type and signature to your interactive
|
||||||
|
//! object, you must redefine the two virtual methods: Type and Signature. In the C++ inheritance
|
||||||
|
//! structure of the package, each class representing a specific Interactive Object inherits
|
||||||
|
//! AIS_InteractiveObject. Among these inheriting classes, AIS_Relation functions as the abstract
|
||||||
|
//! mother class for tinheriting classes defining display of specific relational constraints and
|
||||||
|
//! types of dimension. Some of these include:
|
||||||
|
//! - display of constraints based on relations of symmetry, tangency, parallelism and
|
||||||
|
//! concentricity
|
||||||
|
//! - display of dimensions for angles, offsets, diameters, radii and chamfers.
|
||||||
|
//! No viewer can show everything at once with any coherence or clarity.
|
||||||
|
//! Views must be managed carefully both sequentially and at any given instant.
|
||||||
|
//! Another function of the view is that of a context to carry out design in.
|
||||||
|
//! The design changes are applied to the objects in the view and then extended to the underlying
|
||||||
|
//! reference geometry by a solver. To make sense of this complicated visual data, several display
|
||||||
|
//! and selection tools are required. To facilitate management, each object and each construction
|
||||||
|
//! element has a selection priority. There are also means to modify the default priority. To define
|
||||||
|
//! an environment of dynamic detection, you can use standard filter classes or create your own. A
|
||||||
|
//! filter questions the owner of the sensitive primitive to determine if it has the desired
|
||||||
|
//! qualities. If it answers positively, it is kept. If not, it is rejected. The standard filters
|
||||||
|
//! supplied in AIS include:
|
||||||
|
//! - AIS_AttributeFilter
|
||||||
|
//! - AIS_SignatureFilter
|
||||||
|
//! - AIS_TypeFilter.
|
||||||
|
//! A set of functions allows you to choose the interactive objects which you want to act on, the
|
||||||
|
//! selection modes which you want to activate. An interactive object can have a certain number of
|
||||||
|
//! graphic attributes which are specific to it, such as visualization mode, color, and material. By
|
||||||
|
//! the same token, the interactive context has a set of graphic attributes, the Drawer which is
|
||||||
|
//! valid by default for the objects it controls. When an interactive object is visualized, the
|
||||||
|
//! required graphic attributes are first taken from the object's own Drawer if one exists, or from
|
||||||
|
//! the context drawer for the others.
|
||||||
|
class AIS
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
DEFINE_STANDARD_ALLOC
|
||||||
|
};
|
||||||
|
|
||||||
|
#endif // _AIS_HeaderFile
|
||||||
@ -0,0 +1,22 @@
|
|||||||
|
// Copyright (c) 2020 OPEN CASCADE SAS
|
||||||
|
//
|
||||||
|
// This file is part of Open CASCADE Technology software library.
|
||||||
|
//
|
||||||
|
// This library is free software; you can redistribute it and/or modify it under
|
||||||
|
// the terms of the GNU Lesser General Public License version 2.1 as published
|
||||||
|
// by the Free Software Foundation, with special exception defined in the file
|
||||||
|
// OCCT_LGPL_EXCEPTION.txt. Consult the file LICENSE_LGPL_21.txt included in OCCT
|
||||||
|
// distribution for complete text of the license and disclaimer of any warranty.
|
||||||
|
//
|
||||||
|
// Alternatively, this file may be used under the terms of Open CASCADE
|
||||||
|
// commercial license or contractual agreement.
|
||||||
|
|
||||||
|
#ifndef _AIS_AngleDimension_HeaderFile
|
||||||
|
#define _AIS_AngleDimension_HeaderFile
|
||||||
|
|
||||||
|
#include "PrsDim_AngleDimension.hxx"
|
||||||
|
|
||||||
|
Standard_DEPRECATED("Deprecated alias to moved class")
|
||||||
|
typedef PrsDim_AngleDimension AIS_AngleDimension;
|
||||||
|
|
||||||
|
#endif // _AIS_AngleDimension_HeaderFile
|
||||||
219
entry/src/main/cpp/include/opencascade/AIS_Animation.hxx
Normal file
219
entry/src/main/cpp/include/opencascade/AIS_Animation.hxx
Normal file
@ -0,0 +1,219 @@
|
|||||||
|
// Created by: Anastasia BORISOVA
|
||||||
|
// Copyright (c) 2016 OPEN CASCADE SAS
|
||||||
|
//
|
||||||
|
// This file is part of Open CASCADE Technology software library.
|
||||||
|
//
|
||||||
|
// This library is free software; you can redistribute it and/or modify it under
|
||||||
|
// the terms of the GNU Lesser General Public License version 2.1 as published
|
||||||
|
// by the Free Software Foundation, with special exception defined in the file
|
||||||
|
// OCCT_LGPL_EXCEPTION.txt. Consult the file LICENSE_LGPL_21.txt included in OCCT
|
||||||
|
// distribution for complete text of the license and disclaimer of any warranty.
|
||||||
|
//
|
||||||
|
// Alternatively, this file may be used under the terms of Open CASCADE
|
||||||
|
// commercial license or contractual agreement.
|
||||||
|
|
||||||
|
#ifndef _AIS_Animation_HeaderFile
|
||||||
|
#define _AIS_Animation_HeaderFile
|
||||||
|
|
||||||
|
#include "AIS_AnimationTimer.hxx"
|
||||||
|
#include "NCollection_Sequence.hxx"
|
||||||
|
#include "TCollection_AsciiString.hxx"
|
||||||
|
|
||||||
|
//! Structure defining current animation progress.
|
||||||
|
struct AIS_AnimationProgress
|
||||||
|
{
|
||||||
|
Standard_Real Pts; //!< global presentation timestamp
|
||||||
|
Standard_Real LocalPts; //!< presentation within current animation
|
||||||
|
// clang-format off
|
||||||
|
Standard_Real LocalNormalized; //!< normalized position within current animation within 0..1 range
|
||||||
|
// clang-format on
|
||||||
|
|
||||||
|
AIS_AnimationProgress()
|
||||||
|
: Pts(-1.0),
|
||||||
|
LocalPts(-1.0),
|
||||||
|
LocalNormalized(-1.0)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
DEFINE_STANDARD_HANDLE(AIS_Animation, Standard_Transient)
|
||||||
|
|
||||||
|
//! Class represents a basic animation class.
|
||||||
|
//! AIS_Animation can be used as:
|
||||||
|
//!
|
||||||
|
//! - Animation Implementor
|
||||||
|
//! Sub-classes should override method AIS_Animation::update() to perform specific animation.
|
||||||
|
//! AIS package provides limited number of such animation atoms - classes AIS_AnimationObject and
|
||||||
|
//! AIS_AnimationCamera, which could be enough for defining a simple animation. In general case,
|
||||||
|
//! application is expected defining own AIS_Animation sub-classes implementing
|
||||||
|
//! application-specific animation logic (e.g. another interpolation or another kind of
|
||||||
|
//! transformations - like color transition and others). The basic conception of
|
||||||
|
//! AIS_Animation::update() is defining an exact scene state for the current presentation
|
||||||
|
//! timestamp, providing a smooth and continuous animation well defined at any time step and in
|
||||||
|
//! any direction. So that a time difference between two sequential drawn Viewer frames can vary
|
||||||
|
//! from frame to frame without visual artifacts, increasing rendering framerate would not lead to
|
||||||
|
//! animation being executed too fast and low framerate (on slow hardware) would not lead to
|
||||||
|
//! animation played longer than defined duration. Hence, implementation should avoid usage of
|
||||||
|
//! incremental step logic or should apply it very carefully.
|
||||||
|
//!
|
||||||
|
//! - Animation Container
|
||||||
|
//! AIS_Animation (no sub-classing) can be used to aggregate a sequence of Animation items
|
||||||
|
//! (children). Each children should be defined with its own duration and start time (presentation
|
||||||
|
//! timestamp). It is possible defining collection of nested AIS_Animation items, so that within
|
||||||
|
//! each container level children define start playback time relative to its holder.
|
||||||
|
//!
|
||||||
|
//! - Animation playback Controller
|
||||||
|
//! It is suggested that application would define a single AIS_Animation instance (optional
|
||||||
|
//! sub-classing) for controlling animation playback as whole. Such controller should be filled in
|
||||||
|
//! by other AIS_Animation as children objects, and will be managed by application by calling
|
||||||
|
//! StartTimer(), UpdateTimer() and IsStopped() methods.
|
||||||
|
//!
|
||||||
|
//! Note, that AIS_Animation::StartTimer() defines a timer calculating an elapsed time, not a
|
||||||
|
//! multimedia timer executing Viewer updates at specific intervals! Application should avoid using
|
||||||
|
//! implicit and immediate Viewer updates to ensure that AIS_Animation::UpdateTimer() is called
|
||||||
|
//! before each redrawing of a Viewer content. Redrawing logic should be also managed at application
|
||||||
|
//! level for managing a smooth animation (by defining a multimedia timer provided by used GUI
|
||||||
|
//! framework executing updates at desired framerate, or as continuous redraws in loop).
|
||||||
|
class AIS_Animation : public Standard_Transient
|
||||||
|
{
|
||||||
|
DEFINE_STANDARD_RTTIEXT(AIS_Animation, Standard_Transient)
|
||||||
|
public:
|
||||||
|
//! Creates empty animation.
|
||||||
|
Standard_EXPORT AIS_Animation(const TCollection_AsciiString& theAnimationName);
|
||||||
|
|
||||||
|
//! Destruct object, clear arguments
|
||||||
|
Standard_EXPORT virtual ~AIS_Animation();
|
||||||
|
|
||||||
|
//! Animation name.
|
||||||
|
const TCollection_AsciiString& Name() const { return myName; }
|
||||||
|
|
||||||
|
public:
|
||||||
|
//! @return start time of the animation in the timeline
|
||||||
|
Standard_Real StartPts() const { return myPtsStart; }
|
||||||
|
|
||||||
|
//! Sets time limits for animation in the animation timeline
|
||||||
|
void SetStartPts(const Standard_Real thePtsStart) { myPtsStart = thePtsStart; }
|
||||||
|
|
||||||
|
//! @return duration of the animation in the timeline
|
||||||
|
Standard_Real Duration() const { return Max(myOwnDuration, myChildrenDuration); }
|
||||||
|
|
||||||
|
//! Update total duration considering all animations on timeline.
|
||||||
|
Standard_EXPORT void UpdateTotalDuration();
|
||||||
|
|
||||||
|
//! Return true if duration is defined.
|
||||||
|
Standard_Boolean HasOwnDuration() const { return myOwnDuration > 0.0; }
|
||||||
|
|
||||||
|
//! @return own duration of the animation in the timeline
|
||||||
|
Standard_Real OwnDuration() const { return myOwnDuration; }
|
||||||
|
|
||||||
|
//! Defines duration of the animation.
|
||||||
|
void SetOwnDuration(const Standard_Real theDuration) { myOwnDuration = theDuration; }
|
||||||
|
|
||||||
|
//! Add single animation to the timeline.
|
||||||
|
//! @param theAnimation input animation
|
||||||
|
Standard_EXPORT void Add(const Handle(AIS_Animation)& theAnimation);
|
||||||
|
|
||||||
|
//! Clear animation timeline - remove all animations from it.
|
||||||
|
Standard_EXPORT void Clear();
|
||||||
|
|
||||||
|
//! Return the child animation with the given name.
|
||||||
|
Standard_EXPORT Handle(AIS_Animation) Find(const TCollection_AsciiString& theAnimationName) const;
|
||||||
|
|
||||||
|
//! Remove the child animation.
|
||||||
|
Standard_EXPORT Standard_Boolean Remove(const Handle(AIS_Animation)& theAnimation);
|
||||||
|
|
||||||
|
//! Replace the child animation.
|
||||||
|
Standard_EXPORT Standard_Boolean Replace(const Handle(AIS_Animation)& theAnimationOld,
|
||||||
|
const Handle(AIS_Animation)& theAnimationNew);
|
||||||
|
|
||||||
|
//! Clears own children and then copy child animations from another object.
|
||||||
|
//! Copy also Start Time and Duration values.
|
||||||
|
Standard_EXPORT void CopyFrom(const Handle(AIS_Animation)& theOther);
|
||||||
|
|
||||||
|
//! Return sequence of child animations.
|
||||||
|
const NCollection_Sequence<Handle(AIS_Animation)>& Children() const { return myAnimations; }
|
||||||
|
|
||||||
|
public:
|
||||||
|
//! Start animation with internally defined timer instance.
|
||||||
|
//! Calls ::Start() internally.
|
||||||
|
//!
|
||||||
|
//! Note, that this method initializes a timer calculating an elapsed time (presentation
|
||||||
|
//! timestamps within AIS_Animation::UpdateTimer()), not a multimedia timer executing Viewer
|
||||||
|
//! updates at specific intervals! Viewer redrawing should be managed at application level, so
|
||||||
|
//! that AIS_Animation::UpdateTimer() is called once right before each redrawing of a Viewer
|
||||||
|
//! content.
|
||||||
|
//!
|
||||||
|
//! @param theStartPts starting timer position (presentation timestamp)
|
||||||
|
//! @param thePlaySpeed playback speed (1.0 means normal speed)
|
||||||
|
//! @param theToUpdate flag to update defined animations to specified start position
|
||||||
|
//! @param theToStopTimer flag to pause timer at the starting position
|
||||||
|
Standard_EXPORT virtual void StartTimer(const Standard_Real theStartPts,
|
||||||
|
const Standard_Real thePlaySpeed,
|
||||||
|
const Standard_Boolean theToUpdate,
|
||||||
|
const Standard_Boolean theToStopTimer = Standard_False);
|
||||||
|
|
||||||
|
//! Update single frame of animation, update timer state
|
||||||
|
//! @return current time of timeline progress.
|
||||||
|
Standard_EXPORT virtual Standard_Real UpdateTimer();
|
||||||
|
|
||||||
|
//! Return elapsed time.
|
||||||
|
Standard_Real ElapsedTime() const { return !myTimer.IsNull() ? myTimer->ElapsedTime() : 0.0; }
|
||||||
|
|
||||||
|
//! Return playback timer.
|
||||||
|
const Handle(Media_Timer)& Timer() const { return myTimer; }
|
||||||
|
|
||||||
|
//! Set playback timer.
|
||||||
|
void SetTimer(const Handle(Media_Timer)& theTimer) { myTimer = theTimer; }
|
||||||
|
|
||||||
|
public:
|
||||||
|
//! Start animation. This method changes status of the animation to Started.
|
||||||
|
//! This status defines whether animation is to be performed in the timeline or not.
|
||||||
|
//! @param theToUpdate call Update() method
|
||||||
|
Standard_EXPORT virtual void Start(const Standard_Boolean theToUpdate);
|
||||||
|
|
||||||
|
//! Pause the process timeline.
|
||||||
|
Standard_EXPORT virtual void Pause();
|
||||||
|
|
||||||
|
//! Stop animation. This method changed status of the animation to Stopped.
|
||||||
|
//! This status shows that animation will not be performed in the timeline or it is finished.
|
||||||
|
Standard_EXPORT virtual void Stop();
|
||||||
|
|
||||||
|
//! Check if animation is to be performed in the animation timeline.
|
||||||
|
//! @return True if it is stopped of finished.
|
||||||
|
bool IsStopped() { return myState != AnimationState_Started; }
|
||||||
|
|
||||||
|
//! Update single frame of animation, update timer state
|
||||||
|
//! @param[in] thePts the time moment within [0; Duration()]
|
||||||
|
//! @return True if timeline is in progress
|
||||||
|
Standard_EXPORT virtual Standard_Boolean Update(const Standard_Real thePts);
|
||||||
|
|
||||||
|
protected:
|
||||||
|
//! Process one step of the animation according to the input time progress, including all
|
||||||
|
//! children. Calls also ::update() to update own animation.
|
||||||
|
Standard_EXPORT virtual void updateWithChildren(const AIS_AnimationProgress& thePosition);
|
||||||
|
|
||||||
|
//! Update the own animation to specified position - should be overridden by sub-class.
|
||||||
|
virtual void update(const AIS_AnimationProgress& theProgress) { (void)theProgress; }
|
||||||
|
|
||||||
|
protected:
|
||||||
|
//! Defines animation state.
|
||||||
|
enum AnimationState
|
||||||
|
{
|
||||||
|
AnimationState_Started, //!< animation is in progress
|
||||||
|
AnimationState_Stopped, //!< animation is finished, force stopped or not started
|
||||||
|
AnimationState_Paused //!< animation is paused and can be started from the pause moment
|
||||||
|
};
|
||||||
|
|
||||||
|
protected:
|
||||||
|
Handle(Media_Timer) myTimer;
|
||||||
|
|
||||||
|
TCollection_AsciiString myName; //!< animation name
|
||||||
|
NCollection_Sequence<Handle(AIS_Animation)> myAnimations; //!< sequence of child animations
|
||||||
|
|
||||||
|
AnimationState myState; //!< animation state - started, stopped of paused
|
||||||
|
Standard_Real myPtsStart; //!< time of start in the timeline
|
||||||
|
Standard_Real myOwnDuration; //!< duration of animation excluding children
|
||||||
|
Standard_Real myChildrenDuration; //!< duration of animation including children
|
||||||
|
};
|
||||||
|
|
||||||
|
#endif // _AIS_Animation_HeaderFile
|
||||||
@ -0,0 +1,49 @@
|
|||||||
|
// Copyright (c) 2023 OPEN CASCADE SAS
|
||||||
|
//
|
||||||
|
// This file is part of Open CASCADE Technology software library.
|
||||||
|
//
|
||||||
|
// This library is free software; you can redistribute it and/or modify it under
|
||||||
|
// the terms of the GNU Lesser General Public License version 2.1 as published
|
||||||
|
// by the Free Software Foundation, with special exception defined in the file
|
||||||
|
// OCCT_LGPL_EXCEPTION.txt. Consult the file LICENSE_LGPL_21.txt included in OCCT
|
||||||
|
// distribution for complete text of the license and disclaimer of any warranty.
|
||||||
|
//
|
||||||
|
// Alternatively, this file may be used under the terms of Open CASCADE
|
||||||
|
// commercial license or contractual agreement.
|
||||||
|
|
||||||
|
#ifndef _AIS_AnimationAxisRotation_HeaderFile
|
||||||
|
#define _AIS_AnimationAxisRotation_HeaderFile
|
||||||
|
|
||||||
|
#include "AIS_BaseAnimationObject.hxx"
|
||||||
|
#include "gp_TrsfNLerp.hxx"
|
||||||
|
|
||||||
|
//! Animation defining object transformation.
|
||||||
|
class AIS_AnimationAxisRotation : public AIS_BaseAnimationObject
|
||||||
|
{
|
||||||
|
DEFINE_STANDARD_RTTIEXT(AIS_AnimationAxisRotation, AIS_BaseAnimationObject)
|
||||||
|
public:
|
||||||
|
//! Constructor with initialization.
|
||||||
|
//! @param[in] theAnimationName animation identifier
|
||||||
|
//! @param[in] theContext interactive context where object have been displayed
|
||||||
|
//! @param[in] theObject object to apply rotation
|
||||||
|
//! @param[in] theAxis rotation axis
|
||||||
|
//! @param[in] theAngleStart rotation angle at the start of animation
|
||||||
|
//! @param[in] theAngleEnd rotation angle at the end of animation
|
||||||
|
Standard_EXPORT AIS_AnimationAxisRotation(const TCollection_AsciiString& theAnimationName,
|
||||||
|
const Handle(AIS_InteractiveContext)& theContext,
|
||||||
|
const Handle(AIS_InteractiveObject)& theObject,
|
||||||
|
const gp_Ax1& theAxis,
|
||||||
|
const Standard_Real theAngleStart,
|
||||||
|
const Standard_Real theAngleEnd);
|
||||||
|
|
||||||
|
protected:
|
||||||
|
//! Update the progress.
|
||||||
|
Standard_EXPORT virtual void update(const AIS_AnimationProgress& theProgress) Standard_OVERRIDE;
|
||||||
|
|
||||||
|
private:
|
||||||
|
gp_Ax1 myRotAxis; //!< rotation axis
|
||||||
|
Standard_Real myAngleStart; //!< start angle for rotation
|
||||||
|
Standard_Real myAngleEnd; //!< end angle for rotation
|
||||||
|
};
|
||||||
|
|
||||||
|
#endif // _AIS_AnimationAxisRotation_HeaderFile
|
||||||
@ -0,0 +1,65 @@
|
|||||||
|
// Created by: Anastasia BORISOVA
|
||||||
|
// Copyright (c) 2016 OPEN CASCADE SAS
|
||||||
|
//
|
||||||
|
// This file is part of Open CASCADE Technology software library.
|
||||||
|
//
|
||||||
|
// This library is free software; you can redistribute it and/or modify it under
|
||||||
|
// the terms of the GNU Lesser General Public License version 2.1 as published
|
||||||
|
// by the Free Software Foundation, with special exception defined in the file
|
||||||
|
// OCCT_LGPL_EXCEPTION.txt. Consult the file LICENSE_LGPL_21.txt included in OCCT
|
||||||
|
// distribution for complete text of the license and disclaimer of any warranty.
|
||||||
|
//
|
||||||
|
// Alternatively, this file may be used under the terms of Open CASCADE
|
||||||
|
// commercial license or contractual agreement.
|
||||||
|
|
||||||
|
#ifndef _AIS_AnimationCamera_HeaderFile
|
||||||
|
#define _AIS_AnimationCamera_HeaderFile
|
||||||
|
|
||||||
|
#include "AIS_Animation.hxx"
|
||||||
|
|
||||||
|
class Graphic3d_Camera;
|
||||||
|
class V3d_View;
|
||||||
|
|
||||||
|
//! Camera animation.
|
||||||
|
class AIS_AnimationCamera : public AIS_Animation
|
||||||
|
{
|
||||||
|
DEFINE_STANDARD_RTTIEXT(AIS_AnimationCamera, AIS_Animation)
|
||||||
|
public:
|
||||||
|
//! Main constructor.
|
||||||
|
Standard_EXPORT AIS_AnimationCamera(const TCollection_AsciiString& theAnimationName,
|
||||||
|
const Handle(V3d_View)& theView);
|
||||||
|
|
||||||
|
//! Return the target view.
|
||||||
|
const Handle(V3d_View)& View() const { return myView; }
|
||||||
|
|
||||||
|
//! Set target view.
|
||||||
|
void SetView(const Handle(V3d_View)& theView) { myView = theView; }
|
||||||
|
|
||||||
|
//! Return camera start position.
|
||||||
|
const Handle(Graphic3d_Camera)& CameraStart() const { return myCamStart; }
|
||||||
|
|
||||||
|
//! Define camera start position.
|
||||||
|
void SetCameraStart(const Handle(Graphic3d_Camera)& theCameraStart)
|
||||||
|
{
|
||||||
|
myCamStart = theCameraStart;
|
||||||
|
}
|
||||||
|
|
||||||
|
//! Return camera end position.
|
||||||
|
const Handle(Graphic3d_Camera)& CameraEnd() const { return myCamEnd; }
|
||||||
|
|
||||||
|
//! Define camera end position.
|
||||||
|
void SetCameraEnd(const Handle(Graphic3d_Camera)& theCameraEnd) { myCamEnd = theCameraEnd; }
|
||||||
|
|
||||||
|
protected:
|
||||||
|
//! Update the progress.
|
||||||
|
Standard_EXPORT virtual void update(const AIS_AnimationProgress& theProgress) Standard_OVERRIDE;
|
||||||
|
|
||||||
|
protected:
|
||||||
|
Handle(V3d_View) myView; //!< view to setup camera
|
||||||
|
Handle(Graphic3d_Camera) myCamStart; //!< starting camera position
|
||||||
|
Handle(Graphic3d_Camera) myCamEnd; //!< end camera position
|
||||||
|
};
|
||||||
|
|
||||||
|
DEFINE_STANDARD_HANDLE(AIS_AnimationCamera, AIS_Animation)
|
||||||
|
|
||||||
|
#endif // _AIS_AnimationCamera_HeaderFile
|
||||||
@ -0,0 +1,49 @@
|
|||||||
|
// Created by: Anastasia BORISOVA
|
||||||
|
// Copyright (c) 2016 OPEN CASCADE SAS
|
||||||
|
//
|
||||||
|
// This file is part of Open CASCADE Technology software library.
|
||||||
|
//
|
||||||
|
// This library is free software; you can redistribute it and/or modify it under
|
||||||
|
// the terms of the GNU Lesser General Public License version 2.1 as published
|
||||||
|
// by the Free Software Foundation, with special exception defined in the file
|
||||||
|
// OCCT_LGPL_EXCEPTION.txt. Consult the file LICENSE_LGPL_21.txt included in OCCT
|
||||||
|
// distribution for complete text of the license and disclaimer of any warranty.
|
||||||
|
//
|
||||||
|
// Alternatively, this file may be used under the terms of Open CASCADE
|
||||||
|
// commercial license or contractual agreement.
|
||||||
|
|
||||||
|
#ifndef _AIS_AnimationObject_HeaderFile
|
||||||
|
#define _AIS_AnimationObject_HeaderFile
|
||||||
|
|
||||||
|
#include "AIS_BaseAnimationObject.hxx"
|
||||||
|
#include "gp_TrsfNLerp.hxx"
|
||||||
|
|
||||||
|
//! Animation defining object transformation.
|
||||||
|
class AIS_AnimationObject : public AIS_BaseAnimationObject
|
||||||
|
{
|
||||||
|
DEFINE_STANDARD_RTTIEXT(AIS_AnimationObject, AIS_BaseAnimationObject)
|
||||||
|
public:
|
||||||
|
//! Constructor with initialization.
|
||||||
|
//! Note that start/end transformations specify exactly local transformation of the object,
|
||||||
|
//! not the transformation to be applied to existing local transformation.
|
||||||
|
//! @param[in] theAnimationName animation identifier
|
||||||
|
//! @param[in] theContext interactive context where object have been displayed
|
||||||
|
//! @param[in] theObject object to apply local transformation
|
||||||
|
//! @param[in] theTrsfStart local transformation at the start of animation (e.g.
|
||||||
|
//! theObject->LocalTransformation())
|
||||||
|
//! @param[in] theTrsfEnd local transformation at the end of animation
|
||||||
|
Standard_EXPORT AIS_AnimationObject(const TCollection_AsciiString& theAnimationName,
|
||||||
|
const Handle(AIS_InteractiveContext)& theContext,
|
||||||
|
const Handle(AIS_InteractiveObject)& theObject,
|
||||||
|
const gp_Trsf& theTrsfStart,
|
||||||
|
const gp_Trsf& theTrsfEnd);
|
||||||
|
|
||||||
|
protected:
|
||||||
|
//! Update the progress.
|
||||||
|
Standard_EXPORT virtual void update(const AIS_AnimationProgress& theProgress) Standard_OVERRIDE;
|
||||||
|
|
||||||
|
private:
|
||||||
|
gp_TrsfNLerp myTrsfLerp; //!< interpolation tool
|
||||||
|
};
|
||||||
|
|
||||||
|
#endif // _AIS_AnimationObject_HeaderFile
|
||||||
@ -0,0 +1,21 @@
|
|||||||
|
// Created by: Kirill Gavrilov
|
||||||
|
// Copyright (c) 2016 OPEN CASCADE SAS
|
||||||
|
//
|
||||||
|
// This file is part of Open CASCADE Technology software library.
|
||||||
|
//
|
||||||
|
// This library is free software; you can redistribute it and/or modify it under
|
||||||
|
// the terms of the GNU Lesser General Public License version 2.1 as published
|
||||||
|
// by the Free Software Foundation, with special exception defined in the file
|
||||||
|
// OCCT_LGPL_EXCEPTION.txt. Consult the file LICENSE_LGPL_21.txt included in OCCT
|
||||||
|
// distribution for complete text of the license and disclaimer of any warranty.
|
||||||
|
//
|
||||||
|
// Alternatively, this file may be used under the terms of Open CASCADE
|
||||||
|
// commercial license or contractual agreement.
|
||||||
|
|
||||||
|
#ifndef _AIS_AnimationTimer_HeaderFile
|
||||||
|
#define _AIS_AnimationTimer_HeaderFile
|
||||||
|
|
||||||
|
#include "Media_Timer.hxx"
|
||||||
|
typedef Media_Timer AIS_AnimationTimer;
|
||||||
|
|
||||||
|
#endif // _AIS_AnimationTimer_HeaderFile
|
||||||
106
entry/src/main/cpp/include/opencascade/AIS_AttributeFilter.hxx
Normal file
106
entry/src/main/cpp/include/opencascade/AIS_AttributeFilter.hxx
Normal file
@ -0,0 +1,106 @@
|
|||||||
|
// Created on: 1997-03-04
|
||||||
|
// Created by: Robert COUBLANC
|
||||||
|
// Copyright (c) 1997-1999 Matra Datavision
|
||||||
|
// Copyright (c) 1999-2014 OPEN CASCADE SAS
|
||||||
|
//
|
||||||
|
// This file is part of Open CASCADE Technology software library.
|
||||||
|
//
|
||||||
|
// This library is free software; you can redistribute it and/or modify it under
|
||||||
|
// the terms of the GNU Lesser General Public License version 2.1 as published
|
||||||
|
// by the Free Software Foundation, with special exception defined in the file
|
||||||
|
// OCCT_LGPL_EXCEPTION.txt. Consult the file LICENSE_LGPL_21.txt included in OCCT
|
||||||
|
// distribution for complete text of the license and disclaimer of any warranty.
|
||||||
|
//
|
||||||
|
// Alternatively, this file may be used under the terms of Open CASCADE
|
||||||
|
// commercial license or contractual agreement.
|
||||||
|
|
||||||
|
#ifndef _AIS_AttributeFilter_HeaderFile
|
||||||
|
#define _AIS_AttributeFilter_HeaderFile
|
||||||
|
|
||||||
|
#include "Standard.hxx"
|
||||||
|
#include "Standard_Type.hxx"
|
||||||
|
|
||||||
|
#include "Quantity_NameOfColor.hxx"
|
||||||
|
#include "Standard_Real.hxx"
|
||||||
|
#include "SelectMgr_Filter.hxx"
|
||||||
|
class SelectMgr_EntityOwner;
|
||||||
|
|
||||||
|
class AIS_AttributeFilter;
|
||||||
|
DEFINE_STANDARD_HANDLE(AIS_AttributeFilter, SelectMgr_Filter)
|
||||||
|
|
||||||
|
//! Selects Interactive Objects, which have the desired width or color.
|
||||||
|
//! The filter questions each Interactive Object in local
|
||||||
|
//! context to determine whether it has an non-null
|
||||||
|
//! owner, and if so, whether it has the required color
|
||||||
|
//! and width attributes. If the object returns true in each
|
||||||
|
//! case, it is kept. If not, it is rejected.
|
||||||
|
//! This filter is used only in an open local context.
|
||||||
|
//! In the Collector viewer, you can only locate
|
||||||
|
//! Interactive Objects, which answer positively to the
|
||||||
|
//! filters, which are in position when a local context is open.
|
||||||
|
class AIS_AttributeFilter : public SelectMgr_Filter
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
//! Constructs an empty attribute filter object.
|
||||||
|
//! This filter object determines whether selectable
|
||||||
|
//! interactive objects have a non-null owner.
|
||||||
|
Standard_EXPORT AIS_AttributeFilter();
|
||||||
|
|
||||||
|
//! Constructs an attribute filter object defined by the
|
||||||
|
//! color attribute aCol.
|
||||||
|
Standard_EXPORT AIS_AttributeFilter(const Quantity_NameOfColor aCol);
|
||||||
|
|
||||||
|
//! Constructs an attribute filter object defined by the line
|
||||||
|
//! width attribute aWidth.
|
||||||
|
Standard_EXPORT AIS_AttributeFilter(const Standard_Real aWidth);
|
||||||
|
|
||||||
|
//! Indicates that the Interactive Object has the color
|
||||||
|
//! setting specified by the argument aCol at construction time.
|
||||||
|
Standard_Boolean HasColor() const { return hasC; }
|
||||||
|
|
||||||
|
//! Indicates that the Interactive Object has the width
|
||||||
|
//! setting specified by the argument aWidth at
|
||||||
|
//! construction time.
|
||||||
|
Standard_Boolean HasWidth() const { return hasW; }
|
||||||
|
|
||||||
|
//! Sets the color.
|
||||||
|
void SetColor(const Quantity_NameOfColor theCol)
|
||||||
|
{
|
||||||
|
myCol = theCol;
|
||||||
|
hasC = Standard_True;
|
||||||
|
}
|
||||||
|
|
||||||
|
//! Sets the line width.
|
||||||
|
void SetWidth(const Standard_Real theWidth)
|
||||||
|
{
|
||||||
|
myWid = theWidth;
|
||||||
|
hasW = Standard_True;
|
||||||
|
}
|
||||||
|
|
||||||
|
//! Removes the setting for color from the filter.
|
||||||
|
void UnsetColor() { hasC = Standard_False; }
|
||||||
|
|
||||||
|
//! Removes the setting for width from the filter.
|
||||||
|
void UnsetWidth() { hasW = Standard_False; }
|
||||||
|
|
||||||
|
//! Indicates that the selected Interactive Object passes
|
||||||
|
//! the filter. The owner, anObj, can be either direct or
|
||||||
|
//! user. A direct owner is the corresponding
|
||||||
|
//! construction element, whereas a user is the
|
||||||
|
//! compound shape of which the entity forms a part.
|
||||||
|
//! If the Interactive Object returns Standard_True
|
||||||
|
//! when detected by the Local Context selector through
|
||||||
|
//! the mouse, the object is kept; if not, it is rejected.
|
||||||
|
Standard_EXPORT virtual Standard_Boolean IsOk(const Handle(SelectMgr_EntityOwner)& anObj) const
|
||||||
|
Standard_OVERRIDE;
|
||||||
|
|
||||||
|
DEFINE_STANDARD_RTTIEXT(AIS_AttributeFilter, SelectMgr_Filter)
|
||||||
|
|
||||||
|
private:
|
||||||
|
Quantity_NameOfColor myCol;
|
||||||
|
Standard_Real myWid;
|
||||||
|
Standard_Boolean hasC;
|
||||||
|
Standard_Boolean hasW;
|
||||||
|
};
|
||||||
|
|
||||||
|
#endif // _AIS_AttributeFilter_HeaderFile
|
||||||
137
entry/src/main/cpp/include/opencascade/AIS_Axis.hxx
Normal file
137
entry/src/main/cpp/include/opencascade/AIS_Axis.hxx
Normal file
@ -0,0 +1,137 @@
|
|||||||
|
// Created on: 1995-08-09
|
||||||
|
// Created by: Arnaud BOUZY/Odile Olivier
|
||||||
|
// Copyright (c) 1995-1999 Matra Datavision
|
||||||
|
// Copyright (c) 1999-2014 OPEN CASCADE SAS
|
||||||
|
//
|
||||||
|
// This file is part of Open CASCADE Technology software library.
|
||||||
|
//
|
||||||
|
// This library is free software; you can redistribute it and/or modify it under
|
||||||
|
// the terms of the GNU Lesser General Public License version 2.1 as published
|
||||||
|
// by the Free Software Foundation, with special exception defined in the file
|
||||||
|
// OCCT_LGPL_EXCEPTION.txt. Consult the file LICENSE_LGPL_21.txt included in OCCT
|
||||||
|
// distribution for complete text of the license and disclaimer of any warranty.
|
||||||
|
//
|
||||||
|
// Alternatively, this file may be used under the terms of Open CASCADE
|
||||||
|
// commercial license or contractual agreement.
|
||||||
|
|
||||||
|
#ifndef _AIS_Axis_HeaderFile
|
||||||
|
#define _AIS_Axis_HeaderFile
|
||||||
|
|
||||||
|
#include "AIS_InteractiveObject.hxx"
|
||||||
|
#include "AIS_TypeOfAxis.hxx"
|
||||||
|
#include "gp_Dir.hxx"
|
||||||
|
#include "gp_Pnt.hxx"
|
||||||
|
#include "SelectMgr_Selection.hxx"
|
||||||
|
|
||||||
|
class Geom_Line;
|
||||||
|
class Geom_Axis1Placement;
|
||||||
|
class Geom_Axis2Placement;
|
||||||
|
class Prs3d_LineAspect;
|
||||||
|
|
||||||
|
//! Locates the x, y and z axes in an Interactive Object.
|
||||||
|
//! These are used to orient it correctly in presentations
|
||||||
|
//! from different viewpoints, or to construct a revolved
|
||||||
|
//! shape, for example, from one of the axes. Conversely,
|
||||||
|
//! an axis can be created to build a revolved shape and
|
||||||
|
//! then situated relative to one of the axes of the view.
|
||||||
|
class AIS_Axis : public AIS_InteractiveObject
|
||||||
|
{
|
||||||
|
DEFINE_STANDARD_RTTIEXT(AIS_Axis, AIS_InteractiveObject)
|
||||||
|
public:
|
||||||
|
//! Initializes the line aComponent
|
||||||
|
Standard_EXPORT AIS_Axis(const Handle(Geom_Line)& aComponent);
|
||||||
|
|
||||||
|
//! initializes the axis2 position
|
||||||
|
//! aComponent. The coordinate system used is right-handed.
|
||||||
|
Standard_EXPORT AIS_Axis(const Handle(Geom_Axis2Placement)& aComponent,
|
||||||
|
const AIS_TypeOfAxis anAxisType);
|
||||||
|
|
||||||
|
//! Initializes the axis1 position anAxis.
|
||||||
|
Standard_EXPORT AIS_Axis(const Handle(Geom_Axis1Placement)& anAxis);
|
||||||
|
|
||||||
|
//! Initializes the ray as axis with start point and direction
|
||||||
|
//! @param[in] theAxis Start point and direction of the ray
|
||||||
|
//! @param[in] theLength Optional length of the ray (ray is infinite by default).
|
||||||
|
Standard_EXPORT AIS_Axis(const gp_Ax1& theAxis, const Standard_Real theLength = -1);
|
||||||
|
|
||||||
|
//! Returns the axis entity aComponent and identifies it
|
||||||
|
//! as a component of a shape.
|
||||||
|
const Handle(Geom_Line)& Component() const { return myComponent; }
|
||||||
|
|
||||||
|
//! Sets the coordinates of the lin aComponent.
|
||||||
|
Standard_EXPORT void SetComponent(const Handle(Geom_Line)& aComponent);
|
||||||
|
|
||||||
|
//! Returns the position of axis2 and positions it by
|
||||||
|
//! identifying it as the x, y, or z axis and giving its
|
||||||
|
//! direction in 3D space. The coordinate system used is right-handed.
|
||||||
|
const Handle(Geom_Axis2Placement)& Axis2Placement() const { return myAx2; }
|
||||||
|
|
||||||
|
//! Allows you to provide settings for aComponent:the
|
||||||
|
//! position and direction of an axis in 3D space. The
|
||||||
|
//! coordinate system used is right-handed.
|
||||||
|
Standard_EXPORT void SetAxis2Placement(const Handle(Geom_Axis2Placement)& aComponent,
|
||||||
|
const AIS_TypeOfAxis anAxisType);
|
||||||
|
|
||||||
|
//! Constructs a new line to serve as the axis anAxis in 3D space.
|
||||||
|
Standard_EXPORT void SetAxis1Placement(const Handle(Geom_Axis1Placement)& anAxis);
|
||||||
|
|
||||||
|
//! Returns the type of axis.
|
||||||
|
AIS_TypeOfAxis TypeOfAxis() const { return myTypeOfAxis; }
|
||||||
|
|
||||||
|
//! Constructs the entity theTypeAxis to stock information
|
||||||
|
//! concerning type of axis.
|
||||||
|
void SetTypeOfAxis(const AIS_TypeOfAxis theTypeAxis) { myTypeOfAxis = theTypeAxis; }
|
||||||
|
|
||||||
|
//! Returns a signature of 2 for axis datums. When you
|
||||||
|
//! activate mode 2 by a signature, you pick AIS objects
|
||||||
|
//! of type AIS_Axis.
|
||||||
|
Standard_Boolean IsXYZAxis() const { return myIsXYZAxis; }
|
||||||
|
|
||||||
|
//! Returns true if the interactive object accepts the display mode aMode.
|
||||||
|
Standard_EXPORT Standard_Boolean
|
||||||
|
AcceptDisplayMode(const Standard_Integer aMode) const Standard_OVERRIDE;
|
||||||
|
|
||||||
|
virtual Standard_Integer Signature() const Standard_OVERRIDE { return 2; }
|
||||||
|
|
||||||
|
virtual AIS_KindOfInteractive Type() const Standard_OVERRIDE
|
||||||
|
{
|
||||||
|
return AIS_KindOfInteractive_Datum;
|
||||||
|
}
|
||||||
|
|
||||||
|
Standard_EXPORT void SetColor(const Quantity_Color& aColor) Standard_OVERRIDE;
|
||||||
|
|
||||||
|
Standard_EXPORT void SetWidth(const Standard_Real aValue) Standard_OVERRIDE;
|
||||||
|
|
||||||
|
//! Set required visualization parameters.
|
||||||
|
Standard_EXPORT void SetDisplayAspect(const Handle(Prs3d_LineAspect)& theNewDatumAspect);
|
||||||
|
|
||||||
|
Standard_EXPORT void UnsetColor() Standard_OVERRIDE;
|
||||||
|
|
||||||
|
Standard_EXPORT void UnsetWidth() Standard_OVERRIDE;
|
||||||
|
|
||||||
|
private:
|
||||||
|
Standard_EXPORT virtual void Compute(const Handle(PrsMgr_PresentationManager)& thePrsMgr,
|
||||||
|
const Handle(Prs3d_Presentation)& thePrs,
|
||||||
|
const Standard_Integer theMode) Standard_OVERRIDE;
|
||||||
|
|
||||||
|
Standard_EXPORT virtual void ComputeSelection(const Handle(SelectMgr_Selection)& theSel,
|
||||||
|
const Standard_Integer theMode) Standard_OVERRIDE;
|
||||||
|
|
||||||
|
Standard_EXPORT void ComputeFields();
|
||||||
|
|
||||||
|
private:
|
||||||
|
Handle(Geom_Line) myComponent;
|
||||||
|
Handle(Geom_Axis2Placement) myAx2;
|
||||||
|
gp_Pnt myPfirst;
|
||||||
|
gp_Pnt myPlast;
|
||||||
|
AIS_TypeOfAxis myTypeOfAxis;
|
||||||
|
Standard_Boolean myIsXYZAxis;
|
||||||
|
gp_Dir myDir;
|
||||||
|
Standard_Real myVal;
|
||||||
|
Standard_CString myText;
|
||||||
|
Handle(Prs3d_LineAspect) myLineAspect;
|
||||||
|
};
|
||||||
|
|
||||||
|
DEFINE_STANDARD_HANDLE(AIS_Axis, AIS_InteractiveObject)
|
||||||
|
|
||||||
|
#endif // _AIS_Axis_HeaderFile
|
||||||
66
entry/src/main/cpp/include/opencascade/AIS_BadEdgeFilter.hxx
Normal file
66
entry/src/main/cpp/include/opencascade/AIS_BadEdgeFilter.hxx
Normal file
@ -0,0 +1,66 @@
|
|||||||
|
// Created on: 1998-03-04
|
||||||
|
// Created by: Julia Gerasimova
|
||||||
|
// Copyright (c) 1998-1999 Matra Datavision
|
||||||
|
// Copyright (c) 1999-2014 OPEN CASCADE SAS
|
||||||
|
//
|
||||||
|
// This file is part of Open CASCADE Technology software library.
|
||||||
|
//
|
||||||
|
// This library is free software; you can redistribute it and/or modify it under
|
||||||
|
// the terms of the GNU Lesser General Public License version 2.1 as published
|
||||||
|
// by the Free Software Foundation, with special exception defined in the file
|
||||||
|
// OCCT_LGPL_EXCEPTION.txt. Consult the file LICENSE_LGPL_21.txt included in OCCT
|
||||||
|
// distribution for complete text of the license and disclaimer of any warranty.
|
||||||
|
//
|
||||||
|
// Alternatively, this file may be used under the terms of Open CASCADE
|
||||||
|
// commercial license or contractual agreement.
|
||||||
|
|
||||||
|
#ifndef _AIS_BadEdgeFilter_HeaderFile
|
||||||
|
#define _AIS_BadEdgeFilter_HeaderFile
|
||||||
|
|
||||||
|
#include "Standard.hxx"
|
||||||
|
|
||||||
|
#include "TopTools_DataMapOfIntegerListOfShape.hxx"
|
||||||
|
#include "Standard_Integer.hxx"
|
||||||
|
#include "SelectMgr_Filter.hxx"
|
||||||
|
#include "TopAbs_ShapeEnum.hxx"
|
||||||
|
class SelectMgr_EntityOwner;
|
||||||
|
class TopoDS_Edge;
|
||||||
|
|
||||||
|
class AIS_BadEdgeFilter;
|
||||||
|
DEFINE_STANDARD_HANDLE(AIS_BadEdgeFilter, SelectMgr_Filter)
|
||||||
|
|
||||||
|
//! A Class
|
||||||
|
class AIS_BadEdgeFilter : public SelectMgr_Filter
|
||||||
|
{
|
||||||
|
|
||||||
|
public:
|
||||||
|
//! Constructs an empty filter object for bad edges.
|
||||||
|
Standard_EXPORT AIS_BadEdgeFilter();
|
||||||
|
|
||||||
|
Standard_EXPORT virtual Standard_Boolean ActsOn(const TopAbs_ShapeEnum aType) const
|
||||||
|
Standard_OVERRIDE;
|
||||||
|
|
||||||
|
Standard_EXPORT virtual Standard_Boolean IsOk(const Handle(SelectMgr_EntityOwner)& EO) const
|
||||||
|
Standard_OVERRIDE;
|
||||||
|
|
||||||
|
//! sets <myContour> with current contour. used by
|
||||||
|
//! IsOk.
|
||||||
|
Standard_EXPORT void SetContour(const Standard_Integer Index);
|
||||||
|
|
||||||
|
//! Adds an edge to the list of non-selectionnable
|
||||||
|
//! edges.
|
||||||
|
Standard_EXPORT void AddEdge(const TopoDS_Edge& anEdge, const Standard_Integer Index);
|
||||||
|
|
||||||
|
//! removes from the list of non-selectionnable edges
|
||||||
|
//! all edges in the contour <Index>.
|
||||||
|
Standard_EXPORT void RemoveEdges(const Standard_Integer Index);
|
||||||
|
|
||||||
|
DEFINE_STANDARD_RTTIEXT(AIS_BadEdgeFilter, SelectMgr_Filter)
|
||||||
|
|
||||||
|
protected:
|
||||||
|
private:
|
||||||
|
TopTools_DataMapOfIntegerListOfShape myBadEdges;
|
||||||
|
Standard_Integer myContour;
|
||||||
|
};
|
||||||
|
|
||||||
|
#endif // _AIS_BadEdgeFilter_HeaderFile
|
||||||
@ -0,0 +1,45 @@
|
|||||||
|
// Copyright (c) 2023 OPEN CASCADE SAS
|
||||||
|
//
|
||||||
|
// This file is part of Open CASCADE Technology software library.
|
||||||
|
//
|
||||||
|
// This library is free software; you can redistribute it and/or modify it under
|
||||||
|
// the terms of the GNU Lesser General Public License version 2.1 as published
|
||||||
|
// by the Free Software Foundation, with special exception defined in the file
|
||||||
|
// OCCT_LGPL_EXCEPTION.txt. Consult the file LICENSE_LGPL_21.txt included in OCCT
|
||||||
|
// distribution for complete text of the license and disclaimer of any warranty.
|
||||||
|
//
|
||||||
|
// Alternatively, this file may be used under the terms of Open CASCADE
|
||||||
|
// commercial license or contractual agreement.
|
||||||
|
|
||||||
|
#ifndef _AIS_BaseAnimationObject_HeaderFile
|
||||||
|
#define _AIS_BaseAnimationObject_HeaderFile
|
||||||
|
|
||||||
|
#include "AIS_Animation.hxx"
|
||||||
|
#include "AIS_InteractiveContext.hxx"
|
||||||
|
|
||||||
|
//! Animation defining object transformation.
|
||||||
|
class AIS_BaseAnimationObject : public AIS_Animation
|
||||||
|
{
|
||||||
|
DEFINE_STANDARD_RTTIEXT(AIS_BaseAnimationObject, AIS_Animation)
|
||||||
|
protected:
|
||||||
|
//! Constructor with initialization.
|
||||||
|
//! @param[in] theAnimationName animation identifier
|
||||||
|
//! @param[in] theContext interactive context where object have been displayed
|
||||||
|
//! @param[in] theObject object to apply local transformation
|
||||||
|
Standard_EXPORT AIS_BaseAnimationObject(const TCollection_AsciiString& theAnimationName,
|
||||||
|
const Handle(AIS_InteractiveContext)& theContext,
|
||||||
|
const Handle(AIS_InteractiveObject)& theObject);
|
||||||
|
|
||||||
|
//! Update the transformation.
|
||||||
|
Standard_EXPORT void updateTrsf(const gp_Trsf& theTrsf);
|
||||||
|
|
||||||
|
private:
|
||||||
|
//! Invalidate the viewer for proper update.
|
||||||
|
Standard_EXPORT void invalidateViewer();
|
||||||
|
|
||||||
|
protected:
|
||||||
|
Handle(AIS_InteractiveContext) myContext; //!< context where object is displayed
|
||||||
|
Handle(AIS_InteractiveObject) myObject; //!< presentation object to set location
|
||||||
|
};
|
||||||
|
|
||||||
|
#endif // _AIS_BaseAnimationObject_HeaderFile
|
||||||
@ -0,0 +1,50 @@
|
|||||||
|
// Created on: 1998-02-04
|
||||||
|
// Created by: Julia GERASIMOVA
|
||||||
|
// Copyright (c) 1998-1999 Matra Datavision
|
||||||
|
// Copyright (c) 1999-2014 OPEN CASCADE SAS
|
||||||
|
//
|
||||||
|
// This file is part of Open CASCADE Technology software library.
|
||||||
|
//
|
||||||
|
// This library is free software; you can redistribute it and/or modify it under
|
||||||
|
// the terms of the GNU Lesser General Public License version 2.1 as published
|
||||||
|
// by the Free Software Foundation, with special exception defined in the file
|
||||||
|
// OCCT_LGPL_EXCEPTION.txt. Consult the file LICENSE_LGPL_21.txt included in OCCT
|
||||||
|
// distribution for complete text of the license and disclaimer of any warranty.
|
||||||
|
//
|
||||||
|
// Alternatively, this file may be used under the terms of Open CASCADE
|
||||||
|
// commercial license or contractual agreement.
|
||||||
|
|
||||||
|
#ifndef _AIS_C0RegularityFilter_HeaderFile
|
||||||
|
#define _AIS_C0RegularityFilter_HeaderFile
|
||||||
|
|
||||||
|
#include "Standard.hxx"
|
||||||
|
|
||||||
|
#include "TopTools_MapOfShape.hxx"
|
||||||
|
#include "SelectMgr_Filter.hxx"
|
||||||
|
#include "TopAbs_ShapeEnum.hxx"
|
||||||
|
class TopoDS_Shape;
|
||||||
|
class SelectMgr_EntityOwner;
|
||||||
|
|
||||||
|
class AIS_C0RegularityFilter;
|
||||||
|
DEFINE_STANDARD_HANDLE(AIS_C0RegularityFilter, SelectMgr_Filter)
|
||||||
|
|
||||||
|
class AIS_C0RegularityFilter : public SelectMgr_Filter
|
||||||
|
{
|
||||||
|
|
||||||
|
public:
|
||||||
|
Standard_EXPORT AIS_C0RegularityFilter(const TopoDS_Shape& aShape);
|
||||||
|
|
||||||
|
Standard_EXPORT virtual Standard_Boolean ActsOn(const TopAbs_ShapeEnum aType) const
|
||||||
|
Standard_OVERRIDE;
|
||||||
|
|
||||||
|
Standard_EXPORT virtual Standard_Boolean IsOk(const Handle(SelectMgr_EntityOwner)& EO) const
|
||||||
|
Standard_OVERRIDE;
|
||||||
|
|
||||||
|
DEFINE_STANDARD_RTTIEXT(AIS_C0RegularityFilter, SelectMgr_Filter)
|
||||||
|
|
||||||
|
protected:
|
||||||
|
private:
|
||||||
|
TopTools_MapOfShape myMapOfEdges;
|
||||||
|
};
|
||||||
|
|
||||||
|
#endif // _AIS_C0RegularityFilter_HeaderFile
|
||||||
80
entry/src/main/cpp/include/opencascade/AIS_CameraFrustum.hxx
Normal file
80
entry/src/main/cpp/include/opencascade/AIS_CameraFrustum.hxx
Normal file
@ -0,0 +1,80 @@
|
|||||||
|
// Created on: 2018-12-12
|
||||||
|
// Created by: Olga SURYANINOVA
|
||||||
|
// Copyright (c) 2018 OPEN CASCADE SAS
|
||||||
|
//
|
||||||
|
// This file is part of Open CASCADE Technology software library.
|
||||||
|
//
|
||||||
|
// This library is free software; you can redistribute it and/or modify it under
|
||||||
|
// the terms of the GNU Lesser General Public License version 2.1 as published
|
||||||
|
// by the Free Software Foundation, with special exception defined in the file
|
||||||
|
// OCCT_LGPL_EXCEPTION.txt. Consult the file LICENSE_LGPL_21.txt included in OCCT
|
||||||
|
// distribution for complete text of the license and disclaimer of any warranty.
|
||||||
|
//
|
||||||
|
// Alternatively, this file may be used under the terms of Open CASCADE
|
||||||
|
// commercial license or contractual agreement.
|
||||||
|
|
||||||
|
#ifndef _AIS_CameraFrustum_HeaderFile
|
||||||
|
#define _AIS_CameraFrustum_HeaderFile
|
||||||
|
|
||||||
|
#include "AIS_InteractiveObject.hxx"
|
||||||
|
|
||||||
|
class Graphic3d_ArrayOfSegments;
|
||||||
|
class Graphic3d_ArrayOfTriangles;
|
||||||
|
|
||||||
|
//! Presentation for drawing camera frustum.
|
||||||
|
//! Default configuration is built with filling and some transparency.
|
||||||
|
class AIS_CameraFrustum : public AIS_InteractiveObject
|
||||||
|
{
|
||||||
|
DEFINE_STANDARD_RTTIEXT(AIS_CameraFrustum, AIS_InteractiveObject)
|
||||||
|
public:
|
||||||
|
//! Selection modes supported by this object
|
||||||
|
enum SelectionMode
|
||||||
|
{
|
||||||
|
SelectionMode_Edges = 0, //!< detect by edges (default)
|
||||||
|
SelectionMode_Volume = 1, //!< detect by volume
|
||||||
|
};
|
||||||
|
|
||||||
|
public:
|
||||||
|
//! Constructs camera frustum with default configuration.
|
||||||
|
Standard_EXPORT AIS_CameraFrustum();
|
||||||
|
|
||||||
|
//! Sets camera frustum.
|
||||||
|
Standard_EXPORT void SetCameraFrustum(const Handle(Graphic3d_Camera)& theCamera);
|
||||||
|
|
||||||
|
//! Setup custom color.
|
||||||
|
Standard_EXPORT virtual void SetColor(const Quantity_Color& theColor) Standard_OVERRIDE;
|
||||||
|
|
||||||
|
//! Restore default color.
|
||||||
|
Standard_EXPORT virtual void UnsetColor() Standard_OVERRIDE;
|
||||||
|
|
||||||
|
//! Restore transparency setting.
|
||||||
|
Standard_EXPORT virtual void UnsetTransparency() Standard_OVERRIDE;
|
||||||
|
|
||||||
|
//! Return true if specified display mode is supported.
|
||||||
|
Standard_EXPORT virtual Standard_Boolean AcceptDisplayMode(const Standard_Integer theMode) const
|
||||||
|
Standard_OVERRIDE;
|
||||||
|
|
||||||
|
protected:
|
||||||
|
//! Computes presentation of camera frustum.
|
||||||
|
Standard_EXPORT virtual void Compute(const Handle(PrsMgr_PresentationManager)& thePrsMgr,
|
||||||
|
const Handle(Prs3d_Presentation)& thePrs,
|
||||||
|
const Standard_Integer theMode) Standard_OVERRIDE;
|
||||||
|
|
||||||
|
//! Compute selection.
|
||||||
|
Standard_EXPORT virtual void ComputeSelection(const Handle(SelectMgr_Selection)& theSelection,
|
||||||
|
const Standard_Integer theMode) Standard_OVERRIDE;
|
||||||
|
|
||||||
|
private:
|
||||||
|
//! Fills triangles primitive array for camera frustum filling.
|
||||||
|
void fillTriangles();
|
||||||
|
|
||||||
|
//! Fills polylines primitive array for camera frustum borders.
|
||||||
|
void fillBorders();
|
||||||
|
|
||||||
|
protected:
|
||||||
|
NCollection_Array1<Graphic3d_Vec3d> myPoints; //!< Array of points
|
||||||
|
Handle(Graphic3d_ArrayOfTriangles) myTriangles; //!< Triangles for camera frustum filling
|
||||||
|
Handle(Graphic3d_ArrayOfSegments) myBorders; //!< Segments for camera frustum borders
|
||||||
|
};
|
||||||
|
|
||||||
|
#endif // _AIS_CameraFrustum_HeaderFile
|
||||||
@ -0,0 +1,22 @@
|
|||||||
|
// Copyright (c) 2020 OPEN CASCADE SAS
|
||||||
|
//
|
||||||
|
// This file is part of Open CASCADE Technology software library.
|
||||||
|
//
|
||||||
|
// This library is free software; you can redistribute it and/or modify it under
|
||||||
|
// the terms of the GNU Lesser General Public License version 2.1 as published
|
||||||
|
// by the Free Software Foundation, with special exception defined in the file
|
||||||
|
// OCCT_LGPL_EXCEPTION.txt. Consult the file LICENSE_LGPL_21.txt included in OCCT
|
||||||
|
// distribution for complete text of the license and disclaimer of any warranty.
|
||||||
|
//
|
||||||
|
// Alternatively, this file may be used under the terms of Open CASCADE
|
||||||
|
// commercial license or contractual agreement.
|
||||||
|
|
||||||
|
#ifndef _AIS_Chamf2dDimension_HeaderFile
|
||||||
|
#define _AIS_Chamf2dDimension_HeaderFile
|
||||||
|
|
||||||
|
#include "PrsDim_Chamf2dDimension.hxx"
|
||||||
|
|
||||||
|
Standard_DEPRECATED("Alias to moved class")
|
||||||
|
typedef PrsDim_Chamf2dDimension AIS_Chamf2dDimension;
|
||||||
|
|
||||||
|
#endif // _AIS_Chamf2dDimension_HeaderFile
|
||||||
@ -0,0 +1,22 @@
|
|||||||
|
// Copyright (c) 2020 OPEN CASCADE SAS
|
||||||
|
//
|
||||||
|
// This file is part of Open CASCADE Technology software library.
|
||||||
|
//
|
||||||
|
// This library is free software; you can redistribute it and/or modify it under
|
||||||
|
// the terms of the GNU Lesser General Public License version 2.1 as published
|
||||||
|
// by the Free Software Foundation, with special exception defined in the file
|
||||||
|
// OCCT_LGPL_EXCEPTION.txt. Consult the file LICENSE_LGPL_21.txt included in OCCT
|
||||||
|
// distribution for complete text of the license and disclaimer of any warranty.
|
||||||
|
//
|
||||||
|
// Alternatively, this file may be used under the terms of Open CASCADE
|
||||||
|
// commercial license or contractual agreement.
|
||||||
|
|
||||||
|
#ifndef _AIS_Chamf3dDimension_HeaderFile
|
||||||
|
#define _AIS_Chamf3dDimension_HeaderFile
|
||||||
|
|
||||||
|
#include "PrsDim_Chamf3dDimension.hxx"
|
||||||
|
|
||||||
|
Standard_DEPRECATED("Alias to moved class")
|
||||||
|
typedef PrsDim_Chamf3dDimension AIS_Chamf3dDimension;
|
||||||
|
|
||||||
|
#endif // _AIS_Chamf3dDimension_HeaderFile
|
||||||
130
entry/src/main/cpp/include/opencascade/AIS_Circle.hxx
Normal file
130
entry/src/main/cpp/include/opencascade/AIS_Circle.hxx
Normal file
@ -0,0 +1,130 @@
|
|||||||
|
// Created on: 1997-01-21
|
||||||
|
// Created by: Prestataire Christiane ARMAND
|
||||||
|
// Copyright (c) 1997-1999 Matra Datavision
|
||||||
|
// Copyright (c) 1999-2014 OPEN CASCADE SAS
|
||||||
|
//
|
||||||
|
// This file is part of Open CASCADE Technology software library.
|
||||||
|
//
|
||||||
|
// This library is free software; you can redistribute it and/or modify it under
|
||||||
|
// the terms of the GNU Lesser General Public License version 2.1 as published
|
||||||
|
// by the Free Software Foundation, with special exception defined in the file
|
||||||
|
// OCCT_LGPL_EXCEPTION.txt. Consult the file LICENSE_LGPL_21.txt included in OCCT
|
||||||
|
// distribution for complete text of the license and disclaimer of any warranty.
|
||||||
|
//
|
||||||
|
// Alternatively, this file may be used under the terms of Open CASCADE
|
||||||
|
// commercial license or contractual agreement.
|
||||||
|
|
||||||
|
#ifndef _AIS_Circle_HeaderFile
|
||||||
|
#define _AIS_Circle_HeaderFile
|
||||||
|
|
||||||
|
#include "AIS_InteractiveObject.hxx"
|
||||||
|
|
||||||
|
class Geom_Circle;
|
||||||
|
|
||||||
|
//! Constructs circle datums to be used in construction of
|
||||||
|
//! composite shapes.
|
||||||
|
class AIS_Circle : public AIS_InteractiveObject
|
||||||
|
{
|
||||||
|
DEFINE_STANDARD_RTTIEXT(AIS_Circle, AIS_InteractiveObject)
|
||||||
|
public:
|
||||||
|
//! Initializes this algorithm for constructing AIS circle
|
||||||
|
//! datums initializes the circle aCircle
|
||||||
|
Standard_EXPORT AIS_Circle(const Handle(Geom_Circle)& aCircle);
|
||||||
|
|
||||||
|
//! Initializes this algorithm for constructing AIS circle datums.
|
||||||
|
//! Initializes the circle theCircle, the arc
|
||||||
|
//! starting point theUStart, the arc ending point theUEnd,
|
||||||
|
//! and the type of sensitivity theIsFilledCircleSens.
|
||||||
|
Standard_EXPORT AIS_Circle(const Handle(Geom_Circle)& theCircle,
|
||||||
|
const Standard_Real theUStart,
|
||||||
|
const Standard_Real theUEnd,
|
||||||
|
const Standard_Boolean theIsFilledCircleSens = Standard_False);
|
||||||
|
|
||||||
|
//! Returns index 6 by default.
|
||||||
|
virtual Standard_Integer Signature() const Standard_OVERRIDE { return 6; }
|
||||||
|
|
||||||
|
//! Indicates that the type of Interactive Object is a datum.
|
||||||
|
virtual AIS_KindOfInteractive Type() const Standard_OVERRIDE
|
||||||
|
{
|
||||||
|
return AIS_KindOfInteractive_Datum;
|
||||||
|
}
|
||||||
|
|
||||||
|
//! Returns the circle component defined in SetCircle.
|
||||||
|
const Handle(Geom_Circle)& Circle() const { return myComponent; }
|
||||||
|
|
||||||
|
//! Constructs instances of the starting point and the end
|
||||||
|
//! point parameters, theU1 and theU2.
|
||||||
|
void Parameters(Standard_Real& theU1, Standard_Real& theU2) const
|
||||||
|
{
|
||||||
|
theU1 = myUStart;
|
||||||
|
theU2 = myUEnd;
|
||||||
|
}
|
||||||
|
|
||||||
|
//! Allows you to provide settings for the circle datum aCircle.
|
||||||
|
void SetCircle(const Handle(Geom_Circle)& theCircle) { myComponent = theCircle; }
|
||||||
|
|
||||||
|
//! Allows you to set the parameter theU for the starting point of an arc.
|
||||||
|
void SetFirstParam(const Standard_Real theU)
|
||||||
|
{
|
||||||
|
myUStart = theU;
|
||||||
|
myCircleIsArc = Standard_True;
|
||||||
|
}
|
||||||
|
|
||||||
|
//! Allows you to provide the parameter theU for the end point of an arc.
|
||||||
|
void SetLastParam(const Standard_Real theU)
|
||||||
|
{
|
||||||
|
myUEnd = theU;
|
||||||
|
myCircleIsArc = Standard_True;
|
||||||
|
}
|
||||||
|
|
||||||
|
Standard_EXPORT void SetColor(const Quantity_Color& aColor) Standard_OVERRIDE;
|
||||||
|
|
||||||
|
//! Assigns the width aValue to the solid line boundary of the circle datum.
|
||||||
|
Standard_EXPORT void SetWidth(const Standard_Real aValue) Standard_OVERRIDE;
|
||||||
|
|
||||||
|
//! Removes color from the solid line boundary of the circle datum.
|
||||||
|
Standard_EXPORT void UnsetColor() Standard_OVERRIDE;
|
||||||
|
|
||||||
|
//! Removes width settings from the solid line boundary of the circle datum.
|
||||||
|
Standard_EXPORT void UnsetWidth() Standard_OVERRIDE;
|
||||||
|
|
||||||
|
//! Returns the type of sensitivity for the circle;
|
||||||
|
Standard_Boolean IsFilledCircleSens() const { return myIsFilledCircleSens; }
|
||||||
|
|
||||||
|
//! Sets the type of sensitivity for the circle. If theIsFilledCircleSens set to Standard_True
|
||||||
|
//! then the whole circle will be detectable, otherwise only the boundary of the circle.
|
||||||
|
void SetFilledCircleSens(const Standard_Boolean theIsFilledCircleSens)
|
||||||
|
{
|
||||||
|
myIsFilledCircleSens = theIsFilledCircleSens;
|
||||||
|
}
|
||||||
|
|
||||||
|
private:
|
||||||
|
Standard_EXPORT virtual void Compute(const Handle(PrsMgr_PresentationManager)& thePrsMgr,
|
||||||
|
const Handle(Prs3d_Presentation)& theprs,
|
||||||
|
const Standard_Integer theMode) Standard_OVERRIDE;
|
||||||
|
|
||||||
|
Standard_EXPORT virtual void ComputeSelection(const Handle(SelectMgr_Selection)& theSel,
|
||||||
|
const Standard_Integer theMode) Standard_OVERRIDE;
|
||||||
|
|
||||||
|
Standard_EXPORT void ComputeCircle(const Handle(Prs3d_Presentation)& aPresentation);
|
||||||
|
|
||||||
|
Standard_EXPORT void ComputeArc(const Handle(Prs3d_Presentation)& aPresentation);
|
||||||
|
|
||||||
|
Standard_EXPORT void ComputeCircleSelection(const Handle(SelectMgr_Selection)& aSelection);
|
||||||
|
|
||||||
|
Standard_EXPORT void ComputeArcSelection(const Handle(SelectMgr_Selection)& aSelection);
|
||||||
|
|
||||||
|
//! Replace aspects of already computed groups with the new value.
|
||||||
|
void replaceWithNewLineAspect(const Handle(Prs3d_LineAspect)& theAspect);
|
||||||
|
|
||||||
|
private:
|
||||||
|
Handle(Geom_Circle) myComponent;
|
||||||
|
Standard_Real myUStart;
|
||||||
|
Standard_Real myUEnd;
|
||||||
|
Standard_Boolean myCircleIsArc;
|
||||||
|
Standard_Boolean myIsFilledCircleSens;
|
||||||
|
};
|
||||||
|
|
||||||
|
DEFINE_STANDARD_HANDLE(AIS_Circle, AIS_InteractiveObject)
|
||||||
|
|
||||||
|
#endif // _AIS_Circle_HeaderFile
|
||||||
518
entry/src/main/cpp/include/opencascade/AIS_ColorScale.hxx
Normal file
518
entry/src/main/cpp/include/opencascade/AIS_ColorScale.hxx
Normal file
@ -0,0 +1,518 @@
|
|||||||
|
// Created on: 2015-02-03
|
||||||
|
// Copyright (c) 2015 OPEN CASCADE SAS
|
||||||
|
//
|
||||||
|
// This file is part of Open CASCADE Technology software library.
|
||||||
|
//
|
||||||
|
// This library is free software; you can redistribute it and/or modify it under
|
||||||
|
// the terms of the GNU Lesser General Public License version 2.1 as published
|
||||||
|
// by the Free Software Foundation, with special exception defined in the file
|
||||||
|
// OCCT_LGPL_EXCEPTION.txt. Consult the file LICENSE_LGPL_21.txt included in OCCT
|
||||||
|
// distribution for complete text of the license and disclaimer of any warranty.
|
||||||
|
//
|
||||||
|
// Alternatively, this file may be used under the terms of Open CASCADE
|
||||||
|
// commercial license or contractual agreement.
|
||||||
|
|
||||||
|
#ifndef _AIS_ColorScale_HeaderFile
|
||||||
|
#define _AIS_ColorScale_HeaderFile
|
||||||
|
|
||||||
|
#include "AIS_InteractiveObject.hxx"
|
||||||
|
#include "Aspect_TypeOfColorScaleData.hxx"
|
||||||
|
#include "Aspect_TypeOfColorScalePosition.hxx"
|
||||||
|
#include "Aspect_SequenceOfColor.hxx"
|
||||||
|
#include "Standard.hxx"
|
||||||
|
#include "Standard_DefineHandle.hxx"
|
||||||
|
#include "TCollection_ExtendedString.hxx"
|
||||||
|
#include "TColStd_SequenceOfExtendedString.hxx"
|
||||||
|
|
||||||
|
class AIS_ColorScale;
|
||||||
|
DEFINE_STANDARD_HANDLE(AIS_ColorScale, AIS_InteractiveObject)
|
||||||
|
|
||||||
|
//! Class for drawing a custom color scale.
|
||||||
|
//!
|
||||||
|
//! The color scale consists of rectangular color bar (composed of fixed
|
||||||
|
//! number of color intervals), optional labels, and title.
|
||||||
|
//! The labels can be positioned either at the boundaries of the intervals,
|
||||||
|
//! or at the middle of each interval.
|
||||||
|
//! Colors and labels can be either defined automatically or set by the user.
|
||||||
|
//! Automatic labels are calculated from numerical limits of the scale,
|
||||||
|
//! its type (logarithmic or plain), and formatted by specified format string.
|
||||||
|
class AIS_ColorScale : public AIS_InteractiveObject
|
||||||
|
{
|
||||||
|
DEFINE_STANDARD_RTTIEXT(AIS_ColorScale, AIS_InteractiveObject)
|
||||||
|
public:
|
||||||
|
//! Calculate color according passed value; returns true if value is in range or false, if isn't
|
||||||
|
Standard_EXPORT static Standard_Boolean FindColor(const Standard_Real theValue,
|
||||||
|
const Standard_Real theMin,
|
||||||
|
const Standard_Real theMax,
|
||||||
|
const Standard_Integer theColorsCount,
|
||||||
|
const Graphic3d_Vec3d& theColorHlsMin,
|
||||||
|
const Graphic3d_Vec3d& theColorHlsMax,
|
||||||
|
Quantity_Color& theColor);
|
||||||
|
|
||||||
|
//! Calculate color according passed value; returns true if value is in range or false, if isn't
|
||||||
|
static Standard_Boolean FindColor(const Standard_Real theValue,
|
||||||
|
const Standard_Real theMin,
|
||||||
|
const Standard_Real theMax,
|
||||||
|
const Standard_Integer theColorsCount,
|
||||||
|
Quantity_Color& theColor)
|
||||||
|
{
|
||||||
|
return FindColor(theValue,
|
||||||
|
theMin,
|
||||||
|
theMax,
|
||||||
|
theColorsCount,
|
||||||
|
Graphic3d_Vec3d(230.0, 1.0, 1.0),
|
||||||
|
Graphic3d_Vec3d(0.0, 1.0, 1.0),
|
||||||
|
theColor);
|
||||||
|
}
|
||||||
|
|
||||||
|
//! Shift hue into valid range.
|
||||||
|
//! Lightness and Saturation should be specified in valid range [0.0, 1.0],
|
||||||
|
//! however Hue might be given out of Quantity_Color range to specify desired range for
|
||||||
|
//! interpolation.
|
||||||
|
static Standard_Real hueToValidRange(const Standard_Real theHue)
|
||||||
|
{
|
||||||
|
Standard_Real aHue = theHue;
|
||||||
|
while (aHue < 0.0)
|
||||||
|
{
|
||||||
|
aHue += 360.0;
|
||||||
|
}
|
||||||
|
while (aHue > 360.0)
|
||||||
|
{
|
||||||
|
aHue -= 360.0;
|
||||||
|
}
|
||||||
|
return aHue;
|
||||||
|
}
|
||||||
|
|
||||||
|
public:
|
||||||
|
//! Default constructor.
|
||||||
|
Standard_EXPORT AIS_ColorScale();
|
||||||
|
|
||||||
|
//! Calculate color according passed value; returns true if value is in range or false, if isn't
|
||||||
|
Standard_EXPORT Standard_Boolean FindColor(const Standard_Real theValue,
|
||||||
|
Quantity_Color& theColor) const;
|
||||||
|
|
||||||
|
//! Returns minimal value of color scale, 0.0 by default.
|
||||||
|
Standard_Real GetMin() const { return myMin; }
|
||||||
|
|
||||||
|
//! Sets the minimal value of color scale.
|
||||||
|
void SetMin(const Standard_Real theMin) { SetRange(theMin, GetMax()); }
|
||||||
|
|
||||||
|
//! Returns maximal value of color scale, 1.0 by default.
|
||||||
|
Standard_Real GetMax() const { return myMax; }
|
||||||
|
|
||||||
|
//! Sets the maximal value of color scale.
|
||||||
|
void SetMax(const Standard_Real theMax) { SetRange(GetMin(), theMax); }
|
||||||
|
|
||||||
|
//! Returns minimal and maximal values of color scale, 0.0 to 1.0 by default.
|
||||||
|
void GetRange(Standard_Real& theMin, Standard_Real& theMax) const
|
||||||
|
{
|
||||||
|
theMin = myMin;
|
||||||
|
theMax = myMax;
|
||||||
|
}
|
||||||
|
|
||||||
|
//! Sets the minimal and maximal value of color scale.
|
||||||
|
//! Note that values order will be ignored - the minimum and maximum values will be swapped if
|
||||||
|
//! needed.
|
||||||
|
//! ::SetReversed() should be called to swap displaying order.
|
||||||
|
Standard_EXPORT void SetRange(const Standard_Real theMin, const Standard_Real theMax);
|
||||||
|
|
||||||
|
//! Returns the hue angle corresponding to minimum value, 230 by default (blue).
|
||||||
|
Standard_Real HueMin() const { return myColorHlsMin[0]; }
|
||||||
|
|
||||||
|
//! Returns the hue angle corresponding to maximum value, 0 by default (red).
|
||||||
|
Standard_Real HueMax() const { return myColorHlsMax[0]; }
|
||||||
|
|
||||||
|
//! Returns the hue angle range corresponding to minimum and maximum values, 230 to 0 by default
|
||||||
|
//! (blue to red).
|
||||||
|
void HueRange(Standard_Real& theMinAngle, Standard_Real& theMaxAngle) const
|
||||||
|
{
|
||||||
|
theMinAngle = myColorHlsMin[0];
|
||||||
|
theMaxAngle = myColorHlsMax[0];
|
||||||
|
}
|
||||||
|
|
||||||
|
//! Sets hue angle range corresponding to minimum and maximum values.
|
||||||
|
//! The valid angle range is [0, 360], see Quantity_Color and Quantity_TOC_HLS for more details.
|
||||||
|
void SetHueRange(const Standard_Real theMinAngle, const Standard_Real theMaxAngle)
|
||||||
|
{
|
||||||
|
myColorHlsMin[0] = theMinAngle;
|
||||||
|
myColorHlsMax[0] = theMaxAngle;
|
||||||
|
}
|
||||||
|
|
||||||
|
//! Returns color range corresponding to minimum and maximum values, blue to red by default.
|
||||||
|
void ColorRange(Quantity_Color& theMinColor, Quantity_Color& theMaxColor) const
|
||||||
|
{
|
||||||
|
theMinColor.SetValues(hueToValidRange(myColorHlsMin[0]),
|
||||||
|
myColorHlsMin[1],
|
||||||
|
myColorHlsMin[2],
|
||||||
|
Quantity_TOC_HLS);
|
||||||
|
theMaxColor.SetValues(hueToValidRange(myColorHlsMax[0]),
|
||||||
|
myColorHlsMax[1],
|
||||||
|
myColorHlsMax[2],
|
||||||
|
Quantity_TOC_HLS);
|
||||||
|
}
|
||||||
|
|
||||||
|
//! Sets color range corresponding to minimum and maximum values.
|
||||||
|
void SetColorRange(const Quantity_Color& theMinColor, const Quantity_Color& theMaxColor)
|
||||||
|
{
|
||||||
|
theMinColor.Values(myColorHlsMin[0], myColorHlsMin[1], myColorHlsMin[2], Quantity_TOC_HLS);
|
||||||
|
theMaxColor.Values(myColorHlsMax[0], myColorHlsMax[1], myColorHlsMax[2], Quantity_TOC_HLS);
|
||||||
|
}
|
||||||
|
|
||||||
|
//! Returns the type of labels, Aspect_TOCSD_AUTO by default.
|
||||||
|
//! Aspect_TOCSD_AUTO - labels as boundary values for intervals
|
||||||
|
//! Aspect_TOCSD_USER - user specified label is used
|
||||||
|
Aspect_TypeOfColorScaleData GetLabelType() const { return myLabelType; }
|
||||||
|
|
||||||
|
//! Sets the type of labels.
|
||||||
|
//! Aspect_TOCSD_AUTO - labels as boundary values for intervals
|
||||||
|
//! Aspect_TOCSD_USER - user specified label is used
|
||||||
|
void SetLabelType(const Aspect_TypeOfColorScaleData theType) { myLabelType = theType; }
|
||||||
|
|
||||||
|
//! Returns the type of colors, Aspect_TOCSD_AUTO by default.
|
||||||
|
//! Aspect_TOCSD_AUTO - value between Red and Blue
|
||||||
|
//! Aspect_TOCSD_USER - user specified color from color map
|
||||||
|
Aspect_TypeOfColorScaleData GetColorType() const { return myColorType; }
|
||||||
|
|
||||||
|
//! Sets the type of colors.
|
||||||
|
//! Aspect_TOCSD_AUTO - value between Red and Blue
|
||||||
|
//! Aspect_TOCSD_USER - user specified color from color map
|
||||||
|
void SetColorType(const Aspect_TypeOfColorScaleData theType) { myColorType = theType; }
|
||||||
|
|
||||||
|
//! Returns the number of color scale intervals, 10 by default.
|
||||||
|
Standard_Integer GetNumberOfIntervals() const { return myNbIntervals; }
|
||||||
|
|
||||||
|
//! Sets the number of color scale intervals.
|
||||||
|
Standard_EXPORT void SetNumberOfIntervals(const Standard_Integer theNum);
|
||||||
|
|
||||||
|
//! Returns the color scale title string, empty string by default.
|
||||||
|
const TCollection_ExtendedString& GetTitle() const { return myTitle; }
|
||||||
|
|
||||||
|
//! Sets the color scale title string.
|
||||||
|
void SetTitle(const TCollection_ExtendedString& theTitle) { myTitle = theTitle; }
|
||||||
|
|
||||||
|
//! Returns the format for numbers, "%.4g" by default.
|
||||||
|
//! The same like format for function printf().
|
||||||
|
//! Used if GetLabelType() is TOCSD_AUTO;
|
||||||
|
const TCollection_AsciiString& GetFormat() const { return myFormat; }
|
||||||
|
|
||||||
|
//! Returns the format of text.
|
||||||
|
const TCollection_AsciiString& Format() const { return myFormat; }
|
||||||
|
|
||||||
|
//! Sets the color scale auto label format specification.
|
||||||
|
void SetFormat(const TCollection_AsciiString& theFormat) { myFormat = theFormat; }
|
||||||
|
|
||||||
|
//! Returns the user specified label with index theIndex.
|
||||||
|
//! Index is in range from 1 to GetNumberOfIntervals() or to
|
||||||
|
//! GetNumberOfIntervals() + 1 if IsLabelAtBorder() is true.
|
||||||
|
//! Returns empty string if label not defined.
|
||||||
|
Standard_EXPORT TCollection_ExtendedString GetLabel(const Standard_Integer theIndex) const;
|
||||||
|
|
||||||
|
//! Returns the user specified color from color map with index (starts at 1).
|
||||||
|
//! Returns default color if index is out of range in color map.
|
||||||
|
Standard_EXPORT Quantity_Color GetIntervalColor(const Standard_Integer theIndex) const;
|
||||||
|
|
||||||
|
//! Sets the color of the specified interval.
|
||||||
|
//! Note that list is automatically resized to include specified index.
|
||||||
|
//! @param theColor color value to set
|
||||||
|
//! @param theIndex index in range [1, GetNumberOfIntervals()];
|
||||||
|
//! appended to the end of list if -1 is specified
|
||||||
|
Standard_EXPORT void SetIntervalColor(const Quantity_Color& theColor,
|
||||||
|
const Standard_Integer theIndex);
|
||||||
|
|
||||||
|
//! Returns the user specified labels.
|
||||||
|
Standard_EXPORT void GetLabels(TColStd_SequenceOfExtendedString& theLabels) const;
|
||||||
|
|
||||||
|
//! Returns the user specified labels.
|
||||||
|
const TColStd_SequenceOfExtendedString& Labels() const { return myLabels; }
|
||||||
|
|
||||||
|
//! Sets the color scale labels.
|
||||||
|
//! The length of the sequence should be equal to GetNumberOfIntervals() or to
|
||||||
|
//! GetNumberOfIntervals() + 1 if IsLabelAtBorder() is true. If length of the sequence does not
|
||||||
|
//! much the number of intervals, then these labels will be considered as "free" and will be
|
||||||
|
//! located at the virtual intervals corresponding to the number of labels (with flag
|
||||||
|
//! IsLabelAtBorder() having the same effect as in normal case).
|
||||||
|
Standard_EXPORT void SetLabels(const TColStd_SequenceOfExtendedString& theSeq);
|
||||||
|
|
||||||
|
//! Returns the user specified colors.
|
||||||
|
Standard_EXPORT void GetColors(Aspect_SequenceOfColor& theColors) const;
|
||||||
|
|
||||||
|
//! Returns the user specified colors.
|
||||||
|
const Aspect_SequenceOfColor& GetColors() const { return myColors; }
|
||||||
|
|
||||||
|
//! Sets the color scale colors.
|
||||||
|
//! The length of the sequence should be equal to GetNumberOfIntervals().
|
||||||
|
Standard_EXPORT void SetColors(const Aspect_SequenceOfColor& theSeq);
|
||||||
|
|
||||||
|
//! Populates colors scale by colors of the same lightness value in CIE Lch
|
||||||
|
//! color space, distributed by hue, with perceptually uniform differences
|
||||||
|
//! between consequent colors.
|
||||||
|
//! See MakeUniformColors() for description of parameters.
|
||||||
|
void SetUniformColors(Standard_Real theLightness,
|
||||||
|
Standard_Real theHueFrom,
|
||||||
|
Standard_Real theHueTo)
|
||||||
|
{
|
||||||
|
SetColors(MakeUniformColors(myNbIntervals, theLightness, theHueFrom, theHueTo));
|
||||||
|
SetColorType(Aspect_TOCSD_USER);
|
||||||
|
}
|
||||||
|
|
||||||
|
//! Generates sequence of colors of the same lightness value in CIE Lch
|
||||||
|
//! color space (see #Quantity_TOC_CIELch), with hue values in the specified range.
|
||||||
|
//! The colors are distributed across the range such as to have perceptually
|
||||||
|
//! same difference between neighbour colors.
|
||||||
|
//! For each color, maximal chroma value fitting in sRGB gamut is used.
|
||||||
|
//!
|
||||||
|
//! @param theNbColors - number of colors to generate
|
||||||
|
//! @param theLightness - lightness to be used (0 is black, 100 is white, 32 is
|
||||||
|
//! lightness of pure blue)
|
||||||
|
//! @param theHueFrom - hue value at the start of the scale
|
||||||
|
//! @param theHueTo - hue value defining the end of the scale
|
||||||
|
//!
|
||||||
|
//! Hue value can be out of the range [0, 360], interpreted as modulo 360.
|
||||||
|
//! The colors of the scale will be in the order of increasing hue if
|
||||||
|
//! theHueTo > theHueFrom, and decreasing otherwise.
|
||||||
|
Standard_EXPORT static Aspect_SequenceOfColor MakeUniformColors(Standard_Integer theNbColors,
|
||||||
|
Standard_Real theLightness,
|
||||||
|
Standard_Real theHueFrom,
|
||||||
|
Standard_Real theHueTo);
|
||||||
|
|
||||||
|
//! Returns the position of labels concerning color filled rectangles, Aspect_TOCSP_RIGHT by
|
||||||
|
//! default.
|
||||||
|
Aspect_TypeOfColorScalePosition GetLabelPosition() const { return myLabelPos; }
|
||||||
|
|
||||||
|
//! Sets the color scale labels position relative to color bar.
|
||||||
|
void SetLabelPosition(const Aspect_TypeOfColorScalePosition thePos) { myLabelPos = thePos; }
|
||||||
|
|
||||||
|
//! Returns the position of color scale title, Aspect_TOCSP_LEFT by default.
|
||||||
|
Aspect_TypeOfColorScalePosition GetTitlePosition() const { return myTitlePos; }
|
||||||
|
|
||||||
|
//! Sets the color scale title position.
|
||||||
|
Standard_DEPRECATED("AIS_ColorScale::SetTitlePosition() has no effect!")
|
||||||
|
|
||||||
|
void SetTitlePosition(const Aspect_TypeOfColorScalePosition thePos) { myTitlePos = thePos; }
|
||||||
|
|
||||||
|
//! Returns TRUE if the labels and colors used in reversed order, FALSE by default.
|
||||||
|
//! - Normal, bottom-up order with Minimal value on the Bottom and Maximum value on Top.
|
||||||
|
//! - Reversed, top-down order with Maximum value on the Bottom and Minimum value on Top.
|
||||||
|
Standard_Boolean IsReversed() const { return myIsReversed; }
|
||||||
|
|
||||||
|
//! Sets true if the labels and colors used in reversed order.
|
||||||
|
void SetReversed(const Standard_Boolean theReverse) { myIsReversed = theReverse; }
|
||||||
|
|
||||||
|
//! Return TRUE if color transition between neighbor intervals
|
||||||
|
//! should be linearly interpolated, FALSE by default.
|
||||||
|
Standard_Boolean IsSmoothTransition() const { return myIsSmooth; }
|
||||||
|
|
||||||
|
//! Setup smooth color transition.
|
||||||
|
void SetSmoothTransition(const Standard_Boolean theIsSmooth) { myIsSmooth = theIsSmooth; }
|
||||||
|
|
||||||
|
//! Returns TRUE if the labels are placed at border of color intervals, TRUE by default.
|
||||||
|
//! The automatically generated label will show value exactly on the current position:
|
||||||
|
//! - value connecting two neighbor intervals (TRUE)
|
||||||
|
//! - value in the middle of interval (FALSE)
|
||||||
|
Standard_Boolean IsLabelAtBorder() const { return myIsLabelAtBorder; }
|
||||||
|
|
||||||
|
//! Sets true if the labels are placed at border of color intervals (TRUE by default).
|
||||||
|
//! If set to False, labels will be drawn at color intervals rather than at borders.
|
||||||
|
void SetLabelAtBorder(const Standard_Boolean theOn) { myIsLabelAtBorder = theOn; }
|
||||||
|
|
||||||
|
//! Returns TRUE if the color scale has logarithmic intervals, FALSE by default.
|
||||||
|
Standard_Boolean IsLogarithmic() const { return myIsLogarithmic; }
|
||||||
|
|
||||||
|
//! Sets true if the color scale has logarithmic intervals.
|
||||||
|
void SetLogarithmic(const Standard_Boolean isLogarithmic) { myIsLogarithmic = isLogarithmic; }
|
||||||
|
|
||||||
|
//! Sets the color scale label at index.
|
||||||
|
//! Note that list is automatically resized to include specified index.
|
||||||
|
//! @param theLabel new label text
|
||||||
|
//! @param theIndex index in range [1, GetNumberOfIntervals()] or [1, GetNumberOfIntervals() + 1]
|
||||||
|
//! if IsLabelAtBorder() is true;
|
||||||
|
//! label is appended to the end of list if negative index is specified
|
||||||
|
Standard_EXPORT void SetLabel(const TCollection_ExtendedString& theLabel,
|
||||||
|
const Standard_Integer theIndex);
|
||||||
|
|
||||||
|
//! Returns the size of color bar, 0 and 0 by default
|
||||||
|
//! (e.g. should be set by user explicitly before displaying).
|
||||||
|
void GetSize(Standard_Integer& theBreadth, Standard_Integer& theHeight) const
|
||||||
|
{
|
||||||
|
theBreadth = myBreadth;
|
||||||
|
theHeight = myHeight;
|
||||||
|
}
|
||||||
|
|
||||||
|
//! Sets the size of color bar.
|
||||||
|
void SetSize(const Standard_Integer theBreadth, const Standard_Integer theHeight)
|
||||||
|
{
|
||||||
|
myBreadth = theBreadth;
|
||||||
|
myHeight = theHeight;
|
||||||
|
}
|
||||||
|
|
||||||
|
//! Returns the breadth of color bar, 0 by default
|
||||||
|
//! (e.g. should be set by user explicitly before displaying).
|
||||||
|
Standard_Integer GetBreadth() const { return myBreadth; }
|
||||||
|
|
||||||
|
//! Sets the width of color bar.
|
||||||
|
void SetBreadth(const Standard_Integer theBreadth) { myBreadth = theBreadth; }
|
||||||
|
|
||||||
|
//! Returns the height of color bar, 0 by default
|
||||||
|
//! (e.g. should be set by user explicitly before displaying).
|
||||||
|
Standard_Integer GetHeight() const { return myHeight; }
|
||||||
|
|
||||||
|
//! Sets the height of color bar.
|
||||||
|
void SetHeight(const Standard_Integer theHeight) { myHeight = theHeight; }
|
||||||
|
|
||||||
|
//! Returns the bottom-left position of color scale, 0x0 by default.
|
||||||
|
void GetPosition(Standard_Real& theX, Standard_Real& theY) const
|
||||||
|
{
|
||||||
|
theX = myXPos;
|
||||||
|
theY = myYPos;
|
||||||
|
}
|
||||||
|
|
||||||
|
//! Sets the position of color scale.
|
||||||
|
void SetPosition(const Standard_Integer theX, const Standard_Integer theY)
|
||||||
|
{
|
||||||
|
myXPos = theX;
|
||||||
|
myYPos = theY;
|
||||||
|
}
|
||||||
|
|
||||||
|
//! Returns the left position of color scale, 0 by default.
|
||||||
|
Standard_Integer GetXPosition() const { return myXPos; }
|
||||||
|
|
||||||
|
//! Sets the left position of color scale.
|
||||||
|
void SetXPosition(const Standard_Integer theX) { myXPos = theX; }
|
||||||
|
|
||||||
|
//! Returns the bottom position of color scale, 0 by default.
|
||||||
|
Standard_Integer GetYPosition() const { return myYPos; }
|
||||||
|
|
||||||
|
//! Sets the bottom position of color scale.
|
||||||
|
void SetYPosition(const Standard_Integer theY) { myYPos = theY; }
|
||||||
|
|
||||||
|
//! Returns the font height of text labels, 20 by default.
|
||||||
|
Standard_Integer GetTextHeight() const { return myTextHeight; }
|
||||||
|
|
||||||
|
//! Sets the height of text of color scale.
|
||||||
|
void SetTextHeight(const Standard_Integer theHeight) { myTextHeight = theHeight; }
|
||||||
|
|
||||||
|
public:
|
||||||
|
//! Returns the width of text.
|
||||||
|
//! @param[in] theText the text of which to calculate width.
|
||||||
|
Standard_EXPORT Standard_Integer TextWidth(const TCollection_ExtendedString& theText) const;
|
||||||
|
|
||||||
|
//! Returns the height of text.
|
||||||
|
//! @param[in] theText the text of which to calculate height.
|
||||||
|
Standard_EXPORT Standard_Integer TextHeight(const TCollection_ExtendedString& theText) const;
|
||||||
|
|
||||||
|
Standard_EXPORT void TextSize(const TCollection_ExtendedString& theText,
|
||||||
|
const Standard_Integer theHeight,
|
||||||
|
Standard_Integer& theWidth,
|
||||||
|
Standard_Integer& theAscent,
|
||||||
|
Standard_Integer& theDescent) const;
|
||||||
|
|
||||||
|
public:
|
||||||
|
//! Return true if specified display mode is supported.
|
||||||
|
virtual Standard_Boolean AcceptDisplayMode(const Standard_Integer theMode) const Standard_OVERRIDE
|
||||||
|
{
|
||||||
|
return theMode == 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
//! Compute presentation.
|
||||||
|
Standard_EXPORT virtual void Compute(const Handle(PrsMgr_PresentationManager)& thePrsMgr,
|
||||||
|
const Handle(Prs3d_Presentation)& thePresentation,
|
||||||
|
const Standard_Integer theMode) Standard_OVERRIDE;
|
||||||
|
|
||||||
|
//! Compute selection - not implemented for color scale.
|
||||||
|
virtual void ComputeSelection(const Handle(SelectMgr_Selection)& /*aSelection*/,
|
||||||
|
const Standard_Integer /*aMode*/) Standard_OVERRIDE
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
private:
|
||||||
|
//! Returns the size of color scale.
|
||||||
|
//! @param[out] theWidth the width of color scale.
|
||||||
|
//! @param[out] theHeight the height of color scale.
|
||||||
|
void SizeHint(Standard_Integer& theWidth, Standard_Integer& theHeight) const;
|
||||||
|
|
||||||
|
//! Returns the upper value of given interval, or minimum for theIndex = 0.
|
||||||
|
Standard_Real GetIntervalValue(const Standard_Integer theIndex) const;
|
||||||
|
|
||||||
|
//! Returns the color for the given value in the given interval.
|
||||||
|
//! @param[in] theValue the current value of interval
|
||||||
|
//! @param[in] theMin the min value of interval
|
||||||
|
//! @param[in] theMax the max value of interval
|
||||||
|
Quantity_Color colorFromValue(const Standard_Real theValue,
|
||||||
|
const Standard_Real theMin,
|
||||||
|
const Standard_Real theMax) const;
|
||||||
|
|
||||||
|
//! Initialize text aspect for drawing the labels.
|
||||||
|
void updateTextAspect();
|
||||||
|
|
||||||
|
//! Simple alias for Prs3d_Text::Draw().
|
||||||
|
//! @param[in] theGroup presentation group
|
||||||
|
//! @param[in] theText text to draw
|
||||||
|
//! @param[in] theX X coordinate of text position
|
||||||
|
//! @param[in] theY Y coordinate of text position
|
||||||
|
//! @param[in] theVertAlignment text vertical alignment
|
||||||
|
void drawText(const Handle(Graphic3d_Group)& theGroup,
|
||||||
|
const TCollection_ExtendedString& theText,
|
||||||
|
const Standard_Integer theX,
|
||||||
|
const Standard_Integer theY,
|
||||||
|
const Graphic3d_VerticalTextAlignment theVertAlignment);
|
||||||
|
|
||||||
|
//! Determine the maximum text label width in pixels.
|
||||||
|
Standard_Integer computeMaxLabelWidth(const TColStd_SequenceOfExtendedString& theLabels) const;
|
||||||
|
|
||||||
|
//! Draw labels.
|
||||||
|
void drawLabels(const Handle(Graphic3d_Group)& theGroup,
|
||||||
|
const TColStd_SequenceOfExtendedString& theLabels,
|
||||||
|
const Standard_Integer theBarBottom,
|
||||||
|
const Standard_Integer theBarHeight,
|
||||||
|
const Standard_Integer theMaxLabelWidth,
|
||||||
|
const Standard_Integer theColorBreadth);
|
||||||
|
|
||||||
|
//! Draw a color bar.
|
||||||
|
void drawColorBar(const Handle(Prs3d_Presentation)& thePrs,
|
||||||
|
const Standard_Integer theBarBottom,
|
||||||
|
const Standard_Integer theBarHeight,
|
||||||
|
const Standard_Integer theMaxLabelWidth,
|
||||||
|
const Standard_Integer theColorBreadth);
|
||||||
|
|
||||||
|
//! Draw a frame.
|
||||||
|
//! @param[in] theX the X coordinate of frame position.
|
||||||
|
//! @param[in] theY the Y coordinate of frame position.
|
||||||
|
//! @param[in] theWidth the width of frame.
|
||||||
|
//! @param[in] theHeight the height of frame.
|
||||||
|
//! @param[in] theColor the color of frame.
|
||||||
|
void drawFrame(const Handle(Prs3d_Presentation)& thePrs,
|
||||||
|
const Standard_Integer theX,
|
||||||
|
const Standard_Integer theY,
|
||||||
|
const Standard_Integer theWidth,
|
||||||
|
const Standard_Integer theHeight,
|
||||||
|
const Quantity_Color& theColor);
|
||||||
|
|
||||||
|
private:
|
||||||
|
Standard_Real myMin; //!< values range - minimal value
|
||||||
|
Standard_Real myMax; //!< values range - maximal value
|
||||||
|
// clang-format off
|
||||||
|
Graphic3d_Vec3d myColorHlsMin; //!< HLS color corresponding to minimum value
|
||||||
|
Graphic3d_Vec3d myColorHlsMax; //!< HLS color corresponding to maximum value
|
||||||
|
TCollection_ExtendedString myTitle; //!< optional title string
|
||||||
|
TCollection_AsciiString myFormat; //!< sprintf() format for generating label from value
|
||||||
|
Standard_Integer myNbIntervals; //!< number of intervals
|
||||||
|
Aspect_TypeOfColorScaleData myColorType; //!< color type
|
||||||
|
Aspect_TypeOfColorScaleData myLabelType; //!< label type
|
||||||
|
Standard_Boolean myIsLabelAtBorder; //!< at border
|
||||||
|
Standard_Boolean myIsReversed; //!< flag indicating reversed order
|
||||||
|
Standard_Boolean myIsLogarithmic; //!< flag indicating logarithmic scale
|
||||||
|
Standard_Boolean myIsSmooth; //!< flag indicating smooth transition between the colors
|
||||||
|
Aspect_SequenceOfColor myColors; //!< sequence of custom colors
|
||||||
|
TColStd_SequenceOfExtendedString myLabels; //!< sequence of custom text labels
|
||||||
|
Aspect_TypeOfColorScalePosition myLabelPos; //!< label position relative to the color scale
|
||||||
|
// clang-format on
|
||||||
|
Aspect_TypeOfColorScalePosition myTitlePos; //!< title position
|
||||||
|
Standard_Integer myXPos; //!< left position
|
||||||
|
Standard_Integer myYPos; //!< bottom position
|
||||||
|
Standard_Integer myBreadth; //!< color scale breadth
|
||||||
|
Standard_Integer myHeight; //!< height of the color scale
|
||||||
|
Standard_Integer mySpacing; //!< extra spacing between element
|
||||||
|
Standard_Integer myTextHeight; //!< label font height
|
||||||
|
};
|
||||||
|
|
||||||
|
#endif
|
||||||
74
entry/src/main/cpp/include/opencascade/AIS_ColoredDrawer.hxx
Normal file
74
entry/src/main/cpp/include/opencascade/AIS_ColoredDrawer.hxx
Normal file
@ -0,0 +1,74 @@
|
|||||||
|
// Copyright (c) 2016 OPEN CASCADE SAS
|
||||||
|
//
|
||||||
|
// This file is part of Open CASCADE Technology software library.
|
||||||
|
//
|
||||||
|
// This library is free software; you can redistribute it and/or modify it under
|
||||||
|
// the terms of the GNU Lesser General Public License version 2.1 as published
|
||||||
|
// by the Free Software Foundation, with special exception defined in the file
|
||||||
|
// OCCT_LGPL_EXCEPTION.txt. Consult the file LICENSE_LGPL_21.txt included in OCCT
|
||||||
|
// distribution for complete text of the license and disclaimer of any warranty.
|
||||||
|
//
|
||||||
|
// Alternatively, this file may be used under the terms of Open CASCADE
|
||||||
|
// commercial license or contractual agreement.
|
||||||
|
|
||||||
|
#ifndef _AIS_ColoredDrawer_HeaderFile
|
||||||
|
#define _AIS_ColoredDrawer_HeaderFile
|
||||||
|
|
||||||
|
#include "Prs3d_Drawer.hxx"
|
||||||
|
#include "Quantity_Color.hxx"
|
||||||
|
|
||||||
|
//! Customizable properties.
|
||||||
|
class AIS_ColoredDrawer : public Prs3d_Drawer
|
||||||
|
{
|
||||||
|
DEFINE_STANDARD_RTTIEXT(AIS_ColoredDrawer, Prs3d_Drawer)
|
||||||
|
public:
|
||||||
|
//! Default constructor.
|
||||||
|
AIS_ColoredDrawer(const Handle(Prs3d_Drawer)& theLink)
|
||||||
|
: myIsHidden(false),
|
||||||
|
myHasOwnMaterial(false),
|
||||||
|
myHasOwnColor(false),
|
||||||
|
myHasOwnTransp(false),
|
||||||
|
myHasOwnWidth(false)
|
||||||
|
{
|
||||||
|
Link(theLink);
|
||||||
|
}
|
||||||
|
|
||||||
|
bool IsHidden() const { return myIsHidden; }
|
||||||
|
|
||||||
|
void SetHidden(const bool theToHide) { myIsHidden = theToHide; }
|
||||||
|
|
||||||
|
bool HasOwnMaterial() const { return myHasOwnMaterial; }
|
||||||
|
|
||||||
|
void UnsetOwnMaterial() { myHasOwnMaterial = false; }
|
||||||
|
|
||||||
|
void SetOwnMaterial() { myHasOwnMaterial = true; }
|
||||||
|
|
||||||
|
bool HasOwnColor() const { return myHasOwnColor; }
|
||||||
|
|
||||||
|
void UnsetOwnColor() { myHasOwnColor = false; }
|
||||||
|
|
||||||
|
void SetOwnColor(const Quantity_Color& /*theColor*/) { myHasOwnColor = true; }
|
||||||
|
|
||||||
|
bool HasOwnTransparency() const { return myHasOwnTransp; }
|
||||||
|
|
||||||
|
void UnsetOwnTransparency() { myHasOwnTransp = false; }
|
||||||
|
|
||||||
|
void SetOwnTransparency(Standard_Real /*theTransp*/) { myHasOwnTransp = true; }
|
||||||
|
|
||||||
|
bool HasOwnWidth() const { return myHasOwnWidth; }
|
||||||
|
|
||||||
|
void UnsetOwnWidth() { myHasOwnWidth = false; }
|
||||||
|
|
||||||
|
void SetOwnWidth(const Standard_Real /*theWidth*/) { myHasOwnWidth = true; }
|
||||||
|
|
||||||
|
public: //! @name list of overridden properties
|
||||||
|
bool myIsHidden;
|
||||||
|
bool myHasOwnMaterial;
|
||||||
|
bool myHasOwnColor;
|
||||||
|
bool myHasOwnTransp;
|
||||||
|
bool myHasOwnWidth;
|
||||||
|
};
|
||||||
|
|
||||||
|
DEFINE_STANDARD_HANDLE(AIS_ColoredDrawer, Prs3d_Drawer)
|
||||||
|
|
||||||
|
#endif // _AIS_ColoredDrawer_HeaderFile
|
||||||
180
entry/src/main/cpp/include/opencascade/AIS_ColoredShape.hxx
Normal file
180
entry/src/main/cpp/include/opencascade/AIS_ColoredShape.hxx
Normal file
@ -0,0 +1,180 @@
|
|||||||
|
// Created on: 2014-04-24
|
||||||
|
// Created by: Kirill Gavrilov
|
||||||
|
// Copyright (c) 2014 OPEN CASCADE SAS
|
||||||
|
//
|
||||||
|
// This file is part of Open CASCADE Technology software library.
|
||||||
|
//
|
||||||
|
// This library is free software; you can redistribute it and/or modify it under
|
||||||
|
// the terms of the GNU Lesser General Public License version 2.1 as published
|
||||||
|
// by the Free Software Foundation, with special exception defined in the file
|
||||||
|
// OCCT_LGPL_EXCEPTION.txt. Consult the file LICENSE_LGPL_21.txt included in OCCT
|
||||||
|
// distribution for complete text of the license and disclaimer of any warranty.
|
||||||
|
//
|
||||||
|
// Alternatively, this file may be used under the terms of Open CASCADE
|
||||||
|
// commercial license or contractual agreement.
|
||||||
|
|
||||||
|
#ifndef _AIS_ColoredShape_HeaderFile
|
||||||
|
#define _AIS_ColoredShape_HeaderFile
|
||||||
|
|
||||||
|
#include "AIS_DataMapOfShapeDrawer.hxx"
|
||||||
|
#include "AIS_Shape.hxx"
|
||||||
|
#include "NCollection_IndexedDataMap.hxx"
|
||||||
|
#include "TopoDS_Compound.hxx"
|
||||||
|
#include "TopTools_MapOfShape.hxx"
|
||||||
|
|
||||||
|
class StdSelect_BRepOwner;
|
||||||
|
|
||||||
|
//! Presentation of the shape with customizable sub-shapes properties.
|
||||||
|
class AIS_ColoredShape : public AIS_Shape
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
//! Default constructor
|
||||||
|
Standard_EXPORT AIS_ColoredShape(const TopoDS_Shape& theShape);
|
||||||
|
|
||||||
|
//! Copy constructor
|
||||||
|
Standard_EXPORT AIS_ColoredShape(const Handle(AIS_Shape)& theShape);
|
||||||
|
|
||||||
|
public: //! @name sub-shape aspects
|
||||||
|
//! Customize properties of specified sub-shape.
|
||||||
|
//! The shape will be stored in the map but ignored, if it is not sub-shape of main Shape!
|
||||||
|
//! This method can be used to mark sub-shapes with customizable properties.
|
||||||
|
Standard_EXPORT virtual Handle(AIS_ColoredDrawer) CustomAspects(const TopoDS_Shape& theShape);
|
||||||
|
|
||||||
|
//! Reset the map of custom sub-shape aspects.
|
||||||
|
Standard_EXPORT virtual void ClearCustomAspects();
|
||||||
|
|
||||||
|
//! Reset custom properties of specified sub-shape.
|
||||||
|
//! @param theToUnregister unregister or not sub-shape from the map
|
||||||
|
Standard_EXPORT void UnsetCustomAspects(const TopoDS_Shape& theShape,
|
||||||
|
const Standard_Boolean theToUnregister = Standard_False);
|
||||||
|
|
||||||
|
//! Customize color of specified sub-shape
|
||||||
|
Standard_EXPORT void SetCustomColor(const TopoDS_Shape& theShape, const Quantity_Color& theColor);
|
||||||
|
|
||||||
|
//! Customize transparency of specified sub-shape
|
||||||
|
Standard_EXPORT void SetCustomTransparency(const TopoDS_Shape& theShape,
|
||||||
|
Standard_Real theTransparency);
|
||||||
|
|
||||||
|
//! Customize line width of specified sub-shape
|
||||||
|
Standard_EXPORT void SetCustomWidth(const TopoDS_Shape& theShape,
|
||||||
|
const Standard_Real theLineWidth);
|
||||||
|
|
||||||
|
//! Return the map of custom aspects.
|
||||||
|
const AIS_DataMapOfShapeDrawer& CustomAspectsMap() const { return myShapeColors; }
|
||||||
|
|
||||||
|
//! Return the map of custom aspects.
|
||||||
|
AIS_DataMapOfShapeDrawer& ChangeCustomAspectsMap() { return myShapeColors; }
|
||||||
|
|
||||||
|
public: //! @name global aspects
|
||||||
|
//! Setup color of entire shape.
|
||||||
|
Standard_EXPORT virtual void SetColor(const Quantity_Color& theColor) Standard_OVERRIDE;
|
||||||
|
|
||||||
|
//! Setup line width of entire shape.
|
||||||
|
Standard_EXPORT virtual void SetWidth(const Standard_Real theLineWidth) Standard_OVERRIDE;
|
||||||
|
|
||||||
|
//! Sets transparency value.
|
||||||
|
Standard_EXPORT virtual void SetTransparency(const Standard_Real theValue) Standard_OVERRIDE;
|
||||||
|
|
||||||
|
//! Sets the material aspect.
|
||||||
|
Standard_EXPORT virtual void SetMaterial(const Graphic3d_MaterialAspect& theAspect)
|
||||||
|
Standard_OVERRIDE;
|
||||||
|
|
||||||
|
public:
|
||||||
|
//! Removes the setting for transparency in the reconstructed compound shape.
|
||||||
|
Standard_EXPORT virtual void UnsetTransparency() Standard_OVERRIDE;
|
||||||
|
|
||||||
|
//! Setup line width of entire shape.
|
||||||
|
Standard_EXPORT virtual void UnsetWidth() Standard_OVERRIDE;
|
||||||
|
|
||||||
|
protected: //! @name override presentation computation
|
||||||
|
//! Compute presentation considering sub-shape color map.
|
||||||
|
Standard_EXPORT virtual void Compute(const Handle(PrsMgr_PresentationManager)& thePrsMgr,
|
||||||
|
const Handle(Prs3d_Presentation)& thePrs,
|
||||||
|
const Standard_Integer theMode) Standard_OVERRIDE;
|
||||||
|
|
||||||
|
//! Compute selection considering sub-shape hidden state.
|
||||||
|
Standard_EXPORT virtual void ComputeSelection(const Handle(SelectMgr_Selection)& theSelection,
|
||||||
|
const Standard_Integer theMode) Standard_OVERRIDE;
|
||||||
|
|
||||||
|
protected:
|
||||||
|
typedef NCollection_IndexedDataMap<Handle(AIS_ColoredDrawer), TopoDS_Compound>
|
||||||
|
DataMapOfDrawerCompd;
|
||||||
|
|
||||||
|
protected:
|
||||||
|
//! Recursive function to map shapes.
|
||||||
|
//! @param theParentDrawer the drawer to be used for undetailed shapes (default colors)
|
||||||
|
//! @param theShapeToParse the subshape to be recursively parsed
|
||||||
|
//! @param theShapeDrawerMap shapes map Subshape (in the base shape) -> Drawer
|
||||||
|
//! @param theParentType the parent subshape type
|
||||||
|
//! @param theIsParentClosed flag indicating that specified shape is part of closed Solid
|
||||||
|
//! @param theDrawerOpenedShapePerType the array of shape types to fill
|
||||||
|
//! @param theDrawerClosedFaces the map for closed faces
|
||||||
|
Standard_EXPORT static Standard_Boolean dispatchColors(
|
||||||
|
const Handle(AIS_ColoredDrawer)& theParentDrawer,
|
||||||
|
const TopoDS_Shape& theShapeToParse,
|
||||||
|
const AIS_DataMapOfShapeDrawer& theShapeDrawerMap,
|
||||||
|
const TopAbs_ShapeEnum theParentType,
|
||||||
|
const Standard_Boolean theIsParentClosed,
|
||||||
|
DataMapOfDrawerCompd* theDrawerOpenedShapePerType,
|
||||||
|
DataMapOfDrawerCompd& theDrawerClosedFaces);
|
||||||
|
|
||||||
|
protected:
|
||||||
|
//! Extract myShapeColors map (KeyshapeColored -> Color) to subshapes map (Subshape -> Color).
|
||||||
|
//! This needed when colored shape is not part of BaseShape (but subshapes are) and actually
|
||||||
|
//! container for subshapes.
|
||||||
|
Standard_EXPORT void fillSubshapeDrawerMap(AIS_DataMapOfShapeDrawer& theSubshapeDrawerMap) const;
|
||||||
|
|
||||||
|
//! Add shape to presentation
|
||||||
|
//! @param thePrs the presentation
|
||||||
|
//! @param theDrawerOpenedShapePerType the shapes map with unique attributes
|
||||||
|
//! @param theDrawerClosedFaces the map of attributes for closed faces
|
||||||
|
//! @param theMode display mode
|
||||||
|
Standard_EXPORT void addShapesWithCustomProps(
|
||||||
|
const Handle(Prs3d_Presentation)& thePrs,
|
||||||
|
const DataMapOfDrawerCompd* theDrawerOpenedShapePerType,
|
||||||
|
const DataMapOfDrawerCompd& theDrawerClosedFaces,
|
||||||
|
const Standard_Integer theMode);
|
||||||
|
|
||||||
|
//! Check all shapes from myShapeColorsfor visibility
|
||||||
|
Standard_EXPORT Standard_Boolean isShapeEntirelyVisible() const;
|
||||||
|
|
||||||
|
//! Resolve (parse) theKeyShape into subshapes, search in they for theBaseShape,
|
||||||
|
//! bind all resolved subshapes with theOriginKeyShape and store all binds in theShapeDrawerMap
|
||||||
|
//! @param theShapeDrawerMap shapes map: resolved and found theBaseShape subshape ->
|
||||||
|
//! theOriginKeyShape
|
||||||
|
//! @param theKeyShape a shape to be resolved (parse) into smaller (in topological sense)
|
||||||
|
//! subshapes for new bind cycle
|
||||||
|
//! @param theDrawer assigned drawer
|
||||||
|
Standard_EXPORT void bindSubShapes(AIS_DataMapOfShapeDrawer& theShapeDrawerMap,
|
||||||
|
const TopoDS_Shape& theKeyShape,
|
||||||
|
const Handle(AIS_ColoredDrawer)& theDrawer) const;
|
||||||
|
|
||||||
|
//! Add sub-shape to selection considering hidden state (recursively).
|
||||||
|
//! @param theParentDrawer drawer of parent shape
|
||||||
|
//! @param theShapeDrawerMap shapes map
|
||||||
|
//! @param theShape shape to compute sensitive entities
|
||||||
|
//! @param theOwner selectable owner object
|
||||||
|
//! @param theSelection selection to append new sensitive entities
|
||||||
|
//! @param theTypOfSel type of selection
|
||||||
|
//! @param theDeflection linear deflection
|
||||||
|
//! @param theDeflAngle angular deflection
|
||||||
|
Standard_EXPORT void computeSubshapeSelection(const Handle(AIS_ColoredDrawer)& theParentDrawer,
|
||||||
|
const AIS_DataMapOfShapeDrawer& theShapeDrawerMap,
|
||||||
|
const TopoDS_Shape& theShape,
|
||||||
|
const Handle(StdSelect_BRepOwner)& theOwner,
|
||||||
|
const Handle(SelectMgr_Selection)& theSelection,
|
||||||
|
const TopAbs_ShapeEnum theTypOfSel,
|
||||||
|
const Standard_Integer thePriority,
|
||||||
|
const Standard_Real theDeflection,
|
||||||
|
const Standard_Real theDeflAngle);
|
||||||
|
|
||||||
|
protected:
|
||||||
|
AIS_DataMapOfShapeDrawer myShapeColors;
|
||||||
|
|
||||||
|
public:
|
||||||
|
DEFINE_STANDARD_RTTIEXT(AIS_ColoredShape, AIS_Shape)
|
||||||
|
};
|
||||||
|
|
||||||
|
DEFINE_STANDARD_HANDLE(AIS_ColoredShape, AIS_Shape)
|
||||||
|
|
||||||
|
#endif // _AIS_ColoredShape_HeaderFile
|
||||||
@ -0,0 +1,22 @@
|
|||||||
|
// Copyright (c) 2020 OPEN CASCADE SAS
|
||||||
|
//
|
||||||
|
// This file is part of Open CASCADE Technology software library.
|
||||||
|
//
|
||||||
|
// This library is free software; you can redistribute it and/or modify it under
|
||||||
|
// the terms of the GNU Lesser General Public License version 2.1 as published
|
||||||
|
// by the Free Software Foundation, with special exception defined in the file
|
||||||
|
// OCCT_LGPL_EXCEPTION.txt. Consult the file LICENSE_LGPL_21.txt included in OCCT
|
||||||
|
// distribution for complete text of the license and disclaimer of any warranty.
|
||||||
|
//
|
||||||
|
// Alternatively, this file may be used under the terms of Open CASCADE
|
||||||
|
// commercial license or contractual agreement.
|
||||||
|
|
||||||
|
#ifndef _AIS_ConcentricRelation_HeaderFile
|
||||||
|
#define _AIS_ConcentricRelation_HeaderFile
|
||||||
|
|
||||||
|
#include "PrsDim_ConcentricRelation.hxx"
|
||||||
|
|
||||||
|
Standard_DEPRECATED("Alias to moved class")
|
||||||
|
typedef PrsDim_ConcentricRelation AIS_ConcentricRelation;
|
||||||
|
|
||||||
|
#endif // _AIS_ConcentricRelation_HeaderFile
|
||||||
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue
Block a user