init aicam

This commit is contained in:
JackLee_CN 2025-10-19 17:04:58 +08:00
parent a3907069fb
commit af8e663a20
91 changed files with 17554 additions and 1 deletions

82
CMakeLists.txt Normal file
View File

@ -0,0 +1,82 @@
#cmake
cmake_minimum_required(VERSION 3.19)
SET(VCPKG_ROOT ${PROJECT_SOURCE_DIR}/vcpkg)
SET(VCPKG_TARGET_TRIPLET "x64-mingw-static")
SET(CMAKE_C_COMPILER "x86_64-w64-mingw32-gcc.exe")
SET(CMAKE_CXX_COMPILER "x86_64-w64-mingw32-g++.exe")
#
project(aicam VERSION 1.0.0 LANGUAGES CXX)
#C++
SET(CMAKE_CXX_STANDARD 17)
#.h
SET(CMAKE_INCLUDE_CURRENT_DIR ON)
#release
ADD_DEFINITIONS(-DQT_MESSAGELOGCONTEXT)
# debugrelease
SET(CMAKE_VERBOSE_MAKEFILE ON)
SET(CMAKE_CXX_FLAGS"-Wall -Wextra")
SET(CMAKE_CXX_FLAGS_RELEASE"-O3 -s")
SET(CMAKE_BUILD_TYPE "Release")
#QT
#moc ui rcc
SET(CMAKE_AUTOMOC ON)
SET(CMAKE_AUTOUIC ON)
SET(CMAKE_AUTORCC ON)
SET(QT_STATU "static")
if(QT_STATU STREQUAL "dynamic")
SET(Qt6_DIR "D:/Dev/Qt/6.9.1/mingw_64/lib/cmake")
else()
SET(Qt6_DIR "D:/Dev/Qt/6.9.1/mingw1310_static_x64/lib/cmake")
endif()
#
MESSAGE(STATUS "----------基础路径输出 START-------------")
MESSAGE(STATUS "QT_DIR_PATH=${Qt6_DIR}")
MESSAGE(STATUS "MSYS2_DIR_PATH=${MSYS_DIR}")
MESSAGE(STATUS "JSON_DIR_PATH=${JSON}")
MESSAGE(STATUS "CMAKE_PREFIX_PATH=${CMAKE_PREFIX_PATH}")
MESSAGE(STATUS "----------基础路径输出 END---------------")
MESSAGE(STATUS ${PROJECT_BINARY_DIR})
MESSAGE(STATUS "----------编译模式 START-------------")
if(NOT CMAKE_BUILD_TYPE)
MESSAGE(STATUS "[CMAKE_BUILD_TYPE]当前值[Debug]")
SET(CMAKE_BUILD_TYPE "Debug")
SET(CMAKE_RUNTIME_OUTPUT_DIRECTORY_DEBUG ${PROJECT_SOURCE_DIR}/build/debug)
else()
MESSAGE(STATUS "[CMAKE_BUILD_TYPE]当前值[Release]")
SET(CMAKE_BUILD_TYPE "Release")
SET(CMAKE_RUNTIME_OUTPUT_DIRECTORY_RELEASE ${PROJECT_SOURCE_DIR}/release/)
endif()
MESSAGE(STATUS "----------编译模式 END---------------")
#suicpp
FILE(GLOB src_aicam "${PROJECT_SOURCE_DIR}/src/*.cpp" "${PROJECT_SOURCE_DIR}/src/*.h")
SET(PROJECT_SOURCES ${src_aicam})
QT6_ADD_RESOURCES(RCFILES aicam.qrc)
find_package(OpenCASCADE CONFIG REQUIRED)
#WIN32
add_executable(${PROJECT_NAME} ${PROJECT_SOURCES} ${RCFILES} aicam.rc)
#
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -static-libstdc++ -static-libgcc")
set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -static-libstdc++ -static-libgcc -static")
# C C
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -static-libgcc")
target_link_libraries(
${PROJECT_NAME} PRIVATE Qt6::Core Qt6::Gui Qt6::Widgets TKBO TKDE TKBin TKCAF
-lws2_32
-lzstd
-lb2
)

32
CMakePresets.json Normal file
View File

@ -0,0 +1,32 @@
{
"version": 8,
"configurePresets": [
{
"name": "msys2-ucrt-mingw64",
"displayName": "GCC 14.2.0 x86_64-w64-mingw32 (ucrt64)",
"description": "正在使用编译器: C = D:\\Dev\\msys64\\ucrt64\\bin\\gcc.exe, CXX = D:\\Dev\\msys64\\ucrt64\\bin\\g++.exe",
"generator": "MinGW Makefiles",
"binaryDir": "${sourceDir}/build/${presetName}",
"cacheVariables": {
"CMAKE_INSTALL_PREFIX": "${sourceDir}/out/install/${presetName}",
"CMAKE_C_COMPILER": "D:/Dev/msys64/ucrt64/bin/gcc.exe",
"CMAKE_CXX_COMPILER": "D:/Dev/msys64/ucrt64/bin/g++.exe",
"CMAKE_BUILD_TYPE": "Release"
}
},
{
"name": "vcpkg-mingw-x64",
"generator": "Ninja",
"binaryDir": "${sourceDir}/build",
"cacheVariables": {
"CMAKE_BUILD_TYPE":"Release",
"CMAKE_MAKE_PROGRAM": "ninja.exe",
"CMAKE_C_COMPILER": "x86_64-w64-mingw32-gcc.exe",
"CMAKE_CXX_COMPILER": "x86_64-w64-mingw32-g++.exe",
"VCPKG_TARGET_TRIPLET":"x64-mingw-static",
"VCPKG_HOST_TRIPLET":"x64-mingw-static",
"CMAKE_TOOLCHAIN_FILE": "${sourceDir}/vcpkg/scripts/buildsystems/vcpkg.cmake"
}
}
]
}

View File

@ -1 +1 @@
AICAM
##AICam

48
aicam.qrc Normal file
View File

@ -0,0 +1,48 @@
<RCC>
<qresource prefix="/res/icons">
<file>res/icons/3dModel.png</file>
<file>res/icons/add.png</file>
<file>res/icons/axis.png</file>
<file>res/icons/colors.svg</file>
<file>res/icons/cursor_rotate.png</file>
<file>res/icons/cursor_zoom.png</file>
<file>res/icons/datumPln.png</file>
<file>res/icons/delete.svg</file>
<file>res/icons/DrawStyleFlatLines.svg</file>
<file>res/icons/DrawStyleShaded.svg</file>
<file>res/icons/DrawStyleWireFrame.svg</file>
<file>res/icons/edge-selection.svg</file>
<file>res/icons/edit_OK.svg</file>
<file>res/icons/edit-delete.svg</file>
<file>res/icons/face-selection.svg</file>
<file>res/icons/help.png</file>
<file>res/icons/hide.png</file>
<file>res/icons/hideAll.png</file>
<file>res/icons/license.png</file>
<file>res/icons/linear.png</file>
<file>res/icons/Material.svg</file>
<file>res/icons/new_file.png</file>
<file>res/icons/point.png</file>
<file>res/icons/print.png</file>
<file>res/icons/quit.png</file>
<file>res/icons/run.png</file>
<file>res/icons/saveAs.png</file>
<file>res/icons/sel-bbox.svg</file>
<file>res/icons/set.png</file>
<file>res/icons/show.png</file>
<file>res/icons/showAll.png</file>
<file>res/icons/triangle.png</file>
<file>res/icons/utilities-terminal.svg</file>
<file>res/icons/vertex-selection.svg</file>
<file>res/icons/view-axonometric.svg</file>
<file>res/icons/view-bottom.svg</file>
<file>res/icons/view-front.svg</file>
<file>res/icons/view-fullscreen.svg</file>
<file>res/icons/view-left.svg</file>
<file>res/icons/view-rear.svg</file>
<file>res/icons/view-right.svg</file>
<file>res/icons/view-select.svg</file>
<file>res/icons/view-top.svg</file>
<file>res/icons/perspective.png</file>
</qresource>
</RCC>

1
aicam.rc Normal file
View File

@ -0,0 +1 @@
IDI_ICON1 ICON DISCARDABLE "res\\img\\aicam.ico"

BIN
release/aicam.exe Normal file

Binary file not shown.

3553
release/ef.igs Normal file

File diff suppressed because it is too large Load Diff

154
release/ef.log Normal file
View File

@ -0,0 +1,154 @@
UG to STEP
! INFO- NX STEP AP214 - V2506.5001
! INFO-
! INFO- Start of Translation: 7-OCT-2025 7:45:57 PM
! INFO-
! STATUS- Converting Part: F:\NXUG\NX2506\耳阀.prt
! SUMMARY-
! SUMMARY- Summary of Unigraphics Part Entities
! SUMMARY- For Part: F:\NXUG\NX2506\耳阀.prt
! SUMMARY- Entities Processed Count
! SUMMARY- ------------------ -----
! SUMMARY- Part Attribute ..............: 1
! SUMMARY- Font ........................: 1
! SUMMARY- Color Table .................: 2
! SUMMARY- Coordinate System ...........: 2
! SUMMARY- Parameter ...................: 1
! SUMMARY- Matrix ......................: 1
! SUMMARY- Solid/Sheet .................:
! SUMMARY- Body .....................: 1
! SUMMARY- -----
! SUMMARY- Total 9
! STATUS-
! STATUS- Converting to Output Form (Phase 2 of 3): 7-OCT-2025 7:45:58 PM
! STATUS-
! STATUS-
! STATUS- Generating UG geometry and placing them in parts
! STATUS-
! SUMMARY-
! SUMMARY- STEP Header Information
! SUMMARY-
! SUMMARY- Description Unknown
! SUMMARY- Imp_Level 1
! SUMMARY- File_Name ef.stp
! SUMMARY- Date 2025-10-07T19:45:58+08:00
! SUMMARY- Author Unknown
! SUMMARY- Organization Unknown
! SUMMARY- Pre_Version ST-DEVELOPER v20
! SUMMARY- Orig_System SIEMENS PLM Software NX2506.5001
! SUMMARY- Authorization Unknown
! SUMMARY- Schema_ID step_merged_ap_schema
! SUMMARY-
! SUMMARY- Summary of STEP Entities
! SUMMARY-
! SUMMARY- Entity Type Count
! SUMMARY- ----------- ------
! SUMMARY- advanced_face ..............................................: 31
! SUMMARY- application_context ........................................: 1
! SUMMARY- axis2_placement_3d .........................................: 67
! SUMMARY- b_spline_curve_with_knots ..................................: 3
! SUMMARY- b_spline_surface_with_knots_and_rational_b_spline_surface ..: 1
! SUMMARY- cartesian_point ............................................: 376
! SUMMARY- circle .....................................................: 36
! SUMMARY- closed_shell ...............................................: 1
! SUMMARY- conical_surface ............................................: 2
! SUMMARY- conversion_based_unit_and_plane_angle_unit .................: 1
! SUMMARY- cylindrical_surface ........................................: 16
! SUMMARY- dimensional_exponents ......................................: 1
! SUMMARY- direction ..................................................: 150
! SUMMARY- edge_curve .................................................: 55
! SUMMARY- edge_loop ..................................................: 72
! SUMMARY- face_bound .................................................: 66
! SUMMARY- face_outer_bound ...........................................: 6
! SUMMARY- geometric_representation_context_and_global_uncertainty_a ..: 1
! SUMMARY- length_unit_and_si_unit ....................................: 1
! SUMMARY- line .......................................................: 16
! SUMMARY- manifold_solid_brep ........................................: 1
! SUMMARY- oriented_edge ..............................................: 110
! SUMMARY- plane ......................................................: 12
! SUMMARY- plane_angle_measure_with_unit ..............................: 1
! SUMMARY- plane_angle_unit_and_si_unit ...............................: 1
! SUMMARY- product ....................................................: 1
! SUMMARY- product_context ............................................: 1
! SUMMARY- product_definition .........................................: 1
! SUMMARY- product_definition_context .................................: 1
! SUMMARY- product_definition_formation_with_specified_source .........: 1
! SUMMARY- product_definition_shape ...................................: 1
! SUMMARY- product_related_product_category ...........................: 1
! SUMMARY- si_unit_and_solid_angle_unit ...............................: 1
! SUMMARY- uncertainty_measure_with_unit ..............................: 1
! SUMMARY- vector .....................................................: 16
! SUMMARY- vertex_point ...............................................: 47
! SUMMARY- -------
! SUMMARY- Total 1100
! INFO- Bspline aprx. value in effect for this translation :0.025400 millimeter
! INFO-
! INFO- Total number of solids input for this translation : 1
! INFO-
! INFO- Number of solids processed without problems : 1
! INFO-
! INFO- Number of solids with problems output as sheets : 0
! INFO-
! INFO- Number of solids not processed : 0
! INFO-
! INFO- End of Translation: 7-OCT-2025 7:45:58 PM
! INFO-
UG to IGES
! INFO- NX V2506.5001 / IGES Specification 5.3
! INFO-
! INFO- Start of Translation: 7-OCT-2025 7:46:20 PM
! INFO-
! STATUS- Converting Part: F:\NXUG\NX2506\耳阀.prt
! SUMMARY-
! SUMMARY- Summary of Unigraphics Input Entities
! SUMMARY- For Part: F:\NXUG\NX2506\耳阀.prt
! SUMMARY- Entities Processed Count
! SUMMARY- ------------------ -----
! SUMMARY- Point .......................: 1
! SUMMARY- Line ........................: 90
! SUMMARY- Arc/Circle ..................: 89
! SUMMARY- B-Curve .....................: 166
! SUMMARY- Part Attribute ..............: 1
! SUMMARY- Layer Category ..............: 6
! SUMMARY- Font ........................: 1
! SUMMARY- Color Table .................: 2
! SUMMARY- Coordinate System ...........: 2
! SUMMARY- Parameter ...................: 2
! SUMMARY- Matrix ......................: 24
! SUMMARY- View ........................: 8
! SUMMARY- Layout ......................: 5
! SUMMARY- Solid/Sheet .................:
! SUMMARY- Face .....................: 31
! SUMMARY- Trim Curve ..................: 55
! SUMMARY- -----
! SUMMARY- Total 483
! STATUS-
! STATUS- Converting to Output Form (Phase 2 of 3): 7-OCT-2025 7:46:21 PM
! STATUS-
! STATUS- Creating the IGES file (Phase 3 of 3): 7-OCT-2025 7:46:21 PM
! SUMMARY-
! SUMMARY- Summary of IGES Output Entities
! SUMMARY-
! SUMMARY- Entities Processed Count
! SUMMARY- ------------------ -----
! SUMMARY- Point ........................ 1
! SUMMARY- Arc .......................... 89
! SUMMARY- Line ......................... 90
! SUMMARY- BSpline Curve ................ 166
! SUMMARY- Composite Curve .............. 52
! SUMMARY- Curve on Surface ............. 55
! SUMMARY- Plane ........................
! SUMMARY- Unbounded ................ 32
! SUMMARY- Trimmed Surface .............. 31
! SUMMARY- BSpline Surface .............. 31
! SUMMARY- Color ........................ 3
! SUMMARY- Name ......................... 37
! SUMMARY- Transformation ............... 24
! SUMMARY- Definition Levels ............ 5
! SUMMARY- Level Function ............... 5
! SUMMARY- View ......................... 8
! SUMMARY- -----
! SUMMARY- Total 629
! INFO-
! INFO- End of Translation: 7-OCT-2025 7:46:21 PM
! INFO-

BIN
release/ef.stl Normal file

Binary file not shown.

1228
release/ef.stp Normal file

File diff suppressed because it is too large Load Diff

0
release/lang/zh_cn.json Normal file
View File

8
release/save/sui.json Normal file
View File

@ -0,0 +1,8 @@
{
"sui": {
"font": 1,
"font_bold": 0,
"style": 0,
"style_system": 0
}
}

BIN
res/bin/luapacka.exe Normal file

Binary file not shown.

BIN
res/icons/3dModel.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.6 KiB

View File

@ -0,0 +1,181 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:xlink="http://www.w3.org/1999/xlink"
version="1.1"
id="svg6248"
height="64px"
width="64px">
<defs
id="defs6250">
<linearGradient
id="linearGradient915">
<stop
id="stop913"
offset="0"
style="stop-color:#042a2a;stop-opacity:1" />
<stop
id="stop911"
offset="1"
style="stop-color:#34e0e2;stop-opacity:1" />
</linearGradient>
<linearGradient
id="linearGradient907">
<stop
id="stop905"
offset="0"
style="stop-color:#042a2a;stop-opacity:1" />
<stop
id="stop903"
offset="1"
style="stop-color:#34e0e2;stop-opacity:1" />
</linearGradient>
<linearGradient
id="linearGradient899">
<stop
id="stop897"
offset="0"
style="stop-color:#042a2a;stop-opacity:1" />
<stop
id="stop895"
offset="1"
style="stop-color:#34e0e2;stop-opacity:1" />
</linearGradient>
<linearGradient
id="linearGradient3253">
<stop
id="stop3255"
offset="0"
style="stop-color:#89d5f8;stop-opacity:1;" />
<stop
id="stop3257"
offset="1"
style="stop-color:#00899e;stop-opacity:1;" />
</linearGradient>
<linearGradient
id="linearGradient6816">
<stop
id="stop6818"
offset="0"
style="stop-color:#000000;stop-opacity:1;" />
<stop
id="stop6820"
offset="1"
style="stop-color:#000000;stop-opacity:0;" />
</linearGradient>
<linearGradient
id="linearGradient6781">
<stop
id="stop6783"
offset="0"
style="stop-color:#ffffff;stop-opacity:1;" />
<stop
id="stop6785"
offset="1"
style="stop-color:#3465a4;stop-opacity:0;" />
</linearGradient>
<radialGradient
gradientUnits="userSpaceOnUse"
gradientTransform="matrix(1.1581633,0,0,0.6558985,-7.29237,16.126077)"
r="25.198714"
fy="51.929391"
fx="33.369828"
cy="51.929391"
cx="33.369828"
id="radialGradient6822"
xlink:href="#linearGradient6816" />
<radialGradient
gradientUnits="userSpaceOnUse"
gradientTransform="matrix(0.9724373,-0.105657,5.0523169e-2,0.4650009,-0.3519546,9.5854384)"
r="27.986705"
fy="17.013988"
fx="18.417862"
cy="17.013988"
cx="18.417862"
id="radialGradient3259"
xlink:href="#linearGradient3253" />
<radialGradient
r="27.986705"
fy="17.013988"
fx="18.417862"
cy="17.013988"
cx="18.417862"
gradientTransform="matrix(0.9724373,-0.105657,0.05052317,0.4650009,-0.3519546,9.5854384)"
gradientUnits="userSpaceOnUse"
id="radialGradient3270"
xlink:href="#linearGradient3253" />
<linearGradient
gradientUnits="userSpaceOnUse"
y2="14.668943"
x2="31.705853"
y1="45.151108"
x1="55.247467"
id="linearGradient865"
xlink:href="#linearGradient899" />
<linearGradient
gradientUnits="userSpaceOnUse"
y2="14.668943"
x2="31.705853"
y1="45.151108"
x1="55.247467"
id="linearGradient873"
xlink:href="#linearGradient907" />
<linearGradient
gradientUnits="userSpaceOnUse"
y2="14.668943"
x2="31.705853"
y1="45.151108"
x1="55.247467"
id="linearGradient881"
xlink:href="#linearGradient915" />
</defs>
<metadata
id="metadata6253">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
<dc:title></dc:title>
</cc:Work>
</rdf:RDF>
</metadata>
<g
id="layer1">
<g
transform="matrix(-1,0,0,0.99363058,4,0.0382165)"
id="g3913-7" />
<g
transform="translate(60,0)"
id="g3913" />
<path
id="path3003"
d="M 32,59 5,47.307692 5,16.692308 32,28.384615 z"
style="fill:url(#linearGradient881);stroke:#042a2a;stroke-width:6;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;fill-opacity:1" />
<path
id="path3003-5"
d="M 32,59 59,47.307692 59,16.692308 32,28.384615 z"
style="fill:url(#linearGradient865);stroke:#042a2a;stroke-width:6;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;fill-opacity:1" />
<path
id="path3003-2-2"
d="M 59,16.692308 32,28.384615 5,16.692308 32,5 z"
style="fill:url(#linearGradient873);stroke:#042a2a;stroke-width:6;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;fill-opacity:1" />
<path
id="path3003-3"
d="M 32,59 5,47.307692 5,16.692308 32,28.384615 z"
style="fill:none;stroke:#16d0d2;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
<path
id="path3003-5-6"
d="M 32,59 59,47.307692 59,16.692308 32,28.384615 z"
style="fill:none;stroke:#16d0d2;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
<path
id="path3003-2"
d="M 59,16.692308 32,28.384615 5,16.692308 32,5 z"
style="fill:none;stroke:#34e0e2;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
</g>
</svg>

After

Width:  |  Height:  |  Size: 5.8 KiB

View File

@ -0,0 +1,138 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:xlink="http://www.w3.org/1999/xlink"
version="1.1"
id="svg6248"
height="64px"
width="64px">
<defs
id="defs6250">
<linearGradient
id="linearGradient3253">
<stop
id="stop3255"
offset="0"
style="stop-color:#89d5f8;stop-opacity:1;" />
<stop
id="stop3257"
offset="1"
style="stop-color:#00899e;stop-opacity:1;" />
</linearGradient>
<linearGradient
id="linearGradient6816">
<stop
id="stop6818"
offset="0"
style="stop-color:#000000;stop-opacity:1;" />
<stop
id="stop6820"
offset="1"
style="stop-color:#000000;stop-opacity:0;" />
</linearGradient>
<linearGradient
id="linearGradient6781">
<stop
id="stop6783"
offset="0"
style="stop-color:#ffffff;stop-opacity:1;" />
<stop
id="stop6785"
offset="1"
style="stop-color:#3465a4;stop-opacity:0;" />
</linearGradient>
<radialGradient
gradientUnits="userSpaceOnUse"
gradientTransform="matrix(1.1581633,0,0,0.6558985,-7.29237,16.126077)"
r="25.198714"
fy="51.929391"
fx="33.369828"
cy="51.929391"
cx="33.369828"
id="radialGradient6822"
xlink:href="#linearGradient6816" />
<radialGradient
gradientUnits="userSpaceOnUse"
gradientTransform="matrix(0.9724373,-0.105657,5.0523169e-2,0.4650009,-0.3519546,9.5854384)"
r="27.986705"
fy="17.013988"
fx="18.417862"
cy="17.013988"
cx="18.417862"
id="radialGradient3259"
xlink:href="#linearGradient3253" />
<radialGradient
r="27.986705"
fy="17.013988"
fx="18.417862"
cy="17.013988"
cx="18.417862"
gradientTransform="matrix(0.9724373,-0.105657,0.05052317,0.4650009,-0.3519546,9.5854384)"
gradientUnits="userSpaceOnUse"
id="radialGradient3270"
xlink:href="#linearGradient3253" />
</defs>
<metadata
id="metadata6253">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
<dc:title></dc:title>
</cc:Work>
</rdf:RDF>
</metadata>
<g
id="layer1">
<path
id="path3003-2-2-1"
d="M 59,45.307693 32,59 5,45.307693 32,29.615385 z"
style="fill:none;stroke:#042a2a;stroke-width:6;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
<g
transform="translate(60,0)"
id="g3913">
<path
style="fill:none;stroke:#042a2a;stroke-width:6;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:6"
d="M -55,45.307692 -28,29.615385 -28,5 -55,16.692308 z"
id="path3003-5-3" />
<path
style="fill:none;stroke:#16d0d2;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:6"
d="M -55,45.307692 -28,29.615385 -28,5 -55,16.692308 z"
id="path3003-5-3-1" />
</g>
<path
id="path3003-2-2-0-2"
d="M 59,45.307693 32,59 5,45.307693 32,29.615385 z"
style="fill:none;stroke:#34e0e2;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
<path
id="path3003"
d="M 32,59 5,45.307692 5,16.692308 32,30.384615 z"
style="fill:none;stroke:#042a2a;stroke-width:6;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
<path
id="path3003-5"
d="M 32,59 59,45.307692 59,16.692308 32,30.384615 z"
style="fill:none;stroke:#042a2a;stroke-width:6;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
<path
id="path3003-2-2"
d="M 59,16.692308 32,30.384615 5,16.692308 32,5 z"
style="fill:none;stroke:#042a2a;stroke-width:6;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
<path
id="path3003-5-6"
d="M 32,59 59,45.307692 59,16.692308 32,28.384615 z"
style="fill:#06989a;stroke:#16d0d2;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;fill-opacity:1" />
<path
id="path3003-3"
d="M 32,59 5,45.307692 5,16.692308 32,28.384615 z"
style="fill:#16d0d2;stroke:#34e0e2;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;fill-opacity:1" />
<path
id="path3003-2-2-0"
d="M 59,16.692308 32,28.384615 5,16.692308 32,5 z"
style="fill:#34e0e2;stroke:#34e0e2;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
</g>
</svg>

After

Width:  |  Height:  |  Size: 5.2 KiB

View File

@ -0,0 +1,142 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:xlink="http://www.w3.org/1999/xlink"
version="1.1"
id="svg6248"
height="64px"
width="64px">
<defs
id="defs6250">
<linearGradient
id="linearGradient3253">
<stop
id="stop3255"
offset="0"
style="stop-color:#89d5f8;stop-opacity:1;" />
<stop
id="stop3257"
offset="1"
style="stop-color:#00899e;stop-opacity:1;" />
</linearGradient>
<linearGradient
id="linearGradient6816">
<stop
id="stop6818"
offset="0"
style="stop-color:#000000;stop-opacity:1;" />
<stop
id="stop6820"
offset="1"
style="stop-color:#000000;stop-opacity:0;" />
</linearGradient>
<linearGradient
id="linearGradient6781">
<stop
id="stop6783"
offset="0"
style="stop-color:#ffffff;stop-opacity:1;" />
<stop
id="stop6785"
offset="1"
style="stop-color:#3465a4;stop-opacity:0;" />
</linearGradient>
<radialGradient
gradientUnits="userSpaceOnUse"
gradientTransform="matrix(1.1581633,0,0,0.6558985,-7.29237,16.126077)"
r="25.198714"
fy="51.929391"
fx="33.369828"
cy="51.929391"
cx="33.369828"
id="radialGradient6822"
xlink:href="#linearGradient6816" />
<radialGradient
gradientUnits="userSpaceOnUse"
gradientTransform="matrix(0.9724373,-0.105657,5.0523169e-2,0.4650009,-0.3519546,9.5854384)"
r="27.986705"
fy="17.013988"
fx="18.417862"
cy="17.013988"
cx="18.417862"
id="radialGradient3259"
xlink:href="#linearGradient3253" />
<radialGradient
r="27.986705"
fy="17.013988"
fx="18.417862"
cy="17.013988"
cx="18.417862"
gradientTransform="matrix(0.9724373,-0.105657,0.05052317,0.4650009,-0.3519546,9.5854384)"
gradientUnits="userSpaceOnUse"
id="radialGradient3270"
xlink:href="#linearGradient3253" />
</defs>
<metadata
id="metadata6253">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
<dc:title></dc:title>
</cc:Work>
</rdf:RDF>
</metadata>
<g
id="layer1">
<g
transform="matrix(-1,0,0,0.99363058,4,0.0382165)"
id="g3913-7">
<path
style="fill:none;stroke:#042a2a;stroke-width:6.01919985;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:6.01920039"
d="M -55,47.282051 -28,35.564103 -28,4.974359 -55,16.692308 z"
id="path3003-5-3-0" />
<path
style="fill:none;stroke:#16d0d2;stroke-width:2.00640011;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:6.01920003"
d="M -55,47.282051 -28,35.564103 -28,4.974359 -55,16.692308 z"
id="path3003-5-3-1-9" />
</g>
<g
transform="translate(60,0)"
id="g3913">
<path
style="fill:none;stroke:#042a2a;stroke-width:6;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:6"
d="M -55,47.307692 -28,35.615385 -28,5 -55,16.692308 z"
id="path3003-5-3" />
<path
style="fill:none;stroke:#16d0d2;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:6"
d="M -55,47.307692 -28,35.615385 -28,5 -55,16.692308 z"
id="path3003-5-3-1" />
</g>
<path
id="path3003"
d="M 32,59 5,47.307692 5,16.692308 32,28.384615 z"
style="fill:none;stroke:#042a2a;stroke-width:6;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
<path
id="path3003-5"
d="M 32,59 59,47.307692 59,16.692308 32,28.384615 z"
style="fill:none;stroke:#042a2a;stroke-width:6;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
<path
id="path3003-2-2"
d="M 59,16.692308 32,28.384615 5,16.692308 32,5 z"
style="fill:none;stroke:#042a2a;stroke-width:6;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
<path
id="path3003-3"
d="M 32,59 5,47.307692 5,16.692308 32,28.384615 z"
style="fill:none;stroke:#16d0d2;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
<path
id="path3003-5-6"
d="M 32,59 59,47.307692 59,16.692308 32,28.384615 z"
style="fill:none;stroke:#16d0d2;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
<path
id="path3003-2"
d="M 59,16.692308 32,28.384615 5,16.692308 32,5 z"
style="fill:none;stroke:#34e0e2;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
</g>
</svg>

After

Width:  |  Height:  |  Size: 5.4 KiB

589
res/icons/Material.svg Normal file
View File

@ -0,0 +1,589 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:xlink="http://www.w3.org/1999/xlink"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
width="64px"
height="64px"
id="svg2816"
version="1.1"
inkscape:version="0.48.5 r10040"
sodipodi:docname="Material.svg">
<defs
id="defs2818">
<linearGradient
inkscape:collect="always"
id="linearGradient4044">
<stop
style="stop-color:#000000;stop-opacity:1;"
offset="0"
id="stop4046" />
<stop
style="stop-color:#000000;stop-opacity:0;"
offset="1"
id="stop4048" />
</linearGradient>
<linearGradient
id="linearGradient3681">
<stop
id="stop3697"
offset="0"
style="stop-color:#fff110;stop-opacity:1;" />
<stop
style="stop-color:#cf7008;stop-opacity:1;"
offset="1"
id="stop3685" />
</linearGradient>
<inkscape:perspective
sodipodi:type="inkscape:persp3d"
inkscape:vp_x="0 : 32 : 1"
inkscape:vp_y="0 : 1000 : 0"
inkscape:vp_z="64 : 32 : 1"
inkscape:persp3d-origin="32 : 21.333333 : 1"
id="perspective2824" />
<inkscape:perspective
id="perspective3622"
inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
inkscape:vp_z="1 : 0.5 : 1"
inkscape:vp_y="0 : 1000 : 0"
inkscape:vp_x="0 : 0.5 : 1"
sodipodi:type="inkscape:persp3d" />
<inkscape:perspective
id="perspective3622-9"
inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
inkscape:vp_z="1 : 0.5 : 1"
inkscape:vp_y="0 : 1000 : 0"
inkscape:vp_x="0 : 0.5 : 1"
sodipodi:type="inkscape:persp3d" />
<inkscape:perspective
id="perspective3653"
inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
inkscape:vp_z="1 : 0.5 : 1"
inkscape:vp_y="0 : 1000 : 0"
inkscape:vp_x="0 : 0.5 : 1"
sodipodi:type="inkscape:persp3d" />
<inkscape:perspective
id="perspective3675"
inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
inkscape:vp_z="1 : 0.5 : 1"
inkscape:vp_y="0 : 1000 : 0"
inkscape:vp_x="0 : 0.5 : 1"
sodipodi:type="inkscape:persp3d" />
<inkscape:perspective
id="perspective3697"
inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
inkscape:vp_z="1 : 0.5 : 1"
inkscape:vp_y="0 : 1000 : 0"
inkscape:vp_x="0 : 0.5 : 1"
sodipodi:type="inkscape:persp3d" />
<inkscape:perspective
id="perspective3720"
inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
inkscape:vp_z="1 : 0.5 : 1"
inkscape:vp_y="0 : 1000 : 0"
inkscape:vp_x="0 : 0.5 : 1"
sodipodi:type="inkscape:persp3d" />
<inkscape:perspective
id="perspective3742"
inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
inkscape:vp_z="1 : 0.5 : 1"
inkscape:vp_y="0 : 1000 : 0"
inkscape:vp_x="0 : 0.5 : 1"
sodipodi:type="inkscape:persp3d" />
<inkscape:perspective
id="perspective3764"
inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
inkscape:vp_z="1 : 0.5 : 1"
inkscape:vp_y="0 : 1000 : 0"
inkscape:vp_x="0 : 0.5 : 1"
sodipodi:type="inkscape:persp3d" />
<inkscape:perspective
id="perspective3785"
inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
inkscape:vp_z="1 : 0.5 : 1"
inkscape:vp_y="0 : 1000 : 0"
inkscape:vp_x="0 : 0.5 : 1"
sodipodi:type="inkscape:persp3d" />
<inkscape:perspective
id="perspective3806"
inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
inkscape:vp_z="1 : 0.5 : 1"
inkscape:vp_y="0 : 1000 : 0"
inkscape:vp_x="0 : 0.5 : 1"
sodipodi:type="inkscape:persp3d" />
<inkscape:perspective
id="perspective3806-3"
inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
inkscape:vp_z="1 : 0.5 : 1"
inkscape:vp_y="0 : 1000 : 0"
inkscape:vp_x="0 : 0.5 : 1"
sodipodi:type="inkscape:persp3d" />
<inkscape:perspective
id="perspective3835"
inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
inkscape:vp_z="1 : 0.5 : 1"
inkscape:vp_y="0 : 1000 : 0"
inkscape:vp_x="0 : 0.5 : 1"
sodipodi:type="inkscape:persp3d" />
<inkscape:perspective
id="perspective3614"
inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
inkscape:vp_z="1 : 0.5 : 1"
inkscape:vp_y="0 : 1000 : 0"
inkscape:vp_x="0 : 0.5 : 1"
sodipodi:type="inkscape:persp3d" />
<inkscape:perspective
id="perspective3614-8"
inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
inkscape:vp_z="1 : 0.5 : 1"
inkscape:vp_y="0 : 1000 : 0"
inkscape:vp_x="0 : 0.5 : 1"
sodipodi:type="inkscape:persp3d" />
<inkscape:perspective
id="perspective3643"
inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
inkscape:vp_z="1 : 0.5 : 1"
inkscape:vp_y="0 : 1000 : 0"
inkscape:vp_x="0 : 0.5 : 1"
sodipodi:type="inkscape:persp3d" />
<inkscape:perspective
id="perspective3643-3"
inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
inkscape:vp_z="1 : 0.5 : 1"
inkscape:vp_y="0 : 1000 : 0"
inkscape:vp_x="0 : 0.5 : 1"
sodipodi:type="inkscape:persp3d" />
<inkscape:perspective
id="perspective3672"
inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
inkscape:vp_z="1 : 0.5 : 1"
inkscape:vp_y="0 : 1000 : 0"
inkscape:vp_x="0 : 0.5 : 1"
sodipodi:type="inkscape:persp3d" />
<inkscape:perspective
id="perspective3672-5"
inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
inkscape:vp_z="1 : 0.5 : 1"
inkscape:vp_y="0 : 1000 : 0"
inkscape:vp_x="0 : 0.5 : 1"
sodipodi:type="inkscape:persp3d" />
<inkscape:perspective
id="perspective3701"
inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
inkscape:vp_z="1 : 0.5 : 1"
inkscape:vp_y="0 : 1000 : 0"
inkscape:vp_x="0 : 0.5 : 1"
sodipodi:type="inkscape:persp3d" />
<inkscape:perspective
id="perspective3701-8"
inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
inkscape:vp_z="1 : 0.5 : 1"
inkscape:vp_y="0 : 1000 : 0"
inkscape:vp_x="0 : 0.5 : 1"
sodipodi:type="inkscape:persp3d" />
<inkscape:perspective
id="perspective3746"
inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
inkscape:vp_z="1 : 0.5 : 1"
inkscape:vp_y="0 : 1000 : 0"
inkscape:vp_x="0 : 0.5 : 1"
sodipodi:type="inkscape:persp3d" />
<pattern
patternTransform="matrix(0.67643728,-0.81829155,2.4578314,1.8844554,-26.450606,18.294947)"
id="pattern5231"
xlink:href="#Strips1_1-4"
inkscape:collect="always" />
<inkscape:perspective
id="perspective5224"
inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
inkscape:vp_z="1 : 0.5 : 1"
inkscape:vp_y="0 : 1000 : 0"
inkscape:vp_x="0 : 0.5 : 1"
sodipodi:type="inkscape:persp3d" />
<pattern
inkscape:stockid="Stripes 1:1"
id="Strips1_1-4"
patternTransform="matrix(0.66772843,-1.0037085,2.4261878,2.3114548,3.4760987,3.534923)"
height="1"
width="2"
patternUnits="userSpaceOnUse"
inkscape:collect="always">
<rect
id="rect4483-4"
height="2"
width="1"
y="-0.5"
x="0"
style="fill:black;stroke:none" />
</pattern>
<inkscape:perspective
id="perspective5224-9"
inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
inkscape:vp_z="1 : 0.5 : 1"
inkscape:vp_y="0 : 1000 : 0"
inkscape:vp_x="0 : 0.5 : 1"
sodipodi:type="inkscape:persp3d" />
<pattern
patternTransform="matrix(0.66772843,-1.0037085,2.4261878,2.3114548,39.618381,8.9692804)"
id="pattern5231-4"
xlink:href="#Strips1_1-6"
inkscape:collect="always" />
<inkscape:perspective
id="perspective5224-3"
inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
inkscape:vp_z="1 : 0.5 : 1"
inkscape:vp_y="0 : 1000 : 0"
inkscape:vp_x="0 : 0.5 : 1"
sodipodi:type="inkscape:persp3d" />
<pattern
inkscape:stockid="Stripes 1:1"
id="Strips1_1-6"
patternTransform="matrix(0.66772843,-1.0037085,2.4261878,2.3114548,3.4760987,3.534923)"
height="1"
width="2"
patternUnits="userSpaceOnUse"
inkscape:collect="always">
<rect
id="rect4483-0"
height="2"
width="1"
y="-0.5"
x="0"
style="fill:black;stroke:none" />
</pattern>
<pattern
patternTransform="matrix(0.66513382,-1.0631299,2.4167603,2.4482973,-49.762569,2.9546807)"
id="pattern5296"
xlink:href="#pattern5231-3"
inkscape:collect="always" />
<inkscape:perspective
id="perspective5288"
inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
inkscape:vp_z="1 : 0.5 : 1"
inkscape:vp_y="0 : 1000 : 0"
inkscape:vp_x="0 : 0.5 : 1"
sodipodi:type="inkscape:persp3d" />
<pattern
patternTransform="matrix(0.66772843,-1.0037085,2.4261878,2.3114548,-26.336284,10.887197)"
id="pattern5231-3"
xlink:href="#Strips1_1-4-3"
inkscape:collect="always" />
<pattern
inkscape:stockid="Stripes 1:1"
id="Strips1_1-4-3"
patternTransform="matrix(0.66772843,-1.0037085,2.4261878,2.3114548,3.4760987,3.534923)"
height="1"
width="2"
patternUnits="userSpaceOnUse"
inkscape:collect="always">
<rect
id="rect4483-4-6"
height="2"
width="1"
y="-0.5"
x="0"
style="fill:black;stroke:none" />
</pattern>
<pattern
patternTransform="matrix(0.42844886,-0.62155849,1.5567667,1.431396,27.948414,13.306456)"
id="pattern5330"
xlink:href="#Strips1_1-9"
inkscape:collect="always" />
<inkscape:perspective
id="perspective5323"
inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
inkscape:vp_z="1 : 0.5 : 1"
inkscape:vp_y="0 : 1000 : 0"
inkscape:vp_x="0 : 0.5 : 1"
sodipodi:type="inkscape:persp3d" />
<pattern
inkscape:stockid="Stripes 1:1"
id="Strips1_1-9"
patternTransform="matrix(0.66772843,-1.0037085,2.4261878,2.3114548,3.4760987,3.534923)"
height="1"
width="2"
patternUnits="userSpaceOnUse"
inkscape:collect="always">
<rect
id="rect4483-3"
height="2"
width="1"
y="-0.5"
x="0"
style="fill:black;stroke:none" />
</pattern>
<inkscape:perspective
id="perspective5361"
inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
inkscape:vp_z="1 : 0.5 : 1"
inkscape:vp_y="0 : 1000 : 0"
inkscape:vp_x="0 : 0.5 : 1"
sodipodi:type="inkscape:persp3d" />
<inkscape:perspective
id="perspective5383"
inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
inkscape:vp_z="1 : 0.5 : 1"
inkscape:vp_y="0 : 1000 : 0"
inkscape:vp_x="0 : 0.5 : 1"
sodipodi:type="inkscape:persp3d" />
<inkscape:perspective
id="perspective5411"
inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
inkscape:vp_z="1 : 0.5 : 1"
inkscape:vp_y="0 : 1000 : 0"
inkscape:vp_x="0 : 0.5 : 1"
sodipodi:type="inkscape:persp3d" />
<linearGradient
inkscape:collect="always"
xlink:href="#linearGradient3681"
id="linearGradient3687"
x1="37.89756"
y1="41.087898"
x2="4.0605712"
y2="40.168594"
gradientUnits="userSpaceOnUse" />
<linearGradient
inkscape:collect="always"
xlink:href="#linearGradient3681"
id="linearGradient3695"
x1="31.777767"
y1="40.24213"
x2="68.442062"
y2="54.041203"
gradientUnits="userSpaceOnUse"
gradientTransform="matrix(0.25023482,-0.66040068,0.68751357,0.24036653,-8.7488565,43.149938)" />
<radialGradient
inkscape:collect="always"
xlink:href="#linearGradient12512"
id="radialGradient278"
gradientUnits="userSpaceOnUse"
cx="55"
cy="125"
fx="55"
fy="125"
r="14.375" />
<linearGradient
id="linearGradient12512">
<stop
style="stop-color:#ffffff;stop-opacity:1.0000000;"
offset="0.0000000"
id="stop12513" />
<stop
style="stop-color:#fff520;stop-opacity:0.89108908;"
offset="0.50000000"
id="stop12517" />
<stop
style="stop-color:#fff300;stop-opacity:0.0000000;"
offset="1.0000000"
id="stop12514" />
</linearGradient>
<radialGradient
r="14.375"
fy="125"
fx="55"
cy="125"
cx="55"
gradientUnits="userSpaceOnUse"
id="radialGradient4017"
xlink:href="#linearGradient12512"
inkscape:collect="always" />
<linearGradient
inkscape:collect="always"
xlink:href="#linearGradient4044"
id="linearGradient4060"
x1="15.78776"
y1="50.394047"
x2="27.641447"
y2="39.95837"
gradientUnits="userSpaceOnUse" />
<radialGradient
inkscape:collect="always"
xlink:href="#linearGradient12512-2"
id="radialGradient278-5"
gradientUnits="userSpaceOnUse"
cx="55"
cy="125"
fx="55"
fy="125"
r="14.375" />
<linearGradient
id="linearGradient12512-2">
<stop
style="stop-color:#ffffff;stop-opacity:1.0000000;"
offset="0.0000000"
id="stop12513-3" />
<stop
style="stop-color:#fff520;stop-opacity:0.89108908;"
offset="0.50000000"
id="stop12517-1" />
<stop
style="stop-color:#fff300;stop-opacity:0.0000000;"
offset="1.0000000"
id="stop12514-6" />
</linearGradient>
<radialGradient
r="14.375"
fy="125"
fx="55"
cy="125"
cx="55"
gradientUnits="userSpaceOnUse"
id="radialGradient4078"
xlink:href="#linearGradient12512-2"
inkscape:collect="always" />
<radialGradient
inkscape:collect="always"
xlink:href="#linearGradient3832"
id="radialGradient3838"
cx="55"
cy="125"
fx="55"
fy="125"
r="14.375"
gradientUnits="userSpaceOnUse"
gradientTransform="matrix(0.99991374,-0.00878458,0.02321852,1.1822213,-2.8975707,-22.29451)" />
<linearGradient
inkscape:collect="always"
id="linearGradient3832">
<stop
style="stop-color:#ffffff;stop-opacity:1;"
offset="0"
id="stop3834" />
<stop
style="stop-color:#ffffff;stop-opacity:0;"
offset="1"
id="stop3836" />
</linearGradient>
<linearGradient
y2="22.615412"
x2="21.860462"
y1="57.301327"
x1="37.758171"
gradientUnits="userSpaceOnUse"
id="linearGradient3076"
xlink:href="#linearGradient3960"
inkscape:collect="always" />
<linearGradient
inkscape:collect="always"
id="linearGradient3960">
<stop
style="stop-color:#c4a000;stop-opacity:1"
offset="0"
id="stop3962" />
<stop
style="stop-color:#fce94f;stop-opacity:1"
offset="1"
id="stop3964" />
</linearGradient>
<linearGradient
y2="22.615412"
x2="21.860462"
y1="57.301327"
x1="37.758171"
gradientUnits="userSpaceOnUse"
id="linearGradient3096"
xlink:href="#linearGradient3960"
inkscape:collect="always" />
</defs>
<sodipodi:namedview
id="base"
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1.0"
inkscape:pageopacity="0.0"
inkscape:pageshadow="2"
inkscape:zoom="11"
inkscape:cx="21.23826"
inkscape:cy="38.921679"
inkscape:current-layer="layer1"
showgrid="true"
inkscape:document-units="px"
inkscape:grid-bbox="true"
inkscape:snap-bbox="true"
inkscape:bbox-paths="true"
inkscape:bbox-nodes="true"
inkscape:snap-bbox-edge-midpoints="true"
inkscape:snap-bbox-midpoints="true"
inkscape:object-paths="true"
inkscape:object-nodes="true"
inkscape:window-width="1280"
inkscape:window-height="758"
inkscape:window-x="0"
inkscape:window-y="27"
inkscape:window-maximized="0">
<inkscape:grid
type="xygrid"
id="grid3049"
empspacing="2"
visible="true"
enabled="true"
snapvisiblegridlinesonly="true" />
</sodipodi:namedview>
<metadata
id="metadata2821">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
<dc:title />
</cc:Work>
</rdf:RDF>
</metadata>
<g
id="layer1"
inkscape:label="Layer 1"
inkscape:groupmode="layer">
<path
sodipodi:type="arc"
style="fill:url(#linearGradient3096);fill-opacity:1;stroke:#302b00;stroke-width:1.44524646;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0"
id="path4042"
sodipodi:cx="27.641447"
sodipodi:cy="39.95837"
sodipodi:rx="20.956074"
sodipodi:ry="20.956074"
d="m 48.597521,39.95837 a 20.956074,20.956074 0 1 1 -41.9121477,0 20.956074,20.956074 0 1 1 41.9121477,0 z"
transform="matrix(1.383847,0,0,1.383847,-6.2515342,-23.29627)" />
<path
sodipodi:type="arc"
style="color:#000000;fill:url(#radialGradient3838);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1.25000024;marker:none;visibility:visible;display:block"
id="path12511"
sodipodi:cx="55"
sodipodi:cy="125"
sodipodi:rx="14.375"
sodipodi:ry="14.375"
d="m 69.375,125 a 14.375,14.375 0 1 1 -28.75,0 14.375,14.375 0 1 1 28.75,0 z"
transform="matrix(0.38831771,0.39865499,-0.59605454,0.5805986,71.149343,-76.500849)"
inkscape:export-filename="/home/jimmac/ximian_art/icons/nautilus/suse93/stock_new-16.png"
inkscape:export-xdpi="33.852203"
inkscape:export-ydpi="33.852203" />
<path
sodipodi:type="arc"
style="fill:none;stroke:#fce94f;stroke-width:1.55230176;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0"
id="path4042-0"
sodipodi:cx="27.641447"
sodipodi:cy="39.95837"
sodipodi:rx="20.956074"
sodipodi:ry="20.956074"
d="m 48.597521,39.95837 a 20.956074,20.956074 0 1 1 -41.9121477,0 20.956074,20.956074 0 1 1 41.9121477,0 z"
transform="matrix(1.2884093,0,0,1.2884093,-3.6134972,-19.482733)" />
<path
sodipodi:type="arc"
style="fill:none;stroke:#302b00;stroke-width:1.44524646;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0"
id="path4042-3"
sodipodi:cx="27.641447"
sodipodi:cy="39.95837"
sodipodi:rx="20.956074"
sodipodi:ry="20.956074"
d="m 48.597521,39.95837 a 20.956074,20.956074 0 1 1 -41.9121477,0 20.956074,20.956074 0 1 1 41.9121477,0 z"
transform="matrix(1.383847,0,0,1.383847,-6.2515342,-23.29627)" />
</g>
</svg>

After

Width:  |  Height:  |  Size: 19 KiB

BIN
res/icons/add.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.7 KiB

BIN
res/icons/axis.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.5 KiB

210
res/icons/colors.svg Normal file
View File

@ -0,0 +1,210 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
width="64px"
height="64px"
id="svg2816"
version="1.1"
xmlns:xlink="http://www.w3.org/1999/xlink"
xmlns="http://www.w3.org/2000/svg"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:dc="http://purl.org/dc/elements/1.1/">
<defs
id="defs2818">
<linearGradient
id="linearGradient3817">
<stop
style="stop-color:#a40000;stop-opacity:1"
offset="0"
id="stop3819" />
<stop
style="stop-color:#ef2929;stop-opacity:1"
offset="1"
id="stop3821" />
</linearGradient>
<linearGradient
id="linearGradient3809">
<stop
style="stop-color:#204a87;stop-opacity:1"
offset="0"
id="stop3811" />
<stop
style="stop-color:#729fcf;stop-opacity:1"
offset="1"
id="stop3813" />
</linearGradient>
<linearGradient
xlink:href="#linearGradient13"
id="linearGradient3773-4"
x1="38"
y1="56"
x2="23"
y2="11"
gradientUnits="userSpaceOnUse"
gradientTransform="matrix(0,-0.99999204,-0.99975296,0,64.002086,61.004248)" />
<linearGradient
id="linearGradient13">
<stop
style="stop-color:#d68e30;stop-opacity:1;"
offset="0"
id="stop13" />
<stop
style="stop-color:#e0b165;stop-opacity:1;"
offset="1"
id="stop12" />
</linearGradient>
<radialGradient
xlink:href="#linearGradient8662"
id="radialGradient8668"
cx="24.837126"
cy="36.421127"
fx="24.837126"
fy="36.421127"
r="15.644737"
gradientTransform="matrix(-1.489736,0,0,-0.53739498,111.31562,31.29632)"
gradientUnits="userSpaceOnUse" />
<linearGradient
id="linearGradient8662">
<stop
style="stop-color:#000000;stop-opacity:1;"
offset="0"
id="stop8664" />
<stop
style="stop-color:#000000;stop-opacity:0;"
offset="1"
id="stop8666" />
</linearGradient>
<radialGradient
xlink:href="#linearGradient8662"
id="radialGradient8668-1"
cx="24.837126"
cy="36.421127"
fx="24.837126"
fy="36.421127"
r="15.644737"
gradientTransform="matrix(-1.489736,0,0,-0.53739498,36.675536,62.527093)"
gradientUnits="userSpaceOnUse" />
<linearGradient
xlink:href="#linearGradient9"
id="linearGradient3815-1"
x1="50.663345"
y1="48.242733"
x2="40.773235"
y2="30.624857"
gradientUnits="userSpaceOnUse"
gradientTransform="matrix(-0.37829521,0.92567764,0.9256926,0.3782953,5.0779238,-35.945966)" />
<linearGradient
id="linearGradient9">
<stop
id="stop8"
offset="0"
style="stop-color:#4e9a06;stop-opacity:1;" />
<stop
id="stop9"
offset="1"
style="stop-color:#8ae134;stop-opacity:1;" />
</linearGradient>
<linearGradient
xlink:href="#linearGradient3817"
id="linearGradient3823-8"
x1="39.746582"
y1="48.947098"
x2="33.458858"
y2="34.680279"
gradientUnits="userSpaceOnUse"
gradientTransform="matrix(0.91177684,-0.41068274,-0.41068938,-0.91177706,21.497965,71.891024)" />
<linearGradient
xlink:href="#linearGradient3809"
id="linearGradient3831-3"
x1="33.597637"
y1="50.5266"
x2="19.617729"
y2="39.587009"
gradientUnits="userSpaceOnUse"
gradientTransform="matrix(0.210261,0.97763751,0.97765331,-0.21026105,-27.163812,14.801651)" />
</defs>
<metadata
id="metadata2821">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
<dc:rights>
<cc:Agent>
<dc:title>FreeCAD LGPL2+</dc:title>
</cc:Agent>
</dc:rights>
<dc:publisher>
<cc:Agent>
<dc:title>FreeCAD</dc:title>
</cc:Agent>
</dc:publisher>
<cc:license
rdf:resource="http://creativecommons.org/licenses/by-sa/4.0/" />
<dc:relation>https://www.freecad.org/wiki/index.php?title=Artwork</dc:relation>
</cc:Work>
<cc:License
rdf:about="http://creativecommons.org/licenses/by-sa/4.0/">
<cc:permits
rdf:resource="http://creativecommons.org/ns#Reproduction" />
<cc:permits
rdf:resource="http://creativecommons.org/ns#Distribution" />
<cc:requires
rdf:resource="http://creativecommons.org/ns#Notice" />
<cc:requires
rdf:resource="http://creativecommons.org/ns#Attribution" />
<cc:permits
rdf:resource="http://creativecommons.org/ns#DerivativeWorks" />
<cc:requires
rdf:resource="http://creativecommons.org/ns#ShareAlike" />
</cc:License>
</rdf:RDF>
</metadata>
<g
id="layer2"
transform="matrix(-0.99997982,0,0,0.99998778,64.014567,2.9963329)"
style="display:inline;stroke-width:1.00002">
<path
style="display:inline;fill:url(#linearGradient3773-4);fill-opacity:1;stroke:#271903;stroke-width:2.00003;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
d="M 58.949522,46.632363 C 58.056282,53.134662 50.513575,58.261397 42.06545,57.99429 31.336378,57.655064 9.7909271,40.350899 7.4824434,29.394698 5.1739629,18.438498 11.820149,6.5073092 18.988383,2.7104054 26.156618,-1.0865004 39.901687,-1.5462677 45.295808,5.65253 c 5.394121,7.198796 3.171733,15.967202 4.531001,22.468667 1.35927,6.501465 10.015953,12.008869 9.122713,18.511166 z M 45.357519,42.639458 c -0.07122,-3.445969 -3.443831,-6.84536 -7.007866,-6.784693 -10.285769,0.992508 -1.007757,15.490994 5.867052,10.128346 0.826719,-1.028676 1.164553,-2.194997 1.140814,-3.343653 z"
id="path2840-4" />
<path
ry="8.3968935"
rx="15.644737"
cy="36.421127"
cx="24.837126"
style="color:#000000;display:inline;overflow:visible;visibility:visible;opacity:0.141176;fill:url(#radialGradient8668);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1.22133;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;marker-start:none;marker-mid:none;marker-end:none"
id="path8660"
d=""
transform="translate(0,32)" />
<path
ry="8.3968935"
rx="15.644737"
cy="36.421127"
cx="24.837126"
style="color:#000000;display:inline;overflow:visible;visibility:visible;opacity:0.141176;fill:url(#radialGradient8668-1);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1.22133;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;marker-start:none;marker-mid:none;marker-end:none"
id="path8660-0"
d="" />
<path
id="path2840-3"
style="display:inline;fill:none;fill-opacity:1;stroke:#e9b96e;stroke-width:2.00003;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
d="m 57.018549,45.916469 c -0.302491,3.649947 -3.14036,6.555412 -6.269026,8.150352 -4.016171,2.077645 -8.920126,2.609208 -13.172665,0.92485 C 32.868527,53.266824 28.591067,50.482114 24.650282,47.517153 20.331856,44.225982 16.276112,40.335766 13.055297,36.06108 11.049438,33.365527 9.245387,30.144598 9.1021408,26.649044 8.8540427,23.520099 9.255034,20.471592 10.1959,17.504586 c 0.458174,-1.427283 1.056536,-2.876382 1.795662,-4.278263 2.167982,-4.102196 5.378827,-7.9804072 9.852747,-9.6198661 2.136083,-0.761293 4.184249,-1.2332412 6.45325,-1.4587974 4.357449,-0.3948019 9.034245,-0.0064 12.825471,2.3594892 3.102652,1.9390106 4.734297,5.5073523 5.452129,8.9764593 1.034934,4.830515 0.352554,9.831236 1.236283,14.677143 0.792913,4.23134 3.750751,7.532684 6.199059,10.908193 1.391577,2.04133 3.065935,4.256346 3.008048,6.847525 z m -9.65047,-3.314427 c -0.146535,-4.85155 -4.787406,-9.196897 -9.677814,-8.68743 -2.488934,0.275915 -5.100282,1.801794 -5.705027,4.382795 -0.805092,3.189561 0.936375,6.443188 3.259879,8.543375 2.295827,2.108818 5.860002,3.080976 8.748743,1.630146 1.521486,-0.636769 2.616393,-2.011907 3.047519,-3.585076 0.236007,-0.735747 0.331605,-1.512539 0.3267,-2.28381 z" />
<path
style="fill:url(#linearGradient3815-1);fill-opacity:1;stroke:#4e9a06;stroke-width:1.00002px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
d="m 25.655183,19.004063 c 2.171071,2.518811 6.686277,5.71729 6.100653,7.893261 -1.014953,3.771204 -9.648443,-0.02914 -12.509547,-3.250217 -2.950204,-3.321389 -8.507774,-7.532055 -1.806421,-13.204302 7.088657,-6.0000745 5.63308,5.565427 8.215315,8.561258 z"
id="path3666-4" />
<path
style="fill:url(#linearGradient3823-8);fill-opacity:1;stroke:#a40000;stroke-width:1.00002px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
d="m 33.514821,20.772686 c 0.02727,-3.574532 2.121969,-9.489113 6.173419,-8.768792 3.770065,0.670293 -1.868989,8.401805 0.955911,9.752788 8.340558,3.988799 5.216823,9.254169 0,9.47814 -3.913186,0.168002 -7.161526,-6.242164 -7.12933,-10.462136 z"
id="path3654-7" />
<path
style="fill:url(#linearGradient3831-3);fill-opacity:1;stroke:#204a87;stroke-width:1.00002px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
d="m 11.604102,26.895375 c 0.837962,-7.454977 8.54096,0.109336 11.374572,2.795296 3.287268,3.115977 7.752403,10.552104 3.943581,13.003302 -3.340444,2.149769 0.0784,-7.472476 -8.947049,-7.872143 -3.41722,-0.151322 -6.753177,-4.527318 -6.371104,-7.926455 z"
id="path3644-6" />
</g>
</svg>

After

Width:  |  Height:  |  Size: 9.8 KiB

BIN
res/icons/cursor_rotate.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.5 KiB

BIN
res/icons/cursor_zoom.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.5 KiB

BIN
res/icons/datumPln.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.0 KiB

62
res/icons/delete.svg Normal file
View File

@ -0,0 +1,62 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
width="64"
height="64"
id="svg2"
version="1.1"
viewBox="0 0 64 64"
xmlns:xlink="http://www.w3.org/1999/xlink"
xmlns="http://www.w3.org/2000/svg"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:dc="http://purl.org/dc/elements/1.1/">
<defs
id="defs4">
<linearGradient
id="linearGradient1">
<stop
style="stop-color:#a40000;stop-opacity:1;"
offset="0"
id="stop1" />
<stop
style="stop-color:#ef2929;stop-opacity:1;"
offset="1"
id="stop2" />
</linearGradient>
<linearGradient
xlink:href="#linearGradient1"
id="linearGradient2"
x1="36.329655"
y1="1042.527"
x2="25.310667"
y2="999.39594"
gradientUnits="userSpaceOnUse"
gradientTransform="matrix(0.88441619,0,0,0.88400544,3.6451335,118.30293)" />
</defs>
<metadata
id="metadata7">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
</cc:Work>
</rdf:RDF>
</metadata>
<g
id="layer1"
transform="translate(0,-988.36218)">
<path
id="rect1"
style="display:inline;fill:#ef2929;stroke:#280000;stroke-width:2;stroke-linecap:square;stroke-dasharray:none;fill-opacity:1"
d="m 15.140816,994.77606 -8.7266995,8.72784 16.8401825,16.8463 -16.8401825,16.8184 8.7439725,8.7779 16.841913,-16.8479 16.840182,16.8479 8.745702,-8.7779 -16.840182,-16.8184 16.840182,-16.8463 -8.7267,-8.72784 -16.859184,16.83754 z" />
<path
id="path4"
style="display:inline;fill:url(#linearGradient2);stroke:#ef2929;stroke-width:2;stroke-linecap:square;stroke-dasharray:none;stroke-opacity:1"
d="M 15.140625,997.60352 32,1014.4395 l 16.859375,-16.83598 5.898437,5.90038 -16.839843,16.8477 16.839843,16.8203 -5.919921,5.9433 L 32,1026.2676 15.162109,1043.1152 9.2421875,1037.1719 26.082031,1020.3516 9.2421875,1003.5039 Z" />
</g>
</svg>

After

Width:  |  Height:  |  Size: 2.2 KiB

View File

@ -0,0 +1,220 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
width="64px"
height="64px"
id="svg6248"
version="1.1"
xmlns:xlink="http://www.w3.org/1999/xlink"
xmlns="http://www.w3.org/2000/svg"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:dc="http://purl.org/dc/elements/1.1/">
<defs
id="defs6250">
<linearGradient
id="linearGradient4027">
<stop
style="stop-color:#16d0d2;stop-opacity:1"
offset="0"
id="stop4029" />
<stop
style="stop-color:#34e0e2;stop-opacity:1"
offset="1"
id="stop4031" />
</linearGradient>
<linearGradient
id="linearGradient3253">
<stop
style="stop-color:#89d5f8;stop-opacity:1;"
offset="0"
id="stop3255" />
<stop
style="stop-color:#00899e;stop-opacity:1;"
offset="1"
id="stop3257" />
</linearGradient>
<linearGradient
id="linearGradient6816">
<stop
style="stop-color:#000000;stop-opacity:1;"
offset="0"
id="stop6818" />
<stop
style="stop-color:#000000;stop-opacity:0;"
offset="1"
id="stop6820" />
</linearGradient>
<linearGradient
id="linearGradient6781">
<stop
style="stop-color:#ffffff;stop-opacity:1;"
offset="0"
id="stop6783" />
<stop
style="stop-color:#3465a4;stop-opacity:0;"
offset="1"
id="stop6785" />
</linearGradient>
<radialGradient
xlink:href="#linearGradient6816"
id="radialGradient6822"
cx="33.369828"
cy="51.929391"
fx="33.369828"
fy="51.929391"
r="25.198714"
gradientTransform="matrix(1.1581633,0,0,0.6558985,-7.29237,16.126077)"
gradientUnits="userSpaceOnUse" />
<radialGradient
xlink:href="#linearGradient3253"
id="radialGradient3259"
cx="18.417862"
cy="17.013988"
fx="18.417862"
fy="17.013988"
r="27.986705"
gradientTransform="matrix(0.9724373,-0.105657,5.0523169e-2,0.4650009,-0.3519546,9.5854384)"
gradientUnits="userSpaceOnUse" />
<radialGradient
xlink:href="#linearGradient3253"
id="radialGradient3270"
gradientUnits="userSpaceOnUse"
gradientTransform="matrix(0.9724373,-0.105657,0.05052317,0.4650009,-0.3519546,9.5854384)"
cx="18.417862"
cy="17.013988"
fx="18.417862"
fy="17.013988"
r="27.986705" />
<linearGradient
gradientTransform="translate(0,-2)"
xlink:href="#linearGradient3777"
id="linearGradient3783"
x1="53.896763"
y1="51.179787"
x2="47.502235"
y2="21.83742"
gradientUnits="userSpaceOnUse" />
<linearGradient
id="linearGradient3777">
<stop
style="stop-color:#204a87;stop-opacity:1"
offset="0"
id="stop3779" />
<stop
style="stop-color:#3465a4;stop-opacity:1"
offset="1"
id="stop3781" />
</linearGradient>
<linearGradient
xlink:href="#linearGradient4027"
id="linearGradient4033"
x1="26"
y1="54"
x2="20"
y2="20"
gradientUnits="userSpaceOnUse" />
<linearGradient
id="linearGradient3765">
<stop
style="stop-color:#d3d7cf;stop-opacity:1;"
offset="0"
id="stop3767" />
<stop
style="stop-color:#ffffff;stop-opacity:1"
offset="1"
id="stop3769" />
</linearGradient>
<linearGradient
xlink:href="#linearGradient3765"
id="linearGradient3771-0"
x1="35"
y1="51"
x2="31"
y2="18"
gradientUnits="userSpaceOnUse" />
<linearGradient
xlink:href="#linearGradient3873"
id="linearGradient4221"
gradientUnits="userSpaceOnUse"
gradientTransform="matrix(0,-2.0691034,0.48906084,0,16.27829,307.86774)"
x1="127.49857"
y1="8.0178137"
x2="129.43178"
y2="48.912521" />
<linearGradient
id="linearGradient3873">
<stop
style="stop-color:#ffffff;stop-opacity:1;"
offset="0"
id="stop3875" />
<stop
style="stop-color:#d3d7cf;stop-opacity:1"
offset="1"
id="stop3877" />
</linearGradient>
</defs>
<metadata
id="metadata6253">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
</cc:Work>
</rdf:RDF>
</metadata>
<g
id="layer1"
transform="matrix(0.89014767,0,0,0.88966566,3.5152754,3.5185681)">
<path
style="display:inline;opacity:0.6;fill:none;stroke:#042a2a;stroke-width:6.74228035;stroke-linecap:butt;stroke-linejoin:round;stroke-dasharray:none;stroke-opacity:1"
d="M 5,17 41,23 59,9 25,5 Z"
id="path3961" />
<path
style="display:inline;opacity:0.6;fill:none;stroke:#042a2a;stroke-width:6.74228035;stroke-linecap:butt;stroke-linejoin:round;stroke-dasharray:none;stroke-opacity:1"
d="M 59,9 V 43 L 41,59 V 23 Z"
id="path2995" />
<path
style="display:inline;opacity:0.6;fill:none;stroke:#042a2a;stroke-width:6.74228035;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:6.74228048,13.48456097;stroke-dashoffset:11.86641365;stroke-opacity:1"
d="M 25,5 V 39 L 5,53 V 17 Z"
id="path2995-1" />
<path
id="path3825-7"
d="M 25,5 59,9 V 43 L 25,39 Z"
style="display:inline;overflow:visible;visibility:visible;opacity:0.6;fill:none;stroke:#042a2a;stroke-width:6.74228035;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:6.74228035,13.48458095;stroke-dashoffset:0;stroke-opacity:1;marker:none;enable-background:accumulate" />
<path
id="path3825-7-7"
d="M 25,5 59,9 V 43 L 25,39 Z"
style="display:inline;overflow:visible;visibility:visible;opacity:0.6;fill:none;stroke:#34e0e2;stroke-width:2.24742678;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:6.74226999,13.48456022;stroke-dashoffset:0;stroke-opacity:1;marker:none;enable-background:accumulate" />
<path
id="path3825"
d="m 5,17 36,6 V 59 L 5,53 Z"
style="display:inline;overflow:visible;visibility:visible;opacity:0.6;fill:none;stroke:#042a2a;stroke-width:6.74228035;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;enable-background:accumulate" />
<path
style="display:inline;opacity:0.6;fill:none;fill-opacity:1;stroke:#34e0e2;stroke-width:2.24742678;stroke-linecap:butt;stroke-linejoin:round;stroke-dasharray:none;stroke-opacity:1"
d="M 59,9 V 43 L 41,59 V 23 Z"
id="path2995-7" />
<path
style="display:inline;opacity:0.6;fill:none;stroke:#34e0e2;stroke-width:2.24743;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:6.74229026,13.48458052;stroke-dashoffset:11.86643085;stroke-opacity:1"
d="M 25,5 V 39 L 5,53 V 17 Z"
id="path2995-1-0" />
<path
id="path3825-9"
d="m 5,17 36,6 V 59 L 5,53 Z"
style="display:inline;overflow:visible;visibility:visible;opacity:0.6;fill:url(#linearGradient4033);fill-opacity:1;stroke:#34e0e2;stroke-width:2.24742678;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;enable-background:accumulate" />
<path
style="display:inline;opacity:0.6;fill:none;stroke:#34e0e2;stroke-width:2.24742678;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
d="M 5,17 25,5 59,9 41,23 Z"
id="path3970" />
<path
style="color:#000000;display:inline;fill:#ef2929;stroke:#cc0000;stroke-width:2.24742678;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:none"
d="m 41,20.996909 c -1.656854,0 -3,1.343146 -3,3 v 34 c 0,1.656854 1.343146,3 3,3 1.656854,0 3,-1.343146 3,-3 v -34 c 0,-1.656854 -1.343146,-3 -3,-3 z"
id="path3" />
</g>
<path
style="display:inline;fill:url(#linearGradient4221);fill-opacity:1;stroke:#042a2a;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1"
d="m 39.199488,57.060024 -12,-12 -4,6 -7,-21 21,7 -6,4 12,12 z"
id="rect3871" />
</svg>

After

Width:  |  Height:  |  Size: 8.4 KiB

102
res/icons/edit-delete.svg Normal file
View File

@ -0,0 +1,102 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
width="64"
height="64"
id="svg2869"
version="1.1"
viewBox="0 0 64 64"
xmlns:xlink="http://www.w3.org/1999/xlink"
xmlns="http://www.w3.org/2000/svg"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:dc="http://purl.org/dc/elements/1.1/">
<defs
id="defs2871">
<linearGradient
id="linearGradient39">
<stop
style="stop-color:#d3d7cf;stop-opacity:1"
offset="0"
id="stop39" />
<stop
style="stop-color:#888a85;stop-opacity:1"
offset="1"
id="stop40" />
</linearGradient>
<linearGradient
xlink:href="#linearGradient39"
id="linearGradient40"
x1="32"
y1="39.374992"
x2="52.69593"
y2="39.375023"
gradientUnits="userSpaceOnUse"
spreadMethod="reflect" />
</defs>
<metadata
id="metadata2874">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
<dc:creator>
<cc:Agent>
<dc:title>[maxwxyz]</dc:title>
</cc:Agent>
</dc:creator>
<dc:relation>https://www.freecad.org/wiki/index.php?title=Artwork</dc:relation>
<dc:publisher>
<cc:Agent>
<dc:title>FreeCAD</dc:title>
</cc:Agent>
</dc:publisher>
<dc:identifier>FreeCAD/src/</dc:identifier>
<dc:rights>
<cc:Agent>
<dc:title>FreeCAD LGPL2+</dc:title>
</cc:Agent>
</dc:rights>
<dc:date>2024</dc:date>
</cc:Work>
</rdf:RDF>
</metadata>
<g
id="layer3"
style="display:inline">
<g
id="layer3-8"
style="display:inline">
<path
id="path30"
style="opacity:1;vector-effect:none;fill:#d3d7cf;stroke:#2e3436;stroke-width:1.9393;stroke-linecap:round;stroke-linejoin:round"
d="m 10.355008,21.726693 3.827094,35.296614 a 4.4568988,4.4568988 41.904283 0 0 4.431179,3.976468 l 26.773438,-0.0015 a 4.4574241,4.4574241 138.09264 0 0 4.431199,-3.976916 L 53.644973,21.726691 A 3.5897199,3.5897199 48.094246 0 0 50.076172,17.75 H 13.923828 a 3.5897374,3.5897374 131.90589 0 0 -3.56882,3.976693 z"
transform="matrix(1,0,0,1.0635842,0,-3.8786217)" />
<path
id="path36"
style="opacity:1;vector-effect:none;fill:url(#linearGradient40);stroke:#d3d7cf;stroke-width:1.9393;stroke-linecap:round;stroke-linejoin:round"
d="m 13.923828,19.689453 h 36.152344 c 0.978747,0 1.746161,0.85483 1.640625,1.828125 L 47.890625,56.8125 c -0.137021,1.263664 -1.232316,2.246022 -2.503906,2.246094 l -26.773438,0.002 c -1.271143,7.1e-5 -2.366911,-0.982614 -2.503906,-2.246094 L 12.283203,21.517578 c -0.105528,-0.973265 0.66187,-1.828125 1.640625,-1.828125 z"
transform="matrix(1,0,0,1.0635842,0,-3.8786217)" />
<path
id="rect31"
style="font-variation-settings:normal;opacity:1;vector-effect:none;fill:#d3d7cf;fill-opacity:1;stroke:#2e3436;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;-inkscape-stroke:none;paint-order:normal"
d="M 20,7.9173291 V 10 a 2,2 135 0 1 -2,2 H 8 a 2,2 135 0 0 -2,2 v 2 a 2,2 45 0 0 2,2 h 48 a 2,2 135 0 0 2,-2 V 14 A 2,2 45 0 0 56,12 H 46 A 2,2 45 0 1 44,10 V 7.9173291 A 4.9173291,4.9173291 45 0 0 39.082671,3 H 24.917329 A 4.9173291,4.9173291 135 0 0 20,7.9173291 Z M 29,6.9375 l 6,0 a 3.5,3.5 45 0 1 3.5,3.5 v 0.25 a 2,2 135 0 1 -2,2 h -9 a 2,2 45 0 1 -2,-2 v -0.25 a 3.5,3.5 135 0 1 3.5,-3.5 z" />
<path
style="font-variation-settings:normal;opacity:1;vector-effect:none;fill:none;fill-opacity:1;stroke:#555753;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;-inkscape-stroke:none;paint-order:normal"
d="m 19.662999,25 2.454546,27"
id="path40" />
<path
style="font-variation-settings:normal;opacity:1;vector-effect:none;fill:none;fill-opacity:1;stroke:#555753;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;-inkscape-stroke:none;paint-order:normal"
d="M 44.337001,25 41.882455,52"
id="path41" />
<path
style="font-variation-settings:normal;opacity:1;vector-effect:none;fill:none;fill-opacity:1;stroke:#555753;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;-inkscape-stroke:none;paint-order:normal"
d="M 32,24 V 53"
id="path42" />
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 4.9 KiB

134
res/icons/edit_OK.svg Normal file
View File

@ -0,0 +1,134 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:xlink="http://www.w3.org/1999/xlink"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
width="64"
height="64"
id="svg2985"
version="1.1"
inkscape:version="0.48.5 r10040"
sodipodi:docname="button_valid.svg">
<defs
id="defs2987">
<linearGradient
inkscape:collect="always"
id="linearGradient3774">
<stop
style="stop-color:#4e9a06;stop-opacity:1"
offset="0"
id="stop3776" />
<stop
style="stop-color:#8ae234;stop-opacity:1"
offset="1"
id="stop3778" />
</linearGradient>
<linearGradient
inkscape:collect="always"
xlink:href="#linearGradient4082"
id="linearGradient3922-0"
gradientUnits="userSpaceOnUse"
gradientTransform="matrix(-0.56091264,-0.498646,0.48035179,-0.58227539,-177.89813,269.15635)"
x1="10.387"
y1="453.77875"
x2="56.319412"
y2="483.99524" />
<linearGradient
id="linearGradient4082">
<stop
id="stop4084"
offset="0"
style="stop-color:#4e9a06;stop-opacity:1" />
<stop
id="stop4086"
offset="1"
style="stop-color:#8ae234;stop-opacity:1" />
</linearGradient>
<linearGradient
inkscape:collect="always"
xlink:href="#linearGradient3774"
id="linearGradient3780"
x1="30"
y1="-2"
x2="26"
y2="-26"
gradientUnits="userSpaceOnUse" />
<linearGradient
inkscape:collect="always"
xlink:href="#linearGradient3774"
id="linearGradient2999"
gradientUnits="userSpaceOnUse"
x1="30"
y1="-2"
x2="26"
y2="-26" />
</defs>
<sodipodi:namedview
id="base"
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1.0"
inkscape:pageopacity="0.0"
inkscape:pageshadow="2"
inkscape:zoom="15.696216"
inkscape:cx="42.681569"
inkscape:cy="45.101596"
inkscape:current-layer="g2995"
showgrid="true"
inkscape:grid-bbox="true"
inkscape:document-units="px"
inkscape:window-width="1600"
inkscape:window-height="837"
inkscape:window-x="0"
inkscape:window-y="27"
inkscape:window-maximized="1">
<inkscape:grid
type="xygrid"
id="grid2983"
empspacing="2"
visible="true"
enabled="true"
snapvisiblegridlinesonly="true" />
</sodipodi:namedview>
<metadata
id="metadata2990">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
<dc:title></dc:title>
</cc:Work>
</rdf:RDF>
</metadata>
<g
id="layer1"
inkscape:label="Layer 1"
inkscape:groupmode="layer"
transform="translate(0,48)">
<g
id="g2995"
transform="matrix(1.2252683,0,0,1.2252683,-6.3014179,2.4330891)">
<path
sodipodi:nodetypes="ccccccc"
inkscape:connector-curvature="0"
id="path4088"
d="m 15.48076,-21.246576 10.519239,10.519232 21.038474,-21.038464 7.889428,7.889424 L 25.999999,5.0515065 7.5913312,-13.357152 z"
style="fill:url(#linearGradient2999);fill-opacity:1;stroke:#172a04;stroke-width:1.63229537;stroke-linecap:butt;stroke-linejoin:round;stroke-opacity:1" />
<path
sodipodi:nodetypes="ccccccc"
inkscape:connector-curvature="0"
id="path3004"
d="M 9.9510978,-13.350403 15.477822,-18.889628 26,-8.4375583 47.031855,-29.448573 52.57108,-23.872581 26,2.7352662 z"
style="fill:none;stroke:#8ae234;stroke-width:1.63229549;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 4.1 KiB

View File

@ -0,0 +1,218 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
width="64px"
height="64px"
id="svg6248"
version="1.1"
xmlns:xlink="http://www.w3.org/1999/xlink"
xmlns="http://www.w3.org/2000/svg"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:dc="http://purl.org/dc/elements/1.1/">
<defs
id="defs6250">
<linearGradient
id="linearGradient4027">
<stop
style="stop-color:#ef2929;stop-opacity:1"
offset="0"
id="stop4029" />
<stop
style="stop-color:#a40000;stop-opacity:1"
offset="1"
id="stop4031" />
</linearGradient>
<linearGradient
id="linearGradient3253">
<stop
style="stop-color:#89d5f8;stop-opacity:1;"
offset="0"
id="stop3255" />
<stop
style="stop-color:#00899e;stop-opacity:1;"
offset="1"
id="stop3257" />
</linearGradient>
<linearGradient
id="linearGradient6816">
<stop
style="stop-color:#000000;stop-opacity:1;"
offset="0"
id="stop6818" />
<stop
style="stop-color:#000000;stop-opacity:0;"
offset="1"
id="stop6820" />
</linearGradient>
<linearGradient
id="linearGradient6781">
<stop
style="stop-color:#ffffff;stop-opacity:1;"
offset="0"
id="stop6783" />
<stop
style="stop-color:#3465a4;stop-opacity:0;"
offset="1"
id="stop6785" />
</linearGradient>
<radialGradient
xlink:href="#linearGradient6816"
id="radialGradient6822"
cx="33.369828"
cy="51.929391"
fx="33.369828"
fy="51.929391"
r="25.198714"
gradientTransform="matrix(1.1581633,0,0,0.6558985,-7.29237,16.126077)"
gradientUnits="userSpaceOnUse" />
<radialGradient
xlink:href="#linearGradient3253"
id="radialGradient3259"
cx="18.417862"
cy="17.013988"
fx="18.417862"
fy="17.013988"
r="27.986705"
gradientTransform="matrix(0.9724373,-0.105657,5.0523169e-2,0.4650009,-0.3519546,9.5854384)"
gradientUnits="userSpaceOnUse" />
<radialGradient
xlink:href="#linearGradient3253"
id="radialGradient3270"
gradientUnits="userSpaceOnUse"
gradientTransform="matrix(0.9724373,-0.105657,0.05052317,0.4650009,-0.3519546,9.5854384)"
cx="18.417862"
cy="17.013988"
fx="18.417862"
fy="17.013988"
r="27.986705" />
<linearGradient
gradientTransform="translate(0,-2)"
xlink:href="#linearGradient3777"
id="linearGradient3783"
x1="53.896763"
y1="51.179787"
x2="47.502235"
y2="21.83742"
gradientUnits="userSpaceOnUse" />
<linearGradient
id="linearGradient3777">
<stop
style="stop-color:#204a87;stop-opacity:1"
offset="0"
id="stop3779" />
<stop
style="stop-color:#3465a4;stop-opacity:1"
offset="1"
id="stop3781" />
</linearGradient>
<linearGradient
xlink:href="#linearGradient4027"
id="linearGradient4033"
x1="27.145782"
y1="47.234444"
x2="12.525126"
y2="18.254189"
gradientUnits="userSpaceOnUse" />
<linearGradient
id="linearGradient3765">
<stop
style="stop-color:#d3d7cf;stop-opacity:1;"
offset="0"
id="stop3767" />
<stop
style="stop-color:#ffffff;stop-opacity:1"
offset="1"
id="stop3769" />
</linearGradient>
<linearGradient
xlink:href="#linearGradient3765"
id="linearGradient3771-6"
x1="35"
y1="51"
x2="31"
y2="18"
gradientUnits="userSpaceOnUse" />
<linearGradient
xlink:href="#linearGradient3873"
id="linearGradient4221"
gradientUnits="userSpaceOnUse"
gradientTransform="matrix(0,-2.0691034,0.48906084,0,16.27829,307.86774)"
x1="127.49857"
y1="8.0178137"
x2="129.43178"
y2="48.912521" />
<linearGradient
id="linearGradient3873">
<stop
style="stop-color:#ffffff;stop-opacity:1;"
offset="0"
id="stop3875" />
<stop
style="stop-color:#d3d7cf;stop-opacity:1"
offset="1"
id="stop3877" />
</linearGradient>
</defs>
<metadata
id="metadata6253">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
</cc:Work>
</rdf:RDF>
</metadata>
<g
id="layer1"
transform="matrix(0.88948634,0,0,0.88948212,3.5364372,3.5175052)">
<path
style="display:inline;opacity:0.6;fill:none;stroke:#042a2a;stroke-width:6.74548215;stroke-linecap:butt;stroke-linejoin:round;stroke-dasharray:none;stroke-opacity:1"
d="M 5,17 41,23 59,9 25,5 Z"
id="path3961" />
<path
style="display:inline;opacity:0.6;fill:none;stroke:#042a2a;stroke-width:6.74548215;stroke-linecap:butt;stroke-linejoin:round;stroke-dasharray:none;stroke-opacity:1"
d="M 59,9 V 43 L 41,59 V 23 Z"
id="path2995" />
<path
style="display:inline;opacity:0.6;fill:none;stroke:#042a2a;stroke-width:6.74548215;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:6.74548196,13.49096394;stroke-dashoffset:11.93950309;stroke-opacity:1"
d="M 25,5 V 39 L 5,53 V 17 Z"
id="path2995-1" />
<path
id="path3825-7"
d="M 25,5 59,9 V 43 L 25,39 Z"
style="display:inline;overflow:visible;visibility:visible;opacity:0.6;fill:none;stroke:#042a2a;stroke-width:6.74548215;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:6.74548215,13.49096431;stroke-dashoffset:0;stroke-opacity:1;marker:none;enable-background:accumulate" />
<path
id="path3825-7-7"
d="M 25,5 59,9 V 43 L 25,39 Z"
style="display:inline;overflow:visible;visibility:visible;opacity:0.6;fill:none;stroke:#34e0e2;stroke-width:2.24849405;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:6.74548239,13.49096479;stroke-dashoffset:0;stroke-opacity:1;marker:none;enable-background:accumulate" />
<path
id="path3825"
d="m 5,17 36,6 V 59 L 5,53 Z"
style="display:inline;overflow:visible;visibility:visible;opacity:0.6;fill:none;stroke:#042a2a;stroke-width:6.74548215;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;enable-background:accumulate" />
<path
style="display:inline;opacity:0.6;fill:none;fill-opacity:1;stroke:#34e0e2;stroke-width:2.24849405;stroke-linecap:butt;stroke-linejoin:round;stroke-dasharray:none;stroke-opacity:1"
d="M 59,9 V 43 L 41,59 V 23 Z"
id="path2995-7" />
<path
style="display:inline;opacity:0.6;fill:none;stroke:#34e0e2;stroke-width:2.24849405;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:6.74548245,13.49096489;stroke-dashoffset:11.93950393;stroke-opacity:1"
d="M 25,5 V 39 L 5,53 V 17 Z"
id="path2995-1-0" />
<path
id="path3825-9"
d="m 5,17 36,6 V 59 L 5,53 Z"
style="display:inline;overflow:visible;visibility:visible;opacity:1;fill:url(#linearGradient4033);fill-opacity:1;stroke:#34e0e2;stroke-width:2.24849405;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;enable-background:accumulate" />
<path
style="display:inline;opacity:0.6;fill:none;stroke:#34e0e2;stroke-width:2.24849405;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
d="M 5,17 25,5 59,9 41,23 Z"
id="path3970" />
</g>
<path
style="display:inline;fill:url(#linearGradient4221);fill-opacity:1;stroke:#042a2a;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1"
d="m 39.199488,57.060024 -12,-12 -4,6 -7,-21 21,7 -6,4 12,12 z"
id="rect3871" />
</svg>

After

Width:  |  Height:  |  Size: 8.2 KiB

BIN
res/icons/help.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.9 KiB

BIN
res/icons/hide.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.3 KiB

BIN
res/icons/hideAll.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.9 KiB

BIN
res/icons/license.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.2 KiB

BIN
res/icons/linear.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.3 KiB

BIN
res/icons/new_file.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.9 KiB

BIN
res/icons/perspective.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.6 KiB

BIN
res/icons/point.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.7 KiB

BIN
res/icons/print.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.8 KiB

BIN
res/icons/quit.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.6 KiB

BIN
res/icons/run.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 10 KiB

BIN
res/icons/saveAs.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.3 KiB

283
res/icons/sel-bbox.svg Normal file
View File

@ -0,0 +1,283 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:xlink="http://www.w3.org/1999/xlink"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
width="64px"
height="64px"
id="svg6248"
sodipodi:version="0.32"
inkscape:version="0.91 r13725"
sodipodi:docname="sel-bbox.svg"
inkscape:output_extension="org.inkscape.output.svg.inkscape"
version="1.1">
<defs
id="defs6250">
<linearGradient
id="linearGradient3253">
<stop
style="stop-color:#89d5f8;stop-opacity:1;"
offset="0"
id="stop3255" />
<stop
style="stop-color:#00899e;stop-opacity:1;"
offset="1"
id="stop3257" />
</linearGradient>
<linearGradient
inkscape:collect="always"
id="linearGradient6816">
<stop
style="stop-color:#000000;stop-opacity:1;"
offset="0"
id="stop6818" />
<stop
style="stop-color:#000000;stop-opacity:0;"
offset="1"
id="stop6820" />
</linearGradient>
<linearGradient
id="linearGradient6781">
<stop
style="stop-color:#ffffff;stop-opacity:1;"
offset="0"
id="stop6783" />
<stop
style="stop-color:#3465a4;stop-opacity:0;"
offset="1"
id="stop6785" />
</linearGradient>
<inkscape:perspective
sodipodi:type="inkscape:persp3d"
inkscape:vp_x="-81.834999 : 121.93486 : 1"
inkscape:vp_y="0 : 1000 : 0"
inkscape:vp_z="158.69906 : 94.577031 : 1"
inkscape:persp3d-origin="32 : 21.333333 : 1"
id="perspective6256" />
<radialGradient
inkscape:collect="always"
xlink:href="#linearGradient6816"
id="radialGradient6822"
cx="33.369828"
cy="51.929391"
fx="33.369828"
fy="51.929391"
r="25.198714"
gradientTransform="matrix(1.1581633,0,0,0.6558985,-7.29237,16.126077)"
gradientUnits="userSpaceOnUse" />
<radialGradient
inkscape:collect="always"
xlink:href="#linearGradient3253"
id="radialGradient3259"
cx="18.417862"
cy="17.013988"
fx="18.417862"
fy="17.013988"
r="27.986705"
gradientTransform="matrix(0.9724373,-0.105657,5.0523169e-2,0.4650009,-0.3519546,9.5854384)"
gradientUnits="userSpaceOnUse" />
<radialGradient
inkscape:collect="always"
xlink:href="#linearGradient3253"
id="radialGradient3270"
gradientUnits="userSpaceOnUse"
gradientTransform="matrix(0.9724373,-0.105657,0.05052317,0.4650009,-0.3519546,9.5854384)"
cx="18.417862"
cy="17.013988"
fx="18.417862"
fy="17.013988"
r="27.986705" />
<linearGradient
id="linearGradient3806">
<stop
id="stop3808"
offset="0"
style="stop-color:#34e0e2;stop-opacity:1" />
<stop
id="stop3810"
offset="1"
style="stop-color:#06989a;stop-opacity:1" />
</linearGradient>
<linearGradient
id="linearGradient3836-0-6-92-4-62">
<stop
style="stop-color:#a40000;stop-opacity:1"
offset="0"
id="stop3838-2-7-06-8-9" />
<stop
style="stop-color:#ef2929;stop-opacity:1"
offset="1"
id="stop3840-5-5-8-7-1" />
</linearGradient>
<radialGradient
inkscape:collect="always"
xlink:href="#linearGradient3600"
id="radialGradient3808"
cx="20.802507"
cy="18.626959"
fx="20.802507"
fy="18.626959"
r="27.084639"
gradientUnits="userSpaceOnUse"
gradientTransform="matrix(0.46998728,0.49348663,-0.95248379,0.90712735,-91.600844,-77.758763)" />
<linearGradient
id="linearGradient3600">
<stop
style="stop-color:#729fcf;stop-opacity:1"
offset="0"
id="stop3602" />
<stop
style="stop-color:#204a87;stop-opacity:1"
offset="1"
id="stop3604" />
</linearGradient>
<linearGradient
inkscape:collect="always"
xlink:href="#linearGradient3765"
id="linearGradient3771"
x1="35"
y1="51"
x2="31"
y2="18"
gradientUnits="userSpaceOnUse" />
<linearGradient
inkscape:collect="always"
id="linearGradient3765">
<stop
style="stop-color:#d3d7cf;stop-opacity:1;"
offset="0"
id="stop3767" />
<stop
style="stop-color:#ffffff;stop-opacity:1"
offset="1"
id="stop3769" />
</linearGradient>
</defs>
<sodipodi:namedview
id="base"
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1.0"
inkscape:pageopacity="0.0"
inkscape:pageshadow="2"
inkscape:zoom="2.75"
inkscape:cx="48.103924"
inkscape:cy="-10.073587"
inkscape:current-layer="layer1"
showgrid="true"
inkscape:document-units="px"
inkscape:grid-bbox="true"
inkscape:window-width="1375"
inkscape:window-height="876"
inkscape:window-x="65"
inkscape:window-y="24"
inkscape:snap-bbox="true"
inkscape:snap-nodes="true"
inkscape:window-maximized="1">
<inkscape:grid
type="xygrid"
id="grid3001"
empspacing="2"
visible="true"
enabled="true"
snapvisiblegridlinesonly="true" />
</sodipodi:namedview>
<metadata
id="metadata6253">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
<dc:title />
</cc:Work>
</rdf:RDF>
</metadata>
<g
id="layer1"
inkscape:label="Layer 1"
inkscape:groupmode="layer">
<g
id="g4311"
transform="matrix(1.0837296,0,0,1.0837296,131.29955,77.715925)">
<circle
r="18.457682"
id="path2826"
style="color:#000000;display:inline;overflow:visible;visibility:visible;fill:url(#radialGradient3808);fill-opacity:1;fill-rule:evenodd;stroke:#0b1521;stroke-width:1.84547901;marker:none;enable-background:accumulate"
cx="-91.928146"
cy="-42.321846" />
<circle
r="17.184738"
id="path2826-4"
style="color:#000000;display:inline;overflow:visible;visibility:visible;fill:none;stroke:#729fcf;stroke-width:1.84547901;marker:none;enable-background:accumulate"
cx="-91.928146"
cy="-42.321846" />
<circle
r="18.457682"
id="path2826-5"
style="color:#000000;display:inline;overflow:visible;visibility:visible;fill:none;stroke:#0b1521;stroke-width:1.84547901;marker:none;enable-background:accumulate"
cx="-91.928146"
cy="-42.321846" />
</g>
<path
style="fill:none;stroke:#042a2a;stroke-width:6;stroke-linecap:butt;stroke-linejoin:round;stroke-opacity:1"
d="M 5,17 41,23 59,9 25,5 z"
id="path3961"
inkscape:connector-curvature="0"
sodipodi:nodetypes="ccccc" />
<path
style="fill:none;stroke:#042a2a;stroke-width:6;stroke-linecap:butt;stroke-linejoin:round;stroke-opacity:1"
d="M 59,9 59,43 41,59 41,23 z"
id="path2995"
inkscape:connector-curvature="0"
sodipodi:nodetypes="ccccc" />
<path
inkscape:connector-curvature="0"
sodipodi:nodetypes="ccccc"
id="path3825"
d="M 5,17 41,23 41,59 5,53 z"
style="fill:none;stroke:#042a2a;stroke-width:6;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" />
<path
style="fill:none;stroke:#19ff19;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-opacity:1;fill-opacity:1"
d="M 59,9 59,43 41,59 41,23 z"
id="path2995-7"
inkscape:connector-curvature="0"
sodipodi:nodetypes="ccccc" />
<path
inkscape:connector-curvature="0"
sodipodi:nodetypes="ccccc"
id="path3825-9"
d="M 5,17 41,23 41,59 5,53 z"
style="fill:none;stroke:#19ff19;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;fill-opacity:1" />
<path
style="fill:none;stroke:#19ff19;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
d="M 5,17 25,5 59,9 41,23 z"
id="path3970"
inkscape:connector-curvature="0"
sodipodi:nodetypes="ccccc" />
<g
transform="matrix(-0.54545355,0,0,0.54545355,66.605911,31.253185)"
id="g4147">
<path
sodipodi:nodetypes="cccccccc"
inkscape:connector-curvature="0"
id="path3761"
d="M 7,49 15,57 35,37 41,49 57,7 15,23 27,29 Z"
style="fill:url(#linearGradient3771);fill-opacity:1;stroke:#2e3436;stroke-width:3.66667342;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
<path
sodipodi:nodetypes="cccccccc"
inkscape:connector-curvature="0"
id="path3763"
d="M 10.962357,49 31.571972,28.196969 21.91667,23.314394 52.305932,11.59872 40.631925,42.093042 35.82706,32.778233 15.095348,53.132991 Z"
style="fill:none;stroke:#ffffff;stroke-width:1.83333671;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 9.8 KiB

BIN
res/icons/set.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.0 KiB

BIN
res/icons/show.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.7 KiB

BIN
res/icons/showAll.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.5 KiB

BIN
res/icons/triangle.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 647 B

View File

@ -0,0 +1,531 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
width="64"
height="64"
id="svg1306"
version="1.1"
xmlns:xlink="http://www.w3.org/1999/xlink"
xmlns="http://www.w3.org/2000/svg"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:dc="http://purl.org/dc/elements/1.1/">
<title
id="title1">Terminal</title>
<defs
id="defs1308">
<linearGradient
id="linearGradient32">
<stop
style="stop-color:#181f10;stop-opacity:1;"
offset="0"
id="stop31" />
<stop
style="stop-color:#4e9a06;stop-opacity:1;"
offset="1"
id="stop32" />
</linearGradient>
<linearGradient
id="linearGradient30">
<stop
style="stop-color:#181f10;stop-opacity:1;"
offset="0"
id="stop29" />
<stop
style="stop-color:#4e9a06;stop-opacity:1;"
offset="1"
id="stop30" />
</linearGradient>
<linearGradient
id="linearGradient28">
<stop
style="stop-color:#181f10;stop-opacity:1;"
offset="0"
id="stop27" />
<stop
style="stop-color:#4e9a06;stop-opacity:1;"
offset="1"
id="stop28" />
</linearGradient>
<linearGradient
id="linearGradient26">
<stop
style="stop-color:#181f10;stop-opacity:1;"
offset="0"
id="stop25" />
<stop
style="stop-color:#4e9a06;stop-opacity:1;"
offset="1"
id="stop26" />
</linearGradient>
<linearGradient
id="linearGradient24">
<stop
style="stop-color:#181f10;stop-opacity:1;"
offset="0"
id="stop23" />
<stop
style="stop-color:#4e9a06;stop-opacity:1;"
offset="1"
id="stop24" />
</linearGradient>
<linearGradient
id="linearGradient22">
<stop
style="stop-color:#181f10;stop-opacity:1;"
offset="0"
id="stop21" />
<stop
style="stop-color:#4e9a06;stop-opacity:1;"
offset="1"
id="stop22" />
</linearGradient>
<linearGradient
id="linearGradient20">
<stop
style="stop-color:#181f10;stop-opacity:1;"
offset="0"
id="stop19" />
<stop
style="stop-color:#4e9a06;stop-opacity:1;"
offset="1"
id="stop20" />
</linearGradient>
<linearGradient
id="linearGradient18">
<stop
style="stop-color:#4e9a06;stop-opacity:1;"
offset="0"
id="stop17" />
<stop
style="stop-color:#181f10;stop-opacity:1;"
offset="1"
id="stop18" />
</linearGradient>
<linearGradient
id="linearGradient1">
<stop
style="stop-color:#4e9a06;stop-opacity:1;"
offset="0"
id="stop1" />
<stop
style="stop-color:#172a04;stop-opacity:1;"
offset="1"
id="stop2" />
</linearGradient>
<linearGradient
id="linearGradient5048">
<stop
style="stop-color:black;stop-opacity:0;"
offset="0"
id="stop5050" />
<stop
id="stop5056"
offset="0.5"
style="stop-color:black;stop-opacity:1;" />
<stop
style="stop-color:black;stop-opacity:0;"
offset="1"
id="stop5052" />
</linearGradient>
<linearGradient
id="linearGradient6447">
<stop
style="stop-color:#777973;stop-opacity:1;"
offset="0"
id="stop6449" />
<stop
style="stop-color:#777973;stop-opacity:0;"
offset="1"
id="stop6451" />
</linearGradient>
<linearGradient
id="linearGradient4254">
<stop
style="stop-color:#616161;stop-opacity:1.0000000;"
offset="0.0000000"
id="stop4256" />
<stop
style="stop-color:#a0a0a0;stop-opacity:1.0000000;"
offset="1.0000000"
id="stop4258" />
</linearGradient>
<linearGradient
id="linearGradient5176">
<stop
id="stop5178"
offset="0.0000000"
style="stop-color:#a2a59c;stop-opacity:1.0000000;" />
<stop
id="stop5180"
offset="1.0000000"
style="stop-color:#535750;stop-opacity:1.0000000;" />
</linearGradient>
<linearGradient
id="linearGradient2667">
<stop
id="stop2669"
offset="0.0000000"
style="stop-color:#ffffff;stop-opacity:1.0000000;" />
<stop
id="stop2671"
offset="1.0000000"
style="stop-color:#fcfcff;stop-opacity:0.0000000;" />
</linearGradient>
<linearGradient
gradientUnits="userSpaceOnUse"
y2="26.729263"
x2="17.199417"
y1="1.6537577"
x1="11.492236"
gradientTransform="matrix(1.236157,0,0,0.896051,0.42190124,6.3256674)"
id="linearGradient2673"
xlink:href="#linearGradient2667" />
<linearGradient
id="linearGradient2238">
<stop
style="stop-color:#ffffff;stop-opacity:1;"
offset="0"
id="stop2240" />
<stop
style="stop-color:#ffffff;stop-opacity:0;"
offset="1"
id="stop2242" />
</linearGradient>
<linearGradient
id="linearGradient2224">
<stop
style="stop-color:#32342f;stop-opacity:0.54639173;"
offset="0.0000000"
id="stop2226" />
<stop
style="stop-color:#32342f;stop-opacity:0;"
offset="1"
id="stop2228" />
</linearGradient>
<linearGradient
id="linearGradient2214">
<stop
style="stop-color:#a9aaa7;stop-opacity:1.0000000;"
offset="0.0000000"
id="stop2216" />
<stop
style="stop-color:#676964;stop-opacity:1.0000000;"
offset="1.0000000"
id="stop2218" />
</linearGradient>
<linearGradient
id="linearGradient2206">
<stop
style="stop-color:#777973;stop-opacity:1.0000000;"
offset="0.0000000"
id="stop2208" />
<stop
style="stop-color:#cbccca;stop-opacity:1.0000000;"
offset="1.0000000"
id="stop2210" />
</linearGradient>
<linearGradient
id="linearGradient2198">
<stop
style="stop-color:#748f48;stop-opacity:1.0000000;"
offset="0.0000000"
id="stop2200" />
<stop
style="stop-color:#1f2816;stop-opacity:1.0000000;"
offset="1.0000000"
id="stop2202" />
</linearGradient>
<linearGradient
xlink:href="#linearGradient2198"
id="linearGradient2204"
x1="23.118565"
y1="9.5830288"
x2="22.440805"
y2="34.225887"
gradientUnits="userSpaceOnUse"
gradientTransform="matrix(0.950085,0,0,0.965659,2.7476992,3.7503104)" />
<linearGradient
xlink:href="#linearGradient2206"
id="linearGradient2212"
x1="29.870447"
y1="32.28574"
x2="24.841814"
y2="14.157946"
gradientUnits="userSpaceOnUse"
gradientTransform="matrix(0.957412,0,0,0.952331,2.5264872,3.6282754)" />
<linearGradient
xlink:href="#linearGradient5176"
id="linearGradient2220"
x1="8.6529236"
y1="9.5865316"
x2="21.305075"
y2="32.497993"
gradientUnits="userSpaceOnUse"
gradientTransform="matrix(0.957412,0,0,0.952331,2.5264872,3.6282754)" />
<radialGradient
xlink:href="#linearGradient2224"
id="radialGradient2230"
cx="24.04163"
cy="42.24213"
fx="24.04163"
fy="42.24213"
r="17.576654"
gradientTransform="matrix(1,0,0,0.304598,0,29.37527)"
gradientUnits="userSpaceOnUse" />
<linearGradient
xlink:href="#linearGradient2238"
id="linearGradient2244"
x1="20.338758"
y1="19.636894"
x2="48.845253"
y2="49.730762"
gradientUnits="userSpaceOnUse"
gradientTransform="matrix(0.953506,0,0,0.947873,2.6452492,4.7005594)" />
<linearGradient
xlink:href="#linearGradient4254"
id="linearGradient4260"
x1="11.048059"
y1="9.146349"
x2="26.178129"
y2="30.343304"
gradientUnits="userSpaceOnUse"
gradientTransform="matrix(0.997583,0,0,0.989941,1.6078622,3.5652571)" />
<linearGradient
xlink:href="#linearGradient2214"
id="linearGradient5719"
x1="40.253334"
y1="42.318577"
x2="36.451904"
y2="37.999615"
gradientUnits="userSpaceOnUse"
gradientTransform="matrix(1,0,0,0.744756,1.5037212,13.0641)" />
<radialGradient
xlink:href="#linearGradient6447"
id="radialGradient6453"
cx="37.495605"
cy="39.510021"
fx="37.495605"
fy="39.510021"
r="2.5100369"
gradientTransform="matrix(1,0,0,0.73779,1.5037212,13.339289)"
gradientUnits="userSpaceOnUse" />
<linearGradient
xlink:href="#linearGradient2206"
id="linearGradient3080"
gradientUnits="userSpaceOnUse"
gradientTransform="matrix(0.94928252,0,0,0.93918318,2.7997684,3.9439835)"
x1="29.870447"
y1="32.28574"
x2="24.841814"
y2="14.157946" />
<linearGradient
xlink:href="#linearGradient1"
id="linearGradient2"
x1="6.7350527"
y1="25.726682"
x2="44.430041"
y2="25.726682"
gradientUnits="userSpaceOnUse"
gradientTransform="matrix(0.99862522,0,0,1.0102174,0.03517192,0.1756917)" />
<linearGradient
xlink:href="#linearGradient18"
id="linearGradient4"
x1="7.5632453"
y1="36.024754"
x2="47.587044"
y2="5.7833366"
gradientUnits="userSpaceOnUse"
gradientTransform="matrix(1,0,0,0.99603576,-6.0633115e-8,0.84173619)" />
<linearGradient
xlink:href="#linearGradient20"
id="linearGradient5"
x1="8.0152033"
y1="13.770443"
x2="39.994145"
y2="13.770443"
gradientUnits="userSpaceOnUse"
gradientTransform="translate(0,1.4802493)" />
<linearGradient
xlink:href="#linearGradient22"
id="linearGradient6"
x1="8.0152033"
y1="16.078062"
x2="39.994145"
y2="16.078062"
gradientUnits="userSpaceOnUse"
gradientTransform="translate(0,1.4805574)" />
<linearGradient
xlink:href="#linearGradient24"
id="linearGradient7"
x1="8.0152033"
y1="18.385681"
x2="39.994145"
y2="18.385681"
gradientUnits="userSpaceOnUse"
gradientTransform="translate(0,2.2203199)" />
<linearGradient
xlink:href="#linearGradient26"
id="linearGradient8"
x1="8.0152033"
y1="20.6933"
x2="39.994145"
y2="20.6933"
gradientUnits="userSpaceOnUse"
gradientTransform="translate(0,2.9608226)" />
<linearGradient
xlink:href="#linearGradient28"
id="linearGradient9"
x1="8.0152033"
y1="23.00092"
x2="39.994145"
y2="23.00092"
gradientUnits="userSpaceOnUse"
gradientTransform="translate(0,3.7013243)" />
<linearGradient
xlink:href="#linearGradient30"
id="linearGradient10"
x1="8.0152033"
y1="25.308539"
x2="39.994145"
y2="25.308539"
gradientUnits="userSpaceOnUse"
gradientTransform="translate(0,4.4410868)" />
<linearGradient
xlink:href="#linearGradient32"
id="linearGradient11"
x1="8.0152033"
y1="27.616158"
x2="39.994145"
y2="27.616158"
gradientUnits="userSpaceOnUse"
gradientTransform="translate(0,5.1815895)" />
<linearGradient
xlink:href="#linearGradient1"
id="linearGradient3"
gradientUnits="userSpaceOnUse"
x1="4.254189"
y1="25.283258"
x2="44.430041"
y2="25.726682"
gradientTransform="matrix(0.99111559,0,0,0.99102939,0.2277939,0.29935716)" />
</defs>
<metadata
id="metadata1311">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
<dc:title>Terminal</dc:title>
<dc:date>2005-10-15</dc:date>
<dc:creator>
<cc:Agent>
<dc:title>Andreas Nilsson</dc:title>
</cc:Agent>
</dc:creator>
<dc:subject>
<rdf:Bag>
<rdf:li>terminal</rdf:li>
<rdf:li>emulator</rdf:li>
<rdf:li>term</rdf:li>
<rdf:li>command line</rdf:li>
</rdf:Bag>
</dc:subject>
<cc:license
rdf:resource="http://creativecommons.org/licenses/by-sa/2.0/" />
<dc:contributor>
<cc:Agent>
<dc:title>Jakub Steiner</dc:title>
</cc:Agent>
</dc:contributor>
</cc:Work>
<cc:License
rdf:about="http://creativecommons.org/licenses/by-sa/2.0/">
<cc:permits
rdf:resource="http://web.resource.org/cc/Reproduction" />
<cc:permits
rdf:resource="http://web.resource.org/cc/Distribution" />
<cc:requires
rdf:resource="http://web.resource.org/cc/Notice" />
<cc:requires
rdf:resource="http://web.resource.org/cc/Attribution" />
<cc:permits
rdf:resource="http://web.resource.org/cc/DerivativeWorks" />
<cc:requires
rdf:resource="http://web.resource.org/cc/ShareAlike" />
</cc:License>
</rdf:RDF>
</metadata>
<g
id="layer1"
transform="matrix(0.89775931,0,0,1.0391947,3.2717033,15.319603)">
<g
id="g3056"
transform="matrix(1.3000412,0,0,1.3000412,-1.2583651,-18.445746)">
<rect
ry="4.7744656"
rx="4.8170815"
y="7.3464041"
x="3.2450914"
height="38.377842"
width="44.674904"
id="rect1316"
style="display:inline;fill:#d3d7cf;fill-opacity:1;fill-rule:evenodd;stroke:#2e3436;stroke-width:1.59267;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
<path
ry="4.7744656"
rx="4.8170815"
y="7.3464041"
x="3.2450914"
height="38.377842"
width="44.674904"
id="rect3"
style="font-variation-settings:normal;display:inline;opacity:1;vector-effect:none;fill:url(#linearGradient3080);fill-opacity:1;fill-rule:evenodd;stroke:#eeeeec;stroke-width:1.59274;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;-inkscape-stroke:none;stop-color:#000000;stop-opacity:1"
d="m 8.0625,8.9375 h 35.041016 c 1.794533,0 3.224609,1.427677 3.224609,3.183594 v 28.828125 c 0,1.755916 -1.430076,3.183593 -3.224609,3.183593 H 8.0625 c -1.7945337,0 -3.2265625,-1.428485 -3.2265625,-3.183593 V 12.121094 C 4.8359375,10.365986 6.2679663,8.9375 8.0625,8.9375 Z" />
<rect
ry="1.6300802"
rx="1.6016922"
y="11.787557"
x="7.5291123"
height="28.755348"
width="36.106865"
id="rect1314"
style="display:inline;fill:url(#linearGradient2);fill-opacity:1;fill-rule:evenodd;stroke:#555753;stroke-width:1.59263;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
<path
ry="1.6300802"
rx="1.6016922"
y="11.787557"
x="7.5291123"
height="28.755348"
width="36.106865"
id="rect4"
style="font-variation-settings:normal;display:inline;opacity:1;fill:url(#linearGradient3);fill-opacity:1;fill-rule:evenodd;stroke:#73d216;stroke-width:1.59274;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;stop-color:#000000;stop-opacity:1"
d="M 9.1308594,13.378906 H 42.035156 l 0.0098,0.03906 v 25.49414 l -0.0098,0.03906 H 9.1308594 l -0.00977,-0.03906 v -25.49414 z" />
<g
transform="matrix(0.93776916,0,0,1.0022883,2.6436508,3.2282312)"
style="display:inline;opacity:1"
id="g2286">
<path
id="path1345"
style="display:inline;fill:none;stroke:url(#linearGradient4);stroke-width:1.64274;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
d="M 8.0151607,12.259177 H 39.993438 Z m 0,3.035255 H 39.993438 Z m 0,2.299435 H 39.993438 Z m 0,3.035255 H 39.993438 Z m 0,3.035255 H 39.993438 Z m 0,3.036693 H 39.993438 Z m 0,3.035255 H 39.993438 Z m 0,3.035255 H 39.993438 Z" />
</g>
<path
id="text1340"
d="M 12.670084,24.150029 V 21.10756 l 9.021843,4.044943 v 1.848675 l -9.021843,4.071479 v -3.033431 l 6.993087,-1.846621 z m 18.970466,9.987224 v 1.966489 H 20.692226 V 34.137253 H 31.64055"
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:18.585px;line-height:125%;font-family:'Bitstream Vera Sans Mono';text-align:start;writing-mode:lr-tb;text-anchor:start;display:inline;fill:#ffffff;fill-opacity:1;stroke:#6ed66e;stroke-width:1.5929;stroke-linecap:butt;stroke-linejoin:miter;stroke-dasharray:none;stroke-opacity:0.278689" />
<rect
ry="0.11987002"
rx="0.11602388"
y="12.897901"
x="8.814373"
height="26.530636"
width="33.532314"
id="rect1340"
style="display:inline;opacity:1;fill:none;stroke:#2e3436;stroke-width:1.59274;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 18 KiB

View File

@ -0,0 +1,223 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
width="64px"
height="64px"
id="svg6248"
version="1.1"
xmlns:xlink="http://www.w3.org/1999/xlink"
xmlns="http://www.w3.org/2000/svg"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:dc="http://purl.org/dc/elements/1.1/">
<defs
id="defs6250">
<linearGradient
id="linearGradient4027">
<stop
style="stop-color:#16d0d2;stop-opacity:1"
offset="0"
id="stop4029" />
<stop
style="stop-color:#34e0e2;stop-opacity:1"
offset="1"
id="stop4031" />
</linearGradient>
<linearGradient
id="linearGradient3253">
<stop
style="stop-color:#89d5f8;stop-opacity:1;"
offset="0"
id="stop3255" />
<stop
style="stop-color:#00899e;stop-opacity:1;"
offset="1"
id="stop3257" />
</linearGradient>
<linearGradient
id="linearGradient6816">
<stop
style="stop-color:#000000;stop-opacity:1;"
offset="0"
id="stop6818" />
<stop
style="stop-color:#000000;stop-opacity:0;"
offset="1"
id="stop6820" />
</linearGradient>
<linearGradient
id="linearGradient6781">
<stop
style="stop-color:#ffffff;stop-opacity:1;"
offset="0"
id="stop6783" />
<stop
style="stop-color:#3465a4;stop-opacity:0;"
offset="1"
id="stop6785" />
</linearGradient>
<radialGradient
xlink:href="#linearGradient6816"
id="radialGradient6822"
cx="33.369828"
cy="51.929391"
fx="33.369828"
fy="51.929391"
r="25.198714"
gradientTransform="matrix(1.1581633,0,0,0.6558985,-7.29237,16.126077)"
gradientUnits="userSpaceOnUse" />
<radialGradient
xlink:href="#linearGradient3253"
id="radialGradient3259"
cx="18.417862"
cy="17.013988"
fx="18.417862"
fy="17.013988"
r="27.986705"
gradientTransform="matrix(0.9724373,-0.105657,5.0523169e-2,0.4650009,-0.3519546,9.5854384)"
gradientUnits="userSpaceOnUse" />
<radialGradient
xlink:href="#linearGradient3253"
id="radialGradient3270"
gradientUnits="userSpaceOnUse"
gradientTransform="matrix(0.9724373,-0.105657,0.05052317,0.4650009,-0.3519546,9.5854384)"
cx="18.417862"
cy="17.013988"
fx="18.417862"
fy="17.013988"
r="27.986705" />
<linearGradient
gradientTransform="translate(0,-2)"
xlink:href="#linearGradient3777"
id="linearGradient3783"
x1="53.896763"
y1="51.179787"
x2="47.502235"
y2="21.83742"
gradientUnits="userSpaceOnUse" />
<linearGradient
id="linearGradient3777">
<stop
style="stop-color:#204a87;stop-opacity:1"
offset="0"
id="stop3779" />
<stop
style="stop-color:#3465a4;stop-opacity:1"
offset="1"
id="stop3781" />
</linearGradient>
<linearGradient
xlink:href="#linearGradient4027"
id="linearGradient4033"
x1="26"
y1="54"
x2="20"
y2="20"
gradientUnits="userSpaceOnUse" />
<linearGradient
id="linearGradient3765">
<stop
style="stop-color:#d3d7cf;stop-opacity:1;"
offset="0"
id="stop3767" />
<stop
style="stop-color:#ffffff;stop-opacity:1"
offset="1"
id="stop3769" />
</linearGradient>
<linearGradient
xlink:href="#linearGradient3765"
id="linearGradient3771-4"
x1="35"
y1="51"
x2="31"
y2="18"
gradientUnits="userSpaceOnUse" />
<linearGradient
xlink:href="#linearGradient3873"
id="linearGradient4221"
gradientUnits="userSpaceOnUse"
gradientTransform="matrix(0,-2.0691034,0.48906084,0,16.27829,307.86774)"
x1="127.49857"
y1="8.0178137"
x2="129.43178"
y2="48.912521" />
<linearGradient
id="linearGradient3873">
<stop
style="stop-color:#ffffff;stop-opacity:1;"
offset="0"
id="stop3875" />
<stop
style="stop-color:#d3d7cf;stop-opacity:1"
offset="1"
id="stop3877" />
</linearGradient>
</defs>
<metadata
id="metadata6253">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
</cc:Work>
</rdf:RDF>
</metadata>
<g
id="layer1"
transform="matrix(0.89017797,0,0,0.88946473,3.5143052,3.5185759)">
<path
style="display:inline;opacity:0.6;fill:none;stroke:#042a2a;stroke-width:6.74293;stroke-linecap:butt;stroke-linejoin:round;stroke-dasharray:none;stroke-opacity:1"
d="M 5,17 41,23 59,9 25,5 Z"
id="path3961" />
<path
style="display:inline;opacity:0.6;fill:none;stroke:#042a2a;stroke-width:6.74293;stroke-linecap:butt;stroke-linejoin:round;stroke-dasharray:none;stroke-opacity:1"
d="M 59,9 V 43 L 41,59 V 23 Z"
id="path2995" />
<path
style="display:inline;opacity:0.6;fill:none;stroke:#042a2a;stroke-width:6.74292709;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:6.74292707,13.48585415;stroke-dashoffset:11.86755165;stroke-opacity:1"
d="M 25,5 V 39 L 5,53 V 17 Z"
id="path2995-1" />
<path
id="path3825-7"
d="M 25,5 59,9 V 43 L 25,39 Z"
style="display:inline;overflow:visible;visibility:visible;opacity:0.6;fill:none;stroke:#042a2a;stroke-width:6.74293;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:6.74293, 13.4859;stroke-dashoffset:0;stroke-opacity:1;marker:none;enable-background:accumulate" />
<path
id="path3825-7-7"
d="M 25,5 59,9 V 43 L 25,39 Z"
style="display:inline;overflow:visible;visibility:visible;opacity:0.6;fill:none;stroke:#34e0e2;stroke-width:2.24764;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:6.74293, 13.4859;stroke-dashoffset:0;stroke-opacity:1;marker:none;enable-background:accumulate" />
<path
id="path3825"
d="m 5,17 36,6 V 59 L 5,53 Z"
style="display:inline;overflow:visible;visibility:visible;opacity:0.6;fill:none;stroke:#042a2a;stroke-width:6.74293;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;enable-background:accumulate" />
<path
style="display:inline;opacity:0.6;fill:none;fill-opacity:1;stroke:#34e0e2;stroke-width:2.24764;stroke-linecap:butt;stroke-linejoin:round;stroke-dasharray:none;stroke-opacity:1"
d="M 59,9 V 43 L 41,59 V 23 Z"
id="path2995-7" />
<path
style="display:inline;opacity:0.6;fill:none;stroke:#34e0e2;stroke-width:2.24764;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:6.74291968,13.48583937;stroke-dashoffset:11.86753864;stroke-opacity:1"
d="M 25,5 V 39 L 5,53 V 17 Z"
id="path2995-1-0" />
<path
id="path3825-9"
d="m 5,17 36,6 V 59 L 5,53 Z"
style="display:inline;overflow:visible;visibility:visible;opacity:0.6;fill:url(#linearGradient4033);fill-opacity:1;stroke:#34e0e2;stroke-width:2.24764;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;enable-background:accumulate" />
<path
style="display:inline;opacity:0.6;fill:none;stroke:#34e0e2;stroke-width:2.24764;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
d="M 5,17 25,5 59,9 41,23 Z"
id="path3970" />
<ellipse
style="display:inline;opacity:1;fill:#ef2929;stroke:#cc0000;stroke-width:6.74293;stroke-dasharray:none"
id="path1"
cx="40.750065"
cy="21.741346"
rx="6.5032139"
ry="6.4134073" />
</g>
<path
style="display:inline;fill:url(#linearGradient4221);fill-opacity:1;stroke:#042a2a;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1"
d="m 39.199488,57.060024 -12,-12 -4,6 -7,-21 21,7 -6,4 12,12 z"
id="rect3871" />
</svg>

After

Width:  |  Height:  |  Size: 8.3 KiB

View File

@ -0,0 +1,212 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:xlink="http://www.w3.org/1999/xlink"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
width="64px"
height="64px"
id="svg6248"
sodipodi:version="0.32"
inkscape:version="0.48.5 r10040"
sodipodi:docname="view-axonometric.svg"
inkscape:output_extension="org.inkscape.output.svg.inkscape"
version="1.1">
<defs
id="defs6250">
<linearGradient
id="linearGradient3253">
<stop
style="stop-color:#89d5f8;stop-opacity:1;"
offset="0"
id="stop3255" />
<stop
style="stop-color:#00899e;stop-opacity:1;"
offset="1"
id="stop3257" />
</linearGradient>
<linearGradient
inkscape:collect="always"
id="linearGradient6816">
<stop
style="stop-color:#000000;stop-opacity:1;"
offset="0"
id="stop6818" />
<stop
style="stop-color:#000000;stop-opacity:0;"
offset="1"
id="stop6820" />
</linearGradient>
<linearGradient
id="linearGradient6781">
<stop
style="stop-color:#ffffff;stop-opacity:1;"
offset="0"
id="stop6783" />
<stop
style="stop-color:#3465a4;stop-opacity:0;"
offset="1"
id="stop6785" />
</linearGradient>
<inkscape:perspective
sodipodi:type="inkscape:persp3d"
inkscape:vp_x="0 : 32 : 1"
inkscape:vp_y="0 : 1000 : 0"
inkscape:vp_z="64 : 32 : 1"
inkscape:persp3d-origin="32 : 21.333333 : 1"
id="perspective6256" />
<radialGradient
inkscape:collect="always"
xlink:href="#linearGradient6816"
id="radialGradient6822"
cx="33.369828"
cy="51.929391"
fx="33.369828"
fy="51.929391"
r="25.198714"
gradientTransform="matrix(1.1581633,0,0,0.6558985,-7.29237,16.126077)"
gradientUnits="userSpaceOnUse" />
<radialGradient
inkscape:collect="always"
xlink:href="#linearGradient3253"
id="radialGradient3259"
cx="18.417862"
cy="17.013988"
fx="18.417862"
fy="17.013988"
r="27.986705"
gradientTransform="matrix(0.9724373,-0.105657,5.0523169e-2,0.4650009,-0.3519546,9.5854384)"
gradientUnits="userSpaceOnUse" />
<radialGradient
inkscape:collect="always"
xlink:href="#linearGradient3253"
id="radialGradient3270"
gradientUnits="userSpaceOnUse"
gradientTransform="matrix(0.9724373,-0.105657,0.05052317,0.4650009,-0.3519546,9.5854384)"
cx="18.417862"
cy="17.013988"
fx="18.417862"
fy="17.013988"
r="27.986705" />
</defs>
<sodipodi:namedview
id="base"
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1.0"
inkscape:pageopacity="0.0"
inkscape:pageshadow="2"
inkscape:zoom="1.9445437"
inkscape:cx="-32.246604"
inkscape:cy="79.711844"
inkscape:current-layer="g3913-7"
showgrid="true"
inkscape:document-units="px"
inkscape:grid-bbox="true"
inkscape:window-width="1600"
inkscape:window-height="837"
inkscape:window-x="0"
inkscape:window-y="27"
inkscape:snap-bbox="true"
inkscape:snap-nodes="false"
inkscape:window-maximized="1">
<inkscape:grid
type="xygrid"
id="grid3001"
empspacing="2"
visible="true"
enabled="true"
snapvisiblegridlinesonly="true" />
</sodipodi:namedview>
<metadata
id="metadata6253">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
<dc:title />
</cc:Work>
</rdf:RDF>
</metadata>
<g
id="layer1"
inkscape:label="Layer 1"
inkscape:groupmode="layer">
<g
id="g3913-7"
transform="matrix(-1,0,0,0.99363058,4,0.0382165)">
<path
sodipodi:nodetypes="ccccc"
inkscape:connector-curvature="0"
id="path3003-5-3-0"
d="m -55,47.282051 27,-7.692307 0,-34.615385 -27,11.717949 z"
style="fill:none;stroke:#042a2a;stroke-width:6.01919985;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:6.01920003, 12.03840006;stroke-dashoffset:6.01920003" />
<path
sodipodi:nodetypes="ccccc"
inkscape:connector-curvature="0"
id="path3003-5-3-1-9"
d="m -55,47.282051 27,-7.692307 0,-34.615385 -27,11.717949 z"
style="fill:none;stroke:#16d0d2;stroke-width:2.00640011;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:6.01920003, 12.03840006;stroke-dashoffset:6.01920003" />
</g>
<g
id="g3913"
transform="translate(60,0)">
<path
sodipodi:nodetypes="ccccc"
inkscape:connector-curvature="0"
id="path3003-5-3"
d="M -55,47.307692 -28,39.615385 -28,5 -55,16.692308 z"
style="fill:none;stroke:#042a2a;stroke-width:6;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:6, 12;stroke-dashoffset:6" />
<path
sodipodi:nodetypes="ccccc"
inkscape:connector-curvature="0"
id="path3003-5-3-1"
d="M -55,47.307692 -28,39.615385 -28,5 -55,16.692308 z"
style="fill:none;stroke:#16d0d2;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:6, 12;stroke-dashoffset:6" />
</g>
<path
style="fill:none;stroke:#042a2a;stroke-width:6;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
d="M 32,59 5,47.307692 5,16.692308 32,28.384615 z"
id="path3003"
inkscape:connector-curvature="0"
sodipodi:nodetypes="ccccc" />
<path
style="fill:none;stroke:#042a2a;stroke-width:6;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
d="M 32,59 59,47.307692 59,16.692308 32,28.384615 z"
id="path3003-5"
inkscape:connector-curvature="0"
sodipodi:nodetypes="ccccc" />
<path
style="fill:none;stroke:#042a2a;stroke-width:6;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
d="M 59,16.692308 32,28.384615 5,16.692308 32,5 z"
id="path3003-2-2"
inkscape:connector-curvature="0"
sodipodi:nodetypes="ccccc" />
<path
style="fill:none;stroke:#16d0d2;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
d="M 32,59 5,47.307692 5,16.692308 32,28.384615 z"
id="path3003-3"
inkscape:connector-curvature="0"
sodipodi:nodetypes="ccccc" />
<path
style="fill:none;stroke:#16d0d2;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
d="M 32,59 59,47.307692 59,16.692308 32,28.384615 z"
id="path3003-5-6"
inkscape:connector-curvature="0"
sodipodi:nodetypes="ccccc" />
<path
style="fill:none;stroke:#34e0e2;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
d="M 59,16.692308 32,28.384615 5,16.692308 32,5 z"
id="path3003-2"
inkscape:connector-curvature="0"
sodipodi:nodetypes="ccccc" />
</g>
</svg>

After

Width:  |  Height:  |  Size: 7.7 KiB

210
res/icons/view-bottom.svg Normal file
View File

@ -0,0 +1,210 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:xlink="http://www.w3.org/1999/xlink"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
width="64px"
height="64px"
id="svg6248"
sodipodi:version="0.32"
inkscape:version="0.48.5 r10040"
sodipodi:docname="view-top.svg"
inkscape:output_extension="org.inkscape.output.svg.inkscape"
version="1.1">
<defs
id="defs6250">
<linearGradient
id="linearGradient3253">
<stop
style="stop-color:#89d5f8;stop-opacity:1;"
offset="0"
id="stop3255" />
<stop
style="stop-color:#00899e;stop-opacity:1;"
offset="1"
id="stop3257" />
</linearGradient>
<linearGradient
inkscape:collect="always"
id="linearGradient6816">
<stop
style="stop-color:#000000;stop-opacity:1;"
offset="0"
id="stop6818" />
<stop
style="stop-color:#000000;stop-opacity:0;"
offset="1"
id="stop6820" />
</linearGradient>
<linearGradient
id="linearGradient6781">
<stop
style="stop-color:#ffffff;stop-opacity:1;"
offset="0"
id="stop6783" />
<stop
style="stop-color:#3465a4;stop-opacity:0;"
offset="1"
id="stop6785" />
</linearGradient>
<inkscape:perspective
sodipodi:type="inkscape:persp3d"
inkscape:vp_x="-81.834999 : 121.93486 : 1"
inkscape:vp_y="0 : 1000 : 0"
inkscape:vp_z="158.69906 : 94.577031 : 1"
inkscape:persp3d-origin="32 : 21.333333 : 1"
id="perspective6256" />
<radialGradient
inkscape:collect="always"
xlink:href="#linearGradient6816"
id="radialGradient6822"
cx="33.369828"
cy="51.929391"
fx="33.369828"
fy="51.929391"
r="25.198714"
gradientTransform="matrix(1.1581633,0,0,0.6558985,-7.29237,16.126077)"
gradientUnits="userSpaceOnUse" />
<radialGradient
inkscape:collect="always"
xlink:href="#linearGradient3253"
id="radialGradient3259"
cx="18.417862"
cy="17.013988"
fx="18.417862"
fy="17.013988"
r="27.986705"
gradientTransform="matrix(0.9724373,-0.105657,5.0523169e-2,0.4650009,-0.3519546,9.5854384)"
gradientUnits="userSpaceOnUse" />
<radialGradient
inkscape:collect="always"
xlink:href="#linearGradient3253"
id="radialGradient3270"
gradientUnits="userSpaceOnUse"
gradientTransform="matrix(0.9724373,-0.105657,0.05052317,0.4650009,-0.3519546,9.5854384)"
cx="18.417862"
cy="17.013988"
fx="18.417862"
fy="17.013988"
r="27.986705" />
</defs>
<sodipodi:namedview
id="base"
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1.0"
inkscape:pageopacity="0.0"
inkscape:pageshadow="2"
inkscape:zoom="3.8890873"
inkscape:cx="6.2641943"
inkscape:cy="50.969784"
inkscape:current-layer="layer1"
showgrid="true"
inkscape:document-units="px"
inkscape:grid-bbox="true"
inkscape:window-width="1600"
inkscape:window-height="837"
inkscape:window-x="0"
inkscape:window-y="27"
inkscape:snap-bbox="true"
inkscape:snap-nodes="true"
inkscape:window-maximized="1">
<inkscape:grid
type="xygrid"
id="grid3001"
empspacing="2"
visible="true"
enabled="true"
snapvisiblegridlinesonly="true" />
</sodipodi:namedview>
<metadata
id="metadata6253">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
<dc:title></dc:title>
</cc:Work>
</rdf:RDF>
</metadata>
<g
id="layer1"
inkscape:label="Layer 1"
inkscape:groupmode="layer">
<path
style="fill:none;stroke:#042a2a;stroke-width:6;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:6,12;stroke-dashoffset:13.2"
d="M 25,5 25,39 5,53 5,17 z"
id="path2995-1"
inkscape:connector-curvature="0"
sodipodi:nodetypes="ccccc" />
<path
style="fill:none;stroke:#34e0e2;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:6, 12;stroke-dashoffset:13.19999999999999929"
d="M 25,5 25,39 5,53 5,17 z"
id="path2995-1-0"
inkscape:connector-curvature="0"
sodipodi:nodetypes="ccccc" />
<path
inkscape:connector-curvature="0"
sodipodi:nodetypes="ccccc"
id="path3825-7"
d="M 25,5 59,9 59,43 25,39 z"
style="fill:none;stroke:#042a2a;stroke-width:6;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:6, 12;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" />
<path
inkscape:connector-curvature="0"
sodipodi:nodetypes="ccccc"
id="path3825-7-7"
d="M 25,5 59,9 59,43 25,39 z"
style="fill:none;stroke:#34e0e2;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:6, 12;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" />
<path
style="fill:none;stroke:#042a2a;stroke-width:6;stroke-linecap:butt;stroke-linejoin:round;stroke-opacity:1"
d="M 5,17 41,23 59,9 25,5 z"
id="path3961"
inkscape:connector-curvature="0"
sodipodi:nodetypes="ccccc" />
<path
style="fill:#34e0e2;stroke:#042a2a;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
d="M 25,37 3,51 41,59 61,41 z"
id="path4139"
inkscape:connector-curvature="0"
sodipodi:nodetypes="ccccc" />
<path
style="fill:none;stroke:#042a2a;stroke-width:6;stroke-linecap:butt;stroke-linejoin:round;stroke-opacity:1"
d="M 59,9 59,43 41,59 41,23 z"
id="path2995"
inkscape:connector-curvature="0"
sodipodi:nodetypes="ccccc" />
<path
inkscape:connector-curvature="0"
sodipodi:nodetypes="ccccc"
id="path3825"
d="M 5,17 41,23 41,59 5,53 z"
style="fill:none;stroke:#042a2a;stroke-width:6;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" />
<path
style="fill:none;stroke:#34e0e2;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-opacity:1;fill-opacity:1"
d="M 59,9 59,43 41,59 41,23 z"
id="path2995-7"
inkscape:connector-curvature="0"
sodipodi:nodetypes="ccccc" />
<path
inkscape:connector-curvature="0"
sodipodi:nodetypes="ccccc"
id="path3825-9"
d="M 5,17 41,23 41,59 5,53 z"
style="fill:none;stroke:#34e0e2;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;fill-opacity:1" />
<path
style="fill:none;stroke:#34e0e2;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
d="M 5,17 25,5 59,9 41,23 z"
id="path3970"
inkscape:connector-curvature="0"
sodipodi:nodetypes="ccccc" />
</g>
</svg>

After

Width:  |  Height:  |  Size: 7.8 KiB

247
res/icons/view-front.svg Normal file
View File

@ -0,0 +1,247 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:xlink="http://www.w3.org/1999/xlink"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
width="64px"
height="64px"
id="svg6248"
sodipodi:version="0.32"
inkscape:version="0.48.5 r10040"
sodipodi:docname="view-right.svg"
inkscape:output_extension="org.inkscape.output.svg.inkscape"
version="1.1">
<defs
id="defs6250">
<linearGradient
inkscape:collect="always"
id="linearGradient4027">
<stop
style="stop-color:#16d0d2;stop-opacity:1"
offset="0"
id="stop4029" />
<stop
style="stop-color:#34e0e2;stop-opacity:1"
offset="1"
id="stop4031" />
</linearGradient>
<linearGradient
id="linearGradient3253">
<stop
style="stop-color:#89d5f8;stop-opacity:1;"
offset="0"
id="stop3255" />
<stop
style="stop-color:#00899e;stop-opacity:1;"
offset="1"
id="stop3257" />
</linearGradient>
<linearGradient
inkscape:collect="always"
id="linearGradient6816">
<stop
style="stop-color:#000000;stop-opacity:1;"
offset="0"
id="stop6818" />
<stop
style="stop-color:#000000;stop-opacity:0;"
offset="1"
id="stop6820" />
</linearGradient>
<linearGradient
id="linearGradient6781">
<stop
style="stop-color:#ffffff;stop-opacity:1;"
offset="0"
id="stop6783" />
<stop
style="stop-color:#3465a4;stop-opacity:0;"
offset="1"
id="stop6785" />
</linearGradient>
<inkscape:perspective
sodipodi:type="inkscape:persp3d"
inkscape:vp_x="-81.834999 : 121.93486 : 1"
inkscape:vp_y="0 : 1000 : 0"
inkscape:vp_z="158.69906 : 94.577031 : 1"
inkscape:persp3d-origin="32 : 21.333333 : 1"
id="perspective6256" />
<radialGradient
inkscape:collect="always"
xlink:href="#linearGradient6816"
id="radialGradient6822"
cx="33.369828"
cy="51.929391"
fx="33.369828"
fy="51.929391"
r="25.198714"
gradientTransform="matrix(1.1581633,0,0,0.6558985,-7.29237,16.126077)"
gradientUnits="userSpaceOnUse" />
<radialGradient
inkscape:collect="always"
xlink:href="#linearGradient3253"
id="radialGradient3259"
cx="18.417862"
cy="17.013988"
fx="18.417862"
fy="17.013988"
r="27.986705"
gradientTransform="matrix(0.9724373,-0.105657,5.0523169e-2,0.4650009,-0.3519546,9.5854384)"
gradientUnits="userSpaceOnUse" />
<radialGradient
inkscape:collect="always"
xlink:href="#linearGradient3253"
id="radialGradient3270"
gradientUnits="userSpaceOnUse"
gradientTransform="matrix(0.9724373,-0.105657,0.05052317,0.4650009,-0.3519546,9.5854384)"
cx="18.417862"
cy="17.013988"
fx="18.417862"
fy="17.013988"
r="27.986705" />
<linearGradient
gradientTransform="translate(0,-2)"
inkscape:collect="always"
xlink:href="#linearGradient3777"
id="linearGradient3783"
x1="53.896763"
y1="51.179787"
x2="47.502235"
y2="21.83742"
gradientUnits="userSpaceOnUse" />
<linearGradient
inkscape:collect="always"
id="linearGradient3777">
<stop
style="stop-color:#204a87;stop-opacity:1"
offset="0"
id="stop3779" />
<stop
style="stop-color:#3465a4;stop-opacity:1"
offset="1"
id="stop3781" />
</linearGradient>
<linearGradient
inkscape:collect="always"
xlink:href="#linearGradient4027"
id="linearGradient4033"
x1="26"
y1="54"
x2="20"
y2="20"
gradientUnits="userSpaceOnUse" />
</defs>
<sodipodi:namedview
id="base"
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1.0"
inkscape:pageopacity="0.0"
inkscape:pageshadow="2"
inkscape:zoom="5.5"
inkscape:cx="65.264828"
inkscape:cy="41.386298"
inkscape:current-layer="layer1"
showgrid="true"
inkscape:document-units="px"
inkscape:grid-bbox="true"
inkscape:window-width="1600"
inkscape:window-height="837"
inkscape:window-x="0"
inkscape:window-y="27"
inkscape:snap-bbox="true"
inkscape:snap-nodes="true"
inkscape:window-maximized="1">
<inkscape:grid
type="xygrid"
id="grid3001"
empspacing="2"
visible="true"
enabled="true"
snapvisiblegridlinesonly="true" />
</sodipodi:namedview>
<metadata
id="metadata6253">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
<dc:title></dc:title>
</cc:Work>
</rdf:RDF>
</metadata>
<g
id="layer1"
inkscape:label="Layer 1"
inkscape:groupmode="layer">
<path
style="fill:none;stroke:#042a2a;stroke-width:6;stroke-linecap:butt;stroke-linejoin:round;stroke-opacity:1"
d="M 5,17 41,23 59,9 25,5 z"
id="path3961"
inkscape:connector-curvature="0"
sodipodi:nodetypes="ccccc" />
<path
style="fill:none;stroke:#042a2a;stroke-width:6;stroke-linecap:butt;stroke-linejoin:round;stroke-opacity:1"
d="M 59,9 59,43 41,59 41,23 z"
id="path2995"
inkscape:connector-curvature="0"
sodipodi:nodetypes="ccccc" />
<path
style="fill:none;stroke:#042a2a;stroke-width:6;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:6,12;stroke-dashoffset:13.2"
d="M 25,5 25,39 5,53 5,17 z"
id="path2995-1"
inkscape:connector-curvature="0"
sodipodi:nodetypes="ccccc" />
<path
inkscape:connector-curvature="0"
sodipodi:nodetypes="ccccc"
id="path3825-7"
d="M 25,5 59,9 59,43 25,39 z"
style="fill:none;stroke:#042a2a;stroke-width:6;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:6, 12;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" />
<path
inkscape:connector-curvature="0"
sodipodi:nodetypes="ccccc"
id="path3825-7-7"
d="M 25,5 59,9 59,43 25,39 z"
style="fill:none;stroke:#34e0e2;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:6, 12;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" />
<path
inkscape:connector-curvature="0"
sodipodi:nodetypes="ccccc"
id="path3825"
d="M 5,17 41,23 41,59 5,53 z"
style="fill:none;stroke:#042a2a;stroke-width:6;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" />
<path
style="fill:none;stroke:#34e0e2;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-opacity:1;fill-opacity:1"
d="M 59,9 59,43 41,59 41,23 z"
id="path2995-7"
inkscape:connector-curvature="0"
sodipodi:nodetypes="ccccc" />
<path
style="fill:none;stroke:#34e0e2;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:6, 12;stroke-dashoffset:13.19999999999999929"
d="M 25,5 25,39 5,53 5,17 z"
id="path2995-1-0"
inkscape:connector-curvature="0"
sodipodi:nodetypes="ccccc" />
<path
inkscape:connector-curvature="0"
sodipodi:nodetypes="ccccc"
id="path3825-9"
d="M 5,17 41,23 41,59 5,53 z"
style="fill:url(#linearGradient4033);stroke:#34e0e2;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;fill-opacity:1" />
<path
style="fill:none;stroke:#34e0e2;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
d="M 5,17 25,5 59,9 41,23 z"
id="path3970"
inkscape:connector-curvature="0"
sodipodi:nodetypes="ccccc" />
</g>
</svg>

After

Width:  |  Height:  |  Size: 8.7 KiB

View File

@ -0,0 +1,681 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:xlink="http://www.w3.org/1999/xlink"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
inkscape:export-ydpi="90.000000"
inkscape:export-xdpi="90.000000"
inkscape:export-filename="/home/jimmac/Desktop/wi-fi.png"
width="64"
height="64"
id="svg11300"
sodipodi:version="0.32"
inkscape:version="0.48.5 r10040"
sodipodi:docname="view-fullscreen.svg"
version="1.1">
<defs
id="defs3">
<linearGradient
inkscape:collect="always"
id="linearGradient3822">
<stop
style="stop-color:#729fcf;stop-opacity:1"
offset="0"
id="stop3824" />
<stop
style="stop-color:#204a87;stop-opacity:1"
offset="1"
id="stop3826" />
</linearGradient>
<radialGradient
inkscape:collect="always"
xlink:href="#linearGradient5060"
id="radialGradient5031"
gradientUnits="userSpaceOnUse"
gradientTransform="matrix(-2.774389,0,0,1.969706,112.7623,-872.8854)"
cx="605.71429"
cy="486.64789"
fx="605.71429"
fy="486.64789"
r="117.14286" />
<linearGradient
inkscape:collect="always"
id="linearGradient5060">
<stop
style="stop-color:black;stop-opacity:1;"
offset="0"
id="stop5062" />
<stop
style="stop-color:black;stop-opacity:0;"
offset="1"
id="stop5064" />
</linearGradient>
<radialGradient
inkscape:collect="always"
xlink:href="#linearGradient5060"
id="radialGradient5029"
gradientUnits="userSpaceOnUse"
gradientTransform="matrix(2.774389,0,0,1.969706,-1891.633,-872.8854)"
cx="605.71429"
cy="486.64789"
fx="605.71429"
fy="486.64789"
r="117.14286" />
<linearGradient
id="linearGradient5048">
<stop
style="stop-color:black;stop-opacity:0;"
offset="0"
id="stop5050" />
<stop
id="stop5056"
offset="0.5"
style="stop-color:black;stop-opacity:1;" />
<stop
style="stop-color:black;stop-opacity:0;"
offset="1"
id="stop5052" />
</linearGradient>
<linearGradient
inkscape:collect="always"
xlink:href="#linearGradient5048"
id="linearGradient5027"
gradientUnits="userSpaceOnUse"
gradientTransform="matrix(2.774389,0,0,1.969706,-1892.179,-872.8854)"
x1="302.85715"
y1="366.64789"
x2="302.85715"
y2="609.50507" />
<linearGradient
inkscape:collect="always"
id="linearGradient3284">
<stop
style="stop-color:#000000;stop-opacity:1;"
offset="0"
id="stop3286" />
<stop
style="stop-color:#000000;stop-opacity:0;"
offset="1"
id="stop3288" />
</linearGradient>
<linearGradient
inkscape:collect="always"
id="linearGradient3260">
<stop
style="stop-color:#204a87;stop-opacity:1;"
offset="0"
id="stop3262" />
<stop
style="stop-color:#204a87;stop-opacity:0;"
offset="1"
id="stop3264" />
</linearGradient>
<linearGradient
id="linearGradient3239">
<stop
style="stop-color:#ffffff;stop-opacity:1"
offset="0"
id="stop3241" />
<stop
style="stop-color:#d3d7cf;stop-opacity:1"
offset="1"
id="stop3243" />
</linearGradient>
<linearGradient
id="linearGradient11520">
<stop
id="stop11522"
offset="0.0000000"
style="stop-color:#ffffff;stop-opacity:1.0000000;" />
<stop
id="stop11524"
offset="1.0000000"
style="stop-color:#dcdcdc;stop-opacity:1.0000000;" />
</linearGradient>
<linearGradient
id="linearGradient11508"
inkscape:collect="always">
<stop
id="stop11510"
offset="0"
style="stop-color:#000000;stop-opacity:1;" />
<stop
id="stop11512"
offset="1"
style="stop-color:#000000;stop-opacity:0;" />
</linearGradient>
<linearGradient
id="linearGradient11494"
inkscape:collect="always">
<stop
id="stop11496"
offset="0"
style="stop-color:#ef2929;stop-opacity:1;" />
<stop
id="stop11498"
offset="1"
style="stop-color:#ef2929;stop-opacity:0;" />
</linearGradient>
<linearGradient
id="linearGradient11415">
<stop
id="stop11417"
offset="0.0000000"
style="stop-color:#204a87;stop-opacity:0.0000000;" />
<stop
style="stop-color:#204a87;stop-opacity:1.0000000;"
offset="0.50000000"
id="stop11423" />
<stop
id="stop11419"
offset="1"
style="stop-color:#204a87;stop-opacity:0;" />
</linearGradient>
<linearGradient
id="linearGradient11399"
inkscape:collect="always">
<stop
id="stop11401"
offset="0"
style="stop-color:#000000;stop-opacity:1;" />
<stop
id="stop11403"
offset="1"
style="stop-color:#000000;stop-opacity:0;" />
</linearGradient>
<linearGradient
gradientTransform="translate(-60.28571,-0.285714)"
y2="34.462429"
x2="43.615788"
y1="3.774456"
x1="15.82836"
gradientUnits="userSpaceOnUse"
id="linearGradient11425"
xlink:href="#linearGradient11415"
inkscape:collect="always" />
<linearGradient
gradientTransform="translate(-60.57143,0)"
y2="39.033859"
x2="35.679932"
y1="9.3458843"
x1="9.6957054"
gradientUnits="userSpaceOnUse"
id="linearGradient11427"
xlink:href="#linearGradient11415"
inkscape:collect="always" />
<linearGradient
y2="33.462429"
x2="26.758644"
y1="19.774456"
x1="13.267134"
gradientTransform="translate(-60.85714,0.428571)"
gradientUnits="userSpaceOnUse"
id="linearGradient11439"
xlink:href="#linearGradient11415"
inkscape:collect="always" />
<radialGradient
r="8.5"
fy="39.142857"
fx="12.071428"
cy="39.142857"
cx="12.071428"
gradientTransform="matrix(1,0,0,0.487395,0,20.06483)"
gradientUnits="userSpaceOnUse"
id="radialGradient11441"
xlink:href="#linearGradient11399"
inkscape:collect="always" />
<radialGradient
gradientTransform="matrix(1.243453,0,0,1.243453,-6.713754,-3.742847)"
gradientUnits="userSpaceOnUse"
r="3.8335035"
fy="15.048258"
fx="27.577173"
cy="15.048258"
cx="27.577173"
id="radialGradient11500"
xlink:href="#linearGradient11494"
inkscape:collect="always" />
<radialGradient
r="3.8335035"
fy="16.049133"
fx="27.577173"
cy="16.049133"
cx="27.577173"
gradientTransform="matrix(1.243453,0,0,1.243453,-6.713754,-3.742847)"
gradientUnits="userSpaceOnUse"
id="radialGradient11504"
xlink:href="#linearGradient11494"
inkscape:collect="always" />
<radialGradient
gradientUnits="userSpaceOnUse"
gradientTransform="matrix(1,0,0,0.338462,0,29.48178)"
r="6.5659914"
fy="44.565483"
fx="30.203562"
cy="44.565483"
cx="30.203562"
id="radialGradient11514"
xlink:href="#linearGradient11508"
inkscape:collect="always" />
<radialGradient
gradientTransform="matrix(1.995058,0,0,1.995058,-24.32488,-35.70087)"
gradientUnits="userSpaceOnUse"
r="20.530962"
fy="35.87817"
fx="24.44569"
cy="35.87817"
cx="24.44569"
id="radialGradient11526"
xlink:href="#linearGradient11520"
inkscape:collect="always" />
<radialGradient
r="6.5659914"
fy="44.565483"
fx="30.203562"
cy="44.565483"
cx="30.203562"
gradientTransform="matrix(1,0,0,0.338462,0,29.48178)"
gradientUnits="userSpaceOnUse"
id="radialGradient11532"
xlink:href="#linearGradient11508"
inkscape:collect="always" />
<radialGradient
inkscape:collect="always"
xlink:href="#linearGradient11508"
id="radialGradient1348"
gradientUnits="userSpaceOnUse"
gradientTransform="matrix(1,0,0,0.338462,0,29.48178)"
cx="30.203562"
cy="44.565483"
fx="30.203562"
fy="44.565483"
r="6.5659914" />
<radialGradient
inkscape:collect="always"
xlink:href="#linearGradient11520"
id="radialGradient1350"
gradientUnits="userSpaceOnUse"
gradientTransform="matrix(1.995058,0,0,1.995058,-24.32488,-35.70087)"
cx="24.44569"
cy="35.87817"
fx="24.44569"
fy="35.87817"
r="20.530962" />
<radialGradient
inkscape:collect="always"
xlink:href="#linearGradient11494"
id="radialGradient1352"
gradientUnits="userSpaceOnUse"
gradientTransform="matrix(1.243453,0,0,1.243453,-6.713754,-3.742847)"
cx="27.577173"
cy="16.049133"
fx="27.577173"
fy="16.049133"
r="3.8335035" />
<radialGradient
inkscape:collect="always"
xlink:href="#linearGradient11494"
id="radialGradient1354"
gradientUnits="userSpaceOnUse"
gradientTransform="matrix(1.243453,0,0,1.243453,-6.713754,-3.742847)"
cx="27.577173"
cy="15.048258"
fx="27.577173"
fy="15.048258"
r="3.8335035" />
<radialGradient
inkscape:collect="always"
xlink:href="#linearGradient11508"
id="radialGradient1356"
gradientUnits="userSpaceOnUse"
gradientTransform="matrix(1,0,0,0.338462,0,29.48178)"
cx="30.203562"
cy="44.565483"
fx="30.203562"
fy="44.565483"
r="6.5659914" />
<radialGradient
inkscape:collect="always"
xlink:href="#linearGradient11520"
id="radialGradient1366"
gradientUnits="userSpaceOnUse"
gradientTransform="matrix(2.049266,0,0,2.049266,-25.65002,-37.31089)"
cx="24.44569"
cy="35.87817"
fx="24.44569"
fy="35.87817"
r="20.530962" />
<linearGradient
inkscape:collect="always"
xlink:href="#linearGradient3239"
id="linearGradient3249"
gradientUnits="userSpaceOnUse"
x1="15.663794"
y1="5.1465507"
x2="27.11207"
y2="42.353451"
gradientTransform="matrix(1.3975903,0,0,1.3975902,-1.8915666,-17.192769)" />
<linearGradient
inkscape:collect="always"
xlink:href="#linearGradient3260"
id="linearGradient3266"
x1="12.363961"
y1="11.394304"
x2="18.22703"
y2="17.58149"
gradientUnits="userSpaceOnUse"
gradientTransform="matrix(1.3813389,0,0,1.3813389,-1.8428134,-16.461473)" />
<linearGradient
inkscape:collect="always"
xlink:href="#linearGradient3260"
id="linearGradient3270"
gradientUnits="userSpaceOnUse"
x1="12.363961"
y1="11.394304"
x2="18.22703"
y2="17.58149"
gradientTransform="matrix(-1.3813389,0,0,1.3813389,65.842795,-16.461473)" />
<linearGradient
inkscape:collect="always"
xlink:href="#linearGradient3260"
id="linearGradient3278"
gradientUnits="userSpaceOnUse"
x1="12.363961"
y1="11.394304"
x2="18.22703"
y2="17.58149"
gradientTransform="matrix(1.3813389,0,0,-1.3813389,-1.8428134,48.504624)" />
<linearGradient
inkscape:collect="always"
xlink:href="#linearGradient3260"
id="linearGradient3280"
gradientUnits="userSpaceOnUse"
gradientTransform="matrix(-1.3813389,0,0,-1.3813389,65.842795,48.504624)"
x1="12.363961"
y1="11.394304"
x2="18.22703"
y2="17.58149" />
<radialGradient
inkscape:collect="always"
xlink:href="#linearGradient3284"
id="radialGradient3290"
cx="25.455845"
cy="43.403805"
fx="25.455845"
fy="43.403805"
r="20.682873"
gradientTransform="matrix(1,0,0,0.205128,0,34.50046)"
gradientUnits="userSpaceOnUse" />
<linearGradient
inkscape:collect="always"
xlink:href="#linearGradient3822"
id="linearGradient3828"
x1="44"
y1="41"
x2="53"
y2="56"
gradientUnits="userSpaceOnUse" />
<linearGradient
inkscape:collect="always"
xlink:href="#linearGradient3822"
id="linearGradient3834"
gradientUnits="userSpaceOnUse"
x1="44"
y1="41"
x2="53"
y2="56" />
<linearGradient
inkscape:collect="always"
xlink:href="#linearGradient3822-6"
id="linearGradient3834-3"
gradientUnits="userSpaceOnUse"
x1="55"
y1="41"
x2="51"
y2="56" />
<linearGradient
inkscape:collect="always"
id="linearGradient3822-6">
<stop
style="stop-color:#729fcf;stop-opacity:1"
offset="0"
id="stop3824-7" />
<stop
style="stop-color:#204a87;stop-opacity:1"
offset="1"
id="stop3826-5" />
</linearGradient>
<linearGradient
inkscape:collect="always"
xlink:href="#linearGradient3822-8"
id="linearGradient3834-1"
gradientUnits="userSpaceOnUse"
x1="46"
y1="56"
x2="51"
y2="39" />
<linearGradient
inkscape:collect="always"
id="linearGradient3822-8">
<stop
style="stop-color:#729fcf;stop-opacity:1"
offset="0"
id="stop3824-79" />
<stop
style="stop-color:#204a87;stop-opacity:1"
offset="1"
id="stop3826-2" />
</linearGradient>
<linearGradient
inkscape:collect="always"
xlink:href="#linearGradient3822-6-2"
id="linearGradient3834-3-0"
gradientUnits="userSpaceOnUse"
x1="48"
y1="54"
x2="46"
y2="42" />
<linearGradient
inkscape:collect="always"
id="linearGradient3822-6-2">
<stop
style="stop-color:#729fcf;stop-opacity:1"
offset="0"
id="stop3824-7-3" />
<stop
style="stop-color:#204a87;stop-opacity:1"
offset="1"
id="stop3826-5-7" />
</linearGradient>
</defs>
<sodipodi:namedview
stroke="#ef2929"
fill="#204a87"
id="base"
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="0.25490196"
inkscape:pageopacity="0.0"
inkscape:pageshadow="2"
inkscape:zoom="11.313708"
inkscape:cx="29.695135"
inkscape:cy="26.582707"
inkscape:current-layer="layer1"
showgrid="true"
inkscape:grid-bbox="true"
inkscape:document-units="px"
inkscape:showpageshadow="false"
inkscape:window-width="1600"
inkscape:window-height="837"
inkscape:window-x="0"
inkscape:window-y="27"
inkscape:snap-nodes="true"
inkscape:snap-bbox="true"
inkscape:window-maximized="1">
<inkscape:grid
type="xygrid"
id="grid3048"
empspacing="2"
visible="true"
enabled="true"
snapvisiblegridlinesonly="true" />
</sodipodi:namedview>
<metadata
id="metadata4">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
<dc:creator>
<cc:Agent>
<dc:title>Jakub Steiner</dc:title>
</cc:Agent>
</dc:creator>
<dc:source>http://jimmac.musichall.cz</dc:source>
<cc:license
rdf:resource="http://creativecommons.org/licenses/by-sa/2.0/" />
<dc:title>View Fullscreen</dc:title>
</cc:Work>
<cc:License
rdf:about="http://creativecommons.org/licenses/by-sa/2.0/">
<cc:permits
rdf:resource="http://web.resource.org/cc/Reproduction" />
<cc:permits
rdf:resource="http://web.resource.org/cc/Distribution" />
<cc:requires
rdf:resource="http://web.resource.org/cc/Notice" />
<cc:requires
rdf:resource="http://web.resource.org/cc/Attribution" />
<cc:permits
rdf:resource="http://web.resource.org/cc/DerivativeWorks" />
<cc:requires
rdf:resource="http://web.resource.org/cc/ShareAlike" />
</cc:License>
</rdf:RDF>
</metadata>
<g
id="layer1"
inkscape:label="Layer 1"
inkscape:groupmode="layer"
transform="translate(0,16)">
<g
style="display:inline"
id="g5022"
transform="matrix(0.03152036,0,0,0.03344397,60.035325,37.041739)">
<rect
y="-150.69685"
x="-1559.2523"
height="478.35718"
width="1339.6335"
id="rect4173"
style="opacity:0.40206185;color:#000000;fill:url(#linearGradient5027);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible" />
<path
sodipodi:nodetypes="cccc"
id="path5058"
d="m -219.61876,-150.68038 c 0,0 0,478.33079 0,478.33079 142.874166,0.90045 345.40022,-107.16966 345.40014,-239.196175 0,-132.026537 -159.436816,-239.134595 -345.40014,-239.134615 z"
style="opacity:0.40206185;color:#000000;fill:url(#radialGradient5029);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible"
inkscape:connector-curvature="0" />
<path
style="opacity:0.40206185;color:#000000;fill:url(#radialGradient5031);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible"
d="m -1559.2523,-150.68038 c 0,0 0,478.33079 0,478.33079 -142.8742,0.90045 -345.4002,-107.16966 -345.4002,-239.196175 0,-132.026537 159.4368,-239.134595 345.4002,-239.134615 z"
id="path5018"
sodipodi:nodetypes="cccc"
inkscape:connector-curvature="0" />
</g>
<rect
style="color:#000000;fill:url(#linearGradient3249);fill-opacity:1;fill-rule:evenodd;stroke:#888a85;stroke-width:1.99999975999999990;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible"
id="rect2354"
width="58"
height="57.999996"
x="3"
y="-12.999999"
rx="2.5900114"
ry="2.5900111" />
<path
sodipodi:type="inkscape:offset"
inkscape:radius="-1.0340382"
inkscape:original="M 5.59375 -13 C 4.1588837 -13 3 -11.841116 3 -10.40625 L 3 42.40625 C 3 43.841116 4.1588837 45 5.59375 45 L 58.40625 45 C 59.841116 45 61 43.841116 61 42.40625 L 61 -10.40625 C 61 -11.841116 59.841116 -13 58.40625 -13 L 5.59375 -13 z "
xlink:href="#rect2354"
style="color:#000000;fill:none;stroke:#ffffff;stroke-width:2.07175946;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible"
id="path3247"
inkscape:href="#rect2354"
d="m 5.59375,-11.96875 c -0.8780988,0 -1.5625,0.684401 -1.5625,1.5625 l 0,52.8125 c 0,0.878099 0.6844012,1.5625 1.5625,1.5625 l 52.8125,0 c 0.878098,0 1.5625,-0.684402 1.5625,-1.5625 l 0,-52.8125 c 0,-0.878098 -0.684402,-1.5625 -1.5625,-1.5625 l -52.8125,0 z"
transform="matrix(0.96536313,0,0,0.96536312,1.10838,0.55418996)" />
<g
id="g3830">
<path
transform="translate(0,-16)"
inkscape:connector-curvature="0"
id="path3050"
d="m 57,57 0,-18 -6,6 -8,-8 -6,6 8,8 -6,6 z"
style="fill:url(#linearGradient3834);fill-opacity:1;stroke:#0b1521;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-opacity:1" />
<path
sodipodi:nodetypes="cccccccc"
transform="translate(0,-16)"
inkscape:connector-curvature="0"
id="path3820"
d="M 43.84375,55 55,55 l 0,-11.15625 -4,3.984375 -8,-8 L 39.828125,43 47.84375,51 z"
style="fill:none;stroke:#729fcf;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
</g>
<g
id="g3830-3"
transform="matrix(-1,0,0,1,64,0)">
<path
transform="translate(0,-16)"
inkscape:connector-curvature="0"
id="path3050-5"
d="m 57,57 0,-18 -6,6 -8,-8 -6,6 8,8 -6,6 z"
style="fill:url(#linearGradient3834-3);fill-opacity:1;stroke:#0b1521;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-opacity:1" />
<path
sodipodi:nodetypes="cccccccc"
transform="translate(0,-16)"
inkscape:connector-curvature="0"
id="path3820-6"
d="M 43.84375,55 55,55 l 0,-11.15625 -4,3.984375 -8,-8 L 39.828125,43 47.84375,51 z"
style="fill:none;stroke:#729fcf;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
</g>
<g
id="g3830-5"
transform="matrix(1,0,0,-1,0,32)">
<path
transform="translate(0,-16)"
inkscape:connector-curvature="0"
id="path3050-9"
d="m 57,57 0,-18 -6,6 -8,-8 -6,6 8,8 -6,6 z"
style="fill:url(#linearGradient3834-1);fill-opacity:1;stroke:#0b1521;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-opacity:1" />
<path
sodipodi:nodetypes="cccccccc"
transform="translate(0,-16)"
inkscape:connector-curvature="0"
id="path3820-2"
d="M 43.84375,55 55,55 l 0,-11.15625 -4,3.984375 -8,-8 L 39.828125,43 47.84375,51 z"
style="fill:none;stroke:#729fcf;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
</g>
<g
id="g3830-3-2"
transform="matrix(-1,0,0,-1,64,32)">
<path
transform="translate(0,-16)"
inkscape:connector-curvature="0"
id="path3050-5-8"
d="m 57,57 0,-18 -6,6 -8,-8 -6,6 8,8 -6,6 z"
style="fill:url(#linearGradient3834-3-0);fill-opacity:1;stroke:#0b1521;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-opacity:1" />
<path
sodipodi:nodetypes="cccccccc"
transform="translate(0,-16)"
inkscape:connector-curvature="0"
id="path3820-6-9"
d="M 43.84375,55 55,55 l 0,-11.15625 -4,3.984375 -8,-8 L 39.828125,43 47.84375,51 z"
style="fill:none;stroke:#729fcf;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 23 KiB

231
res/icons/view-left.svg Normal file
View File

@ -0,0 +1,231 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:xlink="http://www.w3.org/1999/xlink"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
width="64px"
height="64px"
id="svg6248"
sodipodi:version="0.32"
inkscape:version="0.48.5 r10040"
sodipodi:docname="view-left.svg"
inkscape:output_extension="org.inkscape.output.svg.inkscape"
version="1.1">
<defs
id="defs6250">
<linearGradient
inkscape:collect="always"
id="linearGradient3775">
<stop
style="stop-color:#06989a;stop-opacity:1"
offset="0"
id="stop3777" />
<stop
style="stop-color:#16d0d2;stop-opacity:1"
offset="1"
id="stop3779" />
</linearGradient>
<linearGradient
id="linearGradient3253">
<stop
style="stop-color:#89d5f8;stop-opacity:1;"
offset="0"
id="stop3255" />
<stop
style="stop-color:#00899e;stop-opacity:1;"
offset="1"
id="stop3257" />
</linearGradient>
<linearGradient
inkscape:collect="always"
id="linearGradient6816">
<stop
style="stop-color:#000000;stop-opacity:1;"
offset="0"
id="stop6818" />
<stop
style="stop-color:#000000;stop-opacity:0;"
offset="1"
id="stop6820" />
</linearGradient>
<linearGradient
id="linearGradient6781">
<stop
style="stop-color:#ffffff;stop-opacity:1;"
offset="0"
id="stop6783" />
<stop
style="stop-color:#3465a4;stop-opacity:0;"
offset="1"
id="stop6785" />
</linearGradient>
<inkscape:perspective
sodipodi:type="inkscape:persp3d"
inkscape:vp_x="-81.834999 : 121.93486 : 1"
inkscape:vp_y="0 : 1000 : 0"
inkscape:vp_z="158.69906 : 94.577031 : 1"
inkscape:persp3d-origin="32 : 21.333333 : 1"
id="perspective6256" />
<radialGradient
inkscape:collect="always"
xlink:href="#linearGradient6816"
id="radialGradient6822"
cx="33.369828"
cy="51.929391"
fx="33.369828"
fy="51.929391"
r="25.198714"
gradientTransform="matrix(1.1581633,0,0,0.6558985,-7.29237,16.126077)"
gradientUnits="userSpaceOnUse" />
<radialGradient
inkscape:collect="always"
xlink:href="#linearGradient3253"
id="radialGradient3259"
cx="18.417862"
cy="17.013988"
fx="18.417862"
fy="17.013988"
r="27.986705"
gradientTransform="matrix(0.9724373,-0.105657,5.0523169e-2,0.4650009,-0.3519546,9.5854384)"
gradientUnits="userSpaceOnUse" />
<radialGradient
inkscape:collect="always"
xlink:href="#linearGradient3253"
id="radialGradient3270"
gradientUnits="userSpaceOnUse"
gradientTransform="matrix(0.9724373,-0.105657,0.05052317,0.4650009,-0.3519546,9.5854384)"
cx="18.417862"
cy="17.013988"
fx="18.417862"
fy="17.013988"
r="27.986705" />
<linearGradient
inkscape:collect="always"
xlink:href="#linearGradient3775"
id="linearGradient3781"
x1="20"
y1="42"
x2="14"
y2="12"
gradientUnits="userSpaceOnUse" />
</defs>
<sodipodi:namedview
id="base"
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1.0"
inkscape:pageopacity="0.0"
inkscape:pageshadow="2"
inkscape:zoom="5.5"
inkscape:cx="23.509119"
inkscape:cy="43.387776"
inkscape:current-layer="layer1"
showgrid="true"
inkscape:document-units="px"
inkscape:grid-bbox="true"
inkscape:window-width="1600"
inkscape:window-height="837"
inkscape:window-x="0"
inkscape:window-y="27"
inkscape:snap-bbox="true"
inkscape:snap-nodes="true"
inkscape:window-maximized="1">
<inkscape:grid
type="xygrid"
id="grid3001"
empspacing="2"
visible="true"
enabled="true"
snapvisiblegridlinesonly="true" />
</sodipodi:namedview>
<metadata
id="metadata6253">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
<dc:title />
</cc:Work>
</rdf:RDF>
</metadata>
<g
id="layer1"
inkscape:label="Layer 1"
inkscape:groupmode="layer">
<path
style="fill:none;stroke:#042a2a;stroke-width:6;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:6,12;stroke-dashoffset:13.2"
d="M 25,5 25,39 5,53 5,17 z"
id="path2995-1"
inkscape:connector-curvature="0"
sodipodi:nodetypes="ccccc" />
<path
style="fill:none;stroke:#34e0e2;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:6, 12;stroke-dashoffset:13.19999999999999929"
d="M 25,5 25,39 5,53 5,17 z"
id="path2995-1-0"
inkscape:connector-curvature="0"
sodipodi:nodetypes="ccccc" />
<path
inkscape:connector-curvature="0"
sodipodi:nodetypes="ccccc"
id="path3825-7"
d="M 25,5 59,9 59,43 25,39 z"
style="fill:none;stroke:#042a2a;stroke-width:6;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:6, 12;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" />
<path
inkscape:connector-curvature="0"
sodipodi:nodetypes="ccccc"
id="path3825-7-7"
d="M 25,5 59,9 59,43 25,39 z"
style="fill:none;stroke:#34e0e2;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:6, 12;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" />
<path
style="fill:url(#linearGradient3781);stroke:#042a2a;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;fill-opacity:1"
d="M 27,4 27,41 6,54 4,16 z"
id="path4139"
inkscape:connector-curvature="0"
sodipodi:nodetypes="ccccc" />
<path
style="fill:none;stroke:#042a2a;stroke-width:6;stroke-linecap:butt;stroke-linejoin:round;stroke-opacity:1"
d="M 5,17 41,23 59,9 25,5 z"
id="path3961"
inkscape:connector-curvature="0"
sodipodi:nodetypes="ccccc" />
<path
style="fill:none;stroke:#042a2a;stroke-width:6;stroke-linecap:butt;stroke-linejoin:round;stroke-opacity:1"
d="M 59,9 59,43 41,59 41,23 z"
id="path2995"
inkscape:connector-curvature="0"
sodipodi:nodetypes="ccccc" />
<path
inkscape:connector-curvature="0"
sodipodi:nodetypes="ccccc"
id="path3825"
d="M 5,17 41,23 41,59 5,53 z"
style="fill:none;stroke:#042a2a;stroke-width:6;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" />
<path
style="fill:none;stroke:#34e0e2;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-opacity:1;fill-opacity:1"
d="M 59,9 59,43 41,59 41,23 z"
id="path2995-7"
inkscape:connector-curvature="0"
sodipodi:nodetypes="ccccc" />
<path
inkscape:connector-curvature="0"
sodipodi:nodetypes="ccccc"
id="path3825-9"
d="M 5,17 41,23 41,59 5,53 z"
style="fill:none;stroke:#34e0e2;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;fill-opacity:1" />
<path
style="fill:none;stroke:#34e0e2;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
d="M 5,17 25,5 59,9 41,23 z"
id="path3970"
inkscape:connector-curvature="0"
sodipodi:nodetypes="ccccc" />
</g>
</svg>

After

Width:  |  Height:  |  Size: 8.4 KiB

231
res/icons/view-rear.svg Normal file
View File

@ -0,0 +1,231 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:xlink="http://www.w3.org/1999/xlink"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
width="64px"
height="64px"
id="svg6248"
sodipodi:version="0.32"
inkscape:version="0.48.5 r10040"
sodipodi:docname="view-rear.svg"
inkscape:output_extension="org.inkscape.output.svg.inkscape"
version="1.1">
<defs
id="defs6250">
<linearGradient
inkscape:collect="always"
id="linearGradient3775">
<stop
style="stop-color:#16d0d2;stop-opacity:1"
offset="0"
id="stop3777" />
<stop
style="stop-color:#34e0e2;stop-opacity:1"
offset="1"
id="stop3779" />
</linearGradient>
<linearGradient
id="linearGradient3253">
<stop
style="stop-color:#89d5f8;stop-opacity:1;"
offset="0"
id="stop3255" />
<stop
style="stop-color:#00899e;stop-opacity:1;"
offset="1"
id="stop3257" />
</linearGradient>
<linearGradient
inkscape:collect="always"
id="linearGradient6816">
<stop
style="stop-color:#000000;stop-opacity:1;"
offset="0"
id="stop6818" />
<stop
style="stop-color:#000000;stop-opacity:0;"
offset="1"
id="stop6820" />
</linearGradient>
<linearGradient
id="linearGradient6781">
<stop
style="stop-color:#ffffff;stop-opacity:1;"
offset="0"
id="stop6783" />
<stop
style="stop-color:#3465a4;stop-opacity:0;"
offset="1"
id="stop6785" />
</linearGradient>
<inkscape:perspective
sodipodi:type="inkscape:persp3d"
inkscape:vp_x="-81.834999 : 121.93486 : 1"
inkscape:vp_y="0 : 1000 : 0"
inkscape:vp_z="158.69906 : 94.577031 : 1"
inkscape:persp3d-origin="32 : 21.333333 : 1"
id="perspective6256" />
<radialGradient
inkscape:collect="always"
xlink:href="#linearGradient6816"
id="radialGradient6822"
cx="33.369828"
cy="51.929391"
fx="33.369828"
fy="51.929391"
r="25.198714"
gradientTransform="matrix(1.1581633,0,0,0.6558985,-7.29237,16.126077)"
gradientUnits="userSpaceOnUse" />
<radialGradient
inkscape:collect="always"
xlink:href="#linearGradient3253"
id="radialGradient3259"
cx="18.417862"
cy="17.013988"
fx="18.417862"
fy="17.013988"
r="27.986705"
gradientTransform="matrix(0.9724373,-0.105657,5.0523169e-2,0.4650009,-0.3519546,9.5854384)"
gradientUnits="userSpaceOnUse" />
<radialGradient
inkscape:collect="always"
xlink:href="#linearGradient3253"
id="radialGradient3270"
gradientUnits="userSpaceOnUse"
gradientTransform="matrix(0.9724373,-0.105657,0.05052317,0.4650009,-0.3519546,9.5854384)"
cx="18.417862"
cy="17.013988"
fx="18.417862"
fy="17.013988"
r="27.986705" />
<linearGradient
inkscape:collect="always"
xlink:href="#linearGradient3775"
id="linearGradient3781"
x1="44"
y1="40"
x2="40"
y2="8"
gradientUnits="userSpaceOnUse" />
</defs>
<sodipodi:namedview
id="base"
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1.0"
inkscape:pageopacity="0.0"
inkscape:pageshadow="2"
inkscape:zoom="3.8890873"
inkscape:cx="19.093825"
inkscape:cy="39.399591"
inkscape:current-layer="layer1"
showgrid="true"
inkscape:document-units="px"
inkscape:grid-bbox="true"
inkscape:window-width="1600"
inkscape:window-height="837"
inkscape:window-x="0"
inkscape:window-y="27"
inkscape:snap-bbox="true"
inkscape:snap-nodes="true"
inkscape:window-maximized="1">
<inkscape:grid
type="xygrid"
id="grid3001"
empspacing="2"
visible="true"
enabled="true"
snapvisiblegridlinesonly="true" />
</sodipodi:namedview>
<metadata
id="metadata6253">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
<dc:title />
</cc:Work>
</rdf:RDF>
</metadata>
<g
id="layer1"
inkscape:label="Layer 1"
inkscape:groupmode="layer">
<path
style="fill:none;stroke:#042a2a;stroke-width:6;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:6,12;stroke-dashoffset:13.2"
d="M 25,5 25,39 5,53 5,17 z"
id="path2995-1"
inkscape:connector-curvature="0"
sodipodi:nodetypes="ccccc" />
<path
style="fill:none;stroke:#34e0e2;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:6, 12;stroke-dashoffset:13.19999999999999929"
d="M 25,5 25,39 5,53 5,17 z"
id="path2995-1-0"
inkscape:connector-curvature="0"
sodipodi:nodetypes="ccccc" />
<path
inkscape:connector-curvature="0"
sodipodi:nodetypes="ccccc"
id="path3825-7"
d="M 25,5 59,9 59,43 25,39 z"
style="fill:none;stroke:#042a2a;stroke-width:6;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:6, 12;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" />
<path
inkscape:connector-curvature="0"
sodipodi:nodetypes="ccccc"
id="path3825-7-7"
d="M 25,5 59,9 59,43 25,39 z"
style="fill:none;stroke:#34e0e2;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:6, 12;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" />
<path
style="fill:url(#linearGradient3781);stroke:#042a2a;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;fill-opacity:1"
d="m 23,4 0,37 35,4 1,-36 z"
id="path4139"
inkscape:connector-curvature="0"
sodipodi:nodetypes="ccccc" />
<path
style="fill:none;stroke:#042a2a;stroke-width:6;stroke-linecap:butt;stroke-linejoin:round;stroke-opacity:1"
d="M 5,17 41,23 59,9 25,5 z"
id="path3961"
inkscape:connector-curvature="0"
sodipodi:nodetypes="ccccc" />
<path
style="fill:none;stroke:#042a2a;stroke-width:6;stroke-linecap:butt;stroke-linejoin:round;stroke-opacity:1"
d="M 59,9 59,43 41,59 41,23 z"
id="path2995"
inkscape:connector-curvature="0"
sodipodi:nodetypes="ccccc" />
<path
inkscape:connector-curvature="0"
sodipodi:nodetypes="ccccc"
id="path3825"
d="M 5,17 41,23 41,59 5,53 z"
style="fill:none;stroke:#042a2a;stroke-width:6;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" />
<path
style="fill:none;stroke:#34e0e2;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-opacity:1;fill-opacity:1"
d="M 59,9 59,43 41,59 41,23 z"
id="path2995-7"
inkscape:connector-curvature="0"
sodipodi:nodetypes="ccccc" />
<path
inkscape:connector-curvature="0"
sodipodi:nodetypes="ccccc"
id="path3825-9"
d="M 5,17 41,23 41,59 5,53 z"
style="fill:none;stroke:#34e0e2;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;fill-opacity:1" />
<path
style="fill:none;stroke:#34e0e2;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
d="M 5,17 25,5 59,9 41,23 z"
id="path3970"
inkscape:connector-curvature="0"
sodipodi:nodetypes="ccccc" />
</g>
</svg>

After

Width:  |  Height:  |  Size: 8.4 KiB

247
res/icons/view-right.svg Normal file
View File

@ -0,0 +1,247 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:xlink="http://www.w3.org/1999/xlink"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
width="64px"
height="64px"
id="svg6248"
sodipodi:version="0.32"
inkscape:version="0.48.5 r10040"
sodipodi:docname="view-right.svg"
inkscape:output_extension="org.inkscape.output.svg.inkscape"
version="1.1">
<defs
id="defs6250">
<linearGradient
inkscape:collect="always"
id="linearGradient4001">
<stop
style="stop-color:#06989a;stop-opacity:1"
offset="0"
id="stop4003" />
<stop
style="stop-color:#16d0d2;stop-opacity:1"
offset="1"
id="stop4005" />
</linearGradient>
<linearGradient
id="linearGradient3253">
<stop
style="stop-color:#89d5f8;stop-opacity:1;"
offset="0"
id="stop3255" />
<stop
style="stop-color:#00899e;stop-opacity:1;"
offset="1"
id="stop3257" />
</linearGradient>
<linearGradient
inkscape:collect="always"
id="linearGradient6816">
<stop
style="stop-color:#000000;stop-opacity:1;"
offset="0"
id="stop6818" />
<stop
style="stop-color:#000000;stop-opacity:0;"
offset="1"
id="stop6820" />
</linearGradient>
<linearGradient
id="linearGradient6781">
<stop
style="stop-color:#ffffff;stop-opacity:1;"
offset="0"
id="stop6783" />
<stop
style="stop-color:#3465a4;stop-opacity:0;"
offset="1"
id="stop6785" />
</linearGradient>
<inkscape:perspective
sodipodi:type="inkscape:persp3d"
inkscape:vp_x="-81.834999 : 121.93486 : 1"
inkscape:vp_y="0 : 1000 : 0"
inkscape:vp_z="158.69906 : 94.577031 : 1"
inkscape:persp3d-origin="32 : 21.333333 : 1"
id="perspective6256" />
<radialGradient
inkscape:collect="always"
xlink:href="#linearGradient6816"
id="radialGradient6822"
cx="33.369828"
cy="51.929391"
fx="33.369828"
fy="51.929391"
r="25.198714"
gradientTransform="matrix(1.1581633,0,0,0.6558985,-7.29237,16.126077)"
gradientUnits="userSpaceOnUse" />
<radialGradient
inkscape:collect="always"
xlink:href="#linearGradient3253"
id="radialGradient3259"
cx="18.417862"
cy="17.013988"
fx="18.417862"
fy="17.013988"
r="27.986705"
gradientTransform="matrix(0.9724373,-0.105657,5.0523169e-2,0.4650009,-0.3519546,9.5854384)"
gradientUnits="userSpaceOnUse" />
<radialGradient
inkscape:collect="always"
xlink:href="#linearGradient3253"
id="radialGradient3270"
gradientUnits="userSpaceOnUse"
gradientTransform="matrix(0.9724373,-0.105657,0.05052317,0.4650009,-0.3519546,9.5854384)"
cx="18.417862"
cy="17.013988"
fx="18.417862"
fy="17.013988"
r="27.986705" />
<linearGradient
gradientTransform="translate(0,-2)"
inkscape:collect="always"
xlink:href="#linearGradient3777"
id="linearGradient3783"
x1="53.896763"
y1="51.179787"
x2="47.502235"
y2="21.83742"
gradientUnits="userSpaceOnUse" />
<linearGradient
inkscape:collect="always"
id="linearGradient3777">
<stop
style="stop-color:#204a87;stop-opacity:1"
offset="0"
id="stop3779" />
<stop
style="stop-color:#3465a4;stop-opacity:1"
offset="1"
id="stop3781" />
</linearGradient>
<linearGradient
inkscape:collect="always"
xlink:href="#linearGradient4001"
id="linearGradient4007"
x1="54"
y1="46"
x2="45.857864"
y2="20.307842"
gradientUnits="userSpaceOnUse" />
</defs>
<sodipodi:namedview
id="base"
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1.0"
inkscape:pageopacity="0.0"
inkscape:pageshadow="2"
inkscape:zoom="5.5"
inkscape:cx="65.264828"
inkscape:cy="41.386298"
inkscape:current-layer="layer1"
showgrid="true"
inkscape:document-units="px"
inkscape:grid-bbox="true"
inkscape:window-width="1600"
inkscape:window-height="837"
inkscape:window-x="0"
inkscape:window-y="27"
inkscape:snap-bbox="true"
inkscape:snap-nodes="true"
inkscape:window-maximized="1">
<inkscape:grid
type="xygrid"
id="grid3001"
empspacing="2"
visible="true"
enabled="true"
snapvisiblegridlinesonly="true" />
</sodipodi:namedview>
<metadata
id="metadata6253">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
<dc:title />
</cc:Work>
</rdf:RDF>
</metadata>
<g
id="layer1"
inkscape:label="Layer 1"
inkscape:groupmode="layer">
<path
style="fill:none;stroke:#042a2a;stroke-width:6;stroke-linecap:butt;stroke-linejoin:round;stroke-opacity:1"
d="M 5,17 41,23 59,9 25,5 z"
id="path3961"
inkscape:connector-curvature="0"
sodipodi:nodetypes="ccccc" />
<path
style="fill:none;stroke:#042a2a;stroke-width:6;stroke-linecap:butt;stroke-linejoin:round;stroke-opacity:1"
d="M 59,9 59,43 41,59 41,23 z"
id="path2995"
inkscape:connector-curvature="0"
sodipodi:nodetypes="ccccc" />
<path
style="fill:none;stroke:#042a2a;stroke-width:6;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:6,12;stroke-dashoffset:13.2"
d="M 25,5 25,39 5,53 5,17 z"
id="path2995-1"
inkscape:connector-curvature="0"
sodipodi:nodetypes="ccccc" />
<path
inkscape:connector-curvature="0"
sodipodi:nodetypes="ccccc"
id="path3825-7"
d="M 25,5 59,9 59,43 25,39 z"
style="fill:none;stroke:#042a2a;stroke-width:6;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:6, 12;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" />
<path
inkscape:connector-curvature="0"
sodipodi:nodetypes="ccccc"
id="path3825-7-7"
d="M 25,5 59,9 59,43 25,39 z"
style="fill:none;stroke:#34e0e2;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:6, 12;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" />
<path
inkscape:connector-curvature="0"
sodipodi:nodetypes="ccccc"
id="path3825"
d="M 5,17 41,23 41,59 5,53 z"
style="fill:none;stroke:#042a2a;stroke-width:6;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" />
<path
style="fill:url(#linearGradient4007);stroke:#34e0e2;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-opacity:1;fill-opacity:1"
d="M 59,9 59,43 41,59 41,23 z"
id="path2995-7"
inkscape:connector-curvature="0"
sodipodi:nodetypes="ccccc" />
<path
inkscape:connector-curvature="0"
sodipodi:nodetypes="ccccc"
id="path3825-9"
d="M 5,17 41,23 41,59 5,53 z"
style="fill:none;stroke:#34e0e2;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" />
<path
style="fill:none;stroke:#34e0e2;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
d="M 5,17 25,5 59,9 41,23 z"
id="path3970"
inkscape:connector-curvature="0"
sodipodi:nodetypes="ccccc" />
<path
style="fill:none;stroke:#34e0e2;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:6, 12;stroke-dashoffset:13.19999999999999929"
d="M 25,5 25,39 5,53 5,17 z"
id="path2995-1-0"
inkscape:connector-curvature="0"
sodipodi:nodetypes="ccccc" />
</g>
</svg>

After

Width:  |  Height:  |  Size: 8.7 KiB

140
res/icons/view-select.svg Normal file
View File

@ -0,0 +1,140 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:xlink="http://www.w3.org/1999/xlink"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
width="64px"
height="64px"
id="svg2980"
sodipodi:version="0.32"
inkscape:version="0.48.5 r10040"
sodipodi:docname="view-select.svg"
inkscape:output_extension="org.inkscape.output.svg.inkscape"
version="1.1">
<defs
id="defs2982">
<linearGradient
inkscape:collect="always"
id="linearGradient3765">
<stop
style="stop-color:#d3d7cf;stop-opacity:1;"
offset="0"
id="stop3767" />
<stop
style="stop-color:#ffffff;stop-opacity:1"
offset="1"
id="stop3769" />
</linearGradient>
<linearGradient
id="linearGradient3864">
<stop
id="stop3866"
offset="0"
style="stop-color:#71b2f8;stop-opacity:1;" />
<stop
id="stop3868"
offset="1"
style="stop-color:#002795;stop-opacity:1;" />
</linearGradient>
<inkscape:perspective
sodipodi:type="inkscape:persp3d"
inkscape:vp_x="0 : 32 : 1"
inkscape:vp_y="0 : 1000 : 0"
inkscape:vp_z="64 : 32 : 1"
inkscape:persp3d-origin="32 : 21.333333 : 1"
id="perspective2988" />
<inkscape:perspective
id="perspective2872"
inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
inkscape:vp_z="1 : 0.5 : 1"
inkscape:vp_y="0 : 1000 : 0"
inkscape:vp_x="0 : 0.5 : 1"
sodipodi:type="inkscape:persp3d" />
<inkscape:perspective
id="perspective2902"
inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
inkscape:vp_z="1 : 0.5 : 1"
inkscape:vp_y="0 : 1000 : 0"
inkscape:vp_x="0 : 0.5 : 1"
sodipodi:type="inkscape:persp3d" />
<inkscape:perspective
id="perspective2902-9"
inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
inkscape:vp_z="1 : 0.5 : 1"
inkscape:vp_y="0 : 1000 : 0"
inkscape:vp_x="0 : 0.5 : 1"
sodipodi:type="inkscape:persp3d" />
<linearGradient
inkscape:collect="always"
xlink:href="#linearGradient3765"
id="linearGradient3771"
x1="35"
y1="51"
x2="31"
y2="18"
gradientUnits="userSpaceOnUse" />
</defs>
<sodipodi:namedview
id="base"
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1.0"
inkscape:pageopacity="0.0"
inkscape:pageshadow="2"
inkscape:zoom="3.8890873"
inkscape:cx="-34.734747"
inkscape:cy="45.640893"
inkscape:current-layer="layer1"
showgrid="true"
inkscape:document-units="px"
inkscape:grid-bbox="true"
inkscape:window-width="1600"
inkscape:window-height="837"
inkscape:window-x="0"
inkscape:window-y="27"
inkscape:window-maximized="1">
<inkscape:grid
type="xygrid"
id="grid2991"
empspacing="2"
visible="true"
enabled="true"
snapvisiblegridlinesonly="true" />
</sodipodi:namedview>
<metadata
id="metadata2985">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
<dc:title />
</cc:Work>
</rdf:RDF>
</metadata>
<g
id="layer1"
inkscape:label="Layer 1"
inkscape:groupmode="layer">
<path
style="fill:url(#linearGradient3771);stroke:#2e3436;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;fill-opacity:1"
d="M 7,49 15,57 35,37 41,49 57,7 15,23 27,29 z"
id="path3761"
inkscape:connector-curvature="0"
sodipodi:nodetypes="cccccccc" />
<path
style="fill:none;stroke:#ffffff;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
d="M 9.8181818,49 30.363636,28.363636 20,23.272727 53.545455,10.454545 40.727273,44 35.636364,33.636364 15,54.181818 z"
id="path3763"
inkscape:connector-curvature="0"
sodipodi:nodetypes="cccccccc" />
</g>
</svg>

After

Width:  |  Height:  |  Size: 4.4 KiB

204
res/icons/view-top.svg Normal file
View File

@ -0,0 +1,204 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:xlink="http://www.w3.org/1999/xlink"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
width="64px"
height="64px"
id="svg6248"
sodipodi:version="0.32"
inkscape:version="0.48.5 r10040"
sodipodi:docname="view-front.svg"
inkscape:output_extension="org.inkscape.output.svg.inkscape"
version="1.1">
<defs
id="defs6250">
<linearGradient
id="linearGradient3253">
<stop
style="stop-color:#89d5f8;stop-opacity:1;"
offset="0"
id="stop3255" />
<stop
style="stop-color:#00899e;stop-opacity:1;"
offset="1"
id="stop3257" />
</linearGradient>
<linearGradient
inkscape:collect="always"
id="linearGradient6816">
<stop
style="stop-color:#000000;stop-opacity:1;"
offset="0"
id="stop6818" />
<stop
style="stop-color:#000000;stop-opacity:0;"
offset="1"
id="stop6820" />
</linearGradient>
<linearGradient
id="linearGradient6781">
<stop
style="stop-color:#ffffff;stop-opacity:1;"
offset="0"
id="stop6783" />
<stop
style="stop-color:#3465a4;stop-opacity:0;"
offset="1"
id="stop6785" />
</linearGradient>
<inkscape:perspective
sodipodi:type="inkscape:persp3d"
inkscape:vp_x="-81.834999 : 121.93486 : 1"
inkscape:vp_y="0 : 1000 : 0"
inkscape:vp_z="158.69906 : 94.577031 : 1"
inkscape:persp3d-origin="32 : 21.333333 : 1"
id="perspective6256" />
<radialGradient
inkscape:collect="always"
xlink:href="#linearGradient6816"
id="radialGradient6822"
cx="33.369828"
cy="51.929391"
fx="33.369828"
fy="51.929391"
r="25.198714"
gradientTransform="matrix(1.1581633,0,0,0.6558985,-7.29237,16.126077)"
gradientUnits="userSpaceOnUse" />
<radialGradient
inkscape:collect="always"
xlink:href="#linearGradient3253"
id="radialGradient3259"
cx="18.417862"
cy="17.013988"
fx="18.417862"
fy="17.013988"
r="27.986705"
gradientTransform="matrix(0.9724373,-0.105657,5.0523169e-2,0.4650009,-0.3519546,9.5854384)"
gradientUnits="userSpaceOnUse" />
<radialGradient
inkscape:collect="always"
xlink:href="#linearGradient3253"
id="radialGradient3270"
gradientUnits="userSpaceOnUse"
gradientTransform="matrix(0.9724373,-0.105657,0.05052317,0.4650009,-0.3519546,9.5854384)"
cx="18.417862"
cy="17.013988"
fx="18.417862"
fy="17.013988"
r="27.986705" />
</defs>
<sodipodi:namedview
id="base"
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1.0"
inkscape:pageopacity="0.0"
inkscape:pageshadow="2"
inkscape:zoom="5.5"
inkscape:cx="65.264828"
inkscape:cy="41.386298"
inkscape:current-layer="layer1"
showgrid="true"
inkscape:document-units="px"
inkscape:grid-bbox="true"
inkscape:window-width="1600"
inkscape:window-height="837"
inkscape:window-x="0"
inkscape:window-y="27"
inkscape:snap-bbox="true"
inkscape:snap-nodes="true"
inkscape:window-maximized="1">
<inkscape:grid
type="xygrid"
id="grid3001"
empspacing="2"
visible="true"
enabled="true"
snapvisiblegridlinesonly="true" />
</sodipodi:namedview>
<metadata
id="metadata6253">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
<dc:title></dc:title>
</cc:Work>
</rdf:RDF>
</metadata>
<g
id="layer1"
inkscape:label="Layer 1"
inkscape:groupmode="layer">
<path
style="fill:none;stroke:#042a2a;stroke-width:6;stroke-linecap:butt;stroke-linejoin:round;stroke-opacity:1"
d="M 5,17 41,23 59,9 25,5 z"
id="path3961"
inkscape:connector-curvature="0"
sodipodi:nodetypes="ccccc" />
<path
style="fill:none;stroke:#042a2a;stroke-width:6;stroke-linecap:butt;stroke-linejoin:round;stroke-opacity:1"
d="M 59,9 59,43 41,59 41,23 z"
id="path2995"
inkscape:connector-curvature="0"
sodipodi:nodetypes="ccccc" />
<path
style="fill:none;stroke:#042a2a;stroke-width:6;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:6,12;stroke-dashoffset:13.2"
d="M 25,5 25,39 5,53 5,17 z"
id="path2995-1"
inkscape:connector-curvature="0"
sodipodi:nodetypes="ccccc" />
<path
inkscape:connector-curvature="0"
sodipodi:nodetypes="ccccc"
id="path3825-7"
d="M 25,5 59,9 59,43 25,39 z"
style="fill:none;stroke:#042a2a;stroke-width:6;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:6, 12;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" />
<path
inkscape:connector-curvature="0"
sodipodi:nodetypes="ccccc"
id="path3825-7-7"
d="M 25,5 59,9 59,43 25,39 z"
style="fill:none;stroke:#34e0e2;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:6, 12;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" />
<path
inkscape:connector-curvature="0"
sodipodi:nodetypes="ccccc"
id="path3825"
d="M 5,17 41,23 41,59 5,53 z"
style="fill:none;stroke:#042a2a;stroke-width:6;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" />
<path
style="fill:none;stroke:#34e0e2;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-opacity:1;fill-opacity:1"
d="M 59,9 59,43 41,59 41,23 z"
id="path2995-7"
inkscape:connector-curvature="0"
sodipodi:nodetypes="ccccc" />
<path
style="fill:none;stroke:#34e0e2;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:6, 12;stroke-dashoffset:13.19999999999999929"
d="M 25,5 25,39 5,53 5,17 z"
id="path2995-1-0"
inkscape:connector-curvature="0"
sodipodi:nodetypes="ccccc" />
<path
inkscape:connector-curvature="0"
sodipodi:nodetypes="ccccc"
id="path3825-9"
d="M 5,17 41,23 41,59 5,53 z"
style="fill:none;stroke:#34e0e2;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;fill-opacity:1" />
<path
style="fill:#34e0e2;stroke:#34e0e2;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
d="M 5,17 25,5 59,9 41,23 z"
id="path3970"
inkscape:connector-curvature="0"
sodipodi:nodetypes="ccccc" />
</g>
</svg>

After

Width:  |  Height:  |  Size: 7.6 KiB

BIN
res/img/aicam.ico Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 314 KiB

BIN
res/img/aicam.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 157 KiB

BIN
res/img/btn/btn_about.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 703 B

BIN
res/img/btn/btn_close.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 469 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 527 B

BIN
res/img/btn/btn_max.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 380 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 547 B

BIN
res/img/btn/btn_min.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 196 B

BIN
res/img/btn/btn_setting.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 928 B

BIN
res/img/btn/btn_update.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 735 B

BIN
res/img/btn/net_error.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 717 B

BIN
res/img/btn/net_ok.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 868 B

BIN
res/img/btn/net_wait.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 825 B

419
res/qss/dark.qsst Normal file
View File

@ -0,0 +1,419 @@
/*Zvo播放器深色主题样式QSS文件*/
$Button_Hover_BackGround_Color = ;
$m_QWidget_BackGround_Color = #1b1b1b;
/*备份字体颜色#ff9000*/
$m_QWidget_Font_Color = #F0F0F0F0;
QWidget{
background-color: $m_QWidget_BackGround_Color;
color:$m_QWidget_Font_Color;
font:10pt;
}
QPushButton#icoButton{
image:url(:/res/img/zvo.png);
border:none;
}
QPushButton#t_backButton{
image:url(:/res/img/dark/exit.png);
border:none;
}
/*播放列表控件样式*/
QPushButton#searchButton{
image:url(:/res/img/dark/search.png);
border:none;
width:15px;
height:15px;
}
QPushButton:hover{
padding-left:1px;
padding-top:1px;
}
/*播放器按钮-Pressed*/
QPushButton:pressed{
padding-left:2px;
padding-top:2px;
}
QMenu {
background-color : rgb(253,253,254);
border-radius:15px;
}
QMenu::item {
font-size:10pt;
color: rgb(0,0,0);
background-color:rgb(253,253,254);
padding: 8px 25px 6px 10px;
margin: 1px 1px;
}
QMenu::item:selected {
background-color : rgb(236,236,237);
}
QMenu::icon:checked {
background: rgb(253,253,254);
position: absolute;
top: 1px;
right: 1px;
bottom: 1px;
left: 1px;
}
QMenu::icon:checked:selected {
background-color : rgb(236,236,237);
background-image: url(:/space_selected.png);
}
QMenu::separator {
height: 2px;
background: rgb(235,235,236);
margin-left: 10px;
margin-right: 10px;
}
QPushButton#searchButton,#t_backButton:hover{
padding-left:1px;
padding-top:1px;
}
QPushButton#searchButton,#t_backButton:pressed{
padding-left:2px;
padding-top:2px;
}
QLineEdit#search_QLineEdit{
background: $m_QWidget_BackGround_Color;
color:$m_QWidget_Font_Color;
border: 1px solid gray;
border-radius: 2px;
padding: 0 8px;
selection-background-color: darkgray;
}
/*QComboBox样式*/
QComboBox {
height: 25px;
border-radius: 4px;
border: 1px solid rgb(100, 100, 100);
background: rgb(72, 72, 73);
}
QComboBox:enabled {
color:$m_QWidget_Font_Color;
}
QComboBox:!enabled {
color: rgb(155, 155, 155);
}
QComboBox:enabled:hover, QComboBox:enabled:focus {
color: rgb(230, 230, 230);
background: rgb(68, 69, 73);
}
QComboBox::drop-down {
width: 20px;
border: none;
background: transparent;
}
QComboBox::drop-down:hover {
background: rgba(255, 255, 255, 30);
}
QComboBox::down-arrow:on {
top: 1px;
}
QComboBox QAbstractItemView {
border: 1px solid rgb(100, 100, 100);
background: rgb(68, 69, 73);
outline: none;
}
QComboBox QAbstractItemView::item {
height: 25px;
color: rgb(175, 175, 175);
}
QComboBox QAbstractItemView::item:selected {
background: rgba(255, 255, 255, 40);
color: rgb(230, 230, 230);
}
/*QTabWidget样式*/
QTabWidget{
background-color:transparent;
}
QTabWidget::pane{
border:2px;
}
QTabWidget::tab-bar{
border:2px;
alignment:left;
}
QTabBar::tab{
border: 1px solid gray;
border-radius: 5px;
border:2px;
background:$m_QWidget_BackGround_Color;
color:$m_QWidget_Font_Color;
min-width:20ex;
min-height:6ex;
}
QTabBar::tab:hover{
background:#006161;
color:$m_QWidget_Font_Color = #F0F0F0F0;
}
QTabBar::tab:selected{
border-color: black;
background:#9fa493;
color:$m_QWidget_Font_Color;
}
/*QTableView样式*/
QTableView
{
background: rgb(55,55,55);
}
QTableView{
selection-background-color:rgb(255,0,0);
background-color:rgb(50,50,50);
border:1px solid rgb(70,70,70);
color:rgb(200,200,200)
}
QTableView::item
{
background-color:$m_QWidget_BackGround_Color;
border:1px solid rgb(65,65,65);
color:$m_QWidget_Font_Color;
}
QTableView::item:hover
{
background-color: rgb(30,30,30);
color:rgb(31,163,246);
}
QTableView::item::selected
{
background-color: rgb(30,30,30);
color:rgb(31,163,246);
}
QHeaderView::section{
background-color:rgb(90,90,90);
color:rgb(200,200,200);
border:1px solid rgb(60,60,60);
border-bottom:1px solid rgb(70,70,70);
}
QHeaderView::section:hover
{
background-color:rgb(80,80,80);
}
/*滚动条样式*/
QScrollBar:vertical{
border: none;
background-color:$m_QWidget_BackGround_Color;
width:10px;
}
QScrollBar::handle:vertical{
background:#9fa480;
border-radius:4px;
}
QScrollBar::handle:vertical:hover{
background:#9fa493;
}
QScrollBar::add-line:vertical{
border: none;
height: 0px;
}
QScrollBar::sub-line:vertical{
border: none;
height: 0px;
}
QScrollBar::add-page:vertical,QScrollBar::sub-page:vertical
{
background:$m_QWidget_BackGround_Color;
border-radius:3px;
}
/*播放进度条*/
QSlider::groove:horizontal {
border: 0px solid #bbb;
}
QSlider::sub-page:horizontal {
background: rgb(235,97,0);
border-radius: 0px;
margin-top:8px;
margin-bottom:8px;
}
QSlider::add-page:horizontal {
background: rgb(255,255, 255);
border: 0px solid #777;
border-radius: 2px;
margin-top:8px;
margin-bottom:8px;
}
QSlider::handle:horizontal {
background: rgb(255,153,102);
border: 1px solid rgb(255,153,102);
width: 14px;
height:10px;
border-radius: 7px;
margin-top:2px;
margin-bottom:2px;
}
QSlider::handle:horizontal:hover {
background: rgb(255,128,6);
border: 1px solid rgba(102,102,102,102);
border-radius: 7px;
}
QSlider::sub-page:horizontal:disabled {
background: #bbb;
border-color: #999;
}
QSlider::add-page:horizontal:disabled {
background: #eee;
border-color: #999;
}
QSlider::handle:horizontal:disabled {
background: #eee;
border: 1px solid #aaa;
border-radius: 4px;
}
/*------------------标题栏样式 最小化 最大化 关闭---------------------*/
/*标题栏变量参数值定义*/
$titleBar_QWidget_BackGround_Color = #ffffff; /*标题栏背景*/
QWidget#mediaTitle{
background-color: $titleBar_QWidget_BackGround_Color;
margin-top:1px;
margin-right:1px;
margin-bottom:1px;
margin-left:1px;
}
QPushButton#minimizeButton{
image:url(":/res/img/btn/btn_min.png");
border:none;
width:20px;
height:20px;
}
QPushButton#maximizeButton{
image:url(":/res/img/btn/btn_max.png");
border:none;
width:20px;
height:20px;
}
QPushButton#closeButton{
image:url(":/res/img/btn/btn_close.png");
border:none;
width:20px;
height:20px;
}
/*----------------------鼠标移动到按钮上---------------------------*/
QPushButton#minimizeButton:hover{
padding-left:1px;
padding-top:1px;
}
QPushButton#maximizeButton:hover{
padding-left:1px;
padding-top:1px;
}
QPushButton#closeButton:hover{
padding-left:1px;
padding-top:1px;
}
/*----------------------鼠标按下到按钮上---------------------------*/
QPushButton#minimizeButton:pressed{
padding-left:2px;
padding-top:2px;
}
QPushButton#maximizeButton:pressed{
padding-left:2px;
padding-top:2px;
}
QPushButton#closeButton:pressed{
padding-left:1px;
padding-top:1px;
}
/*------------------播放器面板样式---------------------*/
/*播放器面板变量参数值定义*/
$m_MediaPlayer_Slider_QWidget_Color = #c7fdff;
$b_max_size = 25px;
QWidget#m_MediaPlayerSliderQWidget{
background-color: $m_QWidget_BackGround_Color;
}
QWidget#m_videoWidget{
background-color:$m_QWidget_BackGround_Color;
background-image:url(:/res/img/zvo.png);
background-position:center;
background-repeat:no-repeat;
}
/*播放器按钮-默认*/
QPushButton#m_btnvolume{
image:url(":/res/img/dark/volume_open.png");
border:none;
max-width:$b_max_size;
max-height:$b_max_size;
}
QPushButton#m_btnPlay{
image:url(":/res/img/dark/play.png");
border:none;
max-width:$b_max_size;
max-height:$b_max_size;
}
QPushButton#m_btnClose{
image:url(":/res/img/dark/close.png");
border:none;
border:none;
max-width:$b_max_size;
max-height:$b_max_size;
}
QPushButton#m_btnStop{
image:url(":/res/img/dark/stop.png");
border:none;
max-width:$b_max_size;
max-height:$b_max_size;
}
QPushButton#m_btnPrev{
image:url(":/res/img/dark/prev.png");
border:none;
max-width:$b_max_size;
max-height:$b_max_size;
}
QPushButton#m_btnNext{
image:url(":/res/img/dark/next.png");
border:none;
max-width:$b_max_size;
max-height:$b_max_size;
}
QPushButton#m_btnEq{
image:url(":/res/img/dark/equalizer.png");
border:none;
max-width:$b_max_size;
max-height:$b_max_size;
}
QPushButton#m_btnSet{
image:url(":/res/img/dark/setting.png");
border:none;
max-width:$b_max_size;
max-height:$b_max_size;
}
QPushButton#m_btnMenuOpt{
image:url(":/res/img/dark/menu.png");
border:none;
max-width:$b_max_size;
max-height:$b_max_size;
}
QPushButton#m_btnDown{
image:url(":/res/img/dark/download.png");
border:none;
max-width:$b_max_size;
max-height:$b_max_size;
}
/*播放器按钮-Hover*/
QPushButton#m_btnvolume:hover{
background: $Button_Hover_BackGround_Color;
}

138
res/qss/dark_style.qss Normal file
View File

@ -0,0 +1,138 @@
QWidget#m_widget{
border-radius:10px;
background-color: rgba(27,27,27,0.9);
color:#F0F0F0F0;
}
QPushButton#btn_opt{
image:url(:/res/img/sui.png);
width:35px;
height:35px;
border:none;
}
QLabel{
color:#F2F2F2;
}
QPushButton{
height:25px;
}
QComboBox{
height:25px;
}
QPushButton:hover{
padding-left:1px;
padding-top:1px;
}
QPushButton#BTN_DOWNLOAD{
width:25px;
height:25px;
border:none;
image:url(":/res/img/btn/btn_download.png");
}
QPushButton#BTN_SETS{
width:25px;
height:25px;
border:none;
image:url(":/res/img/btn/btn_setting.png");
}
QPushButton#BTN_UPDATE{
width:25px;
height:25px;
border:none;
image:url(":/res/img/btn/btn_update.png");
}
QPushButton#BTN_ABOUT{
width:25px;
height:25px;
border:none;
image:url(":/res/img/btn/btn_about.png");
}
QGroupBox {
color: #F2F2F2;
}
QTableView#GAME_INFO_TABLE::item:selected {
background-color: #0078d4;
}
QMenu {
background-color: #444;
color: #fff;
border: 1px solid #666;
}
QMenu::item {
padding: 2px 20px 2px 20px;
}
QMenu::icon:checked {
background-color: qlineargradient(x1:0, y1:0, x2:0, y2:1, stop:1 #fff, stop:0 #aaa);
}
QMenu::item:selected {
background-color: qlineargradient(x1:0, y1:0, x2:0, y2:1, stop:1 #ffc, stop:0 #9c9);
color: black;
}
/*------------------标题栏样式 最小化 最大化 关闭---------------------*/
/*标题栏变量参数值定义*/
/*标题栏背景*/
QWidget#sui_title{
background-color: #ffffff;
margin-top:1px;
margin-right:1px;
margin-bottom:1px;
margin-left:1px;
}
QPushButton#btn_min,QPushButton#btn_max,QPushButton#btn_close{
margin-right:3px;
margin-bottom:0px;
border-radius:8px;
font-family: "Microsoft YaHei";
font-weight: bold;
font: bold 12px;
}
QPushButton#btn_min{
image:url(":/res/img/btn/btn_min.png");
border:none;
width:20px;
height:20px;
}
QPushButton#btn_max{
image:url(":/res/img/btn/btn_max.png");
border:none;
width:20px;
height:20px;
}
QPushButton#btn_max[maximizeProperty='maximize'] {
image:url(":/res/img/btn/btn_max.png");
border:none;
width:20px;
height:20px;
}
QPushButton#btn_max[maximizeProperty='restore'] {
image:url(":/res/img/btn/btn_max_restore.png");
border:none;
width:20px;
height:20px;
}
QPushButton#btn_close{
image:url(":/res/img/btn/btn_close.png");
border:none;
width:20px;
height:20px;
}
QPushButton#btn_min:hover,QPushButton#btn_max:hover,QPushButton#btn_close:hover{
padding-left:1px;
padding-top:1px;
}
QPushButton#btn_min:pressed,QPushButton#btn_max:pressed,QPushButton#btn_close:pressed{
padding-left:1px;
padding-top:1px;
}

462
res/qss/light.qsst Normal file
View File

@ -0,0 +1,462 @@
/*Zvo播放器深色主题样式QSS文件*/
$Button_Hover_BackGround_Color = #ffffff;
$m_QWidget_BackGround_Color = #F3F3F3;
$m_QWidget_Font_Color = #2F4F4F;
QWidget{
background-color: $m_QWidget_BackGround_Color;
color:$m_QWidget_Font_Color;
}
QWidget#m_QWidget{
border-radius:10px;
}
QToolButton{
margin-right:3px;
margin-bottom:0px;
border-radius:8px;
font-family: "Microsoft YaHei";
font-weight: bold;
font: bold 12px;
}
QPushButton{
margin-right:3px;
margin-bottom:0px;
border-radius:8px;
font-family: "Microsoft YaHei";
font-weight: bold;
font: bold 12px;
}
QPushButton#icoButton{
image:url(:/res/img/zvo.png);
border:none;
}
QPushButton#t_backButton{
image:url(:/res/img/light/exit.png);
border:none;
}
/*播放列表控件样式*/
QPushButton#searchButton{
image:url(:/res/img/light/search.png);
border:none;
width:15px;
height:15px;
}
QPushButton:hover{
padding-left:1px;
padding-top:1px;
}
/*播放器按钮-Pressed*/
QPushButton:pressed{
padding-left:2px;
padding-top:2px;
}
QMenu {
background-color : rgb(253,253,254);
border-radius:15px;
}
QMenu::item {
font-size:10pt;
color: rgb(0,0,0);
background-color:rgb(253,253,254);
padding: 8px 25px 6px 10px;
margin: 1px 1px;
}
QMenu::item:selected {
background-color : rgb(236,236,237);
}
QMenu::icon:checked {
background: rgb(253,253,254);
position: absolute;
top: 1px;
right: 1px;
bottom: 1px;
left: 1px;
}
QMenu::icon:checked:selected {
background-color : rgb(236,236,237);
background-image: url(:/space_selected.png);
}
QMenu::separator {
height: 2px;
background: rgb(235,235,236);
margin-left: 10px;
margin-right: 10px;
}
QPushButton#searchButton,#t_backButton:hover{
padding-left:1px;
padding-top:1px;
}
QPushButton#searchButton,#t_backButton:pressed{
padding-left:2px;
padding-top:2px;
}
QLineEdit#search_QLineEdit{
background: $m_QWidget_BackGround_Color;
color:$m_QWidget_Font_Color;
border: 1px solid gray;
border-radius: 2px;
padding: 0 8px;
selection-background-color: darkgray;
}
/*QComboBox样式*/
QComboBox {
height: 25px;
border-radius: 4px;
border: 1px solid rgb(100, 100, 100);
background: #f3f3f3;
}
QComboBox:enabled {
color:#2f4f4f;
}
QComboBox:!enabled {
color: rgb(155, 155, 155);
}
QComboBox::drop-down {
width: 20px;
border: none;
}
QComboBox::drop-down:hover {
color:$Button_Hover_BackGround_Color;
}
QComboBox::down-arrow:on {
top: 1px;
}
QComboBox QAbstractItemView {
border: 1px solid rgb(100, 100, 100);
background: #f3f3f3;
outline: none;
}
QComboBox QAbstractItemView::item {
height: 25px;
color: $m_QWidget_Font_Color;
}
QComboBox QAbstractItemView::item:selected {
color:$Button_Hover_BackGround_Color;
background:rgb(0,120,215);
}
QComboBox QAbstractItemView::item:hover {
color:$Button_Hover_BackGround_Color;
background:rgb(0,120,215);
}
/*QTabWidget样式*/
QTabWidget{
background-color:transparent;
}
QTabWidget::pane{
border:0px;
}
QTabWidget::tab-bar{
alignment: center;
border:1px rgb(255,255,255);
}
/*通用QTabBar样式*/
QTabBar::tab{
/*border: 1px solid gray;*/
border-radius: 3px;
color:$m_QWidget_Font_Color;
min-width:25ex;
min-height:8ex;
}
QTabBar::tab:hover{
background:rgb(0,120,215);
color:$Button_Hover_BackGround_Color;
}
QTabBar::tab:selected{
border-color: $m_QWidget_BackGround_Color;
background:rgb(0,120,215);
color:$Button_Hover_BackGround_Color;
}
/*标题栏QTabBar样式*/
QTabBar#MediaTitleBar::tab{
border-bottom: 0px;
border-radius: 3px;
color:$m_QWidget_Font_Color;
min-width:50ex;
height: 40px;
}
QTabBar#MediaTitleBar::tab:hover{
background:rgb(214,214,214);
color:$m_QWidget_Font_Color;
}
QTabBar#MediaTitleBar::tab:selected{
border-color: $m_QWidget_BackGround_Color;
background:rgb(214,214,214);
color:$m_QWidget_Font_Color;
}
QTabBar#MediaTitleBar::close-button{
min-width:30px;
min-height:30px;
subcontrol-origin: padding;
subcontrol-position: bottom right;
border-image: url(:/res/img/light/close_little.png);
}
QTabBar#MediaTitleBar::close-button:hover{
background: rgb(192,192,192);
}
/*QTableView样式*/
QTableView{
selection-background-color:rgb(255,0,0);
background:$m_QWidget_BackGround_Color;
border:1px rgb(255,255,255);
color:rgb(200,200,200)
}
QTableView::item
{
background-color:$m_QWidget_BackGround_Color;
border:1px solid #2f4f4f;
color:$m_QWidget_Font_Color;
}
QTableView::item:hover
{
color:$Button_Hover_BackGround_Color;
background:rgb(0,120,215);
}
QTableView::item::selected
{
color:$Button_Hover_BackGround_Color;
background:rgb(0,120,215);
outline:0px;
}
QHeaderView::section{
color:#2f4f4f;
background:#f3f3f3;
border:1px solid #2f4f4f;
border-bottom:1px solid #f3f3f3;
}
QHeaderView::section:hover
{
color:$Button_Hover_BackGround_Color;
background:rgb(0,120,215);
}
/*滚动条样式*/
QScrollBar:vertical{
border: none;
background-color:$m_QWidget_BackGround_Color;
width:10px;
}
QScrollBar::handle:vertical{
background:rgb(0,120,215);
border-radius:4px;
}
QScrollBar::handle:vertical:hover{
background:rgb(0,120,215);
}
QScrollBar::handle:vertical{
background:rgb(0,120,215);
border-radius:4px;
}
QScrollBar::handle:vertical:hover{
background:rgb(0,120,255);;
}
QScrollBar::add-page:vertical,QScrollBar::sub-page:vertical
{
background:$m_QWidget_BackGround_Color;
border-radius:3px;
}
/*播放进度条*/
QSlider::groove:horizontal {
border: 0px solid #bbb;
}
QSlider::sub-page:horizontal {
background: rgb(235,97,0);
border-radius: 3px;
margin-top:8px;
margin-bottom:8px;
}
QSlider::add-page:horizontal {
background: rgb(255,255, 255);
border: 0px solid #777;
border-radius: 2px;
margin-top:8px;
margin-bottom:8px;
}
QSlider::handle:horizontal {
background: rgb(255,153,102);
border: 1px solid rgb(255,153,102);
width: 14px;
height:10px;
border-radius: 8px;
margin-top:3px;
margin-bottom:3px;
}
QSlider::handle:horizontal:hover {
background: rgb(255,128,6);
border: 1px solid rgba(102,102,102,102);
border-radius: 7px;
}
QSlider::sub-page:horizontal:disabled {
background: #bbb;
border-color: #999;
}
QSlider::add-page:horizontal:disabled {
background: #eee;
border-color: #999;
}
QSlider::handle:horizontal:disabled {
background: #eee;
border: 1px solid #aaa;
border-radius: 4px;
}
/*------------------标题栏样式 最小化 最大化 关闭---------------------*/
/*标题栏变量参数值定义*/
$titleBar_QWidget_BackGround_Color = #ffffff; /*标题栏背景*/
QWidget#mediaTitle{
background-color: $titleBar_QWidget_BackGround_Color;
margin-top:1px;
margin-right:1px;
margin-bottom:1px;
margin-left:1px;
}
QPushButton#minimizeButton{
image:url(":/res/img/btn/btn_min.png");
border:none;
width:20px;
height:20px;
}
QPushButton#maximizeButton{
image:url(":/res/img/btn/btn_max.png");
border:none;
width:20px;
height:20px;
}
QPushButton#closeButton{
image:url(":/res/img/btn/btn_close.png");
border:none;
width:20px;
height:20px;
}
/*----------------------鼠标移动到按钮上---------------------------*/
QPushButton#minimizeButton:hover{
padding-left:1px;
padding-top:1px;
}
QPushButton#maximizeButton:hover{
padding-left:1px;
padding-top:1px;
}
QPushButton#closeButton:hover{
padding-left:1px;
padding-top:1px;
}
/*----------------------鼠标按下到按钮上---------------------------*/
QPushButton#minimizeButton:pressed{
padding-left:2px;
padding-top:2px;
}
QPushButton#maximizeButton:pressed{
padding-left:2px;
padding-top:2px;
}
QPushButton#closeButton:pressed{
padding-left:1px;
padding-top:1px;
}
/*------------------播放器面板样式---------------------*/
/*播放器面板变量参数值定义*/
$m_MediaPlayer_Slider_QWidget_Color = #c7fdff;
$b_max_size = 25px;
QWidget#m_MediaPlayerSliderQWidget{
background-color: $m_QWidget_BackGround_Color;
}
QWidget#m_videoWidget{
background-color:$m_QWidget_BackGround_Color;
background-image:url(:/res/img/zvo.png);
background-position:center;
background-repeat:no-repeat;
}
/*播放器按钮-默认*/
QPushButton#m_btnvolume{
image:url(":/res/img/light/volume_open.png");
border:none;
max-width:$b_max_size;
max-height:$b_max_size;
}
QPushButton#m_btnPlay{
image:url(":/res/img/light/play.png");
border:none;
max-width:$b_max_size;
max-height:$b_max_size;
}
QPushButton#m_btnClose{
image:url(":/res/img/light/close.png");
border:none;
border:none;
max-width:$b_max_size;
max-height:$b_max_size;
}
QPushButton#m_btnStop{
image:url(":/res/img/light/stop.png");
border:none;
max-width:$b_max_size;
max-height:$b_max_size;
}
QPushButton#m_btnPrev{
image:url(":/res/img/light/prev.png");
border:none;
max-width:$b_max_size;
max-height:$b_max_size;
}
QPushButton#m_btnNext{
image:url(":/res/img/light/next.png");
border:none;
max-width:$b_max_size;
max-height:$b_max_size;
}
QPushButton#m_btnEq{
image:url(":/res/img/light/equalizer.png");
border:none;
max-width:$b_max_size;
max-height:$b_max_size;
}
QPushButton#m_btnSet{
image:url(":/res/img/light/setting.png");
border:none;
max-width:$b_max_size;
max-height:$b_max_size;
}
QPushButton#m_btnMenuOpt{
image:url(":/res/img/light/menu.png");
border:none;
max-width:$b_max_size;
max-height:$b_max_size;
}
QPushButton#m_btnDown{
image:url(":/res/img/light/download.png");
border:none;
max-width:$b_max_size;
max-height:$b_max_size;
}
/*播放器按钮-Hover*/
QPushButton#m_btnvolume:hover{
background: $Button_Hover_BackGround_Color;
}

113
res/qss/light_style.qss Normal file
View File

@ -0,0 +1,113 @@
QWidget#m_widget{
border-radius:10px;
background-color: rgba(243,243,243,0.9);
color:#2F4F4F;
}
QPushButton#btn_opt{
image:url(:/res/img/sui.png);
width:35px;
height:35px;
border:none;
}
QLabel{
color:#404040;
}
QPushButton{
height:25px;
}
QComboBox{
height:25px;
}
QPushButton:hover{
padding-left:1px;
padding-top:1px;
}
QPushButton#BTN_DOWNLOAD{
width:25px;
height:25px;
border:none;
image:url(":/res/img/btn/btn_download.png");
}
QPushButton#BTN_SETS{
width:25px;
height:25px;
border:none;
image:url(":/res/img/btn/btn_setting.png");
}
QPushButton#BTN_UPDATE{
width:25px;
height:25px;
border:none;
image:url(":/res/img/btn/btn_update.png");
}
QPushButton#BTN_ABOUT{
width:25px;
height:25px;
border:none;
image:url(":/res/img/btn/btn_about.png");
}
QTableView#GAME_INFO_TABLE::item:selected {
background-color: #0078d4;
}
/*------------------标题栏样式 最小化 最大化 关闭---------------------*/
/*标题栏变量参数值定义*/
/*标题栏背景*/
QWidget#sui_title{
background-color: #ffffff;
margin-top:1px;
margin-right:1px;
margin-bottom:1px;
margin-left:1px;
}
QPushButton#btn_min,QPushButton#btn_max,QPushButton#btn_close{
margin-right:3px;
margin-bottom:0px;
border-radius:8px;
}
QPushButton#btn_min{
image:url(":/res/img/btn/btn_min.png");
border:none;
width:20px;
height:20px;
}
QPushButton#btn_max{
image:url(":/res/img/btn/btn_max.png");
border:none;
width:20px;
height:20px;
}
QPushButton#btn_max[maximizeProperty='maximize'] {
image:url(":/res/img/btn/btn_max.png");
border:none;
width:20px;
height:20px;
}
QPushButton#btn_max[maximizeProperty='restore'] {
image:url(":/res/img/btn/btn_max_restore.png");
border:none;
width:20px;
height:20px;
}
QPushButton#btn_close{
image:url(":/res/img/btn/btn_close.png");
border:none;
width:20px;
height:20px;
}
QPushButton#btn_min:hover,QPushButton#btn_max:hover,QPushButton#btn_close:hover{
padding-left:1px;
padding-top:1px;
}
QPushButton#btn_min:pressed,QPushButton#btn_max:pressed,QPushButton#btn_close:pressed{
padding-left:1px;
padding-top:1px;
}

Binary file not shown.

17
res/txt/about.txt Normal file
View File

@ -0,0 +1,17 @@
#### 作者申明
**本软件仅供学习和研究,软件内置数据仅限于测试**<br/>
**开发者不对本软件所造成的计算机软件侵权法律问题承担任何法律责任**<br/>
**禁止本软件源码和软件用于任何商业用途**<br/>
**禁止任何人恶意举报本软件**<br/>
**禁止任何人恶意盗窃本软件测试数据**<br/>
#### 鸣谢列表
**皓月代码托管平台**<br/>
#### About XSteam
**software name:XSteam**<br/>
**builder:JackLee_CN**<br/>
**github:vek-zvo**<br/>
**src github(don't open)**<br/>

136
src/DataExchange.cpp Normal file
View File

@ -0,0 +1,136 @@
#include "DataExchange.h"
void DataExchange::ExportStep(const QString& fileName, STEPControl_StepModelType stepType)
{
IFSelect_ReturnStatus aStatus;
STEPControl_Writer aStepWriter;
for (auto aisObj : aisObjs)
{
if (Handle(MAisDemo) aShape = Handle(MAisDemo)::DownCast(aisObj))
{
aStatus = aStepWriter.Transfer(aShape->Shape() , stepType);
if (aStatus != IFSelect_RetDone)
{
std::cout << "A shape was not transferred successfully" << std::endl;
return;
}
}
}
aStatus = aStepWriter.Write(fileName.toStdString().c_str());
switch (aStatus)
{
case IFSelect_RetError:
std::cout << "Incorrect Data." << std::endl;
break;
case IFSelect_RetFail:
std::cout << "Writing error" << std::endl;
break;
case IFSelect_RetVoid:
std::cout << "Nothing to transfer." << std::endl;
break;
case IFSelect_RetStop:
case IFSelect_RetDone:
std::cout << "A STEP file was successfully written" << std::endl;
break;
}
}
void DataExchange::ImportStep(const QString& fileName)
{
STEPControl_Reader aReader;
const IFSelect_ReturnStatus aStatus = aReader.ReadFile(fileName.toStdString().c_str());
if (aStatus != IFSelect_RetDone)
{
std::cout << "A BREP file was not read successfully" << std::endl;
return;
}
bool anIsFailsOnly = false;
aReader.PrintCheckLoad(anIsFailsOnly , IFSelect_ItemsByEntity);
int aRootsNumber = aReader.NbRootsForTransfer();
aReader.PrintCheckTransfer(anIsFailsOnly , IFSelect_ItemsByEntity);
for (int i = 1; i <= aRootsNumber; i++)
{
aReader.TransferRoot(i);
}
aisObjs.clear();
int aShapesNumber = aReader.NbShapes();
for (int i = 1; i <= aShapesNumber; i++)
{
TopoDS_Shape aTopoShape = aReader.Shape(i);
Handle(MAisDemo) anAisShape = new MAisDemo(aTopoShape);
aisObjs.push_back(anAisShape);
}
std::cout << "A STEP file was read successfully" << std::endl;
}
void DataExchange::ExportIges(const QString& fileName)
{
IGESControl_Controller::Init();
IGESControl_Writer anIgesWriter(Interface_Static::CVal("XSTEP.iges.unit") ,
Interface_Static::IVal("XSTEP.iges.writebrep.mode"));
bool anIsShapeExist = false;
for (auto aisObj : aisObjs)
{
if (Handle(MAisDemo) aShape = Handle(MAisDemo)::DownCast(aisObj))
{
anIsShapeExist = Standard_True;
anIgesWriter.AddShape(aShape->Shape());
}
}
if (anIsShapeExist)
{
anIgesWriter.ComputeModel();
if (anIgesWriter.Write(fileName.toStdString().c_str()))
{
std::cout << "A IGES file was successfully written" << std::endl;
}
else
{
std::cout << "A IGES file was not written" << std::endl;
}
}
else
{
std::cout << "Shapes do not exist" << std::endl;
}
}
void DataExchange::ImportIges(const QString& fileName)
{
IGESControl_Reader aReader;
int status = aReader.ReadFile(fileName.toStdString().c_str());
if (status != IFSelect_RetDone)
{
std::cout << "A IGES file was not read successfully" << std::endl;
return;
}
aReader.TransferRoots();
TopoDS_Shape aTopoShape = aReader.OneShape();
Handle(MAisDemo) anAisShape = new MAisDemo(aTopoShape);
aisObjs.clear();
aisObjs.push_back(anAisShape);
std::cout << "A IGES file was read successfully" << std::endl;
}
void DataExchange::ImportObj(const QString& fileName)
{
RWObj_TriangulationReader reader;
Message_ProgressRange process;
bool status = reader.Read(fileName.toStdString().c_str() , process);
TopoDS_Shape shape = reader.ResultShape();
Handle(MAisDemo) anAisShape = new MAisDemo(shape);
aisObjs.clear();
aisObjs.push_back(anAisShape);
std::cout << "A OBJ file was read successfully" << std::endl;
}

48
src/DataExchange.h Normal file
View File

@ -0,0 +1,48 @@
#pragma once
#include "MAISObj.h"
#include <iostream>
#include <vector>
#include <AIS_InteractiveObject.hxx>
#include <AIS_Shape.hxx>
#include <Interface_Static.hxx>
#include <IFSelect_ReturnStatus.hxx>
#include <STEPControl_Writer.hxx>
#include <STEPControl_Reader.hxx>
#include <STEPControl_StepModelType.hxx>
#include <IGESControl_Writer.hxx>
#include <IGESControl_Controller.hxx>
#include <IGESControl_Reader.hxx>
#include <RWObj_TriangulationReader.hxx>
#include <QString>
class DataExchange
{
public:
DataExchange() = default;
void setAisObjs(std::vector<Handle(AIS_InteractiveObject)>& objs)
{
aisObjs = objs;
}
std::vector<Handle(AIS_InteractiveObject)> getAisObjs()
{
return aisObjs;
}
void ExportStep(const QString& fileName , STEPControl_StepModelType stepType = STEPControl_AsIs);
void ImportStep(const QString& fileName);
void ExportIges(const QString& fileName);
void ImportIges(const QString& fileName);
void ImportObj(const QString& fileName);
private:
std::vector<Handle(AIS_InteractiveObject)> aisObjs;
};

989
src/MAISObj.cpp Normal file
View File

@ -0,0 +1,989 @@
#include "MAISObj.h"
MAisDemo::MAisDemo(const TopoDS_Shape& shap, bool indexVisible) :
myShape(shap),
faceIndexIsVisible(indexVisible)
{
myDrawer->SetFaceBoundaryDraw(true);// 要放开头,其余样式设置位置随便
myDrawer->SetFaceBoundaryAspect(new Prs3d_LineAspect(Quantity_NOC_BLACK , Aspect_TOL_SOLID , 1.0));
}
void MAisDemo::Compute(const Handle(PrsMgr_PresentationManager)& thePrsMgr , const Handle(Prs3d_Presentation)& thePrs , const Standard_Integer theMode)
{
if (theMode == MDispMode_WireFrame)
{
StdPrs_WFShape::Add(thePrs , myShape , myDrawer);
setFaceIndex(thePrs);
}
else if (theMode == MDispMode_Shaded)
{
StdPrs_ShadedShape::Add(thePrs , myShape , myDrawer);
setFaceIndex(thePrs);
}
}
void MAisDemo::ComputeSelection(const Handle(SelectMgr_Selection)& theSel , const Standard_Integer theMode)
{
TopAbs_ShapeEnum TypOfSel = SelectionType(theMode);
Standard_Real aDefl = StdPrs_ToolTriangulatedShape::GetDeflection(myShape , myDrawer);
StdSelect_BRepSelectionTool::Load(theSel , this , myShape , TypOfSel , aDefl ,
myDrawer->DeviationAngle() ,
myDrawer->IsAutoTriangulation());
}
void MAisDemo::SetColor(const Quantity_Color& theColor)
{
myDrawer->SetupOwnShadingAspect();
myDrawer->ShadingAspect()->SetColor(theColor);
}
void MAisDemo::setFaceIndex(const Handle(Prs3d_Presentation)& thePrs)
{
if (faceIndexIsVisible)
{
int i = 1;
for (TopExp_Explorer exp(myShape , TopAbs_FACE); exp.More(); exp.Next() , ++i)
{
TopoDS_Face face = TopoDS::Face(exp.Current());
GProp_GProps props;
BRepGProp::SurfaceProperties(face , props);
gp_Pnt center = props.CentreOfMass(); // 获取几何中心
Handle(Graphic3d_Group) group = thePrs->NewGroup();
Handle(Graphic3d_AspectText3d) textAspect = new Graphic3d_AspectText3d();
textAspect->SetColor(Quantity_NOC_BLUE);
textAspect->SetTextZoomable(false);
textAspect->SetFont("Consolas");
textAspect->SetStyle(Aspect_TOST_ANNOTATION);
group->SetPrimitivesAspect(textAspect);
Handle(Graphic3d_Text) text = new Graphic3d_Text(20.0);
text->SetText(std::to_string(i).c_str());
text->SetPosition(center);
group->AddText(text);
}
}
}
MAisObject::MAisObject(std::shared_ptr< MSLinearRect> shap) :
myShape(shap)
{
myShadeStyle = new Prs3d_Drawer();
myShadeStyle->SetupOwnDefaults();
myShadeStyle->SetFaceBoundaryDraw(true);// 要放开头,其余样式设置位置随便
myShadeStyle->SetFaceBoundaryAspect(new Prs3d_LineAspect(Quantity_NOC_BLACK , Aspect_TOL_SOLID , 1.0));
myShadeStyle->SetWireAspect(new Prs3d_LineAspect(Quantity_NOC_GREEN , Aspect_TOL_SOLID , 1.0));
// 增加透明度可增加被覆盖内容识别率
myShadeStyle->ShadingAspect()->SetTransparency(0.5);
myShadeStyleHighLight = new Prs3d_Drawer();
myShadeStyleHighLight->SetShadingAspect(new Prs3d_ShadingAspect()); // 新建必须添加aspect不然后面访问空指针报错
myShadeStyleHighLight->ShadingAspect()->SetTransparency(0.5);
myShadeStyleHighLight->SetFaceBoundaryDraw(true);
myShadeStyleHighLight->SetFaceBoundaryAspect(new Prs3d_LineAspect(Quantity_NOC_GRAY80 , Aspect_TOL_SOLID , 1.0));
}
void MAisObject::Compute(const Handle(PrsMgr_PresentationManager)& thePrsMgr ,
const Handle(Prs3d_Presentation)& thePrs ,
const Standard_Integer theMode)
{
if (theMode == MDispMode_WireFrame)
{
SetDisplayMode(MDispMode_WireFrame);
StdPrs_WFShape::Add(thePrs , myShape->getShape() , myShadeStyle);
StdPrs_WFShape::Add(thePrs , myShape->getPath() , myShadeStyle);
StdPrs_WFShape::Add(thePrs , myShape->getProfile() , myShadeStyle);
}
else if (theMode == MDispMode_Shaded)
{
SetDisplayMode(MDispMode_Shaded);
StdPrs_ShadedShape::Add(thePrs , myShape->getShape() , myShadeStyle);
StdPrs_WFShape::Add(thePrs , myShape->getPath() , myShadeStyle);
StdPrs_WFShape::Add(thePrs , myShape->getProfile() , myShadeStyle);
}
else if (theMode == MDispMode_Shaded_HighLight)
{
myShadeStyleHighLight->SetFaceBoundaryAspect(new Prs3d_LineAspect(Quantity_NOC_GRAY80 , Aspect_TOL_SOLID , 1.0));
StdPrs_ShadedShape::Add(thePrs , myShape->getShape() , myShadeStyleHighLight);
StdPrs_WFShape::Add(thePrs , myShape->getPath() , myShadeStyle);
StdPrs_WFShape::Add(thePrs , myShape->getProfile() , myShadeStyle);
}
else if (theMode == MDispMode_Shaded_HighLightDynamic)
{
myShadeStyleHighLight->SetFaceBoundaryAspect(new Prs3d_LineAspect(Quantity_NOC_CYAN , Aspect_TOL_SOLID , 1.0));
StdPrs_ShadedShape::Add(thePrs , myShape->getShape() , myShadeStyleHighLight);
StdPrs_WFShape::Add(thePrs , myShape->getPath() , myShadeStyle);
StdPrs_WFShape::Add(thePrs , myShape->getProfile() , myShadeStyle);
}
else if (theMode == MDispMode_WireFrame_HighLight)
{
Handle(Prs3d_Drawer) wireStyle = new Prs3d_Drawer();
wireStyle->SetupOwnDefaults();
Handle(Prs3d_LineAspect) lineAspect = new Prs3d_LineAspect(Quantity_NOC_WHITE , Aspect_TOL_SOLID , 1.0);
wireStyle->SetWireAspect(lineAspect);
// 默认FreeBoundary绿色
wireStyle->SetFreeBoundaryAspect(lineAspect);
// 默认UnFreeBoundary黄色
wireStyle->SetUnFreeBoundaryAspect(lineAspect);
StdPrs_WFShape::Add(thePrs , myShape->getPath() , wireStyle);
StdPrs_WFShape::Add(thePrs , myShape->getShape() , wireStyle);
StdPrs_WFShape::Add(thePrs , myShape->getProfile() , wireStyle);
}
}
void MAisObject::ComputeSelection(const Handle(SelectMgr_Selection)& theSel , const Standard_Integer theMode)
{
TopoDS_Wire path = myShape->getPath();
TopoDS_Shape aShape = myShape->getShape();
gp_Pnt endPoint = myShape->getPoints()[0];
gp_Pnt endPoint1 = myShape->getPoints()[1];
gp_Pnt aMidPnt = endPoint1.Translated(gp_Vec(endPoint1 , endPoint) * 0.5);
if (theMode == 0)
{
Handle(MAisOwner) aOwner = new MAisOwner(this);
Standard_Real aDefl = StdPrs_ToolTriangulatedShape::GetDeflection(aShape , myShadeStyle);
StdSelect_BRepSelectionTool::ComputeSensitive(aShape , aOwner , theSel ,
aDefl , myShadeStyle->DeviationAngle() , 9 , 500 , myShadeStyle->IsAutoTriangulation());
}
else if (theMode == 1)
{
Handle(MCaptureOwnerEdge) aCaptureOwnerEdge = new MCaptureOwnerEdge(path , this , 1);
Handle(Select3D_SensitiveSegment) aSensEdge = new Select3D_SensitiveSegment(aCaptureOwnerEdge , endPoint , endPoint1);
aSensEdge->SetSensitivityFactor(20);
theSel->Add(aSensEdge);
Handle(MCaptureOwnerEndPonit) aCaptureOwnerEndPonit = new MCaptureOwnerEndPonit(endPoint , this , 2);
Handle(Select3D_SensitivePoint) aSensEndPnt = new Select3D_SensitivePoint(aCaptureOwnerEndPonit , endPoint);
aSensEndPnt->SetSensitivityFactor(20);
theSel->Add(aSensEndPnt);
Handle(MCaptureOwnerEndPonit) aCaptureOwnerEndPonit1 = new MCaptureOwnerEndPonit(endPoint1 , this , 2);
Handle(Select3D_SensitivePoint) aSensEndPnt1 = new Select3D_SensitivePoint(aCaptureOwnerEndPonit1 , endPoint1);
aSensEndPnt1->SetSensitivityFactor(20);
theSel->Add(aSensEndPnt1);
Handle(MCaptureOwnerMidPoint) aCaptureOwnerMidPoint = new MCaptureOwnerMidPoint(aMidPnt , this , 2);
Handle(Select3D_SensitivePoint) aSensMidPnt = new Select3D_SensitivePoint(aCaptureOwnerMidPoint , aMidPnt);
aSensMidPnt->SetSensitivityFactor(20);
theSel->Add(aSensMidPnt);
}
}
void MAisObject::SetColor(const Quantity_Color& theColor)
{
// 自带的myDrawer设置是全局的所有MAisObject实例都会变
myShadeStyle->ShadingAspect()->SetColor(theColor);
// myShadeStyleHighLight设置是实例才会变
myShadeStyleHighLight->ShadingAspect()->SetColor(theColor);
}
void MAisOwner::HilightWithColor(const Handle(PrsMgr_PresentationManager)& thePrsMgr ,
const Handle(Prs3d_Drawer)& theStyle ,
const Standard_Integer theMode)
{
MAisObject* anObj = dynamic_cast<MAisObject*>(mySelectable);
std::shared_ptr< MSLinearRect> aShape = anObj->Shape();
int displayMode = anObj->DisplayMode();
if (myPrsWire.IsNull())
{
myPrsWire = new Prs3d_Presentation(thePrsMgr->StructureManager());
myPrsWire->SetZLayer(Graphic3d_ZLayerId_Topmost);
anObj->Compute(thePrsMgr , myPrsWire , MAisObject::MDispMode_WireFrame_HighLight);
}
if (myPrs.IsNull())
{
myPrs = new Prs3d_Presentation(thePrsMgr->StructureManager());
myPrs->SetZLayer(Graphic3d_ZLayerId_Topmost);
anObj->Compute(thePrsMgr , myPrs , MAisObject::MDispMode_Shaded_HighLight);
}
if (thePrsMgr->IsImmediateModeOn())
{
// 动态高亮指针需与选择高亮指针分开new。如果用同一个ImmediateList机制会自动erase,导致选择高亮模式也被清除
// theStyle在Compute中最好也new一个
if (displayMode == 0)
{
Handle(Prs3d_Presentation) myPrsWireD = new Prs3d_Presentation(thePrsMgr->StructureManager());
anObj->Compute(thePrsMgr , myPrsWireD , MAisObject::MDispMode_WireFrame_HighLight);
myPrsWireD->Highlight(theStyle);
thePrsMgr->AddToImmediateList(myPrsWireD);
}
else
{
Handle(Prs3d_Presentation) myPrsD = new Prs3d_Presentation(thePrsMgr->StructureManager());
myPrsD->SetZLayer(Graphic3d_ZLayerId_Topmost);
anObj->Compute(thePrsMgr , myPrsD , MAisObject::MDispMode_Shaded_HighLightDynamic);
thePrsMgr->AddToImmediateList(myPrsD);
}
}
else
{
if (displayMode == 0)
myPrsWire->Display();
else
myPrs->Display();
}
}
void MAisOwner::Unhilight(const Handle(PrsMgr_PresentationManager)& thePrsMgr , const Standard_Integer theMode)
{
if (!myPrs.IsNull())
{
myPrs->Erase();
}
if (!myPrsWire.IsNull())
{
myPrsWire->Erase();
}
}
MCaptureOwnerEndPonit::MCaptureOwnerEndPonit(gp_Pnt& pnt , const Handle(AIS_InteractiveObject)& theObj , int thePriority) :
SelectMgr_EntityOwner(theObj , thePriority) ,
myPoint(pnt)
{
// 不使用HilightWithColor函数参数的全局theStyle有时中点/端点会错乱。
myStyle = new Prs3d_Drawer();
myStyle->SetupOwnDefaults();
myStyle->PointAspect()->SetScale(Standard_Real(10));
myStyle->PointAspect()->SetTypeOfMarker(Aspect_TOM_POINT);
myStyle->PointAspect()->SetColor(Quantity_NOC_YELLOW);
}
void MCaptureOwnerEndPonit::HilightWithColor(const Handle(PrsMgr_PresentationManager)& thePrsMgr ,
const Handle(Prs3d_Drawer)& theStyle ,
const Standard_Integer theMode)
{
if (myPrs.IsNull())
{
myPrs = new Prs3d_Presentation(thePrsMgr->StructureManager());
Handle(Graphic3d_Group) aGroupSegs = myPrs->NewGroup();
aGroupSegs->SetGroupPrimitivesAspect(myStyle->PointAspect()->Aspect());
Handle(Graphic3d_ArrayOfPoints) arrPnts = new Graphic3d_ArrayOfPoints(1);
arrPnts->AddVertex(myPoint);
aGroupSegs->AddPrimitiveArray(arrPnts);
myPrs->SetZLayer(Graphic3d_ZLayerId_TopOSD);
}
if (myPrsDynamic.IsNull())
{
myPrsDynamic = new Prs3d_Presentation(thePrsMgr->StructureManager());
myPrsDynamic->SetZLayer(Graphic3d_ZLayerId_TopOSD);
Handle(Graphic3d_Group) aGroupSegs = myPrsDynamic->NewGroup();
aGroupSegs->SetGroupPrimitivesAspect(myStyle->PointAspect()->Aspect());
Handle(Graphic3d_ArrayOfPoints) arrPnts = new Graphic3d_ArrayOfPoints(1);
arrPnts->AddVertex(myPoint);
aGroupSegs->AddPrimitiveArray(arrPnts);
myPrsDynamic->Highlight(myStyle); // 和下面有先后顺序
myPrsDynamic->HighlightStyle()->SetColor(Quantity_NOC_CYAN);
}
if (thePrsMgr->IsImmediateModeOn())
{
thePrsMgr->AddToImmediateList(myPrsDynamic);
}
else
{
myPrs->Display();
}
}
void MCaptureOwnerEndPonit::Unhilight(const Handle(PrsMgr_PresentationManager)& thePrsMgr , const Standard_Integer theMode)
{
if (!myPrs.IsNull())
{
myPrs->Erase();
}
if (!myPrsDynamic.IsNull())
{
myPrsDynamic->Erase();
}
}
MCaptureOwnerMidPoint::MCaptureOwnerMidPoint(gp_Pnt& pnt , const Handle(AIS_InteractiveObject)& theObj , int thePriority) :
SelectMgr_EntityOwner(theObj , thePriority) ,
myPoint(pnt)
{
const char* path = "E:/8other/CppLearn/OCCTTutorial/OCCTQtDemo/icons/triangle.png";
Handle(Image_AlienPixMap) pix = new Image_AlienPixMap();
pix->Load(path);
img = new Graphic3d_MarkerImage(pix);
myStyle = new Prs3d_Drawer();
myStyle->SetupOwnDefaults();
myStyle->PointAspect()->SetTypeOfMarker(Aspect_TOM_USERDEFINED);
myStyle->PointAspect()->Aspect()->SetMarkerImage(img);
}
void MCaptureOwnerMidPoint::HilightWithColor(const Handle(PrsMgr_PresentationManager)& thePrsMgr , const Handle(Prs3d_Drawer)& theStyle , const Standard_Integer theMode)
{
if (myPrs.IsNull())
{
myPrs = new Prs3d_Presentation(thePrsMgr->StructureManager());
Handle(Graphic3d_Group) aGroupSegs = myPrs->NewGroup();
aGroupSegs->SetGroupPrimitivesAspect(myStyle->PointAspect()->Aspect());
Handle(Graphic3d_ArrayOfPoints) arrPnts = new Graphic3d_ArrayOfPoints(1);
arrPnts->AddVertex(myPoint);
aGroupSegs->AddPrimitiveArray(arrPnts);
myPrs->SetZLayer(Graphic3d_ZLayerId_TopOSD);
}
if (myPrsDynamic.IsNull())
{
myPrsDynamic = new Prs3d_Presentation(thePrsMgr->StructureManager());
Handle(Graphic3d_Group) aGroupSegs = myPrsDynamic->NewGroup();
aGroupSegs->SetGroupPrimitivesAspect(myStyle->PointAspect()->Aspect());
Handle(Graphic3d_ArrayOfPoints) arrPnts = new Graphic3d_ArrayOfPoints(1);
arrPnts->AddVertex(myPoint);
aGroupSegs->AddPrimitiveArray(arrPnts);
myPrsDynamic->SetZLayer(Graphic3d_ZLayerId_TopOSD);
myPrsDynamic->Highlight(myStyle); // 和下面有先后顺序
myPrsDynamic->HighlightStyle()->SetColor(Quantity_NOC_CYAN);
}
if (thePrsMgr->IsImmediateModeOn())
{
thePrsMgr->AddToImmediateList(myPrsDynamic);
}
else
{
myPrs->Display();
}
}
void MCaptureOwnerMidPoint::Unhilight(const Handle(PrsMgr_PresentationManager)& thePrsMgr , const Standard_Integer theMode)
{
if (!myPrs.IsNull())
{
myPrs->Erase();
}
if (!myPrsDynamic.IsNull())
{
myPrsDynamic->Erase();
}
}
MCaptureOwnerEdge::MCaptureOwnerEdge(TopoDS_Wire& edge , const Handle(AIS_InteractiveObject)& theObj , int thePriority) :
SelectMgr_EntityOwner(theObj , thePriority) ,
myEdge(edge)
{
myStyle = new Prs3d_Drawer();
myStyle->SetupOwnDefaults();
myStyle->WireAspect()->SetColor(Quantity_NOC_YELLOW);
}
void MCaptureOwnerEdge::HilightWithColor(const Handle(PrsMgr_PresentationManager)& thePrsMgr ,
const Handle(Prs3d_Drawer)& theStyle , const Standard_Integer theMode)
{
if (myPrs.IsNull())
{
myPrs = new Prs3d_Presentation(thePrsMgr->StructureManager());
myPrs->SetZLayer(Graphic3d_ZLayerId_TopOSD);
StdPrs_ShadedShape::Add(myPrs , myEdge , myStyle);
}
if (thePrsMgr->IsImmediateModeOn())
{
Handle(Prs3d_Presentation) myPrsD = new Prs3d_Presentation(thePrsMgr->StructureManager());
myPrsD->SetZLayer(Graphic3d_ZLayerId_TopOSD);
StdPrs_ShadedShape::Add(myPrsD , myEdge , myStyle);
myPrsD->Highlight(myStyle); // 和下面有先后顺序
myPrsD->HighlightStyle()->SetColor(Quantity_NOC_CYAN);
thePrsMgr->AddToImmediateList(myPrsD);
}
else
{
myPrs->Display();
}
}
void MCaptureOwnerEdge::Unhilight(const Handle(PrsMgr_PresentationManager)& thePrsMgr , const Standard_Integer theMode)
{
if (!myPrs.IsNull())
{
myPrs->Erase();
}
}
MAisObject0::MAisObject0(const TopoDS_Shape& shap) :
aShape(shap)
{
SetDisplayMode(MyDispMode_Main);
SetHilightMode(MyDispMode_Highlight);
}
void MAisObject0::Compute(const Handle(PrsMgr_PresentationManager)& thePrsMgr ,
const Handle(Prs3d_Presentation)& thePrs ,
const Standard_Integer theMode)
{
if (theMode == MyDispMode_Main)
{
StdPrs_ShadedShape::Add(thePrs , aShape , myDrawer);
StdPrs_WFShape::Add(thePrs , aShape , myDrawer);
}
else if (theMode == MyDispMode_Highlight)
{
Bnd_Box aBox;
BRepBndLib::Add(aShape , aBox);
Prs3d_BndBox::Add(thePrs , aBox , myDrawer);
}
}
MAisObject1::MAisObject1(const TopoDS_Shape& shap) :
aShape(shap)
{
SetDisplayMode(MyDispMode_Main);
SetHilightMode(MyDispMode_Highlight);
}
void MAisObject1::Compute(const Handle(PrsMgr_PresentationManager)& thePrsMgr ,
const Handle(Prs3d_Presentation)& thePrs ,
const Standard_Integer theMode)
{
const double aRadius = 100.0 , aHeight = 100.0;
if (theMode == MyDispMode_Main)
{
StdPrs_ShadedShape::Add(thePrs , aShape , myDrawer);
//StdPrs_WFShape::Add (thePrs, aShape, myDrawer);
const double aRadius = 100.0 , aHeight = 100.0;
Handle(Graphic3d_ArrayOfSegments) aSegs = new Graphic3d_ArrayOfSegments(4 , 4 * 2 , Graphic3d_ArrayFlags_None);
aSegs->AddVertex(gp_Pnt(0.0 , -aRadius , 0.0));
aSegs->AddVertex(gp_Pnt(0.0 , -aRadius , aHeight));
aSegs->AddVertex(gp_Pnt(0.0 , aRadius , aHeight));
aSegs->AddVertex(gp_Pnt(0.0 , aRadius , 0.0));
aSegs->AddEdges(1 , 2);
aSegs->AddEdges(2 , 3);
aSegs->AddEdges(3 , 4);
aSegs->AddEdges(4 , 1);
Handle(Graphic3d_Group) aGroupSegs = thePrs->NewGroup();
aGroupSegs->SetGroupPrimitivesAspect(myDrawer->WireAspect()->Aspect());
aGroupSegs->AddPrimitiveArray(aSegs);
}
else if (theMode == MyDispMode_Highlight)
{
Bnd_Box aBox;
BRepBndLib::Add(aShape , aBox);
Prs3d_BndBox::Add(thePrs , aBox , myDrawer);
}
}
MAisObject2::MAisObject2(const TopoDS_Shape& shap) :
aShape(shap)
{
SetHilightMode(MyDispMode_Highlight);
myDrawer->SetupOwnShadingAspect();
myDrawer->ShadingAspect()->SetMaterial(Graphic3d_NameOfMaterial_Silver);
myDrawer->SetWireAspect(new Prs3d_LineAspect(Quantity_NOC_GREEN , Aspect_TOL_SOLID , 2.0));
}
void MAisObject2::Compute(const Handle(PrsMgr_PresentationManager)& thePrsMgr ,
const Handle(Prs3d_Presentation)& thePrs ,
const Standard_Integer theMode)
{
if (theMode == MyDispMode_Main)
{
StdPrs_ShadedShape::Add(thePrs , aShape , myDrawer);
//StdPrs_WFShape::Add (thePrs, aShape, myDrawer);
const double aRadius = 100.0 , aHeight = 100.0;
Handle(Graphic3d_ArrayOfSegments) aSegs = new Graphic3d_ArrayOfSegments(4 , 4 * 2 , Graphic3d_ArrayFlags_None);
aSegs->AddVertex(gp_Pnt(0.0 , -aRadius , 0.0));
aSegs->AddVertex(gp_Pnt(0.0 , -aRadius , aHeight));
aSegs->AddVertex(gp_Pnt(0.0 , aRadius , aHeight));
aSegs->AddVertex(gp_Pnt(0.0 , aRadius , 0.0));
aSegs->AddEdges(1 , 2);
aSegs->AddEdges(2 , 3);
aSegs->AddEdges(3 , 4);
aSegs->AddEdges(4 , 1);
Handle(Graphic3d_Group) aGroupSegs = thePrs->NewGroup();
aGroupSegs->SetGroupPrimitivesAspect(myDrawer->WireAspect()->Aspect());
aGroupSegs->AddPrimitiveArray(aSegs);
}
else if (theMode == MyDispMode_Highlight)
{
Bnd_Box aBox;
BRepBndLib::Add(aShape , aBox);
Prs3d_BndBox::Add(thePrs , aBox , myDrawer);
}
}
MAisObject3::MAisObject3(const TopoDS_Shape& shap) :
aShape(shap)
{
SetHilightMode(MyDispMode_Highlight);
myDrawer->SetupOwnShadingAspect();
myDrawer->ShadingAspect()->SetMaterial(Graphic3d_NameOfMaterial_Silver);
myDrawer->SetWireAspect(new Prs3d_LineAspect(Quantity_NOC_GREEN , Aspect_TOL_SOLID , 2.0));
}
void MAisObject3::Compute(const Handle(PrsMgr_PresentationManager)& thePrsMgr ,
const Handle(Prs3d_Presentation)& thePrs ,
const Standard_Integer theMode)
{
const double aRadius = 100.0 , aHeight = 100.0;
if (theMode == MyDispMode_Main)
{
Prs3d_ToolCylinder aCyl(aRadius , aRadius , aHeight , 25 , 25);
Prs3d_ToolDisk aDisk(0.0 , aRadius , 25 , 1);
Handle(Graphic3d_ArrayOfTriangles) aTris =
new Graphic3d_ArrayOfTriangles(aCyl.VerticesNb() + 2 * aDisk.VerticesNb() ,
3 * (aCyl.TrianglesNb() + 2 * aDisk.TrianglesNb()) ,
Graphic3d_ArrayFlags_VertexNormal);
aCyl.FillArray(aTris , gp_Trsf());
aDisk.FillArray(aTris , gp_Trsf());
gp_Trsf aDisk2Trsf;
aDisk2Trsf.SetTransformation(gp_Ax3(gp_Pnt(0.0 , 0.0 , aHeight) , -gp::DZ() , gp::DX()) , gp::XOY());
aDisk.FillArray(aTris , aDisk2Trsf);
Handle(Graphic3d_Group) aGroupTris = thePrs->NewGroup();
aGroupTris->SetGroupPrimitivesAspect(myDrawer->ShadingAspect()->Aspect());
aGroupTris->AddPrimitiveArray(aTris);
aGroupTris->SetClosed(true);
Handle(Graphic3d_ArrayOfSegments) aSegs = new Graphic3d_ArrayOfSegments(4 , 4 * 2 , Graphic3d_CappingFlags_None);
aSegs->AddVertex(gp_Pnt(0.0 , -aRadius , 0.0));
aSegs->AddVertex(gp_Pnt(0.0 , -aRadius , aHeight));
aSegs->AddVertex(gp_Pnt(0.0 , aRadius , aHeight));
aSegs->AddVertex(gp_Pnt(0.0 , aRadius , 0.0));
aSegs->AddEdges(1 , 2);
aSegs->AddEdges(2 , 3);
aSegs->AddEdges(3 , 4);
aSegs->AddEdges(4 , 1);
Handle(Graphic3d_Group) aGroupSegs = thePrs->NewGroup();
aGroupSegs->SetGroupPrimitivesAspect(myDrawer->WireAspect()->Aspect());
aGroupSegs->AddPrimitiveArray(aSegs);
}
else if (theMode == MyDispMode_Highlight)
{
Bnd_Box aBox;
BRepBndLib::Add(aShape , aBox);
Prs3d_BndBox::Add(thePrs , aBox , myDrawer);
}
}
MAisObject4::MAisObject4(const TopoDS_Shape& shap) :
aShape(shap)
{
SetDisplayMode(MyDispMode_Main);
SetHilightMode(MyDispMode_Highlight);
}
void MAisObject4::Compute(const Handle(PrsMgr_PresentationManager)& thePrsMgr ,
const Handle(Prs3d_Presentation)& thePrs ,
const Standard_Integer theMode)
{
const double aRadius = 100.0 , aHeight = 100.0;
if (theMode == MyDispMode_Main)
{
Prs3d_ToolCylinder aCyl(aRadius , aRadius , aHeight , 25 , 25);
Prs3d_ToolDisk aDisk(0.0 , aRadius , 25 , 1);
Handle(Graphic3d_ArrayOfTriangles) aTris =
new Graphic3d_ArrayOfTriangles(aCyl.VerticesNb() + 2 * aDisk.VerticesNb() ,
3 * (aCyl.TrianglesNb() + 2 * aDisk.TrianglesNb()) ,
Graphic3d_ArrayFlags_VertexNormal);
aCyl.FillArray(aTris , gp_Trsf());
aDisk.FillArray(aTris , gp_Trsf());
gp_Trsf aDisk2Trsf;
aDisk2Trsf.SetTransformation(gp_Ax3(gp_Pnt(0.0 , 0.0 , aHeight) , -gp::DZ() , gp::DX()) , gp::XOY());
aDisk.FillArray(aTris , aDisk2Trsf);
Handle(Graphic3d_Group) aGroupTris = thePrs->NewGroup();
aGroupTris->SetGroupPrimitivesAspect(myDrawer->ShadingAspect()->Aspect());
aGroupTris->AddPrimitiveArray(aTris);
aGroupTris->SetClosed(true);
Handle(Graphic3d_ArrayOfSegments) aSegs = new Graphic3d_ArrayOfSegments(4 , 4 * 2 , Graphic3d_CappingFlags_None);
aSegs->AddVertex(gp_Pnt(0.0 , -aRadius , 0.0));
aSegs->AddVertex(gp_Pnt(0.0 , -aRadius , aHeight));
aSegs->AddVertex(gp_Pnt(0.0 , aRadius , aHeight));
aSegs->AddVertex(gp_Pnt(0.0 , aRadius , 0.0));
aSegs->AddEdges(1 , 2);
aSegs->AddEdges(2 , 3);
aSegs->AddEdges(3 , 4);
aSegs->AddEdges(4 , 1);
Handle(Graphic3d_Group) aGroupSegs = thePrs->NewGroup();
aGroupSegs->SetGroupPrimitivesAspect(myDrawer->WireAspect()->Aspect());
aGroupSegs->AddPrimitiveArray(aSegs);
}
else if (theMode == MyDispMode_Highlight)
{
Bnd_Box aBox;
BRepBndLib::Add(aShape , aBox);
Prs3d_BndBox::Add(thePrs , aBox , myDrawer);
}
}
void MAisObject4::ComputeSelection(const Handle(SelectMgr_Selection)& theSel , const Standard_Integer theMode)
{
if (theMode != 0) {
return;
}
Bnd_Box aBox;
BRepBndLib::Add(aShape , aBox);
Handle(SelectMgr_EntityOwner) anOwner = new SelectMgr_EntityOwner(this);
Handle(Select3D_SensitiveBox) aSensBox = new Select3D_SensitiveBox(anOwner , aBox);
theSel->Add(aSensBox);
//Standard_Real aDefl = StdPrs_ToolTriangulatedShape::GetDeflection (aShape,myDrawer);
//StdSelect_BRepSelectionTool::Load (theSel,this,aShape,TopAbs_SHAPE,aDefl,
// myDrawer->DeviationAngle(),
// myDrawer->IsAutoTriangulation());
//const double aRadius = 100.0 , aHeight = 100.0;
//Handle(SelectMgr_EntityOwner) anOwner = new SelectMgr_EntityOwner(this);
//Handle(Graphic3d_ArrayOfTriangles) aTris =
// Prs3d_ToolCylinder::Create(aRadius , aRadius , aHeight , 25 , 25 , gp_Trsf());
//Handle(Select3D_SensitivePrimitiveArray) aSensTri =
// new Select3D_SensitivePrimitiveArray(anOwner);
//aSensTri->InitTriangulation(aTris->Attributes() , aTris->Indices() ,
// TopLoc_Location());
//theSel->Add(aSensTri);
}
MAisObject5::MAisObject5(const TopoDS_Shape& shap) :
aShape(shap)
{
myDrawer->SetupOwnShadingAspect();
myDrawer->ShadingAspect()->SetMaterial(Graphic3d_NameOfMaterial_Silver);
myDrawer->SetWireAspect(new Prs3d_LineAspect(Quantity_NOC_GREEN , Aspect_TOL_SOLID , 2.0));
}
void MAisObject5::Compute(const Handle(PrsMgr_PresentationManager)& thePrsMgr ,
const Handle(Prs3d_Presentation)& thePrs ,
const Standard_Integer theMode)
{
const double aRadius = 100.0 , aHeight = 100.0;
if (theMode == MyDispMode_Main)
{
Prs3d_ToolCylinder aCyl(aRadius , aRadius , aHeight , 25 , 25);
Prs3d_ToolDisk aDisk(0.0 , aRadius , 25 , 1);
Handle(Graphic3d_ArrayOfTriangles) aTris =
new Graphic3d_ArrayOfTriangles(aCyl.VerticesNb() + 2 * aDisk.VerticesNb() ,
3 * (aCyl.TrianglesNb() + 2 * aDisk.TrianglesNb()) ,
Graphic3d_ArrayFlags_VertexNormal);
aCyl.FillArray(aTris , gp_Trsf());
aDisk.FillArray(aTris , gp_Trsf());
gp_Trsf aDisk2Trsf;
aDisk2Trsf.SetTransformation(gp_Ax3(gp_Pnt(0.0 , 0.0 , aHeight) , -gp::DZ() , gp::DX()) , gp::XOY());
aDisk.FillArray(aTris , aDisk2Trsf);
Handle(Graphic3d_Group) aGroupTris = thePrs->NewGroup();
aGroupTris->SetGroupPrimitivesAspect(myDrawer->ShadingAspect()->Aspect());
aGroupTris->AddPrimitiveArray(aTris);
aGroupTris->SetClosed(true);
Handle(Graphic3d_ArrayOfSegments) aSegs = new Graphic3d_ArrayOfSegments(4 , 4 * 2 , Graphic3d_CappingFlags_None);
aSegs->AddVertex(gp_Pnt(0.0 , -aRadius , 0.0));
aSegs->AddVertex(gp_Pnt(0.0 , -aRadius , aHeight));
aSegs->AddVertex(gp_Pnt(0.0 , aRadius , aHeight));
aSegs->AddVertex(gp_Pnt(0.0 , aRadius , 0.0));
aSegs->AddEdges(1 , 2);
aSegs->AddEdges(2 , 3);
aSegs->AddEdges(3 , 4);
aSegs->AddEdges(4 , 1);
Handle(Graphic3d_Group) aGroupSegs = thePrs->NewGroup();
aGroupSegs->SetGroupPrimitivesAspect(myDrawer->WireAspect()->Aspect());
aGroupSegs->AddPrimitiveArray(aSegs);
}
else if (theMode == MyDispMode_Highlight)
{
Bnd_Box aBox;
BRepBndLib::Add(aShape , aBox);
Prs3d_BndBox::Add(thePrs , aBox , myDrawer);
}
}
void MAisObject5::ComputeSelection(const Handle(SelectMgr_Selection)& theSel , const Standard_Integer theMode)
{
if (theMode != 0) {
return;
}
const double aRadius = 100.0 , aHeight = 100.0;
Handle(MAisOwner5) anOwner = new MAisOwner5(this);
Handle(Graphic3d_ArrayOfTriangles) aTris =
Prs3d_ToolCylinder::Create(aRadius , aRadius , aHeight , 25 , 25 , gp_Trsf());
Handle(Select3D_SensitivePrimitiveArray) aSensTri =
new Select3D_SensitivePrimitiveArray(anOwner);
aSensTri->InitTriangulation(aTris->Attributes() , aTris->Indices() ,
TopLoc_Location());
theSel->Add(aSensTri);
}
MAisObject6::MAisObject6(const TopoDS_Shape& shap) :
aShape(shap)
{
myDrawer->SetupOwnShadingAspect();
myDrawer->ShadingAspect()->SetMaterial(Graphic3d_NameOfMaterial_Silver);
myDrawer->SetWireAspect(new Prs3d_LineAspect(Quantity_NOC_GREEN , Aspect_TOL_SOLID , 2.0));
}
void MAisObject6::Compute(const Handle(PrsMgr_PresentationManager)& thePrsMgr ,
const Handle(Prs3d_Presentation)& thePrs ,
const Standard_Integer theMode)
{
const double aRadius = 100.0 , aHeight = 100.0;
if (theMode == MyDispMode_Main)
{
Prs3d_ToolCylinder aCyl(aRadius , aRadius , aHeight , 25 , 25);
Prs3d_ToolDisk aDisk(0.0 , aRadius , 25 , 1);
Handle(Graphic3d_ArrayOfTriangles) aTris =
new Graphic3d_ArrayOfTriangles(aCyl.VerticesNb() + 2 * aDisk.VerticesNb() ,
3 * (aCyl.TrianglesNb() + 2 * aDisk.TrianglesNb()) ,
Graphic3d_ArrayFlags_VertexNormal);
aCyl.FillArray(aTris , gp_Trsf());
aDisk.FillArray(aTris , gp_Trsf());
gp_Trsf aDisk2Trsf;
aDisk2Trsf.SetTransformation(gp_Ax3(gp_Pnt(0.0 , 0.0 , aHeight) , -gp::DZ() , gp::DX()) , gp::XOY());
aDisk.FillArray(aTris , aDisk2Trsf);
Handle(Graphic3d_Group) aGroupTris = thePrs->NewGroup();
aGroupTris->SetGroupPrimitivesAspect(myDrawer->ShadingAspect()->Aspect());
aGroupTris->AddPrimitiveArray(aTris);
aGroupTris->SetClosed(true);
Handle(Graphic3d_ArrayOfSegments) aSegs = new Graphic3d_ArrayOfSegments(4 , 4 * 2 , Graphic3d_CappingFlags_None);
aSegs->AddVertex(gp_Pnt(0.0 , -aRadius , 0.0));
aSegs->AddVertex(gp_Pnt(0.0 , -aRadius , aHeight));
aSegs->AddVertex(gp_Pnt(0.0 , aRadius , aHeight));
aSegs->AddVertex(gp_Pnt(0.0 , aRadius , 0.0));
aSegs->AddEdges(1 , 2);
aSegs->AddEdges(2 , 3);
aSegs->AddEdges(3 , 4);
aSegs->AddEdges(4 , 1);
Handle(Graphic3d_Group) aGroupSegs = thePrs->NewGroup();
aGroupSegs->SetGroupPrimitivesAspect(myDrawer->WireAspect()->Aspect());
aGroupSegs->AddPrimitiveArray(aSegs);
}
else if (theMode == MyDispMode_Highlight)
{
Bnd_Box aBox;
BRepBndLib::Add(aShape , aBox);
Prs3d_BndBox::Add(thePrs , aBox , myDrawer);
}
}
void MAisObject6::ComputeSelection(const Handle(SelectMgr_Selection)& theSel , const Standard_Integer theMode)
{
if (theMode != 0) {
return;
}
const double aRadius = 100.0 , aHeight = 100.0;
Handle(MAisOwner6) anOwner = new MAisOwner6(this);
Handle(Graphic3d_ArrayOfTriangles) aTris =
Prs3d_ToolCylinder::Create(aRadius , aRadius , aHeight , 25 , 25 , gp_Trsf());
Handle(Select3D_SensitivePrimitiveArray) aSensTri =
new Select3D_SensitivePrimitiveArray(anOwner);
aSensTri->InitTriangulation(aTris->Attributes() , aTris->Indices() ,
TopLoc_Location());
theSel->Add(aSensTri);
}
myPk_IShape::myPk_IShape(const TopoDS_Shape& theShape , PrsMgr_TypeOfPresentation3d theType) :
AIS_InteractiveObject(theType) ,
myShape(theShape)
{
SetHilightMode(0);
}
void myPk_IShape::Compute(const Handle(PrsMgr_PresentationManager)& thePrsMgr ,
const Handle(Prs3d_Presentation)& thePrs ,
const Standard_Integer theMode)
{
switch (theMode)
{
// algo for calculation of wireframe presentation
case 0: StdPrs_WFShape::Add(thePrs , myShape , myDrawer); return;
// algo for calculation of shading presentation
case 1: StdPrs_ShadedShape::Add(thePrs , myShape , myDrawer); return;
}
}
void myPk_IShape::computeHLR(const Handle(Graphic3d_Camera)& theProjector ,
const Handle(TopLoc_Datum3D)& theTrsf ,
const Handle(Prs3d_Presentation)& thePrs)
{
// Hidden line mode calculation algorithm
StdPrs_HLRPolyShape hlr;
hlr.ComputeHLR(thePrs , myShape , myDrawer , theProjector);
}
void myPk_IShape::SetColor(const Quantity_Color& theColor)
{
myDrawer->ShadingAspect()->SetColor(theColor);
}
MAisObject7::MAisObject7()
{
}
void MAisObject7::Compute(const Handle(PrsMgr_PresentationManager)& thePrsMgr ,
const Handle(Prs3d_Presentation)& thePrs ,
const Standard_Integer theMode)
{
if (theMode == MDispMode_WireFrame)
{
Handle(Graphic3d_ArrayOfTriangles) anArray = new Graphic3d_ArrayOfTriangles(4 , 6 , Graphic3d_ArrayFlags_None);
anArray->AddVertex(-1.0 , 0.0 , 0.0); // vertex 1
anArray->AddVertex(1.0 , 0.0 , 0.0); // vertex 2
anArray->AddVertex(0.0 , 1.0 , 0.0); // vertex 3
anArray->AddVertex(0.0 , -1.0 , 0.0); // vertex 4
// add edges to the array
anArray->AddEdges(1 , 2 , 3); // first triangle
anArray->AddEdges(1 , 2 , 4); // second triangle
// add the array to the structure
Handle(Graphic3d_Group) aGroup = thePrs->NewGroup();
aGroup->AddPrimitiveArray(anArray);
aGroup->SetGroupPrimitivesAspect(myDrawer->ShadingAspect()->Aspect());
}
}
void MAisObject7::ComputeSelection(const Handle(SelectMgr_Selection)& theSel , const Standard_Integer theMode)
{
}
void MAisObject8::Compute(const Handle(PrsMgr_PresentationManager)& thePrsMgr ,
const Handle(Prs3d_Presentation)& thePrs , const Standard_Integer theMode)
{
Handle(Graphic3d_Group) aGroup = thePrs->NewGroup();
// change the text aspect
Handle(Graphic3d_AspectText3d) aTextAspect = new Graphic3d_AspectText3d();
aTextAspect->SetTextZoomable(true);
//aTextAspect->SetTextAngle(45.0);
aTextAspect->SetFont("Consolas");
aGroup->SetPrimitivesAspect(aTextAspect);
// add a text primitive to the structure
Handle(Graphic3d_Text) aText = new Graphic3d_Text(16.0f);
aText->SetText("Text你好啊");
aText->SetPosition(gp_Pnt(1 , 1 , 1));
aGroup->AddText(aText);
}
MAisObject9::MAisObject9(TopoDS_Shape& shap) :
myShape(shap)
{
myDrawer->SetFaceBoundaryDraw(true);// 要放开头,其余样式设置位置随便
myDrawer->SetFaceBoundaryAspect(new Prs3d_LineAspect(Quantity_NOC_BLACK , Aspect_TOL_SOLID , 1.0));
}
void MAisObject9::Compute(const Handle(PrsMgr_PresentationManager)& thePrsMgr ,
const Handle(Prs3d_Presentation)& thePrs ,
const Standard_Integer theMode)
{
if (theMode == MDispMode_WireFrame)
{
StdPrs_ShadedShape::Add(thePrs , myShape , myDrawer);
Bnd_Box aBox;
BRepBndLib::Add(myShape , aBox);
Prs3d_BndBox::Add(thePrs , aBox , myDrawer);
}
else if (theMode == MDispMode_Shaded)
{
StdPrs_ShadedShape::Add(thePrs , myShape , myDrawer);
Bnd_OBB aBox;
BRepBndLib::AddOBB(myShape , aBox);
Prs3d_BndBox::Add(thePrs , aBox , myDrawer);
}
}
void MAisObject9::ComputeSelection(const Handle(SelectMgr_Selection)& theSel , const Standard_Integer theMode)
{
Bnd_Box aBox;
BRepBndLib::Add(myShape , aBox);
Handle(SelectMgr_EntityOwner) anOwner = new SelectMgr_EntityOwner(this);
Handle(Select3D_SensitiveBox) aSensBox = new Select3D_SensitiveBox(anOwner , aBox);
theSel->Add(aSensBox);
}
void MAisOwner5::HilightWithColor(const Handle(PrsMgr_PresentationManager)& thePrsMgr ,
const Handle(Prs3d_Drawer)& theStyle ,
const Standard_Integer theMode)
{
if (myPrs.IsNull())
{
myPrs = new Prs3d_Presentation(thePrsMgr->StructureManager());
MAisObject5* anObj = dynamic_cast<MAisObject5*> (mySelectable);
anObj->Compute(thePrsMgr , myPrs , MAisObject5::MyDispMode_Highlight);
}
if (thePrsMgr->IsImmediateModeOn())
{
// 使用此方法获取的aShadow不能高亮显示Box
Handle(Prs3d_PresentationShadow) aShadow =
new Prs3d_PresentationShadow(thePrsMgr->StructureManager() , myPrs);
// 自动设置myPrs的高亮颜色
aShadow->SetZLayer(Graphic3d_ZLayerId_Top);
aShadow->Highlight(theStyle);
thePrsMgr->AddToImmediateList(aShadow);
}
else
{
myPrs->Display();
}
}
void MAisOwner5::Unhilight(const Handle(PrsMgr_PresentationManager)& thePrsMgr , const Standard_Integer theMode)
{
if (!myPrs.IsNull()) {
myPrs->Erase();
}
}
void MAisOwner6::HilightWithColor(const Handle(PrsMgr_PresentationManager)& thePrsMgr ,
const Handle(Prs3d_Drawer)& theStyle ,
const Standard_Integer theMode)
{
MAisObject6* anObj = dynamic_cast<MAisObject6*>(mySelectable);
if (thePrsMgr->IsImmediateModeOn())
{
// 文档有误, 类型为StdSelect_ViewerSelector3d
Handle(StdSelect_ViewerSelector3d) aSelector = anObj->InteractiveContext()->MainSelector();
SelectMgr_SortCriterion aPickPnt;
for (int aPickIter = 1; aPickIter <= aSelector->NbPicked(); ++aPickIter)
{
if (aSelector->Picked(aPickIter) == this)
{
aPickPnt = aSelector->PickedData(aPickIter);
break;
}
}
Handle(Prs3d_Presentation) aPrs = mySelectable->GetHilightPresentation(thePrsMgr);
aPrs->SetZLayer(Graphic3d_ZLayerId_Top);
aPrs->Clear();
// 文档有误变量名为aGroupPnt
Handle(Graphic3d_Group) aGroupPnt = aPrs->NewGroup();
aGroupPnt->SetGroupPrimitivesAspect(theStyle->ArrowAspect()->Aspect());
gp_Trsf aTrsfInv = mySelectable->LocalTransformation().Inverted();
gp_Dir aNorm(aPickPnt.Normal.x() , aPickPnt.Normal.y() , aPickPnt.Normal.z());
Handle(Graphic3d_ArrayOfTriangles) aTris = Prs3d_Arrow::DrawShaded(
gp_Ax1(aPickPnt.Point , aNorm).Transformed(aTrsfInv) ,
1.0 , 15.0 ,
3.0 , 4.0 , 10);
aGroupPnt->AddPrimitiveArray(aTris);
thePrsMgr->AddToImmediateList(aPrs);
}
}
void MAisOwner6::Unhilight(const Handle(PrsMgr_PresentationManager)& thePrsMgr , const Standard_Integer theMode)
{
if (!myPrs.IsNull()) {
myPrs->Erase();
}
}

677
src/MAISObj.h Normal file
View File

@ -0,0 +1,677 @@
#pragma once
#include "MShape.h"
#include "AIS_InteractiveObject.hxx"
#include "AIS_InteractiveContext.hxx"
#include "AIS_Point.hxx"
#include "AIS_Axis.hxx"
#include "AIS_Line.hxx"
#include "AIS_Circle.hxx"
#include "AIS_Plane.hxx"
#include "AIS_PlaneTrihedron.hxx"
#include "AIS_PointCloud.hxx"
#include "PrsDim_ParallelRelation.hxx"
#include "PrsDim_PerpendicularRelation.hxx"
#include "PrsDim_LengthDimension.hxx"
#include "StdPrs_ShadedShape.hxx"
#include "StdPrs_WFShape.hxx"
#include "StdPrs_ToolTriangulatedShape.hxx"
#include "StdPrs_HLRPolyShape.hxx"
#include "Prs3d_ShadingAspect.hxx"
#include "Prs3d_ArrowAspect.hxx"
#include "Prs3d_Arrow.hxx"
#include "Prs3d_BndBox.hxx"
#include "Prs3d_ToolCylinder.hxx"
#include "Prs3d_ToolDisk.hxx"
#include "Prs3d_PresentationShadow.hxx"
#include "Graphic3d_ArrayOfPoints.hxx"
#include "Graphic3d_Text.hxx"
#include "SelectMgr_EntityOwner.hxx"
#include "Select3D_SensitivePrimitiveArray.hxx"
#include "Select3D_SensitivePoint.hxx"
#include "Select3D_SensitiveSegment.hxx"
#include "Select3D_SensitiveFace.hxx"
#include "Select3D_SensitiveBox.hxx"
#include "StdSelect_FaceFilter.hxx"
#include "StdSelect_ViewerSelector3d.hxx"
#include "StdSelect_BRepSelectionTool.hxx"
#include "Image_AlienPixMap.hxx"
// 添加边界线条
class MAisDemo : public AIS_InteractiveObject
{
DEFINE_STANDARD_RTTI_INLINE(MAisDemo , AIS_InteractiveObject)
public:
enum MDispMode {
MDispMode_WireFrame ,
MDispMode_Shaded
};
MAisDemo(const TopoDS_Shape& shap, bool indexVisible = false);
virtual void Compute(const Handle(PrsMgr_PresentationManager)& thePrsMgr ,
const Handle(Prs3d_Presentation)& thePrs ,
const Standard_Integer theMode) override;
virtual void ComputeSelection(const Handle(SelectMgr_Selection)& theSel ,
const Standard_Integer theMode) override;
virtual bool AcceptDisplayMode(const Standard_Integer theMode) const override
{
return theMode == MDispMode_WireFrame || theMode == MDispMode_Shaded;
}
virtual void SetColor(const Quantity_Color& theColor) override;
TopoDS_Shape Shape() const
{
return myShape;
}
void setShape(TopoDS_Shape& theShape)
{
myShape = theShape;
}
void setFaceIndex(const Handle(Prs3d_Presentation)& thePrs);
static TopAbs_ShapeEnum SelectionType(const Standard_Integer theSelMode)
{
switch (theSelMode)
{
case 1:
return TopAbs_VERTEX;
case 2:
return TopAbs_EDGE;
case 3:
return TopAbs_WIRE;
case 4:
return TopAbs_FACE;
case 5:
return TopAbs_SHELL;
case 6:
return TopAbs_SOLID;
case 7:
return TopAbs_COMPSOLID;
case 8:
return TopAbs_COMPOUND;
case 0:
return TopAbs_SHAPE;
}
return TopAbs_SHAPE;
}
static Standard_Integer SelectionMode(const TopAbs_ShapeEnum theShapeType)
{
switch (theShapeType)
{
case TopAbs_VERTEX:
return 1;
case TopAbs_EDGE:
return 2;
case TopAbs_WIRE:
return 3;
case TopAbs_FACE:
return 4;
case TopAbs_SHELL:
return 5;
case TopAbs_SOLID:
return 6;
case TopAbs_COMPSOLID:
return 7;
case TopAbs_COMPOUND:
return 8;
case TopAbs_SHAPE:
return 0;
}
return 0;
}
private:
TopoDS_Shape myShape;
bool faceIndexIsVisible;
};
// None
class MAisObject : public AIS_InteractiveObject
{
DEFINE_STANDARD_RTTI_INLINE(MAisObject , AIS_InteractiveObject)
public:
enum MDispMode {
MDispMode_WireFrame ,
MDispMode_Shaded ,
MDispMode_Shaded_HighLight ,
MDispMode_Shaded_HighLightDynamic ,
MDispMode_WireFrame_HighLight
};
MAisObject(std::shared_ptr< MSLinearRect> shap);
virtual void Compute(const Handle(PrsMgr_PresentationManager)& thePrsMgr ,
const Handle(Prs3d_Presentation)& thePrs ,
const Standard_Integer theMode) override;
virtual void ComputeSelection(const Handle(SelectMgr_Selection)& theSel ,
const Standard_Integer theMode) override;
virtual bool AcceptDisplayMode(const Standard_Integer theMode) const override
{
return theMode == MDispMode_WireFrame || theMode == MDispMode_Shaded;
}
virtual void SetColor(const Quantity_Color& theColor) override;
std::shared_ptr< MSLinearRect> Shape() const {
return myShape;
}
void setShape(std::shared_ptr< MSLinearRect> theShape)
{
myShape = theShape;
}
private:
std::shared_ptr< MSLinearRect> myShape;
Handle(Prs3d_Drawer) myShadeStyle;
Handle(Prs3d_Drawer) myShadeStyleHighLight;
};
class MAisOwner : public SelectMgr_EntityOwner
{
DEFINE_STANDARD_RTTI_INLINE(MAisOwner , SelectMgr_EntityOwner)
public:
MAisOwner(const Handle(AIS_InteractiveObject)& theObj , int thePriority = 0)
: SelectMgr_EntityOwner(theObj , thePriority) {
}
virtual void HilightWithColor(const Handle(PrsMgr_PresentationManager)& thePrsMgr ,
const Handle(Prs3d_Drawer)& theStyle ,
const Standard_Integer theMode) override;
// 选择高亮对应的erase
virtual void Unhilight(const Handle(PrsMgr_PresentationManager)& thePrsMgr ,
const Standard_Integer theMode) override;
protected:
Handle(Prs3d_Presentation) myPrsWire;
Handle(Prs3d_Presentation) myPrs;
};
class MCaptureOwnerEndPonit : public SelectMgr_EntityOwner
{
DEFINE_STANDARD_RTTI_INLINE(MCaptureOwnerEndPonit , SelectMgr_EntityOwner)
public:
MCaptureOwnerEndPonit(gp_Pnt& pnt , const Handle(AIS_InteractiveObject)& theObj , int thePriority = 0);
virtual void HilightWithColor(const Handle(PrsMgr_PresentationManager)& thePrsMgr ,
const Handle(Prs3d_Drawer)& theStyle ,
const Standard_Integer theMode) override;
virtual void Unhilight(const Handle(PrsMgr_PresentationManager)& thePrsMgr ,
const Standard_Integer theMode) override;
gp_Pnt getPonit() const { return myPoint; }
protected:
Handle(Prs3d_Presentation) myPrs;
Handle(Prs3d_Presentation) myPrsDynamic;
Handle(Prs3d_Drawer) myStyle;
gp_Pnt myPoint;
};
class MCaptureOwnerMidPoint : public SelectMgr_EntityOwner
{
DEFINE_STANDARD_RTTI_INLINE(MCaptureOwnerMidPoint , SelectMgr_EntityOwner)
public:
MCaptureOwnerMidPoint(gp_Pnt& pnt , const Handle(AIS_InteractiveObject)& theObj , int thePriority = 0);
virtual void HilightWithColor(const Handle(PrsMgr_PresentationManager)& thePrsMgr ,
const Handle(Prs3d_Drawer)& theStyle ,
const Standard_Integer theMode) override;
virtual void Unhilight(const Handle(PrsMgr_PresentationManager)& thePrsMgr ,
const Standard_Integer theMode) override;
gp_Pnt getPonit() const { return myPoint; }
protected:
Handle(Prs3d_Presentation) myPrs;
Handle(Prs3d_Presentation) myPrsDynamic;
Handle(Graphic3d_MarkerImage) img;
Handle(Prs3d_Drawer) myStyle;
gp_Pnt myPoint;
};
class MCaptureOwnerEdge : public SelectMgr_EntityOwner
{
DEFINE_STANDARD_RTTI_INLINE(MCaptureOwnerEdge , SelectMgr_EntityOwner)
public:
MCaptureOwnerEdge(TopoDS_Wire& edge , const Handle(AIS_InteractiveObject)& theObj , int thePriority = 0);
virtual void HilightWithColor(const Handle(PrsMgr_PresentationManager)& thePrsMgr ,
const Handle(Prs3d_Drawer)& theStyle ,
const Standard_Integer theMode) override;
virtual void Unhilight(const Handle(PrsMgr_PresentationManager)& thePrsMgr ,
const Standard_Integer theMode) override;
protected:
Handle(Prs3d_Presentation) myPrs;
Handle(Prs3d_Drawer) myStyle;
TopoDS_Wire myEdge;
};
// Presentation builders
class MAisObject0 : public AIS_InteractiveObject
{
DEFINE_STANDARD_RTTI_INLINE(MAisObject0 , AIS_InteractiveObject)
public:
enum MyDispMode {
MyDispMode_Main = 0 , MyDispMode_Highlight = 1
};
MAisObject0(const TopoDS_Shape& shap);
virtual void Compute(const Handle(PrsMgr_PresentationManager)& thePrsMgr ,
const Handle(Prs3d_Presentation)& thePrs ,
const Standard_Integer theMode) override;
virtual void ComputeSelection(const Handle(SelectMgr_Selection)& theSel ,
const Standard_Integer theMode) override {
}
virtual bool AcceptDisplayMode(const Standard_Integer theMode) const override
{
return theMode == 0 || theMode == 1;
}
const TopoDS_Shape& Shape() const {
return aShape;
}
void SetShape(const TopoDS_Shape& theShape)
{
aShape = theShape;
}
private:
TopoDS_Shape aShape;
};
// Primitive arrays
class MAisObject1 : public AIS_InteractiveObject
{
DEFINE_STANDARD_RTTI_INLINE(MAisObject1 , AIS_InteractiveObject)
public:
enum MyDispMode {
MyDispMode_Main = 0 , MyDispMode_Highlight = 1
};
MAisObject1(const TopoDS_Shape& shap);
virtual void Compute(const Handle(PrsMgr_PresentationManager)& thePrsMgr ,
const Handle(Prs3d_Presentation)& thePrs ,
const Standard_Integer theMode) override;
virtual void ComputeSelection(const Handle(SelectMgr_Selection)& theSel ,
const Standard_Integer theMode) override {
}
virtual bool AcceptDisplayMode(const Standard_Integer theMode) const override
{
return theMode == 0 || theMode == 1;
}
const TopoDS_Shape& Shape() const {
return aShape;
}
void SetShape(const TopoDS_Shape& theShape)
{
aShape = theShape;
}
private:
TopoDS_Shape aShape;
};
// Primitive aspects
class MAisObject2 : public AIS_InteractiveObject
{
DEFINE_STANDARD_RTTI_INLINE(MAisObject2 , AIS_InteractiveObject)
public:
enum MyDispMode {
MyDispMode_Main = 0 , MyDispMode_Highlight = 1
};
MAisObject2(const TopoDS_Shape& shap);
virtual void Compute(const Handle(PrsMgr_PresentationManager)& thePrsMgr ,
const Handle(Prs3d_Presentation)& thePrs ,
const Standard_Integer theMode) override;
virtual void ComputeSelection(const Handle(SelectMgr_Selection)& theSel ,
const Standard_Integer theMode) override {
}
virtual bool AcceptDisplayMode(const Standard_Integer theMode) const override
{
return theMode == 0 || theMode == 1;
}
const TopoDS_Shape& Shape() const {
return aShape;
}
void SetShape(const TopoDS_Shape& theShape)
{
aShape = theShape;
}
private:
TopoDS_Shape aShape;
};
//Quadric builders
class MAisObject3 : public AIS_InteractiveObject
{
DEFINE_STANDARD_RTTI_INLINE(MAisObject3 , AIS_InteractiveObject)
public:
enum MyDispMode {
MyDispMode_Main = 0 , MyDispMode_Highlight = 1
};
MAisObject3(const TopoDS_Shape& shap);
virtual void Compute(const Handle(PrsMgr_PresentationManager)& thePrsMgr ,
const Handle(Prs3d_Presentation)& thePrs ,
const Standard_Integer theMode) override;
virtual void ComputeSelection(const Handle(SelectMgr_Selection)& theSel ,
const Standard_Integer theMode) override {
}
virtual bool AcceptDisplayMode(const Standard_Integer theMode) const override
{
return theMode == 0 || theMode == 1;
}
const TopoDS_Shape& Shape() const {
return aShape;
}
void SetShape(const TopoDS_Shape& theShape)
{
aShape = theShape;
}
private:
TopoDS_Shape aShape;
};
// Computing selection
class MAisObject4 : public AIS_InteractiveObject
{
DEFINE_STANDARD_RTTI_INLINE(MAisObject4 , AIS_InteractiveObject)
public:
enum MyDispMode {
MyDispMode_Main = 0 , MyDispMode_Highlight = 1
};
MAisObject4(const TopoDS_Shape& shap);
virtual void Compute(const Handle(PrsMgr_PresentationManager)& thePrsMgr ,
const Handle(Prs3d_Presentation)& thePrs ,
const Standard_Integer theMode) override;
virtual void ComputeSelection(const Handle(SelectMgr_Selection)& theSel ,
const Standard_Integer theMode) override;
virtual bool AcceptDisplayMode(const Standard_Integer theMode) const override
{
return theMode == 0 || theMode == 1;
}
const TopoDS_Shape& Shape() const {
return aShape;
}
void SetShape(const TopoDS_Shape& theShape)
{
aShape = theShape;
}
private:
TopoDS_Shape aShape;
};
// HighlightingSelectionOwner
class MAisObject5 : public AIS_InteractiveObject
{
DEFINE_STANDARD_RTTI_INLINE(MAisObject5 , AIS_InteractiveObject)
public:
enum MyDispMode {
MyDispMode_Main = 0 , MyDispMode_Highlight = 1
};
MAisObject5(const TopoDS_Shape& shap);
virtual void Compute(const Handle(PrsMgr_PresentationManager)& thePrsMgr ,
const Handle(Prs3d_Presentation)& thePrs ,
const Standard_Integer theMode) override;
virtual void ComputeSelection(const Handle(SelectMgr_Selection)& theSel ,
const Standard_Integer theMode) override;
virtual bool AcceptDisplayMode(const Standard_Integer theMode) const override
{
return theMode == 0 || theMode == 1;
}
const TopoDS_Shape& Shape() const {
return aShape;
}
void SetShape(const TopoDS_Shape& theShape)
{
aShape = theShape;
}
private:
TopoDS_Shape aShape;
};
// add arrow
class MAisObject6 : public AIS_InteractiveObject
{
DEFINE_STANDARD_RTTI_INLINE(MAisObject6 , AIS_InteractiveObject)
public:
enum MyDispMode {
MyDispMode_Main = 0 , MyDispMode_Highlight = 1
};
MAisObject6(const TopoDS_Shape& shap);
virtual void Compute(const Handle(PrsMgr_PresentationManager)& thePrsMgr ,
const Handle(Prs3d_Presentation)& thePrs ,
const Standard_Integer theMode) override;
virtual void ComputeSelection(const Handle(SelectMgr_Selection)& theSel ,
const Standard_Integer theMode) override;
virtual bool AcceptDisplayMode(const Standard_Integer theMode) const override
{
return theMode == 0 || theMode == 1;
}
const TopoDS_Shape& Shape() const {
return aShape;
}
void SetShape(const TopoDS_Shape& theShape)
{
aShape = theShape;
}
private:
TopoDS_Shape aShape;
};
// HLR
class myPk_IShape : public AIS_InteractiveObject
{
DEFINE_STANDARD_RTTI_INLINE(myPk_IShape , AIS_InteractiveObject)
public:
myPk_IShape(const TopoDS_Shape& theShape , PrsMgr_TypeOfPresentation3d theType);
virtual void Compute(const Handle(PrsMgr_PresentationManager)& thePrsMgr ,
const Handle(Prs3d_Presentation)& thePrs ,
const Standard_Integer theMode) override;
virtual void computeHLR(const Handle(Graphic3d_Camera)& theProjector ,
const Handle(TopLoc_Datum3D)& theTrsf ,
const Handle(Prs3d_Presentation)& thePrs) override;
virtual void ComputeSelection(const Handle(SelectMgr_Selection)& theSel ,
const Standard_Integer theMode) override {
}
virtual bool AcceptDisplayMode(const Standard_Integer theMode) const override
{
return theMode == 0 || theMode == 1;
}
virtual void SetColor(const Quantity_Color& theColor) override;
private:
TopoDS_Shape myShape;
};
// Primitive arrays
class MAisObject7 : public AIS_InteractiveObject
{
DEFINE_STANDARD_RTTI_INLINE(MAisObject7 , AIS_InteractiveObject)
public:
enum MDispMode {
MDispMode_WireFrame ,
MDispMode_Shaded
};
MAisObject7();
virtual void Compute(const Handle(PrsMgr_PresentationManager)& thePrsMgr ,
const Handle(Prs3d_Presentation)& thePrs ,
const Standard_Integer theMode) override;
virtual void ComputeSelection(const Handle(SelectMgr_Selection)& theSel ,
const Standard_Integer theMode) override;
virtual bool AcceptDisplayMode(const Standard_Integer theMode) const override
{
return theMode == MDispMode_WireFrame || theMode == MDispMode_Shaded;
}
private:
};
// Text primitive
class MAisObject8 : public AIS_InteractiveObject
{
DEFINE_STANDARD_RTTI_INLINE(MAisObject8 , AIS_InteractiveObject)
public:
enum MDispMode {
MDispMode_WireFrame ,
MDispMode_Shaded
};
MAisObject8() {};
virtual void Compute(const Handle(PrsMgr_PresentationManager)& thePrsMgr ,
const Handle(Prs3d_Presentation)& thePrs ,
const Standard_Integer theMode) override;
virtual void ComputeSelection(const Handle(SelectMgr_Selection)& theSel ,
const Standard_Integer theMode) override {
};
virtual bool AcceptDisplayMode(const Standard_Integer theMode) const override
{
return theMode == MDispMode_WireFrame || theMode == MDispMode_Shaded;
}
private:
};
// Bounding boxes
class MAisObject9 : public AIS_InteractiveObject
{
DEFINE_STANDARD_RTTI_INLINE(MAisObject9 , AIS_InteractiveObject)
public:
enum MDispMode {
MDispMode_WireFrame ,
MDispMode_Shaded
};
MAisObject9(TopoDS_Shape& shap);
virtual void Compute(const Handle(PrsMgr_PresentationManager)& thePrsMgr ,
const Handle(Prs3d_Presentation)& thePrs ,
const Standard_Integer theMode) override;
virtual void ComputeSelection(const Handle(SelectMgr_Selection)& theSel ,
const Standard_Integer theMode) override;
virtual bool AcceptDisplayMode(const Standard_Integer theMode) const override
{
return theMode == MDispMode_WireFrame || theMode == MDispMode_Shaded;
}
private:
TopoDS_Shape myShape;
};
// HighlightingSelectionOwner
class MAisOwner5 : public SelectMgr_EntityOwner
{
DEFINE_STANDARD_RTTI_INLINE(MAisOwner5 , SelectMgr_EntityOwner)
public:
MAisOwner5(const Handle(MAisObject5)& theObj , int thePriority = 0)
: SelectMgr_EntityOwner(theObj , thePriority) {
}
virtual void HilightWithColor(const Handle(PrsMgr_PresentationManager)& thePrsMgr ,
const Handle(Prs3d_Drawer)& theStyle ,
const Standard_Integer theMode) override;
virtual void Unhilight(const Handle(PrsMgr_PresentationManager)& thePrsMgr ,
const Standard_Integer theMode) override;
protected:
Handle(Prs3d_Presentation) myPrs;
};
// add arrow
class MAisOwner6 : public SelectMgr_EntityOwner
{
DEFINE_STANDARD_RTTI_INLINE(MAisOwner6 , SelectMgr_EntityOwner)
public:
MAisOwner6(const Handle(MAisObject6)& theObj , int thePriority = 0)
: SelectMgr_EntityOwner(theObj , thePriority) {
}
virtual void HilightWithColor(const Handle(PrsMgr_PresentationManager)& thePrsMgr ,
const Handle(Prs3d_Drawer)& theStyle ,
const Standard_Integer theMode) override;
virtual void Unhilight(const Handle(PrsMgr_PresentationManager)& thePrsMgr ,
const Standard_Integer theMode) override;
virtual bool IsForcedHilight() const override {
return true;
}
protected:
Handle(Prs3d_Presentation) myPrs;
};

236
src/MShape.cpp Normal file
View File

@ -0,0 +1,236 @@
#include "MShape.h"
std::ostream& operator<<(std::ostream& os , const gp_Pnt& pnt)
{
os << pnt.X() << ", " << pnt.Y() << ", " << pnt.Z();
return os;
}
Handle(Geom_BSplineCurve) createBSplineCurve(std::vector<gp_Pnt>& pnts, int mode)
{
int pntSize = pnts.size();
Handle(TColgp_HArray1OfPnt) pntsArr = new TColgp_HArray1OfPnt(1 , pntSize);
for (int i = 0; i < pntSize; ++i)
{
TopoDS_Vertex aVertex = BRepBuilderAPI_MakeVertex(pnts[i]);
pntsArr->SetValue(i + 1 , pnts[i]);
}
Handle(Geom_BSplineCurve) curve;
if (mode == 0)
{
GeomAPI_Interpolate Interp(pntsArr , false , Precision::Confusion());
Interp.Perform();
curve = Interp.Curve();
}
else if (mode == 1)
{
GeomAPI_PointsToBSpline Approx(pntsArr->Array1());
curve = Approx.Curve();
}
return curve;
}
TopoDS_Shape correctionProfile(TopoDS_Shape& aProfile , gp_Pnt fromPnt , Handle(Geom_Curve) CPath , double toParam)
{
TopoDS_Face aFace;
if (aProfile.ShapeType() == TopAbs_FACE)
{
aFace = TopoDS::Face(aProfile);
}
else if (aProfile.ShapeType() == TopAbs_WIRE)
{
aFace = BRepBuilderAPI_MakeFace(TopoDS::Wire(aProfile));
}
gp_Pnt toPoint;
gp_Vec derivative;
CPath->D1(toParam , toPoint , derivative);
//Handle(Geom_Surface) surface = BRep_Tool::Surface(aFace);
BRepAdaptor_Surface surface(aFace);
gp_Vec direc = surface.Plane().Axis().Direction();
gp_Trsf T;
T.SetTranslation(gp_Vec(fromPnt , gp_Pnt(0 , 0 , 0)));
BRepBuilderAPI_Transform theTrsf(aProfile , T);
gp_Quaternion quater(direc , derivative);
gp_Vec vecTranslate = gp_Vec(gp_Pnt(0 , 0 , 0) , toPoint);
gp_Trsf TRet;
TRet.SetTransformation(quater , vecTranslate);
BRepBuilderAPI_Transform theTrsfRet(theTrsf.Shape() , TRet);
return theTrsfRet.Shape();
}
TopoDS_Wire convertFaceToWire(const TopoDS_Shape& aShape)
{
BRepBuilderAPI_MakeWire wireBuilder;
for (TopExp_Explorer anEdgeExp(aShape , TopAbs_EDGE); anEdgeExp.More(); anEdgeExp.Next())
{
const TopoDS_Edge& anEdge = TopoDS::Edge(anEdgeExp.Current());
wireBuilder.Add(anEdge);
}
return wireBuilder.Wire();
}
MSAbstract::MSAbstract(const QString& n) :
myName(n)
{
myType = MSType::MSType_NONE;
}
gp_Pnt MSAbstract::transformPoint(gp_Pnt& p , gp_Vec vecTranslate)
{
gp_Pnt ret;
gp_Trsf T;
T.SetTranslation(vecTranslate);
ret = p.Transformed(T);
return ret;
}
TopoDS_Shape MSAbstract::transformShape(TopoDS_Shape& aShape , gp_Quaternion quater , gp_Vec vecTranslate)
{
gp_Trsf T;
T.SetTransformation(quater , vecTranslate);
BRepBuilderAPI_Transform theTrsf(T);
theTrsf.Perform(aShape);
return theTrsf.Shape();
}
MSLinearRect::MSLinearRect(const std::vector<gp_Pnt>& points , double width , double height , const QString& n) :
MSAbstract(n) ,
myPoints(points) ,
myWidth(width) ,
myHeight(height)
{
setType(MSType::MSType_LINEAR_RECT);
compute();
}
TopoDS_Shape MSLinearRect::createProfile()
{
gp_Pnt aStart = myPoints[0];
gp_Pnt aEnd = myPoints[1];
gp_Vec vec = gp_Vec(aStart , aEnd);
gp_Vec vecX = vec.Crossed(gp_Vec(0 , 0 , 1));
gp_Ax3 ax3 = gp_Ax3(aStart , vec , vecX);
Handle(Geom_Surface) surf = new Geom_Plane(ax3);
gp_Pnt2d pnt2d1 = gp_Pnt2d(-myWidth / 2 , myHeight / 2);
gp_Pnt2d pnt2d2 = gp_Pnt2d(myWidth / 2 , myHeight / 2);
gp_Pnt2d pnt2d3 = gp_Pnt2d(myWidth / 2 , -myHeight / 2);
gp_Pnt2d pnt2d4 = gp_Pnt2d(-myWidth / 2 , -myHeight / 2);
Handle(Geom2d_Line) geom2dLin1 = GCE2d_MakeLine(pnt2d1 , pnt2d2).Value();
Handle(Geom2d_Line) geom2dLin2 = GCE2d_MakeLine(pnt2d2 , pnt2d3).Value();
Handle(Geom2d_Line) geom2dLin3 = GCE2d_MakeLine(pnt2d3 , pnt2d4).Value();
Handle(Geom2d_Line) geom2dLin4 = GCE2d_MakeLine(pnt2d4 , pnt2d1).Value();
BRepBuilderAPI_MakeWire MW;
MW.Add(BRepBuilderAPI_MakeEdge(geom2dLin1 , surf , 0 , myWidth));
MW.Add(BRepBuilderAPI_MakeEdge(geom2dLin2 , surf , 0 , myHeight));
MW.Add(BRepBuilderAPI_MakeEdge(geom2dLin3 , surf , 0 , myWidth));
MW.Add(BRepBuilderAPI_MakeEdge(geom2dLin4 , surf , 0 , myHeight));
TopoDS_Shape aProfile = MW;
BRepLib::BuildCurves3d(aProfile);
return aProfile;
}
void MSLinearRect::updateCompute(const std::vector<gp_Pnt>& pointsNew)
{
myPoints = pointsNew;
compute();
}
void MSLinearRect::compute()
{
gp_Pnt aStart = myPoints[0];
gp_Pnt aEnd = myPoints[1];
TopoDS_Edge aEdgePath = BRepBuilderAPI_MakeEdge(aStart , aEnd);
myPath = BRepBuilderAPI_MakeWire(aEdgePath);
myProfile = createProfile();
myShape = BRepOffsetAPI_MakePipe(myPath , myProfile);
}
MSPipeFitting::MSPipeFitting(std::shared_ptr< MSLinearRect> l , std::shared_ptr< MSLinearRect> r , const QString& n) :
MSAbstract(n) ,
lhs(l) ,
rhs(r)
{
std::vector<gp_Pnt> pntsLhs = l->getPoints();
std::vector<gp_Pnt> pntsRhs = r->getPoints();
myPoints = { pntsLhs[0] ,pntsLhs[1] ,pntsRhs[0], pntsRhs[1] };
setType(MSType::MSType_PIPEFITING);
compute();
}
TopoDS_Shape MSPipeFitting::createProfile()
{
return TopoDS_Shape();
}
void MSPipeFitting::setAdjacent(const std::vector<gp_Pnt>& pointsLhs , const std::vector<gp_Pnt>& pointsRhs)
{
lhs->updateCompute(pointsLhs);
rhs->updateCompute(pointsRhs);
}
void MSPipeFitting::restoreAdjacent()
{
std::vector<gp_Pnt> pntsLhs = {myPoints[0],myPoints[1] };
std::vector<gp_Pnt> pntsRhs = { myPoints[2],myPoints[3] };
lhs->updateCompute(pntsLhs);
rhs->updateCompute(pntsRhs);
}
void MSPipeFitting::compute()
{
gp_Pnt aFirst = myPoints[0];
gp_Pnt aSecond = myPoints[1];
gp_Pnt aThird = myPoints[2];
gp_Pnt aFourth = myPoints[3];
gp_Vec vecFirst = gp_Vec(aFirst , aSecond);
gp_Vec vecSecond = gp_Vec(aThird , aFourth);
double lhsWidth = lhs->getWidth();
double rhsWidth = rhs->getWidth();
double maxWidth = lhsWidth > rhsWidth ? lhsWidth : rhsWidth;
double length = maxWidth / 2;
double scalar = length / vecFirst.Magnitude();
gp_Vec tanslate = vecFirst * scalar;
gp_Pnt aSecondNew = transformPoint(aSecond , tanslate.Reversed());
double scalar1 = length / vecSecond.Magnitude();
gp_Vec tanslate1 = vecSecond * scalar1;
gp_Pnt aThirdNew = transformPoint(aThird , tanslate1);
setAdjacent({ aFirst ,aSecondNew } , { aThirdNew, aFourth });
Handle(TColgp_HArray1OfPnt) points = new TColgp_HArray1OfPnt(1 , 2);
points->SetValue(1 , aSecondNew);
points->SetValue(2 , aThirdNew);
GeomAPI_Interpolate interpolator(points , false , Precision::Confusion());
interpolator.Load(vecFirst , vecSecond);
interpolator.Perform();
Handle(Geom_BSplineCurve) geomPath = interpolator.Curve();
TopoDS_Edge aEdgePath = BRepBuilderAPI_MakeEdge(geomPath , geomPath->FirstParameter() , geomPath->LastParameter());
myPath = BRepBuilderAPI_MakeWire(aEdgePath);
TopoDS_Shape aProfile = lhs->createProfile();
TopoDS_Shape aCorrection = correctionProfile(aProfile , aFirst , geomPath , geomPath->FirstParameter());
TopoDS_Shape aProfile1 = rhs->createProfile();
BRepOffsetAPI_MakePipeShell PipeShell(myPath);
PipeShell.Add(aCorrection , false , false);
PipeShell.Add(aProfile1 , false , false);
myShape = PipeShell.Shape();
}

228
src/MShape.h Normal file
View File

@ -0,0 +1,228 @@
#pragma once
#include <cmath>
#include <memory>
#include <QString>
#include "gp_Ax2.hxx"
#include "gp_Ax3.hxx"
#include "gp_Quaternion.hxx"
#include "gp_Pnt.hxx"
#include "gp_Circ.hxx"
#include "gp_Pln.hxx"
#include "ProjLib.hxx"
#include "ElSLib.hxx"
#include "GCE2d_MakeLine.hxx"
#include "GccAna_Circ2d2TanRad.hxx"
#include "GccEnt.hxx"
#include "GccEnt_QualifiedLin.hxx"
#include "gce_MakeCirc.hxx"
#include "GCPnts_AbscissaPoint.hxx"
#include "GC_MakeSegment.hxx"
#include "Geom2d_Line.hxx"
#include "Geom2d_Circle.hxx"
#include "Geom2d_TrimmedCurve.hxx"
#include "Geom_CartesianPoint.hxx"
#include "Geom_Line.hxx"
#include "Geom_Curve.hxx"
#include "Geom_Circle.hxx"
#include "Geom_Plane.hxx"
#include "Geom_Surface.hxx"
#include "Geom_BezierCurve.hxx"
#include "Geom_BSplineSurface.hxx"
#include "Geom_Axis2Placement.hxx"
#include "GeomAPI_Interpolate.hxx"
#include "GeomAPI_PointsToBSpline.hxx"
#include "GeomAPI_IntCS.hxx"
#include "GeomAPI_ProjectPointOnCurve.hxx"
#include "GeomAPI_ProjectPointOnSurf.hxx"
#include "GeomFill_BSplineCurves.hxx"
#include "GeomAdaptor_Curve.hxx"
#include "TopoDS.hxx"
#include "TopoDS_Edge.hxx"
#include "TopoDS_Shape.hxx"
#include "TopoDS_Face.hxx"
#include "TopExp_Explorer.hxx"
#include "TopAbs.hxx"
#include "TopAbs_ShapeEnum.hxx"
#include "BRep_Tool.hxx"
#include "BRepTools.hxx"
#include "BRepLib.hxx"
#include "BRepBndLib.hxx"
#include "BRepBuilderAPI_MakeVertex.hxx"
#include "BRepBuilderAPI_MakeEdge.hxx"
#include "BRepBuilderAPI_MakePolygon.hxx"
#include "BRepBuilderAPI_MakeWire.hxx"
#include "BRepBuilderAPI_MakeFace.hxx"
#include "BRepBuilderAPI_MakeShell.hxx"
#include "BRepBuilderAPI_MakeSolid.hxx"
#include "BRepBuilderAPI_Transform.hxx"
#include "BRepBuilderAPI_Copy.hxx"
#include "BRepBuilderAPI_Sewing.hxx"
#include "BRepPrimAPI_MakeBox.hxx"
#include "BRepPrimAPI_MakeCone.hxx"
#include "BRepPrimAPI_MakeSphere.hxx"
#include "BRepPrimAPI_MakeCylinder.hxx"
#include "BRepPrimAPI_MakeRevolution.hxx"
#include "BRepPrimAPI_MakeRevol.hxx"
#include "BRepPrimAPI_MakePrism.hxx"
#include "BRepAlgoAPI_Fuse.hxx"
#include "BRepAlgoAPI_Cut.hxx"
#include "BRepAlgoAPI_Common.hxx"
#include "BRepAlgoAPI_Section.hxx"
#include "BRepAlgoAPI_Splitter.hxx"
#include "BRepOffsetAPI_MakeOffsetShape.hxx"
#include "BRepOffsetAPI_MakeThickSolid.hxx"
#include "BRepOffsetAPI_MakePipe.hxx"
#include "BRepOffsetAPI_MakePipeShell.hxx"
#include "BRepOffsetAPI_ThruSections.hxx"
#include "BRepFilletAPI_MakeFillet.hxx"
#include "BRepFilletAPI_MakeChamfer.hxx"
#include "BRepFilletAPI_MakeFillet2d.hxx"
#include "BRepFeat_MakePrism.hxx"
#include "BRepFeat_MakePipe.hxx"
#include "BRepAlgoAPI_Defeaturing.hxx"
#include "BRepAdaptor_Surface.hxx"
#include "BRepGProp.hxx"
#include "GProp_GProps.hxx"
#include "BOPTools_AlgoTools3D.hxx"
#include "BOPAlgo_MakePeriodic.hxx"
#include "BOPAlgo_Builder.hxx"
#include "BOPAlgo_Splitter.hxx"
#include "BOPAlgo_BOP.hxx"
#include "HLRBRep_Algo.hxx"
#include "HLRBRep_HLRToShape.hxx"
#include "AIS_TextLabel.hxx"
// OCCT自带dump函数可打印信息
std::ostream& operator<<(std::ostream& os , const gp_Pnt& pnt);
Handle(Geom_BSplineCurve) createBSplineCurve(std::vector<gp_Pnt>& pnts, int mode = 0);
TopoDS_Shape correctionProfile(TopoDS_Shape& aProfile , gp_Pnt fromPnt , Handle(Geom_Curve) CPath , double toParam);
TopoDS_Wire convertFaceToWire(const TopoDS_Shape& aShape);
enum MSType
{
MSType_NONE ,
MSType_POINT ,
MSType_LINEAR_RECT ,
MSType_LINEAR_CIRCLE,
MSType_PIPEFITING
};
class MSAbstract
{
public:
MSAbstract(const QString& n);
virtual ~MSAbstract() = default;
virtual TopoDS_Shape createProfile() = 0;
QString getName() const {
return myName;
}
MSType getType() const {
return myType;
}
TopoDS_Wire getPath() const {
return myPath;
}
TopoDS_Shape getProfile() const {
return myProfile;
}
TopoDS_Shape getShape() const {
return myShape;
}
protected:
virtual void compute() = 0;
void setType(MSType t) {
myType = t;
}
gp_Pnt transformPoint(gp_Pnt& p , gp_Vec vecTranslate);
TopoDS_Shape transformShape(TopoDS_Shape& aShape , gp_Quaternion quater , gp_Vec vecTranslate);
TopoDS_Wire myPath;
TopoDS_Shape myProfile;
TopoDS_Shape myShape;
private:
QString myName;
MSType myType;
};
class MSLinearRect :public MSAbstract
{
public:
MSLinearRect(const std::vector<gp_Pnt>& points , double width = 20.0 , double height = 10.0 , const QString& n = "");
virtual TopoDS_Shape createProfile() override;
void updateCompute(const std::vector<gp_Pnt>& pointsNew = {});
std::vector<gp_Pnt> getPoints() const
{
return myPoints;
}
double getWidth() const { return myWidth; }
double getHeight() const { return myHeight; }
protected:
virtual void compute() override;
private:
std::vector<gp_Pnt> myPoints;
double myWidth;
double myHeight;
};
class MSPipeFitting :public MSAbstract
{
public:
MSPipeFitting() = default;
MSPipeFitting(std::shared_ptr< MSLinearRect> l , std::shared_ptr< MSLinearRect> r , const QString& n = "");
virtual TopoDS_Shape createProfile() override;
void setAdjacent(const std::vector<gp_Pnt>& pointsLhs , const std::vector<gp_Pnt>& pointsRhs);
void restoreAdjacent();
std::vector<gp_Pnt> getPoints() const
{
return myPoints;
}
protected:
virtual void compute() override;
private:
std::vector<gp_Pnt> myPoints;
std::shared_ptr< MSLinearRect> lhs;
std::shared_ptr< MSLinearRect> rhs;
};
class MSPoint :public MSAbstract
{
public:
MSPoint() = default;
MSPoint(const QString& n) :MSAbstract(n) {}
protected:
virtual void compute() override {};
virtual TopoDS_Shape createProfile() override {};
};

2532
src/MainWindow.cpp Normal file

File diff suppressed because it is too large Load Diff

140
src/MainWindow.h Normal file
View File

@ -0,0 +1,140 @@
#pragma once
#include "View.h"
#include "MAISObj.h"
#include "DataExchange.h"
#include <QMainWindow>
#include <QComboBox>
#include <QStatusBar>
#include <QLabel>
#include <QActionGroup>
#include <QToolBar>
#include <QColorDialog>
#include "Geom_Plane.hxx"
#include "GeomAPI_ProjectPointOnSurf.hxx"
#include "RWObj_TriangulationReader.hxx"
class MainWindow: public QMainWindow
{
Q_OBJECT
public:
MainWindow(QWidget* parent = nullptr);
~MainWindow();
void initMenuToolbar();
void initOCCTView();
void setViewer(const Handle(V3d_Viewer)& theViewer) {
myViewer = theViewer;
}
void initSignals();
void setPerspective(bool check);
void test();
void setColor();
void setSelectMode();
void setWorkArea(int index);
void processSelectChanged();
void runAisCustom();
void runModelData();
void runBRepBuilderAPI();
void runBRepPrimAPI();
void runBRepOffsetAPI();
void runModification();
void runBoolean();
void runHLR();
void runDataExchange();
void runAis();
void runStdAis();
void runGraphic3d();
void runMShape();
protected:
virtual bool eventFilter(QObject* watched , QEvent* event) override;
private:
Handle(V3d_Viewer) Viewer(const V3d_TypeOfOrientation theViewProj);
void updateStatusBar(const std::vector<double>& aNewPos);
double _devPx;
Handle(V3d_Viewer) myViewer;
Handle(AIS_InteractiveContext) myContext;
std::vector<double> myClickPos;
std::vector<Handle(AIS_InteractiveObject)> objs;
View* view_occt;
QStatusBar* stb;
QLabel* lb_positionInfo;
std::vector< QToolBar*> tbs;
QToolBar* tb_view;
QAction* act_hideAll;
QAction* act_hide;
QAction* act_fitAll;
QAction* act_axo;
QAction* act_top;
QAction* act_buttom;
QAction* act_left;
QAction* act_right;
QAction* act_front;
QAction* act_back;
QAction* act_shade;
QAction* act_wireframe;
QAction* act_perspective;
QAction* act_axis;
QAction* act_test;
QToolBar* tb_style;
QAction* act_color;
QAction* act_material;
QActionGroup* actgp_selectMode;
QAction* act_selectVertex;
QAction* act_selectEdge;
QAction* act_selectFace;
QLabel* lb_workArea;
QComboBox* cbb_workArea;
QToolBar* tb_aisCustom;
QComboBox* cbb_aisCustom;
QAction* act_aisCustom;
QToolBar* tb_ModelData;
QComboBox* cbb_ModelData;
QAction* act_ModelData;
QToolBar* tb_ModelAlgorithm;
QComboBox* cbb_BRepBuilderAPI;
QAction* act_BRepBuilderAPI;
QComboBox* cbb_BRepPrimAPI;
QAction* act_BRepPrimAPI;
QComboBox* cbb_BRepOffsetAPI;
QAction* act_BRepOffsetAPI;
QComboBox* cbb_Modification;
QAction* act_Modification;
QComboBox* cbb_Boolean;
QAction* act_Boolean;
QComboBox* cbb_HLR;
QAction* act_HLR;
QToolBar* tb_DataExchange;
QComboBox* cbb_DataExchange;
QAction* act_DataExchange;
QToolBar* tb_Visualization;
QComboBox* cbb_ais;
QAction* act_ais;
QComboBox* cbb_stdAis;
QAction* act_stdAis;
QComboBox* cbb_Graphic3d;
QAction* act_Graphic3d;
QToolBar* tb_MShape;
QComboBox* cbb_MShape;
QAction* act_MShape;
};

129
src/OcctWindow.cpp Normal file
View File

@ -0,0 +1,129 @@
#include "Occtwindow.h"
OcctWindow::OcctWindow(QWidget *parent, const Quantity_NameOfColor theBackColor) :
Aspect_Window(),
_devPx(parent->devicePixelRatio()),
_myWidget(parent)
{
SetBackground(theBackColor);
_xLeft = _devPx * _myWidget->rect().left();
_yTop = _devPx * _myWidget->rect().top();
_xRight = _devPx * _myWidget->rect().right();
_yBottom = _devPx * _myWidget->rect().bottom();
}
Aspect_Drawable OcctWindow::NativeParentHandle() const
{
auto parentWidget = _myWidget->parentWidget();
if (parentWidget)
return (Aspect_Drawable)parentWidget->winId();
else
return 0;
}
Aspect_Drawable OcctWindow::NativeHandle() const
{
return (Aspect_Drawable)_myWidget->winId();
}
Standard_Boolean OcctWindow::IsMapped() const
{
return !( _myWidget->isMinimized() || _myWidget->isHidden() );
}
void OcctWindow::Map() const
{
_myWidget->show();
_myWidget->update();
}
void OcctWindow::Unmap() const
{
_myWidget->hide();
_myWidget->update();
}
Aspect_TypeOfResize OcctWindow::DoResize()
{
int aMask {0};
auto aMode = Aspect_TOR_UNKNOWN;
if (!_myWidget->isMinimized()) {
if ( Abs(_devPx * _myWidget->rect().left() - _xLeft ) > 2 ) aMask |= 1;
if ( Abs(_devPx * _myWidget->rect().right() - _xRight ) > 2 ) aMask |= 2;
if ( Abs(_devPx * _myWidget->rect().top() - _yTop ) > 2 ) aMask |= 4;
if ( Abs(_devPx * _myWidget->rect().bottom() - _yBottom ) > 2 ) aMask |= 8;
switch ( aMask )
{
case 0:
aMode = Aspect_TOR_NO_BORDER;
break;
case 1:
aMode = Aspect_TOR_LEFT_BORDER;
break;
case 2:
aMode = Aspect_TOR_RIGHT_BORDER;
break;
case 4:
aMode = Aspect_TOR_TOP_BORDER;
break;
case 5:
aMode = Aspect_TOR_LEFT_AND_TOP_BORDER;
break;
case 6:
aMode = Aspect_TOR_TOP_AND_RIGHT_BORDER;
break;
case 8:
aMode = Aspect_TOR_BOTTOM_BORDER;
break;
case 9:
aMode = Aspect_TOR_BOTTOM_AND_LEFT_BORDER;
break;
case 10:
aMode = Aspect_TOR_RIGHT_AND_BOTTOM_BORDER;
break;
default:
break;
} // end switch
_xLeft = static_cast<Standard_Integer>(_devPx * _myWidget->rect().left());
_xRight = static_cast<Standard_Integer>(_devPx * _myWidget->rect().right());
_yTop = static_cast<Standard_Integer>(_devPx * _myWidget->rect().top());
_yBottom = static_cast<Standard_Integer>(_devPx * _myWidget->rect().bottom());
} // end if
return aMode;
}
Standard_Real OcctWindow::Ratio() const
{
auto aRect = _myWidget->rect();
return Standard_Real(aRect.right() - aRect.left()) / Standard_Real(aRect.bottom() - aRect.top());
}
void OcctWindow::Size(Standard_Integer &theWidth, Standard_Integer &theHeight) const
{
theWidth = _devPx * _myWidget->rect().right();
theHeight = _devPx * _myWidget->rect().bottom();
}
void OcctWindow::Position(Standard_Integer &theX1,
Standard_Integer &theY1,
Standard_Integer &theX2,
Standard_Integer &theY2) const
{
theX1 = _devPx * _myWidget->rect().left();
theX2 = _devPx * _myWidget->rect().right();
theY1 = _devPx * _myWidget->rect().top();
theY2 = _devPx * _myWidget->rect().bottom();
}
IMPLEMENT_STANDARD_RTTIEXT(OcctWindow,Aspect_Window)

68
src/OcctWindow.h Normal file
View File

@ -0,0 +1,68 @@
#ifndef OCCTWINDOW_H
#define OCCTWINDOW_H
// Qt headers
#include <QWidget>
// occ headers
#include <Aspect_Window.hxx>
class OcctWindow : public Aspect_Window
{
DEFINE_STANDARD_RTTIEXT(OcctWindow, Aspect_Window)
public:
// constructor
OcctWindow(QWidget *parent = nullptr, const Quantity_NameOfColor theBackColor = Quantity_NOC_MATRAGRAY);
// destructor
virtual ~OcctWindow() { _myWidget = nullptr; }
// Returns native Window handle
virtual Aspect_Drawable NativeHandle() const override;
// Returns parent of native Window handle.
virtual Aspect_Drawable NativeParentHandle() const override;
// Applies the resizing to the window <me>
virtual Aspect_TypeOfResize DoResize() override;
// Returns True if the window <me> is opened
// and False if the window is closed.
virtual Standard_Boolean IsMapped() const override;
// Apply the mapping change to the window <me>
// and returns TRUE if the window is mapped at screen.
virtual Standard_Boolean DoMapping() const override { return Standard_True; }
// Opens the window <me>.
virtual void Map() const override;
//! Closes the window <me>.
virtual void Unmap() const override;
virtual void Position( Standard_Integer& theX1,
Standard_Integer& theY1,
Standard_Integer& theX2,
Standard_Integer& theY2
) const override;
// Returns the window RATIO equal to the physical
// WIDTH/HEIGHT dimensions.
virtual Standard_Real Ratio() const override;
virtual void Size(Standard_Integer& theWidth, Standard_Integer& theHeight ) const override;
virtual Aspect_FBConfig NativeFBConfig() const Standard_OVERRIDE { return NULL; }
protected:
Standard_Integer _xLeft;
Standard_Integer _yTop;
Standard_Integer _xRight;
Standard_Integer _yBottom;
const Standard_Real _devPx;
QWidget* _myWidget;
};
#endif // OCCTWINDOW_H

502
src/View.cpp Normal file
View File

@ -0,0 +1,502 @@
#include "View.h"
static QCursor* defCursor = nullptr;
static QCursor* handCursor = nullptr;
static QCursor* panCursor = nullptr;
static QCursor* globPanCursor = nullptr;
static QCursor* zoomCursor = nullptr;
static QCursor* rotCursor = nullptr;
View::View(const Handle(AIS_InteractiveContext)& theContext , bool theIs3dView , QWidget* theParent) :
QWidget(theParent) ,
myIs3dView(theIs3dView) ,
_devPx(devicePixelRatio()) ,
myIsRaytracing(false) ,
myIsShadowsEnabled(true) ,
myIsReflectionsEnabled(false) ,
myIsAntialiasingEnabled(false)
{
myContext = theContext;
myCurrentMode = CurrentAction3d_Nothing;
setAttribute(Qt::WA_PaintOnScreen);
setAttribute(Qt::WA_NoSystemBackground);
setBackgroundRole(QPalette::NoRole);
setFocusPolicy(Qt::StrongFocus);
setMouseTracking(true);
init();
initCursors();
}
void View::init()
{
if (myV3dView.IsNull())
{
myV3dView = myContext->CurrentViewer()->CreateView();
}
Handle(OcctWindow) hWnd = new OcctWindow(this);
// 设置视图窗口
myV3dView->SetWindow(hWnd);
if (!hWnd->IsMapped())
{
hWnd->Map();
}
if (myIs3dView)
{
Quantity_Color color1(Quantity_NOC_BLACK);
Quantity_Color color2(Quantity_NOC_GRAY);
myV3dView->SetBgGradientColors(color1 , color2 , Aspect_GFM_VER);
//myV3dView->SetBackgroundColor(Quantity_NOC_BLUE);
}
else
{
myV3dView->SetBackgroundColor(Quantity_TOC_RGB , 33.0 / 255.0 , 40.0 / 255.0 , 48.0 / 255.0);
myV3dView->SetProj(V3d_Zpos);
}
myV3dView->MustBeResized();
// 添加viewcube
aViewCube = new AIS_ViewCube();
aViewCube->SetBoxTransparency(0.5);
Handle(Prs3d_Drawer) myDrawer = aViewCube->Attributes();
Handle(Prs3d_DatumAspect) datumAspect = new Prs3d_DatumAspect();
datumAspect->ShadingAspect(Prs3d_DP_XAxis)->SetColor(Quantity_NOC_RED);
datumAspect->ShadingAspect(Prs3d_DP_YAxis)->SetColor(Quantity_NOC_GREEN);
datumAspect->ShadingAspect(Prs3d_DP_ZAxis)->SetColor(Quantity_NOC_BLUE);
datumAspect->TextAspect(Prs3d_DP_XAxis)->SetColor(Quantity_NOC_RED);
datumAspect->TextAspect(Prs3d_DP_YAxis)->SetColor(Quantity_NOC_GREEN);
datumAspect->TextAspect(Prs3d_DP_ZAxis)->SetColor(Quantity_NOC_BLUE);
myDrawer->SetDatumAspect(datumAspect);
aViewCube->SetTransformPersistence(new Graphic3d_TransformPers(Graphic3d_TMF_TriedronPers ,
Aspect_TOTP_RIGHT_UPPER ,
Graphic3d_Vec2i(100 , 100)));
myContext->Display(aViewCube , false);
// 添加矩形选择框
myRubberBand = new AIS_RubberBand();
myRubberBand->SetLineType(Aspect_TOL_DASH);
myRubberBand->SetLineColor(Quantity_NOC_WHITE);
setShading();
}
QPaintEngine* View::paintEngine() const
{
return nullptr;
}
void View::removeAll()
{
myContext->RemoveAll(false);
if (!myContext->IsDisplayed(aViewCube))
{
myContext->Display(aViewCube , true);
}
}
void View::remove()
{
std::vector<Handle(AIS_InteractiveObject)> selectedObjects;
myContext->InitSelected();
while (myContext->MoreSelected())
{
Handle(AIS_InteractiveObject) aAis = myContext->SelectedInteractive();
selectedObjects.push_back(aAis);
myContext->NextSelected();
}
for (auto aAis : selectedObjects)
{
myContext->Remove(aAis , false);
}
myContext->UpdateCurrentViewer();
}
void View::setProjectionType(Graphic3d_Camera::Projection prj)
{
myV3dView->Camera()->SetProjectionType(prj);
myV3dView->Redraw();
}
void View::fitAll()
{
if (myContext->NbSelected() > 0)
{
myContext->FitSelected(myV3dView);
}
else
{
myV3dView->FitAll();
}
myV3dView->ZFitAll();
myV3dView->Redraw();
}
void View::setAxo()
{
if (myIs3dView)
{
myV3dView->SetProj(V3d_XposYnegZpos);
}
}
void View::setFront()
{
myV3dView->SetProj(V3d_Yneg);
}
void View::setBack()
{
myV3dView->SetProj(V3d_Ypos);
}
void View::setLeft()
{
myV3dView->SetProj(V3d_Xneg);
}
void View::setRight()
{
myV3dView->SetProj(V3d_Xpos);
}
void View::setTop()
{
myV3dView->SetProj(V3d_Zpos);
}
void View::setBottom()
{
myV3dView->SetProj(V3d_Zneg);
}
void View::setShading()
{
myContext->InitSelected();
while (myContext->MoreSelected())
{
Handle(AIS_InteractiveObject) aAis = myContext->SelectedInteractive();
myContext->SetDisplayMode(aAis , 1 , false);
myContext->NextSelected();
}
myContext->UpdateCurrentViewer();
}
void View::setWireframe()
{
myContext->InitSelected();
while (myContext->MoreSelected())
{
Handle(AIS_InteractiveObject) aAis = myContext->SelectedInteractive();
myContext->SetDisplayMode(aAis , 0 , false);
myContext->NextSelected();
}
myContext->UpdateCurrentViewer();
}
void View::setAxis()
{
gp_Ax2 ax2 = gp_Ax2(gp_Pnt(0 , 0 , 0) , gp_Dir(0 , 0 , 1));
Handle(Geom_Axis2Placement) aGeoAxis2Placement = new Geom_Axis2Placement(ax2);
Handle(AIS_Trihedron) aisTrihedron = new AIS_Trihedron(aGeoAxis2Placement);
aisTrihedron->SetDatumPartColor(Prs3d_DP_XArrow , Quantity_NOC_RED2);
aisTrihedron->SetDatumPartColor(Prs3d_DP_YArrow , Quantity_NOC_GREEN2);
aisTrihedron->SetDatumPartColor(Prs3d_DP_ZArrow , Quantity_NOC_BLUE2);
aisTrihedron->SetDatumPartColor(Prs3d_DP_XAxis , Quantity_NOC_RED2);
aisTrihedron->SetDatumPartColor(Prs3d_DP_YAxis , Quantity_NOC_GREEN2);
aisTrihedron->SetDatumPartColor(Prs3d_DP_ZAxis , Quantity_NOC_BLUE2);
// 显示模式shade在此设置否则display方法报错
//aisTrihedron->SetDatumDisplayMode(Prs3d_DM_Shaded);
aisTrihedron->SetDrawArrows(true);
myContext->Display(aisTrihedron , 0 , AIS_TrihedronSelectionMode_EntireObject , false);
}
void View::setHLR(bool theState)
{
QApplication::setOverrideCursor(Qt::WaitCursor);
myV3dView->SetComputedMode(theState);
myV3dView->Redraw();
QApplication::restoreOverrideCursor();
}
void View::setRaytracing(bool theState)
{
QApplication::setOverrideCursor(Qt::WaitCursor);
if (theState)
{
myV3dView->ChangeRenderingParams().Method = Graphic3d_RM_RAYTRACING;
}
else
{
myV3dView->ChangeRenderingParams().Method = Graphic3d_RM_RASTERIZATION;
}
myIsRaytracing = theState;
myContext->UpdateCurrentViewer();
QApplication::restoreOverrideCursor();
}
void View::SetRaytracedShadows(bool theState)
{
myV3dView->ChangeRenderingParams().IsShadowEnabled = theState;
myIsShadowsEnabled = theState;
myContext->UpdateCurrentViewer();
}
void View::SetRaytracedReflections(bool theState)
{
myV3dView->ChangeRenderingParams().IsReflectionEnabled = theState;
myIsReflectionsEnabled = theState;
myContext->UpdateCurrentViewer();
}
void View::SetRaytracedAntialiasing(bool theState)
{
myV3dView->ChangeRenderingParams().IsAntialiasingEnabled = theState;
myIsAntialiasingEnabled = theState;
myContext->UpdateCurrentViewer();
}
void View::setBackgroundColor(QColor aRetColor)
{
Standard_Real R1;
Standard_Real G1;
Standard_Real B1;
if (aRetColor.isValid())
{
R1 = aRetColor.red() / 255.;
G1 = aRetColor.green() / 255.;
B1 = aRetColor.blue() / 255.;
myV3dView->SetBackgroundColor(Quantity_TOC_RGB , R1 , G1 , B1);
}
myV3dView->Redraw();
}
void View::setEnvironmentMap(const QString& fileName)
{
if (!fileName.isEmpty())
{
Handle(Graphic3d_TextureEnv) aTexture = new Graphic3d_TextureEnv(fileName.toStdString().c_str());
myV3dView->SetTextureEnv(aTexture);
}
else
{
myV3dView->SetTextureEnv(Handle(Graphic3d_TextureEnv)());
}
myV3dView->Redraw();
}
void View::setTransparency(double aTranspValue)
{
AIS_ListOfInteractive anAisObjectsList;
myContext->DisplayedObjects(anAisObjectsList);
if (anAisObjectsList.Extent() == 0)
{
return;
}
for (AIS_ListOfInteractive::Iterator anIter(anAisObjectsList); anIter.More(); anIter.Next())
{
const Handle(AIS_InteractiveObject)& anAisObject = anIter.Value();
myContext->SetTransparency(anAisObject , aTranspValue , Standard_False);
}
myContext->UpdateCurrentViewer();
}
void View::activateCursor(const CurrentAction3d theMode)
{
QCursor* aCursor = defCursor;
switch (theMode)
{
case CurrentAction3d_DynamicPanning:
aCursor = panCursor;
break;
case CurrentAction3d_DynamicZooming:
aCursor = zoomCursor;
break;
case CurrentAction3d_DynamicRotation:
aCursor = rotCursor;
break;
case CurrentAction3d_GlobalPanning:
aCursor = globPanCursor;
break;
case CurrentAction3d_WindowZooming:
aCursor = handCursor;
break;
case CurrentAction3d_Nothing:
aCursor = defCursor;
break;
default:
break;
}
setCursor(*aCursor);
}
void View::paintEvent(QPaintEvent* event)
{
myV3dView->Redraw();
}
void View::resizeEvent(QResizeEvent* event)
{
if (!myV3dView.IsNull())
{
myV3dView->MustBeResized();
}
}
void View::mousePressEvent(QMouseEvent* theEvent)
{
myClickPos = Graphic3d_Vec2i(_devPx * theEvent->pos().x() , _devPx * theEvent->pos().y());
if (!myV3dView.IsNull())
{
if (theEvent->button() == Qt::MiddleButton)
{
myCurrentMode = CurrentAction3d_DynamicPanning;
}
else if (theEvent->button() == Qt::RightButton && theEvent->modifiers() & Qt::ShiftModifier)
{
if (myIs3dView)
{
myCurrentMode = CurrentAction3d_DynamicRotation;
myV3dView->StartRotation(myClickPos.x() , myClickPos.y());
}
}
activateCursor(myCurrentMode);
update();
}
}
void View::mouseReleaseEvent(QMouseEvent* theEvent)
{
const Graphic3d_Vec2i aNewPos = Graphic3d_Vec2i(_devPx * theEvent->pos().x() , _devPx * theEvent->pos().y());
if (!myV3dView.IsNull())
{
myCurrentMode = CurrentAction3d_Nothing;
activateCursor(myCurrentMode);
bool hasRubberBand= myContext->IsDisplayed(myRubberBand);
if (theEvent->button() == Qt::LeftButton && !hasRubberBand)
{
if (theEvent->modifiers() & Qt::ControlModifier)
myContext->SelectDetected(AIS_SelectionScheme_XOR);
else if (theEvent->modifiers() & Qt::ShiftModifier)
{
myContext->SelectDetected(AIS_SelectionScheme_Add);
}
else
{
myContext->SelectDetected(); // 此代码没有viewcube无法旋转
}
}
else if (theEvent->button() == Qt::LeftButton && hasRubberBand)
{
if (theEvent->modifiers() & Qt::ControlModifier)
{
myContext->SelectRectangle(myClickPos , aNewPos , myV3dView , AIS_SelectionScheme_XOR);
}
else if (theEvent->modifiers() & Qt::ShiftModifier)
{
myContext->SelectRectangle(myClickPos , aNewPos , myV3dView , AIS_SelectionScheme_Add);
}
else if (!(theEvent->modifiers() & (Qt::ShiftModifier | Qt::ControlModifier)))
{
myContext->SelectRectangle(myClickPos , aNewPos , myV3dView);
}
myContext->Remove(myRubberBand , false);
}
myClickPos = aNewPos;
update();
emit selectionChanged();
}
}
void View::mouseMoveEvent(QMouseEvent* theEvent)
{
const Graphic3d_Vec2i aNewPos(_devPx * theEvent->pos().x() , _devPx * theEvent->pos().y());
if (!myV3dView.IsNull())
{
myContext->MoveTo(aNewPos.x() , aNewPos.y() , myV3dView , false);
if (theEvent->buttons() & Qt::LeftButton)
{
myRubberBand->SetRectangle(myClickPos.x() , height() * _devPx - myClickPos.y() ,
aNewPos.x() , height() * _devPx - aNewPos.y());
if (myContext->IsDisplayed(myRubberBand))
myContext->Redisplay(myRubberBand , false);
else
myContext->Display(myRubberBand , false);
}
else
{
switch (myCurrentMode)
{
case CurrentAction3d_Nothing:
break;
case CurrentAction3d_DynamicZooming:
myCurrentMode = CurrentAction3d_Nothing;
break;
case CurrentAction3d_DynamicPanning:
myV3dView->Pan(aNewPos.x() - myClickPos.x() , myClickPos.y() - aNewPos.y());
myClickPos = aNewPos;
break;
case CurrentAction3d_DynamicRotation:
if (myIs3dView)
{
myV3dView->Rotation(aNewPos.x() , aNewPos.y());
}
break;
case CurrentAction3d_ObjectDececting:
break;
default:
break;
}
activateCursor(myCurrentMode);
}
update();
}
}
void View::wheelEvent(QWheelEvent* theEvent)
{
myClickPos = Graphic3d_Vec2i(_devPx * theEvent->position().x() , _devPx * theEvent->position().y());
if (!myV3dView.IsNull())
{
myCurrentMode = CurrentAction3d_DynamicZooming;
myV3dView->StartZoomAtPoint(myClickPos.x() , myClickPos.y());
myV3dView->ZoomAtPoint(0 , 0 , theEvent->angleDelta().y() / 8 , 0);
activateCursor(myCurrentMode);
update();
}
}
void View::initCursors()
{
if (!defCursor)
defCursor = new QCursor(Qt::ArrowCursor);
if (!handCursor)
handCursor = new QCursor(Qt::PointingHandCursor);
if (!panCursor)
panCursor = new QCursor(Qt::SizeAllCursor);
if (!globPanCursor)
globPanCursor = new QCursor(Qt::CrossCursor);
if (!zoomCursor)
zoomCursor = new QCursor(QPixmap(":/icons/icons/cursor_zoom.png"));
if (!rotCursor)
rotCursor = new QCursor(QPixmap(":/icons/icons/cursor_rotate.png"));
}

137
src/View.h Normal file
View File

@ -0,0 +1,137 @@
#pragma once
#include <QWidget>
#include <QMouseEvent>
#include <QApplication>
#include <QPainter>
#include "Geom_Axis2Placement.hxx"
#include "OpenGl_GraphicDriver.hxx"
#include "Aspect_DisplayConnection.hxx"
#include "AIS_TrihedronSelectionMode.hxx"
#include "AIS_InteractiveContext.hxx"
#include "AIS_ViewCube.hxx"
#include "AIS_Trihedron.hxx"
#include "AIS_Shape.hxx"
#include "AIS_RubberBand.hxx"
#include "V3d_Viewer.hxx"
#include "V3d_View.hxx"
#include "OcctWindow.h"
enum CurrentAction3d
{
CurrentAction3d_Nothing,
CurrentAction3d_DynamicZooming,
CurrentAction3d_WindowZooming,
CurrentAction3d_DynamicPanning,
CurrentAction3d_GlobalPanning,
CurrentAction3d_DynamicRotation,
CurrentAction3d_ObjectDececting
};
enum ViewAction
{
ViewAction_FitAll,
ViewAction_FitArea,
ViewAction_Zoom,
ViewAction_Pan,
ViewAction_GlobalPan,
ViewAction_Front,
ViewAction_Back,
ViewAction_Top,
ViewAction_Bottom,
ViewAction_Left,
ViewAction_Right,
ViewAction_Axo,
ViewAction_Rotation,
ViewAction_Reset,
ViewAction_HlrOff,
ViewAction_HlrOn,
ViewAction_Shading,
ViewAction_Wireframe,
ViewAction_Transparency
};
enum RaytraceAction
{
RaytraceAction_Raytracing,
RaytraceAction_Shadows,
RaytraceAction_Reflections,
RaytraceAction_Antialiasing
};
class View :public QWidget
{
Q_OBJECT
signals:
void selectionChanged();
public:
View(const Handle(AIS_InteractiveContext)& theContext, bool theIs3dView = true, QWidget* theParent = nullptr);
virtual void init();
virtual QPaintEngine* paintEngine() const;
void removeAll();
void remove();
void setProjectionType(Graphic3d_Camera::Projection prj = Graphic3d_Camera::Projection_Orthographic);
void fitAll();
void setAxo();
void setFront();
void setBack();
void setLeft();
void setRight();
void setTop();
void setBottom();
void setShading();
void setWireframe();
void setAxis();
void setHLR(bool theState);
void setRaytracing(bool theState);
void SetRaytracedShadows(bool theState);
void SetRaytracedReflections (bool theState);
void SetRaytracedAntialiasing (bool theState);
void setBackgroundColor(QColor aRetColor);
void setEnvironmentMap(const QString& fileName);
void setTransparency(double aTranspValue);
const Handle(V3d_View)& getView() const
{
return myV3dView;
}
Handle(AIS_InteractiveContext)& getContext()
{
return myContext;
}
protected:
void activateCursor(const CurrentAction3d);
virtual void paintEvent(QPaintEvent*) override;
virtual void resizeEvent(QResizeEvent*) override;
virtual void mousePressEvent(QMouseEvent*) override;
virtual void mouseReleaseEvent(QMouseEvent*) override;
virtual void mouseMoveEvent(QMouseEvent*) override;
virtual void wheelEvent(QWheelEvent*) override;
private:
void initCursors();
bool myIs3dView;
double _devPx;
Handle(V3d_View) myV3dView;
Handle(AIS_InteractiveContext) myContext;
Handle(AIS_ViewCube) aViewCube;
Handle(AIS_RubberBand) myRubberBand;
CurrentAction3d myCurrentMode;
Graphic3d_Vec2i myClickPos;
bool myIsRaytracing;
bool myIsShadowsEnabled;
bool myIsReflectionsEnabled;
bool myIsAntialiasingEnabled;
};

12
src/main.cpp Normal file
View File

@ -0,0 +1,12 @@
#include "MainWindow.h"
#include <QApplication>
int main(int argc, char* argv[])
{
QApplication a(argc,argv);
MainWindow w;
w.showMaximized();
return a.exec();
}

14
vcpkg-configuration.json Normal file
View File

@ -0,0 +1,14 @@
{
"default-registry": {
"kind": "git",
"baseline": "6ecbbbdf31cba47aafa7cf6189b1e73e10ac61f8",
"repository": "https://github.com/microsoft/vcpkg"
},
"registries": [
{
"kind": "artifact",
"location": "https://github.com/microsoft/vcpkg-ce-catalog/archive/refs/heads/main.zip",
"name": "microsoft"
}
]
}

14
vcpkg.json Normal file
View File

@ -0,0 +1,14 @@
{
"name": "aicam",
"version-string": "1.0.0",
"dependencies": [
{
"name": "opencascade",
"default-features": false,
"version>=": "7.9.1",
"features": [
"vtk"
]
}
]
}