zemu 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +7 -0
- data/lib/zemu/config.rb +312 -0
- data/lib/zemu/instance.rb +179 -0
- data/lib/zemu.rb +172 -0
- data/src/debug.c +118 -0
- data/src/debug.h +30 -0
- data/src/external/Z/API/Z/ABIs/generic/allocator.h +36 -0
- data/src/external/Z/API/Z/ABIs/generic/cipher.h +47 -0
- data/src/external/Z/API/Z/ABIs/generic/data codec.h +33 -0
- data/src/external/Z/API/Z/ABIs/generic/emulation.h +103 -0
- data/src/external/Z/API/Z/ABIs/generic/hash function.h +33 -0
- data/src/external/Z/API/Z/ABIs/generic/module.h +33 -0
- data/src/external/Z/API/Z/ABIs/generic/wave codec.h +40 -0
- data/src/external/Z/API/Z/classes/base/InitializerList.hpp +34 -0
- data/src/external/Z/API/Z/classes/base/OpaqueFunctionPointer.hpp +26 -0
- data/src/external/Z/API/Z/classes/base/OpaqueMemberFunctionPointer.hpp +26 -0
- data/src/external/Z/API/Z/classes/base/Pair.hpp +46 -0
- data/src/external/Z/API/Z/classes/base/Range.hpp +111 -0
- data/src/external/Z/API/Z/classes/base/SizedString.hpp +66 -0
- data/src/external/Z/API/Z/classes/base/Status.hpp +89 -0
- data/src/external/Z/API/Z/classes/base/Symbol.hpp +39 -0
- data/src/external/Z/API/Z/classes/base/Tuple.hpp +111 -0
- data/src/external/Z/API/Z/classes/base/Value2D.hpp +389 -0
- data/src/external/Z/API/Z/classes/base/Value3D.hpp +368 -0
- data/src/external/Z/API/Z/classes/buffering/RingBuffer.hpp +93 -0
- data/src/external/Z/API/Z/classes/buffering/TripleBuffer.hpp +68 -0
- data/src/external/Z/API/Z/classes/functional/Functor.hpp +265 -0
- data/src/external/Z/API/Z/classes/functional/MemberFunction.hpp +98 -0
- data/src/external/Z/API/Z/classes/functional/ObjectMemberFunction.hpp +172 -0
- data/src/external/Z/API/Z/classes/functional/ObjectSelector.hpp +219 -0
- data/src/external/Z/API/Z/classes/functional/Selector.hpp +146 -0
- data/src/external/Z/API/Z/classes/mathematics/geometry/euclidean/AABB.hpp +81 -0
- data/src/external/Z/API/Z/classes/mathematics/geometry/euclidean/AABR.hpp +685 -0
- data/src/external/Z/API/Z/classes/mathematics/geometry/euclidean/Box.hpp +219 -0
- data/src/external/Z/API/Z/classes/mathematics/geometry/euclidean/Circle.hpp +80 -0
- data/src/external/Z/API/Z/classes/mathematics/geometry/euclidean/Line2D.hpp +93 -0
- data/src/external/Z/API/Z/classes/mathematics/geometry/euclidean/Line3D.hpp +80 -0
- data/src/external/Z/API/Z/classes/mathematics/geometry/euclidean/Rectangle.hpp +675 -0
- data/src/external/Z/API/Z/classes/mathematics/geometry/euclidean/Sphere.hpp +0 -0
- data/src/external/Z/API/Z/classes/memory/Shared.hpp +90 -0
- data/src/external/Z/API/Z/constants/base.h +35 -0
- data/src/external/Z/API/Z/constants/chemical elements.h +6385 -0
- data/src/external/Z/API/Z/constants/numbers.h +963 -0
- data/src/external/Z/API/Z/constants/version.h +15 -0
- data/src/external/Z/API/Z/formats/character set/ASCII.h +158 -0
- data/src/external/Z/API/Z/formats/character set/DOS CP437.h +159 -0
- data/src/external/Z/API/Z/formats/character set/DOS CP737.h +159 -0
- data/src/external/Z/API/Z/formats/character set/DOS CP775.h +159 -0
- data/src/external/Z/API/Z/formats/character set/DOS CP850.h +159 -0
- data/src/external/Z/API/Z/formats/character set/DOS CP852.h +159 -0
- data/src/external/Z/API/Z/formats/character set/DOS CP855.h +159 -0
- data/src/external/Z/API/Z/formats/character set/DOS CP857.h +159 -0
- data/src/external/Z/API/Z/formats/character set/DOS CP858.h +159 -0
- data/src/external/Z/API/Z/formats/character set/DOS CP860.h +159 -0
- data/src/external/Z/API/Z/formats/character set/DOS CP861.h +159 -0
- data/src/external/Z/API/Z/formats/character set/DOS CP862.h +159 -0
- data/src/external/Z/API/Z/formats/character set/DOS CP863.h +159 -0
- data/src/external/Z/API/Z/formats/character set/DOS CP864.h +159 -0
- data/src/external/Z/API/Z/formats/character set/DOS CP865.h +159 -0
- data/src/external/Z/API/Z/formats/character set/DOS CP866.h +159 -0
- data/src/external/Z/API/Z/formats/character set/DOS CP869.h +159 -0
- data/src/external/Z/API/Z/formats/character set/DOS CP872.h +159 -0
- data/src/external/Z/API/Z/formats/character set/DOS CP874.h +159 -0
- data/src/external/Z/API/Z/formats/character set/Unicode.h +30119 -0
- data/src/external/Z/API/Z/formats/data model/I16LP32.h +19 -0
- data/src/external/Z/API/Z/formats/data model/ILP32.h +19 -0
- data/src/external/Z/API/Z/formats/data model/ILP64.h +19 -0
- data/src/external/Z/API/Z/formats/data model/IP16L32.h +19 -0
- data/src/external/Z/API/Z/formats/data model/LLP64.h +19 -0
- data/src/external/Z/API/Z/formats/data model/LP32.h +19 -0
- data/src/external/Z/API/Z/formats/data model/LP64.h +19 -0
- data/src/external/Z/API/Z/formats/data model/SILP64.h +19 -0
- data/src/external/Z/API/Z/formats/file system/FAT12.h +61 -0
- data/src/external/Z/API/Z/formats/floating-point/IEEE 754.h +141 -0
- data/src/external/Z/API/Z/formats/floating-point/x87.h +74 -0
- data/src/external/Z/API/Z/formats/image/ICNS.h +39 -0
- data/src/external/Z/API/Z/formats/keymap/Mac OS.h +284 -0
- data/src/external/Z/API/Z/formats/keymap/Z.h +141 -0
- data/src/external/Z/API/Z/formats/multimedia/Creative Voice.h +106 -0
- data/src/external/Z/API/Z/formats/multimedia/Microsoft Wave.h +49 -0
- data/src/external/Z/API/Z/formats/snapshot/machine/computer/ZX Spectrum/ACH.h +44 -0
- data/src/external/Z/API/Z/formats/snapshot/machine/computer/ZX Spectrum/FRZ.h +54 -0
- data/src/external/Z/API/Z/formats/snapshot/machine/computer/ZX Spectrum/PRG.h +33 -0
- data/src/external/Z/API/Z/formats/snapshot/machine/computer/ZX Spectrum/SEM.h +46 -0
- data/src/external/Z/API/Z/formats/snapshot/machine/computer/ZX Spectrum/SIT.h +34 -0
- data/src/external/Z/API/Z/formats/snapshot/machine/computer/ZX Spectrum/SNA.h +117 -0
- data/src/external/Z/API/Z/formats/snapshot/machine/computer/ZX Spectrum/SNP.h +37 -0
- data/src/external/Z/API/Z/formats/snapshot/machine/computer/ZX Spectrum/SP.h +62 -0
- data/src/external/Z/API/Z/formats/snapshot/machine/computer/ZX Spectrum/Z80.h +117 -0
- data/src/external/Z/API/Z/formats/snapshot/machine/computer/ZX Spectrum/ZX.h +56 -0
- data/src/external/Z/API/Z/formats/snapshot/machine/computer/ZX Spectrum/ZX82.h +70 -0
- data/src/external/Z/API/Z/formats/storage medium image/NES Game Pak/UNIF.h +26 -0
- data/src/external/Z/API/Z/formats/storage medium image/NES Game Pak/iNES.h +76 -0
- data/src/external/Z/API/Z/formats/storage medium image/audio/TAP.h +25 -0
- data/src/external/Z/API/Z/formats/storage medium image/audio/TZX.h +1185 -0
- data/src/external/Z/API/Z/formats/storage medium image/audio/Warajevo TAP.h +32 -0
- data/src/external/Z/API/Z/formats/storage medium image/floppy disk/FDI.h +45 -0
- data/src/external/Z/API/Z/functions/base/Z2D.h +583 -0
- data/src/external/Z/API/Z/functions/base/Z3D.h +712 -0
- data/src/external/Z/API/Z/functions/base/ZRange.h +137 -0
- data/src/external/Z/API/Z/functions/base/all.h +16 -0
- data/src/external/Z/API/Z/functions/base/casting.hpp +37 -0
- data/src/external/Z/API/Z/functions/base/character.h +38 -0
- data/src/external/Z/API/Z/functions/base/constructors.h +326 -0
- data/src/external/Z/API/Z/functions/base/structure.hpp +26 -0
- data/src/external/Z/API/Z/functions/base/type.hpp +60 -0
- data/src/external/Z/API/Z/functions/base/value.h +1901 -0
- data/src/external/Z/API/Z/functions/base/value.hpp +112 -0
- data/src/external/Z/API/Z/functions/buffering/ZRingBuffer.h +85 -0
- data/src/external/Z/API/Z/functions/buffering/ZTripleBuffer.h +65 -0
- data/src/external/Z/API/Z/functions/mathematics/geometry/euclidean/Z2DLine.h +179 -0
- data/src/external/Z/API/Z/functions/mathematics/geometry/euclidean/Z3DLine.h +168 -0
- data/src/external/Z/API/Z/functions/mathematics/geometry/euclidean/ZAABB.h +361 -0
- data/src/external/Z/API/Z/functions/mathematics/geometry/euclidean/ZAABR.h +1081 -0
- data/src/external/Z/API/Z/functions/mathematics/geometry/euclidean/ZBox.h +340 -0
- data/src/external/Z/API/Z/functions/mathematics/geometry/euclidean/ZCircle.h +142 -0
- data/src/external/Z/API/Z/functions/mathematics/geometry/euclidean/ZRectangle.h +1267 -0
- data/src/external/Z/API/Z/functions/mathematics/geometry/euclidean/ZSphere.h +156 -0
- data/src/external/Z/API/Z/functions/mathematics/geometry/euclidean/all.h +18 -0
- data/src/external/Z/API/Z/functions/mathematics/geometry/euclidean/constructors.h +620 -0
- data/src/external/Z/API/Z/functions/time/date.h +29 -0
- data/src/external/Z/API/Z/hardware/CPU/architecture/6502.h +90 -0
- data/src/external/Z/API/Z/hardware/CPU/architecture/Z80.h +245 -0
- data/src/external/Z/API/Z/hardware/CPU/architecture/i4004.h +37 -0
- data/src/external/Z/API/Z/hardware/PSG/General Instrument/AY-3-891x.h +180 -0
- data/src/external/Z/API/Z/hardware/VDC/Ricoh/RP2C0x.h +625 -0
- data/src/external/Z/API/Z/hardware/bus/AGP.h +24 -0
- data/src/external/Z/API/Z/hardware/bus/USB.h +510 -0
- data/src/external/Z/API/Z/hardware/machine/model/computer/ZX Spectrum/Inves Spectrum +.h +47 -0
- data/src/external/Z/API/Z/hardware/machine/model/computer/ZX Spectrum/Pentagon.h +13 -0
- data/src/external/Z/API/Z/hardware/machine/model/computer/ZX Spectrum/Scorpion.h +13 -0
- data/src/external/Z/API/Z/hardware/machine/model/computer/ZX Spectrum/ZX Spectrum + 128K.h +158 -0
- data/src/external/Z/API/Z/hardware/machine/model/computer/ZX Spectrum/ZX Spectrum +.h +82 -0
- data/src/external/Z/API/Z/hardware/machine/model/computer/ZX Spectrum/ZX Spectrum +2.h +13 -0
- data/src/external/Z/API/Z/hardware/machine/model/computer/ZX Spectrum/ZX Spectrum +2A.h +13 -0
- data/src/external/Z/API/Z/hardware/machine/model/computer/ZX Spectrum/ZX Spectrum +3.h +13 -0
- data/src/external/Z/API/Z/hardware/machine/model/computer/ZX Spectrum/ZX Spectrum.h +109 -0
- data/src/external/Z/API/Z/hardware/machine/model/console/Nintendo Entertainment System/NES-001 (NTSC).h +29 -0
- data/src/external/Z/API/Z/hardware/machine/model/console/Nintendo Entertainment System/NES-001 (PAL).h +29 -0
- data/src/external/Z/API/Z/hardware/machine/platform/computer/ZX Spectrum.h +405 -0
- data/src/external/Z/API/Z/hardware/machine/platform/console/Game Boy.h +49 -0
- data/src/external/Z/API/Z/hardware/machine/platform/console/Nintendo Entertainment System.h +350 -0
- data/src/external/Z/API/Z/hardware/storage medium/ROM cartridge/SNES Game Pak.h +238 -0
- data/src/external/Z/API/Z/inspection/C/completion.h +178 -0
- data/src/external/Z/API/Z/inspection/C/modules/C11.h +41 -0
- data/src/external/Z/API/Z/inspection/C/modules/C18.h +13 -0
- data/src/external/Z/API/Z/inspection/C/modules/C89.h +19 -0
- data/src/external/Z/API/Z/inspection/C/modules/C90.h +13 -0
- data/src/external/Z/API/Z/inspection/C/modules/C94.h +15 -0
- data/src/external/Z/API/Z/inspection/C/modules/C99.h +29 -0
- data/src/external/Z/API/Z/inspection/C/modules/KR C.h +19 -0
- data/src/external/Z/API/Z/inspection/C++/completion.h +512 -0
- data/src/external/Z/API/Z/inspection/C++/modules/C++03.h +15 -0
- data/src/external/Z/API/Z/inspection/C++/modules/C++11.h +80 -0
- data/src/external/Z/API/Z/inspection/C++/modules/C++14.h +26 -0
- data/src/external/Z/API/Z/inspection/C++/modules/C++17.h +55 -0
- data/src/external/Z/API/Z/inspection/C++/modules/C++85.h +11 -0
- data/src/external/Z/API/Z/inspection/C++/modules/C++89.h +13 -0
- data/src/external/Z/API/Z/inspection/C++/modules/C++98.h +17 -0
- data/src/external/Z/API/Z/inspection/C++.h +78 -0
- data/src/external/Z/API/Z/inspection/C.h +79 -0
- data/src/external/Z/API/Z/inspection/CPU/completion.h +56 -0
- data/src/external/Z/API/Z/inspection/CPU/detection.h +714 -0
- data/src/external/Z/API/Z/inspection/CPU/modules/6502.h +25 -0
- data/src/external/Z/API/Z/inspection/CPU/modules/AArch32.h +32 -0
- data/src/external/Z/API/Z/inspection/CPU/modules/AArch64.h +32 -0
- data/src/external/Z/API/Z/inspection/CPU/modules/Z80.h +26 -0
- data/src/external/Z/API/Z/inspection/CPU/modules/x86-32.h +31 -0
- data/src/external/Z/API/Z/inspection/CPU/modules/x86-64.h +312 -0
- data/src/external/Z/API/Z/inspection/CPU.h +209 -0
- data/src/external/Z/API/Z/inspection/OS/completion.h +36 -0
- data/src/external/Z/API/Z/inspection/OS/detection.h +768 -0
- data/src/external/Z/API/Z/inspection/OS/modules/Linux.h +22 -0
- data/src/external/Z/API/Z/inspection/OS/modules/MS-DOS.h +16 -0
- data/src/external/Z/API/Z/inspection/OS/modules/Mac OS X.h +23 -0
- data/src/external/Z/API/Z/inspection/OS/modules/Windows.h +19 -0
- data/src/external/Z/API/Z/inspection/OS/modules/iPhone OS.h +23 -0
- data/src/external/Z/API/Z/inspection/OS.h +236 -0
- data/src/external/Z/API/Z/inspection/Objective-C/completion.h +8 -0
- data/src/external/Z/API/Z/inspection/Objective-C/modules/Objective-C v1.0.h +11 -0
- data/src/external/Z/API/Z/inspection/Objective-C/modules/Objective-C v2.0.h +15 -0
- data/src/external/Z/API/Z/inspection/Objective-C.h +51 -0
- data/src/external/Z/API/Z/inspection/Z.h +19 -0
- data/src/external/Z/API/Z/inspection/build.h +22 -0
- data/src/external/Z/API/Z/inspection/character set.h +66 -0
- data/src/external/Z/API/Z/inspection/compiler/completion.h +2885 -0
- data/src/external/Z/API/Z/inspection/compiler/modules/Apple LLVM.h +26 -0
- data/src/external/Z/API/Z/inspection/compiler/modules/Clang.h +1664 -0
- data/src/external/Z/API/Z/inspection/compiler/modules/GCC.h +1366 -0
- data/src/external/Z/API/Z/inspection/compiler/modules/SCCZ80.h +473 -0
- data/src/external/Z/API/Z/inspection/compiler/modules/Visual C++.h +606 -0
- data/src/external/Z/API/Z/inspection/compiler/modules/cc65.h +529 -0
- data/src/external/Z/API/Z/inspection/compiler/modules/generic.h +13 -0
- data/src/external/Z/API/Z/inspection/compiler/modules/template.h +650 -0
- data/src/external/Z/API/Z/inspection/compiler.h +299 -0
- data/src/external/Z/API/Z/inspection/data model/completion.h +128 -0
- data/src/external/Z/API/Z/inspection/data model/deduction.h +9 -0
- data/src/external/Z/API/Z/inspection/data model/detection.h +45 -0
- data/src/external/Z/API/Z/inspection/data model.h +362 -0
- data/src/external/Z/API/Z/inspection/floating-point/completion.h +50 -0
- data/src/external/Z/API/Z/inspection/floating-point.h +324 -0
- data/src/external/Z/API/Z/inspection/language.h +163 -0
- data/src/external/Z/API/Z/inspection/platform/detection.h +9 -0
- data/src/external/Z/API/Z/inspection/platform.h +29 -0
- data/src/external/Z/API/Z/keys/C++.h +27 -0
- data/src/external/Z/API/Z/keys/C.h +29 -0
- data/src/external/Z/API/Z/keys/CPU.h +80 -0
- data/src/external/Z/API/Z/keys/OS.h +182 -0
- data/src/external/Z/API/Z/keys/Objective-C.h +17 -0
- data/src/external/Z/API/Z/keys/chemistry.h +26 -0
- data/src/external/Z/API/Z/keys/compiler.h +178 -0
- data/src/external/Z/API/Z/keys/data model.h +32 -0
- data/src/external/Z/API/Z/keys/endianness.h +24 -0
- data/src/external/Z/API/Z/keys/language.h +21 -0
- data/src/external/Z/API/Z/keys/layout.h +20 -0
- data/src/external/Z/API/Z/keys/mathematics/geometry.h +29 -0
- data/src/external/Z/API/Z/keys/mathematics/number.h +21 -0
- data/src/external/Z/API/Z/keys/order.h +18 -0
- data/src/external/Z/API/Z/keys/platform.h +87 -0
- data/src/external/Z/API/Z/keys/program.h +39 -0
- data/src/external/Z/API/Z/keys/science/chemical elements.h +200 -0
- data/src/external/Z/API/Z/keys/science/electricity.h +18 -0
- data/src/external/Z/API/Z/keys/science/magnetism.h +19 -0
- data/src/external/Z/API/Z/keys/status.h +69 -0
- data/src/external/Z/API/Z/keys/text.h +27 -0
- data/src/external/Z/API/Z/keys/value.h +88 -0
- data/src/external/Z/API/Z/macros/arguments.h +25 -0
- data/src/external/Z/API/Z/macros/casting.h +22 -0
- data/src/external/Z/API/Z/macros/character.h +159 -0
- data/src/external/Z/API/Z/macros/date.h +14 -0
- data/src/external/Z/API/Z/macros/key.h +20 -0
- data/src/external/Z/API/Z/macros/language.h +126 -0
- data/src/external/Z/API/Z/macros/language.hpp +81 -0
- data/src/external/Z/API/Z/macros/members.h +86 -0
- data/src/external/Z/API/Z/macros/pasting.h +308 -0
- data/src/external/Z/API/Z/macros/pointer.h +33 -0
- data/src/external/Z/API/Z/macros/repetition.h +283 -0
- data/src/external/Z/API/Z/macros/structure.h +104 -0
- data/src/external/Z/API/Z/macros/templating.h +407 -0
- data/src/external/Z/API/Z/macros/tokens.h +14 -0
- data/src/external/Z/API/Z/macros/type enumeration.h +43 -0
- data/src/external/Z/API/Z/macros/type selection.hpp +76 -0
- data/src/external/Z/API/Z/macros/value.h +489 -0
- data/src/external/Z/API/Z/macros/variadic pasting.h +21 -0
- data/src/external/Z/API/Z/macros/variadic selection.h +56 -0
- data/src/external/Z/API/Z/macros/variadic.h +46 -0
- data/src/external/Z/API/Z/macros/version.h +17 -0
- data/src/external/Z/API/Z/network/3/IP.h +36 -0
- data/src/external/Z/API/Z/network/4/TCP.h +24 -0
- data/src/external/Z/API/Z/network/4/UDP.h +26 -0
- data/src/external/Z/API/Z/network/7/ED2K.h +104 -0
- data/src/external/Z/API/Z/network/7/HTTP.h +100 -0
- data/src/external/Z/API/Z/traits/SelectType.hpp +71 -0
- data/src/external/Z/API/Z/traits/TernaryType.hpp +20 -0
- data/src/external/Z/API/Z/traits/Type.hpp +4516 -0
- data/src/external/Z/API/Z/traits/TypeCount.hpp +52 -0
- data/src/external/Z/API/Z/traits/TypeList.hpp +376 -0
- data/src/external/Z/API/Z/traits/base.hpp +19 -0
- data/src/external/Z/API/Z/traits/filtering.hpp +30 -0
- data/src/external/Z/API/Z/traits/mathematics.hpp +48 -0
- data/src/external/Z/API/Z/types/arguments.h +19 -0
- data/src/external/Z/API/Z/types/base.h +1655 -0
- data/src/external/Z/API/Z/types/base.hpp +169 -0
- data/src/external/Z/API/Z/types/buffering.h +27 -0
- data/src/external/Z/API/Z/types/mathematics.h +135 -0
- data/src/external/Z/API/Z/types/time.h +23 -0
- data/src/external/Z/COPYING.LESSER +165 -0
- data/src/external/Z/development/Qt Creator/Z.pro +253 -0
- data/src/external/Z/distribution/CocoaPods/Zeta.podspec +18 -0
- data/src/external/Z/distribution/Gentoo Linux/Zeta-0.1.ebuild +22 -0
- data/src/external/Z/distribution/Gentoo Linux/metadata.xml +8 -0
- data/src/external/Z/distribution/Homebrew/Zeta.rb +11 -0
- data/src/external/z80/API/emulation/CPU/Z80.h +201 -0
- data/src/external/z80/README.md +229 -0
- data/src/external/z80/building/premake4.lua +33 -0
- data/src/external/z80/development/Xcode/Z80.xcodeproj/project.pbxproj +520 -0
- data/src/external/z80/sources/Z80.c +1660 -0
- data/src/interrupt.c +6 -0
- data/src/interrupt.h +3 -0
- data/src/io.c.erb +115 -0
- data/src/io.h.erb +18 -0
- data/src/main.c +69 -0
- data/src/memory.c.erb +43 -0
- data/src/memory.h.erb +9 -0
- metadata +329 -0
@@ -0,0 +1,389 @@
|
|
1
|
+
/* Z Kit - classes/base/Value2D.hpp
|
2
|
+
_____ _______________
|
3
|
+
/_ /_/ -_/_ _/ _ |
|
4
|
+
/____/\___/ /__//___/_| Kit
|
5
|
+
Copyright (C) 2006-2018 Manuel Sainz de Baranda y Goñi.
|
6
|
+
Released under the terms of the GNU Lesser General Public License v3. */
|
7
|
+
|
8
|
+
#ifndef _Z_classes_base_Value2D_HPP_
|
9
|
+
#define _Z_classes_base_Value2D_HPP_
|
10
|
+
|
11
|
+
#include <Z/macros/type selection.hpp>
|
12
|
+
#include <Z/functions/base/value.hpp>
|
13
|
+
|
14
|
+
|
15
|
+
#define Z_IMPLEMENTATION_FOUNDATION_CONSTRUCTORS(Prefix) \
|
16
|
+
Z_CT(CPP11) Value2D(const Prefix##Point &point) : x(point.x), y(point.y) {} \
|
17
|
+
Z_CT(CPP11) Value2D(const Prefix##Size &size ) : x(size.width), y(size.height) {}
|
18
|
+
|
19
|
+
|
20
|
+
#if Z_LANGUAGE_HAS(CPP, INITIALIZER_LIST)
|
21
|
+
|
22
|
+
# define Z_IMPLEMENTATION_FOUNDATION_OPERATORS(Prefix) \
|
23
|
+
Z_CT(CPP11) operator Prefix##Point() const {return {CGFloat(x), CGFloat(y)};} \
|
24
|
+
Z_CT(CPP11) operator Prefix##Size () const {return {CGFloat(x), CGFloat(y)};} \
|
25
|
+
Z_CT(CPP11) operator Prefix##Rect () const {return {{0.0, 0.0}, {CGFloat(x), CGFloat(y)}};}
|
26
|
+
|
27
|
+
#else
|
28
|
+
|
29
|
+
# define Z_IMPLEMENTATION_FOUNDATION_OPERATORS(Prefix) \
|
30
|
+
\
|
31
|
+
Z_CT(CPP14) operator Prefix##Point() const \
|
32
|
+
{ \
|
33
|
+
Prefix##Point result = {CGFloat(x), CGFloat(y)}; \
|
34
|
+
return result; \
|
35
|
+
} \
|
36
|
+
\
|
37
|
+
\
|
38
|
+
Z_CT(CPP14) operator Prefix##Size() const \
|
39
|
+
{ \
|
40
|
+
Prefix##Size result = {CGFloat(x), CGFloat(y)}; \
|
41
|
+
return result; \
|
42
|
+
} \
|
43
|
+
\
|
44
|
+
\
|
45
|
+
Z_CT(CPP14) operator Prefix##Rect() const \
|
46
|
+
{ \
|
47
|
+
Prefix##Rect result = {CGFloat(0), CGFloat(0), CGFloat(x), CGFloat(y)}; \
|
48
|
+
return result; \
|
49
|
+
}
|
50
|
+
|
51
|
+
#endif
|
52
|
+
|
53
|
+
|
54
|
+
#ifdef Z_USE_CG_GEOMETRY
|
55
|
+
|
56
|
+
# include <CoreGraphics/CGGeometry.h>
|
57
|
+
|
58
|
+
# define Z_IMPLEMENTATION_CG_GEOMETRY \
|
59
|
+
Z_IMPLEMENTATION_FOUNDATION_CONSTRUCTORS(CG) \
|
60
|
+
Z_IMPLEMENTATION_FOUNDATION_OPERATORS (CG)
|
61
|
+
|
62
|
+
#else
|
63
|
+
# define Z_IMPLEMENTATION_CG_GEOMETRY
|
64
|
+
#endif
|
65
|
+
|
66
|
+
#if defined(Z_USE_NS_GEOMETRY) && Z_LANGUAGE_INCLUDES(OBJECTIVE_CPP)
|
67
|
+
|
68
|
+
# import <Foundation/NSGeometry.h>
|
69
|
+
|
70
|
+
# if !defined(Z_USE_CG_GEOMETRY) || \
|
71
|
+
!defined(NSGEOMETRY_TYPES_SAME_AS_CGGEOMETRY_TYPES) || \
|
72
|
+
!NSGEOMETRY_TYPES_SAME_AS_CGGEOMETRY_TYPES
|
73
|
+
|
74
|
+
# define Z_IMPLEMENTATION_NS_GEOMETRY \
|
75
|
+
Z_IMPLEMENTATION_FOUNDATION_CONSTRUCTORS(NS) \
|
76
|
+
Z_IMPLEMENTATION_FOUNDATION_OPERATORS (NS)
|
77
|
+
|
78
|
+
# endif
|
79
|
+
|
80
|
+
#endif
|
81
|
+
|
82
|
+
#ifndef Z_IMPLEMENTATION_NS_GEOMETRY
|
83
|
+
# define Z_IMPLEMENTATION_NS_GEOMETRY
|
84
|
+
#endif
|
85
|
+
|
86
|
+
#ifdef Z_USE_COCOS2D_X
|
87
|
+
|
88
|
+
# include "cocos2d.h"
|
89
|
+
|
90
|
+
# define Z_IMPLEMENTATION_COCOS2D_X \
|
91
|
+
\
|
92
|
+
Z_INLINE Value2D(const cocos2d::Vec2 &point) : x(point.x), y(point.y) {} \
|
93
|
+
Z_INLINE Value2D(const cocos2d::Size &size ) : x(size.width), y(size.height) {} \
|
94
|
+
\
|
95
|
+
Z_INLINE operator cocos2d::Vec2() const {return cocos2d::Vec2(float(x), float(y));} \
|
96
|
+
Z_INLINE operator cocos2d::Size() const {return cocos2d::Size(float(x), float(y));} \
|
97
|
+
Z_INLINE operator cocos2d::Rect() const {return cocos2d::Rect(0.0f, 0.0f, float(x), float(y));}
|
98
|
+
|
99
|
+
#else
|
100
|
+
# define Z_IMPLEMENTATION_COCOS2D_X
|
101
|
+
#endif
|
102
|
+
|
103
|
+
|
104
|
+
#define Z_IMPLEMENTATION_COMMON \
|
105
|
+
\
|
106
|
+
typedef typename ZTypeFixedNumber(Z2D, T) Base; \
|
107
|
+
T x, y; \
|
108
|
+
\
|
109
|
+
Z_INLINE Value2D() Z_DEFAULTED({}) \
|
110
|
+
\
|
111
|
+
Z_CT(CPP11) Value2D(T x, T y) : x(x), y(y) {} \
|
112
|
+
Z_CT(CPP11) Value2D(T xy) : x(xy), y(xy) {} \
|
113
|
+
Z_CT(CPP11) Value2D(const Value3D<T> &xy) : x(xy.x), y(xy.y) {} \
|
114
|
+
Z_CT(CPP11) Value2D(const Base &other) : x(other.x), y(other.y) {} \
|
115
|
+
\
|
116
|
+
Z_CT(CPP11) operator Boolean() const {return x != T(0) || y != T(0);} \
|
117
|
+
Z_INLINE operator Base& () const {return *((Base *)this);} \
|
118
|
+
\
|
119
|
+
Z_CT(CPP11) Boolean operator ==(const Value2D &rhs) const {return x == rhs.x && y == rhs.y;} \
|
120
|
+
Z_CT(CPP11) Boolean operator !=(const Value2D &rhs) const {return x != rhs.x || y != rhs.y;} \
|
121
|
+
Z_CT(CPP11) Boolean operator <=(const Value2D &rhs) const {return x <= rhs.x && y <= rhs.y;} \
|
122
|
+
Z_CT(CPP11) Boolean operator >=(const Value2D &rhs) const {return x >= rhs.x && y >= rhs.y;} \
|
123
|
+
Z_CT(CPP11) Boolean operator > (const Value2D &rhs) const {return x > rhs.x && y > rhs.y;} \
|
124
|
+
Z_CT(CPP11) Boolean operator < (const Value2D &rhs) const {return x < rhs.x && y < rhs.y;} \
|
125
|
+
\
|
126
|
+
Z_CT(CPP11) Value2D operator +(const Value2D &rhs) const {return Value2D(x + rhs.x, y + rhs.y);}\
|
127
|
+
Z_CT(CPP11) Value2D operator -(const Value2D &rhs) const {return Value2D(x - rhs.x, y - rhs.y);}\
|
128
|
+
Z_CT(CPP11) Value2D operator *(const Value2D &rhs) const {return Value2D(x * rhs.x, y * rhs.y);}\
|
129
|
+
Z_CT(CPP11) Value2D operator /(const Value2D &rhs) const {return Value2D(x / rhs.x, y / rhs.y);}\
|
130
|
+
\
|
131
|
+
Z_INLINE Value2D &operator +=(const Value2D &rhs) {return *this = *this + rhs;} \
|
132
|
+
Z_INLINE Value2D &operator -=(const Value2D &rhs) {return *this = *this - rhs;} \
|
133
|
+
Z_INLINE Value2D &operator *=(const Value2D &rhs) {return *this = *this * rhs;} \
|
134
|
+
Z_INLINE Value2D &operator /=(const Value2D &rhs) {return *this = *this / rhs;} \
|
135
|
+
\
|
136
|
+
Z_CT(CPP11) Boolean operator ==(T rhs) const {return x == rhs && y == rhs;} \
|
137
|
+
Z_CT(CPP11) Boolean operator !=(T rhs) const {return x != rhs || y != rhs;} \
|
138
|
+
Z_CT(CPP11) Boolean operator <=(T rhs) const {return x <= rhs && y <= rhs;} \
|
139
|
+
Z_CT(CPP11) Boolean operator >=(T rhs) const {return x >= rhs && y >= rhs;} \
|
140
|
+
Z_CT(CPP11) Boolean operator > (T rhs) const {return x > rhs && y > rhs;} \
|
141
|
+
Z_CT(CPP11) Boolean operator < (T rhs) const {return x < rhs && y < rhs;} \
|
142
|
+
\
|
143
|
+
Z_CT(CPP11) Value2D operator +(T rhs) const {return Value2D(x + rhs, y + rhs);} \
|
144
|
+
Z_CT(CPP11) Value2D operator -(T rhs) const {return Value2D(x - rhs, y - rhs);} \
|
145
|
+
Z_CT(CPP11) Value2D operator *(T rhs) const {return Value2D(x * rhs, y * rhs);} \
|
146
|
+
Z_CT(CPP11) Value2D operator /(T rhs) const {return Value2D(x / rhs, y / rhs);} \
|
147
|
+
\
|
148
|
+
Z_INLINE Value2D &operator +=(T rhs) {return *this = *this + rhs;} \
|
149
|
+
Z_INLINE Value2D &operator -=(T rhs) {return *this = *this - rhs;} \
|
150
|
+
Z_INLINE Value2D &operator *=(T rhs) {return *this = *this * rhs;} \
|
151
|
+
Z_INLINE Value2D &operator /=(T rhs) {return *this = *this / rhs;} \
|
152
|
+
\
|
153
|
+
Z_INLINE T operator [](UInt index) const {return ((T *)this)[index];} \
|
154
|
+
Z_INLINE T &operator [](UInt index) {return ((T *)this)[index];} \
|
155
|
+
\
|
156
|
+
Z_IMPLEMENTATION_CG_GEOMETRY \
|
157
|
+
Z_IMPLEMENTATION_NS_GEOMETRY \
|
158
|
+
Z_IMPLEMENTATION_COCOS2D_X \
|
159
|
+
\
|
160
|
+
Z_CT(CPP11) Value2D yx () const {return Value2D(y, x);} \
|
161
|
+
Z_CT(CPP11) Value3D<T> nxy(T n) const {return Value3D<T>(n, x, y);} \
|
162
|
+
Z_CT(CPP11) Value3D<T> nyx(T n) const {return Value3D<T>(n, y, x);} \
|
163
|
+
Z_CT(CPP11) Value3D<T> xny(T n) const {return Value3D<T>(x, n, y);} \
|
164
|
+
Z_CT(CPP11) Value3D<T> xyn(T n) const {return Value3D<T>(x, y, n);} \
|
165
|
+
Z_CT(CPP11) Value3D<T> ynx(T n) const {return Value3D<T>(y, n, x);} \
|
166
|
+
Z_CT(CPP11) Value3D<T> yxn(T n) const {return Value3D<T>(y, x, n);} \
|
167
|
+
\
|
168
|
+
\
|
169
|
+
Z_CT(CPP11) Value2D clamp(const Value2D &minimum, const Value2D &maximum) const \
|
170
|
+
{ \
|
171
|
+
return Value2D \
|
172
|
+
(Zeta::clamp<T>(x, minimum.x, maximum.x), \
|
173
|
+
Zeta::clamp<T>(y, minimum.y, maximum.y)); \
|
174
|
+
} \
|
175
|
+
\
|
176
|
+
\
|
177
|
+
Z_CT(CPP11) Value2D clamp(T minimum, T maximum) const \
|
178
|
+
{ \
|
179
|
+
return Value2D \
|
180
|
+
(Zeta::clamp<T>(x, minimum, maximum), \
|
181
|
+
Zeta::clamp<T>(y, minimum, maximum)); \
|
182
|
+
} \
|
183
|
+
\
|
184
|
+
\
|
185
|
+
Z_CT(CPP11) T cross_product(const Value2D &other) const \
|
186
|
+
{return x * other.y - y * other.x;} \
|
187
|
+
\
|
188
|
+
\
|
189
|
+
Z_CT(CPP11) T dot_product(const Value2D &other) const \
|
190
|
+
{return x * other.x + y * other.y;} \
|
191
|
+
\
|
192
|
+
\
|
193
|
+
Z_CT(CPP11) Value2D fit(const Value2D &other) const \
|
194
|
+
{ \
|
195
|
+
return y / x > other.y / other.x \
|
196
|
+
? Value2D(x * other.y / y, other.y) \
|
197
|
+
: Value2D(other.x, y * other.x / x); \
|
198
|
+
} \
|
199
|
+
\
|
200
|
+
\
|
201
|
+
Z_CT(CPP11) Boolean has_zero() const \
|
202
|
+
{return x == T(0) || y == T(0);} \
|
203
|
+
\
|
204
|
+
\
|
205
|
+
Z_CT(CPP11) T inner_maximum() const \
|
206
|
+
{return Zeta::maximum<T>(x, y);} \
|
207
|
+
\
|
208
|
+
\
|
209
|
+
Z_CT(CPP11) T inner_middle() const \
|
210
|
+
{return (x + y) / T(2);} \
|
211
|
+
\
|
212
|
+
\
|
213
|
+
Z_CT(CPP11) T inner_minimum() const \
|
214
|
+
{return Zeta::minimum<T>(x, y);} \
|
215
|
+
\
|
216
|
+
\
|
217
|
+
Z_CT(CPP11) T inner_product() const \
|
218
|
+
{return x * y;} \
|
219
|
+
\
|
220
|
+
\
|
221
|
+
Z_CT(CPP11) T inner_sum() const \
|
222
|
+
{return x + y;} \
|
223
|
+
\
|
224
|
+
\
|
225
|
+
Z_CT(CPP11) Boolean is_zero() const \
|
226
|
+
{return x == T(0) && y == T(0);} \
|
227
|
+
\
|
228
|
+
\
|
229
|
+
Z_CT(CPP11) Value2D maximum(const Value2D &other) const \
|
230
|
+
{return Value2D(Zeta::maximum<T>(x, other.x), Zeta::maximum<T>(y, other.y));} \
|
231
|
+
\
|
232
|
+
\
|
233
|
+
Z_CT(CPP11) Value2D middle(const Value2D &other) const \
|
234
|
+
{return Value2D((x + other.x) / T(2), (y + other.y) / T(2));} \
|
235
|
+
\
|
236
|
+
\
|
237
|
+
Z_CT(CPP11) Value2D minimum(const Value2D &other) const \
|
238
|
+
{return Value2D(Zeta::minimum<T>(x, other.x), Zeta::minimum<T>(y, other.y));} \
|
239
|
+
\
|
240
|
+
\
|
241
|
+
Z_CT(CPP11) T squared_length() const \
|
242
|
+
{return x * x + y * y;} \
|
243
|
+
\
|
244
|
+
\
|
245
|
+
Z_INLINE void swap(Value2D &other) \
|
246
|
+
{Zeta::swap<Base>(this, &other);}
|
247
|
+
|
248
|
+
|
249
|
+
#define Z_IMPLEMENTATION_SIGNED \
|
250
|
+
\
|
251
|
+
Z_CT(CPP11) Value2D absolute() const \
|
252
|
+
{return Value2D(Zeta::absolute<T>(x), Zeta::absolute<T>(y));} \
|
253
|
+
\
|
254
|
+
\
|
255
|
+
Z_CT(CPP11) Boolean has_negative() const \
|
256
|
+
{return x < T(0) || y < T(0);} \
|
257
|
+
\
|
258
|
+
\
|
259
|
+
Z_CT(CPP11) Boolean is_negative() const \
|
260
|
+
{return x < T(0) && y < T(0);} \
|
261
|
+
\
|
262
|
+
\
|
263
|
+
Z_CT(CPP11) Value2D negative() const \
|
264
|
+
{return Value2D(-x, -y);}
|
265
|
+
|
266
|
+
|
267
|
+
namespace Zeta {
|
268
|
+
|
269
|
+
template <class T, UInt T_number_set = Type<T>::number_set> struct Value2D;
|
270
|
+
template <class T, UInt T_number_set = Type<T>::number_set> struct Value3D;
|
271
|
+
|
272
|
+
|
273
|
+
template <class T> struct Value2D<T, Z_NUMBER_SET_Z> {
|
274
|
+
Z_IMPLEMENTATION_COMMON
|
275
|
+
Z_IMPLEMENTATION_SIGNED
|
276
|
+
|
277
|
+
|
278
|
+
Z_CT(CPP11) Boolean is_perpendicular(const Value2D &other) const
|
279
|
+
{return !Zeta::absolute<T>(dot_product(other));}
|
280
|
+
|
281
|
+
|
282
|
+
# ifdef Z_EXTENSION_VALUE_2D_Z
|
283
|
+
Z_EXTENSION_VALUE_2D_Z
|
284
|
+
# endif
|
285
|
+
};
|
286
|
+
|
287
|
+
|
288
|
+
template <class T> struct Value2D<T, Z_NUMBER_SET_N> {
|
289
|
+
Z_IMPLEMENTATION_COMMON
|
290
|
+
|
291
|
+
|
292
|
+
# ifdef Z_EXTENSION_VALUE_2D_N
|
293
|
+
Z_EXTENSION_VALUE_2D_N
|
294
|
+
# endif
|
295
|
+
};
|
296
|
+
|
297
|
+
|
298
|
+
template <class T> struct Value2D<T, Z_NUMBER_SET_R> {
|
299
|
+
Z_IMPLEMENTATION_COMMON
|
300
|
+
Z_IMPLEMENTATION_SIGNED
|
301
|
+
|
302
|
+
|
303
|
+
Z_CT(CPP11) Value2D clamp_01() const
|
304
|
+
{return Value2D(Zeta::clamp_01<T>(x), Zeta::clamp_01<T>(y));}
|
305
|
+
|
306
|
+
|
307
|
+
Z_CT(CPP11) Boolean has_almost_zero() const
|
308
|
+
{return Zeta::is_almost_zero<T>(x) || Zeta::is_almost_zero<T>(y);}
|
309
|
+
|
310
|
+
|
311
|
+
Z_CT(CPP11) Boolean has_finite() const
|
312
|
+
{return Zeta::is_finite<T>(x) || Zeta::is_finite<T>(y);}
|
313
|
+
|
314
|
+
|
315
|
+
Z_CT(CPP11) Boolean has_infinity() const
|
316
|
+
{return Zeta::is_infinity<T>(x) || Zeta::is_infinity<T>(y);}
|
317
|
+
|
318
|
+
|
319
|
+
Z_CT(CPP11) Boolean has_nan() const
|
320
|
+
{return Zeta::is_nan<T>(x) || Zeta::is_nan<T>(y);}
|
321
|
+
|
322
|
+
|
323
|
+
Z_CT(CPP11) Value2D inverse_lerp(const Value2D &other, T t) const
|
324
|
+
{
|
325
|
+
return Value2D
|
326
|
+
(Zeta::inverse_lerp<T>(x, other.x, t),
|
327
|
+
Zeta::inverse_lerp<T>(y, other.y, t));
|
328
|
+
}
|
329
|
+
|
330
|
+
|
331
|
+
Z_CT(CPP11) Boolean is_almost_equal(const Value2D &other) const
|
332
|
+
{
|
333
|
+
return Zeta::are_almost_equal<T>(x, other.x) &&
|
334
|
+
Zeta::are_almost_equal<T>(y, other.y);
|
335
|
+
}
|
336
|
+
|
337
|
+
|
338
|
+
Z_CT(CPP11) Boolean is_almost_zero() const
|
339
|
+
{return Zeta::is_almost_zero<T>(x) && Zeta::is_almost_zero<T>(y);}
|
340
|
+
|
341
|
+
|
342
|
+
Z_CT(CPP11) Boolean is_finite() const
|
343
|
+
{return Zeta::is_finite<T>(x) && Zeta::is_finite<T>(y);}
|
344
|
+
|
345
|
+
|
346
|
+
Z_CT(CPP11) Boolean is_infinity() const
|
347
|
+
{return Zeta::is_infinity<T>(x) && Zeta::is_infinity<T>(y);}
|
348
|
+
|
349
|
+
|
350
|
+
Z_CT(CPP11) Boolean is_nan() const
|
351
|
+
{return Zeta::is_nan<T>(x) && Zeta::is_nan<T>(y);}
|
352
|
+
|
353
|
+
|
354
|
+
Z_CT(CPP11) Boolean is_perpendicular(const Value2D &other) const
|
355
|
+
{return Zeta::absolute<T>(dot_product(other)) <= Type<T>::epsilon();}
|
356
|
+
|
357
|
+
|
358
|
+
Z_CT(CPP11) Value2D lerp(const Value2D &other, T t) const
|
359
|
+
{
|
360
|
+
return Value2D
|
361
|
+
(Zeta::lerp<T>(x, other.x, t),
|
362
|
+
Zeta::lerp<T>(y, other.y, t));
|
363
|
+
}
|
364
|
+
|
365
|
+
|
366
|
+
Z_CT(CPP11) Value2D reciprocal() const
|
367
|
+
{return Value2D(T(1) / x, T(1) / y);}
|
368
|
+
|
369
|
+
|
370
|
+
# ifdef Z_EXTENSION_VALUE_2D_R
|
371
|
+
Z_EXTENSION_VALUE_2D_R
|
372
|
+
# endif
|
373
|
+
};
|
374
|
+
}
|
375
|
+
|
376
|
+
|
377
|
+
#undef Z_IMPLEMENTATION_FOUNDATION_CONSTRUCTORS
|
378
|
+
#undef Z_IMPLEMENTATION_FOUNDATION_OPERATORS
|
379
|
+
#undef Z_IMPLEMENTATION_CG_GEOMETRY
|
380
|
+
#undef Z_IMPLEMENTATION_NS_GEOMETRY
|
381
|
+
#undef Z_IMPLEMENTATION_COCOS2D_X
|
382
|
+
#undef Z_IMPLEMENTATION_COMMON
|
383
|
+
#undef Z_IMPLEMENTATION_SIGNED
|
384
|
+
|
385
|
+
#ifndef _Z_classes_base_Value3D_HPP_
|
386
|
+
# include <Z/classes/base/Value3D.hpp>
|
387
|
+
#endif
|
388
|
+
|
389
|
+
#endif // _Z_classes_base_Value2D_HPP_
|