diff --git a/.circleci/config.yml b/.circleci/config.yml new file mode 100644 index 0000000..3c4a8e5 --- /dev/null +++ b/.circleci/config.yml @@ -0,0 +1,413 @@ +--- +version: 2.1 + +parameters: + run_workflow_deploy: + type: boolean + default: true + +## Start of build control of O58 and O562 pluginsrun_workflow_deploy +## run_workflow_deploy_O58 +## type: boolean +## default: true +## run_workflow_deploy_O562 +## type: boolean +## default: false + +std-filters: &std-filters + filters: + branches: + ignore: + - devel + - tmp + tags: + only: /.*/ + +workflows: + build_all: + jobs: +## ---------------------- +## OpenCPN 5.8 Plugins (Also work in 5.10) +## ---------------------- + - build-android-arm64: + <<: *std-filters + - build-android-armhf: + <<: *std-filters + - build-flatpak-aarch64-2208: + <<: *std-filters + - build-flatpak-x86-2208: + <<: *std-filters + - build-flatpak-aarch64-2408: + <<: *std-filters + - build-flatpak-x86-2408: + <<: *std-filters + - build-msvc-wx32-2022: + <<: *std-filters + - build-debian-arm64-12-bookworm: + <<: *std-filters + - build-debian-armhf-12-bookworm: + <<: *std-filters + - build-debian-x86_64-12-bookworm: + <<: *std-filters + - build-debian-armhf-11-bullseye: + <<: *std-filters + - build-debian-arm64-11-bullseye: + <<: *std-filters + - build-debian-x86_64-11-bullseye: + <<: *std-filters +# KEEP needed for Jammy with wx32 + - build-ubuntu-x86_64-2204-jammy: + <<: *std-filters + - build-macos-universal: + <<: *std-filters + +## ------------------------------------------- +## OpenCPN 5.6.2 Plugins Frozen - 28/05/2023 +## ------------------------------------------ +## Circleci will not build for macos 11 so removed - 18/10/2023 + - build-msvc-2022: + <<: *std-filters + +orbs: + cloudsmith: cloudsmith/cloudsmith@1.0.4 + win: circleci/windows@5.0 + +commands: + deploy-code: + parameters: + install_python: + type: boolean + default: false + deploy_use_orb: + type: boolean + default: true + steps: + - when: + condition: <> + steps: + - when: + condition: <> + steps: + - run: sudo apt install -y python3-pip + - run: python3 -m pip install cloudsmith-cli + - when: + condition: <> + steps: + - cloudsmith/ensure-api-key + - cloudsmith/install-cli + - run: bash ci/cloudsmith-upload.sh + +# if you want to use a local proxy add Acquire::http::Proxy \"http://192.168.1.1:3142\"; to a file called circleci-cache/apt-proxy. This will require +# --volume {your local directory}/circleci-cache:/home/circleci/circleci-cache +# on the circleci local command line so that the docker image script can have access to the directory +# if you are on a slow or data limited internet link you can put a copy of master.zip here, or allow one to be downloaded by the script, as it is used by the android builds to +# provide the wxWidgets QT information. + +jobs: +## --------------------- +## OpenCPN 5.8 Plugins +## --------------------- + build-android-arm64: + docker: + - image: cimg/android:2023.12-ndk + resource_class: large + environment: + - OCPN_TARGET: android-arm64 + - DEPLOY_USE_ORB: true + - INSTALL_PYTHON: true + steps: + - checkout + - run: chmod a+x ci/*.sh + - run: bash ci/circleci-build-android-arm64.sh + - deploy-code: + install_python: true + build-android-armhf: + docker: + - image: cimg/android:2023.12-ndk + resource_class: large + environment: + - OCPN_TARGET: android-armhf + - DEPLOY_USE_ORB: true + - INSTALL_PYTHON: true + steps: + - checkout + - run: chmod a+x ci/*.sh + - run: bash ci/circleci-build-android-armhf.sh + - deploy-code: + install_python: true + build-macos-universal: + macos: + xcode: "15.2.0" + environment: + OCPN_TARGET: macos + CMAKE_BUILD_PARALLEL_LEVEL: 2 + WX_VER: 32 + DEPLOY_USE_ORB: false + INSTALL_PYTHON: false + steps: + - checkout + - run: sudo chmod go+w /usr/local + - restore_cache: + key: "{{checksum \"build-deps/macos-cache-stamp\"}}\ + -{{checksum \"cmake/MacosWxwidgets.cmake\"}}\ + -{{checksum \"ci/circleci-build-macos-universal.sh\"}}" + - run: chmod a+x ci/*.sh + - run: chmod a+x cmake/*.sh + - run: ci/circleci-build-macos-universal.sh + - save_cache: + key: "{{checksum \"build-deps/macos-cache-stamp\"}}\ + -{{checksum \"cmake/MacosWxwidgets.cmake\"}}\ + -{{checksum \"ci/circleci-build-macos-universal.sh\"}}" + paths: + - /tmp/local.cache.tar + - /Users/distiller/project/cache + - run: > + sh -c "otool -L build/*.dylib" + - run: > + sh -c "cat build/*.xml" + - deploy-code: + deploy_use_orb: false + install_python: false + build-msvc-wx32-2022: + executor: + name: win/server-2022 + shell: cmd.exe + environment: + - OCPN_TARGET: MSVC + - MSVC_VERSION: 2022 + - WX_VER: 32 + - DEPLOY_USE_ORB: false + steps: + - checkout + - run: + privileged: False + shell: cmd.exe + command: ci\circleci-build-msvc.bat + - deploy-code: + deploy_use_orb: false + build-flatpak-aarch64-2208: + machine: + image: ubuntu-2204:current + resource_class: arm.medium + environment: + - OCPN_TARGET: flatpak + - BUILD_ARCH: aarch64 + - FLATPAK_BRANCH: stable + - CLOUDSMITH_PKG_EXT: gz + - SDK_VER: 22.08 + - DEPLOY_USE_ORB: true + steps: + - checkout + - run: chmod a+x ci/*.sh + - run: + command: bash ci/circleci-build-flatpak.sh + - deploy-code + build-flatpak-x86-2208: + machine: + image: ubuntu-2204:current + environment: + - OCPN_TARGET: flatpak + - BUILD_ARCH: x86_64 + - FLATPAK_BRANCH: stable + - CLOUDSMITH_PKG_EXT: gz + - SDK_VER: 22.08 + - DEPLOY_USE_ORB: true + steps: + - checkout + - run: chmod a+x ci/*.sh + - run: + command: bash ci/circleci-build-flatpak.sh + no_output_timeout: 30m + - deploy-code + build-flatpak-aarch64-2408: + machine: + image: ubuntu-2204:current + resource_class: arm.medium + environment: + - OCPN_TARGET: flatpak + - BUILD_ARCH: aarch64 + - FLATPAK_BRANCH: stable + - CLOUDSMITH_PKG_EXT: gz + - SDK_VER: 24.08 + - DEPLOY_USE_ORB: true + steps: + - checkout + - run: chmod a+x ci/*.sh + - run: + command: bash ci/circleci-build-flatpak.sh + - deploy-code + build-flatpak-x86-2408: + machine: + image: ubuntu-2204:current + environment: + - OCPN_TARGET: flatpak + - BUILD_ARCH: x86_64 + - FLATPAK_BRANCH: stable + - CLOUDSMITH_PKG_EXT: gz + - SDK_VER: 24.08 + - DEPLOY_USE_ORB: true + steps: + - checkout + - run: chmod a+x ci/*.sh + - run: + command: bash ci/circleci-build-flatpak.sh + no_output_timeout: 30m + - deploy-code + build-debian-arm64-12-bookworm: + machine: + image: ubuntu-2204:current + resource_class: arm.medium + environment: + - OCPN_TARGET=bookworm-arm64 + - DOCKER_IMAGE=arm64v8/debian:bookworm + - BUILD_FLAGS=-j3 + - BUILD_ENV=debian + - WX_VER: 32 + - BUILD_GTK3: true + - DEPLOY_USE_ORB: true + steps: + - checkout + - run: chmod a+x ./ci/*.sh + - run: + command: ci/circleci-build-ubuntu-docker.sh + no_output_timeout: 30m + - deploy-code + build-debian-armhf-12-bookworm: + machine: + image: ubuntu-2204:current + resource_class: arm.medium + environment: + - OCPN_TARGET=bookworm-armhf + - DOCKER_IMAGE=arm32v7/debian:bookworm + - BUILD_FLAGS=-j3 + - BUILD_ENV=debian + - WX_VER: 32 + - BUILD_GTK3: true + - DEPLOY_USE_ORB: true + steps: + - checkout + - run: chmod a+x ./ci/*.sh + - run: + command: ci/circleci-build-ubuntu-docker.sh + no_output_timeout: 30m + - deploy-code + build-debian-x86_64-12-bookworm: + machine: + image: ubuntu-2404:current + environment: + - OCPN_TARGET: bookworm + - BUILD_GTK3: true + - WX_VER: 32 + - DEPLOY_USE_ORB: true + - BUILD_ENV=debian + - DOCKER_IMAGE=debian:bookworm + steps: + - checkout + - run: chmod a+x ci/*.sh + - run: + command: ci/circleci-build-ubuntu-docker.sh + no_output_timeout: 30m + - deploy-code + build-debian-armhf-11-bullseye: + machine: + image: ubuntu-2204:current + resource_class: arm.medium + environment: + - OCPN_TARGET=bullseye-armhf + - DOCKER_IMAGE=jongough/debian-armhf:bullseye + - BUILD_FLAGS=-j3 + - BUILD_ENV=debian + - BUILD_GTK3: true + - DEPLOY_USE_ORB: true + steps: + - checkout + - run: chmod a+x ./ci/*.sh + - run: + command: ci/circleci-build-ubuntu-docker.sh + no_output_timeout: 30m + - deploy-code + build-debian-arm64-11-bullseye: + machine: + image: ubuntu-2204:current + resource_class: arm.medium + environment: + - OCPN_TARGET=bullseye-arm64 + - DOCKER_IMAGE=arm64v8/debian:bullseye-backports + - BUILD_FLAGS=-j3 + - BUILD_ENV=debian + - BUILD_GTK3: true + - DEPLOY_USE_ORB: true + steps: + - checkout + - run: chmod a+x ./ci/*.sh + - run: + command: ci/circleci-build-ubuntu-docker.sh + no_output_timeout: 30m + - deploy-code + build-debian-x86_64-11-bullseye: + docker: + - image: circleci/buildpack-deps:bullseye-scm + environment: + - OCPN_TARGET: bullseye + - BUILD_GTK3: true + - DEPLOY_USE_ORB: true + - BUILD_ENV=debian + steps: + - checkout + - run: > + echo "deb-src http://ftp.us.debian.org/debian bullseye main" + | sudo tee -a /etc/apt/sources.list + - run: > + echo "deb-src http://ftp.us.debian.org/debian bullseye-updates main" + | sudo tee -a /etc/apt/sources.list + - run: cat /etc/apt/sources.list + - run: chmod a+x ci/*.sh + - run: ci/circleci-build-debian.sh + - deploy-code +## KEEP needed for OpenCPN v5.8 Jammy wx32 build + build-ubuntu-x86_64-2204-jammy: + docker: + - image: cimg/base:edge-22.04 + environment: + - BUILD_GTK3: true + - WX_VER: 32 + - OCPN_TARGET: jammy + - DEPLOY_USE_ORB: true + - BUILD_ENV=ubuntu + steps: + - checkout + - run: > + echo "deb-src http://us.archive.ubuntu.com/ubuntu/ jammy main" | sudo tee -a /etc/apt/sources.list + - run: > + echo "deb-src http://us.archive.ubuntu.com/ubuntu/ jammy-updates main" | sudo tee -a /etc/apt/sources.list + - run: > + echo "deb [trusted=yes] https://ppa.launchpadcontent.net/opencpn/opencpn/ubuntu/ jammy main" | sudo tee -a /etc/apt/sources.list + - run: cat /etc/apt/sources.list + - run: chmod a+x ci/*.sh + - run: ci/circleci-build-debian.sh + - deploy-code +## --------------------- +## OpenCPN 5.6.2 Plugins +## --------------------- + +## Appveyor doesn't build for Windows now. +## If below is used, WinXT will not work. + build-msvc-2022: + executor: + name: win/server-2022 + shell: cmd.exe + environment: + - OCPN_TARGET: MSVC + - MSVC_VERSION: 2022 + - WX_VER: 31 + - DEPLOY_USE_ORB: false + steps: + - checkout + - run: + privileged: False + shell: cmd.exe + command: ci\circleci-build-msvc.bat + - deploy-code: + deploy_use_orb: false + + diff --git a/.clang-format b/.clang-format new file mode 100644 index 0000000..f347591 --- /dev/null +++ b/.clang-format @@ -0,0 +1,182 @@ +--- +Language: Cpp +# BasedOnStyle: Google +# AccessModifierOffset: -1 +AlignAfterOpenBracket: Align +AlignConsecutiveMacros: false +AlignConsecutiveAssignments: false +AlignConsecutiveBitFields: false +AlignConsecutiveDeclarations: false +AlignEscapedNewlines: Left +AlignOperands: Align +AlignTrailingComments: true +AllowAllArgumentsOnNextLine: true +AllowAllConstructorInitializersOnNextLine: true +AllowAllParametersOfDeclarationOnNextLine: true +AllowShortEnumsOnASingleLine: true +AllowShortBlocksOnASingleLine: Never +AllowShortCaseLabelsOnASingleLine: false +AllowShortFunctionsOnASingleLine: All +AllowShortLambdasOnASingleLine: All +AllowShortIfStatementsOnASingleLine: WithoutElse +AllowShortLoopsOnASingleLine: true +AlwaysBreakAfterDefinitionReturnType: None +AlwaysBreakAfterReturnType: None +AlwaysBreakBeforeMultilineStrings: true +AlwaysBreakTemplateDeclarations: Yes +BinPackArguments: true +BinPackParameters: true +BraceWrapping: + AfterCaseLabel: false + AfterClass: false + AfterControlStatement: MultiLine + AfterEnum: false + AfterFunction: false + AfterNamespace: false + AfterObjCDeclaration: false + AfterStruct: false + AfterUnion: false + AfterExternBlock: false + BeforeCatch: false + BeforeElse: false + BeforeLambdaBody: false + BeforeWhile: false + IndentBraces: false + SplitEmptyFunction: true + SplitEmptyRecord: true + SplitEmptyNamespace: true +BreakBeforeBinaryOperators: None +BreakBeforeBraces: Attach +BreakBeforeInheritanceComma: false +BreakInheritanceList: BeforeColon +BreakBeforeTernaryOperators: true +BreakConstructorInitializersBeforeComma: false +BreakConstructorInitializers: BeforeColon +BreakAfterJavaFieldAnnotations: false +BreakStringLiterals: true +ColumnLimit: 80 +CommentPragmas: '^ IWYU pragma:' +CompactNamespaces: false +ConstructorInitializerAllOnOneLineOrOnePerLine: true +ConstructorInitializerIndentWidth: 4 +ContinuationIndentWidth: 4 +Cpp11BracedListStyle: true +DeriveLineEnding: true +DerivePointerAlignment: false +DisableFormat: false +ExperimentalAutoDetectBinPacking: false +FixNamespaceComments: true +ForEachMacros: + - foreach + - Q_FOREACH + - BOOST_FOREACH +IncludeBlocks: Regroup +IncludeCategories: + - Regex: '^' + Priority: 2 + SortPriority: 0 + - Regex: '^<.*\.h>' + Priority: 1 + SortPriority: 0 + - Regex: '^<.*' + Priority: 2 + SortPriority: 0 + - Regex: '.*' + Priority: 3 + SortPriority: 0 +IncludeIsMainRegex: '([-_](test|unittest))?$' +IncludeIsMainSourceRegex: '' +IndentCaseLabels: true +IndentCaseBlocks: false +IndentGotoLabels: true +IndentPPDirectives: None +IndentExternBlock: AfterExternBlock +IndentWidth: 2 +IndentWrappedFunctionNames: false +InsertTrailingCommas: None +JavaScriptQuotes: Leave +JavaScriptWrapImports: true +KeepEmptyLinesAtTheStartOfBlocks: false +MacroBlockBegin: '' +MacroBlockEnd: '' +MaxEmptyLinesToKeep: 1 +NamespaceIndentation: None +ObjCBinPackProtocolList: Never +ObjCBlockIndentWidth: 2 +ObjCBreakBeforeNestedBlockParam: true +ObjCSpaceAfterProperty: false +ObjCSpaceBeforeProtocolList: true +PenaltyBreakAssignment: 2 +PenaltyBreakBeforeFirstCallParameter: 1 +PenaltyBreakComment: 300 +PenaltyBreakFirstLessLess: 120 +PenaltyBreakString: 1000 +PenaltyBreakTemplateDeclaration: 10 +PenaltyExcessCharacter: 1000000 +PenaltyReturnTypeOnItsOwnLine: 200 +PointerAlignment: Left +RawStringFormats: + - Language: Cpp + Delimiters: + - cc + - CC + - cpp + - Cpp + - CPP + - 'c++' + - 'C++' + CanonicalDelimiter: '' + BasedOnStyle: google + - Language: TextProto + Delimiters: + - pb + - PB + - proto + - PROTO + EnclosingFunctions: + - EqualsProto + - EquivToProto + - PARSE_PARTIAL_TEXT_PROTO + - PARSE_TEST_PROTO + - PARSE_TEXT_PROTO + - ParseTextOrDie + - ParseTextProtoOrDie + - ParseTestProto + - ParsePartialTestProto + CanonicalDelimiter: '' + BasedOnStyle: google +ReflowComments: true +SortIncludes: false +SortUsingDeclarations: true +SpaceAfterCStyleCast: false +SpaceAfterLogicalNot: false +SpaceAfterTemplateKeyword: true +SpaceBeforeAssignmentOperators: true +SpaceBeforeCpp11BracedList: false +SpaceBeforeCtorInitializerColon: true +SpaceBeforeInheritanceColon: true +SpaceBeforeParens: ControlStatements +SpaceBeforeRangeBasedForLoopColon: true +SpaceInEmptyBlock: false +SpaceInEmptyParentheses: false +SpacesBeforeTrailingComments: 2 +SpacesInAngles: false +SpacesInConditionalStatement: false +SpacesInContainerLiterals: true +SpacesInCStyleCastParentheses: false +SpacesInParentheses: false +SpacesInSquareBrackets: false +SpaceBeforeSquareBrackets: false +Standard: Auto +StatementMacros: + - Q_UNUSED + - QT_REQUIRE_VERSION +TabWidth: 8 +UseCRLF: false +UseTab: Never +WhitespaceSensitiveMacros: + - STRINGIZE + - PP_STRINGIZE + - BOOST_PP_STRINGIZE +... + diff --git a/.cmake-format.yaml b/.cmake-format.yaml new file mode 100644 index 0000000..dcb6298 --- /dev/null +++ b/.cmake-format.yaml @@ -0,0 +1,33 @@ +additional_commands: + foo: + flags: + - BAR + - BAZ + kwargs: + DEPENDS: '*' + HEADERS: '*' + SOURCES: '*' +algorithm_order: +- 0 +- 1 +- 2 +- 3 +always_wrap: [] +bullet_char: '-' +command_case: lower +dangle_parens: true +emit_byteorder_mark: false +enable_markup: true +enum_char: . +#fence_pattern: ^\s*([`~]{3}[`~]*)(.*)$ +first_comment_is_literal: false +keyword_case: unchanged +line_ending: unix +line_width: 80 +literal_comment_pattern: null +max_subargs_per_line: 3 +per_command: {} +#ruler_pattern: ^\s*[^\w\s]{3}.*[^\w\s]{3}$ +separate_ctrl_name_with_space: true +separate_fn_name_with_space: false +tab_size: 2 diff --git a/.editorconfig b/.editorconfig new file mode 100644 index 0000000..8095603 --- /dev/null +++ b/.editorconfig @@ -0,0 +1,17 @@ +# For information on this file see: https://editorconfig.org + +root = true + +[*] +end_of_line = lf +insert_final_newline = true + +[*.{xml}] +charset = utf-8 + +[*.{cmake,cpp,h,sh,in,yml,xsd}] +charset = latin1 +indent_style = space +indent_size = 4 +trim_trailing_whitespace = true + diff --git a/.gitignore b/.gitignore index fd3149d..0ed3992 100644 --- a/.gitignore +++ b/.gitignore @@ -1,4 +1,10 @@ -build -buildwin -data/ -!data/*.svg +cmake-build* +.BATCH +.build +build/* +.directory +po/POTFILES.in.test +temp +tmp +master.zip +OCPNAndroidCommon* diff --git a/.gitmodules b/.gitmodules new file mode 100644 index 0000000..43e0770 --- /dev/null +++ b/.gitmodules @@ -0,0 +1,4 @@ +[submodule "opencpn-libs"] + path = opencpn-libs + url = https://github.com/OpenCPN/opencpn-libs.git + branch = main diff --git a/.travis.yml b/.travis.yml new file mode 100644 index 0000000..f4625ed --- /dev/null +++ b/.travis.yml @@ -0,0 +1,41 @@ +language: cpp + +matrix: + include: +# The following 2 env: sections are now being done in circleci but are left here for examples +# - env: +# - OCPN_TARGET=stretch-armhf +# - DOCKER_IMAGE=raspbian/stretch +# - BUILD_FLAGS="-j2" +# - BUILD_ENV=raspbian +# services: +# - docker +# before_script: +# - travis_wait 120 sleep infinity & bash ./ci/travis-build-raspbian-armhf-part1.sh +# script: +# - travis_wait 120 sleep infinity & bash ./ci/travis-build-raspbian-armhf-part2.sh +# - env: +# - OCPN_TARGET=buster-armhf +# - DOCKER_IMAGE=jongough/raspbian-buster:plugin_build_tooling_current +# - BUILD_FLAGS=-j2 +# - BUILD_ENV=raspbian +# services: +# - docker +# before_script: +# - travis_wait 120 sleep infinity & bash ./ci/travis-build-raspbian-armhf-part1.sh +# script: +# - travis_wait 120 sleep infinity & bash ./ci/travis-build-raspbian-armhf-part2.sh +# The following env: section is for arm64 has now been moved to run in circleci +# - env: +# - OCPN_TARGET=bionic-armh64 +# - BUILD_GTK3=true +# - DOCKER_IMAGE=arm64v8/ubuntu:18.04 +# - BUILD_FLAGS=-j2 +# - BUILD_ENV=ubuntu +# services: +# - docker +# before_script: +# - travis_wait 120 sleep infinity & bash ./ci/travis-build-raspbian-armhf-part1.sh +# script: +# - travis_wait 120 sleep infinity & bash ./ci/travis-build-raspbian-armhf-part2.sh +# - bash ./ci/cloudsmith-upload.sh diff --git a/CMakeLists.txt b/CMakeLists.txt index c01d876..556b051 100755 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1,25 +1,157 @@ ##--------------------------------------------------------------------------- -## Author: Sean D'Epagnier -## Copyright: -## License: GPLv3 -##--------------------------------------------------------------------------- - +## Author: Sean d'Epagnier +##*************************************************************************** +## * Copyright (C) 2010 by Sean d'Epagnier * +## * License: GPLv3+ +## * This program is free software; you can redistribute it and/or modify * +## * it under the terms of the GNU General Public License as published by * +## * the Free Software Foundation; either version 2 of the License, or * +## * (at your option) any later version. * +## * * +## * This program is distributed in the hope that it will be useful, * +## * but WITHOUT ANY WARRANTY; without even the implied warranty of * +## * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * +## * GNU General Public License for more details. * +## * * +## * You should have received a copy of the GNU General Public License * +## * along with this program; if not, write to the * +## * xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx, * +## * xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx * +#----------------------------------------------------------------------------- +# Frontend2 Author: Jon Gough Testplugin(TP) v1.0.326.0 18/01/2025 DD/MM/YYYY +# buildCI:yes useODAPI:no validateJSON:no +# --------------------------------------------------------------------------- +## -- When changing this file do NOT change the order of the sections. -- ## +## -- Make changes only between the section blocks identified -- ## +## -- The whole configuration process relies on this sequence for success.-- ## +## +## -- Modify section below to include all the details for your plugin. -- ## + +set(CMLOC "CMakeLists: ") # define minimum cmake version -CMAKE_MINIMUM_REQUIRED(VERSION 2.6.2) +cmake_minimum_required(VERSION 3.5.1) +if(COMMAND cmake_policy) + if (POLICY CMP0043) + cmake_policy(SET CMP0043 NEW) + endif (POLICY CMP0043) + cmake_policy(SET CMP0048 NEW) + if (POLICY CMP0076) + cmake_policy(SET CMP0076 NEW) + endif (POLICY CMP0076) + if (POLICY CMP0077) + cmake_policy(SET CMP0077 NEW) + endif (POLICY CMP0077) +endif (COMMAND cmake_policy) + + + + +# define plugin name, owner and versions +set(VERBOSE_NAME Celestial_Navigation) +set(COMMON_NAME "Celestial Navigation") +set(TITLE_NAME "CELESTIALNAVIGATION") +set(PACKAGE_CONTACT "Sean D'Epagnier ") +set(PACKAGE "celestial_navigation") +set(SHORT_DESCRIPTION "Celestial Navigation Plugin for OpenCPN") +set(LONG_DESCRIPTION "Nautical almanac: sun, moon, planets and navigational stars. Compute position fix from celestial measurements.") + +set(VERSION_MAJOR "2") +set(VERSION_MINOR "4") +set(VERSION_PATCH "43") +set(VERSION_TWEAK "0") +set(VERSION_DATE "21/01/2025" )# DD/MM/YYYY format +set(OCPN_MIN_VERSION "ov58") + +set(OCPN_API_VERSION_MAJOR "1") +set(OCPN_API_VERSION_MINOR "18") +set(TP_COMMENT " * Release using CI") + +set(PARENT "opencpn") + +#Use to set up a local webserver with git installed. +#Default is github.com. Now set in pluginconfigure.cmake +#set(GIT_REPOSITORY_SERVER "github.com") + +## Specifies Cloudsmith upload repository suffix for each catalog +set(PROD "prod") #Standard Repos +set(BETA "beta") #Standard Repos +set(ALPHA "alpha") #Standard Repos + +# Set if Cloudsmith Base Repository name does not match your Git Repository name. +#set(CLOUDSMITH_BASE_REPOSITORY "${GIT_REPOSITORY_NAME}") +#set(CLOUDSMITH_BASE_REPOSITORY "opencpn-plugins") #Ricks's customization +set (CLOUDSMITH_BASE_REPOSITORY "celestial-navigation") # without the pi + +# Set the following to use OpenCPN cloudsmith repositories instead of own repositories +set(CLOUDSMITH_USER "opencpn") +# set(CLOUDSMITH_USER "rick-gleason") + +set(XML_INFO_URL + "https://opencpn.org/OpenCPN/plugins/celestialnav.html" +) +set(XML_SUMMARY ${SHORT_DESCRIPTION}) +set(XML_DESCRIPTION ${LONG_DESCRIPTION}) + +## ----- Modify section above to include all the details for your plugin ------- ## +## ----- Modify section below if there are special requirements for the plugin --## -PROJECT(celestial_navigation_pi) +option(PLUGIN_USE_SVG "Use SVG graphics" ON) -SET(PACKAGE_NAME celestial_navigation_pi) -SET(VERBOSE_NAME CelestialNavigation) -SET(TITLE_NAME CELESTIALNAVIGATION) -SET(CPACK_PACKAGE_CONTACT "Sean D'Epagnier ") +set(CMAKE_CXX_STANDARD 11) -MESSAGE (STATUS "*** Building ${PACKAGE_NAME} ***") +set(OpenGL_GL_PREFERENCE "LEGACY") #not operational -INCLUDE("cmake/PluginConfigure.cmake") +option(USE_GL "Enable OpenGL support" ON) +message(STATUS "${CMLOC}USE_GL: ${USE_GL}") -SET(SRC_CELESTIAL_NAVIGATION +if ("${CMAKE_BUILD_TYPE}" STREQUAL "") + set(CMAKE_BUILD_TYPE + "Release" + CACHE STRING "Choose the type of build" FORCE + ) +endif ("${CMAKE_BUILD_TYPE}" STREQUAL "") +set_property( + CACHE CMAKE_BUILD_TYPE PROPERTY STRINGS "" "Debug" "Release" "RelWithDebInfo" + "MinSizeRel" +) +message(STATUS "${CMLOC}Build type: ${CMAKE_BUILD_TYPE}") + +# ----- Statements below used to setup standard variables required by the CMAKE -## +# ----- process -- Do not remove -## + +project(${PACKAGE}) + +set(CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/cmake") + +##======================================================== + +include("PluginSetup") + +##======================================================== +## ----- Above sets up standard variables required by CMAKE - Do not remove -----## +## ----- Modify section below if there are special requirements for the plugin --## + +set(CMAKE_VERBOSE_MAKEFILE "Activate verbose mode for make files" ON) + +option(Plugin_CXX11 "Use c++11" OFF) + +## ----- Modify section above if there are special requirements for the plugin --## +## ----- Do not change next section - needed to configure build process ---------## +##=========================================================== + +include("PluginConfigure") + +##=========================================================== +## ----- Do not change section above - needed to configure build process --------## +## ----- Change below to match project requirements for source, headers, etc. ---## + +add_definitions(-DUSE_S57) + +## ---- Section Below - Add your project SET(SRCS and SET(HDRS etc.. + +SET(SRCS + src/astrolabe/astrolabe.hpp src/astrolabe/calendar.cpp src/astrolabe/dicts.cpp src/astrolabe/dynamical.cpp @@ -44,14 +176,117 @@ SET(SRC_CELESTIAL_NAVIGATION src/transform_star.cpp src/epv00.cpp src/celestial_navigation_pi.cpp - src/zuFile.cpp ) -INCLUDE("cmake/PluginXML.cmake") -INCLUDE("cmake/PluginGL.cmake") +SET(HDRS + src/celestial_navigation_pi.h + src/CelestialNavigationDialog.h + src/CelestialNavigationUI.h + src/ClockCorrectionDialog.h + src/FindBodyDialog.h + src/FixDialog.h + src/geodesic.h + src/icons.h + src/Sight.h + src/SightDialog.h + ) + +add_definitions(-DPLUGIN_USE_SVG) + +## ----- Section above - Add your project SET(SRCS and SET(HDRS etc.-------## +## ----- If using JSON validation in plugin section below is needed --------## + +# Do not need Json Schema Validation + +## ----- If using JSON validation in plugin section above is needed --------## + + +##============================================================= +## Change as required to collect all the set( headers and SRCS +## This add_library can be used in conditionals below. +##============================================================= + +set(SRC ${SRCS} ${HDRS} ) + +##============================================================= +## Modify/configure 'Include' Directories below for the Plugin +##============================================================= + +# Private include_directories +include_directories(BEFORE ${PROJECT_SOURCE_DIR}/src/astrolabe) +include_directories(BEFORE ${PROJECT_SOURCE_DIR}/src/geomag) + + +## Change target_sources to match your project needs. +##============================================================== + +target_sources(${PACKAGE_NAME} PUBLIC ${SRC} ) + +## Change target_sources to match your project needs. +##============================================================== + +if (NOT OCPN_FLATPAK_CONFIG) + # Build environment not available when flatpak is being configured so + # following statements will not work + message(STATUS "${CMLOC}Adding target link libraries to ${PACKAGE_NAME}") + + if (WIN32) + add_subdirectory(opencpn-libs/WindowsHeaders) + target_link_libraries(${PACKAGE_NAME} windows::headers) + endif (WIN32) + + add_subdirectory(opencpn-libs/api-18) + target_link_libraries(${PACKAGE_NAME} ocpn::api) + + add_subdirectory(opencpn-libs/tinyxml) + target_link_libraries(${PACKAGE_NAME} ocpn::tinyxml) + + add_subdirectory(opencpn-libs/jsoncpp) + target_link_libraries(${PACKAGE_NAME} ocpn::jsoncpp) + + add_subdirectory(opencpn-libs/wxJSON) + target_link_libraries(${PACKAGE_NAME} ocpn::wxjson) + + add_subdirectory(opencpn-libs/plugin_dc) + target_link_libraries(${PACKAGE_NAME} ocpn::plugin-dc) + + add_subdirectory(opencpn-libs/bzip2) + target_link_libraries(${PACKAGE_NAME} ocpn::bzip2) + +endif (NOT OCPN_FLATPAK_CONFIG) + +add_definitions(-DTIXML_USE_STL) + +## +## ----- If using JSON validation section below is needed ---------------## +## + +# Do not need Json Schema Validation + + +##------- Change below to match project requirements --------------------## + +# Needed for android builds +if (QT_ANDROID) + include_directories(BEFORE ${qt_android_include}) +endif (QT_ANDROID) + +## Needed for all builds Do not change - needed to build app -------------## +##=============================================================== + +include("PluginInstall") +include("PluginLocalization") +include("PluginPackage") -ADD_LIBRARY(${PACKAGE_NAME} SHARED ${SRC_CELESTIAL_NAVIGATION} ${SRC_TINYXML} ${SRC_PLUGINGL}) +##================================================================ +## ----- Do not change section above - needed to configure build process --## -INCLUDE("cmake/PluginInstall.cmake") -INCLUDE("cmake/PluginLocalization.cmake") -INCLUDE("cmake/PluginPackage.cmake") +message(STATUS "${CMLOC}include directories: ") +get_property( + dirs + DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} + PROPERTY INCLUDE_DIRECTORIES +) +foreach (dir ${dirs}) + message(STATUS "${CMLOC}dir='${dir}'") +endforeach () diff --git a/CelestialNavigation.fbp b/CelestialNavigation.fbp index 7042abb..21b9990 100755 --- a/CelestialNavigation.fbp +++ b/CelestialNavigation.fbp @@ -14,7 +14,6 @@ CelestialNavigationUI 1000 none - 1 CelestialNavigation @@ -590,93 +589,6 @@ - - 5 - wxALL|wxEXPAND - 0 - - 1 - 1 - 1 - 1 - - - - - - - - 1 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 1 - - 1 - - 0 - 0 - wxID_ANY - Hide - - 0 - - - 0 - -1,-1 - 1 - m_tbHide - 1 - - - protected - 1 - - Resizable - 1 - - - 0 - - - wxFILTER_NONE - wxDefaultValidator - - 0 - - - - - - - - - - - - - - - - - - - - - - - - - - OnHide - - - 5 wxALL|wxEXPAND @@ -769,7 +681,7 @@ 5 wxALL|wxEXPAND 0 - + 1 1 1 @@ -786,7 +698,6 @@ 1 1 - 0 0 Dock 0 @@ -798,15 +709,15 @@ 0 0 wxID_ANY - Information + Hide 0 0 - + -1,-1 1 - m_bInformation + m_tbHide 1 @@ -816,7 +727,6 @@ Resizable 1 - 0 @@ -824,10 +734,10 @@ wxFILTER_NONE wxDefaultValidator + 0 - OnInformation @@ -850,6 +760,7 @@ + OnHide @@ -941,11 +852,11 @@ - + 5 - wxALL + wxALL|wxEXPAND 0 - + 1 1 1 @@ -974,7 +885,7 @@ 0 0 wxID_ANY - Close + Information 0 @@ -982,7 +893,7 @@ 0 1 - m_bClose + m_bInformation 1 @@ -993,7 +904,7 @@ 1 - ; forward_declare + 0 @@ -1003,7 +914,7 @@ - OnClose + OnInformation @@ -1011,7 +922,7 @@ - OnClose + diff --git a/LICENSE b/LICENSE new file mode 100644 index 0000000..94a9ed0 --- /dev/null +++ b/LICENSE @@ -0,0 +1,674 @@ + GNU GENERAL PUBLIC LICENSE + Version 3, 29 June 2007 + + Copyright (C) 2007 Free Software Foundation, Inc. + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + Preamble + + The GNU General Public License is a free, copyleft license for +software and other kinds of works. + + The licenses for most software and other practical works are designed +to take away your freedom to share and change the works. By contrast, +the GNU General Public License is intended to guarantee your freedom to +share and change all versions of a program--to make sure it remains free +software for all its users. We, the Free Software Foundation, use the +GNU General Public License for most of our software; it applies also to +any other work released this way by its authors. You can apply it to +your programs, too. + + When we speak of free software, we are referring to freedom, not +price. Our General Public Licenses are designed to make sure that you +have the freedom to distribute copies of free software (and charge for +them if you wish), that you receive source code or can get it if you +want it, that you can change the software or use pieces of it in new +free programs, and that you know you can do these things. + + To protect your rights, we need to prevent others from denying you +these rights or asking you to surrender the rights. Therefore, you have +certain responsibilities if you distribute copies of the software, or if +you modify it: responsibilities to respect the freedom of others. + + For example, if you distribute copies of such a program, whether +gratis or for a fee, you must pass on to the recipients the same +freedoms that you received. You must make sure that they, too, receive +or can get the source code. And you must show them these terms so they +know their rights. + + Developers that use the GNU GPL protect your rights with two steps: +(1) assert copyright on the software, and (2) offer you this License +giving you legal permission to copy, distribute and/or modify it. + + For the developers' and authors' protection, the GPL clearly explains +that there is no warranty for this free software. For both users' and +authors' sake, the GPL requires that modified versions be marked as +changed, so that their problems will not be attributed erroneously to +authors of previous versions. + + Some devices are designed to deny users access to install or run +modified versions of the software inside them, although the manufacturer +can do so. This is fundamentally incompatible with the aim of +protecting users' freedom to change the software. The systematic +pattern of such abuse occurs in the area of products for individuals to +use, which is precisely where it is most unacceptable. Therefore, we +have designed this version of the GPL to prohibit the practice for those +products. If such problems arise substantially in other domains, we +stand ready to extend this provision to those domains in future versions +of the GPL, as needed to protect the freedom of users. + + Finally, every program is threatened constantly by software patents. +States should not allow patents to restrict development and use of +software on general-purpose computers, but in those that do, we wish to +avoid the special danger that patents applied to a free program could +make it effectively proprietary. To prevent this, the GPL assures that +patents cannot be used to render the program non-free. + + The precise terms and conditions for copying, distribution and +modification follow. + + TERMS AND CONDITIONS + + 0. Definitions. + + "This License" refers to version 3 of the GNU General Public License. + + "Copyright" also means copyright-like laws that apply to other kinds of +works, such as semiconductor masks. + + "The Program" refers to any copyrightable work licensed under this +License. Each licensee is addressed as "you". "Licensees" and +"recipients" may be individuals or organizations. + + To "modify" a work means to copy from or adapt all or part of the work +in a fashion requiring copyright permission, other than the making of an +exact copy. The resulting work is called a "modified version" of the +earlier work or a work "based on" the earlier work. + + A "covered work" means either the unmodified Program or a work based +on the Program. + + To "propagate" a work means to do anything with it that, without +permission, would make you directly or secondarily liable for +infringement under applicable copyright law, except executing it on a +computer or modifying a private copy. Propagation includes copying, +distribution (with or without modification), making available to the +public, and in some countries other activities as well. + + To "convey" a work means any kind of propagation that enables other +parties to make or receive copies. Mere interaction with a user through +a computer network, with no transfer of a copy, is not conveying. + + An interactive user interface displays "Appropriate Legal Notices" +to the extent that it includes a convenient and prominently visible +feature that (1) displays an appropriate copyright notice, and (2) +tells the user that there is no warranty for the work (except to the +extent that warranties are provided), that licensees may convey the +work under this License, and how to view a copy of this License. If +the interface presents a list of user commands or options, such as a +menu, a prominent item in the list meets this criterion. + + 1. Source Code. + + The "source code" for a work means the preferred form of the work +for making modifications to it. "Object code" means any non-source +form of a work. + + A "Standard Interface" means an interface that either is an official +standard defined by a recognized standards body, or, in the case of +interfaces specified for a particular programming language, one that +is widely used among developers working in that language. + + The "System Libraries" of an executable work include anything, other +than the work as a whole, that (a) is included in the normal form of +packaging a Major Component, but which is not part of that Major +Component, and (b) serves only to enable use of the work with that +Major Component, or to implement a Standard Interface for which an +implementation is available to the public in source code form. A +"Major Component", in this context, means a major essential component +(kernel, window system, and so on) of the specific operating system +(if any) on which the executable work runs, or a compiler used to +produce the work, or an object code interpreter used to run it. + + The "Corresponding Source" for a work in object code form means all +the source code needed to generate, install, and (for an executable +work) run the object code and to modify the work, including scripts to +control those activities. However, it does not include the work's +System Libraries, or general-purpose tools or generally available free +programs which are used unmodified in performing those activities but +which are not part of the work. For example, Corresponding Source +includes interface definition files associated with source files for +the work, and the source code for shared libraries and dynamically +linked subprograms that the work is specifically designed to require, +such as by intimate data communication or control flow between those +subprograms and other parts of the work. + + The Corresponding Source need not include anything that users +can regenerate automatically from other parts of the Corresponding +Source. + + The Corresponding Source for a work in source code form is that +same work. + + 2. Basic Permissions. + + All rights granted under this License are granted for the term of +copyright on the Program, and are irrevocable provided the stated +conditions are met. This License explicitly affirms your unlimited +permission to run the unmodified Program. The output from running a +covered work is covered by this License only if the output, given its +content, constitutes a covered work. This License acknowledges your +rights of fair use or other equivalent, as provided by copyright law. + + You may make, run and propagate covered works that you do not +convey, without conditions so long as your license otherwise remains +in force. You may convey covered works to others for the sole purpose +of having them make modifications exclusively for you, or provide you +with facilities for running those works, provided that you comply with +the terms of this License in conveying all material for which you do +not control copyright. Those thus making or running the covered works +for you must do so exclusively on your behalf, under your direction +and control, on terms that prohibit them from making any copies of +your copyrighted material outside their relationship with you. + + Conveying under any other circumstances is permitted solely under +the conditions stated below. Sublicensing is not allowed; section 10 +makes it unnecessary. + + 3. Protecting Users' Legal Rights From Anti-Circumvention Law. + + No covered work shall be deemed part of an effective technological +measure under any applicable law fulfilling obligations under article +11 of the WIPO copyright treaty adopted on 20 December 1996, or +similar laws prohibiting or restricting circumvention of such +measures. + + When you convey a covered work, you waive any legal power to forbid +circumvention of technological measures to the extent such circumvention +is effected by exercising rights under this License with respect to +the covered work, and you disclaim any intention to limit operation or +modification of the work as a means of enforcing, against the work's +users, your or third parties' legal rights to forbid circumvention of +technological measures. + + 4. Conveying Verbatim Copies. + + You may convey verbatim copies of the Program's source code as you +receive it, in any medium, provided that you conspicuously and +appropriately publish on each copy an appropriate copyright notice; +keep intact all notices stating that this License and any +non-permissive terms added in accord with section 7 apply to the code; +keep intact all notices of the absence of any warranty; and give all +recipients a copy of this License along with the Program. + + You may charge any price or no price for each copy that you convey, +and you may offer support or warranty protection for a fee. + + 5. Conveying Modified Source Versions. + + You may convey a work based on the Program, or the modifications to +produce it from the Program, in the form of source code under the +terms of section 4, provided that you also meet all of these conditions: + + a) The work must carry prominent notices stating that you modified + it, and giving a relevant date. + + b) The work must carry prominent notices stating that it is + released under this License and any conditions added under section + 7. This requirement modifies the requirement in section 4 to + "keep intact all notices". + + c) You must license the entire work, as a whole, under this + License to anyone who comes into possession of a copy. This + License will therefore apply, along with any applicable section 7 + additional terms, to the whole of the work, and all its parts, + regardless of how they are packaged. This License gives no + permission to license the work in any other way, but it does not + invalidate such permission if you have separately received it. + + d) If the work has interactive user interfaces, each must display + Appropriate Legal Notices; however, if the Program has interactive + interfaces that do not display Appropriate Legal Notices, your + work need not make them do so. + + A compilation of a covered work with other separate and independent +works, which are not by their nature extensions of the covered work, +and which are not combined with it such as to form a larger program, +in or on a volume of a storage or distribution medium, is called an +"aggregate" if the compilation and its resulting copyright are not +used to limit the access or legal rights of the compilation's users +beyond what the individual works permit. Inclusion of a covered work +in an aggregate does not cause this License to apply to the other +parts of the aggregate. + + 6. Conveying Non-Source Forms. + + You may convey a covered work in object code form under the terms +of sections 4 and 5, provided that you also convey the +machine-readable Corresponding Source under the terms of this License, +in one of these ways: + + a) Convey the object code in, or embodied in, a physical product + (including a physical distribution medium), accompanied by the + Corresponding Source fixed on a durable physical medium + customarily used for software interchange. + + b) Convey the object code in, or embodied in, a physical product + (including a physical distribution medium), accompanied by a + written offer, valid for at least three years and valid for as + long as you offer spare parts or customer support for that product + model, to give anyone who possesses the object code either (1) a + copy of the Corresponding Source for all the software in the + product that is covered by this License, on a durable physical + medium customarily used for software interchange, for a price no + more than your reasonable cost of physically performing this + conveying of source, or (2) access to copy the + Corresponding Source from a network server at no charge. + + c) Convey individual copies of the object code with a copy of the + written offer to provide the Corresponding Source. This + alternative is allowed only occasionally and noncommercially, and + only if you received the object code with such an offer, in accord + with subsection 6b. + + d) Convey the object code by offering access from a designated + place (gratis or for a charge), and offer equivalent access to the + Corresponding Source in the same way through the same place at no + further charge. You need not require recipients to copy the + Corresponding Source along with the object code. If the place to + copy the object code is a network server, the Corresponding Source + may be on a different server (operated by you or a third party) + that supports equivalent copying facilities, provided you maintain + clear directions next to the object code saying where to find the + Corresponding Source. Regardless of what server hosts the + Corresponding Source, you remain obligated to ensure that it is + available for as long as needed to satisfy these requirements. + + e) Convey the object code using peer-to-peer transmission, provided + you inform other peers where the object code and Corresponding + Source of the work are being offered to the general public at no + charge under subsection 6d. + + A separable portion of the object code, whose source code is excluded +from the Corresponding Source as a System Library, need not be +included in conveying the object code work. + + A "User Product" is either (1) a "consumer product", which means any +tangible personal property which is normally used for personal, family, +or household purposes, or (2) anything designed or sold for incorporation +into a dwelling. In determining whether a product is a consumer product, +doubtful cases shall be resolved in favor of coverage. For a particular +product received by a particular user, "normally used" refers to a +typical or common use of that class of product, regardless of the status +of the particular user or of the way in which the particular user +actually uses, or expects or is expected to use, the product. A product +is a consumer product regardless of whether the product has substantial +commercial, industrial or non-consumer uses, unless such uses represent +the only significant mode of use of the product. + + "Installation Information" for a User Product means any methods, +procedures, authorization keys, or other information required to install +and execute modified versions of a covered work in that User Product from +a modified version of its Corresponding Source. The information must +suffice to ensure that the continued functioning of the modified object +code is in no case prevented or interfered with solely because +modification has been made. + + If you convey an object code work under this section in, or with, or +specifically for use in, a User Product, and the conveying occurs as +part of a transaction in which the right of possession and use of the +User Product is transferred to the recipient in perpetuity or for a +fixed term (regardless of how the transaction is characterized), the +Corresponding Source conveyed under this section must be accompanied +by the Installation Information. But this requirement does not apply +if neither you nor any third party retains the ability to install +modified object code on the User Product (for example, the work has +been installed in ROM). + + The requirement to provide Installation Information does not include a +requirement to continue to provide support service, warranty, or updates +for a work that has been modified or installed by the recipient, or for +the User Product in which it has been modified or installed. Access to a +network may be denied when the modification itself materially and +adversely affects the operation of the network or violates the rules and +protocols for communication across the network. + + Corresponding Source conveyed, and Installation Information provided, +in accord with this section must be in a format that is publicly +documented (and with an implementation available to the public in +source code form), and must require no special password or key for +unpacking, reading or copying. + + 7. Additional Terms. + + "Additional permissions" are terms that supplement the terms of this +License by making exceptions from one or more of its conditions. +Additional permissions that are applicable to the entire Program shall +be treated as though they were included in this License, to the extent +that they are valid under applicable law. If additional permissions +apply only to part of the Program, that part may be used separately +under those permissions, but the entire Program remains governed by +this License without regard to the additional permissions. + + When you convey a copy of a covered work, you may at your option +remove any additional permissions from that copy, or from any part of +it. (Additional permissions may be written to require their own +removal in certain cases when you modify the work.) You may place +additional permissions on material, added by you to a covered work, +for which you have or can give appropriate copyright permission. + + Notwithstanding any other provision of this License, for material you +add to a covered work, you may (if authorized by the copyright holders of +that material) supplement the terms of this License with terms: + + a) Disclaiming warranty or limiting liability differently from the + terms of sections 15 and 16 of this License; or + + b) Requiring preservation of specified reasonable legal notices or + author attributions in that material or in the Appropriate Legal + Notices displayed by works containing it; or + + c) Prohibiting misrepresentation of the origin of that material, or + requiring that modified versions of such material be marked in + reasonable ways as different from the original version; or + + d) Limiting the use for publicity purposes of names of licensors or + authors of the material; or + + e) Declining to grant rights under trademark law for use of some + trade names, trademarks, or service marks; or + + f) Requiring indemnification of licensors and authors of that + material by anyone who conveys the material (or modified versions of + it) with contractual assumptions of liability to the recipient, for + any liability that these contractual assumptions directly impose on + those licensors and authors. + + All other non-permissive additional terms are considered "further +restrictions" within the meaning of section 10. If the Program as you +received it, or any part of it, contains a notice stating that it is +governed by this License along with a term that is a further +restriction, you may remove that term. If a license document contains +a further restriction but permits relicensing or conveying under this +License, you may add to a covered work material governed by the terms +of that license document, provided that the further restriction does +not survive such relicensing or conveying. + + If you add terms to a covered work in accord with this section, you +must place, in the relevant source files, a statement of the +additional terms that apply to those files, or a notice indicating +where to find the applicable terms. + + Additional terms, permissive or non-permissive, may be stated in the +form of a separately written license, or stated as exceptions; +the above requirements apply either way. + + 8. Termination. + + You may not propagate or modify a covered work except as expressly +provided under this License. Any attempt otherwise to propagate or +modify it is void, and will automatically terminate your rights under +this License (including any patent licenses granted under the third +paragraph of section 11). + + However, if you cease all violation of this License, then your +license from a particular copyright holder is reinstated (a) +provisionally, unless and until the copyright holder explicitly and +finally terminates your license, and (b) permanently, if the copyright +holder fails to notify you of the violation by some reasonable means +prior to 60 days after the cessation. + + Moreover, your license from a particular copyright holder is +reinstated permanently if the copyright holder notifies you of the +violation by some reasonable means, this is the first time you have +received notice of violation of this License (for any work) from that +copyright holder, and you cure the violation prior to 30 days after +your receipt of the notice. + + Termination of your rights under this section does not terminate the +licenses of parties who have received copies or rights from you under +this License. If your rights have been terminated and not permanently +reinstated, you do not qualify to receive new licenses for the same +material under section 10. + + 9. Acceptance Not Required for Having Copies. + + You are not required to accept this License in order to receive or +run a copy of the Program. Ancillary propagation of a covered work +occurring solely as a consequence of using peer-to-peer transmission +to receive a copy likewise does not require acceptance. However, +nothing other than this License grants you permission to propagate or +modify any covered work. These actions infringe copyright if you do +not accept this License. Therefore, by modifying or propagating a +covered work, you indicate your acceptance of this License to do so. + + 10. Automatic Licensing of Downstream Recipients. + + Each time you convey a covered work, the recipient automatically +receives a license from the original licensors, to run, modify and +propagate that work, subject to this License. You are not responsible +for enforcing compliance by third parties with this License. + + An "entity transaction" is a transaction transferring control of an +organization, or substantially all assets of one, or subdividing an +organization, or merging organizations. If propagation of a covered +work results from an entity transaction, each party to that +transaction who receives a copy of the work also receives whatever +licenses to the work the party's predecessor in interest had or could +give under the previous paragraph, plus a right to possession of the +Corresponding Source of the work from the predecessor in interest, if +the predecessor has it or can get it with reasonable efforts. + + You may not impose any further restrictions on the exercise of the +rights granted or affirmed under this License. For example, you may +not impose a license fee, royalty, or other charge for exercise of +rights granted under this License, and you may not initiate litigation +(including a cross-claim or counterclaim in a lawsuit) alleging that +any patent claim is infringed by making, using, selling, offering for +sale, or importing the Program or any portion of it. + + 11. Patents. + + A "contributor" is a copyright holder who authorizes use under this +License of the Program or a work on which the Program is based. The +work thus licensed is called the contributor's "contributor version". + + A contributor's "essential patent claims" are all patent claims +owned or controlled by the contributor, whether already acquired or +hereafter acquired, that would be infringed by some manner, permitted +by this License, of making, using, or selling its contributor version, +but do not include claims that would be infringed only as a +consequence of further modification of the contributor version. For +purposes of this definition, "control" includes the right to grant +patent sublicenses in a manner consistent with the requirements of +this License. + + Each contributor grants you a non-exclusive, worldwide, royalty-free +patent license under the contributor's essential patent claims, to +make, use, sell, offer for sale, import and otherwise run, modify and +propagate the contents of its contributor version. + + In the following three paragraphs, a "patent license" is any express +agreement or commitment, however denominated, not to enforce a patent +(such as an express permission to practice a patent or covenant not to +sue for patent infringement). To "grant" such a patent license to a +party means to make such an agreement or commitment not to enforce a +patent against the party. + + If you convey a covered work, knowingly relying on a patent license, +and the Corresponding Source of the work is not available for anyone +to copy, free of charge and under the terms of this License, through a +publicly available network server or other readily accessible means, +then you must either (1) cause the Corresponding Source to be so +available, or (2) arrange to deprive yourself of the benefit of the +patent license for this particular work, or (3) arrange, in a manner +consistent with the requirements of this License, to extend the patent +license to downstream recipients. "Knowingly relying" means you have +actual knowledge that, but for the patent license, your conveying the +covered work in a country, or your recipient's use of the covered work +in a country, would infringe one or more identifiable patents in that +country that you have reason to believe are valid. + + If, pursuant to or in connection with a single transaction or +arrangement, you convey, or propagate by procuring conveyance of, a +covered work, and grant a patent license to some of the parties +receiving the covered work authorizing them to use, propagate, modify +or convey a specific copy of the covered work, then the patent license +you grant is automatically extended to all recipients of the covered +work and works based on it. + + A patent license is "discriminatory" if it does not include within +the scope of its coverage, prohibits the exercise of, or is +conditioned on the non-exercise of one or more of the rights that are +specifically granted under this License. You may not convey a covered +work if you are a party to an arrangement with a third party that is +in the business of distributing software, under which you make payment +to the third party based on the extent of your activity of conveying +the work, and under which the third party grants, to any of the +parties who would receive the covered work from you, a discriminatory +patent license (a) in connection with copies of the covered work +conveyed by you (or copies made from those copies), or (b) primarily +for and in connection with specific products or compilations that +contain the covered work, unless you entered into that arrangement, +or that patent license was granted, prior to 28 March 2007. + + Nothing in this License shall be construed as excluding or limiting +any implied license or other defenses to infringement that may +otherwise be available to you under applicable patent law. + + 12. No Surrender of Others' Freedom. + + If conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not +excuse you from the conditions of this License. If you cannot convey a +covered work so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you may +not convey it at all. For example, if you agree to terms that obligate you +to collect a royalty for further conveying from those to whom you convey +the Program, the only way you could satisfy both those terms and this +License would be to refrain entirely from conveying the Program. + + 13. Use with the GNU Affero General Public License. + + Notwithstanding any other provision of this License, you have +permission to link or combine any covered work with a work licensed +under version 3 of the GNU Affero General Public License into a single +combined work, and to convey the resulting work. The terms of this +License will continue to apply to the part which is the covered work, +but the special requirements of the GNU Affero General Public License, +section 13, concerning interaction through a network will apply to the +combination as such. + + 14. Revised Versions of this License. + + The Free Software Foundation may publish revised and/or new versions of +the GNU General Public License from time to time. Such new versions will +be similar in spirit to the present version, but may differ in detail to +address new problems or concerns. + + Each version is given a distinguishing version number. If the +Program specifies that a certain numbered version of the GNU General +Public License "or any later version" applies to it, you have the +option of following the terms and conditions either of that numbered +version or of any later version published by the Free Software +Foundation. If the Program does not specify a version number of the +GNU General Public License, you may choose any version ever published +by the Free Software Foundation. + + If the Program specifies that a proxy can decide which future +versions of the GNU General Public License can be used, that proxy's +public statement of acceptance of a version permanently authorizes you +to choose that version for the Program. + + Later license versions may give you additional or different +permissions. However, no additional obligations are imposed on any +author or copyright holder as a result of your choosing to follow a +later version. + + 15. Disclaimer of Warranty. + + THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY +APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT +HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY +OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, +THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM +IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF +ALL NECESSARY SERVICING, REPAIR OR CORRECTION. + + 16. Limitation of Liability. + + IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING +WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS +THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY +GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE +USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF +DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD +PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), +EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF +SUCH DAMAGES. + + 17. Interpretation of Sections 15 and 16. + + If the disclaimer of warranty and limitation of liability provided +above cannot be given local legal effect according to their terms, +reviewing courts shall apply local law that most closely approximates +an absolute waiver of all civil liability in connection with the +Program, unless a warranty or assumption of liability accompanies a +copy of the Program in return for a fee. + + END OF TERMS AND CONDITIONS + + How to Apply These Terms to Your New Programs + + If you develop a new program, and you want it to be of the greatest +possible use to the public, the best way to achieve this is to make it +free software which everyone can redistribute and change under these terms. + + To do so, attach the following notices to the program. It is safest +to attach them to the start of each source file to most effectively +state the exclusion of warranty; and each file should have at least +the "copyright" line and a pointer to where the full notice is found. + + + Copyright (C) + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . + +Also add information on how to contact you by electronic and paper mail. + + If the program does terminal interaction, make it output a short +notice like this when it starts in an interactive mode: + + Copyright (C) + This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'. + This is free software, and you are welcome to redistribute it + under certain conditions; type `show c' for details. + +The hypothetical commands `show w' and `show c' should show the appropriate +parts of the General Public License. Of course, your program's commands +might be different; for a GUI interface, you would use an "about box". + + You should also get your employer (if you work as a programmer) or school, +if any, to sign a "copyright disclaimer" for the program, if necessary. +For more information on this, and how to apply and follow the GNU GPL, see +. + + The GNU General Public License does not permit incorporating your program +into proprietary programs. If your program is a subroutine library, you +may consider it more useful to permit linking proprietary applications with +the library. If this is what you want to do, use the GNU Lesser General +Public License instead of this License. But first, please read +. diff --git a/README b/README.md old mode 100755 new mode 100644 similarity index 75% rename from README rename to README.md index 967caf2..a18a988 --- a/README +++ b/README.md @@ -3,6 +3,10 @@ Celestial Navigation Plugin for OpenCPN automatically perform sight reductions, and plot position from celestial sights. +Source Repository: https://github.com/seandepagnier/celestial_navigation_pi +Maintainence Repository: https://github.com/rgleason/celestial_navigation_pi +Please make PR's to both repositories. Thank you. + Compiling ========= diff --git a/VERSION.cmake b/VERSION.cmake deleted file mode 100644 index 0bc9199..0000000 --- a/VERSION.cmake +++ /dev/null @@ -1,4 +0,0 @@ -SET(PLUGIN_VERSION_MAJOR "2") -SET(PLUGIN_VERSION_MINOR "3") -SET(PLUGIN_VERSION_PATCH "") -SET(PLUGIN_VERSION_DATE "2018-3-29") diff --git a/appveyor.yml b/appveyor.yml index 77a744a..a5df9ac 100644 --- a/appveyor.yml +++ b/appveyor.yml @@ -1,64 +1,102 @@ -clone_folder: c:\project\celestial_navigation_pi -shallow_clone: true -image: -- Visual Studio 2015 +clone_folder: c:\project\ocpn_project +shallow_clone: false +clone_depth: 10 -platform: -# - x64 -- Win32 + +platform: +# - x64 +# - Win32 configuration: Release test: OFF -install: - - '"C:\Program Files\Microsoft SDKs\Windows\v7.1\Bin\SetEnv.cmd" /x86' +environment: + OCPN_TARGET: MSVC + +# use enviornment matrix with job_name to allow build of one or more environments + matrix: + - job_name: Visual Studio 2017 + APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2017 + +## This can be built in Circleci and is currently the FE2 default +## +# - job_name: Visual Studio 2022 +# APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2022 + + +matrix: +# allow either job to fail and the other to complete + fast_finish: false - # sent environment variables for wxWidgets - - set WXWIN=C:\wxWidgets-3.0.2 - - set wxWidgets_ROOT_DIR=%WXWIN% - - set wxWidgets_LIB_DIR=%WXWIN%\lib\vc_dll - - cmd: SET PATH=%PATH%;%WXWIN%;%wxWidgets_LIB_DIR%;C:\Program Files (x86)\Poedit\Gettexttools\bin; +init: + - appveyor version + +for: +- + matrix: + only: + - job_name: Visual Studio 2017 + install: + - call "C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Auxiliary\Build\vcvars32.bat" + - set WX_VER= + - set WXWIN=c:\wxWidgets-3.1.2 + - set wxWidgets_ROOT_DIR=%WXWIN% + - set wxWidgets_LIB_DIR=%WXWIN%\lib\vc_dll + - set cmake_parms=-T v141_xp + - SET PATH=%PATH%;%WXWIN%;%wxWidgets_LIB_DIR%;C:\Program Files (x86)\Poedit\Gettexttools\bin # install dependencies: - - choco install poedit nsis -x86 + - choco install poedit + - choco install git + + - ps: Start-FileDownload https://download.opencpn.org/s/54HsBDLNzRZLL6i/download -FileName nsis-3.04-setup.exe + - cmd: nsis-3.04-setup.exe /S # Download and unzip wxwidgets - - ps: Start-FileDownload http://downloads.sourceforge.net/project/wxwindows/3.0.2/wxWidgets-3.0.2.zip - - cmd: 7z x wxwidgets-3.0.2.zip -o%WXWIN% > null + - ps: Start-FileDownload https://download.opencpn.org/s/E2p4nLDzeqx4SdX/download -FileName wxWidgets-3.1.2.7z + - cmd: 7z x wxWidgets-3.1.2.7z -o%WXWIN% > null - # some debugging information - - set - # - cmake --help +- + matrix: + only: + - job_name: Visual Studio 2022 + install: + - call "C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Auxiliary\Build\vcvars32.bat" + - set WX_VER=32 + - set WXWIN=C:\wxWidgets-3.2.1 + - set wxWidgets_ROOT_DIR=%WXWIN% + - set wxWidgets_LIB_DIR=%WXWIN%\lib\vc_dll + - set cmake_parms=-A Win32 + - SET PATH=%PATH%;%WXWIN%;%wxWidgets_LIB_DIR%;C:\Program Files\Poedit\Gettexttools\bin - # build wxWidgets - - cmd: cd %WXWIN%\build\msw\ - - cmd: nmake -f makefile.vc BUILD=release SHARED=1 CFLAGS=/D_USING_V120_SDK71_ CXXFLAGS=/D_USING_V120_SDK71_ - - cmd: nmake -f makefile.vc BUILD=debug SHARED=1 CFLAGS=/D_USING_V120_SDK71_ CXXFLAGS=/D_USING_V120_SDK71_ + # install dependencies: + - choco install poedit + - choco install git + - choco install wget + + # Download and unzip wxwidgets + - wget -nv https://github.com/wxWidgets/wxWidgets/releases/download/v3.2.1/wxMSW-3.2.1_vc14x_Dev.7z + - wget -nv https://github.com/wxWidgets/wxWidgets/releases/download/v3.2.1/wxWidgets-3.2.1-headers.7z + - 7z x -o%WXWIN% wxMSW-3.2.1_vc14x_Dev.7z + - 7z x -o%WXWIN% wxWidgets-3.2.1-headers.7z before_build: - - cd c:\project\celestial_navigation_pi - - mkdir build - - cd build - - ps: Start-FileDownload https://downloads.sourceforge.net/project/opencpnplugins/opencpn_lib/4.8.2-vc120_xp/opencpn.lib - - ps: Start-FileDownload https://downloads.sourceforge.net/project/opencpnplugins/opencpn_packaging_data/OpenCPN_buildwin.7z - - cmd: 7z x -y OpenCPN_buildwin.7z -oc:\project\celestial_navigation_pi - - cmake -T v120_xp .. + - cd c:\project\ocpn_project + - git submodule update --init opencpn-libs + - ps: Start-FileDownload https://downloads.sourceforge.net/project/opencpnplugins/opencpn_packaging_data/PVW32Con.exe + - rm -rf build && mkdir build && cd build + - ps: Start-FileDownload https://sourceforge.net/projects/opencpnplugins/files/opencpn.lib + - ps: Start-FileDownload https://download.opencpn.org/s/oibxM3kzfzKcSc3/download -FileName OpenCPN_buildwin-4.99a.7z + - cmd: 7z x -y OpenCPN_buildwin-4.99a.7z -oc:\project\ocpn_project\buildwin + - cmake %cmake_parms% .. build_script: - # - cmake --build . --config debug - - cmake --build . --target package --config release + - cmake --build . --target package --config Release + - python -m ensurepip + - python -m pip install -q setuptools + - python -m pip install -q cloudsmith-cli + - bash ../build/cloudsmith-upload.sh artifacts: - path: 'build\*.exe' name: installer - -deploy: - description: 'release created by AppVeyor CI' - provider: GitHub - auth_token: '%GitHub_auth_token%' - artifact: installer - draft: true - prerelease: true - on: - appveyor_repo_tag: true # deploy on tag push only - configuration: Release # Debug contains non-redist MS DLLs \ No newline at end of file diff --git a/bld.bat b/bld.bat new file mode 100644 index 0000000..e079de5 --- /dev/null +++ b/bld.bat @@ -0,0 +1,78 @@ +REM FE2 Testplugin + + +REM Requires wxWidgets setup +REM C:\Users\fcgle\source\wxWidgets-3.1.2 +REM C:\Users\fcgle\source\wxWidgets-3.2.2 +REM Visual Studio 15 2017 installed +REM Visual Studio 17 2022 installed +REM -------------------------------------- +REM For Opencpn 5.8 and wxWidgets-3.2.2 using Visual Studio 15 2017 +REM -------------------------------------- +REM Used for local builds and testing. +REM Create an empty "[plugin]/build" directory +REM Use MSVC Command Prompt from [plugin]root directory ".\bld.bat" +REM Find the errors in the build\output.txt file +REM Then use bash prompt to run cloudsmith-upload.sh command "BASH ./bld.bat" +REM This adds the metadata file to the tarball gz file. +REM Set local environment using wxWidgets-3.2.2 +set "wxDIR=%WXWIN%" +set "wxWidgets_ROOT_DIR=%WXWIN%" +set "wxWidgets_LIB_DIR=%WXWIN%\lib\vc14x_dll" +set "WXWIN=C:\Users\fcgle\source\wxWidgets-3.2.2" +REM For Opencpn 5.8 and wxWidgets-3.2.2 +cd build +cmake -T v143 -A Win32 -DOCPN_TARGET=MSVC .. +cmake --build . --target package --config relwithdebinfo >output.txt +bash ./cloudsmith-upload.sh + +REM -------------------------------------- +REM For Opencpn 5.6.2 and wxWidgets-3.1.2 release +REM -------------------------------------- +REM Using built C:\Users\fcgle\source\wxWidgets-3.1.2 and local settings +REM set "wxDIR=%WXWIN%" +REM set "wxWidgets_ROOT_DIR=%WXWIN%" +REM set "wxWidgets_LIB_DIR=%WXWIN%\lib\vc14x_dll" +REM set "WXWIN=C:\Users\fcgle\source\wxWidgets-3.1.2" +REM cd build +REM cmake -T v141_xp -DOCPN_TARGET=MSVC .. +REM cmake --build . --target package --config release >output.txt +REM bash ./cloudsmith-upload.sh + +REM -------------------------------------- +REM For Opencpn 5.8 and wxWidgets-3.2.2 using Visual Studio 15 2017 +REM -------------------------------------- +REM Using built C:\Users\fcgle\source\wxWidgets-3.2.2 and local settings +REM set "wxDIR=%WXWIN%" +REM set "wxWidgets_LIB_DIR=%WXWIN%\lib\vc14x_dll" +REM set "WXWIN=C:\Users\fcgle\source\wxWidgets-3.2.2" +REM cd build +REM cmake -T v141_xp -G -DOCPN_TARGET=MSVC "Visual Studio 15 2017" +REM -DCMAKE_BUILD_TYPE=RelWithDebInfo .. +REM cmake --build . --target tarball --config RelWithDebInfo >output.txt +REM bash ./cloudsmith-upload.sh + +REM -------------------------------------- +REM For Opencpn 5.8.2 and wxWidgets-3.2.2 using Visual Studio 12 2022 +REM TransmitterDAN full Build in repos2 which executes win_deps.bat +REM -------------------------------------- +REM .\buildwin\win_deps.bat +REM cd build +REM cmake -T v143 -A Win32 -DOCPN_TARGET=MSVC "Visual Studio 17 2022" ^ +REM -DCMAKE_BUILD_TYPE=RelWithDebInfo .. +REM cmake --build . --target tarball --config RelWithDebInfo >output.txt + +REM Setup for wxWidgets 3.2.2 +REM wxWidgets_INCLUDE_DIRS %WXWIN%\include +REM wxWidgets_LIB_DIR %WXWIN%\lib\vc_dll +REM wxWidgets_LIBRARIES %WXWIN%\lib\vc_dll +REM wxWidgets_ROOT_DIR %WXWIN% +REM WXWIN C:\Users\fcgle\source\repos2\OpenCPN\cache\buildwxWidgets\ + +REM -------------------------------------- +REM configdev58.bat by Rick for local builds. +REM -------------------------------------- +REM Can use "call configdev58.bat" in another batch file to set up local wxWidgets environment +REM set "wxDIR=C:\Users\fcgle\source\repos2\OpenCPN\buildwin\..\cache\buildwxWidgets" +REM set "wxWidgets_ROOT_DIR=C:\Users\fcgle\source\repos2\OpenCPN\buildwin\..\cache\buildwxWidgets" +REM set "wxWidgets_LIB_DIR=C:\Users\fcgle\source\repos2\OpenCPN\buildwin\..\cache\buildwxWidgets\lib\vc_dll" diff --git a/build-deps/macos-cache-stamp b/build-deps/macos-cache-stamp new file mode 100644 index 0000000..612bd69 --- /dev/null +++ b/build-deps/macos-cache-stamp @@ -0,0 +1,4 @@ +# Any change in this file will cause the macos cache to be invalidated +# i. e., that the homebrew dependencies are downloaded and wxwidgets +# rebuilt. For example, change the stock 'v1' to 'v2' +v1 diff --git a/build-deps/macos-deps b/build-deps/macos-deps new file mode 100644 index 0000000..04593c1 --- /dev/null +++ b/build-deps/macos-deps @@ -0,0 +1,7 @@ +# brew packages installed in macos ci build +cmake +gettext +libexif +python +wget +openssl@3 diff --git a/buildandroid/build_android.cmake b/buildandroid/build_android.cmake deleted file mode 100644 index 4993e41..0000000 --- a/buildandroid/build_android.cmake +++ /dev/null @@ -1,34 +0,0 @@ - - -#Toolchain and options definition file for OPenCPN Android build - - -# Locations of the cross-compiler tools - -# this one is important for bundled builds, but must be commented away for standalone builds -# otherwise you get: -# "ADD_LIBRARY for library oesenc_pi is used with the SHARED option, but the target platform supports only STATIC libraries" - -#SET(CMAKE_SYSTEM_NAME Generic) - - -#this one not so much -SET(CMAKE_SYSTEM_VERSION 1) - -# specify the cross compiler -SET(CMAKE_C_COMPILER /home/sean/android-ndk/android-ndk-r10d/ndk-toolchain/bin/arm-linux-androideabi-gcc) -SET(CMAKE_CXX_COMPILER /home/sean/android-ndk/android-ndk-r10d/ndk-toolchain/bin/arm-linux-androideabi-g++) - - -SET(TARGET_SUPPORTS_SHARED_LIBS TRUE) - -#Location of the root of the Android NDK -SET(NDK_Base /home/sean/android-ndk/android-ndk-r10d) -# /home/dsr/Projects/android-ndk/android-ndk-r10 ) - -SET(_wx_selected_config androideabi-qt) -SET(wxQt_Build build_android_55_intl) -SET(wxQt_Base /home/sean/wxqt/wxWidgets) -SET(Qt_Base /home/sean/qt5bare) -SET(Qt_Build build_release/qtbase) -SET(CMAKE_BUILD_TYPE Debug) diff --git a/buildosx/InstallOSX/pkg_background.jpg b/buildosx/InstallOSX/pkg_background.jpg index 807b976..91f4506 100644 Binary files a/buildosx/InstallOSX/pkg_background.jpg and b/buildosx/InstallOSX/pkg_background.jpg differ diff --git a/buildosx/InstallOSX/celestial_navigation_pi.pkgproj.in b/buildosx/InstallOSX/plugin.pkgproj.in old mode 100755 new mode 100644 similarity index 85% rename from buildosx/InstallOSX/celestial_navigation_pi.pkgproj.in rename to buildosx/InstallOSX/plugin.pkgproj.in index e5799c8..75f7668 --- a/buildosx/InstallOSX/celestial_navigation_pi.pkgproj.in +++ b/buildosx/InstallOSX/plugin.pkgproj.in @@ -72,77 +72,77 @@ UID 0 - + + CHILDREN + + + CHILDREN + + + CHILDREN + + GID + 80 + PATH + Resources + PATH_TYPE + 3 + PERMISSIONS + 420 + TYPE + 3 + UID + 0 + + + GID + 80 + PATH + . + PATH_TYPE + 0 + PERMISSIONS + 509 + TYPE + 2 + UID + 0 + + + GID + 80 + PATH + . + PATH_TYPE + 0 + PERMISSIONS + 509 + TYPE + 2 + UID + 0 + + CHILDREN - - GID - 80 - PATH - Resources - PATH_TYPE - 3 - PERMISSIONS - 493 - TYPE - 3 - UID - 0 - - - CHILDREN - - - CHILDREN - - - CHILDREN - - - CHILDREN - - GID - 80 - PATH - ../data - PATH_TYPE - 3 - PERMISSIONS - 493 - TYPE - 3 - UID - 0 - - - GID - 80 - PATH - ${PACKAGE_NAME} - PATH_TYPE - 0 - PERMISSIONS - 509 - TYPE - 2 - UID - 0 - - - GID - 80 - PATH - plugins - PATH_TYPE - 0 - PERMISSIONS - 509 - TYPE - 2 - UID - 0 - - - GID + + + CHILDREN + + GID + 80 + PATH + data + PATH_TYPE + 1 + PERMISSIONS + 448 + TYPE + 3 + UID + 0 + + + GID 80 PATH SharedSupport @@ -642,7 +642,7 @@ LOCATION 0 NAME - ${VERBOSE_NAME}-Plugin + ${VERBOSE_NAME}-Plugin_${PACKAGE_VERSION}-${OCPN_MIN_VERSION}-${OCPN_API_VERSION_MAJOR}.${OCPN_API_VERSION_MINOR} OVERWRITE_PERMISSIONS USE_HFS+_COMPRESSION @@ -681,15 +681,15 @@ 4 BACKGROUND_PATH - PATH - pkg_background.jpg - PATH_TYPE - 1 - - CUSTOM - 1 - SCALING - 1 + PATH + pkg_background.jpg + PATH_TYPE + 1 + + CUSTOM + 1 + SCALING + 1 INSTALLATION TYPE @@ -1334,7 +1334,7 @@ NAME - ${VERBOSE_NAME}-Plugin_${VERSION_MAJOR}.${VERSION_MINOR} + ${VERBOSE_NAME}-Plugin-${PACKAGE_VERSION}-${OCPN_MIN_VERSION}-${OCPN_API_VERSION_MAJOR}.${OCPN_API_VERSION_MINOR} REFERENCE_FOLDER_PATH . diff --git a/buildwin/NSIS.template.in b/buildwin/NSIS.template.in deleted file mode 100644 index 55567c3..0000000 --- a/buildwin/NSIS.template.in +++ /dev/null @@ -1,976 +0,0 @@ -; CPack install script designed for a nmake build - -;-------------------------------- -; You must define these values - - !define VERSION "@CPACK_PACKAGE_VERSION@" - !define PATCH "@CPACK_PACKAGE_VERSION_PATCH@" - !define INST_DIR "@CPACK_TEMPORARY_DIRECTORY@" - -;-------------------------------- -;Variables - - Var MUI_TEMP - Var STARTMENU_FOLDER - Var SV_ALLUSERS - Var START_MENU - Var DO_NOT_ADD_TO_PATH - Var ADD_TO_PATH_ALL_USERS - Var ADD_TO_PATH_CURRENT_USER - Var INSTALL_DESKTOP - Var IS_DEFAULT_INSTALLDIR -;-------------------------------- -;Include Modern UI - - !include "MUI.nsh" - - ;Default installation folder - InstallDir "@CPACK_NSIS_INSTALL_ROOT@\@CPACK_PACKAGE_INSTALL_DIRECTORY@" - -;-------------------------------- -;General - - ;Name and file - Name "@CPACK_NSIS_PACKAGE_NAME@" - OutFile "@CPACK_TOPLEVEL_DIRECTORY@/@CPACK_OUTPUT_FILE_NAME@" - - ;Set compression - SetCompressor @CPACK_NSIS_COMPRESSOR@ - - ;Require administrator access - RequestExecutionLevel admin - -@CPACK_NSIS_DEFINES@ - - !include Sections.nsh - -;--- Component support macros: --- -; The code for the add/remove functionality is from: -; http://nsis.sourceforge.net/Add/Remove_Functionality -; It has been modified slightly and extended to provide -; inter-component dependencies. -Var AR_SecFlags -Var AR_RegFlags -@CPACK_NSIS_SECTION_SELECTED_VARS@ - -; Loads the "selected" flag for the section named SecName into the -; variable VarName. -!macro LoadSectionSelectedIntoVar SecName VarName - SectionGetFlags ${${SecName}} $${VarName} - IntOp $${VarName} $${VarName} & ${SF_SELECTED} ;Turn off all other bits -!macroend - -; Loads the value of a variable... can we get around this? -!macro LoadVar VarName - IntOp $R0 0 + $${VarName} -!macroend - -; Sets the value of a variable -!macro StoreVar VarName IntValue - IntOp $${VarName} 0 + ${IntValue} -!macroend - -!macro InitSection SecName - ; This macro reads component installed flag from the registry and - ;changes checked state of the section on the components page. - ;Input: section index constant name specified in Section command. - - ClearErrors - ;Reading component status from registry - ReadRegDWORD $AR_RegFlags HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\@CPACK_PACKAGE_INSTALL_REGISTRY_KEY@\Components\${SecName}" "Installed" - IfErrors "default_${SecName}" - ;Status will stay default if registry value not found - ;(component was never installed) - IntOp $AR_RegFlags $AR_RegFlags & ${SF_SELECTED} ;Turn off all other bits - SectionGetFlags ${${SecName}} $AR_SecFlags ;Reading default section flags - IntOp $AR_SecFlags $AR_SecFlags & 0xFFFE ;Turn lowest (enabled) bit off - IntOp $AR_SecFlags $AR_RegFlags | $AR_SecFlags ;Change lowest bit - - ; Note whether this component was installed before - !insertmacro StoreVar ${SecName}_was_installed $AR_RegFlags - IntOp $R0 $AR_RegFlags & $AR_RegFlags - - ;Writing modified flags - SectionSetFlags ${${SecName}} $AR_SecFlags - - "default_${SecName}:" - !insertmacro LoadSectionSelectedIntoVar ${SecName} ${SecName}_selected -!macroend - -!macro FinishSection SecName - ; This macro reads section flag set by user and removes the section - ;if it is not selected. - ;Then it writes component installed flag to registry - ;Input: section index constant name specified in Section command. - - SectionGetFlags ${${SecName}} $AR_SecFlags ;Reading section flags - ;Checking lowest bit: - IntOp $AR_SecFlags $AR_SecFlags & ${SF_SELECTED} - IntCmp $AR_SecFlags 1 "leave_${SecName}" - ;Section is not selected: - ;Calling Section uninstall macro and writing zero installed flag - !insertmacro "Remove_${${SecName}}" - WriteRegDWORD HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\@CPACK_PACKAGE_INSTALL_REGISTRY_KEY@\Components\${SecName}" \ - "Installed" 0 - Goto "exit_${SecName}" - - "leave_${SecName}:" - ;Section is selected: - WriteRegDWORD HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\@CPACK_PACKAGE_INSTALL_REGISTRY_KEY@\Components\${SecName}" \ - "Installed" 1 - - "exit_${SecName}:" -!macroend - -!macro RemoveSection_CPack SecName - ; This macro is used to call section's Remove_... macro - ;from the uninstaller. - ;Input: section index constant name specified in Section command. - - !insertmacro "Remove_${${SecName}}" -!macroend - -; Determine whether the selection of SecName changed -!macro MaybeSelectionChanged SecName - !insertmacro LoadVar ${SecName}_selected - SectionGetFlags ${${SecName}} $R1 - IntOp $R1 $R1 & ${SF_SELECTED} ;Turn off all other bits - - ; See if the status has changed: - IntCmp $R0 $R1 "${SecName}_unchanged" - !insertmacro LoadSectionSelectedIntoVar ${SecName} ${SecName}_selected - - IntCmp $R1 ${SF_SELECTED} "${SecName}_was_selected" - !insertmacro "Deselect_required_by_${SecName}" - goto "${SecName}_unchanged" - - "${SecName}_was_selected:" - !insertmacro "Select_${SecName}_depends" - - "${SecName}_unchanged:" -!macroend -;--- End of Add/Remove macros --- - -;-------------------------------- -;Interface Settings - - !define MUI_HEADERIMAGE - !define MUI_ABORTWARNING - -;-------------------------------- -; path functions - -!verbose 3 -!include "WinMessages.NSH" -!verbose 4 - -;---------------------------------------- -; based upon a script of "Written by KiCHiK 2003-01-18 05:57:02" -;---------------------------------------- -!verbose 3 -!include "WinMessages.NSH" -!verbose 4 -;==================================================== -; get_NT_environment -; Returns: the selected environment -; Output : head of the stack -;==================================================== -!macro select_NT_profile UN -Function ${UN}select_NT_profile - StrCmp $ADD_TO_PATH_ALL_USERS "1" 0 environment_single - DetailPrint "Selected environment for all users" - Push "all" - Return - environment_single: - DetailPrint "Selected environment for current user only." - Push "current" - Return -FunctionEnd -!macroend -!insertmacro select_NT_profile "" -!insertmacro select_NT_profile "un." -;---------------------------------------------------- -!define NT_current_env 'HKCU "Environment"' -!define NT_all_env 'HKLM "SYSTEM\CurrentControlSet\Control\Session Manager\Environment"' - -!ifndef WriteEnvStr_RegKey - !ifdef ALL_USERS - !define WriteEnvStr_RegKey \ - 'HKLM "SYSTEM\CurrentControlSet\Control\Session Manager\Environment"' - !else - !define WriteEnvStr_RegKey 'HKCU "Environment"' - !endif -!endif - -; AddToPath - Adds the given dir to the search path. -; Input - head of the stack -; Note - Win9x systems requires reboot - -Function AddToPath - Exch $0 - Push $1 - Push $2 - Push $3 - - # don't add if the path doesn't exist - IfFileExists "$0\*.*" "" AddToPath_done - - ReadEnvStr $1 PATH - ; if the path is too long for a NSIS variable NSIS will return a 0 - ; length string. If we find that, then warn and skip any path - ; modification as it will trash the existing path. - StrLen $2 $1 - IntCmp $2 0 CheckPathLength_ShowPathWarning CheckPathLength_Done CheckPathLength_Done - CheckPathLength_ShowPathWarning: - Messagebox MB_OK|MB_ICONEXCLAMATION "Warning! PATH too long installer unable to modify PATH!" - Goto AddToPath_done - CheckPathLength_Done: - Push "$1;" - Push "$0;" - Call StrStr - Pop $2 - StrCmp $2 "" "" AddToPath_done - Push "$1;" - Push "$0\;" - Call StrStr - Pop $2 - StrCmp $2 "" "" AddToPath_done - GetFullPathName /SHORT $3 $0 - Push "$1;" - Push "$3;" - Call StrStr - Pop $2 - StrCmp $2 "" "" AddToPath_done - Push "$1;" - Push "$3\;" - Call StrStr - Pop $2 - StrCmp $2 "" "" AddToPath_done - - Call IsNT - Pop $1 - StrCmp $1 1 AddToPath_NT - ; Not on NT - StrCpy $1 $WINDIR 2 - FileOpen $1 "$1\autoexec.bat" a - FileSeek $1 -1 END - FileReadByte $1 $2 - IntCmp $2 26 0 +2 +2 # DOS EOF - FileSeek $1 -1 END # write over EOF - FileWrite $1 "$\r$\nSET PATH=%PATH%;$3$\r$\n" - FileClose $1 - SetRebootFlag true - Goto AddToPath_done - - AddToPath_NT: - StrCmp $ADD_TO_PATH_ALL_USERS "1" ReadAllKey - ReadRegStr $1 ${NT_current_env} "PATH" - Goto DoTrim - ReadAllKey: - ReadRegStr $1 ${NT_all_env} "PATH" - DoTrim: - StrCmp $1 "" AddToPath_NTdoIt - Push $1 - Call Trim - Pop $1 - StrCpy $0 "$1;$0" - AddToPath_NTdoIt: - StrCmp $ADD_TO_PATH_ALL_USERS "1" WriteAllKey - WriteRegExpandStr ${NT_current_env} "PATH" $0 - Goto DoSend - WriteAllKey: - WriteRegExpandStr ${NT_all_env} "PATH" $0 - DoSend: - SendMessage ${HWND_BROADCAST} ${WM_WININICHANGE} 0 "STR:Environment" /TIMEOUT=5000 - - AddToPath_done: - Pop $3 - Pop $2 - Pop $1 - Pop $0 -FunctionEnd - - -; RemoveFromPath - Remove a given dir from the path -; Input: head of the stack - -Function un.RemoveFromPath - Exch $0 - Push $1 - Push $2 - Push $3 - Push $4 - Push $5 - Push $6 - - IntFmt $6 "%c" 26 # DOS EOF - - Call un.IsNT - Pop $1 - StrCmp $1 1 unRemoveFromPath_NT - ; Not on NT - StrCpy $1 $WINDIR 2 - FileOpen $1 "$1\autoexec.bat" r - GetTempFileName $4 - FileOpen $2 $4 w - GetFullPathName /SHORT $0 $0 - StrCpy $0 "SET PATH=%PATH%;$0" - Goto unRemoveFromPath_dosLoop - - unRemoveFromPath_dosLoop: - FileRead $1 $3 - StrCpy $5 $3 1 -1 # read last char - StrCmp $5 $6 0 +2 # if DOS EOF - StrCpy $3 $3 -1 # remove DOS EOF so we can compare - StrCmp $3 "$0$\r$\n" unRemoveFromPath_dosLoopRemoveLine - StrCmp $3 "$0$\n" unRemoveFromPath_dosLoopRemoveLine - StrCmp $3 "$0" unRemoveFromPath_dosLoopRemoveLine - StrCmp $3 "" unRemoveFromPath_dosLoopEnd - FileWrite $2 $3 - Goto unRemoveFromPath_dosLoop - unRemoveFromPath_dosLoopRemoveLine: - SetRebootFlag true - Goto unRemoveFromPath_dosLoop - - unRemoveFromPath_dosLoopEnd: - FileClose $2 - FileClose $1 - StrCpy $1 $WINDIR 2 - Delete "$1\autoexec.bat" - CopyFiles /SILENT $4 "$1\autoexec.bat" - Delete $4 - Goto unRemoveFromPath_done - - unRemoveFromPath_NT: - StrCmp $ADD_TO_PATH_ALL_USERS "1" unReadAllKey - ReadRegStr $1 ${NT_current_env} "PATH" - Goto unDoTrim - unReadAllKey: - ReadRegStr $1 ${NT_all_env} "PATH" - unDoTrim: - StrCpy $5 $1 1 -1 # copy last char - StrCmp $5 ";" +2 # if last char != ; - StrCpy $1 "$1;" # append ; - Push $1 - Push "$0;" - Call un.StrStr ; Find `$0;` in $1 - Pop $2 ; pos of our dir - StrCmp $2 "" unRemoveFromPath_done - ; else, it is in path - # $0 - path to add - # $1 - path var - StrLen $3 "$0;" - StrLen $4 $2 - StrCpy $5 $1 -$4 # $5 is now the part before the path to remove - StrCpy $6 $2 "" $3 # $6 is now the part after the path to remove - StrCpy $3 $5$6 - - StrCpy $5 $3 1 -1 # copy last char - StrCmp $5 ";" 0 +2 # if last char == ; - StrCpy $3 $3 -1 # remove last char - - StrCmp $ADD_TO_PATH_ALL_USERS "1" unWriteAllKey - WriteRegExpandStr ${NT_current_env} "PATH" $3 - Goto unDoSend - unWriteAllKey: - WriteRegExpandStr ${NT_all_env} "PATH" $3 - unDoSend: - SendMessage ${HWND_BROADCAST} ${WM_WININICHANGE} 0 "STR:Environment" /TIMEOUT=5000 - - unRemoveFromPath_done: - Pop $6 - Pop $5 - Pop $4 - Pop $3 - Pop $2 - Pop $1 - Pop $0 -FunctionEnd - -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -; Uninstall sutff -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; - -########################################### -# Utility Functions # -########################################### - -;==================================================== -; IsNT - Returns 1 if the current system is NT, 0 -; otherwise. -; Output: head of the stack -;==================================================== -; IsNT -; no input -; output, top of the stack = 1 if NT or 0 if not -; -; Usage: -; Call IsNT -; Pop $R0 -; ($R0 at this point is 1 or 0) - -!macro IsNT un -Function ${un}IsNT - Push $0 - ReadRegStr $0 HKLM "SOFTWARE\Microsoft\Windows NT\CurrentVersion" CurrentVersion - StrCmp $0 "" 0 IsNT_yes - ; we are not NT. - Pop $0 - Push 0 - Return - - IsNT_yes: - ; NT!!! - Pop $0 - Push 1 -FunctionEnd -!macroend -!insertmacro IsNT "" -!insertmacro IsNT "un." - -; StrStr -; input, top of stack = string to search for -; top of stack-1 = string to search in -; output, top of stack (replaces with the portion of the string remaining) -; modifies no other variables. -; -; Usage: -; Push "this is a long ass string" -; Push "ass" -; Call StrStr -; Pop $R0 -; ($R0 at this point is "ass string") - -!macro StrStr un -Function ${un}StrStr -Exch $R1 ; st=haystack,old$R1, $R1=needle - Exch ; st=old$R1,haystack - Exch $R2 ; st=old$R1,old$R2, $R2=haystack - Push $R3 - Push $R4 - Push $R5 - StrLen $R3 $R1 - StrCpy $R4 0 - ; $R1=needle - ; $R2=haystack - ; $R3=len(needle) - ; $R4=cnt - ; $R5=tmp - loop: - StrCpy $R5 $R2 $R3 $R4 - StrCmp $R5 $R1 done - StrCmp $R5 "" done - IntOp $R4 $R4 + 1 - Goto loop -done: - StrCpy $R1 $R2 "" $R4 - Pop $R5 - Pop $R4 - Pop $R3 - Pop $R2 - Exch $R1 -FunctionEnd -!macroend -!insertmacro StrStr "" -!insertmacro StrStr "un." - -Function Trim ; Added by Pelaca - Exch $R1 - Push $R2 -Loop: - StrCpy $R2 "$R1" 1 -1 - StrCmp "$R2" " " RTrim - StrCmp "$R2" "$\n" RTrim - StrCmp "$R2" "$\r" RTrim - StrCmp "$R2" ";" RTrim - GoTo Done -RTrim: - StrCpy $R1 "$R1" -1 - Goto Loop -Done: - Pop $R2 - Exch $R1 -FunctionEnd - -Function ConditionalAddToRegisty - Pop $0 - Pop $1 - StrCmp "$0" "" ConditionalAddToRegisty_EmptyString - WriteRegStr SHCTX "Software\Microsoft\Windows\CurrentVersion\Uninstall\@CPACK_PACKAGE_INSTALL_REGISTRY_KEY@" \ - "$1" "$0" - ;MessageBox MB_OK "Set Registry: '$1' to '$0'" - DetailPrint "Set install registry entry: '$1' to '$0'" - ConditionalAddToRegisty_EmptyString: -FunctionEnd - -;-------------------------------- - -!ifdef CPACK_USES_DOWNLOAD -Function DownloadFile - IfFileExists $INSTDIR\* +2 - CreateDirectory $INSTDIR - Pop $0 - - ; Skip if already downloaded - IfFileExists $INSTDIR\$0 0 +2 - Return - - StrCpy $1 "@CPACK_DOWNLOAD_SITE@" - - try_again: - NSISdl::download "$1/$0" "$INSTDIR\$0" - - Pop $1 - StrCmp $1 "success" success - StrCmp $1 "Cancelled" cancel - MessageBox MB_OK "Download failed: $1" - cancel: - Return - success: -FunctionEnd -!endif - -;-------------------------------- -; Installation types -@CPACK_NSIS_INSTALLATION_TYPES@ - -;-------------------------------- -; Component sections -@CPACK_NSIS_COMPONENT_SECTIONS@ - -;-------------------------------- -; Define some macro setting for the gui -@CPACK_NSIS_INSTALLER_MUI_ICON_CODE@ -@CPACK_NSIS_INSTALLER_ICON_CODE@ -@CPACK_NSIS_INSTALLER_MUI_COMPONENTS_DESC@ -@CPACK_NSIS_INSTALLER_MUI_FINISHPAGE_RUN_CODE@ - -;-------------------------------- -;Pages - !insertmacro MUI_PAGE_WELCOME - - !insertmacro MUI_PAGE_LICENSE "@CPACK_RESOURCE_FILE_LICENSE@" - Page custom InstallOptionsPage - !insertmacro MUI_PAGE_DIRECTORY - - ;Start Menu Folder Page Configuration -; !define MUI_STARTMENUPAGE_REGISTRY_ROOT "SHCTX" -; !define MUI_STARTMENUPAGE_REGISTRY_KEY "Software\@CPACK_PACKAGE_VENDOR@\@CPACK_PACKAGE_INSTALL_REGISTRY_KEY@" -; !define MUI_STARTMENUPAGE_REGISTRY_VALUENAME "Start Menu Folder" -; !insertmacro MUI_PAGE_STARTMENU Application $STARTMENU_FOLDER - - @CPACK_NSIS_PAGE_COMPONENTS@ - - !insertmacro MUI_PAGE_INSTFILES - !insertmacro MUI_PAGE_FINISH - - !insertmacro MUI_UNPAGE_CONFIRM - !insertmacro MUI_UNPAGE_INSTFILES - -;-------------------------------- -;Languages - - !insertmacro MUI_LANGUAGE "English" ;first language is the default language - !insertmacro MUI_LANGUAGE "Albanian" - !insertmacro MUI_LANGUAGE "Arabic" - !insertmacro MUI_LANGUAGE "Basque" - !insertmacro MUI_LANGUAGE "Belarusian" - !insertmacro MUI_LANGUAGE "Bosnian" - !insertmacro MUI_LANGUAGE "Breton" - !insertmacro MUI_LANGUAGE "Bulgarian" - !insertmacro MUI_LANGUAGE "Croatian" - !insertmacro MUI_LANGUAGE "Czech" - !insertmacro MUI_LANGUAGE "Danish" - !insertmacro MUI_LANGUAGE "Dutch" - !insertmacro MUI_LANGUAGE "Estonian" - !insertmacro MUI_LANGUAGE "Farsi" - !insertmacro MUI_LANGUAGE "Finnish" - !insertmacro MUI_LANGUAGE "French" - !insertmacro MUI_LANGUAGE "German" - !insertmacro MUI_LANGUAGE "Greek" - !insertmacro MUI_LANGUAGE "Hebrew" - !insertmacro MUI_LANGUAGE "Hungarian" - !insertmacro MUI_LANGUAGE "Icelandic" - !insertmacro MUI_LANGUAGE "Indonesian" - !insertmacro MUI_LANGUAGE "Irish" - !insertmacro MUI_LANGUAGE "Italian" - !insertmacro MUI_LANGUAGE "Japanese" - !insertmacro MUI_LANGUAGE "Korean" - !insertmacro MUI_LANGUAGE "Latvian" - !insertmacro MUI_LANGUAGE "Lithuanian" - !insertmacro MUI_LANGUAGE "Luxembourgish" - !insertmacro MUI_LANGUAGE "Macedonian" - !insertmacro MUI_LANGUAGE "Malay" - !insertmacro MUI_LANGUAGE "Mongolian" - !insertmacro MUI_LANGUAGE "Norwegian" - !insertmacro MUI_LANGUAGE "Polish" - !insertmacro MUI_LANGUAGE "Portuguese" - !insertmacro MUI_LANGUAGE "PortugueseBR" - !insertmacro MUI_LANGUAGE "Romanian" - !insertmacro MUI_LANGUAGE "Russian" - !insertmacro MUI_LANGUAGE "Serbian" - !insertmacro MUI_LANGUAGE "SerbianLatin" - !insertmacro MUI_LANGUAGE "SimpChinese" - !insertmacro MUI_LANGUAGE "Slovak" - !insertmacro MUI_LANGUAGE "Slovenian" - !insertmacro MUI_LANGUAGE "Spanish" - !insertmacro MUI_LANGUAGE "Swedish" - !insertmacro MUI_LANGUAGE "Thai" - !insertmacro MUI_LANGUAGE "TradChinese" - !insertmacro MUI_LANGUAGE "Turkish" - !insertmacro MUI_LANGUAGE "Ukrainian" - !insertmacro MUI_LANGUAGE "Welsh" - - -;-------------------------------- -;Reserve Files - - ;These files should be inserted before other files in the data block - ;Keep these lines before any File command - ;Only for solid compression (by default, solid compression is enabled for BZIP2 and LZMA) - - ReserveFile "NSIS.InstallOptions.ini" - !insertmacro MUI_RESERVEFILE_INSTALLOPTIONS - -;-------------------------------- -;Installer Sections - -Section "-Core installation" - ;Use the entire tree produced by the INSTALL target. Keep the - ;list of directories here in sync with the RMDir commands below. - SetOutPath "$INSTDIR" - @CPACK_NSIS_EXTRA_PREINSTALL_COMMANDS@ - @CPACK_NSIS_FULL_INSTALL@ - - ;Store installation folder - WriteRegStr SHCTX "Software\@CPACK_PACKAGE_VENDOR@\@CPACK_PACKAGE_INSTALL_REGISTRY_KEY@" "" $INSTDIR - - ;Create uninstaller - WriteUninstaller "$INSTDIR\Uninstall @CPACK_NSIS_PACKAGE_NAME@.exe" - Push "DisplayName" - Push "@CPACK_NSIS_DISPLAY_NAME@" - Call ConditionalAddToRegisty - Push "DisplayVersion" - Push "@CPACK_PACKAGE_VERSION@" - Call ConditionalAddToRegisty - Push "Publisher" - Push "@CPACK_PACKAGE_VENDOR@" - Call ConditionalAddToRegisty - Push "UninstallString" - Push "$INSTDIR\Uninstall @CPACK_NSIS_PACKAGE_NAME@.exe" - Call ConditionalAddToRegisty - Push "NoRepair" - Push "1" - Call ConditionalAddToRegisty - - !ifdef CPACK_NSIS_ADD_REMOVE - ;Create add/remove functionality - Push "ModifyPath" - Push "$INSTDIR\AddRemove.exe" - Call ConditionalAddToRegisty - !else - Push "NoModify" - Push "1" - Call ConditionalAddToRegisty - !endif - - ; Optional registration - Push "DisplayIcon" - Push "$INSTDIR\@CPACK_NSIS_INSTALLED_ICON_NAME@" - Call ConditionalAddToRegisty - Push "HelpLink" - Push "@CPACK_NSIS_HELP_LINK@" - Call ConditionalAddToRegisty - Push "URLInfoAbout" - Push "@CPACK_NSIS_URL_INFO_ABOUT@" - Call ConditionalAddToRegisty - Push "Contact" - Push "@CPACK_NSIS_CONTACT@" - Call ConditionalAddToRegisty - !insertmacro MUI_INSTALLOPTIONS_READ $INSTALL_DESKTOP "NSIS.InstallOptions.ini" "Field 5" "State" -; !insertmacro MUI_STARTMENU_WRITE_BEGIN Application - - ;Create shortcuts -; CreateDirectory "$SMPROGRAMS\$STARTMENU_FOLDER" -; @CPACK_NSIS_CREATE_ICONS@ -; @CPACK_NSIS_CREATE_ICONS_EXTRA@ -; CreateShortCut "$SMPROGRAMS\$STARTMENU_FOLDER\Uninstall.lnk" "$INSTDIR\Uninstall @CPACK_NSIS_PACKAGE_NAME@.exe" - - ;Read a value from an InstallOptions INI file - !insertmacro MUI_INSTALLOPTIONS_READ $DO_NOT_ADD_TO_PATH "NSIS.InstallOptions.ini" "Field 2" "State" - !insertmacro MUI_INSTALLOPTIONS_READ $ADD_TO_PATH_ALL_USERS "NSIS.InstallOptions.ini" "Field 3" "State" - !insertmacro MUI_INSTALLOPTIONS_READ $ADD_TO_PATH_CURRENT_USER "NSIS.InstallOptions.ini" "Field 4" "State" - - ; Write special uninstall registry entries - Push "StartMenu" - Push "$STARTMENU_FOLDER" - Call ConditionalAddToRegisty - Push "DoNotAddToPath" - Push "$DO_NOT_ADD_TO_PATH" - Call ConditionalAddToRegisty - Push "AddToPathAllUsers" - Push "$ADD_TO_PATH_ALL_USERS" - Call ConditionalAddToRegisty - Push "AddToPathCurrentUser" - Push "$ADD_TO_PATH_CURRENT_USER" - Call ConditionalAddToRegisty - Push "InstallToDesktop" - Push "$INSTALL_DESKTOP" - Call ConditionalAddToRegisty - -; !insertmacro MUI_STARTMENU_WRITE_END - -@CPACK_NSIS_EXTRA_INSTALL_COMMANDS@ - -SectionEnd - -Section "-Add to path" - Push $INSTDIR\bin - StrCmp "@CPACK_NSIS_MODIFY_PATH@" "ON" 0 doNotAddToPath - StrCmp $DO_NOT_ADD_TO_PATH "1" doNotAddToPath 0 - Call AddToPath - doNotAddToPath: -SectionEnd - -;-------------------------------- -; Create custom pages -Function InstallOptionsPage - !insertmacro MUI_HEADER_TEXT "Install Options" "Choose options for installing @CPACK_NSIS_PACKAGE_NAME@" - !insertmacro MUI_INSTALLOPTIONS_DISPLAY "NSIS.InstallOptions.ini" - -FunctionEnd - -;-------------------------------- -; determine admin versus local install -Function un.onInit - - ClearErrors - UserInfo::GetName - IfErrors noLM - Pop $0 - UserInfo::GetAccountType - Pop $1 - StrCmp $1 "Admin" 0 +3 - SetShellVarContext all - ;MessageBox MB_OK 'User "$0" is in the Admin group' - Goto done - StrCmp $1 "Power" 0 +3 - SetShellVarContext all - ;MessageBox MB_OK 'User "$0" is in the Power Users group' - Goto done - - noLM: - ;Get installation folder from registry if available - - done: - -FunctionEnd - -;--- Add/Remove callback functions: --- -!macro SectionList MacroName - ;This macro used to perform operation on multiple sections. - ;List all of your components in following manner here. -@CPACK_NSIS_COMPONENT_SECTION_LIST@ -!macroend - -Section -FinishComponents - ;Removes unselected components and writes component status to registry - !insertmacro SectionList "FinishSection" - -!ifdef CPACK_NSIS_ADD_REMOVE - ; Get the name of the installer executable - System::Call 'kernel32::GetModuleFileNameA(i 0, t .R0, i 1024) i r1' - StrCpy $R3 $R0 - - ; Strip off the last 13 characters, to see if we have AddRemove.exe - StrLen $R1 $R0 - IntOp $R1 $R0 - 13 - StrCpy $R2 $R0 13 $R1 - StrCmp $R2 "AddRemove.exe" addremove_installed - - ; We're not running AddRemove.exe, so install it - CopyFiles $R3 $INSTDIR\AddRemove.exe - - addremove_installed: -!endif -SectionEnd -;--- End of Add/Remove callback functions --- - -;-------------------------------- -; Component dependencies -Function .onSelChange - !insertmacro SectionList MaybeSelectionChanged -FunctionEnd - -;-------------------------------- -;Uninstaller Section - -Section "Uninstall" -; ReadRegStr $START_MENU SHCTX \ -; "Software\Microsoft\Windows\CurrentVersion\Uninstall\@CPACK_PACKAGE_INSTALL_REGISTRY_KEY@" "StartMenu" - ;MessageBox MB_OK "Start menu is in: $START_MENU" - ReadRegStr $DO_NOT_ADD_TO_PATH SHCTX \ - "Software\Microsoft\Windows\CurrentVersion\Uninstall\@CPACK_PACKAGE_INSTALL_REGISTRY_KEY@" "DoNotAddToPath" - ReadRegStr $ADD_TO_PATH_ALL_USERS SHCTX \ - "Software\Microsoft\Windows\CurrentVersion\Uninstall\@CPACK_PACKAGE_INSTALL_REGISTRY_KEY@" "AddToPathAllUsers" - ReadRegStr $ADD_TO_PATH_CURRENT_USER SHCTX \ - "Software\Microsoft\Windows\CurrentVersion\Uninstall\@CPACK_PACKAGE_INSTALL_REGISTRY_KEY@" "AddToPathCurrentUser" - ;MessageBox MB_OK "Add to path: $DO_NOT_ADD_TO_PATH all users: $ADD_TO_PATH_ALL_USERS" - ReadRegStr $INSTALL_DESKTOP SHCTX \ - "Software\Microsoft\Windows\CurrentVersion\Uninstall\@CPACK_PACKAGE_INSTALL_REGISTRY_KEY@" "InstallToDesktop" - ;MessageBox MB_OK "Install to desktop: $INSTALL_DESKTOP " - -@CPACK_NSIS_EXTRA_UNINSTALL_COMMANDS@ - - ;Remove files we installed. - ;Keep the list of directories here in sync with the File commands above. -@CPACK_NSIS_DELETE_FILES@ -@CPACK_NSIS_DELETE_DIRECTORIES@ - -!ifdef CPACK_NSIS_ADD_REMOVE - ;Remove the add/remove program - Delete "$INSTDIR\AddRemove.exe" -!endif - - ;Remove the uninstaller itself. - Delete "$INSTDIR\Uninstall @CPACK_NSIS_PACKAGE_NAME@.exe" - DeleteRegKey SHCTX "Software\Microsoft\Windows\CurrentVersion\Uninstall\@CPACK_PACKAGE_INSTALL_REGISTRY_KEY@" - - ;Remove the installation directory if it is empty. - RMDir "$INSTDIR" - - ; Remove the registry entries. - DeleteRegKey SHCTX "Software\@CPACK_PACKAGE_VENDOR@\@CPACK_PACKAGE_INSTALL_REGISTRY_KEY@" - - ; Removes all optional components - !insertmacro SectionList "RemoveSection_CPack" - -; !insertmacro MUI_STARTMENU_GETFOLDER Application $MUI_TEMP - -; Delete "$SMPROGRAMS\$MUI_TEMP\Uninstall.lnk" -@CPACK_NSIS_DELETE_ICONS@ -@CPACK_NSIS_DELETE_ICONS_EXTRA@ - - ;Delete empty start menu parent diretories - StrCpy $MUI_TEMP "$SMPROGRAMS\$MUI_TEMP" - - startMenuDeleteLoop: - ClearErrors - RMDir $MUI_TEMP - GetFullPathName $MUI_TEMP "$MUI_TEMP\.." - - IfErrors startMenuDeleteLoopDone - - StrCmp "$MUI_TEMP" "$SMPROGRAMS" startMenuDeleteLoopDone startMenuDeleteLoop - startMenuDeleteLoopDone: - - ; If the user changed the shortcut, then untinstall may not work. This should - ; try to fix it. -; StrCpy $MUI_TEMP "$START_MENU" -; Delete "$SMPROGRAMS\$MUI_TEMP\Uninstall.lnk" -@CPACK_NSIS_DELETE_ICONS_EXTRA@ - - ;Delete empty start menu parent diretories - StrCpy $MUI_TEMP "$SMPROGRAMS\$MUI_TEMP" - - secondStartMenuDeleteLoop: - ClearErrors - RMDir $MUI_TEMP - GetFullPathName $MUI_TEMP "$MUI_TEMP\.." - - IfErrors secondStartMenuDeleteLoopDone - - StrCmp "$MUI_TEMP" "$SMPROGRAMS" secondStartMenuDeleteLoopDone secondStartMenuDeleteLoop - secondStartMenuDeleteLoopDone: - - DeleteRegKey /ifempty SHCTX "Software\@CPACK_PACKAGE_VENDOR@\@CPACK_PACKAGE_INSTALL_REGISTRY_KEY@" - - Push $INSTDIR\bin - StrCmp $DO_NOT_ADD_TO_PATH_ "1" doNotRemoveFromPath 0 - Call un.RemoveFromPath - doNotRemoveFromPath: -SectionEnd - -;-------------------------------- -; determine admin versus local install -; Is install for "AllUsers" or "JustMe"? -; Default to "JustMe" - set to "AllUsers" if admin or on Win9x -; This function is used for the very first "custom page" of the installer. -; This custom page does not show up visibly, but it executes prior to the -; first visible page and sets up $INSTDIR properly... -; Choose different default installation folder based on SV_ALLUSERS... -; "Program Files" for AllUsers, "My Documents" for JustMe... - -Function .onInit - StrCmp "@CPACK_NSIS_ENABLE_UNINSTALL_BEFORE_INSTALL@" "ON" 0 inst - - ReadRegStr $0 HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\@CPACK_PACKAGE_INSTALL_REGISTRY_KEY@" "UninstallString" - StrCmp $0 "" inst - - MessageBox MB_YESNOCANCEL|MB_ICONEXCLAMATION \ - "@CPACK_NSIS_PACKAGE_NAME@ is already installed. $\n$\nDo you want to uninstall the old version before installing the new one?" \ - IDYES uninst IDNO inst - Abort - -;Run the uninstaller -uninst: - ClearErrors - StrLen $2 "\Uninstall @CPACK_NSIS_PACKAGE_NAME@.exe" - StrCpy $3 $0 -$2 # remove "\Uninstall @CPACK_NSIS_PACKAGE_NAME@.exe" from UninstallString to get path - ExecWait '$0 _?=$3' ;Do not copy the uninstaller to a temp file - - IfErrors uninst_failed inst -uninst_failed: - MessageBox MB_OK|MB_ICONSTOP "Uninstall failed." - Abort - - -inst: - ; Reads components status for registry - !insertmacro SectionList "InitSection" - - ; check to see if /D has been used to change - ; the install directory by comparing it to the - ; install directory that is expected to be the - ; default - StrCpy $IS_DEFAULT_INSTALLDIR 0 - StrCmp "$INSTDIR" "@CPACK_NSIS_INSTALL_ROOT@\@CPACK_PACKAGE_INSTALL_DIRECTORY@" 0 +2 - StrCpy $IS_DEFAULT_INSTALLDIR 1 - - StrCpy $SV_ALLUSERS "JustMe" - ; if default install dir then change the default - ; if it is installed for JustMe - StrCmp "$IS_DEFAULT_INSTALLDIR" "1" 0 +2 - StrCpy $INSTDIR "$DOCUMENTS\@CPACK_PACKAGE_INSTALL_DIRECTORY@" - - ClearErrors - UserInfo::GetName - IfErrors noLM - Pop $0 - UserInfo::GetAccountType - Pop $1 - StrCmp $1 "Admin" 0 +4 - SetShellVarContext all - ;MessageBox MB_OK 'User "$0" is in the Admin group' - StrCpy $SV_ALLUSERS "AllUsers" - Goto done - StrCmp $1 "Power" 0 +4 - SetShellVarContext all - ;MessageBox MB_OK 'User "$0" is in the Power Users group' - StrCpy $SV_ALLUSERS "AllUsers" - Goto done - - noLM: - StrCpy $SV_ALLUSERS "AllUsers" - ;Get installation folder from registry if available - - done: - StrCmp $SV_ALLUSERS "AllUsers" 0 +3 - StrCmp "$IS_DEFAULT_INSTALLDIR" "1" 0 +2 - StrCpy $INSTDIR "@CPACK_NSIS_INSTALL_ROOT@\@CPACK_PACKAGE_INSTALL_DIRECTORY@" - - StrCmp "@CPACK_NSIS_MODIFY_PATH@" "ON" 0 noOptionsPage - !insertmacro MUI_INSTALLOPTIONS_EXTRACT "NSIS.InstallOptions.ini" - - noOptionsPage: -FunctionEnd diff --git a/ci/circleci-build-android-arm64.sh b/ci/circleci-build-android-arm64.sh new file mode 100644 index 0000000..a015fb6 --- /dev/null +++ b/ci/circleci-build-android-arm64.sh @@ -0,0 +1,95 @@ +#!/bin/sh -xe + +# +# Build the Android artifacts inside the circleci linux container +# + + +set -xe + +pwd + +git submodule update --init opencpn-libs + +ls -la + +# FOR LOCAL BUILD - have a local version to avoid big download each run - need to stage it but not commit it. DO NOT COMMIT AND PUSH master.zip +if [ "${CIRCLECI_LOCAL,,}" = "true" ]; then + if [[ -d ~/circleci-cache ]]; then + if [[ -f ~/circleci-cache/apt-proxy ]]; then + cat ~/circleci-cache/apt-proxy | sudo tee -a /etc/apt/apt.conf.d/00aptproxy + cat /etc/apt/apt.conf.d/00aptproxy + fi + if [[ ! -f ~/circleci-cache/master.zip ]]; then + sudo wget https://github.com/bdbcat/OCPNAndroidCommon/archive/master.zip -O ~/circleci-cache/master.zip + fi + MASTER_LOC=~/circleci-cache + #unzip -qq -o /home/circleci/circleci-cache/master.zip + fi +else + MASTER_LOC=$(pwd) + wget https://github.com/bdbcat/OCPNAndroidCommon/archive/master.zip + #unzip -qq -o master.zip +fi +echo "unzipping $MASTER_LOC/master.zip" + +unzip -qq -o $MASTER_LOC/master.zip + +sudo apt-get -q update +sudo apt-get -y install git cmake gettext unzip + +# Install extra build libs +ME=$(echo ${0##*/} | sed 's/\.sh//g') +EXTRA_LIBS=./ci/extras/extra_libs.txt +if test -f "$EXTRA_LIBS"; then + while read line; do + sudo apt-get install $line + done < $EXTRA_LIBS +fi +EXTRA_LIBS=./ci/extras/${ME}_extra_libs.txt +if test -f "$EXTRA_LIBS"; then + while read line; do + sudo apt-get install $line + done < $EXTRA_LIBS +fi + +pwd +ls -la + +mkdir -p build +cd build + +rm -f CMakeCache.txt + +# Install python to get a recent version of cmake +sudo apt install python3-pip +python3 -m pip install --user --force-reinstall -q pip setuptools +sudo apt remove python3-six python3-colorama python3-urllib3 +export LC_ALL=C.UTF-8 LANG=C.UTF-8 +python3 -m pip install --user -q cmake -vv + +last_ndk=$(ls -d /home/circleci/android-sdk/ndk/* | tail -1) +test -d /opt/android || sudo mkdir -p /opt/android +sudo ln -sf $last_ndk /opt/android/ndk + +if [ ! -z "$(BUILD_TYPE)" ]; then + tag=$(git tag --contains HEAD) + current_branch=$(git branch --show-current) + if [ -n "$tag" ] || [ "$current_branch" = "master" ]; then + BUILD_TYPE=Release + else + BUILD_TYPE=Debug + fi +fi + +cmake -DCMAKE_TOOLCHAIN_FILE=cmake/android-aarch64-toolchain.cmake \ + -D_wx_selected_config=androideabi-qt-arm64 \ + -DwxQt_Build=build_android_release_64_static_O3 \ + -DQt_Build=build_arm64/qtbase \ + -DOCPN_Android_Common=OCPNAndroidCommon-master \ + -DCMAKE_BUILD_TYPE=$BUILD_TYPE \ + .. + +make VERBOSE=1 + +make package diff --git a/ci/circleci-build-android-armhf.sh b/ci/circleci-build-android-armhf.sh new file mode 100644 index 0000000..c95bee0 --- /dev/null +++ b/ci/circleci-build-android-armhf.sh @@ -0,0 +1,112 @@ +#!/bin/sh -xe + +# +# Build the Android artifacts inside the circleci linux container +# + +set -xe + +pwd + +git submodule update --init opencpn-libs + +ls -la + +#sudo apt-get -q update +#sudo apt-get -y install git cmake gettext unzip + +# Get the OCPN Android build support package. +# FOR LOCAL BUILD - have a local version to avoid big download each run - need to stage it but not commit it. DO NOT COMMIT AND PUSH master.zip +if [ "${CIRCLECI_LOCAL,,}" = "true" ]; then + if [[ -d ~/circleci-cache ]]; then + if [[ -f ~/circleci-cache/apt-proxy ]]; then + cat ~/circleci-cache/apt-proxy | sudo tee -a /etc/apt/apt.conf.d/00aptproxy + cat /etc/apt/apt.conf.d/00aptproxy + fi + if [[ ! -f ~/circleci-cache/master.zip ]]; then + sudo wget https://github.com/bdbcat/OCPNAndroidCommon/archive/master.zip -O ~/circleci-cache/master.zip + fi + MASTER_LOC=~/circleci-cache + #unzip -qq -o /home/circleci/circleci-cache/master.zip + fi +else + MASTER_LOC=$(pwd) + wget https://github.com/bdbcat/OCPNAndroidCommon/archive/master.zip + #unzip -qq -o master.zip +fi +echo "unzipping $MASTER_LOC/master.zip" + +unzip -qq -o $MASTER_LOC/master.zip + +sudo apt-get -q update +sudo apt-get -y install git cmake gettext unzip +# Install extra build libs +ME=$(echo ${0##*/} | sed 's/\.sh//g') +EXTRA_LIBS=./ci/extras/extra_libs.txt +if test -f "$EXTRA_LIBS"; then + while read line; do + sudo apt-get install $line + done < $EXTRA_LIBS +fi +EXTRA_LIBS=./ci/extras/${ME}_extra_libs.txt +if test -f "$EXTRA_LIBS"; then + while read line; do + sudo apt-get install $line + done < $EXTRA_LIBS +fi + +# Install extra build libs +ME=$(echo ${0##*/} | sed 's/\.sh//g') +EXTRA_LIBS=./ci/extras/extra_libs.txt +if test -f "$EXTRA_LIBS"; then + while read line; do + sudo apt-get install $line + done < $EXTRA_LIBS +fi +EXTRA_LIBS=./ci/extras/${ME}_extra_libs.txt +if test -f "$EXTRA_LIBS"; then + while read line; do + sudo apt-get install $line + done < $EXTRA_LIBS +fi + +pwd +ls -la + +mkdir -p build +cd build + +rm -f CMakeCache.txt + +# Install python to get a recent version of cmake +sudo apt install python3-pip +python3 -m pip install --user --force-reinstall -q pip setuptools +sudo apt remove python3-six python3-colorama python3-urllib3 +export LC_ALL=C.UTF-8 LANG=C.UTF-8 +python3 -m pip install --user -q cmake -vv + +last_ndk=$(ls -d /home/circleci/android-sdk/ndk/* | tail -1) +test -d /opt/android || sudo mkdir -p /opt/android +sudo ln -sf $last_ndk /opt/android/ndk + +if [ ! -z "$(BUILD_TYPE)" ]; then + tag=$(git tag --contains HEAD) + current_branch=$(git branch --show-current) + if [ -n "$tag" ] || [ "$current_branch" = "master" ]; then + BUILD_TYPE=Release + else + BUILD_TYPE=Debug + fi +fi + +cmake -DCMAKE_TOOLCHAIN_FILE=cmake/android-armhf-toolchain.cmake \ + -D_wx_selected_config=androideabi-qt-armhf \ + -DwxQt_Build=build_android_release_19_static_O3 \ + -DQt_Build=build_arm32_19_O3/qtbase \ + -DOCPN_Android_Common=OCPNAndroidCommon-master \ + -DCMAKE_BUILD_TYPE=$BUILD_TYPE \ + .. + +make VERBOSE=1 + +make package diff --git a/ci/circleci-build-debian.sh b/ci/circleci-build-debian.sh new file mode 100644 index 0000000..81fe0f1 --- /dev/null +++ b/ci/circleci-build-debian.sh @@ -0,0 +1,63 @@ +#!/usr/bin/env bash + +# +# Build the Debian artifacts +# +set -xe + +if [ "${CIRCLECI_LOCAL,,}" = "true" ]; then + if [[ -d ~/circleci-cache ]]; then + if [[ -f ~/circleci-cache/apt-proxy ]]; then + cat ~/circleci-cache/apt-proxy | sudo tee -a /etc/apt/apt.conf.d/00aptproxy + cat /etc/apt/apt.conf.d/00aptproxy + fi + fi +fi + +sudo apt-get -qq update +sudo apt-get install devscripts equivs + +# Install extra build libs +ME=$(echo ${0##*/} | sed 's/\.sh//g') +EXTRA_LIBS=./ci/extras/extra_libs.txt +if test -f "$EXTRA_LIBS"; then + while read -r line; do + sudo apt-get install $line + done < "$EXTRA_LIBS" +fi +EXTRA_LIBS=./ci/extras/${ME}_extra_libs.txt +if test -f "$EXTRA_LIBS"; then + while read -r line; do + sudo apt-get install $line + done < "$EXTRA_LIBS" +fi + +pwd + +git submodule update --init opencpn-libs + +sudo mk-build-deps --install ./ci/control + +sudo apt-get --allow-unauthenticated install ./*all.deb || : +sudo apt-get --allow-unauthenticated install -f +rm -f ./*all.deb + + +if [ -n "$BUILD_GTK3" ] && [ "$BUILD_GTK3" = "TRUE" ]; then + sudo update-alternatives --set wx-config /usr/lib/*-linux-*/wx/config/gtk3-unicode-3.0 +fi + +rm -rf build && mkdir build && cd build + +tag=$(git tag --contains HEAD) +current_branch=$(git branch --show-current) + +if [ -n "$tag" ] || [ "$current_branch" = "master" ]; then + cmake -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=/usr/local .. +else + cmake -DCMAKE_BUILD_TYPE=Debug -DCMAKE_INSTALL_PREFIX=/usr/local .. +fi + +make -j2 +make package +ls -l diff --git a/ci/circleci-build-fedora.sh b/ci/circleci-build-fedora.sh new file mode 100644 index 0000000..d59dc2f --- /dev/null +++ b/ci/circleci-build-fedora.sh @@ -0,0 +1,13 @@ +#!/bin/sh -xe + +# +# Build the mingw artifacts inside the Fedora container +# +set -xe + +su -c "dnf install -y sudo dnf-plugins-core" +sudo dnf builddep -y ci/opencpn-fedora.spec +rm -rf build; mkdir build; cd build +cmake .. +make -j2 +make package diff --git a/ci/circleci-build-flatpak.sh b/ci/circleci-build-flatpak.sh new file mode 100644 index 0000000..0880d0c --- /dev/null +++ b/ci/circleci-build-flatpak.sh @@ -0,0 +1,106 @@ +#!/usr/bin/env bash + +# +# Build the flatpak artifacts. Uses docker to run Fedora on +# in full-fledged VM; the actual build is done in the Fedora +# container. +# +# flatpak-builder can be run in a docker image. However, this +# must then be run in privileged mode, which means it we need +# a full VM to run it. +# + +# bailout on errors and echo commands. +set -xe + +if [ "${CIRCLECI_LOCAL,,}" = "true" ]; then + if [[ -d ~/circleci-cache ]]; then + if [[ -f ~/circleci-cache/apt-proxy ]]; then + cat ~/circleci-cache/apt-proxy | sudo tee -a /etc/apt/apt.conf.d/00aptproxy + cat /etc/apt/apt.conf.d/00aptproxy + fi + fi +fi + +sudo apt-get -q -y --allow-unauthenticated --allow-downgrades --allow-remove-essential --allow-change-held-packages update + +#PLUGIN=bsb4 + +sudo apt --allow-unauthenticated --allow-downgrades --allow-remove-essential --allow-change-held-packages install flatpak flatpak-builder + +# Install extra build libs +ME=$(echo ${0##*/} | sed 's/\.sh//g') +EXTRA_LIBS=./ci/extras/extra_libs.txt +if test -f "$EXTRA_LIBS"; then + sudo apt update + while read line; do + sudo apt-get install $line + done < $EXTRA_LIBS +fi +EXTRA_LIBS=./ci/extras/${ME}_extra_libs.txt +if test -f "$EXTRA_LIBS"; then + sudo apt update + while read line; do + sudo apt-get install $line + done < $EXTRA_LIBS +fi + +git config --global protocol.file.allow always +git submodule update --init opencpn-libs + +if [ -n "$CI" ]; then + sudo apt update + + # Avoid using outdated TLS certificates, see #210. + sudo apt install --reinstall ca-certificates + + # Use updated flatpak workaround +# sudo add-apt-repository -y ppa:alexlarsson/flatpak +# sudo apt update + + # Handle possible outdated key for google packages, see #486 + wget -q -O - https://cli-assets.heroku.com/apt/release.key \ + | sudo apt-key add - + wget -q -O - https://dl.google.com/linux/linux_signing_key.pub \ + | sudo apt-key add - + + + # Install flatpak and flatpak-builder - obsoleted by flathub + sudo apt install flatpak flatpak-builder + +fi + +flatpak remote-add --user --if-not-exists \ + flathub https://dl.flathub.org/repo/flathub.flatpakrepo + + +if [ "$FLATPAK_BRANCH" = "beta" ]; then + flatpak install --user -y flathub org.freedesktop.Sdk//$SDK_VER >/dev/null + flatpak remote-add --user --if-not-exists flathub-beta \ + https://dl.flathub.org/beta-repo/flathub-beta.flatpakrepo + flatpak install --user -y flathub-beta \ + org.opencpn.OpenCPN >/dev/null +else + flatpak install --user -y flathub org.freedesktop.Sdk//$SDK_VER >/dev/null + flatpak remote-add --user --if-not-exists flathub \ + https://dl.flathub.org/repo/flathub.flatpakrepo + flatpak install --user -y flathub \ + org.opencpn.OpenCPN >/dev/null + FLATPAK_BRANCH='stable' +fi + +rm -rf build && mkdir build && cd build +if [ -n "$WX_VER" ]; then + SET_WX_VER="-DWX_VER=$WX_VER" +else + SET_WX_VER="" +fi + +if [ "$FLATPAK_BRANCH" = '' ]; then + cmake -DOCPN_TARGET=$OCPN_TARGET -DBUILD_ARCH=$BUILD_ARCH -DOCPN_FLATPAK_CONFIG=ON -DSDK_VER=$SDK_VER -DFLATPAK_BRANCH='beta' $SET_WX_VER .. +else + cmake -DOCPN_TARGET=$OCPN_TARGET -DBUILD_ARCH=$BUILD_ARCH -DOCPN_FLATPAK_CONFIG=ON -DSDK_VER=$SDK_VER -DFLATPAK_BRANCH=$FLATPAK_BRANCH $SET_WX_VER .. +fi + +make flatpak-build +make flatpak-pkg diff --git a/ci/circleci-build-jammy.sh b/ci/circleci-build-jammy.sh new file mode 100644 index 0000000..9ac70f6 --- /dev/null +++ b/ci/circleci-build-jammy.sh @@ -0,0 +1,61 @@ +#!/usr/bin/env bash + +# +# Build the Debian artifacts +# +set -xe + +if [ "${CIRCLECI_LOCAL,,}" = "true" ]; then + if [[ -d ~/circleci-cache ]]; then + if [[ -f ~/circleci-cache/apt-proxy ]]; then + cat ~/circleci-cache/apt-proxy | sudo tee -a /etc/apt/apt.conf.d/00aptproxy + cat /etc/apt/apt.conf.d/00aptproxy + fi + fi +fi + +sudo apt-get -qq update +sudo apt-get install devscripts equivs + +rm -rf build && mkdir build && cd build + +# Install extra build libs +ME=$(echo ${0##*/} | sed 's/\.sh//g') +EXTRA_LIBS=./ci/extras/extra_libs.txt +if test -f "$EXTRA_LIBS"; then + while read line; do + sudo apt-get install $line + done < $EXTRA_LIBS +fi +EXTRA_LIBS=./ci/extras/${ME}_extra_libs.txt +if test -f "$EXTRA_LIBS"; then + while read line; do + sudo apt-get install $line + done < $EXTRA_LIBS +fi + +pwd +sudo mk-build-deps --install ../ci/control + +sudo apt-get --allow-unauthenticated install ./*all.deb || : +sudo apt-get --allow-unauthenticated install -f +rm -f ./*all.deb + +sudo apt-get install libwxgtk3.2-dev + +if [ -n "$BUILD_GTK3" ] && [ "$BUILD_GTK3" = "TRUE" ]; then + sudo update-alternatives --set wx-config /usr/lib/*-linux-*/wx/config/gtk3-unicode-3.0 +fi + +tag=$(git tag --contains HEAD) +current_branch=$(git branch --show-current) + +if [ -n "$tag" ] || [ "$current_branch" = "master" ]; then + cmake -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=/usr/local .. +else + cmake -DCMAKE_BUILD_TYPE=Debug -DCMAKE_INSTALL_PREFIX=/usr/local .. +fi + +make -j2 +make package +ls -l diff --git a/ci/circleci-build-macos-universal.sh b/ci/circleci-build-macos-universal.sh new file mode 100755 index 0000000..78057d6 --- /dev/null +++ b/ci/circleci-build-macos-universal.sh @@ -0,0 +1,82 @@ +#!/usr/bin/env bash + + +# Build the MacOS artifacts + + +# Copyright (c) 2021 Alec Leamas +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 3 of the License, or +# (at your option) any later version. + +set -x + +# Load local environment if it exists i. e., this is a local build +if [ -f ~/.config/local-build.rc ]; then source ~/.config/local-build.rc; fi + +git submodule update --init + +# If applicable, restore /usr/local from cache. +if [[ -n "$CI" && -f /tmp/local.cache.tar ]]; then + sudo rm -rf /usr/local/* + sudo tar -C /usr -xf /tmp/local.cache.tar +fi + +# Set up build directory +rm -rf build && mkdir build + +# Create a log file. +exec > >(tee build/build.log) 2>&1 + +export MACOSX_DEPLOYMENT_TARGET=10.10 + +# Return latest version of $1, optionally using option $2 +pkg_version() { brew list --versions $2 $1 | tail -1 | awk '{print $2}'; } + +# +# Check if the cache is with us. If not, re-install brew. +brew list --versions libexif || brew update-reset + +# Install packaged dependencies +here=$(cd "$(dirname "$0")"; pwd) +for pkg in $(sed '/#/d' < $here/../build-deps/macos-deps); do + brew list --versions $pkg || brew install $pkg || brew install $pkg || : + brew link --overwrite $pkg || brew install $pkg +done + +#Install python virtual environment +/usr/bin/python3 -m venv $HOME/cs-venv + +#Install prebuilt dependencies +wget -q https://dl.cloudsmith.io/public/nohal/opencpn-plugins/raw/files/macos_deps_universal.tar.xz \ + -O /tmp/macos_deps_universal.tar.xz +sudo tar -C /usr/local -xJf /tmp/macos_deps_universal.tar.xz + +export OPENSSL_ROOT_DIR='/usr/local' + +# Build and package +cd build +cmake \ + "-DCMAKE_BUILD_TYPE=${CMAKE_BUILD_TYPE:-Release}" \ + -DCMAKE_INSTALL_PREFIX= \ + -DCMAKE_OSX_DEPLOYMENT_TARGET=${MACOSX_DEPLOYMENT_TARGET} \ + -DOCPN_TARGET_TUPLE="darwin-wx32;10;universal" \ + -DCMAKE_OSX_ARCHITECTURES="arm64;x86_64" \ + .. + +if [[ -z "$CI" ]]; then + echo '$CI not found in environment, assuming local setup' + echo "Complete build using 'cd build; make tarball' or so." + exit 0 +fi + +# nor-reproducible error on first invocation, seemingly tarball-conf-stamp +# is not created as required. +make package || make package + +# Create the cached /usr/local archive +if [ -n "$CI" ]; then + tar -C /usr -cf /tmp/local.cache.tar local +fi diff --git a/ci/circleci-build-macos.sh b/ci/circleci-build-macos.sh new file mode 100644 index 0000000..8c2d4a8 --- /dev/null +++ b/ci/circleci-build-macos.sh @@ -0,0 +1,98 @@ +#!/usr/bin/env bash + +# +# Build the MacOS artifacts +# + +set -xe + +set -o pipefail +# Check if the cache is with us. If not, re-install brew. +brew list --versions libexif || brew update-reset + +for pkg in cairo cmake gettext libarchive libexif python3 wget; do + brew list --versions $pkg || brew install $pkg || brew install $pkg || : + brew link --overwrite $pkg || brew install $pkg +done + +if [ -n "${WX_VER}" ] && [ "${WX_VER}" -eq "32" ]; then + echo "Building for WXVERSION 32"; + WX_URL=https://download.opencpn.org/s/Djqm4SXzYjF8nBw/download + WX_DOWNLOAD=/tmp/wx321_opencpn50_macos1010.tar.xz + WX_EXECUTABLE=/tmp/wx321_opencpn50_macos1010/bin/wx-config + WX_CONFIG="--prefix=/tmp/wx321_opencpn50_macos1010" + MACOSX_DEPLOYMENT_TARGET=10.10 +else + echo "Building for WXVERSION 315"; + WX_URL=https://download.opencpn.org/s/MCiRiq4fJcKD56r/download + WX_DOWNLOAD=/tmp/wx315_opencpn50_macos1010.tar.xz + WX_EXECUTABLE=/tmp/wx315_opencpn50_macos1010/bin/wx-config + WX_CONFIG="--prefix=/tmp/wx315_opencpn50_macos1010" + MACOSX_DEPLOYMENT_TARGET=10.10 +fi + +#Install python virtual environment +/usr/bin/python3 -m venv $HOME/cs-venv + +# Download required binaries using wget, since curl causes an issue with Xcode 13.1 and some specific certificates. +# Inspect the response code to see if the file is downloaded properly. +# If the download failed or file does not exist, then exit with an error. +# For local purposes: only download if it has not been downloaded already. That does not harm building on CircleCI. +if [ ! -f "$WX_DOWNLOAD" ]; then + echo "Downloading $WX_DOWNLOAD"; + SERVER_RESPONSE=$(wget --server-response -O $WX_DOWNLOAD $WX_URL 2>&1 | grep "HTTP"/ | awk '{print $2}') + if [ $SERVER_RESPONSE -ne 200 ]; then + echo "Fatal error: could not download $WX_DOWNLOAD. Server response: $SERVER_RESPONSE." + exit 0 + fi +fi +if [ -f "$WX_DOWNLOAD" ]; then + echo "$WX_DOWNLOAD exists" +else + echo "Fatal error: $WX_DOWNLOAD does not exist"; + exit 0 +fi + +# Unpack the binaries to /tmp +tar xJf $WX_DOWNLOAD -C /tmp + +# Extend PATH, only when necesary +INCLUDE_DIR_GETTEXT="/usr/local/opt/gettext/bin:" + +if [[ ":$PATH:" != *$INCLUDE_DIR_GETTEXT* ]]; then + echo "Your path is missing $INCLUDE_DIR_GETTEXT. Trying to add it automatically:" + export PATH=$INCLUDE_DIR_GETTEXT$PATH + echo 'export PATH="'$INCLUDE_DIR_GETTEXT'$PATH"' >> ~/.bash_profile +else + echo "Path includes $INCLUDE_DIR_GETTEXT" +fi + +export MACOSX_DEPLOYMENT_TARGET=$MACOSX_DEPLOYMENT_TARGET + +# MacOS .pkg installer is deprecated in OCPN 5.6.2+ +# use brew to get Packages.pkg +#if brew list --cask --versions packages; then +# version=$(brew list --cask --versions packages) +# version="${version/"packages "/}" +# sudo installer \ +# -pkg /usr/local/Caskroom/packages/$version/packages/Packages.pkg \ +# -target / +#else +# brew install --cask packages +#fi + +git submodule update --init opencpn-libs + +rm -rf build && mkdir build && cd build +cmake \ + -DwxWidgets_CONFIG_EXECUTABLE=$WX_EXECUTABLE \ + -DwxWidgets_CONFIG_OPTIONS=$WX_CONFIG \ + -DCMAKE_INSTALL_PREFIX=app/files \ + -DBUILD_TYPE_PACKAGE:STRING=tarball \ + -DCMAKE_OSX_DEPLOYMENT_TARGET=$MACOSX_DEPLOYMENT_TARGET \ + "/" \ + .. +make +make install +make package + diff --git a/ci/circleci-build-mingw.sh b/ci/circleci-build-mingw.sh new file mode 100644 index 0000000..a489273 --- /dev/null +++ b/ci/circleci-build-mingw.sh @@ -0,0 +1,14 @@ +#!/bin/sh -xe + +# +# Build the mingw artifacts inside the Fedora container +# + +set -xe + +su -c "dnf install -y sudo dnf-plugins-core" +sudo dnf builddep -y mingw/fedora/opencpn-deps.spec +rm -rf build; mkdir build; cd build +cmake -DCMAKE_TOOLCHAIN_FILE=../mingw/fedora/toolchain.cmake .. +make -j2 +make package diff --git a/ci/circleci-build-msvc.bat b/ci/circleci-build-msvc.bat new file mode 100644 index 0000000..b6d8e2a --- /dev/null +++ b/ci/circleci-build-msvc.bat @@ -0,0 +1,76 @@ +:: +:: Build the msvc artifacts +:: + +set "SCRIPTDIR=%~dp0" +set "GIT_HOME=C:\Program Files\Git" +if "%CONFIGURATION%" == "" set "CONFIGURATION=RelWithDebInfo" + +set wx_vers="wx%WX_VER%" +echo Building %wx_vers% +echo Building with %MSVC_VERSION% + +PATH %SCRIPTDIR%.local\bin;%PATH% +echo SCRIPTDIR: %SCRIPTDIR% +dir %SCRIPTDIR% +dir %SCRIPTDIR%.. +dir %SCRIPTDIR%..\msvc +call %SCRIPTDIR%..\msvc\win_deps.bat %wx_vers% +path %SCRIPTDIR%.local\bin;%PATH%;"C:\Program Files\CMake\bin" +call "%SCRIPTDIR%..\cache\wx-config.bat" +set PATH=%EXTRA_PATH%;%PATH% +echo EXTRA_PATH: %EXTRA_PATH% +echo USING wxWidgets_LIB_DIR: %wxWidgets_LIB_DIR% +echo USING wxWidgets_ROOT_DIR: %wxWidgets_ROOT_DIR% +echo USING OCPN_TARGET_TUPLE: %TARGET_TUPLE% + +nmake /? >nul 2>&1 +if errorlevel 1 ( + set "VS_HOME=C:\Program Files\Microsoft Visual Studio\2022" + call "%VS_HOME%\Community\VC\Auxiliary\Build\vcvars32.bat" +) + +git submodule update --init opencpn-libs + +dir + +if exist build (rmdir /s /q build) +mkdir build && cd build +dir + +wget https://sourceforge.net/projects/opencpnplugins/files/opencpn.lib +wget https://download.opencpn.org/s/oibxM3kzfzKcSc3/download/OpenCPN_buildwin-4.99a.7z +7z x -y OpenCPN_buildwin-4.99a.7z -o..\buildwin +wget https://download.opencpn.org/s/54HsBDLNzRZLL6i/download/nsis-3.04-setup.exe +nsis-3.04-setup.exe /S + +echo Check if poedit has been installed +poedit -version +echo Done check + +echo Create build environment + +if "%MSVC_VERSION%" == "2019" ( +cmake -T v141_xp -G "Visual Studio 16 2019" ^ + -DCMAKE_GENERATOR_PLATFORM=Win32 ^ + -DCMAKE_BUILD_TYPE=%CONFIGURATION% ^ + -DwxWidgets_LIB_DIR=%wxWidgets_LIB_DIR% ^ + -DwxWidgets_ROOT_DIR=%wxWidgets_ROOT_DIR% ^ + .. +) else ( +cmake -A Win32 -G "Visual Studio 17 2022" ^ + -DCMAKE_GENERATOR_PLATFORM=Win32 ^ + -DCMAKE_BUILD_TYPE=%CONFIGURATION% ^ + -DwxWidgets_LIB_DIR=%wxWidgets_LIB_DIR% ^ + -DwxWidgets_ROOT_DIR=%wxWidgets_ROOT_DIR% ^ + .. +) + + +cd +dir + +echo Build for windows + +:cmake --build . --target tarball --config %CONFIGURATION% +cmake --build . --target package --config %CONFIGURATION% diff --git a/ci/circleci-build-ubuntu-docker.sh b/ci/circleci-build-ubuntu-docker.sh new file mode 100644 index 0000000..7b0e818 --- /dev/null +++ b/ci/circleci-build-ubuntu-docker.sh @@ -0,0 +1,175 @@ +#!/usr/bin/env bash + +# +# Build for Raspbian and debian in a docker container +# + +cd ~/project + +git submodule update --init opencpn-libs + +ls -la ~/project + +# bailout on errors and echo commands. +set -x +sudo apt-get -y --allow-unauthenticated update + +DOCKER_SOCK="unix:///var/run/docker.sock" + +echo "DOCKER_OPTS=\"-H tcp://127.0.0.1:2375 -H $DOCKER_SOCK -s devicemapper\"" | sudo tee /etc/default/docker > /dev/null +sudo service docker restart +sleep 5; + +if [ "$BUILD_ENV" = "raspbian" ]; then + docker run --rm --privileged multiarch/qemu-user-static:register --reset +else + docker run --rm --privileged multiarch/qemu-user-static --reset -p yes +fi + +docker run --privileged -d -ti -e "container=docker" \ + -e "CIRCLECI=$CIRCLECI" \ + -e "CIRCLE_BRANCH=$CIRCLE_BRANCH" \ + -e "CIRCLE_TAG=$CIRCLE_TAG" \ + -e "CIRCLE_PROJECT_USERNAME=$CIRCLE_PROJECT_USERNAME" \ + -e "CIRCLE_PROJECT_REPONAME=$CIRCLE_PROJECT_REPONAME" \ + -e "GIT_REPOSITORY_SERVER=$GIT_REPOSITORY_SERVER" \ + -e "OCPN_TARGET=$OCPN_TARGET" \ + -e "BUILD_GTK3=$BUILD_GTK3" \ + -e "WX_VER=$WX_VER" \ + -e "BUILD_ENV=$BUILD_ENV" \ + -e "TZ=$TZ" \ + -e "DEBIAN_FRONTEND=$DEBIAN_FRONTEND" \ + -v $(pwd):/ci-source:rw -v ~/source_top:/source_top $DOCKER_IMAGE /bin/bash + +DOCKER_CONTAINER_ID=$(docker ps | grep $DOCKER_IMAGE | awk '{print $1}') + +echo "Target build: $OCPN_TARGET" +# Construct and run build script +rm -f build.sh + +if [ "$BUILD_ENV" = "raspbian" ]; then + if [ "$OCPN_TARGET" = "buster-armhf" ]; then + cat >> build.sh << "EOF01" + # cmake 3.16 has a bug that stops the build to use an older version + install_packages cmake=3.13.4-1 cmake-data=3.13.4-1 +EOF01 + else + cat >> build.sh << "EOF02" + install_packages cmake cmake-data +EOF02 + fi + if [ "$OCPN_TARGET" = "bullseye-armhf" ]; then + cat >> build.sh << "EOF03" + curl http://mirrordirector.raspbian.org/raspbian.public.key | apt-key add - + curl http://archive.raspbian.org/raspbian.public.key | apt-key add - + sudo apt -q --allow-unauthenticated update + sudo apt --allow-unauthenticated install devscripts equivs wget git lsb-release + sudo mk-build-deps -ir ci-source/ci/control + sudo apt-get --allow-unauthenticated install -f +EOF03 + else + cat >> build.sh << "EOF04" + install_packages git build-essential devscripts equivs gettext wx-common libgtk2.0-dev libwxbase3.0-dev libwxgtk3.0-dev libbz2-dev libcurl4-openssl-dev libexpat1-dev libcairo2-dev libarchive-dev liblzma-dev libexif-dev lsb-release +EOF04 + fi +else + if [ "$OCPN_TARGET" = "focal-arm64" ] || + [ "$OCPN_TARGET" = "focal-armhf" ] || + [ "$OCPN_TARGET" = "bullseye-armhf" ] || + [ "$OCPN_TARGET" = "bullseye-arm64" ] || + [ "$OCPN_TARGET" = "bookworm-armhf" ] || + [ "$OCPN_TARGET" = "bookworm-arm64" ] || + [ "$OCPN_TARGET" = "bookworm" ] || + [ "$OCPN_TARGET" = "buster-armhf" ]; then + cat >> build.sh << "EOF05" + echo 'debconf debconf/frontend select Noninteractive' | debconf-set-selections + apt-get -qq --allow-unauthenticated update && DEBIAN_FRONTEND='noninteractive' TZ='America/New_York' apt-get -y --no-install-recommends --allow-change-held-packages install tzdata + apt-get -y --fix-missing install --allow-change-held-packages --allow-unauthenticated \ + software-properties-common devscripts equivs wget git build-essential gettext wx-common libgtk2.0-dev libbz2-dev libcurl4-openssl-dev libexpat1-dev libcairo2-dev libarchive-dev liblzma-dev libexif-dev lsb-release openssl libssl-dev +EOF05 + if [ "$OCPN_TARGET" = "buster-armhf" ] || + [ "$OCPN_TARGET" = "bullseye-arm64" ]; then + echo "BUILD_GTK3: $BUILD_GTK3" + if [ ! -n "$BUILD_GTK3" ] || [ "$BUILD_GTK3" = "false" ]; then + echo "Building for GTK2" + cat >> build.sh << "EOF06" + apt-get -y --no-install-recommends --fix-missing --allow-change-held-packages --allow-unauthenticated install libwxgtk3.0-dev +EOF06 + else + echo "Building for GTK3" + cat >> build.sh << "EOF07" + apt-get -y --no-install-recommends --fix-missing --allow-change-held-packages --allow-unauthenticated install libwxgtk3.0-gtk3-dev +EOF07 + fi + fi + echo "WX_VER: $WX_VER" + if [ ! -n "$WX_VER" ] || [ "$WX_VER" = "30" ]; then + echo "Building for WX30" + cat >> build.sh << "EOF08" + apt-get -y --no-install-recommends --fix-missing --allow-change-held-packages --allow-unauthenticated install libwxbase3.0-dev +EOF08 + elif [ "$WX_VER" = "32" ]; then + echo "Building for WX32" + if [ "$OCPN_TARGET" = "bullseye-armhf" ] || [ "$OCPN_TARGET" = "bullseye-arm64" ]; then + cat >> build.sh << "EOF09" + echo "deb [trusted=yes] https://ppa.launchpadcontent.net/opencpn/opencpn/ubuntu jammy main" | tee -a /etc/apt/sources.list + echo "deb-src [trusted=yes] https://ppa.launchpadcontent.net/opencpn/opencpn/ubuntu jammy main" | tee -a /etc/apt/sources.list + apt-get -y --allow-unauthenticated update +EOF09 + fi + cat >> build.sh << "EOF10" + apt-get -y --fix-missing --allow-change-held-packages --allow-unauthenticated install libwxgtk3.2-dev +EOF10 + fi + if [ "$OCPN_TARGET" = "focal-armhf" ]; then + cat >> build.sh << "EOF11" + CMAKE_VERSION=3.20.5-0kitware1ubuntu20.04.1 + wget -O - https://apt.kitware.com/keys/kitware-archive-latest.asc --no-check-certificate 2>/dev/null | apt-key add - + apt-add-repository 'deb https://apt.kitware.com/ubuntu/ focal main' + apt-get --allow-unauthenticated update + apt --allow-unauthenticated install cmake=$CMAKE_VERSION cmake-data=$CMAKE_VERSION +EOF11 + else + cat >> build.sh << "EOF12" + apt install -y --allow-unauthenticated cmake +EOF12 + fi + else + cat > build.sh << "EOF13" + apt-get -qq --allow-unauthenticated update + apt-get -y --no-install-recommends --allow-change-held-packages --allow-unauthenticated install \ + git cmake build-essential gettext wx-common libgtk2.0-dev libwxbase3.0-dev libwxgtk3.0-dev libbz2-dev libcurl4-openssl-dev libexpat1-dev libcairo2-dev libarchive-dev liblzma-dev libexif-dev lsb-release +EOF13 + fi +fi + +# Install extra build libs +ME=$(echo ${0##*/} | sed 's/\.sh//g') +EXTRA_LIBS=./ci/extras/extra_libs.txt +if test -f "$EXTRA_LIBS"; then + while read line; do + sudo apt-get install $line + done < $EXTRA_LIBS +fi +EXTRA_LIBS=./ci/extras/${ME}_extra_libs.txt +if test -f "$EXTRA_LIBS"; then + while read line; do + sudo apt-get install $line + done < $EXTRA_LIBS +fi + +cat build.sh + +if type nproc &> /dev/null +then + BUILD_FLAGS="-j"$(nproc) +fi + +docker exec -ti \ + $DOCKER_CONTAINER_ID /bin/bash -xec "bash -xe ci-source/build.sh; rm -rf ci-source/build; mkdir ci-source/build; cd ci-source/build; cmake ..; make $BUILD_FLAGS; make package; chmod -R a+rw ../build;" + +echo "Stopping" +docker ps -a +docker stop $DOCKER_CONTAINER_ID +docker rm -v $DOCKER_CONTAINER_ID + diff --git a/ci/cloudsmith-upload.sh b/ci/cloudsmith-upload.sh new file mode 100644 index 0000000..be9b27a --- /dev/null +++ b/ci/cloudsmith-upload.sh @@ -0,0 +1,10 @@ +#!/usr/bin/env bash + +# +# Run created cloudsmith upload script +# + +CURRENT_DIR=$(pwd) +ls +ls build +bash $CURRENT_DIR/build/cloudsmith-upload.sh diff --git a/ci/control b/ci/control new file mode 100644 index 0000000..e477ebe --- /dev/null +++ b/ci/control @@ -0,0 +1,41 @@ +Source: opencpn +Build-Depends: debhelper (>= 9), + cmake3 | cmake (>> 3.5.0), + curl, + libarchive-dev, + libbz2-dev, + libcairo2-dev, + libcurl4-openssl-dev, + libelf-dev, + libexif-dev, + libgdk-pixbuf2.0-dev, + liblz4-dev, + liblzma-dev, + libpango1.0-dev, + libsqlite3-dev, + libtinyxml-dev, + libunarr-dev | base-files (<< 11), + libgtk2.0-dev, + libgtk-3-dev, + libwxsvg-dev | base-files (<< 11), + base-files (>=12) | libwxgtk3.0-dev | libwxgtk3.0-gtk3-dev, + base-files (>=12) | libwxgtk3.0-0v5 | libwxgtk3.0-gtk3-0v5, + base-files (>=12) | libwxgtk-webview3.0-dev | libwxgtk-webview3.0-gtk3-dev, + base-files (<< 12) | libwxgtk3.2-dev (>= 3.2.2), + base-files (<< 12) | libwxgtk-webview3.2-dev (>= 3.2.2), + portaudio19-dev, + python3-pip, + python3-setuptools + +Standards-Version: 4.3.0 +Homepage: https://opencpn.org + +Description: Packages needed to build opencpn on debian. + The Build-Depends field can be used to install dependencies + using something like: + . + . sudo apt install devscripts equivs + . sudo mk-build-deps --install ci/control + . + These packages are available in trusty+. The base-files + fallback is for optional packages available in later releases. diff --git a/ci/extras/README.txt b/ci/extras/README.txt new file mode 100644 index 0000000..be190a2 --- /dev/null +++ b/ci/extras/README.txt @@ -0,0 +1,14 @@ +This directory can contain 0, 1, or more files that can be used to install extra libraries/programs +that need to be installed to ensure the build will be sucessful. There are three basic file names: + extra_libs.txt + {script name}_extra_libs.txt + {CIRCLE_JOB}_extra.libs.txt + +The first will be executed by all scripts, the second will only be executed by a specific script. +The second form will look like: + circleci-build-debian_extra_libs.txt +where 'circleci-build-debian' is the script name with the '.sh' removed. +The third form will look like: + build-jammy_extra_libs.txt +where 'build-jammy' is the circleci job. + diff --git a/ci/extras/circleci-build-flatpak_extra_libs.txt b/ci/extras/circleci-build-flatpak_extra_libs.txt new file mode 100644 index 0000000..1ce3f6b --- /dev/null +++ b/ci/extras/circleci-build-flatpak_extra_libs.txt @@ -0,0 +1 @@ +libcurl4-openssl-dev diff --git a/ci/extras/extra_libs.txt b/ci/extras/extra_libs.txt new file mode 100644 index 0000000..efaa0f4 --- /dev/null +++ b/ci/extras/extra_libs.txt @@ -0,0 +1 @@ +equivs diff --git a/ci/opencpn-deps.spec b/ci/opencpn-deps.spec new file mode 100644 index 0000000..219d5f8 --- /dev/null +++ b/ci/opencpn-deps.spec @@ -0,0 +1,66 @@ +Name: opencpn-deps +Version: 0.1 +Release: 1%{?dist} +Summary: Empty package with opencpn build dependencies + +License: MIT +URL: https://github.com/leamas/opencpn + +BuildRequires: cmake +BuildRequires: gettext +BuildRequires: make +BuildRequires: mingw-binutils-generic +BuildRequires: mingw-filesystem-base +BuildRequires: mingw32-binutils +BuildRequires: mingw32-bzip2 +BuildRequires: mingw32-cairo +BuildRequires: mingw32-curl +BuildRequires: mingw32-expat +BuildRequires: mingw32-filesystem +BuildRequires: mingw32-fontconfig +BuildRequires: mingw32-freetype +BuildRequires: mingw32-gcc +BuildRequires: mingw32-gcc-c++ +BuildRequires: mingw32-cpp +BuildRequires: mingw32-gettext +BuildRequires: mingw32-headers +BuildRequires: mingw32-glib2 +BuildRequires: mingw32-gtk2 +BuildRequires: mingw32-libarchive +BuildRequires: mingw32-libexif +BuildRequires: mingw32-libffi +BuildRequires: mingw32-libpng +BuildRequires: mingw32-libtiff +BuildRequires: mingw32-libxml2 +BuildRequires: mingw32-nsiswrapper +BuildRequires: mingw32-openssl +BuildRequires: mingw32-pcre +BuildRequires: mingw32-pixman +BuildRequires: mingw32-sqlite +BuildRequires: mingw32-win-iconv +BuildRequires: mingw32-wxWidgets3 >= 3.0.2 +BuildRequires: mingw32-xz-libs + +%description + +Empty package used to catch build dependencies for opencpn using +the mingw tools to create a Windows 32-bit executable + +Use dnf builddep opencpn-deps.spec to install the dependencies. + +%prep + + +%build + + +%install + + +%files +%doc COPYING + + +%changelog +* Fri Mar 15 2020 - 0.1 +- Initial release diff --git a/ci/opencpn-fedora.spec b/ci/opencpn-fedora.spec new file mode 100644 index 0000000..292dfee --- /dev/null +++ b/ci/opencpn-fedora.spec @@ -0,0 +1,37 @@ +Name: opencpn +Summary: Chartplotter and GPS navigation software +Version: 5.0.0 +Release: 4.1%{?dist} +License: GPLv2+ + +BuildRequires: bzip2-devel +BuildRequires: cmake +BuildRequires: curl +BuildRequires: desktop-file-utils +BuildRequires: elfutils-libelf-devel +BuildRequires: expat-devel +BuildRequires: gcc-c++ +BuildRequires: gettext +BuildRequires: libcurl-devel +BuildRequires: mesa-libGL-devel +BuildRequires: mesa-libGLU-devel +BuildRequires: portaudio-devel +BuildRequires: redhat-lsb-core +BuildRequires: tar +BuildRequires: tinyxml-devel +BuildRequires: compat-wxGTK3-gtk2-devel +BuildRequires: xz-devel +BuildRequires: xz-lzma-compat + +%description +Empty package to catch build dependecies for OpenCPN + +%prep + +%build + +%install + +%changelog +* Sun Apr 28 2019 Alec Leamas - 4.8.0-4.1 +- rebuilt diff --git a/cmake/FindGTK3.cmake b/cmake/FindGTK3.cmake new file mode 100644 index 0000000..b622378 --- /dev/null +++ b/cmake/FindGTK3.cmake @@ -0,0 +1,64 @@ +# - Try to find GTK+ 3 Once done, this will define +# +# GTK3_FOUND - system has GTK+ 3. GTK3_INCLUDE_DIRS - the GTK+ 3. include +# directories GTK3_LIBRARIES - link these to use GTK+ 3. +# +# Copyright (C) 2012 Raphael Kubo da Costa Copyright (C) +# 2013 Igalia S.L. +# +# Redistribution and use in source and binary forms, with or without +# modification, are permitted provided that the following conditions are met: 1. +# Redistributions of source code must retain the above copyright notice, this +# list of conditions and the following disclaimer. 2. Redistributions in binary +# form must reproduce the above copyright notice, this list of conditions and +# the following disclaimer in the documentation and/or other materials provided +# with the distribution. +# +# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDER AND ITS CONTRIBUTORS ``AS +# IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +# DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR ITS CONTRIBUTORS BE +# LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR +# CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF +# SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS +# INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN +# CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) +# ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE +# POSSIBILITY OF SUCH DAMAGE. +set(FindGTK3_SAVE_CMLOC ${CMLOC}) +set(CMLOC "FindGTK3: ") + +message(STATUS "${CMLOC}Finding package PkgConfig") +find_package(PkgConfig) +pkg_check_modules(GTK3 gtk+-3.0) +set(VERSION_OK TRUE) +if (GTK3_VERSION) + message(STATUS "${CMLOC}Found GTK3_VERSION") + if (GTK3_FIND_VERSION_EXACT) + message(STATUS "${CMLOC}Find exact version of GTK3") + if (NOT ("${GTK3_FIND_VERSION}" VERSION_EQUAL "${GTK3_VERSION}")) + set(VERSION_OK FALSE) + message( + STATUS + "${CMLOC}GTK3 exact version not found: GTK3_FIND_VERSION: ${GTK3_FIND_VERSION} != GTK3_VERSION: ${GTK3_VERSION}" + ) + endif () + else () + if ("${GTK3_VERSION}" VERSION_LESS "${GTK3_FIND_VERSION}") + set(VERSION_OK FALSE) + message( + STATUS + "${CMLOC}GTK3 exact version not found: GTK3_VERSION: ${GTK3_VERSION} < GTK3_FIND_VERSION: ${GTK3_FIND_VERSION}" + ) + endif () + endif () +elseif () + message(STATUS "${CMLOC}GTK3 not found") +endif () +include(FindPackageHandleStandardArgs) +find_package_handle_standard_args( + GTK3 DEFAULT_MSG GTK3_INCLUDE_DIRS GTK3_LIBRARIES VERSION_OK +) +message(STATUS "${CMLOC}Finished FindGTK3") + +set(CMLOC ${FindGTK3_SAVE_CMLOC}) diff --git a/cmake/MacosWxwidgets.cmake b/cmake/MacosWxwidgets.cmake new file mode 100644 index 0000000..8e6395d --- /dev/null +++ b/cmake/MacosWxwidgets.cmake @@ -0,0 +1,98 @@ +# ~~~ +# Summary: If required, rebuild wxwidgets for macos from source. +# License: GPLv3+ +# Copyright (c) 2022 Alec Leamas +# ~~~ + +# This program is free software; you can redistribute it and/or modify it under +# the terms of the GNU General Public License as published by the Free Software +# Foundation; either version 3 of the License, or (at your option) any later +# version. + +cmake_minimum_required(VERSION 3.20.0) + +set(wx_repo https://github.com/wxWidgets/wxWidgets.git) +set(wx_tag v3.2.2.1) + +option(IGNORE_SYSTEM_WX "Never use system wxWidgets installation" FALSE) + +# Check if we have done the wxWidgets build already +# +if (DEFINED wx_config) + return() +endif () + +# Check if there is a usable wxwidgets anyway +# +set(cache_dir ${PROJECT_SOURCE_DIR}/cache) + +if (IGNORE_SYSTEM_WX) + set(WX_CONFIG_PROG ${cache_dir}/lib/wx/config/osx_cocoa-unicode-3.2) +else () + find_program( + WX_CONFIG_PROG + NAMES wx-config osx_cocoa-unicode-3.2 + HINTS ${PROJECT_SOURCE_DIR}/cache/lib/wx/config /usr/local/lib/wx/config + ) +endif () +if (WX_CONFIG_PROG) + execute_process( + COMMAND ${WX_CONFIG_PROG} --version + RESULT_VARIABLE wx_status + OUTPUT_VARIABLE wx_version + ERROR_FILE /dev/null COMMAND_ECHO STDOUT + OUTPUT_STRIP_TRAILING_WHITESPACE + ) +else () + set(wx_status 1) +endif () + +if (${wx_status} EQUAL 0) + set(wx_config + ${WX_CONFIG_PROG} + CACHE FILEPATH "" + ) + set(ENV{WX_CONFIG} ${WX_CONFIG_PROG}) + if (${wx_version} VERSION_GREATER_EQUAL 3.2) + return() + endif () +endif () + +if (NOT EXISTS ${cache_dir}) + file(MAKE_DIRECTORY ${cache_dir}) +endif () + +# Download sources and get the source directory +# +include(FetchContent) +fetchcontent_declare( + wxwidgets + GIT_REPOSITORY ${wx_repo} + GIT_TAG ${wx_tag} +) +fetchcontent_populate(wxwidgets) +fetchcontent_getproperties(wxwidgets SOURCE_DIR wxwidgets_src_dir) + +execute_process( + COMMAND git submodule update --init 3rdparty/pcre + WORKING_DIRECTORY ${wxwidgets_src_dir} +) +execute_process( + COMMAND + ./configure --with-cxx=11 --with-macosx-version-min=10.10 --enable-unicode + --with-osx-cocoa --enable-aui --disable-debug --with-opengl + --enable-macosx_arch=arm64,x86_64 --enable-universal_binary=arm64,x86_64 + --without-subdirs --prefix=${cache_dir} + WORKING_DIRECTORY ${wxwidgets_src_dir} +) +math(_nproc ${OCPN_NPROC} * 2) # Assuming two threads/cpu +execute_process(COMMAND make -j${_nproc} WORKING_DIRECTORY ${wxwidgets_src_dir}) +execute_process( + COMMAND sudo make install WORKING_DIRECTORY ${wxwidgets_src_dir} +) + +set(wx_config ${cache_dir}/lib/wx/config/osx_cocoa-unicode-3.2) +if (NOT EXISTS ${wx_config}) + message(FATAL_ERROR "Cannot locate wx-config tool at ${wx_config}") +endif () +set(ENV{WX_CONFIG} ${wx_config}) diff --git a/cmake/PluginConfigure.cmake b/cmake/PluginConfigure.cmake index d5f6150..2839aa7 100644 --- a/cmake/PluginConfigure.cmake +++ b/cmake/PluginConfigure.cmake @@ -1,290 +1,901 @@ -##--------------------------------------------------------------------------- -## Author: Sean D'Epagnier -## Copyright: -## License: GPLv3+ -##--------------------------------------------------------------------------- - -# To build for android, use this cmake invocation.. -#$cmake -DCMAKE_TOOLCHAIN_FILE=../buildandroid/build_android.cmake - - -SET(PLUGIN_SOURCE_DIR .) - - -MESSAGE (STATUS "*** Building ${PACKAGE_NAME} ***") - -MESSAGE (STATUS "Build type: ${CMAKE_BUILD_TYPE}") -IF (PREFIX) - SET(CMAKE_INSTALL_PREFIX ${PREFIX}) -ENDIF (PREFIX) - -SET(PREFIX_BIN bin) -SET(PREFIX_INCLUDE include) -SET(PREFIX_DATA share) -SET(PREFIX_PKGDATA ${PREFIX_DATA}/${PACKAGE_NAME}) - -IF (NOT WIN32) - # default - SET (ARCH "i386") - IF (UNIX AND NOT APPLE) - MESSAGE (STATUS "*** Will install to ${CMAKE_INSTALL_PREFIX} ***") - - IF (EXISTS /etc/debian_version) - SET (PACKAGE_FORMAT "DEB") - #SET (PACKAGE_DEPS "libc6, libwxgtk3.0-0, libglu1-mesa (>= 7.0.0)") - SET (LIB_INSTALL_DIR "lib") - IF (CMAKE_SIZEOF_VOID_P MATCHES "8") - SET (ARCH "amd64") - ELSE (CMAKE_SIZEOF_VOID_P MATCHES "8") - SET (ARCH "i386") - ENDIF (CMAKE_SIZEOF_VOID_P MATCHES "8") - ENDIF (EXISTS /etc/debian_version) - IF (EXISTS /etc/redhat-release) - SET (PACKAGE_FORMAT "RPM") - SET (PACKAGE_DEPS "opencpn") - IF (CMAKE_SIZEOF_VOID_P MATCHES "8") - SET (ARCH "x86_64") - SET (LIB_INSTALL_DIR "lib64") - ELSE (CMAKE_SIZEOF_VOID_P MATCHES "8") - SET (ARCH "i386") - SET (LIB_INSTALL_DIR "lib") - ENDIF (CMAKE_SIZEOF_VOID_P MATCHES "8") - ENDIF (EXISTS /etc/redhat-release) - ENDIF (UNIX AND NOT APPLE) -endif(NOT WIN32) - -IF (CMAKE_SYSTEM_PROCESSOR MATCHES "arm*") - SET (ARCH "armhf") - ADD_DEFINITIONS( -DARMHF ) -ENDIF (CMAKE_SYSTEM_PROCESSOR MATCHES "arm*") - -MESSAGE (STATUS "*** Build Architecture is ${ARCH}") - - -IF(DEFINED _wx_selected_config) - -# May be overridden -IF(NOT DEFINED Qt_Build) - SET(Qt_Build "android_armv7") -ENDIF(NOT DEFINED Qt_Build) - -MESSAGE (STATUS "selected config ${_wx_selected_config}") - -IF(_wx_selected_config MATCHES "androideabi-qt") - MESSAGE (STATUS "Building for wxQt-Android") - MESSAGE (STATUS "Qt_Base/Build: " ${Qt_Base} "/" ${Qt_Build}) - MESSAGE (STATUS "wxQt_Base/Build: " ${wxQt_Base} "/" ${wxQt_Build}) - SET(QT_ANDROID "ON") - SET(QT_LINUX "OFF") - SET(QT "ON") -ENDIF(_wx_selected_config MATCHES "androideabi-qt") - -ENDIF(DEFINED _wx_selected_config) - - -MESSAGE (STATUS "*** Staging to build ${PACKAGE_NAME} ***") - -include ("VERSION.cmake") - -# Do the version.h configuration into the build output directory, -# thereby allowing building from a read-only source tree. -IF(NOT SKIP_VERSION_CONFIG) - configure_file(${PROJECT_SOURCE_DIR}/cmake/version.h.in ${CMAKE_CURRENT_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/include/version.h) - configure_file(cmake/wxWTranslateCatalog.h.in ${PROJECT_SOURCE_DIR}/src/wxWTranslateCatalog.h) - INCLUDE_DIRECTORIES(${CMAKE_CURRENT_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/include) -ENDIF(NOT SKIP_VERSION_CONFIG) - -SET(PLUGIN_VERSION "${PLUGIN_VERSION_MAJOR}.${PLUGIN_VERSION_MINOR}.${PLUGIN_VERSION_PATCH}" ) - -INCLUDE_DIRECTORIES(${PROJECT_SOURCE_DIR}/include ${PROJECT_SOURCE_DIR}/src) +# --------------------------------------------------------------------------- +# Author: Jon Gough (Based on the work of Sean D'Epagnier and Pavel Kalian) +# Copyright: 2019 License: GPLv3+ +# --------------------------------------------------------------------------- + +set(SAVE_CMLOC ${CMLOC}) +set(CMLOC "PluginConfigure: ") + +message(STATUS "${CMLOC}*** Staging to build ${PACKAGE_NAME} ***") + +message(STATUS "${CMLOC}CIRCLECI: ${CIRCLECLI}, Env CIRCLECI: $ENV{CIRCLECI}") +message(STATUS "${CMLOC}TRAVIS: ${TRAVIS}, Env TRAVIS: $ENV{TRAVIS}") + +set(GIT_REPOSITORY "") + +if ($ENV{CIRCLECI}) + set(GIT_REPOSITORY + "$ENV{CIRCLE_PROJECT_USERNAME}/$ENV{CIRCLE_PROJECT_REPONAME}" + ) + set(GIT_REPOSITORY_BRANCH "$ENV{CIRCLE_BRANCH}") + set(GIT_REPOSITORY_TAG "$ENV{CIRCLE_TAG}") +elseif ($ENV{TRAVIS}) + set(GIT_REPOSITORY "$ENV{TRAVIS_REPO_SLUG}") + set(GIT_REPOSITORY_BRANCH "$ENV{TRAVIS_BRANCH}") + set(GIT_REPOSITORY_TAG "$ENV{TRAVIS_TAG}") + if ("${GIT_REPOSITORY_BRANCH}" STREQUAL "${GIT_REPOSITORY_TAG}") + # Travis sets TRAVIS_BRANCH to TRAVIS_TAG for tagged builds. Need to clear + # this setting + set(GIT_REPOSITORY_BRANCH "") + endif () +elseif ($ENV{APPVEYOR}) + set(GIT_REPOSITORY "$ENV{APPVEYOR_REPO_NAME}") + set(GIT_REPOSITORY_BRANCH "$ENV{APPVEYOR_REPO_BRANCH}") + set(GIT_REPOSITORY_TAG "$ENV{APPVEYOR_REPO_TAG_NAME}") +else () + if ("${GIT_REPOSITORY_EXISTS}" STREQUAL "0") + # Get the current working branch + execute_process( + COMMAND git rev-parse --abbrev-ref HEAD + WORKING_DIRECTORY ${PROJECT_SOURCE_DIR} + OUTPUT_VARIABLE GIT_REPOSITORY_BRANCH + OUTPUT_STRIP_TRAILING_WHITESPACE + ) + if ("${GIT_REPOSITORY_BRANCH}" STREQUAL "") + message(STATUS "${CMLOC}Setting default GIT repository branch - master") + set(GIT_REPOSITORY_BRANCH "master") + endif () + execute_process( + COMMAND git tag --contains + WORKING_DIRECTORY ${PROJECT_SOURCE_DIR} + OUTPUT_VARIABLE GIT_REPOSITORY_TAG + OUTPUT_STRIP_TRAILING_WHITESPACE + ) + execute_process( + COMMAND git status --porcelain -b + WORKING_DIRECTORY ${PROJECT_SOURCE_DIR} + OUTPUT_VARIABLE GIT_STATUS + OUTPUT_STRIP_TRAILING_WHITESPACE + ) + string(FIND ${GIT_STATUS} "..." START_TRACKED) + if (NOT START_TRACKED EQUAL -1) + string(FIND ${GIT_STATUS} "/" END_TRACKED) + math(EXPR START_TRACKED "${START_TRACKED}+3") + math(EXPR END_TRACKED "${END_TRACKED}-${START_TRACKED}") + string(SUBSTRING ${GIT_STATUS} ${START_TRACKED} ${END_TRACKED} + GIT_REPOSITORY_REMOTE + ) + message(STATUS "${CMLOC}GIT_REPOSITORY_REMOTE: ${GIT_REPOSITORY_REMOTE}") + execute_process( + COMMAND git remote get-url ${GIT_REPOSITORY_REMOTE} + WORKING_DIRECTORY ${PROJECT_SOURCE_DIR} + OUTPUT_VARIABLE GIT_REPOSITORY_URL + OUTPUT_STRIP_TRAILING_WHITESPACE + ERROR_VARIABLE GIT_REMOTE_ERROR + ) + if (NOT GIT_REMOTE_ERROR STREQUAL "") + message(STATUS "${CMLOC}Command error: ${GIT_REMOTE_ERROR}") + message(STATUS "${CMLOC}Using default repository") + else () + string(FIND ${GIT_REPOSITORY_URL} ${GIT_REPOSITORY_SERVER} START_URL + REVERSE + ) + string(LENGTH ${GIT_REPOSITORY_SERVER} STRING_LENGTH) + math(EXPR START_URL "${START_URL}+1+${STRING_LENGTH}") + string(LENGTH ${GIT_REPOSITORY_URL} STRING_LENGTH) + message( + STATUS + "${CMLOC}START_URL: ${START_URL}, STRING_LENGTH: ${STRING_LENGTH}" + ) + string(SUBSTRING ${GIT_REPOSITORY_URL} ${START_URL} ${STRING_LENGTH} + GIT_REPOSITORY + ) + endif () + else () + message(STATUS "${CMLOC}Branch is not tracking a remote branch") + endif () + else () + message( + STATUS + "${CMLOC}This directory does not contain git or git is not available" + ) + set(GIT_REPOSITORY "") + set(GIT_REPOSITORY_BRANCH "") + set(GIT_REPOSITORY_TAG "") + endif () +endif () +message(STATUS "${CMLOC}GIT_REPOSITORY: ${GIT_REPOSITORY}") +message(STATUS "${CMLOC}Git Branch: \"${GIT_REPOSITORY_BRANCH}\"") +message(STATUS "${CMLOC}Git Tag: \"${GIT_REPOSITORY_TAG}\"") +if ("${GIT_REPOSITORY_BRANCH}" STREQUAL "") + set(GIT_BRANCH_OR_TAG "tag") + set(GIT_REPOSITORY_ITEM ${GIT_REPOSITORY_TAG}) +else () + set(GIT_BRANCH_OR_TAG "branch") + set(GIT_REPOSITORY_ITEM ${GIT_REPOSITORY_BRANCH}) +endif () +message(STATUS "${CMLOC}GIT_BRANCH_OR_TAG: ${GIT_BRANCH_OR_TAG}") +message(STATUS "${CMLOC}GIT_REPOSITORY_ITEM: ${GIT_REPOSITORY_ITEM}") + +if (NOT DEFINED CLOUDSMITH_BASE_REPOSITORY AND NOT ${GIT_REPOSITORY} STREQUAL + "" +) + string(FIND ${GIT_REPOSITORY} "/" START_NAME REVERSE) + math(EXPR START_NAME "${START_NAME}+1") + string(LENGTH ${GIT_REPOSITORY} STRING_LENGTH) + message( + STATUS "${CMLOC}START_NAME: ${START_NAME}, STRING_LENGTH: ${STRING_LENGTH}" + ) + string(SUBSTRING ${GIT_REPOSITORY} ${START_NAME} ${STRING_LENGTH} + CLOUDSMITH_BASE_REPOSITORY + ) +endif () +message( + STATUS "${CMLOC}CLOUDSMITH_BASE_REPOSITORY: ${CLOUDSMITH_BASE_REPOSITORY}" +) + +# Process files in in-files sub directory into the build output directory, +# thereby allowing building from a read-only source tree. +if (NOT SKIP_VERSION_CONFIG) + if (MINGW) + message( + STATUS "${CMLOC}Temporarily allowing different search path for MINGW" + ) + set(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE_SAVE + ${CMAKE_FIND_ROOT_PATH_MODE_INCLUDE} + ) + set(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE NEVER) + endif () + set(BUILD_INCLUDE_PATH ${CMAKE_CURRENT_BINARY_DIR}${CMAKE_FILES_DIRECTORY}) + unset(PLUGIN_EXTRA_VERSION_VARS CACHE) + find_file( + PLUGIN_EXTRA_VERSION_VARS + NAMES version.h.extra + PATHS ${CMAKE_CURRENT_LIST_DIR}/in-files + NO_DEFAULT_PATH NO_CMAKE_FIND_ROOT_PATH + ) + if (${PLUGIN_EXTRA_VERSION_VARS} STREQUAL + "PLUGIN_EXTRA_VERSION_VARS-NOTFOUND" + ) + message(STATUS "${CMLOC}PLUGIN_EXTRA_VERSION_VARS: Not Found") + set(EXTRA_VERSION_INFO "") + else () + message(STATUS "${CMLOC}PLUGIN_EXTRA_VERSION_VARS: Found") + configure_file( + ${PLUGIN_EXTRA_VERSION_VARS} + ${BUILD_INCLUDE_PATH}/include/version_extra.h + ) + set(EXTRA_VERSION_INFO "#include \"version_extra.h\"") + endif () + find_file( + PLUGIN_EXTRA_FORMBUILDER_HEADERS + NAMES extra_formbuilder_headers.h.in + PATHS ${CMAKE_CURRENT_LIST_DIR}/in-files + NO_DEFAULT_PATH NO_CMAKE_FIND_ROOT_PATH + ) + message( + STATUS + "${CMLOC}PLUGIN_EXTRA_FORMBUILDER_HEADERS: ${PLUGIN_EXTRA_FORMBUILDER_HEADERS}" + ) + if (${PLUGIN_EXTRA_FORMBUILDER_HEADERS} STREQUAL + "PLUGIN_EXTRA_FORMBUILDER_HEADERS-NOTFOUND" + ) + message(STATUS "${CMLOC}PLUGIN_EXTRA_FORMBUILDER_HEADERS: Not found") + else () + message(STATUS "${CMLOC}PLUGIN_EXTRA_FORMBUILDER_HEADERS: Found") + configure_file( + ${PLUGIN_EXTRA_FORMBUILDER_HEADERS} + ${BUILD_INCLUDE_PATH}/include/extra_formbuilder_headers.h + ) + endif () + configure_file( + ${CMAKE_CURRENT_LIST_DIR}/in-files/version.h.in + ${BUILD_INCLUDE_PATH}/include/version.h + ) + configure_file( + ${CMAKE_CURRENT_LIST_DIR}/in-files/wxWTranslateCatalog.h.in + ${BUILD_INCLUDE_PATH}/include/wxWTranslateCatalog.h + ) + include_directories(${BUILD_INCLUDE_PATH}/include) + if (MINGW) + set(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE + ${CMAKE_FIND_ROOT_PATH_MODE_INCLUDE_SAVE} + ) + endif () +endif (NOT SKIP_VERSION_CONFIG) + +# configure xml file for circleci +message(STATUS "${CMLOC}ENV BUILD_GTK2: $ENV{BUILD_GTK2}") +string(TOUPPER "$ENV{BUILD_GTK2}" BUILD_GTK2_TEMP) +set(ENV{BUILD_GTK2} ${BUILD_GTK2_TEMP}) +unset(BUILD_GTK2_TEMP) + +message(STATUS "${CMLOC}ENV BUILD_GTK3: $ENV{BUILD_GTK3}") +string(TOUPPER "$ENV{BUILD_GTK3}" BUILD_GTK3_TEMP) +set(ENV{BUILD_GTK3} ${BUILD_GTK3_TEMP}) +unset(BUILD_GTK3_TEMP) +string(TOUPPER "$ENV{BUILD_ENV}" BUILD_ENV_TEMP) +message( + STATUS + "${CMLOC}BUILD_ENV: $ENV{BUILD_ENV}, BUILD_ENV_TEMP ${BUILD_ENV_TEMP}, OCPN_TARGET: $ENV{OCPN_TARGET}" +) +message(STATUS "${CMLOC}Doing build_gtk3: $ENV{BUILD_GTK3}") +if ("$ENV{BUILD_GTK3}" STREQUAL "TRUE" + AND (("${BUILD_ENV_TEMP}" STREQUAL "UBUNTU" AND NOT "$ENV{OCPN_TARGET}" + STREQUAL "jammy") + OR "$ENV{OCPN_TARGET}" STREQUAL "buster-armhf") +) + set(PKG_TARGET_GTK "gtk3") + message(STATUS "${CMLOC}Found gtk3") +else () + unset(PKG_TARGET_GTK) +endif () +message(STATUS "${CMLOC}PKG_TARGET_GTK: ${PKG_TARGET_GTK}") + +if (UNIX AND NOT APPLE) + # Handle gtk3 build variant + string(STRIP "${PKG_TARGET}" PKG_TARGET) + string(TOLOWER "${PKG_TARGET}" PKG_TARGET) + + # Generate architecturally uniques names for linux output packages + if (ARCH MATCHES "aarch64") + set(PKG_TARGET_ARCH "-aarch64") + elseif (ARCH MATCHES "arm64") + set(PKG_TARGET_ARCH "-arm64") + elseif (ARCH MATCHES "armhf") + set(PKG_TARGET_ARCH "-armhf") + elseif (ARCH MATCHES "i386") + set(PKG_TARGET_ARCH "-i386") + elseif (ARCH MATCHES "amd64") + set(PKG_TARGET_ARCH "-amd64") + else () + set(PKG_TARGET_ARCH "-x86_64") + endif () +else () + if (MINGW) + set(PKG_TARGET_ARCH "-x86_64") + else (MINGW) + set(PKG_TARGET_ARCH "") + endif (MINGW) +endif () + +message(STATUS "${CMLOC}ARCH: ${ARCH}") + +if ("${PKG_BUILD_TARGET}" STREQUAL "") + set(PKG_BUILD_TARGET "${PKG_TARGET}") + set(PKG_TARGET_BUILD "-${PKG_BUILD_TARGET}") +endif () + +if (NOT WIN32 + AND NOT APPLE + AND NOT QT_ANDROID +) + if(BUILD_GTK2) + find_package(GTK2) + endif() + + if (GTK2_FOUND AND NOT "$ENV{BUILD_GTK3}" STREQUAL "TRUE") + set(wxWidgets_CONFIG_OPTIONS ${wxWidgets_CONFIG_OPTIONS} --toolkit=gtk2) + include_directories(${GTK2_INCLUDE_DIRS}) + set(GTK_LIBRARIES ${GTK2_LIBRARIES}) + set(PKG_BUILT_WITH_GTK "gtk2") + message(STATUS "${CMLOC}Building against GTK2...") + else (GTK2_FOUND AND NOT "$ENV{BUILD_GTK3}" STREQUAL "TRUE") + find_package(GTK3) + if (GTK3_FOUND) + include_directories(${GTK3_INCLUDE_DIRS}) + set(GTK_LIBRARIES ${GTK3_LIBRARIES}) + set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -D__WXGTK3__") + set(wxWidgets_CONFIG_OPTIONS ${wxWidgets_CONFIG_OPTIONS} --toolkit=gtk3) + set(PKG_BUILT_WITH_GTK "gtk3") + message(STATUS "${CMLOC}Building against GTK3...") + else (GTK3_FOUND) + message(STATUS "${CMLOC} Unix: Neither FATAL_ERROR GTK2 nor GTK3") + set(PKG_BUILT_WITH_GTK "") + endif (GTK3_FOUND) + endif (GTK2_FOUND AND NOT "$ENV{BUILD_GTK3}" STREQUAL "TRUE") + set(EXTRA_LIBS ${EXTRA_LIBS} ${GTK_LIBRARIES}) +else () + set(PKG_BUILT_WITH_GTK "${PKG_TARGET_GTK}") +endif ( + NOT WIN32 + AND NOT APPLE + AND NOT QT_ANDROID +) + +if (NOT "${PKG_TARGET_GTK}" STREQUAL "") + set(PKG_BUILD_GTK "-${PKG_TARGET_GTK}") + set(PKG_TARGET_GTK "-${PKG_TARGET_GTK}") +endif () + +message( + STATUS + "${CMLOC}PKG_NVR: ${PKG_NVR}, PKG_TARGET: ${PKG_TARGET}, ARCH: ${ARCH}, PKG_TARGET_WX_VER: ${PKG_TARGET_WX_VER}, PKG_BUILD_GTK: ${PKG_BUILD_GTK}, PKG_TARGET_VERSION: ${PKG_TARGET_VERSION}, OCPN_TARGET: $ENV{OCPN_TARGET}" +) +if (DEFINED ENV{OCPN_TARGET}) + message(STATUS "${CMLOC}OCPN_TARGET defined: $ENV{OCPN_TARGET}") + if (OCPN_FLATPAK_CONFIG + OR OCPN_FLATPAK_BUILD + OR MINGW + OR MSVC + OR (("$ENV{OCPN_TARGET}" STREQUAL "bookworm-armhf" + OR "$ENV{OCPN_TARGET}" STREQUAL "bookworm-arm64") + AND "$ENV{BUILD_ENV}" STREQUAL "debian") + OR (("$ENV{OCPN_TARGET}" STREQUAL "bullseye-armhf" + OR "$ENV{OCPN_TARGET}" STREQUAL "bullseye-arm64") + AND "$ENV{WX_VER}" STREQUAL "32" + AND "$ENV{BUILD_ENV}" STREQUAL "debian" + ) + ) + message(STATUS "${CMLOC}Including $ENV{OCPN_TARGET} $ENV{BUILD_ENV}") + set(PACKAGING_NAME + "${PKG_NVR}-${PKG_TARGET}-${ARCH}${PKG_TARGET_WX_VER}${PKG_BUILD_GTK}-${PKG_TARGET_VERSION}-$ENV{OCPN_TARGET}" + ) + set(PACKAGING_NAME_XML + "${PKG_NVR}-${PKG_TARGET}-${ARCH}${PKG_TARGET_WX_VER}${PKG_BUILD_GTK}-${PKG_TARGET_VERSION}-$ENV{OCPN_TARGET}" + ) + else () + if (APPLE AND CMAKE_OSX_ARCHITECTURES) + set(PACKAGING_NAME + "${PKG_NVR}-${PKG_TARGET}-${PKG_TARGET_VERSION}${PKG_BUILD_GTK}-$ENV{OCPN_TARGET}" + ) + set(PACKAGING_NAME_XML + "${PKG_NVR}-${PKG_TARGET}-${COMPOUND_ARCH_DASH}-${PKG_TARGET_VERSION}${PKG_BUILD_GTK}-$ENV{OCPN_TARGET}" + ) + else () + set(PACKAGING_NAME + "${PKG_NVR}-${PKG_TARGET}-${PKG_TARGET_VERSION}${PKG_BUILD_GTK}-$ENV{OCPN_TARGET}" + ) + set(PACKAGING_NAME_XML + "${PKG_NVR}-${PKG_TARGET}-${ARCH}-${PKG_TARGET_VERSION}${PKG_BUILD_GTK}-$ENV{OCPN_TARGET}" + ) + endif () + endif () +else () + if (OCPN_FLATPAK_CONFIG + OR OCPN_FLATPAK_BUILD + OR MINGW + OR MSVC + ) + set(PACKAGING_NAME + "${PKG_NVR}-${PKG_TARGET}-${ARCH}-${PKG_TARGET_VERSION}${PKG_BUILD_GTK}" + ) + set(PACKAGING_NAME_XML + "${PKG_NVR}-${PKG_TARGET}-${ARCH}-${PKG_TARGET_VERSION}${PKG_BUILD_GTK}" + ) + else ( + OCPN_FLATPAK_CONFIG + OR OCPN_FLATPAK_BUILD + OR MINGW + OR MSVC + ) + set(PACKAGING_NAME + "${PKG_NVR}-${PKG_TARGET}-${PKG_TARGET_VERSION}${PKG_BUILD_GTK}" + ) + set(PACKAGING_NAME_XML + "${PKG_NVR}-${PKG_TARGET}-${ARCH}-${PKG_TARGET_VERSION}${PKG_BUILD_GTK}" + ) + endif ( + OCPN_FLATPAK_CONFIG + OR OCPN_FLATPAK_BUILD + OR MINGW + OR MSVC + ) +endif (DEFINED ENV{OCPN_TARGET}) +if (OCPN_FLATPAK_CONFIG) + message(STATUS "${CMLOG}Checking for flatpak extensions") + find_file( + PLUGIN_FLATPAK_ARGS + NAMES flatpak_args.in + PATHS ${CMAKE_CURRENT_LIST_DIR}/in-files + NO_DEFAULT_PATH NO_CMAKE_FIND_ROOT_PATH + ) + if (${PLUGIN_FLATPAK_ARGS} STREQUAL "PLUGIN_FLATPAK_ARGS-NOTFOUND") + message(STATUS "${CMLOC}PLUGIN_FLATPAK_ARGS: Not Found") + set(finish_args "") + else () + message(STATUS "${CMLOC}finish_args: Found") + message(STATUS "${CMLOC}PLUGIN_FLATPAK_ARGS: ${PLUGIN_FLATPAK_ARGS}") + file(READ ${PLUGIN_FLATPAK_ARGS} finish_args) + endif () + find_file( + PLUGIN_FLATPAK_OPTIONS + NAMES flatpak_options.in + PATHS ${CMAKE_CURRENT_LIST_DIR}/in-files + NO_DEFAULT_PATH NO_CMAKE_FIND_ROOT_PATH + ) + if (${PLUGIN_FLATPAK_OPTIONS} STREQUAL "PLUGIN_FLATPAK_OPTIONS-NOTFOUND") + message(STATUS "${CMLOC}PLUGIN_FLATPAK_OPTIONS: Not Found") + set(build_options "") + else () + message(STATUS "${CMLOC}build_options: Found") + file(READ ${PLUGIN_FLATPAK_OPTIONS} build_options) + endif () + find_file( + PLUGIN_FLATPAK_EXTRA_MODULES + NAMES flatpak_extra_modules.in + PATHS ${CMAKE_CURRENT_LIST_DIR}/in-files + NO_DEFAULT_PATH NO_CMAKE_FIND_ROOT_PATH + ) + if (${PLUGIN_FLATPAK_EXTRA_MODULES} STREQUAL + "PLUGIN_FLATPAK_EXTRA_MODULES-NOTFOUND" + ) + message(STATUS "${CMLOC}PLUGIN_FLATPAK_EXTRA_MODULES: Not Found") + set(flatpak_extra_modules "") + else () + message(STATUS "${CMLOC}flatpak_extra_modules: Found") + file(READ ${PLUGIN_FLATPAK_EXTRA_MODULES} flatpak_extra_modules) + endif () +endif () +message(STATUS "${CMLOC}PACKAGING_NAME: ${PACKAGING_NAME}") +message(STATUS "${CMLOC}PACKAGING_NAME_XML: ${PACKAGING_NAME_XML}") + +set(PKG_TARGET_FULL + "${PKG_TARGET}${PKG_TARGET_GTK}${PKG_TARGET_WX_VER}${PKG_TARGET_ARCH}" +) +message(STATUS "${CMLOC}PKG_TARGET_FULL: ${PKG_TARGET_FULL}") +message(STATUS "${CMLOC}PKG_BUILD_TARGET: ${PKG_BUILD_TARGET}") +message(STATUS "${CMLOC}PKG_BUILD_GTK: ${PKG_TARGET_GTK}") +message(STATUS "${CMLOC}PKG_BUILT_WITH_GTK: ${PKG_BUILT_WITH_GTK}") +message(STATUS "${CMLOC}*.in files generated in ${CMAKE_CURRENT_BINARY_DIR}") +configure_file( + ${PROJECT_SOURCE_DIR}/cmake/in-files/plugin.xml.in + ${CMAKE_CURRENT_BINARY_DIR}/${PACKAGING_NAME_XML}.xml +) +configure_file( + ${PROJECT_SOURCE_DIR}/cmake/in-files/pkg_version.sh.in + ${CMAKE_CURRENT_BINARY_DIR}/pkg_version.sh +) +configure_file( + ${PROJECT_SOURCE_DIR}/cmake/in-files/cloudsmith-upload.sh.in + ${CMAKE_CURRENT_BINARY_DIR}/cloudsmith-upload.sh @ONLY +) +configure_file( + ${PROJECT_SOURCE_DIR}/cmake/in-files/PluginCPackOptions.cmake.in + ${CMAKE_CURRENT_BINARY_DIR}/PluginCPackOptions.cmake @ONLY +) + +if (OCPN_FLATPAK_CONFIG) + # set(SDK_VER $ENV{SDK_VER}) Hack for temporary "beta" status of 20.08 runtime + # See new substitution variable in + # cmake/in-files/org.opencpn.OpenCPN.Plugin.yaml.in + message(STATUS "${CMLOC}FLATPAK_BRANCH: ${FLATPAK_BRANCH}") + set(RUNTIME_VERSION ${FLATPAK_BRANCH}) + + message( + STATUS + "${CMLOC}Checking OCPN_FLATPAK_CONFIG: ${OCPN_FLATPAK_CONFIG}, SDK_VER: ${SDK_VER}, WX_VER: $ENV{WX_VER}" + ) + configure_file( + ${PROJECT_SOURCE_DIR}/cmake/in-files/org.opencpn.OpenCPN.Plugin.yaml.in + ${CMAKE_CURRENT_BINARY_DIR}/flatpak/org.opencpn.OpenCPN.Plugin.${PACKAGE}.yaml + ) + + message(STATUS "${CMLOC}Done OCPN_FLATPAK CONFIG") + message(STATUS "${CMLOC}Directory used: ${CMAKE_CURRENT_BINARY_DIR}/flatpak") + message(STATUS "${CMLOC}Git Branch: ${GIT_REPOSITORY_BRANCH}") + set(CMLOC ${SAVE_CMLOC}) + return() +endif (OCPN_FLATPAK_CONFIG) + +set(CMAKE_VERBOSE_MAKEFILE ON) + +include_directories(${PROJECT_SOURCE_DIR}/include ${PROJECT_SOURCE_DIR}/src) + +set(CMAKE_SHARED_LINKER_FLAGS "") +set(CMAKE_EXE_LINKER_FLAGS "") # SET(PROFILING 1) - -# IF NOT DEBUGGING CFLAGS="-O2 -march=native" -IF(NOT MSVC) - IF(PROFILING) - ADD_DEFINITIONS( "-Wall -g -fprofile-arcs -ftest-coverage -fexceptions -fPIC" ) - ELSE(PROFILING) -# ADD_DEFINITIONS( "-Wall -g -fexceptions" ) - ADD_DEFINITIONS( "-Wall -Wno-unused-result -g -fexceptions -fPIC" ) - ENDIF(PROFILING) - - IF(NOT APPLE) - SET(CMAKE_SHARED_LINKER_FLAGS "-Wl,-Bsymbolic") - ELSE(NOT APPLE) - SET(CMAKE_SHARED_LINKER_FLAGS "-Wl -undefined dynamic_lookup") - ENDIF(NOT APPLE) - -ENDIF(NOT MSVC) +if (CMAKE_BUILD_TYPE STREQUAL "Debug" OR CMAKE_BUILD_TYPE STREQUAL + "RelWithDebInfo" +) + add_definitions("-DDEBUG_BUILD") + set(CMAKE_INSTALL_DO_STRIP FALSE) + set(CPACK_DEBIAN_DEBUGINFO_PACKAGE YES) + message(STATUS "${CMLOC}DEBUG available") +endif (CMAKE_BUILD_TYPE STREQUAL "Debug" OR CMAKE_BUILD_TYPE STREQUAL + "RelWithDebInfo" +) + +if (NOT WIN32 AND NOT APPLE) + add_definitions( + "-Wall -Wno-unused -fexceptions -rdynamic -fvisibility=hidden" + ) + add_definitions(" -fno-strict-aliasing") + message(STATUS "${CMLOC}Build type: ${CMAKE_BUILD_TYPE}") + if (CMAKE_BUILD_TYPE STREQUAL "Debug") + add_definitions(" -O0 -g") + message(STATUS "${CMLOC}Optimisation: -O0 -g") + elseif (CMAKE_BUILD_TYPE STREQUAL "Release") + add_definitions(" -O2 -s") + message(STATUS "${CMLOC}Optimisation: -O2 -s") + elseif (CMAKE_BUILD_TYPE STREQUAL "RelWithDebInfo") + add_definitions(" -O2 -g") + message(STATUS "${CMLOC}Optimisation: -O2 -g") + else (CMAKE_BUILD_TYPE STREQUAL "MinSizeRel") + add_definitions(" -O2 -s") + message(STATUS "${CMLOC}Optimisation: -O2 -s") + endif (CMAKE_BUILD_TYPE STREQUAL "Debug") + + add_definitions(" -DPREFIX=\\\"${CMAKE_INSTALL_PREFIX}\\\"") + # profiling with gprof ADD_DEFINITIONS( -pg ) SET(CMAKE_EXE_LINKER_FLAGS -pg) + # profiling with gcov ADD_DEFINITIONS( "-fprofile-arcs -ftest-coverage" ) + # SET(EXTRA_LIBS ${EXTRA_LIBS} "gcov") +endif (NOT WIN32 AND NOT APPLE) + +if (MINGW) + add_definitions("-Wall -Wno-unused -Wno-cpp -fexceptions") + add_definitions(" -g -fno-strict-aliasing") + if (CMAKE_BUILD_TYPE STREQUAL "Release" OR CMAKE_BUILD_TYPE STREQUAL + "MinSizeRel" + ) + add_link_options(-Wl,--strip-all) + endif (CMAKE_BUILD_TYPE STREQUAL "Release" OR CMAKE_BUILD_TYPE STREQUAL + "MinSizeRel" + ) +endif (MINGW) + +if (APPLE) + string(APPEND CMAKE_CXX_FLAGS + " -Wall -Wno-unused -fexceptions -Wno-overloaded-virtual" + ) + string(APPEND CMAKE_CXX_FLAGS " -g -fno-strict-aliasing") + string(APPEND CMAKE_CXX_FLAGS + " -Wno-deprecated -Wno-deprecated-declarations -Wno-unknown-pragmas" + ) + string(APPEND CMAKE_CXX_FLAGS " -D_WCHAR_H_CPLUSPLUS_98_CONFORMANCE_") + string(APPEND CMAKE_CXX_FLAGS " -DAPPLE") +endif (APPLE) # Add some definitions to satisfy MS -IF(MSVC) - ADD_DEFINITIONS(-D__MSVC__) - ADD_DEFINITIONS(-D_CRT_NONSTDC_NO_DEPRECATE -D_CRT_SECURE_NO_DEPRECATE) -ENDIF(MSVC) - -IF(NOT DEFINED wxWidgets_USE_FILE) - SET(wxWidgets_USE_LIBS base core net xml html adv) -ENDIF(NOT DEFINED wxWidgets_USE_FILE) - - -# QT_ANDROID is a cross-build, so the native FIND_PACKAGE(wxWidgets...) and wxWidgets_USE_FILE is not useful. -# We add the dependencies manually. -IF(QT_ANDROID) - ADD_DEFINITIONS(-D__WXQT__) - ADD_DEFINITIONS(-D__OCPN__ANDROID__) - ADD_DEFINITIONS(-DOCPN_USE_WRAPPER) - ADD_DEFINITIONS(-DANDROID) - INCLUDE_DIRECTORIES(${PROJECT_SOURCE_DIR}/include/android) - - SET(CMAKE_CXX_FLAGS "-pthread -s") - - ## Compiler flags - # if(CMAKE_COMPILER_IS_GNUCXX) - # set(CMAKE_CXX_FLAGS "-O2") ## Optimize - set(CMAKE_EXE_LINKER_FLAGS "-s") ## Strip binary - # endif() - - INCLUDE_DIRECTORIES("${Qt_Base}/${Qt_Build}/include/QtCore") - INCLUDE_DIRECTORIES("${Qt_Base}/${Qt_Build}/include") - INCLUDE_DIRECTORIES("${Qt_Base}/${Qt_Build}/include/QtWidgets") - INCLUDE_DIRECTORIES("${Qt_Base}/${Qt_Build}/include/QtGui") - INCLUDE_DIRECTORIES("${Qt_Base}/${Qt_Build}/include/QtOpenGL") - INCLUDE_DIRECTORIES("${Qt_Base}/${Qt_Build}/include/QtTest") - - INCLUDE_DIRECTORIES( "${wxQt_Base}/${wxQt_Build}/lib/wx/include/arm-linux-androideabi-qt-unicode-static-3.1") - INCLUDE_DIRECTORIES("${wxQt_Base}/include") - - ADD_DEFINITIONS(-DQT_WIDGETS_LIB) - -ENDIF(QT_ANDROID) - - -IF(MSYS) -# this is just a hack. I think the bug is in FindwxWidgets.cmake -STRING( REGEX REPLACE "/usr/local" "\\\\;C:/MinGW/msys/1.0/usr/local" wxWidgets_INCLUDE_DIRS ${wxWidgets_INCLUDE_DIRS} ) -ENDIF(MSYS) - -# QT_ANDROID is a cross-build, so the native FIND_PACKAGE(OpenGL) is not useful. -# -IF (NOT QT_ANDROID ) - -OPTION(OCPN_USE_SVG "Use SVG graphics" ON) - -IF(OCPN_USE_SVG) - ADD_DEFINITIONS(-DOCPN_USE_SVG) -ENDIF(OCPN_USE_SVG) - - -FIND_PACKAGE(OpenGL) -IF(OPENGL_GLU_FOUND) - - SET(wxWidgets_USE_LIBS ${wxWidgets_USE_LIBS} gl) - INCLUDE_DIRECTORIES(${OPENGL_INCLUDE_DIR}) - - MESSAGE (STATUS "Found OpenGL..." ) - #MESSAGE (STATUS " Lib: " ${OPENGL_LIBRARIES}) - #MESSAGE (STATUS " Include: " ${OPENGL_INCLUDE_DIR}) - ADD_DEFINITIONS(-DocpnUSE_GL) -ELSE(OPENGL_GLU_FOUND) - MESSAGE (STATUS "OpenGL not found..." ) -ENDIF(OPENGL_GLU_FOUND) -ENDIF(NOT QT_ANDROID) - -# Building for QT_ANDROID involves a cross-building environment, -# So the OpenGL include directories, flags, etc must be stated explicitly -# without trying to locate them on the host build system. -IF(QT_ANDROID) - SET(CMAKE_VERBOSE_MAKEFILE ON) - ADD_DEFINITIONS(-DocpnUSE_GLES) - ADD_DEFINITIONS(-DocpnUSE_GL) -# ADD_DEFINITIONS(-DUSE_GLU_TESS) - ADD_DEFINITIONS(-DARMHF) - - SET(OPENGLES_FOUND "YES") - SET(OPENGL_FOUND "YES") - - - SET(USE_GLES2 ON ) - - IF(USE_GLES2) - MESSAGE (STATUS "Using GLESv2 for Android") - ADD_DEFINITIONS(-DUSE_ANDROID_GLES2) - ADD_DEFINITIONS(-DUSE_GLSL) - ENDIF(USE_GLES2) - -ENDIF(QT_ANDROID) - -IF (NOT QT_ANDROID ) - set (WXWIDGETS_FORCE_VERSION CACHE VERSION "Force usage of a specific wxWidgets version.") - if(WXWIDGETS_FORCE_VERSION) - set (wxWidgets_CONFIG_OPTIONS --version=${WXWIDGETS_FORCE_VERSION}) - endif() - FIND_PACKAGE(wxWidgets REQUIRED) - INCLUDE(${wxWidgets_USE_FILE}) -ENDIF (NOT QT_ANDROID ) - -# On Android, PlugIns need a specific linkage set.... -IF (QT_ANDROID ) - # These libraries are needed to create PlugIns on Android. - - SET(OCPN_Core_LIBRARIES - # Presently, Android Plugins are built in the core tree, so the variables {wxQT_BASE}, etc. - # flow to this module from above. If we want to build Android plugins out-of-core, this will need improvement. - - # TODO This is pretty ugly, but there seems no way to avoid specifying a full path in a cross build.... - #/home/dsr/Projects/opencpn/build-opencpn-Production_build_Android_for_armeabi_v7a_GCC_4_8_Qt_5_5_0-Release/libopencpn.so - /home/sean/build-opencpn-Production_Android_for_armeabi_v7a_Core_55_46_GCC_4_8_Qt_5_5_0-Release/libopencpn.so - - ${wxQt_Base}/${wxQt_Build}/lib/libwx_baseu-3.1-arm-linux-androideabi.a - ${wxQt_Base}/${wxQt_Build}/lib/libwx_qtu_core-3.1-arm-linux-androideabi.a - ${wxQt_Base}/${wxQt_Build}/lib/libwx_qtu_html-3.1-arm-linux-androideabi.a - ${wxQt_Base}/${wxQt_Build}/lib/libwx_baseu_xml-3.1-arm-linux-androideabi.a - ${wxQt_Base}/${wxQt_Build}/lib/libwx_qtu_qa-3.1-arm-linux-androideabi.a - ${wxQt_Base}/${wxQt_Build}/lib/libwx_qtu_adv-3.1-arm-linux-androideabi.a - ${wxQt_Base}/${wxQt_Build}/lib/libwx_qtu_aui-3.1-arm-linux-androideabi.a - ${wxQt_Base}/${wxQt_Build}/lib/libwx_baseu_net-3.1-arm-linux-androideabi.a - ${wxQt_Base}/${wxQt_Build}/lib/libwx_qtu_gl-3.1-arm-linux-androideabi.a - ${Qt_Base}/${Qt_Build}/lib/libQt5Core.so - ${Qt_Base}/${Qt_Build}/lib/libQt5OpenGL.so - ${Qt_Base}/${Qt_Build}/lib/libQt5Widgets.so - ${Qt_Base}/${Qt_Build}/lib/libQt5Gui.so - ${Qt_Base}/${Qt_Build}/lib/libQt5AndroidExtras.so +if (MSVC) + add_definitions(-D__MSVC__) + add_definitions(-D_CRT_NONSTDC_NO_DEPRECATE -D_CRT_SECURE_NO_DEPRECATE) + add_definitions(-D HAVE_SNPRINTF) + message(STATUS "${CMLOC}Set SNPRINTF") +else (MSVC) + if (NOT APPLE) + set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} -Wl,-Bsymbolic") + else (NOT APPLE) + set(CMAKE_SHARED_LINKER_FLAGS + "${CMAKE_SHARED_LINKER_FLAGS} -Wl -undefined dynamic_lookup" + ) + endif (NOT APPLE) +endif (MSVC) + +set_property(GLOBAL PROPERTY TARGET_SUPPORTS_SHARED_LIBS TRUE) +set(BUILD_SHARED_LIBS TRUE) + +# Allow multiprocess compile +if (MSVC) + set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} /MP") + set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /MP") +endif (MSVC) + +if (WIN32) + if (MSVC) + set(CMAKE_C_FLAGS_DEBUG "/MP /MDd /Ob0 /Od /D_DEBUG /Zi /RTC1") + set(CMAKE_C_FLAGS_MINSIZEREL "/MP /MD /O1 /Ob1 /D NDEBUG") + set(CMAKE_C_FLAGS_RELEASE "/MP /MD /O2 /Ob2 /D NDEBUG /Zi") + set(CMAKE_C_FLAGS_RELWITHDEBINFO "/MP /MD /O2 /Ob1 /D NDEBUG /Zi") + set(CMAKE_CXX_FLAGS_DEBUG "/MP /MDd /Ob0 /Od /D_DEBUG /Zi /RTC1 /EHa") + set(CMAKE_CXX_FLAGS_MINSIZEREL "/MP /MD /O1 /Ob1 /D NDEBUG /EHa") + set(CMAKE_CXX_FLAGS_RELEASE "/MP /MD /O2 /Ob2 /D NDEBUG /Zi /EHa") + set(CMAKE_CXX_FLAGS_RELWITHDEBINFO "/MP /MD /O2 /Ob1 /D NDEBUG /Zi /EHa") + set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} /DEBUG") + endif (MSVC) +endif (WIN32) + +set(wxWidgets_USE_LIBS + base + core + net + xml + html + adv + aui +) + +# Search for opengles, short of running a program to test the speed of +# acceleration, I simply use gles on "native linux" arm systems +if (ARCH MATCHES "arm*" + AND (NOT QT_ANDROID) + AND USE_GL MATCHES "ON" +) + find_path(OPENGLESv1_INCLUDE_DIR GLES/gl.h) + if (OPENGLESv1_INCLUDE_DIR) + message(STATUS "${CMLOC}Found OpenGLESv1") + add_definitions(-DocpnUSE_GLES) + add_definitions(-DocpnUSE_GL) + + set(OPENGLES_FOUND "YES") + set(OPENGL_FOUND "YES") + + set(wxWidgets_USE_LIBS ${wxWidgets_USE_LIBS} gl) + + set(OPENGL_LIBRARIES "GL_static" "EGL" "X11" "drm") + endif () +endif () + +if (DEFINED _wx_selected_config) + message(STATUS "${CMLOC}_wx_select_config defined as $ENV{_wx_select_config}") + if (_wx_selected_config MATCHES "androideabi-qt") + message(STATUS "${CMLOC}Qt_Base: " ${Qt_Base}) + message(STATUS "${CMLOC}wxQt_Base/Build: " ${wxQt_Base} "/" ${wxQt_Build}) + add_definitions(-DocpnUSE_GLES) + add_definitions(-DocpnUSE_GL) + add_definitions(-DARMHF) + + set(OPENGLES_FOUND "YES") + set(OPENGL_FOUND "YES") + + add_definitions(-DUSE_GLU_TESS) + set(USE_GLES2 ON) + message(STATUS "${CMLOC}Using GLESv2 for Android") + add_definitions(-DUSE_ANDROID_GLES2) + add_definitions(-DUSE_GLSL) + + endif (_wx_selected_config MATCHES "androideabi-qt") +endif (DEFINED _wx_selected_config) + +# Building for QT_ANDROID involves a cross-building environment, So the include +# directories, flags, etc must be stated explicitly without trying to locate +# them on the host build system. +if (QT_ANDROID) + message(STATUS "${CMLOC}Processing QT_ANDROID") + add_definitions(-D__WXQT__) + add_definitions(-D__OCPN__ANDROID__) + add_definitions(-DOCPN_USE_WRAPPER) + add_definitions(-DANDROID) + + set(CMAKE_SHARED_LINKER_FLAGS "-Wl,-soname,libgorp.so ") + + # set(CMAKE_POSITION_INDEPENDENT_CODE ON) + set(CMAKE_CXX_FLAGS "-pthread -fPIC ") + + # Compiler flags + add_compile_options( + "-Wno-inconsistent-missing-override" + "-Wno-potentially-evaluated-expression" "-Wno-overloaded-virtual" + "-Wno-unused-command-line-argument" "-Wno-unknown-pragmas" + ) + + message(STATUS "${CMLOC}Adding libgorp.o shared library") + set(CMAKE_SHARED_LINKER_FLAGS "-Wl,-soname,libgorp.so ") + set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -s") # Strip binary + + set(QT_LINUX "OFF") + set(QT "ON") + set(CMAKE_SKIP_BUILD_RPATH TRUE) + add_definitions(-DQT_WIDGETS_LIB) + if ("$ENV{OCPN_TARGET}" STREQUAL "android-arm64") + message(STATUS "${CMLOC}Adding definition -DARM64") + add_definitions(-DARM64) + else () + message(STATUS "${CMLOC}Adding definition -DARMHF") + add_definitions(-DARMHF) + endif () + +endif (QT_ANDROID) + +if ((NOT OPENGLES_FOUND) AND (NOT QT_ANDROID)) + + if (USE_GL MATCHES "ON") + message(STATUS "${CMLOC}Finding package OpenGL") + find_package(OpenGL) + else (USE_GL MATCHES "ON") + message(STATUS "${CMLOC}OpenGL disabled by option...") + endif (USE_GL MATCHES "ON") + + if (OPENGL_FOUND) + + set(wxWidgets_USE_LIBS ${wxWidgets_USE_LIBS} gl) + include_directories(${OPENGL_INCLUDE_DIR}) + + message(STATUS "${CMLOC}Found OpenGL...") + message(STATUS "${CMLOC} Lib: " ${OPENGL_LIBRARIES}) + message(STATUS "${CMLOC} Include: " ${OPENGL_INCLUDE_DIR}) + add_definitions(-DocpnUSE_GL) + + # We need to remove GLU from the OPENGL_LIBRARIES list + foreach (_currentLibFile ${OPENGL_LIBRARIES}) + set(UCNAME ${_currentLibFile}) + string(TOUPPER ${UCNAME} UCNAME) + if (NOT ${UCNAME} MATCHES "(.*)GLU(.*)") + set(REVISED_OPENGL_LIBRARIES ${_currentLibFile} + ${REVISED_OPENGL_LIBRARIES} + ) + endif () + endforeach (_currentLibFile) + + set(OPENGL_LIBRARIES ${REVISED_OPENGL_LIBRARIES}) + message(STATUS "${CMLOC} Revised GL Lib: " ${OPENGL_LIBRARIES}) + + else () + message(STATUS "${CMLOC}OpenGL not found...") + endif () +endif () + +if (NOT QT_ANDROID) + # Find wxWidgets here, and the setting get inherited by all plugins. These + # options can be used to set the linux widgets build type + set(wxWidgets_USE_DEBUG OFF) + set(wxWidgets_USE_UNICODE ON) + set(wxWidgets_USE_UNIVERSAL OFF) + set(wxWidgets_USE_STATIC OFF) + + set(WXWIDGETS_FORCE_VERSION + CACHE STRING "Force usage of a specific wxWidgets version." + ) + if (NOT "$ENV{WX_VER}" STREQUAL "") + string(LENGTH $ENV{WX_VER} WX_VER_LEN) + string(SUBSTRING $ENV{WX_VER} 0 1 MAJOR) + string(SUBSTRING $ENV{WX_VER} 1 1 MINOR) + string(CONCAT WXWIDGETS_FORCE_VERSION ${MAJOR} "." ${MINOR}) + if (${WX_VER_LEN} EQUAL 3) + string(SUBSTRING $ENV{WX_VER} 2 1 PATCH) + # string(CONCAT WXWIDGETS_FORCE_VERSION ${WXWIDGETS_FORCE_VERSION} "." + # ${PATCH}) + endif () + endif () + message(STATUS "${CMLOC}wxWidgets_Version: ${WXWIDGETS_FORCE_VERSION}") + + if (WXWIDGETS_FORCE_VERSION) + set(wxWidgets_CONFIG_OPTIONS --version=${WXWIDGETS_FORCE_VERSION}) + endif () + + message(STATUS "${CMLOC}wxWidgets components: ${wxWidgets_USE_LIBS}") + find_package(wxWidgets REQUIRED COMPONENTS ${wxWidgets_USE_LIBS}) + + if (MSVC) + # Exclude wxexpat.lib, since we use our own version. Other things are + # excluded as well, but we don't need them + set(wxWidgets_EXCLUDE_COMMON_LIBRARIES TRUE) + endif (MSVC) + + if (WIN32 + OR APPLE + OR QT_ANDROID + ) + if (MSYS) + # this is to convert msys to windows paths, and handle the missing /usr + string(REGEX REPLACE "/usr/local" ";C:/MinGW/msys/1.0/local" + wxWidgets_INCLUDE_DIRS ${wxWidgets_INCLUDE_DIRS} + ) + endif (MSYS) + endif ( + WIN32 + OR APPLE + OR QT_ANDROID + ) + + include(${wxWidgets_USE_FILE}) + + message(STATUS "${CMLOC}Found wxWidgets...") + message(STATUS "${CMLOC} wxWidgets Include: ${wxWidgets_INCLUDE_DIRS}") + message(STATUS "${CMLOC} wxWidgets Libraries: ${wxWidgets_LIBRARIES}") + + # We need to remove GLU from the wxWidgets_LIBRARIES list It only appears to + # get on the list for MSW... + foreach (_currentLibFile ${wxWidgets_LIBRARIES}) + set(UCNAME ${_currentLibFile}) + string(TOUPPER ${UCNAME} UCNAME) + if (NOT ${UCNAME} MATCHES "(.*)GLU(.*)") + set(REVISED_wxWidgets_LIBRARIES ${REVISED_wxWidgets_LIBRARIES} + ${_currentLibFile} + ) + endif () + endforeach (_currentLibFile) + set(wxWidgets_LIBRARIES ${REVISED_wxWidgets_LIBRARIES}) + + message(STATUS "${CMLOC} Revised wxWidgets Libraries: ${wxWidgets_LIBRARIES}") +else (NOT QT_ANDROID) + if (_wx_selected_config MATCHES "androideabi-qt-arm64") + message(STATUS "${CMLOC}Processing androideabi-qt-arm64 includes") + + set(qt_android_include + ${qt_android_include} + "${OCPN_Android_Common}/qt5/build_arm64_O3/qtbase/include" + ) + set(qt_android_include + ${qt_android_include} + "${OCPN_Android_Common}/qt5/build_arm64_O3/qtbase/include/QtCore" + ) + set(qt_android_include + ${qt_android_include} + "${OCPN_Android_Common}/qt5/build_arm64_O3/qtbase/include/QtWidgets" + ) + set(qt_android_include + ${qt_android_include} + "${OCPN_Android_Common}/qt5/build_arm64_O3/qtbase/include/QtGui" + ) + set(qt_android_include + ${qt_android_include} + "${OCPN_Android_Common}/qt5/build_arm64_O3/qtbase/include/QtOpenGL" + ) + set(qt_android_include + ${qt_android_include} + "${OCPN_Android_Common}/qt5/build_arm64_O3/qtbase/include/QtTest" + ) + + set(qt_android_include + ${qt_android_include} + "${OCPN_Android_Common}/wxWidgets/libarm64/wx/include/arm-linux-androideabi-qt-unicode-static-3.1" + ) + set(qt_android_include ${qt_android_include} + "${OCPN_Android_Common}/wxWidgets/include" + ) + + set(wxWidgets_LIBRARIES + ${CMAKE_CURRENT_SOURCE_DIR}/${OCPN_Android_Common}/qt5/build_arm64_O3/qtbase/lib/libQt5Core.so + ${CMAKE_CURRENT_SOURCE_DIR}/${OCPN_Android_Common}/qt5/build_arm64_O3/qtbase/lib/libQt5OpenGL.so + ${CMAKE_CURRENT_SOURCE_DIR}/${OCPN_Android_Common}/qt5/build_arm64_O3/qtbase/lib/libQt5Widgets.so + ${CMAKE_CURRENT_SOURCE_DIR}/${OCPN_Android_Common}/qt5/build_arm64_O3/qtbase/lib/libQt5Gui.so + ${CMAKE_CURRENT_SOURCE_DIR}/${OCPN_Android_Common}/qt5/build_arm64_O3/qtbase/lib/libQt5AndroidExtras.so + ${CMAKE_CURRENT_SOURCE_DIR}/${OCPN_Android_Common}/opencpn/API-117/libarm64/libgorp.so + -lc++_shared + -lz libGLESv2.so libEGL.so - ) - -ENDIF(QT_ANDROID) - - - - -SET(BUILD_SHARED_LIBS TRUE) - -FIND_PACKAGE(Gettext REQUIRED) - - -IF(NOT WIN32) - IF(NOT APPLE) - SET(CMAKE_SHARED_LINKER_FLAGS "-Wl,-Bsymbolic") - ADD_DEFINITIONS( "-rdynamic" ) - ELSE(NOT APPLE) - SET(CMAKE_SHARED_LINKER_FLAGS "-Wl -undefined dynamic_lookup") - ADD_DEFINITIONS( "-Wno-overloaded-virtual" ) - ENDIF(NOT APPLE) - -ENDIF(NOT WIN32) - + ) + + else (_wx_selected_config MATCHES "androideabi-qt-arm64") + message(STATUS "${CMLOC}Processing androideabi-qt-armhf includes") + set(qt_android_include + ${qt_android_include} + "${OCPN_Android_Common}/qt5/build_arm32_19_O3/qtbase/include" + ) + set(qt_android_include + ${qt_android_include} + "${OCPN_Android_Common}/qt5/build_arm32_19_O3/qtbase/include/QtCore" + ) + set(qt_android_include + ${qt_android_include} + "${OCPN_Android_Common}/qt5/build_arm32_19_O3/qtbase/include/QtWidgets" + ) + set(qt_android_include + ${qt_android_include} + "${OCPN_Android_Common}/qt5/build_arm32_19_O3/qtbase/include/QtGui" + ) + set(qt_android_include + ${qt_android_include} + "${OCPN_Android_Common}/qt5/build_arm32_19_O3/qtbase/include/QtOpenGL" + ) + set(qt_android_include + ${qt_android_include} + "${OCPN_Android_Common}/qt5/build_arm32_19_O3/qtbase/include/QtTest" + ) + + set(qt_android_include + ${qt_android_include} + "${OCPN_Android_Common}/wxWidgets/libarmhf/wx/include/arm-linux-androideabi-qt-unicode-static-3.1" + ) + set(qt_android_include ${qt_android_include} + "${OCPN_Android_Common}/wxWidgets/include" + ) + + add_definitions(-DOCPN_ARMHF) + + set(wxWidgets_LIBRARIES + ${CMAKE_CURRENT_SOURCE_DIR}/${OCPN_Android_Common}/qt5/build_arm32_19_O3/qtbase/lib/libQt5Core.so + ${CMAKE_CURRENT_SOURCE_DIR}/${OCPN_Android_Common}/qt5/build_arm32_19_O3/qtbase/lib/libQt5OpenGL.so + ${CMAKE_CURRENT_SOURCE_DIR}/${OCPN_Android_Common}/qt5/build_arm32_19_O3/qtbase/lib/libQt5Widgets.so + ${CMAKE_CURRENT_SOURCE_DIR}/${OCPN_Android_Common}/qt5/build_arm32_19_O3/qtbase/lib/libQt5Gui.so + ${CMAKE_CURRENT_SOURCE_DIR}/${OCPN_Android_Common}/qt5/build_arm32_19_O3/qtbase/lib/libQt5AndroidExtras.so + ${CMAKE_CURRENT_SOURCE_DIR}/${OCPN_Android_Common}/opencpn/API-117/libarmhf/libgorp.so + -lc++_shared + -lz + libGLESv2.so + libEGL.so + ) -# Add some definitions to satisfy MS -IF(WIN32) - ADD_DEFINITIONS(-D__MSVC__) - ADD_DEFINITIONS(-D_CRT_NONSTDC_NO_DEPRECATE -D_CRT_SECURE_NO_DEPRECATE) -ENDIF(WIN32) + endif (_wx_selected_config MATCHES "androideabi-qt-arm64") -# Let cmake find additional modules private -LIST(APPEND CMAKE_MODULE_PATH ${PROJECT_SOURCE_DIR}) + # Needed for android builds + include_directories(BEFORE ${qt_android_include}) +endif (NOT QT_ANDROID) -ADD_DEFINITIONS(-DTIXML_USE_STL) +find_package(Gettext REQUIRED) +set(CMLOC ${SAVE_CMLOC}) diff --git a/cmake/PluginGL.cmake b/cmake/PluginGL.cmake deleted file mode 100644 index f8c5d9c..0000000 --- a/cmake/PluginGL.cmake +++ /dev/null @@ -1,12 +0,0 @@ -##--------------------------------------------------------------------------- -## Author: Sean D'Epagnier -## Copyright: -## License: GPLv3 -##--------------------------------------------------------------------------- - -SET(SRC_PLUGINGL - src/plugingl/pidc.cpp - src/plugingl/pi_shaders.cpp - src/plugingl/TexFont.cpp - src/plugingl/qtstylesheet.cpp - ) diff --git a/cmake/PluginInstall.cmake b/cmake/PluginInstall.cmake index 5a8b73d..b22152e 100644 --- a/cmake/PluginInstall.cmake +++ b/cmake/PluginInstall.cmake @@ -1,107 +1,216 @@ -##--------------------------------------------------------------------------- -## Author: Pavel Kalian (Based on the work of Sean D'Epagnier) -## Copyright: 2014 -## License: GPLv3+ -##--------------------------------------------------------------------------- - -IF (QT_ANDROID ) - TARGET_LINK_LIBRARIES( ${PACKAGE_NAME} ${OCPN_Core_LIBRARIES} ) - TARGET_LINK_LIBRARIES( ${PACKAGE_NAME} "-lgnustl_shared") - TARGET_LINK_LIBRARIES( ${PACKAGE_NAME} "-lz" ) -ENDIF(QT_ANDROID) - -IF(NOT APPLE) - TARGET_LINK_LIBRARIES( ${PACKAGE_NAME} ${wxWidgets_LIBRARIES} ${EXTRA_LIBS} ) -ENDIF(NOT APPLE) - -IF(NOT QT_ANDROID) -IF(WIN32) - SET(PARENT "opencpn") - - IF(MSVC) -# TARGET_LINK_LIBRARIES(${PACKAGE_NAME} -# gdiplus.lib -# glu32.lib) - TARGET_LINK_LIBRARIES(${PACKAGE_NAME} ${OPENGL_LIBRARIES}) - - SET(OPENCPN_IMPORT_LIB "${PARENT}.lib") - ENDIF(MSVC) - - IF(MINGW) -# assuming wxwidgets is compiled with unicode, this is needed for mingw headers - ADD_DEFINITIONS( " -DUNICODE" ) - TARGET_LINK_LIBRARIES(${PACKAGE_NAME} ${OPENGL_LIBRARIES}) - SET(OPENCPN_IMPORT_LIB "${PARENT}.dll") - SET( CMAKE_SHARED_LINKER_FLAGS "-L../buildwin" ) - ENDIF(MINGW) - - TARGET_LINK_LIBRARIES( ${PACKAGE_NAME} ${OPENCPN_IMPORT_LIB} ) -ENDIF(WIN32) - -IF(UNIX) - IF(PROFILING) - find_library(GCOV_LIBRARY - NAMES - gcov - PATHS - /usr/lib/gcc/i686-pc-linux-gnu/4.7 +# --------------------------------------------------------------------------- +# Author: Pavel Kalian (Based on the work of Sean D'Epagnier) Copyright: +# 2014 License: GPLv3+ +# --------------------------------------------------------------------------- + +set(SAVE_CMLOC ${CMLOC}) +set(CMLOC "PluginInstall: ") + +if (OCPN_FLATPAK_CONFIG) + return() +endif (OCPN_FLATPAK_CONFIG) + +if (NOT APPLE) + target_link_libraries(${PACKAGE_NAME} ${wxWidgets_LIBRARIES} ${EXTRA_LIBS}) +endif (NOT APPLE) + +if (WIN32) + if (MSVC) + # TARGET_LINK_LIBRARIES(${PACKAGE_NAME} gdiplus.lib glu32.lib) + target_link_libraries(${PACKAGE_NAME} ${OPENGL_LIBRARIES}) + # add_subdirectory(libs/ocpn-api) target_link_libraries(${PACKAGE_NAME} + # ocpn::api) message(STATUS "${CMLOC}Added ocpn-api for MSVC") + endif (MSVC) + + if (MINGW) + # assuming wxwidgets is compiled with unicode, this is needed for mingw + # headers + add_definitions(" -DUNICODE") + target_link_libraries(${PACKAGE_NAME} ${OPENGL_LIBRARIES}) + set(CMAKE_SHARED_LINKER_FLAGS "-L../buildwin") + # add_subdirectory(libs/ocpn-api) target_link_libraries(${PACKAGE_NAME} + # ocpn::api) message(STATUS "${CMLOC}Added ocpn-api for MINGW") + endif (MINGW) +endif (WIN32) + +if (UNIX) + if (PROFILING) + find_library( + GCOV_LIBRARY + NAMES gcov + PATHS /usr/lib/gcc/i686-pc-linux-gnu/4.7 ) - SET(EXTRA_LIBS ${EXTRA_LIBS} ${GCOV_LIBRARY}) - ENDIF(PROFILING) -ENDIF(UNIX) - -IF(APPLE) - INSTALL(TARGETS ${PACKAGE_NAME} RUNTIME LIBRARY DESTINATION ${CMAKE_BINARY_DIR}/OpenCPN.app/Contents/SharedSupport/plugins) - FIND_PACKAGE(ZLIB REQUIRED) - TARGET_LINK_LIBRARIES( ${PACKAGE_NAME} ${ZLIB_LIBRARIES} ) - INSTALL(TARGETS ${PACKAGE_NAME} RUNTIME LIBRARY DESTINATION ${CMAKE_BINARY_DIR}/OpenCPN.app/Contents/PlugIns) - - IF(EXISTS ${PROJECT_SOURCE_DIR}/data) - INSTALL(DIRECTORY data DESTINATION ${CMAKE_BINARY_DIR}/OpenCPN.app/Contents/SharedSupport/plugins/${PACKAGE_NAME}) - ENDIF() - -ENDIF(APPLE) - -IF(UNIX AND NOT APPLE) - FIND_PACKAGE(BZip2 REQUIRED) - INCLUDE_DIRECTORIES(${BZIP2_INCLUDE_DIR}) - FIND_PACKAGE(ZLIB REQUIRED) - INCLUDE_DIRECTORIES(${ZLIB_INCLUDE_DIR}) - TARGET_LINK_LIBRARIES( ${PACKAGE_NAME} ${BZIP2_LIBRARIES} ${ZLIB_LIBRARY} ) -ENDIF(UNIX AND NOT APPLE) - -SET(PARENT opencpn) - -SET(PREFIX_DATA share) -SET(PREFIX_LIB lib) - -IF(WIN32) - MESSAGE (STATUS "Install Prefix: ${CMAKE_INSTALL_PREFIX}") - SET(CMAKE_INSTALL_PREFIX ${CMAKE_INSTALL_PREFIX}/../OpenCPN) - IF(CMAKE_CROSSCOMPILING) - INSTALL(TARGETS ${PACKAGE_NAME} RUNTIME DESTINATION "plugins") - SET(INSTALL_DIRECTORY "plugins/${PACKAGE_NAME}") - ELSE(CMAKE_CROSSCOMPILING) - INSTALL(TARGETS ${PACKAGE_NAME} RUNTIME DESTINATION "plugins") - SET(INSTALL_DIRECTORY "plugins\\\\${PACKAGE_NAME}") - ENDIF(CMAKE_CROSSCOMPILING) - - IF(EXISTS ${PROJECT_SOURCE_DIR}/data) - INSTALL(DIRECTORY data DESTINATION "${INSTALL_DIRECTORY}") - ENDIF(EXISTS ${PROJECT_SOURCE_DIR}/data) -ENDIF(WIN32) - -IF(UNIX AND NOT APPLE) - SET(PREFIX_PARENTDATA ${PREFIX_DATA}/${PARENT}) - IF(NOT DEFINED PREFIX_PLUGINS) - SET(PREFIX_PLUGINS ${PREFIX_LIB}/${PARENT}) - ENDIF(NOT DEFINED PREFIX_PLUGINS) - INSTALL(TARGETS ${PACKAGE_NAME} RUNTIME LIBRARY DESTINATION ${PREFIX_PLUGINS}) - - IF(EXISTS ${PROJECT_SOURCE_DIR}/data) - INSTALL(DIRECTORY data DESTINATION ${PREFIX_PARENTDATA}/plugins/${PACKAGE_NAME}) - ENDIF() -ENDIF(UNIX AND NOT APPLE) - -ENDIF(NOT QT_ANDROID) + set(EXTRA_LIBS ${EXTRA_LIBS} ${GCOV_LIBRARY}) + endif (PROFILING) +endif (UNIX) + +if (UNIX + AND NOT APPLE + AND NOT QT_ANDROID +) + find_package(BZip2 REQUIRED) + include_directories(${BZIP2_INCLUDE_DIR}) + find_package(ZLIB REQUIRED) + include_directories(${ZLIB_INCLUDE_DIR}) + target_link_libraries(${PACKAGE_NAME} ${BZIP2_LIBRARIES} ${ZLIB_LIBRARY}) +endif ( + UNIX + AND NOT APPLE + AND NOT QT_ANDROID +) + +set(PARENT opencpn) + +if (APPLE) + install( + TARGETS ${PACKAGE_NAME} + RUNTIME + LIBRARY DESTINATION OpenCPN.app/Contents/PlugIns + ) + if (EXISTS ${PROJECT_SOURCE_DIR}/data) + install( + DIRECTORY data + DESTINATION OpenCPN.app/Contents/SharedSupport/plugins/${PACKAGE_NAME} + ) + endif () + + if (EXISTS ${PROJECT_SOURCE_DIR}/UserIcons) + install( + DIRECTORY UserIcons + DESTINATION OpenCPN.app/Contents/SharedSupport/plugins/${PACKAGE_NAME} + ) + endif () + + find_package(ZLIB REQUIRED) + target_link_libraries(${PACKAGE_NAME} ${ZLIB_LIBRARIES}) + +endif (APPLE) + +# Based on code from nohal +if (NOT CMAKE_INSTALL_PREFIX) + set(CMAKE_INSTALL_PREFIX ${TENTATIVE_PREFIX}) +endif (NOT CMAKE_INSTALL_PREFIX) + +message(STATUS "${CMLOC}*** Will install to ${CMAKE_INSTALL_PREFIX} ***") +set(PREFIX_DATA share) +set(PREFIX_PKGDATA ${PREFIX_DATA}/${PACKAGE_NAME}) +# set(PREFIX_LIB "${CMAKE_INSTALL_PREFIX}/${LIB_INSTALL_DIR}") +set(PREFIX_LIB lib) + +if (WIN32) + message(STATUS "${CMLOC}Install Prefix: ${CMAKE_INSTALL_PREFIX}") + set(CMAKE_INSTALL_PREFIX ${CMAKE_INSTALL_PREFIX}/../OpenCPN) + if (CMAKE_CROSSCOMPILING) + install(TARGETS ${PACKAGE_NAME} RUNTIME DESTINATION "plugins") + set(INSTALL_DIRECTORY "plugins/${PACKAGE_NAME}") + else (CMAKE_CROSSCOMPILING) + install(TARGETS ${PACKAGE_NAME} RUNTIME DESTINATION "plugins") + set(INSTALL_DIRECTORY "plugins\\\\${PACKAGE_NAME}") + endif (CMAKE_CROSSCOMPILING) + + if (EXISTS ${PROJECT_SOURCE_DIR}/UserIcons) + install(DIRECTORY UserIcons DESTINATION "${INSTALL_DIRECTORY}") + message(STATUS "${CMLOC}Install UserIcons: ${INSTALL_DIRECTORY}") + endif (EXISTS ${PROJECT_SOURCE_DIR}/UserIcons) + + if (EXISTS ${PROJECT_SOURCE_DIR}/data) + install(DIRECTORY data DESTINATION "${INSTALL_DIRECTORY}") + message(STATUS "${CMLOC}Install Data: ${INSTALL_DIRECTORY}") + endif (EXISTS ${PROJECT_SOURCE_DIR}/data) + + # fix for missing dll's FILE(GLOB gtkdll_files + # "${CMAKE_CURRENT_SOURCE_DIR}/buildwin/gtk/*.dll") INSTALL(FILES + # ${gtkdll_files} DESTINATION ".") FILE(GLOB expatdll_files + # "${CMAKE_CURRENT_SOURCE_DIR}/buildwin/expat-2.1.0/*.dll") INSTALL(FILES + # ${expatdll_files} DESTINATION ".") + +endif (WIN32) + +if (UNIX AND NOT APPLE) + set(PREFIX_PARENTDATA ${PREFIX_DATA}/${PARENT}) + set(PREFIX_PARENTLIB ${PREFIX_LIB}/${PARENT}) + message(STATUS "${CMLOC}PREFIX_PARENTLIB: ${PREFIX_PARENTLIB}") + message(STATUS "${CMLOC}Library") + install(TARGETS ${PACKAGE_NAME} LIBRARY DESTINATION ${PREFIX_PARENTLIB}) + + if (EXISTS ${PROJECT_SOURCE_DIR}/data) + install(DIRECTORY data + DESTINATION ${PREFIX_PARENTDATA}/plugins/${PACKAGE_NAME} + ) + message( + STATUS + "${CMLOC}Install data: ${PREFIX_PARENTDATA}/plugins/${PACKAGE_NAME}" + ) + endif () + if (EXISTS ${PROJECT_SOURCE_DIR}/UserIcons) + install(DIRECTORY UserIcons + DESTINATION ${PREFIX_PARENTDATA}/plugins/${PACKAGE_NAME} + ) + set(CPACK_DEBIAN_PACKAGE_CONTROL_EXTRA + "${PROJECT_SOURCE_DIR}/script/postinst" + ) + set(CPACK_RPM_POST_INSTALL_SCRIPT_FILE + "${PROJECT_SOURCE_DIR}/script/postinst" + ) + message( + STATUS + "${CMLOC}Install UserIcons: ${PREFIX_PARENTDATA}/plugins/${PACKAGE_NAME}" + ) + endif () +endif (UNIX AND NOT APPLE) + +if (APPLE) + message(STATUS "${CMLOC}Install Prefix: ${CMAKE_INSTALL_PREFIX}") + + # For Apple build, we need to copy the "data" directory contents to the build + # directory, so that the packager can pick them up. + if (NOT EXISTS "${PROJECT_BINARY_DIR}/data/") + file(MAKE_DIRECTORY "${PROJECT_BINARY_DIR}/data/") + message("Generating data directory") + endif () + + file( + GLOB_RECURSE PACKAGE_DATA_FILES + LIST_DIRECTORIES true + ${PROJECT_SOURCE_DIR}/data/* + ) + + foreach (_currentDataFile ${PACKAGE_DATA_FILES}) + message(STATUS "${CMLOC}copying: ${_currentDataFile}") + file(COPY ${_currentDataFile} DESTINATION ${CMAKE_CURRENT_BINARY_DIR}/data) + endforeach (_currentDataFile) + + if (EXISTS ${PROJECT_SOURCE_DIR}/UserIcons) + file( + GLOB_RECURSE PACKAGE_DATA_FILES + LIST_DIRECTORIES true + ${PROJECT_SOURCE_DIR}/UserIcons/* + ) + + foreach (_currentDataFile ${PACKAGE_DATA_FILES}) + message(STATUS "${CMLOC}copying: ${_currentDataFile}") + file(COPY ${_currentDataFile} + DESTINATION ${CMAKE_CURRENT_BINARY_DIR}/UserIcons + ) + endforeach (_currentDataFile) + endif () + + # On macos, fix paths which points to the build environment, make sure they + # refers to runtime locations + message(STATUS "${CMLOC}copying: Adjusting MacOS library paths") + install(CODE "execute_process( + COMMAND bash ${PROJECT_SOURCE_DIR}/cmake/fix-macos-libs.sh + )" + ) + + install( + TARGETS ${PACKAGE_NAME} + RUNTIME + LIBRARY DESTINATION OpenCPN.app/Contents/PlugIns + ) + message(STATUS "${CMLOC}Install Target: OpenCPN.app/Contents/PlugIns") + +endif (APPLE) + +set(CMLOC ${SAVE_CMLOC}) diff --git a/cmake/PluginJSON.cmake b/cmake/PluginJSON.cmake deleted file mode 100755 index 3a69201..0000000 --- a/cmake/PluginJSON.cmake +++ /dev/null @@ -1,14 +0,0 @@ -##--------------------------------------------------------------------------- -## Author: Sean D'Epagnier -## Copyright: 2015 -## License: GPLv3+ -##--------------------------------------------------------------------------- - -IF(WIN32) -SET(SRC_JSON - src/wxJSON/jsonreader.cpp - src/wxJSON/jsonval.cpp - src/wxJSON/jsonwriter.cpp - ) -ENDIF(WIN32) -INCLUDE_DIRECTORIES(${CMAKE_SOURCE_DIR}/src/wxJSON) diff --git a/cmake/PluginLocalization.cmake b/cmake/PluginLocalization.cmake index 061c6ff..b83cba6 100644 --- a/cmake/PluginLocalization.cmake +++ b/cmake/PluginLocalization.cmake @@ -1,78 +1,159 @@ -##--------------------------------------------------------------------------- -## Author: Pavel Kalian / Sean D'Epagnier -## Copyright: -## License: GPLv3+ -##--------------------------------------------------------------------------- +# --------------------------------------------------------------------------- +# Author: Pavel Kalian / Sean D'Epagnier Copyright: License: GPLv3+ +# --------------------------------------------------------------------------- -FIND_PROGRAM(GETTEXT_XGETTEXT_EXECUTABLE xgettext) +set(SAVE_CMLOC ${CMLOC}) +set(CMLOC "PluginLocalization: ") + +if (OCPN_FLATPAK_CONFIG) + set(CMLOC ${SAVE_CMLOC}) + return() +endif (OCPN_FLATPAK_CONFIG) + +message(STATUS "${CMLOC}Starting POTFILE generation") + +set(POTFILE ${CMAKE_CURRENT_SOURCE_DIR}/po/POTFILES.in) +file(REMOVE ${POTFILE}.test) +file(WRITE ${POTFILE}.test "") +message( + STATUS + "${CMLOC}Checking file: ${CMAKE_CURRENT_SOURCE_DIR}/po/${PACKAGE_NAME}.pot" +) +if (EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/po/${PACKAGE_NAME}.pot) + message( + STATUS "${CMLOC}Found: ${CMAKE_CURRENT_SOURCE_DIR}/po/${PACKAGE_NAME}.pot" + ) +else () + file(WRITE ${CMAKE_CURRENT_SOURCE_DIR}/po/${PACKAGE_NAME}.pot "") + message( + STATUS + "${CMLOC}Creating empty ${CMAKE_CURRENT_SOURCE_DIR}/po/${PACKAGE_NAME}.pot" + ) +endif () +foreach (POTLINE IN ITEMS ${SRCS}) + file(APPEND ${POTFILE}.test "${POTLINE}\n") +endforeach (POTLINE) +foreach (POTLINE IN ITEMS ${HDRS}) + file(APPEND ${POTFILE}.test "${POTLINE}\n") +endforeach (POTLINE) +# convert crlf to lf for consistency and make copy_if_different work correctly +configure_file(${POTFILE}.test ${POTFILE}.test NEWLINE_STYLE UNIX) +execute_process( + COMMAND ${CMAKE_COMMAND} -E copy_if_different ${POTFILE}.test ${POTFILE} + OUTPUT_QUIET ERROR_QUIET +) + +find_program(GETTEXT_XGETTEXT_EXECUTABLE xgettext) string(REPLACE "_pi" "" I18N_NAME ${PACKAGE_NAME}) -IF (GETTEXT_XGETTEXT_EXECUTABLE) - ADD_CUSTOM_COMMAND( +if (GETTEXT_XGETTEXT_EXECUTABLE) + add_custom_command( OUTPUT po/${PACKAGE_NAME}.pot.dummy - COMMAND ${GETTEXT_XGETTEXT_EXECUTABLE} --force-po --package-name=${PACKAGE_NAME} --package-version="${PACKAGE_VERSION}" --output=po/${PACKAGE_NAME}.pot --keyword=_ --width=80 --files-from=${CMAKE_CURRENT_SOURCE_DIR}/po/POTFILES.in + COMMAND + ${GETTEXT_XGETTEXT_EXECUTABLE} --force-po -F + --package-name=${PACKAGE_NAME} --package-version="${PACKAGE_VERSION}" + --output=po/${PACKAGE_NAME}.pot --keyword=_ --width=80 + --files-from=${CMAKE_CURRENT_SOURCE_DIR}/po/POTFILES.in DEPENDS po/POTFILES.in po/${PACKAGE_NAME}.pot WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} COMMENT "${I18N_NAME}-pot-update [${PACKAGE_NAME}]: Generated pot file." - ) - ADD_CUSTOM_TARGET(${I18N_NAME}-pot-update COMMENT "[${PACKAGE_NAME}]-pot-update: Done." DEPENDS po/${PACKAGE_NAME}.pot.dummy) + ) + add_custom_target( + ${I18N_NAME}-pot-update + COMMENT "[${PACKAGE_NAME}]-pot-update: Done." + DEPENDS po/${PACKAGE_NAME}.pot.dummy + ) -ENDIF(GETTEXT_XGETTEXT_EXECUTABLE ) +endif (GETTEXT_XGETTEXT_EXECUTABLE) -MACRO(GETTEXT_UPDATE_PO _potFile) - SET(_poFiles ${_potFile}) - GET_FILENAME_COMPONENT(_absPotFile ${_potFile} ABSOLUTE) +macro (GETTEXT_UPDATE_PO _potFile) + set(_poFiles ${_potFile}) + get_filename_component(_absPotFile ${_potFile} ABSOLUTE) - FOREACH (_currentPoFile ${ARGN}) - GET_FILENAME_COMPONENT(_absFile ${_currentPoFile} ABSOLUTE) - GET_FILENAME_COMPONENT(_poBasename ${_absFile} NAME_WE) + foreach (_currentPoFile ${ARGN}) + get_filename_component(_absFile ${_currentPoFile} ABSOLUTE) + get_filename_component(_poBasename ${_absFile} NAME_WE) - ADD_CUSTOM_COMMAND( + add_custom_command( OUTPUT ${_absFile}.dummy - COMMAND ${GETTEXT_MSGMERGE_EXECUTABLE} --width=80 --strict --quiet --update --backup=none --no-location -s ${_absFile} ${_absPotFile} + COMMAND ${GETTEXT_MSGMERGE_EXECUTABLE} --width=80 --strict --quiet + --update --backup=none --no-location -s ${_absFile} ${_absPotFile} DEPENDS ${_absPotFile} ${_absFile} COMMENT "${I18N_NAME}-po-update [${_poBasename}]: Updated po file." - ) + ) - SET(_poFiles ${_poFiles} ${_absFile}.dummy) + set(_poFiles ${_poFiles} ${_absFile}.dummy) - ENDFOREACH (_currentPoFile ) + endforeach (_currentPoFile) - ADD_CUSTOM_TARGET(${I18N_NAME}-po-update COMMENT "[${PACKAGE_NAME}]-po-update: Done." DEPENDS ${_poFiles}) -ENDMACRO(GETTEXT_UPDATE_PO) + add_custom_target( + ${I18N_NAME}-po-update + COMMENT "[${PACKAGE_NAME}]-po-update: Done." + DEPENDS ${_poFiles} + ) +endmacro (GETTEXT_UPDATE_PO) -IF (GETTEXT_MSGMERGE_EXECUTABLE) - FILE(GLOB PACKAGE_PO_FILES po/*.po) - GETTEXT_UPDATE_PO(po/${PACKAGE_NAME}.pot ${PACKAGE_PO_FILES}) -ENDIF(GETTEXT_MSGMERGE_EXECUTABLE) +if (GETTEXT_MSGMERGE_EXECUTABLE) + file(GLOB PACKAGE_PO_FILES po/*.po) + gettext_update_po(po/${PACKAGE_NAME}.pot ${PACKAGE_PO_FILES}) +endif (GETTEXT_MSGMERGE_EXECUTABLE) -SET(_gmoFiles) -MACRO(GETTEXT_BUILD_MO) - FOREACH (_poFile ${ARGN}) - GET_FILENAME_COMPONENT(_absFile ${_poFile} ABSOLUTE) - GET_FILENAME_COMPONENT(_poBasename ${_absFile} NAME_WE) - SET(_gmoFile ${CMAKE_CURRENT_BINARY_DIR}/${_poBasename}.mo) +set(_gmoFiles) +macro (GETTEXT_BUILD_MO) + file(MAKE_DIRECTORY "Resources") + message(STATUS "${CMLOC}Creating Resources directory") + add_custom_target( + create_resources_dir ALL COMMAND ${CMAKE_COMMAND} -E make_directory + "./Resources" + ) + foreach (_poFile ${ARGN}) + get_filename_component(_absFile ${_poFile} ABSOLUTE) + get_filename_component(_poBasename ${_absFile} NAME_WE) + set(_gmoFile ${CMAKE_CURRENT_BINARY_DIR}/${_poBasename}.mo) - ADD_CUSTOM_COMMAND( + add_custom_command( OUTPUT ${_gmoFile} COMMAND ${GETTEXT_MSGFMT_EXECUTABLE} --check -o ${_gmoFile} ${_absFile} - COMMAND ${CMAKE_COMMAND} -E copy ${_gmoFile} "Resources/${_poBasename}.lproj/opencpn-${PACKAGE_NAME}.mo" + COMMAND ${CMAKE_COMMAND} -E copy ${_gmoFile} + "Resources/${_poBasename}.lproj/opencpn-${PACKAGE_NAME}.mo" DEPENDS ${_absFile} COMMENT "${I18N_NAME}-i18n [${_poBasename}]: Created mo file." + ) + + if (APPLE) + install( + FILES ${_gmoFile} + DESTINATION OpenCPN.app/Contents/Resources/${_poBasename}.lproj + RENAME opencpn-${PACKAGE_NAME}.mo + ) + message( + STATUS + "${CMLOC}Install language files to: OpenCPN.app/Contents/Resources/${_poBasename}.lproj renamed to: opencpn-${PACKAGE_NAME}.mo" + ) + else (APPLE) + install( + FILES ${_gmoFile} + DESTINATION ${PREFIX_DATA}/locale/${_poBasename}/LC_MESSAGES + RENAME opencpn-${PACKAGE_NAME}.mo ) + message( + STATUS + "${CMLOC}Install language files to: ${PREFIX_DATA}/locale/${_poBasename}/LC_MESSAGES renamed to: opencpn-${PACKAGE_NAME}.mo" + ) + endif (APPLE) + + set(_gmoFiles ${_gmoFiles} ${_gmoFile}) + endforeach (_poFile) +endmacro (GETTEXT_BUILD_MO) + +if (GETTEXT_MSGFMT_EXECUTABLE) + file(GLOB PACKAGE_PO_FILES po/*.po) + gettext_build_mo(${PACKAGE_PO_FILES}) + add_custom_target( + ${I18N_NAME}-i18n + COMMENT "${PACKAGE_NAME}-i18n: Done." + DEPENDS ${_gmoFiles} + ) + add_dependencies(${PACKAGE_NAME} ${I18N_NAME}-i18n) +endif (GETTEXT_MSGFMT_EXECUTABLE) - IF(APPLE) - INSTALL(FILES ${_gmoFile} DESTINATION ${CMAKE_INSTALL_PREFIX}/bin/OpenCPN.app/Contents/Resources/${_poBasename}.lproj RENAME opencpn-${PACKAGE_NAME}.mo ) - ELSE(APPLE) - INSTALL(FILES ${_gmoFile} DESTINATION ${PREFIX_DATA}/locale/${_poBasename}/LC_MESSAGES RENAME opencpn-${PACKAGE_NAME}.mo ) - ENDIF(APPLE) - - SET(_gmoFiles ${_gmoFiles} ${_gmoFile}) - ENDFOREACH (_poFile ) -ENDMACRO(GETTEXT_BUILD_MO) - -if(GETTEXT_MSGFMT_EXECUTABLE) - FILE(GLOB PACKAGE_PO_FILES po/*.po) - GETTEXT_BUILD_MO(${PACKAGE_PO_FILES}) - ADD_CUSTOM_TARGET(${I18N_NAME}-i18n COMMENT "${PACKAGE_NAME}-i18n: Done." DEPENDS ${_gmoFiles}) - ADD_DEPENDENCIES(${PACKAGE_NAME} ${I18N_NAME}-i18n) -ENDIF(GETTEXT_MSGFMT_EXECUTABLE) +set(CMLOC ${SAVE_CMLOC}) diff --git a/cmake/PluginNMEA.cmake b/cmake/PluginNMEA.cmake deleted file mode 100755 index d8ad5e4..0000000 --- a/cmake/PluginNMEA.cmake +++ /dev/null @@ -1,46 +0,0 @@ -##--------------------------------------------------------------------------- -## Author: Sean D'Epagnier -## Copyright: 2015 -## License: GPLv3+ -##--------------------------------------------------------------------------- - -SET(SRC_NMEA0183 - src/nmea0183/latlong.cpp - src/nmea0183/long.cpp - src/nmea0183/nmea0183.cpp - src/nmea0183/response.cpp - src/nmea0183/rmb.cpp - src/nmea0183/sentence.cpp - src/nmea0183/talkerid.cpp - src/nmea0183/rmc.cpp - src/nmea0183/hexvalue.cpp - src/nmea0183/lat.cpp - src/nmea0183/expid.cpp - src/nmea0183/wpl.cpp - src/nmea0183/rte.cpp - src/nmea0183/hdt.cpp - src/nmea0183/hdg.cpp - src/nmea0183/hdm.cpp - src/nmea0183/gll.cpp - src/nmea0183/vtg.cpp - src/nmea0183/gga.cpp - src/nmea0183/gsv.cpp - src/nmea0183/dbt.cpp - src/nmea0183/dpt.cpp - src/nmea0183/mtw.cpp - src/nmea0183/mwv.cpp - src/nmea0183/vhw.cpp - src/nmea0183/vwr.cpp - src/nmea0183/zda.cpp - src/nmea0183/rsa.cpp - src/nmea0183/mwd.cpp - src/nmea0183/vwt.cpp - src/nmea0183/mta.cpp - src/nmea0183/vlw.cpp - src/nmea0183/mda.cpp -) - -INCLUDE_DIRECTORIES(src/nmea0183) - -ADD_LIBRARY(LIB_PLUGINNMEA0183 STATIC ${SRC_NMEA0183}) -TARGET_LINK_LIBRARIES( ${PACKAGE_NAME} LIB_PLUGINNMEA0183 ) diff --git a/cmake/PluginPackage.cmake b/cmake/PluginPackage.cmake index bed5e3b..6a5eaf8 100644 --- a/cmake/PluginPackage.cmake +++ b/cmake/PluginPackage.cmake @@ -1,202 +1,231 @@ -##--------------------------------------------------------------------------- -## Author: Pavel Kalian (Based on the work of Sean D'Epagnier) -## Copyright: 2014 -## License: GPLv3+ -##--------------------------------------------------------------------------- - -IF(NOT QT_ANDROID) - -# build a CPack driven installer package -#include (InstallRequiredSystemLibraries) - -SET(CPACK_PACKAGE_NAME "${PACKAGE_NAME}") -SET(CPACK_PACKAGE_VENDOR "opencpn.org") -SET(CPACK_PACKAGE_DESCRIPTION_SUMMARY ${CPACK_PACKAGE_NAME} ${PACKAGE_VERSION}) -SET(PACKAGE_VERSION "${PLUGIN_VERSION_MAJOR}.${PLUGIN_VERSION_MINOR}.${PLUGIN_VERSION_PATCH}" ) -SET(CPACK_PACKAGE_VERSION ${PACKAGE_VERSION}) -SET(CPACK_PACKAGE_VERSION_MAJOR ${PLUGIN_VERSION_MAJOR}) -SET(CPACK_PACKAGE_VERSION_MINOR ${PLUGIN_VERSION_MINOR}) -SET(CPACK_PACKAGE_VERSION_PATCH ${PLUGIN_VERSION_PATCH}) -SET(CPACK_INSTALL_CMAKE_PROJECTS "${CMAKE_CURRENT_BINARY_DIR};${PACKAGE_NAME};ALL;/") -SET(CPACK_PACKAGE_EXECUTABLES OpenCPN ${PACKAGE_NAME}) -SET(CPACK_DEBIAN_PACKAGE_MAINTAINER ${CPACK_PACKAGE_CONTACT}) - -IF(WIN32) -# to protect against confusable windows users, let us _not_ generate zip packages -# SET(CPACK_GENERATOR "NSIS;ZIP") +# --------------------------------------------------------------------------- +# Author: Pavel Kalian (Based on the work of Sean D'Epagnier) Copyright: +# 2014 License: GPLv3+ +# --------------------------------------------------------------------------- + +set(SAVE_CMLOC ${CMLOC}) +set(CMLOC "PluginPackage: ") + +# build a FLATPAK installer package +message(STATUS "${CMLOC}Package: OCPN_FLATPAK_CONFIG: ${OCPN_FLATPAK_CONFIG}") + +if (OCPN_FLATPAK_CONFIG) + # On a flatpak build lib libraries such as LibGL and wxWidgets are only + # available in the flatpak sandbox. Thus, building flatpak must be done before + # attempts to locate these non-existing libraries in the host i. e., before + # any FindLibrary(), FindWxWidgets(), etc. + find_program(TAR NAMES gtar tar) + if (NOT TAR) + message(FATAL_ERROR "${CMLOC}tar not found, required for OCPN_FLATPAK") + endif () + add_custom_target( + flatpak-build ALL + WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/flatpak + COMMAND + cat + ${CMAKE_CURRENT_BINARY_DIR}/flatpak/org.opencpn.OpenCPN.Plugin.${PACKAGE}.yaml + COMMAND + /usr/bin/flatpak-builder --force-clean -v ${CMAKE_CURRENT_BINARY_DIR}/app + ${CMAKE_CURRENT_BINARY_DIR}/flatpak/org.opencpn.OpenCPN.Plugin.${PACKAGE}.yaml + ) + add_custom_target("flatpak-pkg") + add_custom_command( + TARGET flatpak-pkg + COMMAND + ${TAR} -czf + ${PKG_NVR}-${ARCH}${PKG_TARGET_WX_VER}_${PKG_TARGET_NVR}.tar.gz --verbose + --transform 's|.*/files/|${PACKAGE}-flatpak-${PACKAGE_VERSION}/|' + ${CMAKE_CURRENT_BINARY_DIR}/app/files + COMMAND chmod -R a+wr ../build + ) + + message( + STATUS + "${CMLOC}Zip file name: ${PKG_NVR}-${ARCH}${PKG_TARGET_WX_VER}_${PKG_TARGET_NVR}.tar.gz" + ) + set(CMLOC ${SAVE_CMLOC}) + return() +endif (OCPN_FLATPAK_CONFIG) + +# build a CPack driven installer package SET(CPACK_PACKAGE_NAME +# "${PACKAGE_NAME}") +set(CPACK_PACKAGE_CONTACT ${PACKAGE_CONTACT}) +set(CPACK_PACKAGE_VENDOR "opencpn.org") +set(CPACK_PACKAGE_DESCRIPTION_SUMMARY ${CPACK_PACKAGE_NAME} ${PACKAGE_VERSION}) +set(CPACK_PACKAGE_VERSION "${PACKAGE_VERSION}-${OCPN_MIN_VERSION}") +set(CPACK_INSTALL_CMAKE_PROJECTS + "${CMAKE_CURRENT_BINARY_DIR};${PACKAGE_NAME};ALL;/" +) +message(STATUS "${CMLOC}CPACK_PACKAGE_NAME: ${CPACK_PACKAGE_NAME}") - # override install directory to put package files in the opencpn directory - SET(CPACK_PACKAGE_INSTALL_DIRECTORY "OpenCPN") +if (WIN32) + # The TGZ (tar.gz) is used by experimental plugin manager, + set(CPACK_GENERATOR "NSIS;TGZ") -# CPACK_NSIS_DIR ?? -# CPACK_BUILDWIN_DIR ?? -# CPACK_PACKAGE_ICON ?? + # override install directory to put package files in the opencpn directory + set(CPACK_PACKAGE_INSTALL_DIRECTORY "OpenCPN") - SET(CPACK_NSIS_PACKAGE_NAME "${PACKAGE_NAME}") + set(CPACK_NSIS_PACKAGE_NAME "${PACKAGE_NAME}") # Let cmake find NSIS.template.in - SET(CMAKE_MODULE_PATH "${PROJECT_SOURCE_DIR}/buildwin") - -# These lines set the name of the Windows Start Menu shortcut and the icon that goes with it -# SET(CPACK_NSIS_INSTALLED_ICON_NAME "${PACKAGE_NAME}") -SET(CPACK_NSIS_DISPLAY_NAME "OpenCPN ${PACKAGE_NAME}") - - SET(CPACK_NSIS_DIR "${PROJECT_SOURCE_DIR}/buildwin/NSIS_Unicode") #Gunther - SET(CPACK_BUILDWIN_DIR "${PROJECT_SOURCE_DIR}/buildwin") #Gunther - -ELSE(WIN32) - SET(CPACK_PACKAGE_INSTALL_DIRECTORY ${PACKAGE_NAME}) -ENDIF(WIN32) - -SET(CPACK_STRIP_FILES "${PACKAGE_NAME}") - -SET(CPACK_RESOURCE_FILE_LICENSE "${CMAKE_CURRENT_SOURCE_DIR}/cmake/gpl.txt") - -IF (EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/README") -# MESSAGE(STATUS "Using generic cpack package description file.") - SET(CPACK_PACKAGE_DESCRIPTION_FILE "${CMAKE_CURRENT_SOURCE_DIR}/README") - SET(CPACK_RESOURCE_FILE_README "${CMAKE_CURRENT_SOURCE_DIR}/README") -ENDIF () - -#SET(CPACK_SOURCE_GENERATOR "TGZ") - -# The following components are regex's to match anywhere (unless anchored) -# in absolute path + filename to find files or directories to be excluded -# from source tarball. + list(APPEND CMAKE_MODULE_PATH "${PROJECT_SOURCE_DIR}/buildwin") + + # These lines set the name of the Windows Start Menu shortcut and the icon + # that goes with it + set(CPACK_NSIS_DISPLAY_NAME "OpenCPN ${PACKAGE_NAME}") + + set(CPACK_PACKAGE_FILE_NAME + "${PACKAGE_FILE_NAME}_${CPACK_PACKAGE_VERSION}-${OCPN_MIN_VERSION}_win32" + ) + message(STATUS "${CMLOC}CPACK_PACKAGE_VERSION ${CPACK_PACKAGE_VERSION}") + + set(CPACK_NSIS_DIR "${PROJECT_SOURCE_DIR}/buildwin/NSIS_Unicode") # Gunther + set(CPACK_BUILDWIN_DIR "${PROJECT_SOURCE_DIR}/buildwin") # Gunther + + message(STATUS "${CMLOC}FILE: ${CPACK_PACKAGE_FILE_NAME}") +else (WIN32) + set(CPACK_PACKAGE_INSTALL_DIRECTORY ${PACKAGE_NAME}) +endif (WIN32) + +if (CMAKE_BUILD_TYPE STREQUAL "Debug") + set(CPACK_STRIP_FILES FALSE) + message(STATUS "${CMLOC}Not stripping debug information from module") +else (CMAKE_BUILD_TYPE STREQUAL "DEBUG") + set(CPACK_STRIP_FILES TRUE) + message(STATUS "${CMLOC}Stripping debug information from module") +endif (CMAKE_BUILD_TYPE STREQUAL "Debug") + +set(CPACK_RESOURCE_FILE_LICENSE "${CMAKE_CURRENT_SOURCE_DIR}/cmake/gpl.txt") + +if (EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/README") + message(STATUS "${CMLOC}Using generic cpack package description file.") + set(CPACK_PACKAGE_DESCRIPTION_FILE "${CMAKE_CURRENT_SOURCE_DIR}/README") + set(CPACK_RESOURCE_FILE_README "${CMAKE_CURRENT_SOURCE_DIR}/README") +endif () + +# SET(CPACK_SOURCE_GENERATOR "TGZ") + +# The following components are regex's to match anywhere (unless anchored) in +# absolute path + filename to find files or directories to be excluded from +# source tarball. set(CPACK_SOURCE_IGNORE_FILES -"^${CMAKE_CURRENT_SOURCE_DIR}/.git/*" -"^${CMAKE_CURRENT_SOURCE_DIR}/build*" -"^${CPACK_PACKAGE_INSTALL_DIRECTORY}/*" + "^${CMAKE_CURRENT_SOURCE_DIR}/.git/*" "^${CMAKE_CURRENT_SOURCE_DIR}/build*" + "^${CPACK_PACKAGE_INSTALL_DIRECTORY}/*" ) -IF(UNIX AND NOT APPLE) -# INCLUDE(UseRPMTools) -# IF(RPMTools_FOUND) -# RPMTools_ADD_RPM_TARGETS(packagename ${PROJECT_SOURCE_DIR}/package.spec) -# ENDIF(RPMTools_FOUND) - -# need apt-get install rpm, for rpmbuild - SET(PACKAGE_DEPS "opencpn, bzip2, gzip") - SET(PACKAGE_RELEASE 1) - - - IF (CMAKE_SYSTEM_PROCESSOR MATCHES "arm*") - SET (ARCH "armhf") - # don't bother with rpm on armhf - SET(CPACK_GENERATOR "DEB;RPM;TBZ2") - ELSE () - SET(CPACK_GENERATOR "DEB;RPM;TBZ2") - - IF (CMAKE_SIZEOF_VOID_P MATCHES "8") - SET (ARCH "amd64") - SET(CPACK_RPM_PACKAGE_ARCHITECTURE "x86_64") - ELSE (CMAKE_SIZEOF_VOID_P MATCHES "8") - SET (ARCH "i386") - # note: in a chroot must use "setarch i686 make package" - SET(CPACK_RPM_PACKAGE_ARCHITECTURE "i686") - ENDIF (CMAKE_SIZEOF_VOID_P MATCHES "8") - ENDIF () - - SET(CPACK_DEBIAN_PACKAGE_DEPENDS ${PACKAGE_DEPS}) - SET(CPACK_DEBIAN_PACKAGE_RECOMMENDS ${PACKAGE_RECS}) - SET(CPACK_DEBIAN_PACKAGE_ARCHITECTURE ${ARCH}) - SET(CPACK_DEBIAN_PACKAGE_VERSION "${CPACK_PACKAGE_VERSION}") - SET(CPACK_DEBIAN_PACKAGE_SECTION "misc") - SET(CPACK_DEBIAN_COMPRESSION_TYPE "xz") # requires my patches to cmake - - SET(CPACK_RPM_PACKAGE_VERSION "${CPACK_PACKAGE_VERSION}") - SET(CPACK_RPM_PACKAGE_REQUIRES ${PACKAGE_DEPS}) -# SET(CPACK_RPM_PACKAGE_GROUP "Applications/Engineering") - SET(CPACK_RPM_PACKAGE_LICENSE "gplv3+") - - SET(CPACK_RPM_COMPRESSION_TYPE "xz") -# SET(CPACK_RPM_USER_BINARY_SPECFILE "${PROJECT_SOURCE_DIR}/opencpn.spec.in") - - SET(CPACK_PACKAGE_DESCRIPTION_SUMMARY "${PACKAGE_NAME} PlugIn for OpenCPN") - SET(CPACK_PACKAGE_DESCRIPTION "${PACKAGE_NAME} PlugIn for OpenCPN") -# SET(CPACK_SET_DESTDIR ON) - SET(CPACK_INSTALL_PREFIX "${CMAKE_INSTALL_PREFIX}") - - - SET(CPACK_PACKAGE_FILE_NAME "${PACKAGE_NAME}_${PACKAGE_VERSION}-${PACKAGE_RELEASE}_${ARCH}" ) -ENDIF(UNIX AND NOT APPLE) - -IF(TWIN32 AND NOT UNIX) -# configure_file(${PROJECT_SOURCE_DIR}/src/opencpn.rc.in ${PROJECT_SOURCE_DIR}/src/opencpn.rc) - configure_file("${PROJECT_SOURCE_DIR}/buildwin/NSIS_Unicode/Language files/Langstrings_GERMAN.nsh.in" "${PROJECT_SOURCE_DIR}//buildwin/NSIS_Unicode/Include/Langstrings_GERMAN.nsh" @ONLY) - configure_file("${PROJECT_SOURCE_DIR}/buildwin/NSIS_Unicode/Language files/Langstrings_FRENCH.nsh.in" "${PROJECT_SOURCE_DIR}//buildwin/NSIS_Unicode/Include/Langstrings_FRENCH.nsh" @ONLY) - configure_file("${PROJECT_SOURCE_DIR}/buildwin/NSIS_Unicode/Language files/Langstrings_CZECH.nsh.in" "${PROJECT_SOURCE_DIR}//buildwin/NSIS_Unicode/Include/Langstrings_CZECH.nsh" @ONLY) - configure_file("${PROJECT_SOURCE_DIR}/buildwin/NSIS_Unicode/Language files/Langstrings_DANISH.nsh.in" "${PROJECT_SOURCE_DIR}//buildwin/NSIS_Unicode/Include/Langstrings_DANISH.nsh" @ONLY) - configure_file("${PROJECT_SOURCE_DIR}/buildwin/NSIS_Unicode/Language files/Langstrings_SPANISH.nsh.in" "${PROJECT_SOURCE_DIR}//buildwin/NSIS_Unicode/Include/Langstrings_SPANISH.nsh" @ONLY) - configure_file("${PROJECT_SOURCE_DIR}/buildwin/NSIS_Unicode/Language files/Langstrings_ITALIAN.nsh.in" "${PROJECT_SOURCE_DIR}//buildwin/NSIS_Unicode/Include/Langstrings_ITALIAN.nsh" @ONLY) - configure_file("${PROJECT_SOURCE_DIR}/buildwin/NSIS_Unicode/Language files/Langstrings_DUTCH.nsh.in" "${PROJECT_SOURCE_DIR}//buildwin/NSIS_Unicode/Include/Langstrings_DUTCH.nsh" @ONLY) - configure_file("${PROJECT_SOURCE_DIR}/buildwin/NSIS_Unicode/Language files/Langstrings_POLISH.nsh.in" "${PROJECT_SOURCE_DIR}//buildwin/NSIS_Unicode/Include/Langstrings_POLISH.nsh" @ONLY) - configure_file("${PROJECT_SOURCE_DIR}/buildwin/NSIS_Unicode/Language files/Langstrings_PORTUGUESEBR.nsh.in" "${PROJECT_SOURCE_DIR}//buildwin/NSIS_Unicode/Include/Langstrings_PORTUGUESEBR.nsh" @ONLY) - configure_file("${PROJECT_SOURCE_DIR}/buildwin/NSIS_Unicode/Language files/Langstrings_PORTUGUESE.nsh.in" "${PROJECT_SOURCE_DIR}//buildwin/NSIS_Unicode/Include/Langstrings_PORTUGUESE.nsh" @ONLY) - configure_file("${PROJECT_SOURCE_DIR}/buildwin/NSIS_Unicode/Language files/Langstrings_RUSSIAN.nsh.in" "${PROJECT_SOURCE_DIR}//buildwin/NSIS_Unicode/Include/Langstrings_RUSSIAN.nsh" @ONLY) - configure_file("${PROJECT_SOURCE_DIR}/buildwin/NSIS_Unicode/Language files/Langstrings_SWEDISH.nsh.in" "${PROJECT_SOURCE_DIR}//buildwin/NSIS_Unicode/Include/Langstrings_SWEDISH.nsh" @ONLY) - configure_file("${PROJECT_SOURCE_DIR}/buildwin/NSIS_Unicode/Language files/Langstrings_FINNISH.nsh.in" "${PROJECT_SOURCE_DIR}//buildwin/NSIS_Unicode/Include/Langstrings_FINNISH.nsh" @ONLY) - configure_file("${PROJECT_SOURCE_DIR}/buildwin/NSIS_Unicode/Language files/Langstrings_NORWEGIAN.nsh.in" "${PROJECT_SOURCE_DIR}//buildwin/NSIS_Unicode/Include/Langstrings_NORWEGIAN.nsh" @ONLY) - configure_file("${PROJECT_SOURCE_DIR}/buildwin/NSIS_Unicode/Language files/Langstrings_CHINESETW.nsh.in" "${PROJECT_SOURCE_DIR}//buildwin/NSIS_Unicode/Include/Langstrings_CHINESETW.nsh" @ONLY) - configure_file("${PROJECT_SOURCE_DIR}/buildwin/NSIS_Unicode/Language files/Langstrings_TURKISH.nsh.in" "${PROJECT_SOURCE_DIR}//buildwin/NSIS_Unicode/Include/Langstrings_TURKISH.nsh" @ONLY) -ENDIF(TWIN32 AND NOT UNIX) - - -# this dummy target is necessary to make sure the ADDITIONAL_MAKE_CLEAN_FILES directive is executed. -# apparently, the base CMakeLists.txt file must have "some" target to activate all the clean steps. -#ADD_CUSTOM_TARGET(dummy COMMENT "dummy: Done." DEPENDS ${PACKAGE_NAME}) - - -INCLUDE(CPack) - -IF(NOT STANDALONE MATCHES "BUNDLED") -IF(APPLE) -MESSAGE (STATUS "*** Staging to build PlugIn OSX Package ***") - - # Copy a bunch of files so the Packages installer builder can find them - # relative to ${CMAKE_CURRENT_BINARY_DIR} - # This avoids absolute paths in the chartdldr_pi.pkgproj file - -configure_file(${PROJECT_SOURCE_DIR}/cmake/gpl.txt - ${CMAKE_CURRENT_BINARY_DIR}/license.txt COPYONLY) - -configure_file(${PROJECT_SOURCE_DIR}/buildosx/InstallOSX/pkg_background.jpg - ${CMAKE_CURRENT_BINARY_DIR}/pkg_background.jpg COPYONLY) - - # Patch the pkgproj.in file to make the output package name conform to Xxx-Plugin_x.x.pkg format - # Key is: - # NAME - # ${VERBOSE_NAME}-Plugin_${VERSION_MAJOR}.${VERSION_MINOR} - - configure_file(${PROJECT_SOURCE_DIR}/buildosx/InstallOSX/${PACKAGE_NAME}.pkgproj.in - ${CMAKE_CURRENT_BINARY_DIR}/${VERBOSE_NAME}.pkgproj) - - ADD_CUSTOM_COMMAND( - OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/${VERBOSE_NAME}-Plugin.pkg - COMMAND /usr/local/bin/packagesbuild -F ${CMAKE_CURRENT_BINARY_DIR} ${CMAKE_CURRENT_BINARY_DIR}/${VERBOSE_NAME}.pkgproj - WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR} - DEPENDS ${PACKAGE_NAME} - COMMENT "create-pkg [${PACKAGE_NAME}]: Generating pkg file." -) - - ADD_CUSTOM_TARGET(create-pkg COMMENT "create-pkg: Done." - DEPENDS ${CMAKE_CURRENT_BINARY_DIR}/${VERBOSE_NAME}-Plugin.pkg ) - - -ENDIF(APPLE) - -IF(WIN32) - SET(CPACK_PACKAGE_FILE_NAME "${PACKAGE_NAME}-${PLUGIN_VERSION_MAJOR}.${PLUGIN_VERSION_MINOR}-win32.exe" ) - MESSAGE(STATUS "FILE: ${CPACK_PACKAGE_FILE_NAME}") - add_custom_command(OUTPUT ${CPACK_PACKAGE_FILE_NAME} - COMMAND signtool sign /v /f \\cert\\OpenCPNSPC.pfx /d http://www.opencpn.org /t http://timestamp.verisign.com/scripts/timstamp.dll ${CPACK_PACKAGE_FILE_NAME} - WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR} - DEPENDS ${PACKAGE_NAME} - COMMENT "Code-Signing: ${CPACK_PACKAGE_FILE_NAME}") - ADD_CUSTOM_TARGET(codesign COMMENT "code signing: Done." - DEPENDS ${CMAKE_CURRENT_BINARY_DIR}/${CPACK_PACKAGE_FILE_NAME} ) - -ENDIF(WIN32) -ENDIF(NOT STANDALONE MATCHES "BUNDLED") - -ENDIF(NOT QT_ANDROID) +if (UNIX AND NOT APPLE) + + # need apt-get install rpm, for rpmbuild + set(PACKAGE_DEPS "${PACKAGE_DEPS},opencpn, bzip2, gzip") + message(STATUS "${CMLOC}PACKAGE_DEPS: ${PACKAGE_DEPS}") + if (NOT QT_ANDROID) + set(CPACK_GENERATOR "DEB;TGZ") + else () + set(CPACK_GENERATOR "TGZ") + endif () + + set(CPACK_DEBIAN_PACKAGE_NAME ${PACKAGING_NAME}) + set(CPACK_DEBIAN_PACKAGE_DEPENDS ${PACKAGE_DEPS}) + set(CPACK_DEBIAN_PACKAGE_RECOMMENDS ${PACKAGE_RECS}) + set(CPACK_DEBIAN_PACKAGE_ARCHITECTURE ${ARCH}) + set(CPACK_DEBIAN_PACKAGE_VERSION "${CPACK_PACKAGE_VERSION}") + set(CPACK_DEBIAN_PACKAGE_SECTION "misc") + set(CPACK_DEBIAN_COMPRESSION_TYPE "xz") # requires my patches to cmake + set(CPACK_CMAKE_GENERATOR Ninja) + set(CPACK_PACKAGE_DESCRIPTION_SUMMARY "${PACKAGE_NAME} PlugIn for OpenCPN") + set(CPACK_PACKAGE_DESCRIPTION "${PACKAGE_NAME} PlugIn for OpenCPN") + set(CPACK_SET_DESTDIR ON) + +endif (UNIX AND NOT APPLE) + +if (NOT STANDALONE MATCHES "BUNDLED") + # MacOS .pkg installer is deprecated in OCPN 5.6.2+ if(APPLE) + if (FALSE) + message(STATUS "${CMLOC}*** Staging to build PlugIn OSX Package ***") + + # Copy a bunch of files so the Packages installer builder can find them + # relative to ${CMAKE_CURRENT_BINARY_DIR} This avoids absolute paths in the + # chartdldr_pi.pkgproj file + + configure_file( + ${PROJECT_SOURCE_DIR}/cmake/gpl.txt + ${CMAKE_CURRENT_BINARY_DIR}/license.txt COPYONLY + ) + + configure_file( + ${PROJECT_SOURCE_DIR}/buildosx/InstallOSX/pkg_background.jpg + ${CMAKE_CURRENT_BINARY_DIR}/pkg_background.jpg COPYONLY + ) + + # Patch the pkgproj.in file to make the output package name conform to + # Xxx-Plugin_x.x.pkg format Key is: NAME + # ${VERBOSE_NAME}-Plugin_${VERSION_MAJOR}.${VERSION_MINOR} + + configure_file( + ${PROJECT_SOURCE_DIR}/buildosx/InstallOSX/plugin.pkgproj.in + ${CMAKE_CURRENT_BINARY_DIR}/${VERBOSE_NAME}.pkgproj + ) + + add_custom_command( + OUTPUT + ${CMAKE_CURRENT_BINARY_DIR}/${VERBOSE_NAME}-Plugin_${PACKAGE_VERSION}_${OCPN_MIN_VERSION}.pkg + COMMAND /usr/local/bin/packagesbuild -F ${CMAKE_CURRENT_BINARY_DIR} + ${CMAKE_CURRENT_BINARY_DIR}/${VERBOSE_NAME}.pkgproj + WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR} + DEPENDS ${PACKAGE_NAME} + COMMENT "create-pkg [${PACKAGE_NAME}]: Generating pkg file." + ) + + add_custom_target( + create-pkg + COMMENT "create-pkg: Done." + DEPENDS + ${CMAKE_CURRENT_BINARY_DIR}/${VERBOSE_NAME}-Plugin_${PACKAGE_VERSION}_${OCPN_MIN_VERSION}.pkg + ) + + endif (FALSE) + + set(CPACK_GENERATOR "TGZ") + set(CPACK_PACKAGE_DESCRIPTION_SUMMARY "${PACKAGE_NAME} PlugIn for OpenCPN") + set(CPACK_PACKAGE_DESCRIPTION "${PACKAGE_NAME} PlugIn for OpenCPN") + set(CPACK_PACKAGE_FILE_NAME "${PACKAGING_NAME_XML}") + message(STATUS "${CMLOC}CPACK_PACKAGE_FILE_NAME: ${CPACK_PACKAGE_FILE_NAME}") + + if (WIN32) + set(CPACK_SET_DESTDIR OFF) + message(STATUS "${CMLOC}FILE: ${CPACK_PACKAGE_FILE_NAME}") + add_custom_command( + OUTPUT ${CPACK_PACKAGE_FILE_NAME} + COMMAND + signtool sign /v /f \\cert\\OpenCPNSPC.pfx /d http://www.opencpn.org /t + http://timestamp.verisign.com/scripts/timstamp.dll + ${CPACK_PACKAGE_FILE_NAME} + WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR} + DEPENDS ${PACKAGE_NAME} + COMMENT "Code-Signing: ${CPACK_PACKAGE_FILE_NAME}" + ) + add_custom_target( + codesign + COMMENT "code signing: Done." + DEPENDS ${CMAKE_CURRENT_BINARY_DIR}/${CPACK_PACKAGE_FILE_NAME} + ) + endif (WIN32) + + message( + STATUS + "${CMLOC}CPACK_PACKAGE_VERSION: ${CPACK_PACKAGE_VERSION}, PACKAGE_VERSION ${PACKAGE_VERSION}, CPACK_PACKAGE_FILE_NAME: ${CPACK_PACKAGE_FILE_NAME}" + ) + + set(CPACK_PROJECT_CONFIG_FILE + "${CMAKE_CURRENT_BINARY_DIR}/PluginCPackOptions.cmake" + ) + message( + STATUS + "${CMLOC}PROJECT_SOURCE_DIR: ${PROJECT_SOURCE_DIR}, CPACK_PROJECT_CONFIG_FILE: ${CPACK_PROJECT_CONFIG_FILE}" + ) + + include(CPack) + +endif (NOT STANDALONE MATCHES "BUNDLED") + +set(CMLOC ${SAVE_CMLOC}) diff --git a/cmake/PluginSetup.cmake b/cmake/PluginSetup.cmake new file mode 100644 index 0000000..ac808e7 --- /dev/null +++ b/cmake/PluginSetup.cmake @@ -0,0 +1,440 @@ +# --------------------------------------------------------------------------- +# Author: Jon Gough based on the work of Pavel Kalian (Based on the work of +# Sean D'Epagnier) Copyright: 2020 License: GPLv3+ +# --------------------------------------------------------------------------- + +set(SAVE_CMLOC ${CMLOC}) +set(CMLOC "PluginSetup: ") + +# Make sure cmake sub directory files can be found by cmake +list(APPEND CMAKE_MODULE_PATH "${PROJECT_SOURCE_DIR}/cmake") + +if (NOT DEFINED GIT_REPOSITORY_SERVER) + set(GIT_REPOSITORY_SERVER "github.com") + message( + STATUS + "${CMLOC}GIT_REPOSITORY_SERVER not found setting to: ${GIT_REPOSITORY_SERVER}" + ) +endif () + +# Export variables used in plugin setup: GIT_HASH, GIT_COMMIT, PKG_TARGET, +# PKG_TARGET_VERSION and PKG_NVR +if (NOT ${PACKAGE} MATCHES "(.*)_pi") + set(PACKAGE_NAME ${PACKAGE}_pi) + set(PACKAGE_FILE_NAME "${PACKAGE}_pi") +else (NOT ${PACKAGE} MATCHES "(.*)_pi") + set(PACKAGE_NAME ${PACKAGE}) + set(PACKAGE_FILE_NAME "${PACKAGE}") +endif (NOT ${PACKAGE} MATCHES "(.*)_pi") +string(TOUPPER "${PACKAGE}" TITLE_NAME) + +# add library for use later +add_library(${PACKAGE_NAME} SHARED) + +project( + ${PACKAGE} + VERSION ${VERSION_MAJOR}.${VERSION_MINOR}.${VERSION_PATCH}.${VERSION_TWEAK} +) +message(STATUS "${CMLOC}PROJECT_VERSION: ${PROJECT_VERSION}") + +set(PACKAGE_VERSION + "${VERSION_MAJOR}.${VERSION_MINOR}.${VERSION_PATCH}.${VERSION_TWEAK}" +) + +message( + STATUS + "${CMLOC}${VERBOSE_NAME} Version: ${VERSION_MAJOR}.${VERSION_MINOR}.${VERSION_PATCH}.${VERSION_TWEAK}" +) +message(STATUS "${CMLOC}OPCN_FLATPAK: ${OCPN_FLATPAK}") + +set(PKG_NVR ${PACKAGE_NAME}-${PROJECT_VERSION}) +set(PKG_URL + "https://dl.cloudsmith.io/public/--pkg_repo--/raw/names/--name--/versions/--version--/--filename--" +) + +# check to make sure we have a git repository +execute_process( + COMMAND git status $>/dev/null + RESULT_VARIABLE GIT_REPOSITORY_EXISTS + OUTPUT_QUIET ERROR_QUIET +) +if ("${GIT_REPOSITORY_EXISTS}" STREQUAL "0") + execute_process( + COMMAND git log -1 --format=%h + WORKING_DIRECTORY ${PROJECT_SOURCE_DIR} + OUTPUT_VARIABLE GIT_HASH + OUTPUT_STRIP_TRAILING_WHITESPACE + ) + + execute_process( + COMMAND git log -1 --format=%ci + WORKING_DIRECTORY ${PROJECT_SOURCE_DIR} + OUTPUT_VARIABLE GIT_COMMIT_DATE + OUTPUT_STRIP_TRAILING_WHITESPACE + ) +else () + set(GIT_HASH "") + set(GIT_COMMIT_DATE "") +endif () + +message( + STATUS + "${CMLOC}OCPN_FLATPAK_CONFIG: ${OCPN_FLATPAK_CONFIG}, OCPN_FLATPAK_BUILD: ${OCPN_FLATPAK_BUILD}, UNIX: ${UNIX}" +) +unset(PKG_TARGET_WX_VER) +if (OCPN_FLATPAK_CONFIG OR OCPN_FLATPAK_BUILD) + set(PKG_TARGET "flatpak") + set(PKG_TARGET_VERSION "${SDK_VER}") # As of flatpak/*yaml + message(STATUS "${CMLOC}PKG_TARGET_VERSION: ${PKG_TARGET_VERSION}") + if (NOT "$ENV{WX_VER}" STREQUAL "") + set(PKG_TARGET_WX_VER "-$ENV{WX_VER}") + else () + unset(PKG_TARGET_WX_VER) + endif () + message(STATUS "${CMLOC}PKG_TARGET_WX_VER: ${PKG_TARGET_WX_VER}") +elseif (MINGW) + set(PKG_TARGET "mingw") + if (CMAKE_SYSTEM_VERSION) + set(PKG_TARGET_VERSION ${CMAKE_SYSTEM_VERSION}) + else () + set(PKG_TARGET_VERSION 10) + endif () +elseif (MSVC) + set(PKG_TARGET "msvc") + message(STATUS "${CMLOC}WX_VER: $ENV{WX_VER}") + if (NOT "$ENV{WX_VER}" STREQUAL "31") + # if( NOT "$ENV{WX_VER}" STREQUAL "" ) + set(PKG_TARGET_WX_VER "-wx$ENV{WX_VER}") + else () + unset(PKG_TARGET_WX_VER) + endif () + message( + STATUS + "${CMLOC}PKG_TARGET_WX_VER: ${PKG_TARGET_WX_VER}, WX_VER: $ENV{WX_VER}" + ) + if (CMAKE_SYSTEM_VERSION) + set(PKG_TARGET_VERSION ${CMAKE_SYSTEM_VERSION}) + elseif (CMAKE_VS_WINDOWS_TARGET_PLATFORM_VERSION) + set(PKG_TARGET_VERSION ${CMAKE_VS_WINDOWS_TARGET_PLATFORM_VERSION}) + else () + set(PKG_TARGET_VERSION 10) + endif () +elseif (APPLE) + set(PKG_BUILD_TARGET "darwin") + if (NOT "$ENV{WX_VER}" STREQUAL "") + set(PKG_TARGET "darwin-wx$ENV{WX_VER}") + else () + set(PKG_TARGET "${PKG_BUILD_TARGET}") + endif () + execute_process( + COMMAND "sw_vers" "-productVersion" OUTPUT_VARIABLE PKG_TARGET_VERSION + ) +elseif (_wx_selected_config MATCHES "androideabi-qt-arm64") + set(PKG_TARGET "Android") + set(PKG_TARGET_VERSION 16) + set(QT_ANDROID ON) +elseif (_wx_selected_config MATCHES "androideabi-qt-armhf") + set(PKG_TARGET "Android") + set(PKG_TARGET_VERSION 16) + set(QT_ANDROID ON) +elseif (UNIX) + # Some linux dist: + execute_process( + COMMAND "lsb_release" "-rs" OUTPUT_VARIABLE PKG_TARGET_VERSION + ) + if ("$ENV{BUILD_ENV}" STREQUAL "debian" OR "$ENV{BUILD_ENV}" STREQUAL + "DEBIAN" + ) + set(PKG_TARGET "$ENV{BUILD_ENV}") + if ("${PKG_TARGET_VERSION}" STRLESS "12") + if (NOT "$ENV{WX_VER}" STREQUAL "") + set(PKG_TARGET_WX_VER "-wx$ENV{WX_VER}") + endif () + endif () + message( + STATUS + "${CMLOC}PKG_TARGET_WX_VER: ${PKG_TARGET_WX_VER}, WX_VER: $ENV{WX_VER}" + ) + elseif ( + ("$ENV{BUILD_ENV}" STREQUAL "ubuntu" OR "$ENV{BUILD_ENV}" STREQUAL "UBUNTU") + AND (("$ENV{OCPN_TARGET}" STREQUAL "jammy" OR "$ENV{OCPN_TARGET}" STREQUAL + "JAMMY")) + ) + set(PKG_TARGET "ubuntu") + if (NOT "$ENV{WX_VER}" STREQUAL "") + set(PKG_TARGET_WX_VER "-wx$ENV{WX_VER}") + endif () + message( + STATUS + "${CMLOC}PKG_TARGET_WX_VER: ${PKG_TARGET_WX_VER}, WX_VER: $ENV{WX_VER}" + ) + else () + execute_process(COMMAND "lsb_release" "-is" OUTPUT_VARIABLE PKG_TARGET) + endif () +else () + set(PKG_TARGET "unknown") + set(PKG_TARGET_VERSION 1) +endif () + +if (${BUILD_GTK3}) + message(STATUS "${CMLOC}set CMAKE defined BUILD_GTK3: ${BUILD_GTK3}") + set(ENV{BUILD_GTK3} ${BUILD_GTK3}) +endif () + +if (NOT WIN32 AND NOT QT_ANDROID) + # default + set(ARCH "i386") + if (UNIX AND NOT APPLE) + + message(STATUS "${CMLOC}*** Will install to ${CMAKE_INSTALL_PREFIX} ***") + + if (EXISTS /etc/debian_version) + message(STATUS "${CMLOC}*** Debian detected ***") + set(PACKAGE_FORMAT "DEB") + set(PACKAGE_DEPS + "libc6, libwxgtk3.0-0, wx-i18n, libglu1-mesa (>= 7.0.0), libgl1-mesa-glx (>= 7.0.0), zlib1g, bzip2, libportaudio2" + ) + set(PACKAGE_RECS "xcalib,xdg-utils") + set(LIB_INSTALL_DIR "lib") + if (CMAKE_SYSTEM_PROCESSOR MATCHES "arm*") + if (CMAKE_SIZEOF_VOID_P MATCHES "8") + if ("$ENV{OCPN_TARGET}" MATCHES "flatpak") + message(STATUS "${CMLOC}*** Flatpak detected ***") + if ("$ENV{BUILD_ARCH}" MATCHES "aarch64") + set(ARCH "aarch64") + else ("$ENV{BUILD_ARCH}" MATCHES "aarch64") + set (ARCH "x86_64") + endif ("$ENV{BUILD_ARCH}" MATCHES "aarch64") + else ("$ENV{OCPN_TARGET}" MATCHES "flatpak") + set(ARCH "arm64") + endif ("$ENV{OCPN_TARGET}" MATCHES "flatpak") + add_definitions(-DOCPN_ARM64) + else (CMAKE_SIZEOF_VOID_P MATCHES "8") + set(ARCH "armhf") + add_definitions(-DOCPN_ARMHF) + endif (CMAKE_SIZEOF_VOID_P MATCHES "8") + else (CMAKE_SYSTEM_PROCESSOR MATCHES "arm*") + if (CMAKE_SIZEOF_VOID_P MATCHES "8") + set(ARCH "x86_64") + else (CMAKE_SIZEOF_VOID_P MATCHES "8") + set(ARCH "i386") + endif (CMAKE_SIZEOF_VOID_P MATCHES "8") + endif (CMAKE_SYSTEM_PROCESSOR MATCHES "arm*") + endif (EXISTS /etc/debian_version) + if (NOT DEFINED PACKAGE_FORMAT) + if ("$ENV{OCPN_TARGET}" MATCHES "flatpak") + message(STATUS "*** Flatpak detected ***") + message(STATUS "** BUILD_ARCH: $ENV{BUILD_ARCH}") + set(PACKAGE_FORMAT "TGZ") + if ("$ENV{BUILD_ARCH}" MATCHES "aarch64") + set(ARCH "aarch64") + else ("$ENV{BUILD_ARCH}" MATCHES "aarch64") + set (ARCH "x86_64") + endif ("$ENV{BUILD_ARCH}" MATCHES "aarch64") + set(LIB_INSTALL_DIR "lib") + endif ("$ENV{OCPN_TARGET}" MATCHES "flatpak") + endif (NOT DEFINED PACKAGE_FORMAT) + + if (NOT DEFINED PACKAGE_FORMAT) + if (EXISTS /etc/redhat-release) + message(STATUS "${CMLOC}*** Redhat detected ***") + set(PACKAGE_FORMAT "RPM") + set(PACKAGE_DEPS "opencpn") + + if (CMAKE_SYSTEM_PROCESSOR MATCHES "arm*") + if (CMAKE_SIZEOF_VOID_P MATCHES "8") + set(ARCH "aarch64") + add_definitions(-DOCPN_ARM64) + else (CMAKE_SIZEOF_VOID_P MATCHES "8") + set(ARCH "armhf") + add_definitions(-DOCPN_ARMHF) + endif (CMAKE_SIZEOF_VOID_P MATCHES "8") + else (CMAKE_SYSTEM_PROCESSOR MATCHES "arm*") + if (CMAKE_SIZEOF_VOID_P MATCHES "8") + set(ARCH "x86_64") + set(LIB_INSTALL_DIR "lib64") + else (CMAKE_SIZEOF_VOID_P MATCHES "8") + set(ARCH "i386") + set(LIB_INSTALL_DIR "lib") + endif (CMAKE_SIZEOF_VOID_P MATCHES "8") + endif (CMAKE_SYSTEM_PROCESSOR MATCHES "arm*") + + endif (EXISTS /etc/redhat-release) + endif (NOT DEFINED PACKAGE_FORMAT) + + if (NOT DEFINED PACKAGE_FORMAT) + if (EXISTS /etc/os-release + OR EXISTS /etc/sysconfig/SuSEfirewall2.d + OR EXISTS /etc/suse-release + OR EXISTS /etc/SuSE-release + ) + message(STATUS "${CMLOC}*** OpenSUSE detected ***") + set(PACKAGE_FORMAT "RPM") + set(PACKAGE_DEPS "opencpn") + if (CMAKE_SIZEOF_VOID_P MATCHES "8") + set(ARCH "x86_64") + set(LIB_INSTALL_DIR "lib64") + else (CMAKE_SIZEOF_VOID_P MATCHES "8") + set(ARCH "i386") + set(LIB_INSTALL_DIR "lib") + endif (CMAKE_SIZEOF_VOID_P MATCHES "8") + endif ( + EXISTS /etc/os-release + OR EXISTS /etc/sysconfig/SuSEfirewall2.d + OR EXISTS /etc/suse-release + OR EXISTS /etc/SuSE-release + ) + endif (NOT DEFINED PACKAGE_FORMAT) + + endif (UNIX AND NOT APPLE) + + if (APPLE) + set(ARCH "x86_64") + endif (APPLE) + +else (NOT WIN32 AND NOT QT_ANDROID) + set(ARCH "x86_64") + if (MSVC) + string(TOLOWER "${CMAKE_VS_PLATFORM_NAME}" platform_name) + if (platform_name MATCHES "x64") + set(ARCH "x86_64") + elseif (platform_name MATCHES "arm64") + set(ARCH "arm64") + else () + set(ARCH "x86") + endif () + else () + if (_wx_selected_config MATCHES "androideabi-qt-arm64") + set(ARCH "arm64") + # android cannot used graphics context is wxWidgets as it does not exist + set(wxUSE_GRAPHICS_CONTEXT 0) + endif (_wx_selected_config MATCHES "androideabi-qt-arm64") + if (_wx_selected_config MATCHES "androideabi-qt-armhf") + set(ARCH "armhf") + # android cannot used graphics context is wxWidgets as it does not exist + set(wxUSE_GRAPHICS_CONTEXT 0) + endif (_wx_selected_config MATCHES "androideabi-qt-armhf") + endif () +endif (NOT WIN32 AND NOT QT_ANDROID) + +if (APPLE AND CMAKE_OSX_ARCHITECTURES) + string(REPLACE ";" "-" _compound_arch "${CMAKE_OSX_ARCHITECTURES}") + set(COMPOUND_ARCH_DASH "${_compound_arch}") + set(ARCH "${CMAKE_OSX_ARCHITECTURES}") +else () + set(COMPOUND_ARCH_DASH "${ARCH}") +endif () + +message(STATUS "${CMLOC}ARCH: ${ARCH}") +message(STATUS "${CMLOC}COMPOUND_ARCH_DASH: ${COMPOUND_ARCH_DASH}") + +if (NOT "${PKG_TARGET}" STREQUAL "") + string(STRIP ${PKG_TARGET} PKG_TARGET) + string(TOLOWER ${PKG_TARGET} PKG_TARGET) +endif () +if (NOT "${PKG_TARGET_VERSION}" STREQUAL "") + string(STRIP ${PKG_TARGET_VERSION} PKG_TARGET_VERSION) + string(TOLOWER ${PKG_TARGET_VERSION} PKG_TARGET_VERSION) +endif () +set(PKG_TARGET_NVR ${PKG_TARGET}-${PKG_TARGET_VERSION}) +message( + STATUS + "${CMLOC}PKG_TARGET: ${PKG_TARGET}, PKG_TARGET_VERSION: ${PKG_TARGET_VERSION}" +) + +# Allow OCPN_TARGET to be used on the cmake command line +message(STATUS "${CMLOC}OCPN_TARGET: $ENV{OCPN_TARGET}") +if (NOT DEFINED ENV{OCPN_TARGET}) + if (DEFINED OCPN_TARGET) + message(STATUS "${CMLOC}OCPN_TARGET: ${OCPN_TARGET}") + set(ENV{OCPN_TARGET} ${OCPN_TARGET}) + else () + message(STATUS "${CMLOC}PKG_TARGET: ${PKG_TARGET}") + endif () +endif () + +set(PLUGIN_NAME ${PACKAGE}-plugin-${PKG_TARGET}-${ARCH}-${PKG_TARGET_VERSION}) + +if (Plugin_CXX11) + message(STATUS "${CMLOC}Attempting to use c++11") + include(CheckCXXCompilerFlag) + check_cxx_compiler_flag("-std=c++11" COMPILER_SUPPORTS_CXX11) + check_cxx_compiler_flag("-std=c++0x" COMPILER_SUPPORTS_CXX0X) + if (COMPILER_SUPPORTS_CXX11) + set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11") + set(Plugin_USE_CXX11 ON) + elseif (COMPILER_SUPPORTS_CXX0X) + set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++0x") + set(Plugin_USE_CXX11 ON) + else () + message( + STATUS + "${CMLOC}The compiler ${CMAKE_CXX_COMPILER} has no C++11 support. Please use a different C++ compiler." + ) + set(Plugin_USE_CXX11 OFF) + endif () +else () + set(Plugin_USE_CXX11 OFF) +endif () + +if (Plugin_USE_CXX11) + message(STATUS "${CMLOC}Allowing use of c++11") +endif () + +message(STATUS "${CMLOC}CMAKE version: ${CMAKE_VERSION}") +if (CMAKE_VERSION VERSION_GREATER 3.4) + set(ENABLE_CLANG_TIDY + OFF + CACHE BOOL "Add clang-tidy automatically to builds" + ) + if (ENABLE_CLANG_TIDY) + find_program( + CLANG_TIDY_EXE + NAMES "clang-tidy" + PATHS /usr/local/opt/llvm/bin + ) + if (CLANG_TIDY_EXE) + message(STATUS "${CMLOC}clang-tidy found: ${CLANG_TIDY_EXE}") + # For more, see http://clang.llvm.org/extra/clang-tidy/ + # set(CLANG_TIDY_CHECKS "-*,modernize-*") + set(CLANG_TIDY_CHECKS "-*,performance-*") + set(CMAKE_CXX_CLANG_TIDY + "${CLANG_TIDY_EXE};-checks=${CLANG_TIDY_CHECKS};-header-filter='${PROJECT_SOURCE_DIR}/*'" + CACHE STRING "" FORCE + ) + else () + message(AUTHOR_WARNING "clang-tidy not found!") + set(CMAKE_CXX_CLANG_TIDY + "" + CACHE STRING "" FORCE + ) # delete it + endif () + endif () +endif () + +if (CMAKE_VERSION VERSION_GREATER 3.9) + set(ENABLE_CPPCHECK + OFF + CACHE BOOL "Add cppcheck automatically to builds" + ) + if (ENABLE_CPPCHECK) + find_program(CPPCHECK_EXECUTABLE NAMES "cppcheck") + set(CMAKE_CXX_CPPCHECK ${CPPCHECK_EXECUTABLE}) + endif () +endif () + +find_program( + HAVE_LD_SO + PATHS /lib + NO_DEFAULT_PATH + NAMES ld.so ld-linux.so.1 ld-linux.so.2 +) + +set(CMAKE_SKIP_BUILD_RPATH true) +if (HAVE_LD_SO) # linux. + message(STATUS "${CMLOC}Setting RPATH: \$ORIGIN:\$ORIGIN/..") + set(CMAKE_BUILD_RPATH "\$ORIGIN;\$ORIGIN/..") + set(CMAKE_INSTALL_RPATH "\$ORIGIN;\$ORIGIN/..") +endif () + +set(CMLOC ${SAVE_CMLOC}) diff --git a/cmake/PluginXML.cmake b/cmake/PluginXML.cmake deleted file mode 100644 index 457e726..0000000 --- a/cmake/PluginXML.cmake +++ /dev/null @@ -1,17 +0,0 @@ -##--------------------------------------------------------------------------- -## Author: Sean D'Epagnier -## Copyright: -## License: GPLv3 -##--------------------------------------------------------------------------- - - -IF(WIN32) -SET(SRC_TINYXML - src/tinyxml/tinyxml.cpp - src/tinyxml/tinyxmlparser.cpp - src/tinyxml/tinyxmlerror.cpp -) -ENDIF(WIN32) - -ADD_DEFINITIONS(-DTIXML_USE_STL) - diff --git a/cmake/android-aarch64-toolchain.cmake b/cmake/android-aarch64-toolchain.cmake new file mode 100644 index 0000000..9edda13 --- /dev/null +++ b/cmake/android-aarch64-toolchain.cmake @@ -0,0 +1,24 @@ +# ~~~ +# Summary: Cmake toolchain file for android arm64 +# License: GPLv3+ +# Copyright (c) 2021 Alec Leamas +# ~~~ + +# This program is free software; you can redistribute it and/or modify it under +# the terms of the GNU General Public License as published by the Free Software +# Foundation; either version 3 of the License, or (at your option) any later +# version. + +set(CMAKE_SYSTEM_NAME Android) +set(CMAKE_SYSTEM_VERSION 21) +set(CMAKE_ANDROID_ARCH_ABI arm64-v8a) +if (DEFINED ENV{NDK_HOME}) + set(CMAKE_ANDROID_NDK $ENV{NDK_HOME}) +else () + set(CMAKE_ANDROID_NDK /opt/android/ndk) +endif () + +set(ARM_ARCH + aarch64 + CACHE STRING "Selected arm architecture" FORCE +) diff --git a/cmake/android-armhf-toolchain.cmake b/cmake/android-armhf-toolchain.cmake new file mode 100644 index 0000000..533ebc3 --- /dev/null +++ b/cmake/android-armhf-toolchain.cmake @@ -0,0 +1,23 @@ +# ~~~ +# Summary: Cmake toolchain file for 32-bit android armhf +# License: GPLv3+ +# Copyright (c) 2021 Alec Leamas +# ~~~ + +# This program is free software; you can redistribute it and/or modify it under +# the terms of the GNU General Public License as published by the Free Software +# Foundation; either version 3 of the License, or (at your option) any later +# version. + +set(CMAKE_SYSTEM_NAME Android) +set(CMAKE_SYSTEM_VERSION 21) +set(CMAKE_ANDROID_ARCH_ABI armeabi-v7a) +if (DEFINED ENV{NDK_HOME}) + set(CMAKE_ANDROID_NDK $ENV{NDK_HOME}) +else () + set(CMAKE_ANDROID_NDK /opt/android/ndk) +endif () +set(ARM_ARCH + armhf + CACHE STRING "Selected arm architecture" FORCE +) diff --git a/cmake/fix-macos-libs.sh b/cmake/fix-macos-libs.sh new file mode 100755 index 0000000..725ebb9 --- /dev/null +++ b/cmake/fix-macos-libs.sh @@ -0,0 +1,20 @@ +#!/bin/bash + +# Adjust absolute paths to wxWidgets libraries to match their +# location ot the target MacOS system where they are installed +# as part of OpenCPN + +readonly RUNTIME_PATH="@executable_path/../Frameworks/" + +plugin=$(find . -maxdepth 1 -name '*.dylib') +for lib in $(otool -L "$plugin" | awk ' /wx/ {print $1}'); do + libdir=${lib%/*} + if [ "$libdir" = "$lib" ]; then + continue + elif [ "$libdir" != "$RUNTIME_PATH" ]; then + runtime_lib=$(echo $lib | sed "s|$libdir|$RUNTIME_PATH|") + install_name_tool -change "$lib" "$runtime_lib" "$plugin" + fi +done +echo "fix-macos-libs.sh: Revised library paths:" +otool -L "$plugin" | grep wx diff --git a/cmake/NSIS.template.in b/cmake/in-files/NSIS.template.in similarity index 96% rename from cmake/NSIS.template.in rename to cmake/in-files/NSIS.template.in index a9c9043..c2de88c 100644 --- a/cmake/NSIS.template.in +++ b/cmake/in-files/NSIS.template.in @@ -1,4628 +1,4628 @@ -/*----------------------------------------------------------------------------------------------------- -NSIS Installer script for OpenCPN (Windows) -NSIS version 2.46 -Written by Gunther Pilz (Netsurfer) netsurfer@opencpn.de -------------------------------------------------------------------------------------------------------- -CMake variables - CPACK_PACKAGE_NAME "OpenCPN" - CPACK_NSIS_PACKAGE_NAME_LC "opencpn" - CPACK_PACKAGE_VENDOR "opencpn.org" - CPACK_PACKAGE_VERSION_MAJOR ${VERSION_MAJOR} - CPACK_PACKAGE_VERSION_MINOR ${VERSION_MINOR} - CPACK_PACKAGE_VERSION_PATCH ${VERSION_PATCH} - CPACK_PACKAGE_VERSION ${PACKAGE_VERSION} - CPACK_NSIS_INSTALLED_ICON_NAME "opencpn.exe" - CPACK_PACKAGE_ICON "${CMAKE_SOURCE_DIR}/src/bitmaps\\\\opencpn.ico" - CPACK_NSIS_EXTRA_INSTALL_COMMANDS ${CPACK_NSIS_EXTRA_INSTALL_COMMANDS} - CPACK_RESOURCE_FILE_LICENSE "${CMAKE_CURRENT_SOURCE_DIR}/data/license.txt" - CPACK_BUILDWIN_DIR "${CMAKE_SOURCE_DIR}/buildwin" - CPACK_NSIS_DIR "${CMAKE_SOURCE_DIR}/buildwin/NSIS_Unicode") - - #CPACK_INSTALL_CMAKE_PROJECTS "${CMAKE_CURRENT_BINARY_DIR};${PACKAGE_NAME};ALL;/" - #CPACK_PACKAGE_EXECUTABLES ${PACKAGE_NAME} "OpenCPN" - #CPACK_PACKAGE_INSTALL_DIRECTORY ${PACKAGE_NAME} "OpenCPN" - #CPACK_PACKAGE_DESCRIPTION_SUMMARY "OpenCPN ${PACKAGE_VERSION}" - #CPACK_NSIS_LINK_NAME "${CPACK_PACKAGE_NAME} ${PACKAGE_VERSION}" - #CPACK_NSIS_DISPLAY_NAME "${CPACK_PACKAGE_NAME} Version ${PACKAGE_VERSION}" - #CPACK_NSIS_HELP_LINK "http:\\\\\\\\www.opencpn.org" - #CPACK_NSIS_URL_INFO_ABOUT "http:\\\\\\\\www.opencpn.org" - #CPACK_NSIS_CONTACT "http:\\\\\\\\www.opencpn.org" - #CPACK_PACKAGE_FILE_NAME "${PACKAGE_NAME}_${VERSION_MAJOR}.${VERSION_MINOR}.${VERSION_PATCH}_setup" - -----------------------------------------------------------------------------------------------------------*/ -;# Set compression - SetCompressor /FINAL lzma - -;-------------------------------- -;# You must define these values - !define OCPN_INSTALLER_VERSION "1.0.0" - /* - !define CPACK_NSIS_INSTALLED_ICON_NAME "opencpn.exe" - !define CPACK_NSIS_PACKAGE_NAME_LC "opencpn" - !define CPACK_NSIS_DISPLAY_NAME "${CPACK_PACKAGE_NAME} ${PACKAGE_VERSION}" - !define CPACK_PACKAGE_ICON "${CMAKE_SOURCE_DIR}/src/bitmaps/opencpn.ico" - !define CPACK_BUILDWIN_DIR "${CMAKE_SOURCE_DIR}/buildwin" - !define CPACK_NSIS_DIR "${CMAKE_SOURCE_DIR}/buildwin/NSIS_Unicode" - */ - !define /date YEAR "%Y" - !define OUTPUT_FILE_NAME "@CPACK_NSIS_PACKAGE_NAME_LC@_@CPACK_PACKAGE_VERSION@_setup.exe" - !define INST_DIR "@CPACK_TEMPORARY_DIRECTORY@" - !define REG_ROOT_KEY "Software" - !define REG_KEY "Software\s63_pi" - !define REG_ROOT_KEY_UN "Software\Microsoft\Windows\CurrentVersion\Uninstall" - !define REG_KEY_UN "Software\Microsoft\Windows\CurrentVersion\Uninstall\s63_pi @CPACK_PACKAGE_VERSION@" - !define CSIDL_LOCAL_APPDATA "0x1C" - !define Explode "!insertmacro Explode" - !define unExplode "!insertmacro unExplode" - - -;-------------------------------- -;# Variables - Var INST_USER_SID - Var CONFIG_EXISTS - Var CONFIG_EMPTY - Var INI_EXISTS - Var CHARTDB_EXISTS - Var SENC_EXISTS - Var CM93_EXISTS - Var NAVOBJ_EXISTS - Var LOG_EXISTS - Var REG_LANG - Var Count_SecGrpResetConfig - Var SecGrpEndSetConfig_Text - Var RESET_CONFIG - Var STARTMENU_FOLDER - Var OLD_INSTALLS - Var Prev_Install_RegKey - Var MULTIPLE_INSTALLS - Var VERSION_EXISTS - Var VERSION_NEWER - Var VERSION_OLDER - Var CANCEL_INSTALLER - Var VERSION_DATE - Var LANG_NAME - Var Status_SecGrpSetConfig - Var MAJOR_D - Var MINOR_D - Var PATCH_D - Var PATCH_ND - Var LM_VERSION - Var LM_VERSION_INST - Var LM_VERSION_UNINST - Var latest_version - Var latest_pathexe - Var BU_X - Var BU_Y - Var UAT - Var OUAT - Var USERS_APPDATA - Var ADMIN_APPDATA - Var USERS_NAME - Var counter_tmp - Var CurrentDirVar - Var CurrentFileVar - Var CONTEXT - Var REG_CHARTDIRS - Var USERNAME - Var IS_ADMIN - Var Compare_Version_Result - Var Inst_Or_Uninst - Var Marquee_Handle - Var Banner_Text_Blink - Var error_tmp -# onSelChange - Var ConfigSetLang - Var ConfigSetChartDir - Var SetConfig -# Installer Pages - Var Skip_Page_CleanUp - Var Skip_Page_TypeInst - Var Skip_Page_SetConfig - Var Skip_Page_Directory - Var Skip_Page_Startmenu - Var Skip_Page_Confirm -# Page_TypeInst - Var Label_TypeInst_Reinstall - Var RB_Reinstall - Var Label_TypeInst_Upgrade - Var RB_Upgrade - Var Label_TypeInst_Downgrade - Var RB_Downgrade - Var Label_TypeInst_Parallel - Var GroupBox_TypeInst - Var RB_Parallel - Var TI_REINSTALL - Var TI_UPGRADE - Var TI_DOWNGRADE - Var TI_PARALLEL - Var GroupBox_Size - Var INSTALL_TYPE -# Page_SetConfig - Var Label_SetConfig - Var GroupBox_Language_SetConfig - Var CheckBox_Language_SetConfig - Var GroupBox_ChartDir_SetConfig - Var DirRequest_SetConfig - Var Button_Delete_SetConfig - Var Button_DeleteAll_SetConfig - Var Button_Add_SetConfig - Var ListBox_SetConfig -;# Page_SetConfig_Leave - Var CHART_DIR_TMP_FILE - Var CHART_DIR_EMPTY - Var CONFIG_SET_LANG - -# Uninstaller Pages - Var Skip_UnPage_Components -;-------------------------------- -;# Execution Level - RequestExecutionLevel highest - -;-------------------------------- -;# Includes - !addincludedir "@CPACK_NSIS_DIR@/Include" - !addplugindir "@CPACK_NSIS_DIR@/Plugins" - - !include MUI2.nsh - !include LogicLib.nsh - !include nsDialogs.nsh - !include Sections.nsh - !include StrFunc.nsh - !include WordFunc.nsh - !include TextFunc.nsh - !include FileFunc.nsh - !include WinVer.nsh - - !include UAC.nsh - - !define MUI_UI "@CPACK_NSIS_DIR@/UI/opencpn_ui.exe" - -;-------------------------------- -;# General - ;# Name and file - Name "@CPACK_NSIS_PACKAGE_NAME@" - OutFile "@CPACK_TOPLEVEL_DIRECTORY@/${OUTPUT_FILE_NAME}" - - ;# Default installation folder - InstallDir "$PROGRAMFILES\s63_pi" - - BrandingText /TRIMLEFT "s63_pi $(Installer) v${OCPN_INSTALLER_VERSION}" -;-------------------------------- -;# Interface Settings - !define MUI_CUSTOMFUNCTION_GUIINIT myGuiInit - !define MUI_CUSTOMFUNCTION_UNGUIINIT un.myGuiInit - - !define MUI_ABORTWARNING - - ;# MUI Settings / Header - !define MUI_ICON "@CPACK_PACKAGE_ICON@" - !define MUI_HEADERIMAGE - !define MUI_HEADERIMAGE_LEFT - !define MUI_HEADERIMAGE_BITMAP "@CPACK_NSIS_DIR@\Bitmaps\header-install.bmp" - !define MUI_HEADERIMAGE_UNBITMAP "@CPACK_NSIS_DIR@\Bitmaps\header-uninstall.bmp" - - ;# MUI Settings / Wizard - !define MUI_WELCOMEFINISHPAGE_BITMAP "@CPACK_NSIS_DIR@\Bitmaps\wizard-install.bmp" - !define MUI_UNWELCOMEFINISHPAGE_BITMAP "@CPACK_NSIS_DIR@\Bitmaps\wizard-uninstall.bmp" - - ;# Set Multi-Language settings - ;# Language Selection Dialog Settings - ;# Show all languages, despite user's codepage - !define MUI_LANGDLL_ALLLANGUAGES -/* - ;# Remember the installer language - !define MUI_LANGDLL_REGISTRY_ROOT "HKLM" - !define MUI_LANGDLL_REGISTRY_KEY "${REG_KEY_UN}" - !define MUI_LANGDLL_REGISTRY_VALUENAME "SetupLanguage" - !define MUI_LANGDLL_WINDOWTITLE "$(LangDialog_Title)" - !define MUI_LANGDLL_INFO "$(LangDialog_Text)" - */ -;-------------------------------- -;# Calls for making respective functions available - ${StrLoc} - -;-------------------------------- -;################################################################################################## -;# Macros # -;################################################################################################## - -!ifndef ___EnumHKU___ - !define ___EnumHKU___ - - !include LogicLib.nsh - !include WordFunc.nsh - - !define TOKEN_QUERY 0x0008 - !define TOKEN_ADJUST_PRIVILEGES 0x0020 - - !define SE_RESTORE_NAME SeRestorePrivilege - - !define SE_PRIVILEGE_ENABLED 0x00000002 - - !define HKEY_USERS 0x80000003 - - Var key - Var logged - Var EnumHKU_counter - Var SID - Var USERPROFILE - - !macro _EnumHKU_AdjustTokens - StrCpy $R1 0 - - System::Call "kernel32::GetCurrentProcess() i .R0" - System::Call "advapi32::OpenProcessToken(i R0, i ${TOKEN_QUERY}|${TOKEN_ADJUST_PRIVILEGES}, *i R1R1) i .R0" - - ${If} $R0 != 0 - System::Call "advapi32::LookupPrivilegeValue(t n, t '${SE_RESTORE_NAME}', *l .R2) i .R0" - - ${If} $R0 != 0 - System::Call "*(i 1, l R2, i ${SE_PRIVILEGE_ENABLED}) i .R0" - System::Call "advapi32::AdjustTokenPrivileges(i R1, i 0, i R0, i 0, i 0, i 0)" - System::Free $R0 - ${EndIf} - - System::Call "kernel32::CloseHandle(i R1)" - ${EndIf} - !macroend - - !macro _EnumHKU_InvokeCallback CALLBACK SUBKEY - Push $0 - Push $1 - Push $R0 - Push $R1 - Push $R2 - Push $R3 - Push $R4 - Push $R5 - Push $R6 - - Push "${SUBKEY}" - Call "${CALLBACK}" - - Pop $R6 - Pop $R5 - Pop $R4 - Pop $R3 - Pop $R2 - Pop $R1 - Pop $R0 - Pop $1 - Pop $0 - !macroend - - !macro _EnumHKU_Load FILE CALLBACK SUBKEY - GetFullPathName /SHORT $R2 ${FILE} - System::Call "advapi32::RegLoadKeyW(i ${HKEY_USERS}, t '${SUBKEY}', t R2) i .R3" - ${If} $R3 == 0 - !insertmacro _EnumHKU_InvokeCallback ${CALLBACK} "${SUBKEY}" - ;System::Call "advapi32::RegUnLoadKeyW(i ${HKEY_USERS}, t '${SUBKEY}')" - IntOp $EnumHKU_counter $EnumHKU_counter + 1 - ${EndIf} - !macroend - - !macro EnumHKU UN CALLBACK SUBKEY - Push $0 - Push $1 - StrCpy $EnumHKU_counter 0 - GetFunctionAddress $0 "${CALLBACK}" - StrCpy $1 "${SUBKEY}_$EnumHKU_counter" - StrCpy $key ${SUBKEY} - Call ${UN}_EnumHKU - Pop $1 - Pop $0 - !macroend - - !define EnumHKU '!insertmacro EnumHKU ""' - !define un.EnumHKU '!insertmacro EnumHKU "un."' - - !macro _EnumHKU UN - Function ${UN}_EnumHKU - Push $R0 - Push $R1 - Push $R2 - Push $R3 - Push $R4 - Push $R5 - Push $R6 - - # enumerate logged on users - StrCpy $R0 0 - ${Do} - EnumRegKey $R1 HKU "" $R0 - ${If} $R1 != "" - StrLen $R4 $R1 - ${If} $R4 > 8 - StrCpy $R6 0 - ${WordFind} "$R1" "_Classes" "E*" $R6 - IfErrors 0 cont - - ReadRegStr $R5 HKU "$R1\Volatile Environment" USERPROFILE - ExpandEnvStrings $R5 $R5 - StrCpy $USERPROFILE $R5 - StrCpy $logged "on" - !insertmacro _EnumHKU_InvokeCallback $0 $R1 - StrCpy $USERPROFILE "" - StrCpy $logged "" - ${EndIf} - cont: - IntOp $R0 $R0 + 1 - ${EndIf} - ${LoopUntil} $R1 == "" - - # enumerate logged off users - System::Call "kernel32::GetVersion() i .R0" - IntOp $R0 $R0 & 0x80000000 - ${If} $R0 == 0 - # nt - !insertmacro _EnumHKU_AdjustTokens - StrCpy $R0 0 - ${Do} - EnumRegKey $R1 HKLM "SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProfileList" $R0 - ${If} $R1 != "" - StrLen $R4 $R1 - ${If} $R4 > 8 - ClearErrors - ReadRegStr $R5 HKU "$R1\Volatile Environment" HOMEPATH - IfErrors 0 cont1 - ReadRegStr $R5 HKLM "SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProfileList\$R1" ProfileImagePath - ExpandEnvStrings $R5 $R5 - StrCpy $USERPROFILE $R5 - StrCpy $logged "off" - !insertmacro _EnumHKU_Load "$R5\NTUSER.DAT" $0 $1 - StrCpy $1 "$key_$EnumHKU_counter" - StrCpy $USERPROFILE "" - StrCpy $logged "" - ${EndIf} - - cont1: - IntOp $R0 $R0 + 1 - ${EndIf} - ${LoopUntil} $R1 == "" - ${Else} - # 9x - ClearErrors - FindFirst $R1 $R2 "$WINDIR\Profiles\*.*" - ${Unless} ${Errors} - ${Do} - ${If} $R2 != "." - ${AndIf} $R2 != ".." - ${If} ${FileExists} "$WINDIR\Profiles\$R2\USER.DAT" - !insertmacro _EnumHKU_Load "$WINDIR\Profiles\$R2\USER.DAT" $0 $1 - ${EndIf} - ${EndIf} - ClearErrors - FindNext $R1 $R2 - ${LoopUntil} ${Errors} - FindClose $R1 - ${EndUnless} - ${Endif} - - Pop $R6 - Pop $R5 - Pop $R4 - Pop $R3 - Pop $R2 - Pop $R1 - Pop $R0 - FunctionEnd - !macroend - - !insertmacro _EnumHKU "" - !insertmacro _EnumHKU "un." -!endif - -!macro IndexOf Var Str Char - Push "${Char}" - Push "${Str}" - Call IndexOf - Pop "${Var}" -!macroend -!define IndexOf "!insertmacro IndexOf" - -!macro RIndexOf Var Str Char - Push "${Char}" - Push "${Str}" - Call RIndexOf - Pop "${Var}" -!macroend -!define RIndexOf "!insertmacro RIndexOf" - - -!macro Explode Length Separator String - Push `${Separator}` - Push `${String}` - Call Explode - Pop `${Length}` -!macroend - -!macro unExplode Length Separator String - Push `${Separator}` - Push `${String}` - Call un.Explode - Pop `${Length}` -!macroend - -!ifndef _RecFind_Included - !define _RecFind_Included - - Var _RecFindVar1 - Var _RecFindVar2 - - !macro _RecFindOpen Dir CurrentDirVar CurrentFileVar - !define _Local `${__LINE__}` - !define _Dir `${Dir}` - !define _CurrentDirVar `${CurrentDirVar}` - !define _CurrentFileVar `${CurrentFileVar}` - - !define _RecFindOpenSet - - StrCpy $_RecFindVar2 1 - Push `` - - `nextDir${_Local}:` - Pop `${_CurrentDirVar}` - IntOp $_RecFindVar2 $_RecFindVar2 - 1 - !macroend - !define RecFindOpen `!insertmacro _RecFindOpen` - - !macro _RecFindFirst - !ifndef _RecFindOpenSet - !error `Incorrect use of RecFind commands!` - !else - !define _RecFindFirstSet - !endif - - ClearErrors - FindFirst $_RecFindVar1 `${_CurrentFileVar}` `${_Dir}${_CurrentDirVar}\*.*` - IfErrors `Done${_Local}` - - `checkFile${_Local}:` - StrCmp ${_CurrentFileVar} . `nextFile${_Local}` - StrCmp ${_CurrentFileVar} .. `nextFile${_Local}` - - IfFileExists `${_Dir}${_CurrentDirVar}\${_CurrentFileVar}\*.*` 0 +4 - Push `${_CurrentDirVar}\${_CurrentFileVar}` - IntOp $_RecFindVar2 $_RecFindVar2 + 1 - Goto `nextFile${_Local}` - !macroend - !define RecFindFirst `!insertmacro _RecFindFirst` - - !macro _RecFindNext - !ifndef _RecFindOpenSet | _RecFindFirstSet - !error `Incorrect use of RecFind commands!` - !else - !define _RecFindNextSet - !endif - - `nextFile${_Local}:` - - ClearErrors - FindNext $_RecFindVar1 `${_CurrentFileVar}` - IfErrors 0 `checkFile${_Local}` - - StrCmp $_RecFindVar2 0 +3 - FindClose $_RecFindVar1 - Goto `nextDir${_Local}` - !macroend - !define RecFindNext `!insertmacro _RecFindNext` - - !macro _RecFindClose - !ifndef _RecFindOpenSet | _RecFindFirstSet | _RecFindNextSet - !error `Incorrect use of RecFind commands!` - !else - !undef _RecFindOpenSet - !undef _RecFindFirstSet - !undef _RecFindNextSet - !endif - - `Done${_Local}:` - FindClose $_RecFindVar1 - - StrCmp $_RecFindVar2 0 +4 - Pop $_RecFindVar1 - IntOp $_RecFindVar2 $_RecFindVar2 - 1 - Goto -3 - - !undef _CurrentFileVar - !undef _CurrentDirVar - !undef _Dir - !undef _Local - !macroend - !define RecFindClose `!insertmacro _RecFindClose` -!endif - -;-------------------------------------------------------------------------------------------------- -;################################################################################################## -;# FUNCTIONS # -;################################################################################################## - -; StrContains -; This function does a case sensitive searches for an occurrence of a substring in a string. -; It returns the substring if it is found. -; Otherwise it returns null(""). -; Written by kenglish_hi -; Adapted from StrReplace written by dandaman32 - - -Var STR_HAYSTACK -Var STR_NEEDLE -Var STR_CONTAINS_VAR_1 -Var STR_CONTAINS_VAR_2 -Var STR_CONTAINS_VAR_3 -Var STR_CONTAINS_VAR_4 -Var STR_RETURN_VAR - -Function StrContains - Exch $STR_NEEDLE - Exch 1 - Exch $STR_HAYSTACK - ; Uncomment to debug - ;MessageBox MB_OK 'STR_NEEDLE = $STR_NEEDLE STR_HAYSTACK = $STR_HAYSTACK ' - StrCpy $STR_RETURN_VAR "" - StrCpy $STR_CONTAINS_VAR_1 -1 - StrLen $STR_CONTAINS_VAR_2 $STR_NEEDLE - StrLen $STR_CONTAINS_VAR_4 $STR_HAYSTACK - loop: - IntOp $STR_CONTAINS_VAR_1 $STR_CONTAINS_VAR_1 + 1 - StrCpy $STR_CONTAINS_VAR_3 $STR_HAYSTACK $STR_CONTAINS_VAR_2 $STR_CONTAINS_VAR_1 - StrCmp $STR_CONTAINS_VAR_3 $STR_NEEDLE found - StrCmp $STR_CONTAINS_VAR_1 $STR_CONTAINS_VAR_4 done - Goto loop - found: - StrCpy $STR_RETURN_VAR $STR_NEEDLE - Goto done - done: - Pop $STR_NEEDLE ;Prevent "invalid opcode" errors and keep the - Exch $STR_RETURN_VAR -FunctionEnd - -!macro _StrContainsConstructor OUT NEEDLE HAYSTACK - Push `${HAYSTACK}` - Push `${NEEDLE}` - Call StrContains - Pop `${OUT}` -!macroend - -!define StrContains '!insertmacro "_StrContainsConstructor"' - - - - - - -;-------------------------------------------------------------------------------------------------- -;################################################################################################## -;# PAGES # -;################################################################################################## -;# Installer Pages # -;################################################################################################## -/* Var Skip_Page_CleanUp - Var Skip_Page_TypeInst - Var Skip_Page_SetConfig - Var Skip_Page_Directory - Var Skip_Page_Startmenu - Var Skip_Page_Confirm -*/ - ;# Welcome page - !define MUI_WELCOMEPAGE_TITLE_3LINES - !insertmacro MUI_PAGE_WELCOME - - ;# License page - !define MUI_PAGE_CUSTOMFUNCTION_LEAVE Page_License_Leave - ;!insertmacro MUI_PAGE_LICENSE "@CPACK_RESOURCE_FILE_LICENSE@" - - !define MUI_LICENSEPAGE_BUTTON "$(^NextBtn)" - !define MUI_LICENSEPAGE_TEXT_BOTTOM $(License_Message) - - !insertmacro MUI_PAGE_LICENSE $(license) - -/* - ;# Clean up page - only shown if previous installation(s) <= 2.2.823 were found - checked in .onInit function -; Page custom Page_CleanUp Page_CleanUp_Leave -*/ - ;# Install type page - only shown if previous installation(s) > 2.2.823 were found - checked in .onInit function - Page custom Page_TypeInst Page_TypeInst_Leave - -/* - ;# Components page - !define MUI_COMPONENTSPAGE_SMALLDESC - !define MUI_PAGE_HEADER_TEXT $(CP_HEADER_TEXT) - !define MUI_PAGE_HEADER_SUBTEXT $(CP_HEADER_SUBTEXT) - !define MUI_COMPONENTSPAGE_TEXT_TOP $(CP_TOP) - !define MUI_COMPONENTSPAGE_TEXT_COMPLIST $(CP_COMPLIST) - !define MUI_COMPONENTSPAGE_TEXT_INSTTYPE "" ;#CHANGE $(CP_INSTTYPE) - ;!define MUI_COMPONENTSPAGE_TEXT_DESCRIPTION_TITLE $(CP_DESCRIPTION_TITLE) ;# for this we can use the default text - ;!define MUI_COMPONENTSPAGE_TEXT_DESCRIPTION_INFO $(CP_DESCRIPTION_INFO) ;# for this we can use the default text - !define MUI_PAGE_CUSTOMFUNCTION_PRE Page_Components_Pre - !define MUI_PAGE_CUSTOMFUNCTION_SHOW Page_Components_Show - !define MUI_PAGE_CUSTOMFUNCTION_LEAVE Page_Components_Leave - !insertmacro MUI_PAGE_COMPONENTS -*/ - ;# Directory page - allows for changing/ selecting the install directory - !define MUI_DIRECTORYPAGE_VERIFYONLEAVE - !define MUI_PAGE_CUSTOMFUNCTION_PRE Page_Directory_Pre - !define MUI_PAGE_CUSTOMFUNCTION_LEAVE Page_Directory_Leave - !insertmacro MUI_PAGE_DIRECTORY - -/* - ;# Start Menu Folder page - allows for changing/ selecting the Start Menu Folder (if Shortcuts get installed is configured on the Components page) - !define MUI_STARTMENUPAGE_NODISABLE - !define MUI_STARTMENUPAGE_REGISTRY_ROOT "SHCTX" - !define MUI_STARTMENUPAGE_REGISTRY_KEY "${REG_KEY_UN}" - !define MUI_STARTMENUPAGE_REGISTRY_VALUENAME "StartMenuFolder" - !define MUI_STARTMENUPAGE_DEFAULTFOLDER "OpenCPN" - !define MUI_PAGE_CUSTOMFUNCTION_PRE Page_Startmenu_Pre - !insertmacro MUI_PAGE_STARTMENU "Application" $STARTMENU_FOLDER - - ;# Set Config page - selecting chart director[y|ies] and setting the language in opencpn.ini - only available if opencpn.ini does not exist (or is being deleted) - Page custom Page_SetConfig Page_SetConfig_Leave -*/ - ;# Confirm page - shows all settings for the installation (is mainly needed to always have the 'Install' button on the right page, ie. if Start Menu page is skipped) - Page custom Page_Confirm - - ;# Install page - !define MUI_PAGE_CUSTOMFUNCTION_SHOW Page_Instfiles_Show - !insertmacro MUI_PAGE_INSTFILES - - ;# Finish page - - #!define MUI_FINISHPAGE_RUN opencpn.exe -# !define MUI_FINISHPAGE_RUN -# !define MUI_FINISHPAGE_RUN_FUNCTION ExecAppFile - - !define MUI_FINISHPAGE_SHOWREADME install.log - !define MUI_FINISHPAGE_SHOWREADME_TEXT $(Show_Readme_Text) - !define MUI_FINISHPAGE_SHOWREADME_NOTCHECKED - !define MUI_FINISHPAGE_LINK $(Finish_Link_Text) - !define MUI_FINISHPAGE_LINK_LOCATION $(Finish_Link_URL) - !define MUI_FINISHPAGE_LINK_COLOR 000080 - !define MUI_FINISHPAGE_NOREBOOTSUPPORT - !define MUI_FINISHPAGE_TITLE_3LINES - !insertmacro MUI_PAGE_FINISH - -;-------------------------------- -;################################################################################################## -;# Uninstaller Pages # -;################################################################################################## - ;# Welcome page - !define MUI_WELCOMEPAGE_TITLE_3LINES - !insertmacro MUI_UNPAGE_WELCOME - -/* - ;# Components page - !define MUI_PAGE_CUSTOMFUNCTION_PRE un.Page_Components_Pre - !insertmacro MUI_UNPAGE_COMPONENTS -*/ - ;# Confirm page - !insertmacro MUI_UNPAGE_CONFIRM - ;# Uninstall page - !insertmacro MUI_UNPAGE_INSTFILES - - ;# Finish page - !define MUI_FINISHPAGE_TITLE_3LINES - !insertmacro MUI_UNPAGE_FINISH - -;-------------------------------------------------------------------------------------------------- -;################################################################################################## -;# Languages # -;################################################################################################## -;# Languages - !insertmacro MUI_LANGUAGE "English" ;# first language is the default language - !insertmacro MUI_LANGUAGE "German" - !include /NONFATAL "Langstrings_GERMAN.nsh" - !insertmacro MUI_LANGUAGE "French" - !include /NONFATAL "Langstrings_FRENCH.nsh" - !insertmacro MUI_LANGUAGE "Czech" - !include /NONFATAL "Langstrings_CZECH.nsh" - !insertmacro MUI_LANGUAGE "Danish" - !include /NONFATAL "Langstrings_DANISH.nsh" - !insertmacro MUI_LANGUAGE "Spanish" - !include /NONFATAL "Langstrings_SPANISH.nsh" - !insertmacro MUI_LANGUAGE "Italian" - !include /NONFATAL "Langstrings_ITALIAN.nsh" - !insertmacro MUI_LANGUAGE "Dutch" - !include /NONFATAL "Langstrings_DUTCH.nsh" - !insertmacro MUI_LANGUAGE "Polish" - !include /NONFATAL "Langstrings_POLISH.nsh" - !insertmacro MUI_LANGUAGE "PortugueseBR" - !include /NONFATAL "Langstrings_PORTUGUESEBR.nsh" - !insertmacro MUI_LANGUAGE "Portuguese" - !include /NONFATAL "Langstrings_PORTUGUESE.nsh" - !insertmacro MUI_LANGUAGE "Russian" - !include /NONFATAL "Langstrings_RUSSIAN.nsh" - !insertmacro MUI_LANGUAGE "Swedish" - !include /NONFATAL "Langstrings_SWEDISH.nsh" - !insertmacro MUI_LANGUAGE "Finnish" - !include /NONFATAL "Langstrings_FINNISH.nsh" - !insertmacro MUI_LANGUAGE "Norwegian" - !include /NONFATAL "Langstrings_NORWEGIAN.nsh" - !insertmacro MUI_LANGUAGE "TradChinese" - !include /NONFATAL "Langstrings_CHINESETW.nsh" - !insertmacro MUI_LANGUAGE "Turkish" - !include /NONFATAL "Langstrings_TURKISH.nsh" - ;!insertmacro MUI_LANGUAGE "Hungarian" - ;!include /NONFATAL "Langstrings_HUNGARIAN.nsh" - -;-------------------------------- -;# Reserve Files - ;# If you are using solid compression, files that are required before - ;# the actual installation should be stored first in the data block, - ;# because this will make your installer start faster. - !insertmacro MUI_RESERVEFILE_LANGDLL - -;# Remember the installer language - !define MUI_LANGDLL_REGISTRY_ROOT "HKLM" - !define MUI_LANGDLL_REGISTRY_KEY "${REG_KEY_UN}" - !define MUI_LANGDLL_REGISTRY_VALUENAME "SetupLanguage" - !define MUI_LANGDLL_WINDOWTITLE $(LangDialog_Title) - !define MUI_LANGDLL_INFO $(LangDialog_Text) - -;-------------------------------------------------------------------------------------------------- -;################################################################################################## -;# S E C T I O N S # -;################################################################################################## -;# Installer Sections # -;################################################################################################## -Section "-Topmost Section" SecTopmost ;# this needs to be always the first section to be executed! - SetShellVarContext all - SetOutPath $INSTDIR - - ${If} $INSTALL_TYPE == 1 - ${OrIf} $INSTALL_TYPE == 2 - ${OrIf} $INSTALL_TYPE == 3 - ReadRegStr $0 HKLM "$Prev_Install_RegKey" "UninstallString" - ${StrFilter} "$0" "" "" "$\"" $0 - ClearErrors - ExecWait '"$0" /S /type=1 _?=$INSTDIR' - IfErrors 0 +2 - DetailPrint "Error on uninstalling" - Sleep 100 - Delete $0 - ${EndIf} -SectionEnd - - -;# Install Section /hidden -Section "-Install Section" SecInstall - @CPACK_NSIS_FULL_INSTALL@ - - @CPACK_NSIS_EXTRA_INSTALL_COMMANDS@ - - ;# Create uninstaller - WriteUninstaller "$INSTDIR\Uninstall @CPACK_PACKAGE_VERSION@.exe" - - ;# Registry Entries - SetShellVarContext all ;# make sure that we write to HKLM - ;# HKLM Software\Microsoft\Windows\CurrentVersion\Uninstall\OpenCPN - WriteRegStr SHCTX "${REG_KEY_UN}" "DisplayName" "@CPACK_PACKAGE_NAME@ @CPACK_PACKAGE_VERSION@" - WriteRegStr SHCTX "${REG_KEY_UN}" "DisplayVersion" "@CPACK_PACKAGE_VERSION@" - WriteRegStr SHCTX "${REG_KEY_UN}" "CompareVersion" "$VERSION_DATE" - WriteRegStr SHCTX "${REG_KEY_UN}" "StartMenuPath" "$SMPROGRAMS\$STARTMENU_FOLDER" - WriteRegStr SHCTX "${REG_KEY_UN}" "InstallLocation" "$INSTDIR" - WriteRegStr SHCTX "${REG_KEY_UN}" "UninstallString" "$\"$INSTDIR\Uninstall @CPACK_PACKAGE_VERSION@.exe$\"" - WriteRegStr SHCTX "${REG_KEY_UN}" "QuietUninstallString" "$\"$INSTDIR\Uninstall @CPACK_PACKAGE_VERSION@.exe /S$\"" - WriteRegStr SHCTX "${REG_KEY_UN}" "ConfigLocation" "$APPDATA\@CPACK_NSIS_PACKAGE_NAME_LC@" - WriteRegStr SHCTX "${REG_KEY_UN}" "DisplayIcon" "$INSTDIR\@CPACK_NSIS_INSTALLED_ICON_NAME@" - WriteRegStr SHCTX "${REG_KEY_UN}" "Publisher" "@CPACK_PACKAGE_VENDOR@" - WriteRegDWORD SHCTX "${REG_KEY_UN}" "VersionMajor" $MAJOR_D - WriteRegDWORD SHCTX "${REG_KEY_UN}" "VersionMinor" $MINOR_D - WriteRegDWORD SHCTX "${REG_KEY_UN}" "VersionPatch" $PATCH_D - WriteRegDWORD SHCTX "${REG_KEY_UN}" "NoModify" 1 - WriteRegDWORD SHCTX "${REG_KEY_UN}" "NoRepair" 1 - WriteRegStr SHCTX "${REG_KEY_UN}" "HelpLink" "http://opencpn.org/" - WriteRegStr SHCTX "${REG_KEY_UN}" "URLInfoAbout" "http://opencpn.org/" - WriteRegStr SHCTX "${REG_KEY_UN}" "Contact" "http://opencpn.org/" - WriteRegStr SHCTX "${REG_KEY_UN}" "InstallUser" "$USERS_NAME" - ${If} ${UAC_IsInnerInstance} - WriteRegStr SHCTX "${REG_KEY_UN}" "InstallAdminUser" "$USERNAME" - ${EndIf} - - ;# Create the config folder if it does not exist and set full access rights to it -; ${IfNot} ${FileExists} "$APPDATA\@CPACK_NSIS_PACKAGE_NAME_LC@\*.*" -; CreateDirectory "$APPDATA\@CPACK_NSIS_PACKAGE_NAME_LC@" -; Sleep 250 -; ${EndIf} -; AccessControlW::GrantOnFile "$APPDATA\@CPACK_NSIS_PACKAGE_NAME_LC@" "(BU)" "GenericRead + GenericExecute + GenericWrite + Delete + FullAccess" - - ;# Save the log file - StrCpy $0 "$INSTDIR\install.log" - Push $0 - Call DumpLog -SectionEnd - -;-------------------------------- -;################################################################################################## -;# Uninstaller Sections # -;################################################################################################## - -Section "-un.Delete Config RegKey" UnSecDeleteConfigRegKey - DeleteRegKey HKLM "${REG_KEY}" -SectionEnd - -Section /o "-un.Backup Config to RegKey" UnSecBackupConfigToRegKey - SetShellVarContext all -/* - ${If} ${FileExists} "$APPDATA\@CPACK_NSIS_PACKAGE_NAME_LC@\opencpn.ini" - ClearErrors - StrCpy $0 "" - StrCpy $2 0 - loop: - IntOp $2 $2 + 1 - ReadINIStr $1 "$APPDATA\@CPACK_NSIS_PACKAGE_NAME_LC@\opencpn.ini" "ChartDirectories" "ChartDir$2" - StrCmp $1 "" cont - ${WordReplace} "$1" "\\" "\" "+" $3 - ${unExplode} $4 "^" "$3" - Pop $5 - StrCmp $5 "" cont - StrCmp $0 "" 0 +2 - StrCpy $0 $5 - StrCpy $0 "$0;$5" - Goto loop - cont: - WriteRegStr HKLM "${REG_KEY}" "ChartDirs" "$0" - - ReadINIStr $0 "$APPDATA\@CPACK_NSIS_PACKAGE_NAME_LC@\opencpn.ini" "Settings" "Locale" - StrCmp $0 "" +2 0 - WriteRegStr HKLM "${REG_KEY}" "InstallerLanguage" "$0" - ${EndIf} -*/ -SectionEnd - -Section "un.Delete Config Folder" UnSecDeleteConfigFolder - SetShellVarContext all -/* - ${If} ${FileExists} "$APPDATA\@CPACK_NSIS_PACKAGE_NAME_LC@\*.*" - RMDir /r "$APPDATA\@CPACK_NSIS_PACKAGE_NAME_LC@" - ClearErrors - ${EndIf} -*/ -SectionEnd - -Section "-un.Uninstall" UnSecUninstall - -/* - ;# Delete all Shortcuts - Push $INSTDIR - Call un.Delete_Desktop_Shortcuts - Push $INSTDIR - Call un.Delete_Start_Menu_Shortcuts -*/ - ;# Delete subdirs and files in INSTDIR - ;# Remove the uninstaller itself - ReadRegStr $0 HKLM "${REG_KEY_UN}" "UninstallString" - ${StrFilter} "$0" "" "" "$\"" $0 - Delete $0 - ;# Remove the installation log file - Delete "$INSTDIR\install.log" - @CPACK_NSIS_DELETE_FILES@ - @CPACK_NSIS_DELETE_DIRECTORIES@ - - ;# Remove the installation directory INSTDIR if it is empty - ClearErrors - RMDir "$INSTDIR" - IfErrors 0 cont - IfSilent cont - MessageBox MB_OK|MB_ICONEXCLAMATION "$(Msg_Error_Remove_InstDir)" - - cont: - ;# Remove RegKey - DeleteRegKey HKLM "${REG_KEY_UN}" -SectionEnd - -;-------------------------------------------------------------------------------------------------- -;################################################################################################## -;# F U N C T I O N S # -;################################################################################################## -;# Installer Functions # -;################################################################################################## -;# .onInit Function -Function .onInit - ;# Check if Windows version is at least XP (not Win 98, Win 2000 or older) - ${IfNot} ${AtLeastWinXP} - MessageBox MB_OK|MB_ICONEXCLAMATION "$(Installer_Unsupported_Windows_Version)" - Abort - ${Else} - ${If} ${IsWinXP} - ${AndIf} ${AtMostServicePack} 2 - MessageBox MB_OK|MB_ICONEXCLAMATION "$(Installer_Unsupported_XP_SP_Version)" - Abort - ${EndIf} - ${EndIf} - - ;Prevent multiple instances of the installer - ${IfNot} ${UAC_IsInnerInstance} - System::Call 'kernel32::CreateMutexW(i 0, i 0, t "ocpn_inst_@CPACK_PACKAGE_VERSION@") i .r1 ?e' - Pop $R0 - StrCmp $R0 0 +3 - MessageBox MB_OK|MB_ICONEXCLAMATION "$(Installer_Running)" - Abort - ${EndIf} - - Call GetUserInfo - StrCpy $USERS_NAME $USERNAME - - ;# Macros to be inserted - ${If} $IS_ADMIN == 1 - !insertmacro MUI_LANGDLL_DISPLAY - ${EndIf} - - SetShellVarContext current - StrCpy $USERS_APPDATA $APPDATA - StrCpy $ADMIN_APPDATA $APPDATA - - ;# UAC check if user has Admin privileges and prompt for elevation if not - uac_tryagain: - !insertmacro UAC_RunElevated - StrCpy $Inst_Or_Uninst "$(Installer)" - ${Switch} $0 - ${Case} 0 - ${IfThen} $1 = 1 ${|} Quit ${|} ;# we are the outer process, the inner process has done its work, we are done - ${IfThen} $3 <> 0 ${|} ${Break} ${|} ;# we are admin, let the show go on - ${If} $1 = 3 ;# RunAs completed successfully, but with a non-admin user - MessageBox mb_IconExclamation|mb_TopMost|mb_SetForeground "$(Msg_UAC_Admin_Retry)" /SD IDNO IDOK uac_tryagain IDNO 0 - ${EndIf} - ;# fall-through and die - ${Case} 1223 - MessageBox mb_IconStop|mb_TopMost|mb_SetForeground "$(Msg_UAC_Admin_Abort)" - Quit - ${Case} 1062 - MessageBox mb_IconStop|mb_TopMost|mb_SetForeground "$(Msg_UAC_Logon_Abort)" - Quit - ${Default} - MessageBox mb_IconStop|mb_TopMost|mb_SetForeground "$(Msg_UAC_No_Elevation)" - Quit - ${EndSwitch} - -########## from here we can be sure to run with admin privileges ########## - - ;# Delete all temporary files created during the installation - Delete "$TEMP\opencpn_*.tmp" - - ;# Check for unloaded Registry hive from previous installation attempt e.g. when installer crashed - StrCpy $0 0 - !insertmacro _EnumHKU_AdjustTokens - ${Do} - EnumRegKey $1 HKU "" $0 - StrCmp $1 "" done - IntOp $0 $0 + 1 - ClearErrors - ${WordFind} "$1" "opencpn-inst-tmp-sid" "E*" $2 - IfErrors +2 0 - System::Call "advapi32::RegUnLoadKeyW(i ${HKEY_USERS}, t '$1') i .r3" - ${Loop} - done: - ${If} ${UAC_IsInnerInstance} - !insertmacro UAC_AsUser_GetGlobalVar $USERS_APPDATA - !insertmacro UAC_AsUser_GetGlobalVar $USERS_NAME - ${EndIf} - - ClearErrors - Var /GLOBAL INST_PARAMS - Var /GLOBAL FORCE_SCAN - ${GetParameters} $INST_PARAMS - ${GetOptions} "$INST_PARAMS" "/scan" $FORCE_SCAN - IfErrors +2 - - # Get the user's SID from the username - ReadRegStr $0 HKCU "Volatile Environment" "USERNAME" - System::Call /NOUNLOAD '*(&w${NSIS_MAX_STRLEN})i.R9' - System::Call /NOUNLOAD 'advapi32::LookupAccountNameW(,t "$0",i R9,*i ${NSIS_MAX_STRLEN},w .R8,*i ${NSIS_MAX_STRLEN},*i .r4)i.r5' - System::Call /NOUNLOAD 'advapi32::ConvertSidToStringSidW(i R9,*t .R8)i.r5' - StrCpy $INST_USER_SID $R8 - - Call VersionDate - - ;# check for previous installed versions conforming to this installer - Call Check_Prev_Installs - - ;# check for old installed versions prior to the ones that uses this installer - StrCpy $OLD_INSTALLS 0 - - Call Reg_Scan_Old_Versions_HKLM - - Call EnumProfileList - - Call Get_Users_Values - - ${If} $OLD_INSTALLS == 0 - StrCpy $Skip_Page_CleanUp 1 - ${EndIf} - - - ;# make sure that the DWORD values for the Registry only contain digits - ${StrFilter} "@CPACK_PACKAGE_VERSION_MAJOR@" "1" "" "" $MAJOR_D - ${StrFilter} "@CPACK_PACKAGE_VERSION_MINOR@" "1" "" "" $MINOR_D - ${StrFilter} "@CPACK_PACKAGE_VERSION_PATCH@" "1" "" "" $PATCH_D - - StrCpy $INSTDIR "$PROGRAMFILES\OpenCPN\plugins\s63_pi" - - ;Call GetAllUsers -FunctionEnd - -;-------------------------------- -;# myGuiInit Function -/* -Var CONFIG_EMPTY -Var INI_EXISTS -Var CHARTDB_EXISTS -Var SENC_EXISTS -Var CM93_EXISTS -Var NAVOBJ_EXISTS -Var LOG_EXISTS -Var REG_LANG -Var Count_SecGrpResetConfig -Var SecGrpEndSetConfig_Text -*/ -Function myGuiInit - ;Get chosen installer language - ${Switch} $LANGUAGE - ${Case} ${LANG_CZECH} - StrCpy $LANG_NAME "Čeština" - StrCpy $REG_LANG "cs_CZ" - ${Break} - ${Case} ${LANG_DANISH} - StrCpy $LANG_NAME "Dansk" - StrCpy $REG_LANG "da_DK" - ${Break} - ${Case} ${LANG_GERMAN} - StrCpy $LANG_NAME "Deutsch" - StrCpy $REG_LANG "de_DE" - ${Break} - ${Case} ${LANG_ENGLISH} - StrCpy $LANG_NAME "English" - StrCpy $REG_LANG "en_US" - ${Break} - ${Case} ${LANG_SPANISH} - StrCpy $LANG_NAME "Español" - StrCpy $REG_LANG "es_ES" - ${Break} - ${Case} ${LANG_FRENCH} - StrCpy $LANG_NAME "Français" - StrCpy $REG_LANG "fr_FR" - ${Break} - ${Case} ${LANG_ITALIAN} - StrCpy $LANG_NAME "Italiano" - StrCpy $REG_LANG "it_IT" - ${Break} - ${Case} ${LANG_DUTCH} - StrCpy $LANG_NAME "Nederlandse" - StrCpy $REG_LANG "nl_NL" - ${Break} - ${Case} ${LANG_POLISH} - StrCpy $LANG_NAME "Polski" - StrCpy $REG_LANG "pl_PL" - ${Break} - ${Case} ${LANG_PORTUGUESE} - StrCpy $LANG_NAME "Português" - StrCpy $REG_LANG "pt_PT" - ${Break} - ${Case} ${LANG_PORTUGUESEBR} - StrCpy $LANG_NAME "Português Brasileiro" - StrCpy $REG_LANG "pt_BR" - ${Break} - ${Case} ${LANG_SWEDISH} - StrCpy $LANG_NAME "Svenska" - StrCpy $REG_LANG "sv_SE" - ${Break} - ${Case} ${LANG_RUSSIAN} - StrCpy $LANG_NAME "Русский" - StrCpy $REG_LANG "ru_RU" - ${Break} - ${Case} ${LANG_NORWEGIAN} - StrCpy $LANG_NAME "Norsk" - StrCpy $REG_LANG "nb_NO" - ${Break} - ${Case} ${LANG_FINNISH} - StrCpy $LANG_NAME "Suomalainen" - StrCpy $REG_LANG "fi_FI" - ${Break} - ${Case} ${LANG_TRADCHINESE} - StrCpy $LANG_NAME "正體中文" - StrCpy $REG_LANG "zh_TW" - ${Break} - ${Case} ${LANG_Turkish} - StrCpy $LANG_NAME "Türkçe" - StrCpy $REG_LANG "tr_TR" - ${Break} - ${Default} - ${Break} - ${EndSwitch} - - ;# Set Sections Text - SectionSetText ${SecGrpShortcuts} $(SecGrpShortcuts_Text) - SectionSetText ${SecShortcutStartmenu} $(SecShortcutStartmenu_Text) - SectionSetText ${SecShortcutDesktop} $(SecShortcutDesktop_Text) - SectionSetText ${SecSetConfig} $(SecSetConfig_Text) - -/* - ;# Look for config dir ("%APPDATA%\opencpn) and the several config files - Call Check_Config_Exists - - ${If} $CONFIG_EXISTS != 1 - ${OrIf} $CONFIG_EMPTY == 1 - Call Hide_SecGrpResetConfig - IntOp $0 ${SF_SELECTED} | ${SF_BOLD} - SectionSetFlags ${SecSetConfig} $0 - StrCpy $SetConfig 1 - ${EndIf} -*/ - SetShellVarContext all ;# switch SetShellVarContext back to ALL -FunctionEnd - -/* -;-------------------------------- -;# onSelChange -;Var ConfigSetLang -;Var ConfigSetChartDir -;Var SetConfig -Function .onSelChange - ;# Check if all available Sections in SecGrpResetConfig are selected => set SecGrpResetConfig to selected instead of partially selected - Push $0 - Push $1 - Push $2 - Push $3 - Push $R0 - Push $R1 - StrCpy $0 ${SecGrpResetConfig} - StrCpy $1 0 - StrCpy $2 0 - ${Do} - IntOp $0 $0 + 1 - ${If} ${SectionIsSectionGroupEnd} $0 - Goto end - ${EndIf} - SectionGetText $0 $R0 - ${If} $R0 != "" - ${AndIf} ${SectionIsSelected} $0 - Goto found_selected - ${ElseIf} $R0 != "" - ${AndIfNot} ${SectionIsSelected} $0 - Goto found_unselected - ${EndIf} - ${Loop} - - found_selected: - StrCpy $0 ${SecGrpResetConfig} - ${Do} - IntOp $0 $0 + 1 - ${If} ${SectionIsSectionGroupEnd} $0 - Goto end - ${EndIf} - SectionGetText $0 $R0 - ${If} $R0 == "" - ${AndIfNot} ${SectionIsSelected} $0 - SectionSetFlags $0 ${SF_SELECTED} - ${EndIf} - ${Loop} - - found_unselected: - StrCpy $0 ${SecGrpResetConfig} - ${Do} - IntOp $0 $0 + 1 - ${If} ${SectionIsSectionGroupEnd} $0 - Goto end - ${EndIf} - SectionGetText $0 $R0 - ${If} $R0 == "" - ${AndIf} ${SectionIsSelected} $0 - !insertmacro ClearSectionFlag $0 ${SF_SELECTED} - ${EndIf} - ${Loop} - - end: - SectionGetText ${SecDeleteConfigFile} $R1 - ${If} $R1 != "" - ${IfNot} ${SectionIsReadOnly} ${SecSetConfig} - ${AndIfNot} ${SectionIsSelected} ${SecSetConfig} - ${AndIf} $SetConfig == 1 - StrCpy $SetConfig 0 - ${EndIf} - - ${IfNot} ${SectionIsSelected} ${SecDeleteConfigFile} - ${AndIf} ${SectionIsSelected} ${SecSetConfig} - !insertmacro ClearSectionFlag ${SecSetConfig} ${SF_SELECTED} - IntOp $0 ${SF_RO} | ${SF_BOLD} - SectionSetFlags ${SecSetConfig} $0 - ;SectionSetFlags ${SecSetConfig} ${SF_RO} - StrCpy $SetConfig 1 - ${ElseIfNot} ${SectionIsSelected} ${SecDeleteConfigFile} - ${AndIfNot} ${SectionIsSelected} ${SecSetConfig} - IntOp $0 ${SF_RO} | ${SF_BOLD} - SectionSetFlags ${SecSetConfig} $0 - ;SectionSetFlags ${SecSetConfig} ${SF_RO} - StrCpy $SetConfig 0 - ${ElseIf} ${SectionIsSelected} ${SecDeleteConfigFile} - ${AndIfNot} ${SectionIsSelected} ${SecSetConfig} - ${AndIf} $SetConfig == 1 - !insertmacro ClearSectionFlag ${SecSetConfig} ${SF_RO} - IntOp $0 ${SF_SELECTED} | ${SF_BOLD} - SectionSetFlags ${SecSetConfig} $0 - ;SectionSetFlags ${SecSetConfig} ${SF_SELECTED} - ${ElseIf} ${SectionIsSelected} ${SecDeleteConfigFile} - ${AndIf} $SetConfig == 0 - !insertmacro ClearSectionFlag ${SecSetConfig} ${SF_RO} - StrCpy $SetConfig 0 - ${EndIf} - ${EndIf} - - Pop $R1 - Pop $R0 - Pop $3 - Pop $2 - Pop $1 - Pop $0 -FunctionEnd - -*/ -Function .OnInstFailed - Call InstallerEnd -FunctionEnd - - -Function .OnInstSuccess - Call InstallerEnd -FunctionEnd - - -Function .onGUIEnd - Call InstallerEnd -FunctionEnd - - -Function InstallerEnd - ;# Delete all temporary files created during the installation - Delete "$TEMP\opencpn_*.tmp" - ${If} $EnumHKU_counter > 0 - ${ForEach} $1 $EnumHKU_counter 0 - 1 - System::Call "advapi32::RegUnLoadKeyW(i ${HKEY_USERS}, t '$key_$1')" - ${Next} - ${Endif} -FunctionEnd - -;-------------------------------- -;################################################################################################## -;# Installer Page Functions # -;################################################################################################## -;# Page_License_Leave - Function Page_License_Leave -/* - FindWindow $mui.ComponentsPage "#32770" "" $HWNDPARENT - System::Call "*(i 0, i 0, i 4, i 8) i .r1" - System::Call "User32::MapDialogRect(i $mui.ComponentsPage, i r1) i .r2" - System::Call "*$1(i .r2, i.r3, i.r4, i.r5)" - System::Free $1 - StrCpy $BU_X $4 - StrCpy $BU_Y $5 -*/ - FunctionEnd - -/* -;-------------------------------- -;# Page_CleanUp - Var Label_CleanUp - Var Label_FullScan_CleanUp - Var GroupBox_CleanUp - Var ListBox_CleanUp - Var Button_FullScan_CleanUp - Var Button_UnselectAll_CleanUp - Var Button_SelectAll_CleanUp - Var Button_Uninstall_Selected_CleanUp - Var Banner_Handle - Var MSG_Box_Uninstall_Shown - Function Page_CleanUp - ${If} $Skip_Page_CleanUp == 1 - Abort - ${EndIf} - - !ifndef PBS_MARQUEE - !define PBS_MARQUEE 0x08 - !endif - !ifndef PBM_SETMARQUEE - !define PBM_SETMARQUEE 0x040A - !endif - !ifndef GWL_STYLE - !define GWL_STYLE -16 - !endif - - ${IfNot} $MSG_Box_Uninstall_Shown == 1 - MessageBox MB_YESNO|MB_ICONQUESTION "$(Msg_Uninstall_Old_Versions)" IDYES cont IDNO skip - ${Else} - Goto cont - ${EndIf} - - skip: - Abort - - cont: - StrCpy $MSG_Box_Uninstall_Shown 1 - !insertmacro MUI_HEADER_TEXT "$(Page_CleanUp_Title)" "$(Page_CleanUp_Subtitle)" - - nsDialogs::Create /NOUNLOAD 1018 - Pop $0 - ${If} $0 == error - Abort - ${EndIf} - - ${NSD_CreateLabel} 0 0 200u 16u "$(LAB_FullScan_CleanUp)" - Pop $Label_FullScan_CleanUp - - ${NSD_CreateButton} 220u 0 70u 15u "$(BT_FullScan_CleanUp)" - Pop $Button_FullScan_CleanUp - GetFunctionAddress $0 Button_FullScan_CleanUp_Click - nsDialogs::OnClick /NOUNLOAD $Button_FullScan_CleanUp $0 - - ${NSD_CreateLabel} 0 22u 100% 24u "$(Label_CleanUp_Text)" - Pop $Label_CleanUp - - ${NSD_CreateGroupBox} 0 55u 100% 85u "$(Install_Location_Default)" - Pop $GroupBox_CleanUp - - !define __NSD_ListBoxMultiselect_CLASS LISTBOX - !define __NSD_ListBoxMultiselect_STYLE ${DEFAULT_STYLES}|${WS_TABSTOP}|${WS_VSCROLL}|${LBS_DISABLENOSCROLL}|${LBS_HASSTRINGS}|${LBS_NOINTEGRALHEIGHT}|${LBS_NOTIFY}|${LBS_MULTIPLESEL} - !define __NSD_ListBoxMultiselect_EXSTYLE ${WS_EX_WINDOWEDGE}|${WS_EX_CLIENTEDGE} - !insertmacro __NSD_DefineControl ListBoxMultiselect - ${NSD_CreateListboxMultiselect} 10u 70u 200u 65u "$(LB_CleanUp)" - Pop $ListBox_CleanUp - GetFunctionAddress $0 ListBox_CleanUp_Change - nsDialogs::OnChange /NOUNLOAD $ListBox_CleanUp $0 - - ${NSD_CreateButton} 220u 70u 70u 15u "$(BT_UnselectAll_CleanUp)" - Pop $Button_UnselectAll_CleanUp - GetFunctionAddress $0 Button_UnselectAll_CleanUp_Click - nsDialogs::OnClick /NOUNLOAD $Button_UnselectAll_CleanUp $0 - - ${NSD_CreateButton} 220u 100u 70u 15u "$(BT_SelectAll_CleanUp)" - Pop $Button_SelectAll_CleanUp - GetFunctionAddress $0 Button_SelectAll_CleanUp_Click - nsDialogs::OnClick /NOUNLOAD $Button_SelectAll_CleanUp $0 - - ${NSD_CreateButton} 220u 120u 70u 15u "$(BT_Uninstall_Selected_CleanUp)" - Pop $Button_Uninstall_Selected_CleanUp - GetFunctionAddress $0 Button_Uninstall_Selected_CleanUp_Click - nsDialogs::OnClick /NOUNLOAD $Button_Uninstall_Selected_CleanUp $0 - - - ;# First check if HDD scan was already done - ${If} ${FileExists} "$TEMP\opencpn_hdd_full_scan.tmp" - EnableWindow $Button_FullScan_CleanUp 0 - EnableWindow $Label_FullScan_CleanUp 0 - SendMessage $GroupBox_CleanUp ${WM_SETTEXT} 0 "STR:$(Install_Location_HDD_Scan)" - ClearErrors - FileOpen $R0 "$TEMP\opencpn_hdd_full_scan.tmp" r - IfErrors done1 - ${Do} - FileReadUTF16LE $R0 $R1 - ${If} $R1 == "" - Goto done1 - ${Else} - ${TrimNewLines} $R1 $R1 - SendMessage $ListBox_CleanUp ${LB_ADDSTRING} 0 "STR:$R1" - ${EndIf} - ${Loop} - done1: - FileClose $R0 - ;# if not get values from LM_VERSION and opencpn_old_installs.tmp file - ${Else} - ${IfNot} ${FileExists} "$TEMP\opencpn_hdd_quick_scan.tmp" - ;# Scan the default locations for program installations on a per-user and all-users basis - Banner::show /NOUNLOAD /set 76 "$(Search_old_installations)" - Banner::getWindow /NOUNLOAD - Pop $Banner_Handle - ShowWindow $Banner_Handle ${SW_HIDE} - ${NSD_AddExStyle} $Banner_Handle ${WS_EX_APPWINDOW} - ShowWindow $Banner_Handle ${SW_SHOW} - GetDlgItem $2 $Banner_Handle 1030 - SendMessage $2 ${WM_SETTEXT} 0 "STR:$(text_please_wait_1)" - - ; Get progress bar handle. - GetDlgItem $Marquee_Handle $Banner_Handle 1004 - - ; Set PBS_MARQUEE style for the progress bar control. - System::Call "user32::GetWindowLong(i $Marquee_Handle, i ${GWL_STYLE}) i .r1" - System::Call "user32::SetWindowLong(i $Marquee_Handle, i ${GWL_STYLE}, i $1|${PBS_MARQUEE})" - - ; Send PBM_SETMARQUEE message to start the marquee. - ; lParam is time in milliseconds between marquee animation updates. - SendMessage $Marquee_Handle ${PBM_SETMARQUEE} 1 50 - - System::Call "User32::SetWindowPos(i $Banner_Handle, i -1, i 0, i 0, i 0, i 0, i 83)" - - HideWindow - - Call Quick_Scan_Old_Versions - - ShowWindow $HWNDPARENT ${SW_SHOW} - BringToFront - SendMessage $Marquee_Handle ${PBM_SETMARQUEE} 0 0 - System::Call "user32::SetWindowLong(i $Marquee_Handle, i ${GWL_STYLE}, i $1)" - Banner::destroy - ${EndIf} - - ClearErrors - FileOpen $R0 "$TEMP\opencpn_hdd_quick_scan.tmp" r - IfErrors done2 - ${Do} - FileReadUTF16LE $R0 $R1 - ${If} $R1 == "" - Goto done2 - ${Else} - ${TrimNewLines} $R1 $R1 - SendMessage $ListBox_CleanUp ${LB_ADDSTRING} 0 "STR:$R1" - ${EndIf} - ${Loop} - - done2: - FileClose $R0 - ${EndIf} - ;# Pre-select all listbox-items - ${NSD_LB_GetCount} $ListBox_CleanUp $1 - IntOp $1 $1 - 1 - SendMessage $ListBox_CleanUp ${LB_SELITEMRANGEEX} 0 $1 - Call ListBox_CleanUp_Change - - nsDialogs::Show - FunctionEnd -*/ - -/* - Function Button_FullScan_CleanUp_Click - SendMessage $ListBox_CleanUp ${LB_RESETCONTENT} 0 0 - - Banner::show /NOUNLOAD /set 76 "$(Scanning_HDD)" - Banner::getWindow /NOUNLOAD - Pop $Banner_Handle - ShowWindow $Banner_Handle ${SW_HIDE} - SendMessage $Banner_Handle ${WM_SETTEXT} 0 "STR:$(OCPN_Scanning_HDD)" - ${NSD_AddExStyle} $Banner_Handle ${WS_EX_APPWINDOW} - ShowWindow $Banner_Handle ${SW_SHOW} - GetDlgItem $2 $Banner_Handle 1030 - SendMessage $2 ${WM_SETTEXT} 0 "STR:$(text_please_wait_1)" - - ; Get progress bar handle. - GetDlgItem $Marquee_Handle $Banner_Handle 1004 - - ; Set PBS_MARQUEE style for the progress bar control. - System::Call "user32::GetWindowLong(i $Marquee_Handle, i ${GWL_STYLE}) i .r1" - System::Call "user32::SetWindowLong(i $Marquee_Handle, i ${GWL_STYLE}, i $1|${PBS_MARQUEE})" - - ; Send PBM_SETMARQUEE message to start the marquee. - ; lParam is time in milliseconds between marquee animation updates. - SendMessage $Marquee_Handle ${PBM_SETMARQUEE} 1 50 - - System::Call "User32::SetWindowPos(i $Banner_Handle, i -1, i 0, i 0, i 0, i 0, i 83)" - - HideWindow - - Call Full_Scan_Old_Versions - - ${If} ${FileExists} "$TEMP\opencpn_hdd_full_scan.tmp" - Delete "$TEMP\opencpn_hdd_quick_scan.tmp" - ${EndIf} - - ;# If install locations were found compare with Registry keys - ${If} $counter_tmp > 0 - ${If} $LM_VERSION_INST != "" - ClearErrors - FileOpen $R0 "$TEMP\opencpn_hdd_full_scan.tmp" r - IfErrors done1 - ${Do} - FileReadUTF16LE $R0 $R1 - ${If} $R1 == "" - Goto done1 - ${Else} - ${TrimNewLines} $R1 $R1 - StrCmp $R1 $R2 done1 - ${EndIf} - ${Loop} - ;# Path from Registry key wasn't found => delete RegKey - DeleteRegKey HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\OpenCPN_is1" - StrCpy $LM_VERSION_INST "" - - done1: - FileClose $R0 - ${EndIf} - - ${If} ${FileExists} "$TEMP\opencpn_old_installs.tmp" - ;# Clear the stack - ClearErrors - ${Do} - Pop $0 - IfErrors empty - ${Loop} - empty: - - ClearErrors - FileOpen $R0 "$TEMP\opencpn_old_installs.tmp" r - - IfErrors done3 - ${Do} - FileReadUTF16LE $R0 $R3 - FileReadUTF16LE $R0 $R2 - ${If} $R3 == "" - Goto done3 - ${Else} - ${TrimNewLines} $R3 $R3 - ${TrimNewLines} $R2 $R2 - FileReadUTF16LE $R0 $R1 - ${TrimNewLines} $R1 $R1 - ClearErrors - FileOpen $0 "$TEMP\opencpn_hdd_full_scan.tmp" r - IfErrors next - ${Do} - FileReadUTF16LE $0 $1 - ${If} $1 == "" - Goto next - ${Else} - ${TrimNewLines} $1 $1 - StrCmp $1 $R1 done2 - ${EndIf} - ${Loop} - ;# Path from Registry key wasn't found => delete RegKey - DeleteRegKey HKU $R3 - Goto next - - done2: - Push $R1 - Push $R2 - Push $R3 - next: - FileClose $0 - ${EndIf} - ${Loop} - done3: - FileClose $R0 - - ClearErrors - FileOpen $R0 "$TEMP\opencpn_old_installs.tmp" w - IfErrors done4 - ${Do} - Pop $R1 - IfErrors done4 - FileWriteUTF16LE $R0 $R1 - FileWriteUTF16LE $R0 "$\r$\n" - ${Loop} - done4: - FileClose $R0 - ${EndIf} - ${EndIf} - - EnableWindow $Button_FullScan_CleanUp 0 ;# Disable the Scan HDD button after scan was done - EnableWindow $Label_FullScan_CleanUp 0 ;# Disable the Scan HDD label after scan was done - SendMessage $GroupBox_CleanUp ${WM_SETTEXT} 0 "STR:$(Install_Location_HDD_Scan)" - - ShowWindow $HWNDPARENT ${SW_SHOW} - BringToFront - - ; Stop the marquee and set the old styles back for the progress bar control. - SendMessage $Marquee_Handle ${PBM_SETMARQUEE} 0 0 - System::Call "user32::SetWindowLong(i $Marquee_Handle, i ${GWL_STYLE}, i $1)" - - Banner::destroy - FunctionEnd -*/ - - Function Button_UnselectAll_CleanUp_Click - SendMessage $ListBox_CleanUp ${LB_SETSEL} FALSE -1 - Call ListBox_CleanUp_Change - FunctionEnd - - Function Button_SelectAll_CleanUp_Click - ${NSD_LB_GetCount} $ListBox_CleanUp $1 - IntOp $1 $1 - 1 - ${If} $1 == 0 - IntOp $1 $1 + 1 - ${EndIf} - SendMessage $ListBox_CleanUp ${LB_SELITEMRANGEEX} 0 $1 - Call ListBox_CleanUp_Change - FunctionEnd - - Function ListBox_CleanUp_Change - SendMessage $ListBox_CleanUp ${LB_GETSELCOUNT} 0 0 $1 - ${NSD_LB_GetCount} $ListBox_CleanUp $2 - ${If} $2 > 0 - ${If} $1 == 0 - EnableWindow $Button_Uninstall_Selected_CleanUp 0 - EnableWindow $Button_UnselectAll_CleanUp 0 - EnableWindow $Button_SelectAll_CleanUp 1 - ${ElseIf} $1 > 0 - ${AndIf} $1 == $2 - EnableWindow $Button_Uninstall_Selected_CleanUp 1 - EnableWindow $Button_UnselectAll_CleanUp 1 - EnableWindow $Button_SelectAll_CleanUp 0 - ${Else} - EnableWindow $Button_Uninstall_Selected_CleanUp 1 - EnableWindow $Button_UnselectAll_CleanUp 1 - EnableWindow $Button_SelectAll_CleanUp 1 - ${EndIf} - ${Else} - EnableWindow $Button_Uninstall_Selected_CleanUp 0 - EnableWindow $Button_UnselectAll_CleanUp 0 - EnableWindow $Button_SelectAll_CleanUp 0 - ${EndIf} - FunctionEnd - -/* - Var Uninstall_Path_Tmp - Function Button_Uninstall_Selected_CleanUp_Click - EnableWindow $Button_Uninstall_Selected_CleanUp 0 - SendMessage $ListBox_CleanUp ${LB_GETSELCOUNT} 0 0 $1 - ${NSD_LB_GetCount} $ListBox_CleanUp $2 - ClearErrors - FileOpen $R0 "$TEMP\opencpn_uninstall.tmp" w - IfErrors done - IntOp $2 $2 - 1 - ${ForEach} $3 $2 0 - 1 - SendMessage $ListBox_CleanUp ${LB_GETSEL} $3 0 $4 - ${If} $4 > 0 - System::Call "User32::SendMessage(i $ListBox_CleanUp, i ${LB_GETTEXT}, i $3, t .r5)" - FileWriteUTF16LE $R0 "$5" - FileWriteUTF16LE $R0 "$\r$\n" - SendMessage $ListBox_CleanUp ${LB_DELETESTRING} $3 0 - ${EndIf} - ${Next} - done: - FileClose $R0 - - Call ListBox_CleanUp_Change - - StrCpy $R8 "" - StrCpy $R7 "" - StrCpy $R6 "" - StrCpy $R5 "" - ${If} ${FileExists} "$TEMP\opencpn_uninstall.tmp" - ${If} ${FileExists} "$TEMP\opencpn_hdd_full_scan.tmp" - StrCpy $R8 "opencpn_hdd_full_scan.tmp" - ${ElseIf} ${FileExists} "$TEMP\opencpn_hdd_quick_scan.tmp" - StrCpy $R8 "opencpn_hdd_quick_scan.tmp" - ${EndIf} - - ${If} ${FileExists} "$TEMP\opencpn_old_installs.tmp" - StrCpy $R7 1 - ${EndIf} - - ${If} ${FileExists} "$TEMP\opencpn_old_uninstall_regkeys.tmp" - StrCpy $R6 1 - ${EndIf} - - ${If} ${FileExists} "$TEMP\opencpn_appdata.tmp" - StrCpy $R5 1 - ${EndIf} - - ClearErrors - FileOpen $R4 "$TEMP\opencpn_uninstall.tmp" r - IfErrors end - loop: - ClearErrors - FileReadUTF16LE $R4 $0 - IfErrors end - StrCmp $0 "" loop - StrCmp $0 "$\r$\n" loop - - ${TrimNewLines} $0 $0 - StrCpy $Uninstall_Path_Tmp $0 - - ;# Delete installation directory - ClearErrors - Call Delete_Installation_Dir - IfErrors 0 +2 - MessageBox MB_OK|MB_ICONEXCLAMATION "Error RMDir: $0" ;#ON ERROR - - ;# If deleted installation was the one in the HKLM ...\OpenCPN_is1 subkey => delete RegKey - ${If} $LM_VERSION_INST != "" - StrCmp $0 $LM_VERSION_INST 0 cont - ClearErrors - DeleteRegKey HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\OpenCPN_is1" - IfErrors 0 +2 - MessageBox MB_OK|MB_ICONEXCLAMATION "Error DeleteRegKey HKLM Software\Microsoft\Windows\CurrentVersion\Uninstall\OpenCPN_is1" ;#ON ERROR - StrCpy $LM_VERSION "" - StrCpy $LM_VERSION_INST "" - StrCpy $LM_VERSION_UNINST "" - ${EndIf} - - cont: - ;# Delete Start Menu shortcuts - Push $Uninstall_Path_Tmp - Call Delete_Start_Menu_Shortcuts - - ;# Delete Desktop shortcuts - Push $Uninstall_Path_Tmp - Call Delete_Desktop_Shortcuts - - ;# Delete RegKeys in HKU Software\opencpn.org\... - ${If} $R7 == 1 - Call Update_Old_Installs - ${EndIf} - - ;# Delete RegKeys in HKU Software\...\Uninstall\OpenCPN - ${If} $R6 == 1 - Call Update_Old_Uninstalls - ${EndIf} - - ;# Delete %APPDATA\opencpn folder - ${If} $R5 == 1 - Call Update_Appdata - ${EndIf} - - ${IfNot} $R8 == "" - Call Update_HDD_Scan - ${EndIf} - - Goto loop - end: - FileClose $R4 - Delete "$TEMP\opencpn_uninstall.tmp" - StrCpy $Uninstall_Path_Tmp "" - ${EndIf} - - ${NSD_LB_GetCount} $ListBox_CleanUp $2 - ${If} $2 == 0 ;# listbox is empty - all were uninstalled - StrCpy $Skip_Page_CleanUp 1 - GetDlgItem $0 $HWNDPARENT 1 - SendMessage $0 ${BM_CLICK} 0 0 - ${EndIf} - FunctionEnd -*/ - -/* - Function Update_HDD_Scan - Push $0 - Push $1 - Push $2 - Push $3 - Push $4 - Push $R0 - Push $R8 - ClearErrors - FileOpen $0 "$TEMP\$R8" r ;# open target file for reading - GetTempFileName $R0 ;# get new temp file name - FileOpen $1 $R0 w ;# open temp file for writing - IfErrors end - loop: - FileReadUTF16LE $0 $2 ;# read line from target file - IfErrors done ;# check if end of file reached - ${TrimNewLines} $2 $2 - StrCmp $2 "$Uninstall_Path_Tmp" +2 ;# compare line with search string with CR/LF - FileWriteUTF16LE $1 "$2$\r$\n" ;# write line to temp file - Goto loop - done: - FileClose $0 ;# close target file - FileClose $1 ;# close temp file - Delete "$TEMP\$R8" ;# delete target file - CopyFiles /SILENT $R0 "$TEMP\$R8" ;# copy temp file to target file - Delete $R0 ;# delete temp file - end: - Pop $R8 - Pop $R0 - Pop $4 - Pop $3 - Pop $2 - Pop $1 - Pop $0 - FunctionEnd -*/ - -/* - Function Update_Old_Installs - Push $0 - Push $1 - Push $2 - Push $3 - Push $4 - Push $R0 - Push $R1 - ClearErrors - FileOpen $0 "$TEMP\opencpn_old_installs.tmp" r ;# open target file for reading - GetTempFileName $R0 ;# get new temp file name - FileOpen $1 $R0 w ;# open temp file for writing - IfErrors end - loop: - FileReadUTF16LE $0 $4 ;# read line from target file - FileReadUTF16LE $0 $3 ;# read line from target file - FileReadUTF16LE $0 $2 ;# read line from target file - IfErrors done ;# check if end of file reached - ${TrimNewLines} $2 $2 - StrCmp $2 "$Uninstall_Path_Tmp" +5 ;# compare line with search string with CR/LF - FileWriteUTF16LE $1 $4 ;# write line to temp file - FileWriteUTF16LE $1 $3 ;# write line to temp file - FileWriteUTF16LE $1 "$2$\r$\n" ;# write line to temp file - Goto loop - ${TrimNewLines} $4 $4 - DeleteRegKey HKU "$4" - ${WordFind} "$4" "\" "-2{*" $4 - DeleteRegKey /ifempty HKU "$4" - ClearErrors - Goto loop - done: - FileClose $0 ;# close target file - FileClose $1 ;# close temp file - Delete "$TEMP\opencpn_old_installs.tmp" ;# delete target file - CopyFiles /SILENT $R0 "$TEMP\opencpn_old_installs.tmp" ;# copy temp file to target file - Delete $R0 ;# delete temp file - end: - Pop $R1 - Pop $R0 - Pop $4 - Pop $3 - Pop $2 - Pop $1 - Pop $0 - FunctionEnd -*/ - -/* - Function Update_Old_Uninstalls - Push $0 - Push $1 - Push $2 - Push $3 - Push $4 - Push $R0 - Push $R1 - ClearErrors - FileOpen $0 "$TEMP\opencpn_old_uninstall_regkeys.tmp" r ;# open target file for reading - GetTempFileName $R0 ;# get new temp file name - FileOpen $1 $R0 w ;# open temp file for writing - IfErrors end - loop: - FileReadUTF16LE $0 $4 ;# read line from target file - FileReadUTF16LE $0 $3 ;# read line from target file - FileReadUTF16LE $0 $2 ;# read line from target file - IfErrors done ;# check if end of file reached - ${TrimNewLines} $2 $2 - StrCmp $2 "$Uninstall_Path_Tmp" +5 ;# compare line with search string with CR/LF - FileWriteUTF16LE $1 $4 ;# write line to temp file - FileWriteUTF16LE $1 $3 ;# write line to temp file - FileWriteUTF16LE $1 "$2$\r$\n" ;# write line to temp file - Goto loop - ${TrimNewLines} $3 $3 - DeleteRegKey HKU "$3" - ClearErrors - Goto loop - done: - FileClose $0 ;# close target file - FileClose $1 ;# close temp file - Delete "$TEMP\opencpn_old_uninstall_regkeys.tmp" ;# delete target file - CopyFiles /SILENT $R0 "$TEMP\opencpn_old_uninstall_regkeys.tmp" ;# copy temp file to target file - Delete $R0 ;# delete temp file - end: - Pop $R1 - Pop $R0 - Pop $4 - Pop $3 - Pop $2 - Pop $1 - Pop $0 - FunctionEnd -*/ - -/* - Function Update_Appdata - Push $0 - Push $1 - Push $2 - Push $3 - Push $4 - Push $R0 - Push $R1 - ClearErrors - FileOpen $0 "$TEMP\opencpn_appdata.tmp" r ;# open target file for reading - GetTempFileName $R0 ;# get new temp file name - FileOpen $1 $R0 w ;# open temp file for writing - IfErrors end - loop: - FileReadUTF16LE $0 $4 ;# read line from target file - FileReadUTF16LE $0 $3 ;# read line from target file - FileReadUTF16LE $0 $2 ;# read line from target file - IfErrors done ;# check if end of file reached - ${TrimNewLines} $2 $2 - StrCmp $2 "$Uninstall_Path_Tmp" +5 ;# compare line with search string with CR/LF - FileWriteUTF16LE $1 $4 ;# write line to temp file - FileWriteUTF16LE $1 $3 ;# write line to temp file - FileWriteUTF16LE $1 "$2$\r$\n" ;# write line to temp file - Goto loop - ${TrimNewLines} $3 $3 - RMDir /r "$3\opencpn" - ClearErrors - Goto loop - done: - FileClose $0 ;# close target file - FileClose $1 ;# close temp file - Delete "$TEMP\opencpn_appdata.tmp" ;# delete target file - CopyFiles /SILENT $R0 "$TEMP\opencpn_appdata.tmp" ;# copy temp file to target file - Delete $R0 ;# delete temp file - end: - Pop $R1 - Pop $R0 - Pop $4 - Pop $3 - Pop $2 - Pop $1 - Pop $0 - FunctionEnd -*/ - -/* -;-------------------------------- -;# Page_CleanUp_Leave - Function Page_CleanUp_Leave - ${NSD_LB_GetCount} $ListBox_CleanUp $2 - ${If} $2 > 0 ;# listbox is not empty - not all old versions were uninstalled - MessageBox MB_YESNO|MB_ICONQUESTION "$(Msg_Not_All_Old_Uninstalled)" IDYES leaving - Abort - ${EndIf} - leaving: - SendMessage $ListBox_CleanUp ${LB_RESETCONTENT} 0 0 - FunctionEnd - -*/ - -;-------------------------------- -;# Page_TypeInst -/* Var Label_TypeInst_Reinstall - Var RB_Reinstall - Var Label_TypeInst_Upgrade - Var RB_Upgrade - Var Label_TypeInst_Downgrade - Var RB_Downgrade - Var Label_TypeInst_Parallel - Var GroupBox_TypeInst - Var RB_Parallel - Var TI_REINSTALL - Var TI_UPGRADE - Var TI_DOWNGRADE - Var TI_PARALLEL - Var GroupBox_Size - Var INSTALL_TYPE - */ - Function Page_TypeInst - ${If} $Skip_Page_TypeInst == 1 - Abort - ${EndIf} - ${If} $VERSION_EXISTS == 1 - !insertmacro MUI_HEADER_TEXT $(Page_TypeInst_Title_Exists) $(Page_TypeInst_Subtitle_Exists) - ${ElseIf} $MULTIPLE_INSTALLS == 1 - !insertmacro MUI_HEADER_TEXT $(Page_TypeInst_Title_1) $(Page_TypeInst_Subtitle_1) - ${ElseIf} $MULTIPLE_INSTALLS > 1 - !insertmacro MUI_HEADER_TEXT $(Page_TypeInst_Title) $(Page_TypeInst_Subtitle) - ${EndIf} - - nsDialogs::Create /NOUNLOAD 1018 - Pop $0 - - ${If} $0 == error - Abort - ${EndIf} - - ;Case 1: same version already installed => Option 1: Reinstall - ${If} $VERSION_EXISTS == 1 - ${NSD_CreateLabel} 0 0 100% 40u "$(Label_TypeInst_Reinstall_Text)" - Pop $Label_TypeInst_Reinstall - - ${NSD_CreateRadioButton} 10u 65u 100% 10u "$(RB_Reinstall_TypeInst_Text)" - Pop $RB_Reinstall - ${NSD_AddStyle} $RB_Reinstall ${WS_GROUP} - ${NSD_SetState} $RB_Reinstall ${BST_CHECKED} - - StrCpy $GroupBox_Size 1 - ;Case 2: one older previous installation => Option 1: Upgrade Option 2: Parallel Installation - ${ElseIf} $MULTIPLE_INSTALLS == 1 - ${AndIf} $VERSION_NEWER == 1 - ${NSD_CreateLabel} 0 0 100% 32u "$(Label_TypeInst_Upgrade_Text)" - Pop $Label_TypeInst_Upgrade - - ${NSD_CreateRadioButton} 10u 65u 100% 10u "$(RB_Upgrade_TypeInst_Text)" - Pop $RB_Upgrade - ${NSD_AddStyle} $RB_Upgrade ${WS_GROUP} - ${If} $TI_UPGRADE != "" - ${NSD_SetState} $RB_Upgrade $TI_UPGRADE - ${ElseIf} $TI_UPGRADE == "" - ${AndIf} $TI_PARALLEL == "" - ${NSD_SetState} $RB_Upgrade ${BST_CHECKED} - ${EndIf} -/* - ${NSD_CreateRadioButton} 10u 85u 100% 10u "$(RB_Parallel_TypeInst_Text)" - Pop $RB_Parallel - ${If} $TI_PARALLEL != "" - ${NSD_SetState} $RB_Parallel $TI_PARALLEL - ${EndIf} -*/ - StrCpy $GroupBox_Size 1 - ;Case 3: one newer previous installation => Option 1: Downgrade Option 2: Parallel Installation - ${ElseIf} $MULTIPLE_INSTALLS == 1 - ${AndIf} $VERSION_OLDER == 1 - ${NSD_CreateLabel} 0 0 100% 32u "$(Label_TypeInst_Downgrade_Text)" - Pop $Label_TypeInst_Downgrade - - ${NSD_CreateRadioButton} 10u 65u 100% 10u "$(RB_Downgrade_TypeInst_Text)" - Pop $RB_Downgrade - ${NSD_AddStyle} $RB_Downgrade ${WS_GROUP} - ${If} $TI_DOWNGRADE != "" - ${NSD_SetState} $RB_Upgrade $TI_DOWNGRADE - ${ElseIf} $TI_DOWNGRADE == "" - ${AndIf} $TI_PARALLEL == "" - ${NSD_SetState} $RB_Downgrade ${BST_CHECKED} - ${EndIf} -/* - ${NSD_CreateRadioButton} 10u 85u 100% 10u "$(RB_Parallel_TypeInst_Text)" - Pop $RB_Parallel - ${If} $TI_PARALLEL != "" - ${NSD_SetState} $RB_Parallel $TI_PARALLEL - ${EndIf} -*/ - StrCpy $GroupBox_Size 1 -/* - ;Case 4: more than one previous installation => Option 1: Parallel Installation - ${ElseIf} $MULTIPLE_INSTALLS > 1 - ${NSD_CreateLabel} 0 0 100% 32u "$(Label_TypeInst_Parallel_Text)" - Pop $Label_TypeInst_Parallel - - ${NSD_CreateRadioButton} 10u 65u 100% 10u "$(RB_Parallel_TypeInst_Text)" - Pop $RB_Parallel - ${NSD_AddStyle} $RB_Parallel ${WS_GROUP} - ${NSD_SetState} $RB_Parallel ${BST_CHECKED} - - StrCpy $GroupBox_Size 1 -*/ - ${EndIf} - - ${If} $GroupBox_Size == 1 - ${NSD_CreateGroupBox} 0 50u 100% 35u "Install Type" - Pop $GroupBox_TypeInst - ${ElseIf} $GroupBox_Size == 2 - ${NSD_CreateGroupBox} 0 50u 100% 55u "Install Type" - Pop $GroupBox_TypeInst - ${EndIf} - - nsDialogs::Show - FunctionEnd - -;-------------------------------- -;# Page_TypeInst_Leave - Function Page_TypeInst_Leave - ${If} $RB_Reinstall != "" - ${NSD_GetState} $RB_Reinstall $TI_REINSTALL - ${EndIf} - ${If} $RB_Upgrade != "" - ${NSD_GetState} $RB_Upgrade $TI_UPGRADE - ${EndIf} - ${If} $RB_Downgrade != "" - ${NSD_GetState} $RB_Downgrade $TI_DOWNGRADE - ${EndIf} - ${If} $RB_Parallel != "" - ${NSD_GetState} $RB_Parallel $TI_PARALLEL - ${EndIf} - - StrCpy $Skip_Page_Directory "" - ${If} $TI_REINSTALL == 1 - StrCpy $INSTALL_TYPE 1 - ${ElseIf} $TI_UPGRADE == 1 - StrCpy $INSTALL_TYPE 2 - ${ElseIf} $TI_DOWNGRADE == 1 - StrCpy $INSTALL_TYPE 3 - ${ElseIf} $TI_PARALLEL == 1 - StrCpy $INSTALL_TYPE 4 - ${EndIf} - - ${If} $INSTALL_TYPE == 1 - ${OrIf} $INSTALL_TYPE == 2 - ${OrIf} $INSTALL_TYPE == 3 - StrCpy $Skip_Page_Directory 1 - ReadRegStr $0 HKLM "$Prev_Install_RegKey" "InstallLocation" - StrCpy $INSTDIR $0 - ${EndIf} - - ; On Upgrade or Downgrade, tentatively trim any Package Version trailer from install location - ${If} $INSTALL_TYPE == 2 - ${OrIf} $INSTALL_TYPE == 3 - StrCpy $R1 0 - Push $INSTDIR - Push "OpenCPN\plugins\s63_pi" - Push ">" - Call StrLoc - Pop $0 - - StrCpy $R1 $INSTDIR $0 - StrCpy $R1 "$R1OpenCPN\plugins\s63_pi" - StrLen $R2 $INSTDIR - StrLen $R3 $R1 - -/* - ; If Previous install dir was a parallel, make the upgrade also parallel. - ${If} $R2 > $R3 - StrCpy $INSTDIR "$R1 @CPACK_PACKAGE_VERSION@" - ${Else} - StrCpy $INSTDIR $R1 - ${Endif} -*/ - ${Endif} - - ${If} $INSTALL_TYPE == 4 - StrCpy $INSTDIR "$PROGRAMFILES\OpenCPN\plugins\s63_pi @CPACK_PACKAGE_VERSION@" - ${EndIf} - FunctionEnd - -/* -;-------------------------------- -;# Page_Components_Pre - Function Page_Components_Pre - - FunctionEnd - -;-------------------------------- -;# Page_Components_Show - Function Page_Components_Show - ;# change controls size and position on the Components Page - Push $0 - Push $1 - Push $2 - Push $3 - Push $4 - Push $5 - Push $6 - Push $7 - - FindWindow $mui.ComponentsPage "#32770" "" $HWNDPARENT - - ;GetDlgItem $mui.ComponentsPage.Text $mui.ComponentsPage 1006 - GetDlgItem $mui.ComponentsPage.InstTypesText $mui.ComponentsPage 1021 - ShowWindow $mui.ComponentsPage.InstTypesText ${SW_HIDE} - - GetDlgItem $mui.ComponentsPage.ComponentsText $mui.ComponentsPage 1022 - GetDlgItem $mui.ComponentsPage.InstTypes $mui.ComponentsPage 1017 - ShowWindow $mui.ComponentsPage.InstTypes ${SW_HIDE} - - GetDlgItem $mui.ComponentsPage.Components $mui.ComponentsPage 1032 - GetDlgItem $mui.ComponentsPage.DescriptionTitle $mui.ComponentsPage 1042 - GetDlgItem $mui.ComponentsPage.DescriptionText $mui.ComponentsPage 1043 - GetDlgItem $mui.ComponentsPage.SpaceRequired $mui.ComponentsPage 1023 - ShowWindow $mui.ComponentsPage.SpaceRequired ${SW_HIDE} - - Push "198" - Push "40" - Push "100" - Push "100" - Call DU2Pix - System::Call "User32::SetWindowPos(i $mui.ComponentsPage.DescriptionTitle, i 0, i $1, i $2, i $3, i $4, i 64)" ;# 1042 - - Push "203" - Push "50" - Push "90" - Push "85" - Call DU2Pix - System::Call "User32::SetWindowPos(i $mui.ComponentsPage.DescriptionText, i 0, i $1, i $2, i $3, i $4, i 64)" ;# 1043 - - Push "0" - Push "25" - Push "300" - Push "15" - Call DU2Pix - System::Call "User32::SetWindowPos(i $mui.ComponentsPage.ComponentsText, i 0, i $1, i $2, i $3, i $4, i 64)" ;# 1022 - - Push "0" - Push "40" - Push "195" - Push "100" - Call DU2Pix - System::Call "User32::SetWindowPos(i $mui.ComponentsPage.Components, i 0, i $1, i $2, i $3, i $4, i 64)" ;# 1032 - - Pop $7 - Pop $6 - Pop $5 - Pop $4 - Pop $3 - Pop $2 - Pop $1 - Pop $0 - FunctionEnd - -;-------------------------------- -;# Page_Components_Leave - Function Page_Components_Leave - ${IfNot} ${SectionIsSelected} ${SecSetConfig} - StrCpy $Skip_Page_SetConfig 1 - ${Else} - StrCpy $Skip_Page_SetConfig 0 - ${EndIf} - - ${IfNot} ${SectionIsSelected} ${SecShortcutStartmenu} - StrCpy $Skip_Page_Startmenu 1 - ${Else} - StrCpy $Skip_Page_Startmenu 0 - ${EndIf} - FunctionEnd -*/ -;-------------------------------- -;# Page_Directory_Pre - Function Page_Directory_Pre - ${If} $Skip_Page_Directory == 1 - Abort - ${EndIf} - FunctionEnd - -;-------------------------------- -;# Page_Directory_Leave - Function Page_Directory_Leave - GetInstDirError $R0 - ${If} $R0 > 0 ;# Invalid path entered - MessageBox MB_OK|MB_ICONSTOP "$(Msg_Path_Invalid)" - Abort - ${EndIf} - - ${If} $INSTALL_TYPE == 4 - ${AndIf} ${FileExists} "$INSTDIR\opencpn.exe" - MessageBox MB_OK|MB_ICONSTOP "$(Msg_Path_Installation_Exists)" - Abort - ${EndIf} - FunctionEnd - - - - - -/* -;-------------------------------- -;# Page_Startmenu_Pre - Function Page_Startmenu_Pre - ${If} $Skip_Page_Startmenu == 1 - Abort - ${EndIf} - - ${If} $INSTALL_TYPE == 1 - ${OrIf} $INSTALL_TYPE == 2 - ${OrIf} $INSTALL_TYPE == 3 - ReadRegStr $0 HKLM "$Prev_Install_RegKey" "StartMenuFolder" - StrCpy $STARTMENU_FOLDER $0 - ${EndIf} - FunctionEnd -*/ -;-------------------------------- -/*# Page_SetConfig - Var Label_SetConfig - Var GroupBox_Language_SetConfig - Var CheckBox_Language_SetConfig - Var GroupBox_ChartDir_SetConfig - Var DirRequest_SetConfig - Var Button_Delete_SetConfig - Var Button_DeleteAll_SetConfig - Var Button_Add_SetConfig - Var ListBox_SetConfig -*/ - -/* - Function Page_SetConfig - ${If} $Skip_Page_SetConfig == 1 - Abort - ${EndIf} - !insertmacro MUI_HEADER_TEXT $(Page_SetConfig_Title) $(Page_SetConfig_Subtitle) - nsDialogs::Create /NOUNLOAD 1018 - Pop $0 - ${If} $0 == error - Abort - ${EndIf} - - ${NSD_CreateLabel} 0 0 100% 16u "$(Label_SetConfig_Text)" - Pop $Label_SetConfig - - ${NSD_CreateGroupBox} 0 20u 100% 30u "$(GB_Language_SetConfig_Text)" - Pop $GroupBox_Language_SetConfig - - ${NSD_CreateCheckBox} 10u 35u 100% 10u "$(CB_Language_SetConfig_Text)" - Pop $CheckBox_Language_SetConfig - ;StrCmp $CONFIG_SET_LANG "" cont - ${If} $CONFIG_SET_LANG == "" - ${NSD_SetState} $CheckBox_Language_SetConfig ${BST_CHECKED} - Goto cont - ${EndIf} - - StrCmp $CONFIG_SET_LANG 0 0 +2 - ${NSD_SetState} $CheckBox_Language_SetConfig ${BST_UNCHECKED} - StrCmp $CONFIG_SET_LANG 1 0 +2 - ${NSD_SetState} $CheckBox_Language_SetConfig ${BST_CHECKED} - - cont: - ${NSD_CreateGroupBox} 0 55u 100% 85u "$(GB_ChartDir_SetConfig_Text)" - Pop $GroupBox_ChartDir_SetConfig - - ${NSD_CreateButton} 220u 70u 60u 15u "$(BT_Delete_SetConfig_Text)" - Pop $Button_Delete_SetConfig - GetFunctionAddress $0 Button_Delete_SetConfig_Click - nsDialogs::OnClick /NOUNLOAD $Button_Delete_SetConfig $0 - - ${NSD_CreateButton} 220u 88u 60u 15u "$(BT_DeleteAll_SetConfig_Text)" - Pop $Button_DeleteAll_SetConfig - GetFunctionAddress $0 Button_DeleteAll_SetConfig_Click - nsDialogs::OnClick /NOUNLOAD $Button_DeleteAll_SetConfig $0 - - ${NSD_CreateButton} 220u 115u 60u 15u "$(BT_Browse_SetConfig_Text)" - Pop $Button_Add_SetConfig - GetFunctionAddress $0 Button_Add_SetConfig_Click - nsDialogs::OnClick /NOUNLOAD $Button_Add_SetConfig $0 - - ${NSD_CreateListBox} 10u 70u 200u 60u $(LB_SetConfig) - Pop $ListBox_SetConfig - GetFunctionAddress $0 ListBox_SetConfig_Change - nsDialogs::OnChange /NOUNLOAD $ListBox_SetConfig $0 - ${IfNot} $CHART_DIR_EMPTY == 1 - SetShellVarContext all - ${If} ${FileExists} "$TEMP\opencpn_chart_dirs.tmp" - ClearErrors - FileOpen $R0 "$TEMP\opencpn_chart_dirs.tmp" r - IfErrors end - loop: - ClearErrors - FileReadUTF16LE $R0 $1 - IfErrors end - ${TrimNewLines} $1 $1 - SendMessage $ListBox_SetConfig ${LB_ADDSTRING} 0 "STR:$1" - Goto loop - end: - FileClose $R0 - ${ElseIf} $INI_EXISTS == 1 - StrCpy $R2 0 - loop2: - IntOp $R2 $R2 + 1 - ReadINIStr $R1 "$APPDATA\@CPACK_NSIS_PACKAGE_NAME_LC@\opencpn.ini" "ChartDirectories" "ChartDir$R2" - StrCmp $R1 "" cont2 - ${WordReplace} "$R1" "\\" "\" "+" $R3 - ${Explode} $R4 "^" "$R3" - Pop $R5 - StrCmp $R5 "" cont2 - SendMessage $ListBox_SetConfig ${LB_ADDSTRING} 0 "STR:$R5" - Goto loop2 - ${Else} - ReadRegStr $0 HKLM "Software\OpenCPN" "ChartDirs" - StrCmp $0 "" cont2 - ${Explode} $3 ";" "$0" - ${For} $1 1 $3 - Pop $2 - ${TrimNewLines} $2 $2 - SendMessage $ListBox_SetConfig ${LB_ADDSTRING} 0 "STR:$2" - ${Next} - ${EndIf} - ${EndIf} - - cont2: - Call ListBox_SetConfig_Change - nsDialogs::Show - FunctionEnd - - Function Button_Delete_SetConfig_Click - SendMessage $ListBox_SetConfig ${LB_GETCURSEL} 0 0 $0 - SendMessage $ListBox_SetConfig ${LB_DELETESTRING} $0 0 - Call ListBox_SetConfig_Change - FunctionEnd - - Function Button_DeleteAll_SetConfig_Click - SendMessage $ListBox_SetConfig ${LB_RESETCONTENT} 0 0 - Call ListBox_SetConfig_Change - FunctionEnd - - Function Button_Add_SetConfig_Click - Var /GLOBAL Initial_Dir - StrCmp $Initial_Dir "" 0 +3 - SetShellVarContext all - StrCpy $Initial_Dir "$DOCUMENTS" - nsDialogs::SelectFolderDialog /NOUNLOAD "$(Select_Chart_Directory)" "$Initial_Dir" - Pop $0 - ${If} $0 == error - Abort - ${EndIf} - StrCpy $Initial_Dir $0 - ${NSD_LB_GetCount} $ListBox_SetConfig $2 - ${If} $2 > 0 - SendMessage $ListBox_SetConfig ${LB_FINDSTRINGEXACT} -1 "STR:$0" $6 - ${IfNot} $6 < 0 - Goto end - ${EndIf} - ${EndIf} - SendMessage $ListBox_SetConfig ${LB_ADDSTRING} 0 "STR:$0" - end: - Call ListBox_SetConfig_Change - FunctionEnd - - Function ListBox_SetConfig_Change - ${NSD_LB_GetCount} $ListBox_SetConfig $0 - ${If} $0 > 0 - StrCpy $CHART_DIR_EMPTY 0 - ${NSD_LB_GetSelection} $ListBox_SetConfig $1 - ${If} $1 != "" - EnableWindow $Button_Delete_SetConfig 1 - ${Else} - EnableWindow $Button_Delete_SetConfig 0 - ${EndIf} - EnableWindow $Button_DeleteAll_SetConfig 1 - ${Else} - EnableWindow $Button_Delete_SetConfig 0 - EnableWindow $Button_DeleteAll_SetConfig 0 - StrCpy $CHART_DIR_EMPTY 1 - ${EndIf} - FunctionEnd - -*/ -/* -;-------------------------------- -# Page_SetConfig_Leave -# Var CHART_DIR_TMP_FILE - - Function Page_SetConfig_Leave - ${NSD_LB_GetCount} $ListBox_SetConfig $0 - ${If} $0 > 0 - ClearErrors - FileOpen $R0 "$TEMP\opencpn_chart_dirs.tmp" w - IfErrors done - IntOp $0 $0 - 1 - ${For} $1 0 $0 - SendMessage $ListBox_SetConfig ${LB_SETCURSEL} $1 0 - System::Call "User32::SendMessage(i $ListBox_SetConfig, i ${LB_GETTEXT}, i $1, t .r2)" - FileWriteUTF16LE $R0 $2 - FileWriteUTF16LE $R0 "$\r$\n" - ${Next} - FileClose $R0 - StrCpy $CHART_DIR_TMP_FILE 1 - ${Else} - StrCpy $CHART_DIR_EMPTY 1 - ${EndIf} - - done: - ${NSD_GetState} $CheckBox_Language_SetConfig $0 - ${If} $0 == ${BST_CHECKED} - StrCpy $CONFIG_SET_LANG 1 - ${Else} - StrCpy $CONFIG_SET_LANG 0 - ${EndIf} - FunctionEnd -*/ -;-------------------------------- -;# Page_Confirm - Var Install_Options - Var TEXT_INSTALL_OPTIONS - Function Page_Confirm - !insertmacro MUI_HEADER_TEXT $(Page_Confirm_Title) $(Page_Confirm_Subtitle) - ;# gather all installation settings and prepare (string) variable '$Install_Options' to display - ;# add the installation type to '$Install_Options' - StrCpy $Install_Options "$(Installation_Type):$\r$\n" - ${If} $Skip_Page_TypeInst != 1 - ${Switch} $INSTALL_TYPE - ${Case} 1 - StrCpy $Install_Options "$Install_Options$\t$(Type_Reinstall)" - ${Break} - ${Case} 2 - StrCpy $Install_Options "$Install_Options$\t$(Type_Upgrade)" - ${Break} - ${Case} 3 - StrCpy $Install_Options "$Install_Options$\t$(Type_Downgrade)" - ${Break} - ${Case} 4 - StrCpy $Install_Options "$Install_Options$\t$(Type_Parallel_Installation)" - ${Break} - ${Default} - ${Break} - ${EndSwitch} - ${Else} - StrCpy $Install_Options "$Install_Options$\t$(Type_Fresh_Installation)" - ${EndIf} - - ;# add the installation directory to '$Install_Options' - StrCpy $Install_Options "$Install_Options$\r$\n$\r$\n$(Installation_Directory):$\r$\n$\t$INSTDIR" - -/* - ;# add the delete config settings to '$Install_Options' - ${If} $CONFIG_EXISTS == 1 - ${AndIf} $CONFIG_EMPTY != 1 - StrCpy $Install_Options "$Install_Options$\r$\n$\r$\n$(Installation_Delete_Config):" - SectionGetFlags ${SecGrpResetConfig} $0 - SectionGetFlags ${SecGrpResetConfig} $1 - IntOp $0 $0 & ${SF_SELECTED} - IntOp $1 $1 & ${SF_PSELECTED} - StrCmp $0 0 +3 0 - StrCpy $Install_Options "$Install_Options$\r$\n$\t$(SecGrpResetConfig_Text)" - Goto cont - - StrCmp $1 0 none_selected 0 - SectionGetFlags ${SecDeleteConfigFile} $0 - IntOp $0 $0 & ${SF_SELECTED} - StrCmp $0 0 +2 0 - StrCpy $Install_Options "$Install_Options$\r$\n$\t$(SecDeleteConfigFile_Text)" - SectionGetFlags ${SecDeleteChartDB} $0 - IntOp $0 $0 & ${SF_SELECTED} - StrCmp $0 0 +2 0 - StrCpy $Install_Options "$Install_Options$\r$\n$\t$(SecDeleteChartDB_Text)" - SectionGetFlags ${SecDeleteSENC} $0 - IntOp $0 $0 & ${SF_SELECTED} - StrCmp $0 0 +2 0 - StrCpy $Install_Options "$Install_Options$\r$\n$\t$(SecDeleteSENC_Text)" - SectionGetFlags ${SecDeleteCM93} $0 - IntOp $0 $0 & ${SF_SELECTED} - StrCmp $0 0 +2 0 - StrCpy $Install_Options "$Install_Options$\r$\n$\t$(SecDeleteCM93_Text)" - SectionGetFlags ${SecDeleteNavobjFile} $0 - IntOp $0 $0 & ${SF_SELECTED} - StrCmp $0 0 +2 0 - StrCpy $Install_Options "$Install_Options$\r$\n$\t$(SecDeleteNavobjFile_Text)" - SectionGetFlags ${SecDeleteLogFile} $0 - IntOp $0 $0 & ${SF_SELECTED} - StrCmp $0 0 +2 0 - StrCpy $Install_Options "$Install_Options$\r$\n$\t$(SecDeleteLogFile_Text)" - Goto cont - - none_selected: - StrCpy $Install_Options "$Install_Options$\r$\n$\t$(text_none)" - - cont: - ${EndIf} -*/ - -/* - ;# add the shortcut settings to '$Install_Options' - StrCpy $Install_Options "$Install_Options$\r$\n$\r$\n$(Create_Shortcuts):" - SectionGetFlags ${SecShortcutStartmenu} $0 - IntOp $0 $0 & ${SF_SELECTED} - ${If} $0 != 0 - StrCpy $Install_Options "$Install_Options$\r$\n$\t$(Create_Shortcut_Start_Menu): $STARTMENU_FOLDER" - StrCpy $2 1 - ${Else} - StrCpy $2 0 - ${EndIf} - - SectionGetFlags ${SecShortcutDesktop} $0 - IntOp $0 $0 & ${SF_SELECTED} - ${If} $0 != 0 - StrCpy $Install_Options "$Install_Options$\r$\n$\t$(Create_Shortcut_Desktop): $DESKTOP" - ${Else} - StrCmp $2 0 0 +2 - StrCpy $Install_Options "$Install_Options$\r$\n$\t$(text_none)" - ${EndIf} -*/ - -/* - ;# add the pre-config settings to '$Install_Options' - ${IfNot} ${SectionIsReadOnly} ${SecSetConfig} - ${AndIf} ${SectionIsSelected} ${SecSetConfig} - StrCpy $Install_Options "$Install_Options$\r$\n$\r$\n$(SecSetConfig_Text):" - StrCmp $CONFIG_SET_LANG 1 0 +2 - StrCpy $Install_Options "$Install_Options$\r$\n$\t$(CB_Language_SetConfig_Text)" - StrCmp $CHART_DIR_TMP_FILE 1 0 end - IfFileExists "$TEMP\opencpn_chart_dirs.tmp" 0 end - StrCpy $Install_Options "$Install_Options$\r$\n$\t$(GB_ChartDir_SetConfig_Text)" - ClearErrors - FileOpen $0 "$TEMP\opencpn_chart_dirs.tmp" r - IfErrors end - ${Do} - FileReadUTF16LE $0 $1 - IfErrors done - ${TrimNewLines} $1 $1 - StrCmp $1 "" +2 - StrCpy $Install_Options "$Install_Options$\r$\n$\t - $1" - ${Loop} - done: - FileClose $0 - end: - ${EndIf} - ;# end '$Install_Options' -*/ - nsDialogs::Create /NOUNLOAD 1018 - Pop $0 - ${If} $0 == error - Abort - ${EndIf} - - nsDialogs::CreateControl EDIT "${__NSD_Text_STYLE}|${WS_VSCROLL}|${WS_HSCROLL}|${ES_MULTILINE}|${ES_WANTRETURN}|${ES_READONLY}" "${__NSD_Text_EXSTYLE}" 0 0 100% 100% "$Install_Options" - Pop $TEXT_INSTALL_OPTIONS - - nsDialogs::Show - FunctionEnd - -;# Page_Instfiles_Show - Function Page_Instfiles_Show - w7tbp::Start - FunctionEnd - -;-------------------------------- -;################################################################################################## -;# General Installer Functions # -;################################################################################################## -Function GetAllUsers - ReadRegStr $0 HKLM "System\CurrentControlSet\Control\ComputerName\ActiveComputerName" "ComputerName" - System::Call 'netapi32::NetUserEnum(w "\\$0",i 0,i 2,*i .R0,i ${NSIS_MAX_STRLEN}, *i .R1,*i .R2,*i .r1)i .r2' - StrCpy $R8 $R0 - IntOp $R2 $R2 - 1 - ${ForEach} $9 0 $R2 + 1 - System::Call "*$R0(w.R9)" - MessageBox MB_OK "[$R9]" - IntOp $R0 $R0 + 4 - ${Next} - System::Call 'netapi32.dll::NetApiBufferFree(i R8)i .R1' -FunctionEnd - - -Function Hide_SecGrpResetConfig - Push $0 - !insertmacro ClearSectionFlag ${SecDeleteConfigFile} ${SF_SELECTED} - SectionSetText ${SecDeleteConfigFile} "" - !insertmacro ClearSectionFlag ${SecDeleteChartDB} ${SF_SELECTED} - SectionSetText ${SecDeleteChartDB} "" - !insertmacro ClearSectionFlag ${SecDeleteSENC} ${SF_SELECTED} - SectionSetText ${SecDeleteSENC} "" - !insertmacro ClearSectionFlag ${SecDeleteCM93} ${SF_SELECTED} - SectionSetText ${SecDeleteCM93} "" - !insertmacro ClearSectionFlag ${SecDeleteNavobjFile} ${SF_SELECTED} - SectionSetText ${SecDeleteNavobjFile} "" - !insertmacro ClearSectionFlag ${SecDeleteLogFile} ${SF_SELECTED} - SectionSetText ${SecDeleteLogFile} "" - !insertmacro ClearSectionFlag ${SecGrpResetConfig} ${SF_SECGRP} - !insertmacro ClearSectionFlag ${SecGrpResetConfig} ${SF_SELECTED} - SectionSetFlags ${SecGrpResetConfig} 0 - SectionSetText ${SecGrpResetConfig} "" - IntOp $0 ${SecDeleteLogFile} + 1 - !insertmacro ClearSectionFlag $0 ${SF_SECGRPEND} - SectionSetText $0 "" - Pop $0 -FunctionEnd - - -Function Check_Config_Exists - ;# Look for config dir ("%APPDATA%\opencpn) and the several config files - SetShellVarContext all - - ${IfNot} ${FileExists} "$APPDATA\@CPACK_NSIS_PACKAGE_NAME_LC@\*.*" - ${If} ${FileExists} "$USERS_APPDATA\@CPACK_NSIS_PACKAGE_NAME_LC@\*.*" - CreateDirectory "$APPDATA\@CPACK_NSIS_PACKAGE_NAME_LC@" - Sleep 250 - AccessControlW::GrantOnFile "$APPDATA\@CPACK_NSIS_PACKAGE_NAME_LC@" "(BU)" "GenericRead + GenericExecute + GenericWrite + Delete + FullAccess" - CopyFiles /SILENT "$USERS_APPDATA\@CPACK_NSIS_PACKAGE_NAME_LC@\*.*" "$APPDATA\@CPACK_NSIS_PACKAGE_NAME_LC@" - ${ElseIf} ${FileExists} "$ADMIN_APPDATA\@CPACK_NSIS_PACKAGE_NAME_LC@\*.*" - CreateDirectory "$APPDATA\@CPACK_NSIS_PACKAGE_NAME_LC@" - Sleep 250 - AccessControlW::GrantOnFile "$APPDATA\@CPACK_NSIS_PACKAGE_NAME_LC@" "(BU)" "GenericRead + GenericExecute + GenericWrite + Delete + FullAccess" - CopyFiles /SILENT "$ADMIN_APPDATA\@CPACK_NSIS_PACKAGE_NAME_LC@\*.*" "$APPDATA\@CPACK_NSIS_PACKAGE_NAME_LC@" - ${EndIf} - - ${If} ${FileExists} "$APPDATA\@CPACK_NSIS_PACKAGE_NAME_LC@\opencpn.ini" - DeleteINISec "$APPDATA\@CPACK_NSIS_PACKAGE_NAME_LC@\opencpn.ini" Directories - ${EndIf} - ${EndIf} - - ${If} ${FileExists} "$APPDATA\@CPACK_NSIS_PACKAGE_NAME_LC@\*.*" - StrCpy $CONFIG_EXISTS 1 - SectionSetText ${SecGrpResetConfig} $(SecGrpResetConfig_Text) - ${EndIf} - StrCpy $Count_SecGrpResetConfig 0 - ${If} $CONFIG_EXISTS == 1 - ${If} ${FileExists} "$APPDATA\@CPACK_NSIS_PACKAGE_NAME_LC@\opencpn.ini" - StrCpy $INI_EXISTS 1 - IntOp $Count_SecGrpResetConfig $Count_SecGrpResetConfig + 1 - SectionSetText ${SecDeleteConfigFile} $(SecDeleteConfigFile_Text) - ${Else} - !insertmacro ClearSectionFlag ${SecDeleteConfigFile} ${SF_SELECTED} - SectionSetText ${SecDeleteConfigFile} "" - ${EndIf} - - ${If} ${FileExists} "$APPDATA\@CPACK_NSIS_PACKAGE_NAME_LC@\CHRTLIST.DAT" - StrCpy $CHARTDB_EXISTS 1 - IntOp $Count_SecGrpResetConfig $Count_SecGrpResetConfig + 1 - SectionSetText ${SecDeleteChartDB} $(SecDeleteChartDB_Text) - ${Else} - !insertmacro ClearSectionFlag ${SecDeleteChartDB} ${SF_SELECTED} - SectionSetText ${SecDeleteChartDB} "" - ${EndIf} - - ${If} ${FileExists} "$APPDATA\@CPACK_NSIS_PACKAGE_NAME_LC@\SENC\*.*" - StrCpy $SENC_EXISTS 1 - IntOp $Count_SecGrpResetConfig $Count_SecGrpResetConfig + 1 - SectionSetText ${SecDeleteSENC} $(SecDeleteSENC_Text) - ${Else} - !insertmacro ClearSectionFlag ${SecDeleteSENC} ${SF_SELECTED} - SectionSetText ${SecDeleteSENC} "" - ${EndIf} - - ${If} ${FileExists} "$APPDATA\@CPACK_NSIS_PACKAGE_NAME_LC@\cm93\*.*" - StrCpy $CM93_EXISTS 1 - IntOp $Count_SecGrpResetConfig $Count_SecGrpResetConfig + 1 - SectionSetText ${SecDeleteCM93} $(SecDeleteCM93_Text) - ${Else} - !insertmacro ClearSectionFlag ${SecDeleteCM93} ${SF_SELECTED} - SectionSetText ${SecDeleteCM93} "" - ${EndIf} - - ${If} ${FileExists} "$APPDATA\@CPACK_NSIS_PACKAGE_NAME_LC@\navobj.xml" - StrCpy $NAVOBJ_EXISTS 1 - IntOp $Count_SecGrpResetConfig $Count_SecGrpResetConfig + 1 - SectionSetText ${SecDeleteNavobjFile} $(SecDeleteNavobjFile_Text) - ${Else} - !insertmacro ClearSectionFlag ${SecDeleteNavobjFile} ${SF_SELECTED} - SectionSetText ${SecDeleteNavobjFile} "" - ${EndIf} - - ${If} ${FileExists} "$APPDATA\@CPACK_NSIS_PACKAGE_NAME_LC@\opencpn.log" - StrCpy $LOG_EXISTS 1 - IntOp $Count_SecGrpResetConfig $Count_SecGrpResetConfig + 1 - SectionSetText ${SecDeleteLogFile} $(SecDeleteLogFile_Text) - ${Else} - !insertmacro ClearSectionFlag ${SecDeleteLogFile} ${SF_SELECTED} - SectionSetText ${SecDeleteLogFile} "" - ${EndIf} - - ${If} $Count_SecGrpResetConfig == 0 - StrCpy $CONFIG_EMPTY 1 - ${EndIf} - - !insertmacro ClearSectionFlag ${SecSetConfig} ${SF_SELECTED} - IntOp $0 ${SF_RO} | ${SF_BOLD} - SectionSetFlags ${SecSetConfig} $0 - ;SectionSetFlags ${SecSetConfig} ${SF_RO} - StrCpy $SetConfig 0 - ${EndIf} -FunctionEnd - - -Function Reg_Scan_Old_Versions_HKLM - ;# Registry look-up - ;# Versions prior to 2.2.727 write RegKey "OpenCPN_is1" to "HKLM\Software\Microsoft\Windows\CurrentVersion\Uninstall" - ReadRegStr $0 HKLM Software\Microsoft\Windows\CurrentVersion\Uninstall\OpenCPN_is1 "DisplayName" - ${If} $0 != "" - ${StrFilter} "$0" "31" "." " " $1 - StrCpy $LM_VERSION "$1" - ReadRegStr $0 HKLM Software\Microsoft\Windows\CurrentVersion\Uninstall\OpenCPN_is1 "UninstallString" - ${StrFilter} "$0" "" "" "$\"" $2 - ${If} ${FileExists} "$2" - ReadRegStr $0 HKLM Software\Microsoft\Windows\CurrentVersion\Uninstall\OpenCPN_is1 "QuietUninstallString" - ${StrFilter} "$0" "" "" "$\"" $3 - StrCpy $LM_VERSION_UNINST $3 - ReadRegStr $4 HKLM Software\Microsoft\Windows\CurrentVersion\Uninstall\OpenCPN_is1 "InstallLocation" - ${TrimNewLines} $4 $4 - ${If} ${FileExists} "$4opencpn.exe" - ${AndIf} ${FileExists} "$4unins*.exe" - ;# check if last character of $4 is a "\" and if so remove it - ${RIndexOf} $6 "$4" "\" - ${If} $6 == 1 - ${WordReplace} "$4" "\" "" "-1" $4 - ${EndIf} - - StrCpy $LM_VERSION_INST $4 - IntOp $OLD_INSTALLS $OLD_INSTALLS + 1 - ;StrCpy $VERSION_NEWER 1 - ${Else} - DeleteRegKey HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\OpenCPN_is1" - StrCpy $LM_VERSION "" - StrCpy $LM_VERSION_UNINST "" - ${EndIf} - ${EndIf} - ${EndIf} -FunctionEnd - - -Function EnumProfileList - ${EnumHKU} Callback_EnumProfileList opencpn-inst-tmp-sid -FunctionEnd - - -Function Callback_EnumProfileList - ;# Get the SID or tmpkey from the stack - Pop $SID - ClearErrors - ${If} ${FileExists} "$TEMP\opencpn_users_sid.tmp" - FileOpen $R0 "$TEMP\opencpn_users_sid.tmp" a - FileSeek $R0 0 END - ${Else} - FileOpen $R0 "$TEMP\opencpn_users_sid.tmp" w - ${EndIf} - - IfErrors done - FileWriteUTF16LE $R0 "$SID" - FileWriteUTF16LE $R0 "$\r$\n" - FileWriteUTF16LE $R0 "$USERPROFILE" - FileWriteUTF16LE $R0 "$\r$\n" - FileClose $R0 - done: -FunctionEnd - - -Function Get_Users_Values - Var /GLOBAL tmp_file_handle - StrCpy $SID "" - ClearErrors - ${If} ${FileExists} "$TEMP\opencpn_users_sid.tmp" - FileOpen $tmp_file_handle "$TEMP\opencpn_users_sid.tmp" r - IfErrors end - ${Do} - FileReadUTF16LE $tmp_file_handle $SID - FileReadUTF16LE $tmp_file_handle $USERPROFILE - StrCmp $SID "" done - ${TrimNewLines} $SID $SID - ${TrimNewLines} $USERPROFILE $USERPROFILE - ;# List of functions to call - Call Users_Appdata_Paths - Call Users_StartMenu_Paths - Call Users_Desktop_Paths - Call Users_Personal_Paths - Call Reg_Scan_Old_Versions_HKCU - ${Loop} - done: - FileClose $tmp_file_handle - StrCpy $SID "" - StrCpy $USERPROFILE "" - ${EndIf} - end: -FunctionEnd - - -Function Users_Appdata_Paths - ReadRegStr $1 HKU "$SID\Software\Microsoft\Windows\CurrentVersion\Explorer\User Shell Folders" AppData - ${WordReplace} "$1" "%USERPROFILE%" "$USERPROFILE" "+" $2 - ExpandEnvStrings $2 $2 - StrCmp $2 "" done - - StrCpy $5 "none" - ;# check if an OpenCPN config folder exists in the given path - ${If} ${FileExists} "$2\@CPACK_NSIS_PACKAGE_NAME_LC@\opencpn.ini" - ReadINIStr $3 "$2\@CPACK_NSIS_PACKAGE_NAME_LC@\opencpn.ini" Directories S57DataLocation - ${WordReplace} "$3" "\\" "\" "+" $4 - ${WordFind} "$4" "\" "-2{*" $5 - StrCmp $5 "" 0 +2 - StrCpy $5 "none" - ${EndIf} - - ClearErrors - ${If} ${FileExists} "$TEMP\opencpn_appdata.tmp" - FileOpen $R0 "$TEMP\opencpn_appdata.tmp" a - FileSeek $R0 0 END - ${Else} - FileOpen $R0 "$TEMP\opencpn_appdata.tmp" w - ${EndIf} - IfErrors done - FileWriteUTF16LE $R0 "$SID" - FileWriteUTF16LE $R0 "$\r$\n" - FileWriteUTF16LE $R0 "$2" - FileWriteUTF16LE $R0 "$\r$\n" - FileWriteUTF16LE $R0 "$5" - FileWriteUTF16LE $R0 "$\r$\n" - FileClose $R0 - done: -FunctionEnd - - -Function Users_Personal_Paths - ReadRegStr $1 HKU "$SID\Software\Microsoft\Windows\CurrentVersion\Explorer\User Shell Folders" Personal - ${WordReplace} "$1" "%USERPROFILE%" "$USERPROFILE" "+" $2 - ExpandEnvStrings $2 $2 - - ClearErrors - ${If} ${FileExists} "$TEMP\opencpn_personal.tmp" - FileOpen $R0 "$TEMP\opencpn_personal.tmp" a - IfErrors done - FileSeek $R0 0 END - ${Else} - FileOpen $R0 "$TEMP\opencpn_personal.tmp" w - IfErrors done - ${EndIf} - - FileWriteUTF16LE $R0 "$SID" - FileWriteUTF16LE $R0 "$\r$\n" - FileWriteUTF16LE $R0 "$2" - FileWriteUTF16LE $R0 "$\r$\n" - FileClose $R0 - done: -FunctionEnd - - -Function Users_StartMenu_Paths - ReadRegStr $1 HKU "$SID\Software\Microsoft\Windows\CurrentVersion\Explorer\User Shell Folders" "Start Menu" - ${WordReplace} "$1" "%USERPROFILE%" "$USERPROFILE" "+" $2 - ExpandEnvStrings $2 $2 - - ClearErrors - ${If} ${FileExists} "$TEMP\opencpn_startmenu.tmp" - FileOpen $R0 "$TEMP\opencpn_startmenu.tmp" a - FileSeek $R0 0 END - ${Else} - FileOpen $R0 "$TEMP\opencpn_startmenu.tmp" w - ${EndIf} - IfErrors done - FileWriteUTF16LE $R0 "$SID" - FileWriteUTF16LE $R0 "$\r$\n" - FileWriteUTF16LE $R0 "$2" - FileWriteUTF16LE $R0 "$\r$\n" - FileClose $R0 - done: -FunctionEnd - - -Function Users_Desktop_Paths - ReadRegStr $1 HKU "$SID\Software\Microsoft\Windows\CurrentVersion\Explorer\User Shell Folders" Desktop - ${WordReplace} "$1" "%USERPROFILE%" "$USERPROFILE" "+" $2 - ExpandEnvStrings $2 $2 - - ClearErrors - ${If} ${FileExists} "$TEMP\opencpn_desktop.tmp" - FileOpen $R0 "$TEMP\opencpn_desktop.tmp" a - FileSeek $R0 0 END - ${Else} - FileOpen $R0 "$TEMP\opencpn_desktop.tmp" w - ${EndIf} - IfErrors done - FileWriteUTF16LE $R0 "$SID" - FileWriteUTF16LE $R0 "$\r$\n" - FileWriteUTF16LE $R0 "$2" - FileWriteUTF16LE $R0 "$\r$\n" - FileClose $R0 - done: -FunctionEnd - - -;Var latest_version -;Var latest_pathexe -Function Reg_Scan_Old_Versions_HKCU - ;# Versions from 2.2.727 up to 2.2.xxxx write RegKey "OpenCPN" to "HKCU\Software\Microsoft\Windows\CurrentVersion\Uninstall\" - ;# and also RegKey "OpenCPN " to "HKCU\Software\opencpn.org\" - ;# Find latest installed version => it's the one found in "HKCU\Software\Microsoft\Windows\CurrentVersion\Uninstall\OpenCPN" - - ReadRegStr $0 HKU "$SID\Software\Microsoft\Windows\CurrentVersion\Uninstall\OpenCPN" "DisplayVersion" - ${If} $0 != "" - StrCpy $latest_version $0 - ReadRegStr $0 HKU "$SID\Software\Microsoft\Windows\CurrentVersion\Uninstall\OpenCPN" "DisplayIcon" - StrCpy $latest_pathexe $0 - ReadRegStr $0 HKU "$SID\Software\Microsoft\Windows\CurrentVersion\Uninstall\OpenCPN" "UninstallString" - ;StrCpy $CU_VERSION_UNINST $0 - ${WordFind} "$0" "\" "-2{*" $1 - ${If} ${FileExists} "$1\opencpn.exe" - ${AndIf} ${FileExists} "$1\unins*.exe" - ClearErrors - ${If} ${FileExists} "$TEMP\opencpn_old_uninstall_regkeys.tmp" - FileOpen $R0 "$TEMP\opencpn_old_uninstall_regkeys.tmp" a - FileSeek $R0 0 END - ${Else} - FileOpen $R0 "$TEMP\opencpn_old_uninstall_regkeys.tmp" w - ${EndIf} - - IfErrors done - FileWriteUTF16LE $R0 "$SID$\r$\n" - FileWriteUTF16LE $R0 "$SID\Software\Microsoft\Windows\CurrentVersion\Uninstall\OpenCPN$\r$\n" - FileWriteUTF16LE $R0 "$1$\r$\n" - FileClose $R0 - ${Else} - DeleteRegKey HKU "$SID\Software\Microsoft\Windows\CurrentVersion\Uninstall\OpenCPN" - ${EndIf} - ${EndIf} - - done: - ClearErrors - ${Do} - Pop $0 - IfErrors empty - ${Loop} - empty: - StrCpy $0 0 - StrCpy $1 "" - ${Do} - EnumRegKey $1 HKU "$SID\Software\opencpn.org" $0 - StrCmp $1 "" done1 - IntOp $0 $0 + 1 - Push $1 - ${Loop} - done1: - ${If} $0 > 0 - ClearErrors - ${If} ${FileExists} "$TEMP\opencpn_old_installs.tmp" - FileOpen $R0 "$TEMP\opencpn_old_installs.tmp" a - FileSeek $R0 0 END - ${Else} - FileOpen $R0 "$TEMP\opencpn_old_installs.tmp" w - ${EndIf} - IfErrors done2 - ${Do} - Pop $R1 - IfErrors finished - ${StrFilter} "$R1" "31" "." " " $R2 ;# R2 = version - ;StrCpy $CU_VERSION $R2 - ReadRegStr $R3 HKU "$SID\Software\opencpn.org\$R1" "" ;# R3 = install path - ReadRegStr $R4 HKU "$SID\Software\opencpn.org\$R1" "Start Menu Folder" ;# R4 = Start Menu Folder - ReadRegStr $R5 HKU "$SID\Software\Microsoft\Windows\CurrentVersion\Explorer\User Shell Folders" "Start Menu" ;# R5 = Start Menu Path - ${WordReplace} "$R5" "%USERPROFILE%" "$USERPROFILE" "+" $R5 - ExpandEnvStrings $R5 $R5 - ;StrCpy $CU_VERSION_INST "$R3\" - ${If} "$R3\opencpn.exe" == $latest_pathexe - ${AndIf} $R2 != $latest_version - DeleteRegKey HKU "$SID\Software\opencpn.org\$R1" - ${ElseIf} ${FileExists} "$R3\opencpn.exe" - ${AndIf} ${FileExists} "$R3\unins*.exe" - FileWriteUTF16LE $R0 "$SID\Software\opencpn.org\$R1" - FileWriteUTF16LE $R0 "$\r$\n" - FileWriteUTF16LE $R0 "$R5\$R4" - FileWriteUTF16LE $R0 "$\r$\n" - FileWriteUTF16LE $R0 "$R3" - FileWriteUTF16LE $R0 "$\r$\n" - IntOp $OLD_INSTALLS $OLD_INSTALLS + 1 - ;StrCpy $VERSION_NEWER 1 - ${Else} - DeleteRegKey HKU "$SID\Software\opencpn.org\$R1" - DeleteRegKey /ifempty HKU "$SID\Software\opencpn.org" - ${EndIf} - ${Loop} - finished: - FileClose $R0 - ${Else} - DeleteRegKey HKU "$SID\Software\opencpn.org" - ${EndIf} - - done2: - StrCpy $latest_version "" - StrCpy $latest_pathexe "" -FunctionEnd - - -Function Quick_Scan_Old_Versions - ;# Scan the given Drive for file "opencpn.exe" - ${If} ${FileExists} "$TEMP\opencpn_personal.tmp" - ClearErrors - FileOpen $R0 "$TEMP\opencpn_personal.tmp" r - IfErrors end - ${Do} - FileReadUTF16LE $R0 $R1 - FileReadUTF16LE $R0 $R2 - IfErrors done - StrCmp $R2 "" done - ${TrimNewLines} $R2 $R2 - ${Locate} "$R2" "/L=F /M=opencpn.exe" "Found_OpenCPN_Installation" - ${Loop} - done: - FileClose $R0 - ${EndIf} - - end: - ${Locate} "$PROGRAMFILES" "/L=F /M=opencpn.exe" "Found_OpenCPN_Installation" -FunctionEnd - - -Function Found_OpenCPN_Installation - Push $R0 - Push $R1 - ${If} ${FileExists} "$R8\unins*.exe" - ${If} ${FileExists} "$TEMP\opencpn_prev_installs.tmp" - ClearErrors - FileOpen $R1 "$TEMP\opencpn_prev_installs.tmp" r - IfErrors cont - ${Do} - FileReadUTF16LE $R1 $R2 - FileReadUTF16LE $R1 $R3 - StrCmp $R2 "" done - ${TrimNewLines} $R2 $R2 - ${TrimNewLines} $R3 $R3 - StrCmp $R3 $R8 found - ${LoopUntil} $R2 == "" - done: - FileClose $R1 - Goto cont - - found: - FileClose $R1 - Goto end - ${EndIf} - - cont: - IntOp $counter_tmp $counter_tmp + 1 - ClearErrors - ${IfNot} ${FileExists} "$TEMP\opencpn_hdd_quick_scan.tmp" - FileOpen $R0 "$TEMP\opencpn_hdd_quick_scan.tmp" w - IfErrors end - ${Else} - FileOpen $R0 "$TEMP\opencpn_hdd_quick_scan.tmp" a - IfErrors end - FileSeek $R0 0 END - ${EndIf} - - FileWriteUTF16LE $R0 "$R8" - FileWriteUTF16LE $R0 "$\r$\n" - FileClose $R0 - ${EndIf} - - end: - Pop $R1 - Pop $R0 - Push $0 -FunctionEnd - - -;Var counter_tmp -Function Full_Scan_Old_Versions - ;# Get all HDD Drive Letters on the system - StrCpy $counter_tmp 0 - ${GetDrives} "HDD" "Scan_Drive" -FunctionEnd - - -Function Scan_Drive - ;# Scan the given Drive for file "opencpn.exe" - /*;#DEBUG - scan only crtain drives - ${IfNot} $9 == "D:\" - ;${AndIfNot} $9 == "F:\" - Goto end - ${EndIf} - ;#DEBUG End */ - StrCpy $3 "$(Banner_Scan_Drive)" - GetDlgItem $2 $Banner_Handle 76 - SendMessage $2 ${WM_SETTEXT} 0 "STR:$3" - ${Locate} "$9" "/L=F /M=opencpn.exe" "Found_OCPN_Exe" - end: - Push $0 -FunctionEnd - - -Function Found_OCPN_Exe - Push $1 - ClearErrors - StrCpy $1 0 - StrCpy $2 0 - ${WordFind} "$R8" "\RECYCLER\" "E*" $1 - ${WordFind} "$R8" "\$$Recycle.Bin" "E*" $2 - IfErrors 0 cont1 - ${If} $1 == 1 - ${AndIf} $2 == 1 - Goto cont2 - ${EndIf} - - cont1: - ${If} $1 > 0 - ${OrIf} $2 > 0 - Goto end - ${EndIf} - - cont2: - ${If} ${FileExists} "$R8\unins*.exe" - ${If} ${FileExists} "$TEMP\opencpn_prev_installs.tmp" - ClearErrors - FileOpen $R1 "$TEMP\opencpn_prev_installs.tmp" r - IfErrors cont3 - ${Do} - FileReadUTF16LE $R1 $R2 - FileReadUTF16LE $R1 $R3 - StrCmp $R2 "" done - ${TrimNewLines} $R2 $R2 - ${TrimNewLines} $R3 $R3 - StrCmp $R3 $R8 found - ${LoopUntil} $R2 == "" - done: - FileClose $R1 - Goto cont3 - - found: - FileClose $R1 - Goto end - ${EndIf} - - cont3: - IntOp $counter_tmp $counter_tmp + 1 - GetDlgItem $2 $Banner_Handle 1030 - StrCmp $counter_tmp 1 0 +3 - StrCpy $R4 "$(Banner_Installation_Found_Singular)" - Goto +2 - StrCpy $R4 "$(Banner_Installation_Found_Plural)" - SendMessage $2 ${WM_SETTEXT} 0 "STR:$R4" - SendMessage $ListBox_CleanUp ${LB_ADDSTRING} 0 "STR:$R8" - ClearErrors - ${IfNot} ${FileExists} "$TEMP\opencpn_hdd_full_scan.tmp" - FileOpen $R0 "$TEMP\opencpn_hdd_full_scan.tmp" w - IfErrors end - ${Else} - FileOpen $R0 "$TEMP\opencpn_hdd_full_scan.tmp" a - IfErrors end - FileSeek $R0 0 END - ${EndIf} - - FileWriteUTF16LE $R0 "$R8" - FileWriteUTF16LE $R0 "$\r$\n" - FileClose $R0 - end: - ${EndIf} - Pop $1 - Push $0 -FunctionEnd - - -Function Delete_Installation_Dir - StrCmp $Uninstall_Path_Tmp "" end - ;# Check subdirs and remove them recursive ... - ${If} ${FileExists} "$Uninstall_Path_Tmp\doc\*.*" - RMDir /r "$Uninstall_Path_Tmp\doc" - ${EndIf} - - ${If} ${FileExists} "$Uninstall_Path_Tmp\lang\*.*" - RMDir /r "$Uninstall_Path_Tmp\lang" - ${EndIf} - - ${If} ${FileExists} "$Uninstall_Path_Tmp\Microsoft.VC80.CRT\*.*" - RMDir /r "$Uninstall_Path_Tmp\Microsoft.VC80.CRT" - ${EndIf} - - ${If} ${FileExists} "$Uninstall_Path_Tmp\s57data\*.*" - RMDir /r "$Uninstall_Path_Tmp\s57data" - ${EndIf} - - ${If} ${FileExists} "$Uninstall_Path_Tmp\sounds\*.*" - RMDir /r "$Uninstall_Path_Tmp\sounds" - ${EndIf} - - ${If} ${FileExists} "$Uninstall_Path_Tmp\TCDATA\*.*" - RMDir /r "$Uninstall_Path_Tmp\TCDATA" - ${EndIf} - - ${If} ${FileExists} "$Uninstall_Path_Tmp\gshhs\*.*" - RMDir /r "$Uninstall_Path_Tmp\gshhs" - ${EndIf} - - ${If} ${FileExists} "$Uninstall_Path_Tmp\plugins\*.*" - RMDir /r "$Uninstall_Path_Tmp\plugins" - ${EndIf} - - ${If} ${FileExists} "$Uninstall_Path_Tmp\share\*.*" - RMDir /r "$Uninstall_Path_Tmp\share" - ${EndIf} - - ;# Check files and delete them ... - ${If} ${FileExists} "$Uninstall_Path_Tmp\opencpn.exe" - Delete "$Uninstall_Path_Tmp\opencpn.exe" - ${EndIf} - - ${If} ${FileExists} "$Uninstall_Path_Tmp\license.txt" - Delete "$Uninstall_Path_Tmp\license.txt" - ${EndIf} - - ${If} ${FileExists} "$Uninstall_Path_Tmp\unins000.dat" - Delete "$Uninstall_Path_Tmp\unins000.dat" - ${EndIf} - - ${If} ${FileExists} "$Uninstall_Path_Tmp\unins000.exe" - Delete "$Uninstall_Path_Tmp\unins000.exe" - ${EndIf} - - ${If} ${FileExists} "$Uninstall_Path_Tmp\install.log" - Delete "$Uninstall_Path_Tmp\install.log" - ${EndIf} - - ${If} ${FileExists} "$Uninstall_Path_Tmp\install.log" - Delete "$Uninstall_Path_Tmp\install.log" - ${EndIf} - - Push $0 - Push $1 - Push $2 - Push $R9 - Push $R8 - Push $R7 - Push $R6 - ;# Find the Uninstall file - ${Locate} "$Uninstall_Path_Tmp" "/L=F /M=Uninstall*.exe /G=0" "Delete_Located_File_Single" - ;# Find the wx.. DLLs - ${Locate} "$Uninstall_Path_Tmp" "/L=F /M=wx*.dll /G=0" "Delete_Located_File_Multi" - ;# Dummy call of Locate as it does not properly close its handle and so the dir cannot be deleted though it might be empty - ${Locate} "C:\" "/L=DE /M=*.* /G=0" "Dummy_Function" - - ;# Remove the installation dir ($Uninstall_Path_Tmp) if empty - RMDir "$Uninstall_Path_Tmp" - ${If} ${FileExists} "$Uninstall_Path_Tmp\*.*" - Sleep 250 - RMDir "$Uninstall_Path_Tmp" - ${EndIf} - - Pop $R6 - Pop $R7 - Pop $R8 - Pop $R9 - Pop $2 - Pop $1 - Pop $0 - end: -FunctionEnd - ;# Helper-Functions for Delete_Installation_Dir - Function Delete_Located_File_Single - Delete "$R9" - StrCpy $0 StopLocate - Push $0 - FunctionEnd - - Function Delete_Located_File_Multi - Delete "$R9" - Push $0 - FunctionEnd - - Function Dummy_Function - StrCpy $0 StopLocate - Push $0 - FunctionEnd - ;# End Helper-Functions - - -Function ExecAppFile - !insertmacro UAC_AsUser_ExecShell 'open' '$INSTDIR\opencpn.exe' '' '$INSTDIR' '' - loop: - System::Call user32::GetForegroundWindow()i.r0 - Sleep 200 - IntCmpU $0 $hwndparent loop -FunctionEnd - - -Function DU2Pix - Pop $4 - Pop $3 - Pop $2 - Pop $1 - IntOp $1 $1 * $BU_X - IntOp $1 $1 / 4 - IntOp $2 $2 * $BU_Y - IntOp $2 $2 / 8 - IntOp $3 $3 * $BU_X - IntOp $3 $3 / 4 - IntOp $4 $4 * $BU_Y - IntOp $4 $4 / 8 -FunctionEnd - - -;!define LVM_GETITEMCOUNT 0x1004 ;# ANSI -;!define LVM_GETITEMTEXT 0x102D ;# ANSI -!define LVM_GETITEMCOUNT 0x1004 -!define LVM_GETITEMTEXT 0x1073 - -Function DumpLog - Exch $5 - Push $0 - Push $1 - Push $2 - Push $3 - Push $4 - Push $6 - - FindWindow $0 "#32770" "" $HWNDPARENT - GetDlgItem $0 $0 1016 - StrCmp $0 0 error - FileOpen $5 $5 "w" - FileWriteWord $5 0xfeff ; Write the BOM - StrCmp $5 0 error - SendMessage $0 ${LVM_GETITEMCOUNT} 0 0 $6 - System::StrAlloc ${NSIS_MAX_STRLEN} - Pop $3 - StrCpy $2 0 - System::Call "*(i, i, i, i, i, i, i, i, i) i \ - (0, 0, 0, 0, 0, r3, ${NSIS_MAX_STRLEN}) .r1" - loop: StrCmp $2 $6 done - System::Call "User32::SendMessageW(i, i, i, i) i \ - ($0, ${LVM_GETITEMTEXT}, $2, r1)" - System::Call "*$3(&t${NSIS_MAX_STRLEN} .r4)" - FileWriteUTF16LE $5 "$4$\r$\n" - IntOp $2 $2 + 1 - Goto loop - done: - FileClose $5 - System::Free $1 - System::Free $3 - Goto exit - error: - MessageBox MB_OK error - exit: - Pop $6 - Pop $4 - Pop $3 - Pop $2 - Pop $1 - Pop $0 - Exch $5 -FunctionEnd - - -Function Write_Reg_ChartDirs - ClearErrors - FileOpen $R0 "$TEMP\opencpn_chart_dirs.tmp" r - IfErrors end - loop: - FileReadUTF16LE $R0 $R1 - IfErrors done - ${TrimNewLines} $R1 $R1 - ${If} $REG_CHARTDIRS == "" - StrCpy $REG_CHARTDIRS "$R1" - ${Else} - StrCpy $REG_CHARTDIRS "$REG_CHARTDIRS;$R1" - ${EndIf} - Goto loop - done: - FileClose $R0 - WriteRegStr HKLM "Software\OpenCPN" "ChartDirs" $REG_CHARTDIRS - end: -FunctionEnd - - -Function IndexOf - Exch $R0 - Exch - Exch $R1 - Push $R2 - Push $R3 - - StrCpy $R3 $R0 - StrCpy $R0 -1 - IntOp $R0 $R0 + 1 - StrCpy $R2 $R3 1 $R0 - StrCmp $R2 "" +2 - StrCmp $R2 $R1 +2 -3 - - StrCpy $R0 -1 - - Pop $R3 - Pop $R2 - Pop $R1 - Exch $R0 -FunctionEnd - - -Function RIndexOf - Exch $R0 - Exch - Exch $R1 - Push $R2 - Push $R3 - - StrCpy $R3 $R0 - StrCpy $R0 0 - IntOp $R0 $R0 + 1 - StrCpy $R2 $R3 1 -$R0 - StrCmp $R2 "" +2 - StrCmp $R2 $R1 +2 -3 - - StrCpy $R0 -1 - - Pop $R3 - Pop $R2 - Pop $R1 - Exch $R0 -FunctionEnd - -;################################################################################################## -;# Uninstaller Functions # -;################################################################################################## -;# un.onInit Function -Function un.onInit - ;Prevent multiple instances of the uninstaller - ${IfNot} ${UAC_IsInnerInstance} - System::Call 'kernel32::CreateMutexW(i 0, i 0, t "ocpn_uninst_@CPACK_PACKAGE_VERSION@") i .r1 ?e' - Pop $R0 - StrCmp $R0 0 +3 - MessageBox MB_OK|MB_ICONEXCLAMATION "$(Uninstaller_Running)" - Abort - ${EndIf} - - Call un.GetUserInfo - StrCpy $USERS_NAME $USERNAME - - ;# Macros to be inserted - ${If} $IS_ADMIN == 1 - !insertmacro MUI_UNGETLANGUAGE - ${EndIf} - - StrCpy $USERS_APPDATA $APPDATA - - ;# UAC check if user has Admin privileges and prompt for elevation if not - uac_tryagain: - !insertmacro UAC_RunElevated - StrCpy $Inst_Or_Uninst "$(Uninstaller)" - ${Switch} $0 - ${Case} 0 - ${IfThen} $1 = 1 ${|} Quit ${|} ;# we are the outer process, the inner process has done its work, we are done - ${IfThen} $3 <> 0 ${|} ${Break} ${|} ;# we are admin, let the show go on - ${If} $1 = 3 ;# RunAs completed successfully, but with a non-admin user - MessageBox mb_IconExclamation|mb_TopMost|mb_SetForeground "$(Msg_UAC_Admin_Retry)" /SD IDNO IDOK uac_tryagain IDNO 0 - ${EndIf} - ;# fall-through and die - ${Case} 1223 - MessageBox mb_IconStop|mb_TopMost|mb_SetForeground "$(Msg_UAC_Admin_Abort)" - Quit - ${Case} 1062 - MessageBox mb_IconStop|mb_TopMost|mb_SetForeground "$(Msg_UAC_Logon_Abort)" - Quit - ${Default} - MessageBox mb_IconStop|mb_TopMost|mb_SetForeground "$(Msg_UAC_No_Elevation)" - Quit - ${EndSwitch} - -########## from here we can be sure to run with admin privileges ########## - - SectionSetText ${UnSecDeleteConfigFolder} $(UnSecDeleteConfigFolder_Text) - - ClearErrors - Var /GLOBAL UN_INST_PARAMS - Var /GLOBAL UN_INST_HELP - Var /GLOBAL UN_INST_TYPE - StrCpy $UN_INST_TYPE "" - ${GetParameters} $UN_INST_PARAMS - StrCmp $UN_INST_PARAMS "" no_params - - ${GetOptions} "$UN_INST_PARAMS" "/?" $UN_INST_HELP - IfErrors +3 - StrCpy $UN_INST_HELP "help" - Goto end - - ClearErrors - ${GetOptions} "$UN_INST_PARAMS" "/type" $UN_INST_TYPE - IfErrors no_type_param - ${Switch} $UN_INST_TYPE - ${Case} "=1" ;# 1 = Program Files only (Remove/ Delete: Program Files) - StrCpy $UN_INST_TYPE 1 - !insertmacro ClearSectionFlag ${UnSecDeleteConfigFolder} ${SF_SELECTED} - !insertmacro ClearSectionFlag ${UnSecDeleteConfigRegKey} ${SF_SELECTED} - ${Break} - ${Case} "=2" ;# 2 = Preserve Config folder (Remove/ Delete: Program Files + RegKey) - StrCpy $UN_INST_TYPE 2 - !insertmacro ClearSectionFlag ${UnSecDeleteConfigFolder} ${SF_SELECTED} - ${Break} - ${Case} "=3" ;# 3 = Preserve RegKey (Remove/ Delete: Program Files + Config folder) - StrCpy $UN_INST_TYPE 3 - !insertmacro ClearSectionFlag ${UnSecDeleteConfigRegKey} ${SF_SELECTED} - SectionSetFlags ${UnSecBackupConfigToRegKey} ${SF_SELECTED} - ${Break} - ${Case} "=4" ;# 4 = Delete Config folder (Remove/ Delete: Config folder) - StrCpy $UN_INST_TYPE 4 - !insertmacro ClearSectionFlag ${UnSecUninstall} ${SF_SELECTED} - !insertmacro ClearSectionFlag ${UnSecDeleteConfigRegKey} ${SF_SELECTED} - SectionSetFlags ${UnSecBackupConfigToRegKey} ${SF_SELECTED} - ${Break} - ${Case} "=5" ;# 5 = Delete RegKey (Remove/ Delete: RegKey) - StrCpy $UN_INST_TYPE 5 - !insertmacro ClearSectionFlag ${UnSecUninstall} ${SF_SELECTED} - !insertmacro ClearSectionFlag ${UnSecDeleteConfigFolder} ${SF_SELECTED} - ${Break} - ${Default} - StrCpy $9 $UN_INST_TYPE - StrCpy $UN_INST_TYPE "error_type" ;# unknown value given for the type parameter => MsgBox => Quit - ${Break} - ${EndSwitch} - - StrCmp $UN_INST_TYPE "error_type" 0 cont - MessageBox MB_OK|MB_ICONEXCLAMATION "$(Msg_Unknown_Type_Param)" - Quit - - no_type_param: - ;# If no parameter 'type' is given assume full uninstall - StrCpy $UN_INST_TYPE 0 ;# 0 = Full Uninstall (Remove/ Delete: Program Files + Config folder + RegKey) - Goto cont - - no_params: - ;# If no parameters are given assume full uninstall - StrCpy $UN_INST_TYPE 0 ;# 0 = Full Uninstall (Remove/ Delete: Program Files + Config folder + RegKey) - - cont: - ;# Delete all temporary files created during the installation - Delete "$TEMP\opencpn_*.tmp" - - Call un.VersionDate - - Call un.Check_Prev_Installs - - ;# If there are other installations of OCPN do not remove the config folder! - ${If} $UN_INST_TYPE == 0 - ${AndIf} $VERSION_EXISTS == 1 - ${AndIf} $MULTIPLE_INSTALLS > 1 - StrCpy $Skip_UnPage_Components 1 - !insertmacro ClearSectionFlag ${UnSecDeleteConfigFolder} ${SF_SELECTED} - ${EndIf} - - ReadRegStr $0 HKLM "${REG_KEY_UN}" "CompareVersion" - - end: -FunctionEnd - - -Function un.myGuiInit - ${If} $UN_INST_HELP == "help" - MessageBox MB_OK|MB_ICONINFORMATION "$(Msg_Uninstaller_Param_Help)" - Quit - ${EndIf} -FunctionEnd - -;-------------------------------- -;################################################################################################## -;# Uninstaller Page Functions # -;################################################################################################## -/* - ;# UnPage_Components_Pre - Function un.Page_Components_Pre - ${If} $Skip_UnPage_Components == 1 - Abort - ${EndIf} - FunctionEnd -*/ -;-------------------------------- -;################################################################################################## -;# General Uninstaller Functions # -;################################################################################################## - - - -;-------------------------------- -;################################################################################################## -;# Shared Functions # -;################################################################################################## -!macro GetUserInfo_Macro un - Function ${un}GetUserInfo - ClearErrors - UserInfo::GetName - ${If} ${Errors} - StrCpy $IS_ADMIN 1 - Return - ${EndIf} - Pop $USERNAME - - UserInfo::GetAccountType - Pop $R0 - StrCpy $UAT $R0 - ${If} ${IsNT} - ${AndIf} ${IsWinNT4} - ${If} $R0 == "Admin" - StrCpy $IS_ADMIN 1 - ${Else} - StrCpy $IS_ADMIN 0 - ${EndIf} - Goto end - ${EndIf} - - ${Switch} $R0 - ${Case} "Admin" - ${Case} "Power" - StrCpy $IS_ADMIN 1 - ${Break} - ${Default} - StrCpy $IS_ADMIN 0 - ${Break} - ${EndSwitch} - - UserInfo::GetOriginalAccountType - Pop $OUAT - - end: - FunctionEnd -!macroend -!insertmacro GetUserInfo_Macro "" -!insertmacro GetUserInfo_Macro "un." - - -!macro Check_Prev_Installs_Macro un - Function ${un}Check_Prev_Installs - StrCpy $R0 0 - StrCpy $R1 "" - StrCpy $R5 0 - StrCpy $VERSION_EXISTS 0 - SetShellVarContext all - ${Do} - EnumRegKey $R1 SHCTX "${REG_ROOT_KEY_UN}" $R0 - ${If} $R1 != "" - StrLen $R2 $R1 - ${WordFind} "$R1" " " "+1" $R3 - IntOp $R0 $R0 + 1 - ${If} $R3 == "s63_pi" - ${AndIf} $R2 > 7 - ReadRegStr $R4 SHCTX "${REG_ROOT_KEY_UN}\$R1" "CompareVersion" - ReadRegStr $R6 SHCTX "${REG_ROOT_KEY_UN}\$R1" "InstallLocation" - ${If} $R4 != "" - ${VersionCompare} $VERSION_DATE $R4 $Compare_Version_Result - ${Switch} $Compare_Version_Result - ${Case} 0 ;equal - StrCpy $VERSION_EXISTS 1 - ${Break} - ${Case} 1 ;version to install is newer - StrCpy $VERSION_NEWER 1 - ${Break} - ${Case} 2 ;version to install is older - StrCpy $VERSION_OLDER 1 - ${Break} - ${Default} - ${Break} - ${EndSwitch} - IntOp $R5 $R5 + 1 - StrCpy $Prev_Install_RegKey "${REG_ROOT_KEY_UN}\$R1" - ${EndIf} - StrCmp ${un} "" 0 uninst ;# only execute when it is the Installer function - ${If} $R6 != "" - ClearErrors - ${If} ${FileExists} "$TEMP\opencpn_prev_installs.tmp" - FileOpen $0 "$TEMP\opencpn_prev_installs.tmp" a - FileSeek $0 0 END - ${Else} - FileOpen $0 "$TEMP\opencpn_prev_installs.tmp" w - ${EndIf} - IfErrors done - FileWriteUTF16LE $0 "$R1$\r$\n" - FileWriteUTF16LE $0 "$R6$\r$\n" - FileClose $0 - done: - ${EndIf} - - ${If} $VERSION_EXISTS == 1 - ${Break} - ${EndIf} - - uninst: - ${EndIf} - ${Else} - Goto done2 - ${EndIf} - ${Loop} - done2: - ${If} $R5 > 0 - StrCpy $MULTIPLE_INSTALLS $R5 - ${Else} - StrCpy $MULTIPLE_INSTALLS 0 - ${EndIf} - ${If} $MULTIPLE_INSTALLS == 0 - StrCpy $Skip_Page_TypeInst 1 - ${Else} - StrCpy $Skip_Page_TypeInst 0 - ${EndIf} - FunctionEnd -!macroend -!insertmacro Check_Prev_Installs_Macro "" -!insertmacro Check_Prev_Installs_Macro "un." - - -/* VersionDate - normalizes the CPACK_PACKAGE_VERSION_PATCH to a comparable format 'yyyy.[02|19].mmdd.00' - 02 = Beta version - 19 = Stable release - IN: CPACK_PACKAGE_VERSION_PATCH - OUT: $VERSION_DATE -*/ -Var Patch_Version -Var Version_Digits_Only -Var Version_Unified -Var Patch_Date -!macro VersionDate_Macro un - Function ${un}VersionDate - StrCpy $Patch_Version "@CPACK_PACKAGE_VERSION_PATCH@" - ${If} $Patch_Version == "" - StrCpy $Patch_Version "0000" - ${EndIf} - StrLen $0 "$Patch_Version" - ${StrFilter} "$Patch_Version" "1" "" "" $Version_Digits_Only - StrLen $1 $Version_Digits_Only - ;# Patch version contains non-digit characters - ${If} $0 != $1 - ${StrFilter} "$Patch_Version" "-2" "" "" $PATCH_ND - ${If} $1 == 3 - StrCpy $Version_Unified "b${YEAR}0$Patch_Version" - ${ElseIf} $1 == 2 - StrCpy $Version_Unified "s${YEAR}00$Patch_Version" - ${ElseIf} $1 == 1 - StrCpy $Version_Unified "s${YEAR}000$Patch_Version" - ${Else} - StrCpy $Version_Unified "b${YEAR}$Patch_Version" - ${EndIf} - ${VersionConvert} $Version_Unified "" $Patch_Date - StrCpy $VERSION_DATE "@CPACK_PACKAGE_VERSION_MAJOR@.@CPACK_PACKAGE_VERSION_MINOR@.$Patch_Date" - ;# Patch version contains only digits - ${Else} - ${If} $0 == 3 - StrCpy $Version_Unified "b${YEAR}0$Patch_Version" - ${ElseIf} $0 == 2 - StrCpy $Version_Unified "s${YEAR}00$Patch_Version" - ${ElseIf} $0 == 1 - StrCpy $Version_Unified "s${YEAR}000$Patch_Version" - ${Else} - StrCpy $Version_Unified "b${YEAR}$Patch_Version" - ${EndIf} - ${VersionConvert} $Version_Unified "" $Patch_Date - StrCpy $VERSION_DATE "@CPACK_PACKAGE_VERSION_MAJOR@.@CPACK_PACKAGE_VERSION_MINOR@.$Patch_Date.00" - ${EndIf} - FunctionEnd -!macroend -!insertmacro VersionDate_Macro "" -!insertmacro VersionDate_Macro "un." - - -!macro Delete_Start_Menu_Shortcuts_Macro un - Function ${un}Delete_Start_Menu_Shortcuts - Pop $9 - Push $R0 - Push $R1 - Push $R2 - Push $R3 - Push $R4 - ${TrimNewLines} $9 $9 - SetShellVarContext all - ${RecFindOpen} "$STARTMENU" $CurrentDirVar $CurrentFileVar - ${RecFindFirst} - ClearErrors - ${WordFind} "$CurrentFileVar" ".lnk" "E*" $8 - IfErrors next - IntCmp $8 1 0 next 0 - ShellLink::GetShortCutWorkingDirectory "$STARTMENU$CurrentDirVar\$CurrentFileVar" - Pop $0 - StrCmp "$0" "" +2 - StrCmp "$0" "$9" 0 next - ShellLink::GetShortCutTarget "$STARTMENU$CurrentDirVar\$CurrentFileVar" - Pop $1 - ${WordFind2X} "$1" "\" ".exe" "-1" $7 - ClearErrors - ${WordFind} "$7" "uninstall" "E*" $6 - IfErrors 0 +2 - StrCpy $6 0 - ;#NON-DEBUG - ${If} $7 == "opencpn" - ${OrIf} $7 == "Uninstall" - ${OrIf} $7 == "unins000" - ${OrIf} $6 == 1 - Delete "$STARTMENU$CurrentDirVar\$CurrentFileVar" - StrCmp $CurrentDirVar "" next - ClearErrors - RMDir "$STARTMENU$CurrentDirVar" - Sleep 250 - IfErrors 0 check_parent - ${If} ${FileExists} "$STARTMENU$CurrentDirVar\*.*" - ClearErrors - RMDir "$STARTMENU$CurrentDirVar" - Sleep 250 - IfErrors next check_parent - ${EndIf} - - Goto next - - check_parent: - StrCpy $R3 "$STARTMENU$CurrentDirVar" - Push $R3 - Call ${un}Parent_Dirs_Check - ${EndIf} - - next: - ${RecFindNext} - ${RecFindClose} - - ${If} ${FileExists} "$TEMP\opencpn_startmenu.tmp" - FileOpen $R0 "$TEMP\opencpn_startmenu.tmp" r - IfErrors end - ${Do} - FileReadUTF16LE $R0 $R1 - FileReadUTF16LE $R0 $R2 - ${TrimNewLines} $R1 $R1 - ${TrimNewLines} $R2 $R2 - StrCmp $R2 "" 0 +2 - ${Break} - ${RecFindOpen} "$R2" $CurrentDirVar $CurrentFileVar - ${RecFindFirst} - ClearErrors - ${WordFind} "$CurrentFileVar" ".lnk" "E*" $8 - IfErrors next1 - IntCmp $8 1 0 next1 0 - ShellLink::GetShortCutWorkingDirectory "$R2$CurrentDirVar\$CurrentFileVar" - Pop $0 - StrCmp "$0" "$9" 0 next1 - ShellLink::GetShortCutTarget "$R2$CurrentDirVar\$CurrentFileVar" - Pop $1 - ${WordFind2X} "$1" "\" ".exe" "-1" $7 - ;#NON-DEBUG - ${If} $7 == "opencpn" - ${OrIf} $7 == "Uninstall" - ${OrIf} $7 == "unins000" - Delete "$R2$CurrentDirVar\$CurrentFileVar" - StrCmp $CurrentDirVar "" next1 - ClearErrors - RMDir "$R2$CurrentDirVar" - Sleep 250 - IfErrors 0 check_parent1 - ${If} ${FileExists} "$R2$CurrentDirVar\*.*" - ClearErrors - RMDir "$R2$CurrentDirVar" - Sleep 250 - IfErrors next1 check_parent1 - ${EndIf} - - Goto next1 - - check_parent1: - StrCpy $R3 "$STARTMENU$CurrentDirVar" - Push $R3 - Call ${un}Parent_Dirs_Check - ${EndIf} - - next1: - ${RecFindNext} - ${RecFindClose} - ${LoopUntil} $R2 == "" - FileClose $R0 - ${EndIf} - - end: - Call ${un}Delete_Empty_Parents - - Pop $R4 - Pop $R3 - Pop $R2 - Pop $R1 - Pop $R0 - FunctionEnd -!macroend -!insertmacro Delete_Start_Menu_Shortcuts_Macro "" -!insertmacro Delete_Start_Menu_Shortcuts_Macro "un." - - -!macro Delete_Desktop_Shortcuts_Macro un - Function ${un}Delete_Desktop_Shortcuts - Pop $9 - Push $R0 - Push $R1 - Push $R2 - Push $R3 - ${TrimNewLines} $9 $9 - SetShellVarContext all - ${RecFindOpen} "$DESKTOP" $CurrentDirVar $CurrentFileVar - ${RecFindFirst} - ClearErrors - ${WordFind} "$CurrentFileVar" ".lnk" "E*" $8 - IfErrors next - IntCmp $8 1 0 next 0 - ShellLink::GetShortCutWorkingDirectory "$DESKTOP$CurrentDirVar\$CurrentFileVar" - Pop $0 - StrCmp "$0" "" +2 - StrCmp "$0" "$9" 0 next - ShellLink::GetShortCutTarget "$DESKTOP$CurrentDirVar\$CurrentFileVar" - Pop $1 - ${WordFind2X} "$1" "\" ".exe" "-1" $7 - ClearErrors - ${WordFind} "$7" "uninstall" "E*" $6 - IfErrors 0 +2 - StrCpy $6 0 - ;#NON-DEBUG - ${If} $7 == "opencpn" - ${OrIf} $7 == "Uninstall" - ${OrIf} $7 == "unins000" - ${OrIf} $6 == 1 - Delete "$DESKTOP$CurrentDirVar\$CurrentFileVar" - StrCmp $CurrentDirVar "" next - RMDir "$DESKTOP$CurrentDirVar" - Sleep 250 - IfErrors 0 check_parent - ${If} ${FileExists} "$DESKTOP$CurrentDirVar\*.*" - ClearErrors - RMDir "$DESKTOP$CurrentDirVar" - Sleep 250 - IfErrors next check_parent - ${EndIf} - - Goto next - - check_parent: - StrCpy $R3 "$DESKTOP$CurrentDirVar" - Push $R3 - Call ${un}Parent_Dirs_Check - ${EndIf} - - next: - ${RecFindNext} - ${RecFindClose} - - ${If} ${FileExists} "$TEMP\opencpn_desktop.tmp" - FileOpen $R0 "$TEMP\opencpn_desktop.tmp" r - IfErrors end - ${Do} - FileReadUTF16LE $R0 $R1 - FileReadUTF16LE $R0 $R2 - ${TrimNewLines} $R1 $R1 - ${TrimNewLines} $R2 $R2 - StrCmp $R2 "" 0 +2 - ${Break} - ${RecFindOpen} "$R2" $CurrentDirVar $CurrentFileVar - ${RecFindFirst} - ClearErrors - ${WordFind} "$CurrentFileVar" ".lnk" "E*" $8 - IfErrors next1 - IntCmp $8 1 0 next1 0 - ShellLink::GetShortCutWorkingDirectory "$R2$CurrentDirVar\$CurrentFileVar" - Pop $0 - StrCmp "$0" "$9" 0 next1 - ShellLink::GetShortCutTarget "$R2$CurrentDirVar\$CurrentFileVar" - Pop $1 - ${WordFind2X} "$1" "\" ".exe" "-1" $7 - ;#NON-DEBUG - ${If} $7 == "opencpn" - ${OrIf} $7 == "Uninstall" - ${OrIf} $7 == "unins000" - Delete "$R2$CurrentDirVar\$CurrentFileVar" - StrCmp $CurrentDirVar "" next1 - RMDir "$R2$CurrentDirVar" - Sleep 250 - IfErrors 0 check_parent1 - ${If} ${FileExists} "$R2$CurrentDirVar\*.*" - ClearErrors - RMDir "$R2$CurrentDirVar" - Sleep 250 - IfErrors next1 check_parent1 - ${EndIf} - - Goto next1 - - check_parent1: - StrCpy $R3 "$STARTMENU$CurrentDirVar" - Push $R3 - Call ${un}Parent_Dirs_Check - ${EndIf} - - next1: - ${RecFindNext} - ${RecFindClose} - ${LoopUntil} $R2 == "" - FileClose $R0 - ${EndIf} - - end: - Call ${un}Delete_Empty_Parents - - Pop $R3 - Pop $R2 - Pop $R1 - Pop $R0 - FunctionEnd -!macroend -!insertmacro Delete_Desktop_Shortcuts_Macro "" -!insertmacro Delete_Desktop_Shortcuts_Macro "un." - - -!macro Parent_Dirs_Check_Macro un - Function ${un}Parent_Dirs_Check - Pop $R3 - Push $R4 - ClearErrors - ${If} ${FileExists} "$TEMP\opencpn_check_parent.tmp" - FileOpen $R4 "$TEMP\opencpn_check_parent.tmp" a - IfErrors end - ${Else} - FileOpen $R4 "$TEMP\opencpn_check_parent.tmp" w - IfErrors end - ${EndIf} - - ${WordFind} "$R3" "\" "E-2{*" $R3 - IfErrors close - FileWriteUTF16LE $R4 "$R3$\r$\n" - - close: - FileClose $R4 - - end: - Pop $R4 - FunctionEnd -!macroend -!insertmacro Parent_Dirs_Check_Macro "" -!insertmacro Parent_Dirs_Check_Macro "un." - - -!macro Delete_Empty_Parents_Macro un - Function ${un}Delete_Empty_Parents - Push $R3 - Push $R4 - Push $R5 - ClearErrors - ${If} ${FileExists} "$TEMP\opencpn_check_parent.tmp" - FileOpen $R4 "$TEMP\opencpn_check_parent.tmp" r - IfErrors end - ${Do} - FileReadUTF16LE $R4 $R3 - IfErrors close - ${TrimNewLines} "$R3" $R3 - ${DirState} $R3 $R5 - StrCmp $R5 0 0 next - ClearErrors - RMDir "$R3" - Sleep 250 - IfErrors next - - loop: - ${WordFind} "$R3" "\" "E-2{*" $R3 - IfErrors next - StrCpy $error_tmp 0 - Push $R3 - Call ${un}Delete_Empty_Dir - StrCmp $error_tmp 1 loop - next: - ${Loop} - close: - FileClose $R4 - Delete "$TEMP\opencpn_check_parent.tmp" - ${EndIf} - end: - Pop $R5 - Pop $R4 - Pop $R3 - FunctionEnd -!macroend -!insertmacro Delete_Empty_Parents_Macro "" -!insertmacro Delete_Empty_Parents_Macro "un." - - -!macro Delete_Empty_Dir_Macro un - Function ${un}Delete_Empty_Dir - Push $R3 - Exch - Pop $R3 - Push $R4 - ${DirState} $R3 $R4 - StrCmp $R4 0 0 end - RMDir "$R3" - Sleep 100 - StrCpy $error_tmp 1 - - end: - Pop $R4 - Pop $R3 - FunctionEnd -!macroend -!insertmacro Delete_Empty_Dir_Macro "" -!insertmacro Delete_Empty_Dir_Macro "un." - - -; Initialize variables -Var explString -Var explSeparator -Var explStrLen -Var explSepLen -Var explOffset -Var explTmp -Var explTmp2 -Var explTmp3 -Var explArrCount -!macro Explodes_Macro un - Function ${un}Explode - /*; Initialize variables - Var /GLOBAL explString - Var /GLOBAL explSeparator - Var /GLOBAL explStrLen - Var /GLOBAL explSepLen - Var /GLOBAL explOffset - Var /GLOBAL explTmp - Var /GLOBAL explTmp2 - Var /GLOBAL explTmp3 - Var /GLOBAL explArrCount - */ - ; Get input from user - Pop $explString - Pop $explSeparator - - ; Calculates initial values - StrLen $explStrLen $explString - StrLen $explSepLen $explSeparator - StrCpy $explArrCount 1 - - ${If} $explStrLen <= 1 ; If we got a single character - ${OrIf} $explSepLen > $explStrLen ; or separator is larger than the string, - Push $explString ; then we return initial string with no change - Push 1 ; and set array's length to 1 - Return - ${EndIf} - - ; Set offset to the last symbol of the string - StrCpy $explOffset $explStrLen - IntOp $explOffset $explOffset - 1 - - ; Clear temp string to exclude the possibility of appearance of occasional data - StrCpy $explTmp "" - StrCpy $explTmp2 "" - StrCpy $explTmp3 "" - - ; Loop until the offset becomes negative - ${Do} - ; If offset becomes negative, it is time to leave the function - ${IfThen} $explOffset == -1 ${|} ${ExitDo} ${|} - - ; Remove everything before and after the searched part ("TempStr") - StrCpy $explTmp $explString $explSepLen $explOffset - - ${If} $explTmp == $explSeparator - ; Calculating offset to start copy from - IntOp $explTmp2 $explOffset + $explSepLen ; Offset equals to the current offset plus length of separator - StrCpy $explTmp3 $explString "" $explTmp2 - - Push $explTmp3 ; Throwing array item to the stack - IntOp $explArrCount $explArrCount + 1 ; Increasing array's counter - - StrCpy $explString $explString $explOffset 0 ; Cutting all characters beginning with the separator entry - StrLen $explStrLen $explString - ${EndIf} - - ${If} $explOffset = 0 ; If the beginning of the line met and there is no separator, - ; copying the rest of the string - ${If} $explSeparator == "" ; Fix for the empty separator - IntOp $explArrCount $explArrCount - 1 - ${Else} - Push $explString - ${EndIf} - ${EndIf} - - IntOp $explOffset $explOffset - 1 - ${Loop} - - Push $explArrCount - FunctionEnd -!macroend -!insertmacro Explodes_Macro "" -!insertmacro Explodes_Macro "un." - - -!macro isEmptyDir_Macro un - Function ${un}isEmptyDir - # Stack -> # Stack: - Exch $0 # Stack: $0 - Push $1 # Stack: $1, $0 - FindFirst $0 $1 "$0\*.*" - StrCmp $1 "." 0 _notempty - FindNext $0 $1 - StrCmp $1 ".." 0 _notempty - ClearErrors - FindNext $0 $1 - IfErrors 0 _notempty - FindClose $0 - Pop $1 # Stack: $0 - StrCpy $0 1 - Exch $0 # Stack: 1 (true) - Goto _end - _notempty: - FindClose $0 - Pop $1 # Stack: $0 - StrCpy $0 0 - Exch $0 # Stack: 0 (false) - _end: - FunctionEnd -!macroend -!insertmacro isEmptyDir_Macro "" -!insertmacro isEmptyDir_Macro "un." -;-------------------------------------------------------------------------------------------------- -;################################################################################################## -;# D E S C R I P T I O N S # -;################################################################################################## -;# Installer Descriptions # -;################################################################################################## - -;# License page - LicenseLangString license ${LANG_ENGLISH} "@CPACK_RESOURCE_FILE_LICENSE@" - LicenseLangString license ${LANG_GERMAN} "@CPACK_RESOURCE_FILE_LICENSE@" - LicenseLangString license ${LANG_FRENCH} "@CPACK_RESOURCE_FILE_LICENSE@" - LicenseLangString license ${LANG_CZECH} "@CPACK_RESOURCE_FILE_LICENSE@" - LicenseLangString license ${LANG_DANISH} "@CPACK_RESOURCE_FILE_LICENSE@" - LicenseLangString license ${LANG_SPANISH} "@CPACK_RESOURCE_FILE_LICENSE@" - LicenseLangString license ${LANG_ITALIAN} "@CPACK_RESOURCE_FILE_LICENSE@" - LicenseLangString license ${LANG_DUTCH} "@CPACK_RESOURCE_FILE_LICENSE@" - LicenseLangString license ${LANG_POLISH} "@CPACK_RESOURCE_FILE_LICENSE@" - LicenseLangString license ${LANG_PORTUGUESE} "@CPACK_RESOURCE_FILE_LICENSE@" - LicenseLangString license ${LANG_PORTUGUESEBR} "@CPACK_RESOURCE_FILE_LICENSE@" - LicenseLangString license ${LANG_RUSSIAN} "@CPACK_RESOURCE_FILE_LICENSE@" - LicenseLangString license ${LANG_SWEDISH} "@CPACK_RESOURCE_FILE_LICENSE@" - LicenseLangString license ${LANG_FINNISH} "@CPACK_RESOURCE_FILE_LICENSE@" - LicenseLangString license ${LANG_NORWEGIAN} "@CPACK_RESOURCE_FILE_LICENSE@" - LicenseLangString license ${LANG_TRADCHINESE} "@CPACK_RESOURCE_FILE_LICENSE@" - LicenseLangString license ${LANG_TURKISH} "@CPACK_RESOURCE_FILE_LICENSE@" - ;LicenseLangString license ${LANG_HUNGARIAN} "@CPACK_RESOURCE_FILE_LICENSE@" - -!insertmacro MUI_FUNCTION_DESCRIPTION_BEGIN - !insertmacro MUI_DESCRIPTION_TEXT ${SecGrpResetConfig} $(SecGrpResetConfig_Desc) - !insertmacro MUI_DESCRIPTION_TEXT ${SecDeleteConfigFile} $(SecDeleteConfigFile_Desc) - !insertmacro MUI_DESCRIPTION_TEXT ${SecDeleteChartDB} $(SecDeleteChartDB_Desc) - !insertmacro MUI_DESCRIPTION_TEXT ${SecDeleteSENC} $(SecDeleteSENC_Desc) - !insertmacro MUI_DESCRIPTION_TEXT ${SecDeleteCM93} $(SecDeleteCM93_Desc) - !insertmacro MUI_DESCRIPTION_TEXT ${SecDeleteNavobjFile} $(SecDeleteNavobjFile_Desc) - !insertmacro MUI_DESCRIPTION_TEXT ${SecDeleteLogFile} $(SecDeleteLogFile_Desc) - !insertmacro MUI_DESCRIPTION_TEXT ${SecGrpShortcuts} $(SecGrpShortcuts_Desc) - !insertmacro MUI_DESCRIPTION_TEXT ${SecShortcutStartmenu} $(SecShortcutStartmenu_Desc) - !insertmacro MUI_DESCRIPTION_TEXT ${SecShortcutDesktop} $(SecShortcutDesktop_Desc) - !insertmacro MUI_DESCRIPTION_TEXT ${SecSetConfig} $(SecSetConfig_Desc) -!insertmacro MUI_FUNCTION_DESCRIPTION_END - -;-------------------------------- -;################################################################################################## -;# Uninstaller Descriptions # -;################################################################################################## -!insertmacro MUI_UNFUNCTION_DESCRIPTION_BEGIN - !insertmacro MUI_DESCRIPTION_TEXT ${UnSecDeleteConfigFolder} $(UnSecDeleteConfigFolder_Desc) -!insertmacro MUI_UNFUNCTION_DESCRIPTION_END - - -;-------------------------------------------------------------------------------------------------- -;################################################################################################## -;# Language Strings # -;################################################################################################## -;#DO NOT EDIT THE NEXT LINE!!! It is needed for the online generating of the translation files! -;#Language Strings Start as of: 2010-10-10 -;#IMPORTANT: Do not end a multi-line with $\" - - LangString Installer ${LANG_ENGLISH} "installer" - - LangString Uninstaller ${LANG_ENGLISH} "uninstaller" - - ;Installer running on unsupported version of Windows - LangString Installer_Unsupported_Windows_Version ${LANG_ENGLISH} "Your Windows version is not supported (it's too old)!$\r$\nYou need at least Windows XP SP3." - - ;Installer running on Windows XP without SP3 - LangString Installer_Unsupported_XP_SP_Version ${LANG_ENGLISH} "Your Windows XP Service Pack version is not supported (it's too old)!$\r$\nYou need at least Windows XP SP3." - - ;Installer already running - LangString Installer_Running ${LANG_ENGLISH} "The installer is already running." - - ;Uninstaller already running - LangString Uninstaller_Running ${LANG_ENGLISH} "The uninstaller is already running." - - ;Language Dialog - LangString LangDialog_Title ${LANG_ENGLISH} "@CPACK_PACKAGE_NAME@ @CPACK_PACKAGE_VERSION@ Installation" - - LangString LangDialog_Text ${LANG_ENGLISH} "Please select a language:" - - ;License dialog - LangString License_Message ${LANG_ENGLISH} "OpenCPN is software libre. You are encouraged and legally \ - entitled to copy, reinstall, modify, and redistribute this program \ - for yourself and your friends under the terms of the GPL. $\r$\nSmooth sailing!" - - ;Clean up page - LangString text_please_wait_1 ${LANG_ENGLISH} "... please wait!" - - LangString Scanning_HDD ${LANG_ENGLISH} "Scanning HDD ..." - - LangString OCPN_Scanning_HDD ${LANG_ENGLISH} "OpenCPN: Scan HDD ..., please wait!" - - LangString Search_old_installations ${LANG_ENGLISH} "Searching for old installations" - - LangString Install_Location_Default ${LANG_ENGLISH} "Install Locations by default paths (may not find all)" - - LangString Install_Location_HDD_Scan ${LANG_ENGLISH} "Install Location by full HDD scan (most reliable)" - - LangString Label_CleanUp_Text ${LANG_ENGLISH} "Click on a list-item to select/ unselect it or Select ALL (recommended) and then Uninstall selected." - - LangString BT_Uninstall_Selected_CleanUp ${LANG_ENGLISH} "Uninstall Selected" - - LangString BT_SelectAll_CleanUp ${LANG_ENGLISH} "Select ALL" - - LangString BT_UnselectAll_CleanUp ${LANG_ENGLISH} "Unselect ALL" - - LangString LB_CleanUp ${LANG_ENGLISH} "Listbox Text" - - LangString BT_FullScan_CleanUp ${LANG_ENGLISH} "Scan HDD ..." - - LangString LAB_FullScan_CleanUp ${LANG_ENGLISH} "Scan the HDD for the most reliable detection.$\r$\nATTENTION: may last several minutes!" - - LangString Page_CleanUp_Title ${LANG_ENGLISH} "Uninstall older Version" - - LangString Page_CleanUp_Subtitle ${LANG_ENGLISH} "Incompatible version detected" - - ;Components Page - ;Header - LangString CP_HEADER_TEXT ${LANG_ENGLISH} "Installation Settings" - - ;Subheader - LangString CP_HEADER_SUBTEXT ${LANG_ENGLISH} "Choose the settings for the installation" - - ;Top - LangString CP_TOP ${LANG_ENGLISH} "Check or uncheck the options for the installation.$\r$\nClick 'Next' to continue." - - ;Installation type - LangString CP_INSTTYPE ${LANG_ENGLISH} "Installation type:" - - ;Components list - LangString CP_COMPLIST ${LANG_ENGLISH} "Adjust the settings individually:" - - - ;Directory page - - - ;Set Config page - LangString Page_SetConfig_Title ${LANG_ENGLISH} "Default configuration settings" - - LangString Page_SetConfig_Subtitle ${LANG_ENGLISH} "Preconfigure settings for OpenCPN" - - LangString Select_Chart_Directory ${LANG_ENGLISH} "Please select a chart directory to add to OpenCPN" - - LangString BT_Browse_SetConfig_Text ${LANG_ENGLISH} "Browse..." - - LangString BT_DeleteAll_SetConfig_Text ${LANG_ENGLISH} "Delete ALL" - - LangString BT_Delete_SetConfig_Text ${LANG_ENGLISH} "Delete" - - LangString GB_ChartDir_SetConfig_Text ${LANG_ENGLISH} "Add Chart Directory" - - LangString CB_Language_SetConfig_Text ${LANG_ENGLISH} "Set OpenCPN program language to $LANG_NAME" - - LangString GB_Language_SetConfig_Text ${LANG_ENGLISH} "Set OpenCPN program language" - - LangString Label_SetConfig_Text ${LANG_ENGLISH} "Configure preconfig settings for the OpenCPN program.$\r$\nThese settings are saved in the file opencpn.ini." - - ;Confirm page - LangString Page_Confirm_Title ${LANG_ENGLISH} "Ready to Install" - - LangString Page_Confirm_Subtitle ${LANG_ENGLISH} "Check the installation options" - - LangString Installation_Type ${LANG_ENGLISH} "Setup type" - - LangString Installation_Directory ${LANG_ENGLISH} "Destination location" - - LangString Create_Shortcuts ${LANG_ENGLISH} "Create shortcuts" - - LangString Type_Reinstall ${LANG_ENGLISH} "Reinstallation" - - LangString Type_Upgrade ${LANG_ENGLISH} "Upgrade" - - LangString Type_Downgrade ${LANG_ENGLISH} "Downgrade" - - LangString Type_Parallel_Installation ${LANG_ENGLISH} "Parallel installation" - - LangString Type_Fresh_Installation ${LANG_ENGLISH} "New installation" - - LangString Shortcuts ${LANG_ENGLISH} "Shortcuts" - - LangString Create_Shortcut_Start_Menu ${LANG_ENGLISH} "in the Start Menu folder" - - LangString Create_Shortcut_Desktop ${LANG_ENGLISH} "on the Desktop" - - LangString not_selected ${LANG_ENGLISH} "not selected" - - LangString text_none ${LANG_ENGLISH} "none" - - ;Installer Sections - ;Reset config - LangString SecGrpResetConfig_Text ${LANG_ENGLISH} "Reset ALL OpenCPN configuration files" - - ;Delete Config file (opencpn.ini) - LangString SecDeleteConfigFile_Text ${LANG_ENGLISH} "Delete config file (opencpn.ini)" - - ;Delete Chart DB (CHRTLIST.DAT) - LangString SecDeleteChartDB_Text ${LANG_ENGLISH} "Delete Chart Database file (CHRTLIST.DAT)" - - ;Delete SENC directory - LangString SecDeleteSENC_Text ${LANG_ENGLISH} "Delete SENC directory" - - ;Delete CM93 directory - LangString SecDeleteCM93_Text ${LANG_ENGLISH} "Delete CM93 Directory" - - ;Delete Log file (opencpn.log) - LangString SecDeleteLogFile_Text ${LANG_ENGLISH} "Delete Log file (opencpn.log)" - - ;Delete navobj.xml - LangString SecDeleteNavobjFile_Text ${LANG_ENGLISH} "Delete Navobject file (navobj.xml)" - - ;Set config - LangString SecSetConfig_Text ${LANG_ENGLISH} "OpenCPN Configuration Settings" - - ;Set language - LangString SecSetConfigLang_Text ${LANG_ENGLISH} "Set language to $LANG_NAME" - - ;Set chart dir(s) - LangString SecSetConfigChartDir_Text ${LANG_ENGLISH} "Select Chart Directories" - - ;Uninstaller Sections - ;Reset config - LangString UnSecDeleteConfigFolder_Text ${LANG_ENGLISH} "Delete Config folder" - - ;Installer Descriptions - LangString SecGrpResetConfig_Desc ${LANG_ENGLISH} "Deletes ALL files and subdirectories in the configuration folder." - - LangString SecDeleteConfigFile_Desc ${LANG_ENGLISH} "Deletes the configuration file. This file helds also Routes and Waypoints." - - LangString SecDeleteChartDB_Desc ${LANG_ENGLISH} "Deletes the Chart DB file." - - LangString SecDeleteSENC_Desc ${LANG_ENGLISH} "Deletes the SENC subfolder which helds the Bitmaps and S57 chart cache files." - - LangString SecDeleteCM93_Desc ${LANG_ENGLISH} "Deletes the cm93 subfolder which helds the cached cm93 chart outlines." - - LangString SecDeleteNavobjFile_Desc ${LANG_ENGLISH} "Deletes the file 'navobj.xml' in the config folder. This file contains the Tracks." - - LangString SecDeleteLogFile_Desc ${LANG_ENGLISH} "Deletes the OpenCPN log file 'opencpn.log'." - - LangString SecGrpShortcuts_Desc ${LANG_ENGLISH} "Creates shortcuts in both, the Start Menu and on the Desktop." - - LangString SecShortcutStartmenu_Desc ${LANG_ENGLISH} "Creates shortcuts for OpenCPN and the Uninstaller in the Start Menu - configurable on the next page." - - LangString SecShortcutDesktop_Desc ${LANG_ENGLISH} "Creates a shortcut for OpenCPN on the Desktop." - - LangString SecSetConfig_Desc ${LANG_ENGLISH} "Preconfigure the language setting and the chart dir(s) for s63_pi. When selected a separate page is shown for configuration." - - ;Uninstaller Descriptions - LangString UnSecDeleteConfigFolder_Desc ${LANG_ENGLISH} "Deletes the config folder and all its files and subdirectories." - - ;Un-install Link - LangString Uninstall_Link ${LANG_ENGLISH} "Uninstall @CPACK_PACKAGE_NAME@ @CPACK_PACKAGE_VERSION@" - - ;Multiple Install > 1 - ;Title - LangString Page_TypeInst_Title ${LANG_ENGLISH} "Previous Installations" - - ;Subtitle - LangString Page_TypeInst_Subtitle ${LANG_ENGLISH} "$MULTIPLE_INSTALLS installations of s63_pi found.$\r$\nChoose how you want to install s63_pi." - - ;Multiple Install = 1 - ;Title - LangString Page_TypeInst_Title_1 ${LANG_ENGLISH} "Already Installed" - - ;Subtitle - LangString Page_TypeInst_Subtitle_1 ${LANG_ENGLISH} "Found installed version of s63_pi.$\r$\n" - - ;Version exists - ;Title - LangString Page_TypeInst_Title_Exists ${LANG_ENGLISH} "Version Already Installed" - - ;Subtitle - LangString Page_TypeInst_Subtitle_Exists ${LANG_ENGLISH} "s63_pi @CPACK_PACKAGE_VERSION@ is already installed.$\r$\nChoose how you want to install s63_pi." - - ;Label - LangString Label_TypeInst_Reinstall_Text ${LANG_ENGLISH} "s63_pi @CPACK_PACKAGE_VERSION@ is already installed on your system. You can reinstall the version now using the previous settings. If you wish to install the program with different settings, cancel installation and un-install the existing version first. Click Next to continue." - - ;Radio button 'Reinstall' - LangString RB_Reinstall_TypeInst_Text ${LANG_ENGLISH} "Reinstall using previous settings" - - ;Version newer - ;Label - LangString Label_TypeInst_Upgrade_Text ${LANG_ENGLISH} "An older version of s63_pi is installed on your system. Click Next to continue upgrade." - - ;Radio button 'Upgrade' - LangString RB_Upgrade_TypeInst_Text ${LANG_ENGLISH} "Upgrade s63_pi using previous settings (recommended)" - - ;Version older - ;Label - LangString Label_TypeInst_Downgrade_Text ${LANG_ENGLISH} "A newer version of s63_pi is installed on your system. It is not recommended to downgrade to an older version. Select the installation type you want to perform and click Next to continue." - - ;Radio button 'Downgrade' - LangString RB_Downgrade_TypeInst_Text ${LANG_ENGLISH} "Downgrade s63_pi using previous settings (recommended)" - - ;Multiple versions - ;Label - LangString Label_TypeInst_Parallel_Text ${LANG_ENGLISH} "Setup has detected several installed versions of s63_pi on your system. It is recommended to have only one version of s63_pi installed at a time. Select the operation you want to perform and click Next to continue." - - ;Radio button 'Parallel Installation' - LangString RB_Parallel_TypeInst_Text ${LANG_ENGLISH} "Parallel Installation (advanced users)" - - ;Empty string - needed for Components page - LangString EmptyString ${LANG_ENGLISH} "" - - ;Finish page - LangString Show_Readme_Text ${LANG_ENGLISH} "Show Install Log file" - - LangString Finish_Link_Text ${LANG_ENGLISH} "OpenCPN website (Internet connection required)" - - LangString Finish_Link_URL ${LANG_ENGLISH} "http://opencpn.info/?ref=installer&user=$USERS_NAME&lang=$REG_LANG&version=@CPACK_PACKAGE_VERSION@" - - ;Message Boxes - LangString Msg_UAC_Admin_Retry ${LANG_ENGLISH} "This $Inst_Or_Uninst requires admin access!$\r$\nPlease log on as an Administrator and try again." - - LangString Msg_UAC_Admin_Abort ${LANG_ENGLISH} "This $Inst_Or_Uninst requires admin privileges, aborting!" - - LangString Msg_UAC_Logon_Abort ${LANG_ENGLISH} "Logon service not running, aborting!" - - LangString Msg_UAC_No_Elevation ${LANG_ENGLISH} "Unable to elevate , error $0" - - LangString Msg_Error_Remove_InstDir ${LANG_ENGLISH} "The installation directory$\r$\n'$INSTDIR'$\r$\ncould not be removed because it is not empty." - - LangString Msg_Path_Invalid ${LANG_ENGLISH} "The entered path is invalid!$\r$\n$\r$\nPlease check your input." - - LangString Msg_Path_Installation_Exists ${LANG_ENGLISH} "There already exists an installation of s63_pi in the given path.$\r$\nIf you wish to use this path, first uninstall the version. Or select another path for this installation." - - LangString Msg_Uninstall_Old_Versions ${LANG_ENGLISH} "Setup has detected at least one older version of s63_pi which is not compatible with the new version control.$\r$\n\ - It is recommended to first uninstall all of these installations (this does not affect your Config files) and clean-up the Registry.$\r$\n\ - If you click Yes on the next page a listbox with all installation locations will be shown and you will have the possibility to select the installations you wish to uninstall.$\r$\n\ - If you are unsure about possible other previous installations than those shown in the listbox, you can also perform a scan of the entire \ - Harddisk (ATTENTION: This may take several minutes) to find all install locations (recommended).$\r$\n$\r$\n\ - Do you want to uninstall the old version(s)?" - - LangString Msg_Not_All_Old_Uninstalled ${LANG_ENGLISH} "You have not uninstalled all previous installations.$\r$\n$\r$\nDo you want to continue anyway?" - - LangString Msg_Uninstaller_Param_Help ${LANG_ENGLISH} "Uninstaller Help$\r$\n$\r$\nUse the command line or a shortcut to run the uninstaller:$\r$\n$INSTDIR\Uninstall @CPACK_PACKAGE_VERSION@.exe [/?] | [/S], [/type=X]$\r$\n$\r$\nParameters:$\r$\n/?$\tshows this help message box$\r$\n/S$\truns the uninstaller in silent mode$\r$\n$\twill do a full uninstall if called without any type parameter$\r$\n/type=X$\tX must be a digit between 1 and 5$\r$\n$\t1 = Removes only the program files$\r$\n$\t2 = Removes only the program files + preconfig RegKey$\r$\n$\t3 = Removes the program files + config folder$\r$\n$\tpreserves the preconfig RegKey$\r$\n$\t4 = Deletes only the config folder$\r$\n$\t5 = Deletes only the preconfig RegKey$\r$\n$\r$\nEntering any other number or value will quit the uninstaller with a message box without removing or deleting anything." - - LangString Msg_Unknown_Type_Param ${LANG_ENGLISH} "The entered value '$9' for the type parameter is not valid!$\r$\nUse $INSTDIR\Uninstall @CPACK_PACKAGE_VERSION@.exe /?$\r$\nto see a list of valid values." - - ;added on 2010-10-16 - LangString SecGrpShortcuts_Text ${LANG_ENGLISH} "Create Shortcuts" - - LangString SecShortcutStartmenu_Text ${LANG_ENGLISH} "Add Shortcuts to the Start Menu" - - LangString SecShortcutDesktop_Text ${LANG_ENGLISH} "Create Shortcut on the Desktop" - - LangString Installation_Delete_Config ${LANG_ENGLISH} "Delete (existing) Config Subdirectories/ Files" - - ;added on 2010-10-17 - LangString Banner_Scan_Drive ${LANG_ENGLISH} "Scanning Drive $9" - - LangString Banner_Installation_Found_Singular ${LANG_ENGLISH} "Found $counter_tmp installation" - - LangString Banner_Installation_Found_Plural ${LANG_ENGLISH} "Found $counter_tmp installations" - - ;added on 2010-10-21 - LangString Uninstall_Folder_Name ${LANG_ENGLISH} "Uninstall" - - ;added on 2011-06-13 - LangString ^NameDA ${LANG_ENGLISH} "@CPACK_PACKAGE_NAME@ Version @CPACK_PACKAGE_VERSION@" - LangString Installer ${LANG_ENGLISH} "Installer" - -;#EOF +/*----------------------------------------------------------------------------------------------------- +NSIS Installer script for OpenCPN (Windows) +NSIS version 2.46 +Written by Gunther Pilz (Netsurfer) netsurfer@opencpn.de +------------------------------------------------------------------------------------------------------- +CMake variables + CPACK_PACKAGE_NAME "OpenCPN" + CPACK_NSIS_PACKAGE_NAME_LC "opencpn" + CPACK_PACKAGE_VENDOR "opencpn.org" + CPACK_PACKAGE_VERSION_MAJOR ${VERSION_MAJOR} + CPACK_PACKAGE_VERSION_MINOR ${VERSION_MINOR} + CPACK_PACKAGE_VERSION_PATCH ${VERSION_PATCH} + CPACK_PACKAGE_VERSION ${PACKAGE_VERSION} + CPACK_NSIS_INSTALLED_ICON_NAME "opencpn.exe" + CPACK_PACKAGE_ICON "${PROJECT_SOURCE_DIR}/src/bitmaps\\\\opencpn.ico" + CPACK_NSIS_EXTRA_INSTALL_COMMANDS ${CPACK_NSIS_EXTRA_INSTALL_COMMANDS} + CPACK_RESOURCE_FILE_LICENSE "${CMAKE_CURRENT_SOURCE_DIR}/data/license.txt" + CPACK_BUILDWIN_DIR "${PROJECT_SOURCE_DIR}/buildwin" + CPACK_NSIS_DIR "${PROJECT_SOURCE_DIR}/buildwin/NSIS_Unicode") + + #CPACK_INSTALL_CMAKE_PROJECTS "${CMAKE_CURRENT_BINARY_DIR};${PACKAGE_NAME};ALL;/" + #CPACK_PACKAGE_EXECUTABLES ${PACKAGE_NAME} "OpenCPN" + #CPACK_PACKAGE_INSTALL_DIRECTORY ${PACKAGE_NAME} "OpenCPN" + #CPACK_PACKAGE_DESCRIPTION_SUMMARY "OpenCPN ${PACKAGE_VERSION}" + #CPACK_NSIS_LINK_NAME "${CPACK_PACKAGE_NAME} ${PACKAGE_VERSION}" + #CPACK_NSIS_DISPLAY_NAME "${CPACK_PACKAGE_NAME} Version ${PACKAGE_VERSION}" + #CPACK_NSIS_HELP_LINK "http:\\\\\\\\www.opencpn.org" + #CPACK_NSIS_URL_INFO_ABOUT "http:\\\\\\\\www.opencpn.org" + #CPACK_NSIS_CONTACT "http:\\\\\\\\www.opencpn.org" + #CPACK_PACKAGE_FILE_NAME "${PACKAGE_NAME}_${VERSION_MAJOR}.${VERSION_MINOR}.${VERSION_PATCH}_setup" + +----------------------------------------------------------------------------------------------------------*/ +;# Set compression + SetCompressor /FINAL lzma + +;-------------------------------- +;# You must define these values + !define OCPN_INSTALLER_VERSION "1.0.0" + /* + !define CPACK_NSIS_INSTALLED_ICON_NAME "opencpn.exe" + !define CPACK_NSIS_PACKAGE_NAME_LC "opencpn" + !define CPACK_NSIS_DISPLAY_NAME "${CPACK_PACKAGE_NAME} ${PACKAGE_VERSION}" + !define CPACK_PACKAGE_ICON "${PROJECT_SOURCE_DIR}/src/bitmaps/opencpn.ico" + !define CPACK_BUILDWIN_DIR "${PROJECT_SOURCE_DIR}/buildwin" + !define CPACK_NSIS_DIR "${PROJECT_SOURCE_DIR}/buildwin/NSIS_Unicode" + */ + !define /date YEAR "%Y" + !define OUTPUT_FILE_NAME "@CPACK_NSIS_PACKAGE_NAME_LC@_@CPACK_PACKAGE_VERSION@_setup.exe" + !define INST_DIR "@CPACK_TEMPORARY_DIRECTORY@" + !define REG_ROOT_KEY "Software" + !define REG_KEY "Software\s63_pi" + !define REG_ROOT_KEY_UN "Software\Microsoft\Windows\CurrentVersion\Uninstall" + !define REG_KEY_UN "Software\Microsoft\Windows\CurrentVersion\Uninstall\s63_pi @CPACK_PACKAGE_VERSION@" + !define CSIDL_LOCAL_APPDATA "0x1C" + !define Explode "!insertmacro Explode" + !define unExplode "!insertmacro unExplode" + + +;-------------------------------- +;# Variables + Var INST_USER_SID + Var CONFIG_EXISTS + Var CONFIG_EMPTY + Var INI_EXISTS + Var CHARTDB_EXISTS + Var SENC_EXISTS + Var CM93_EXISTS + Var NAVOBJ_EXISTS + Var LOG_EXISTS + Var REG_LANG + Var Count_SecGrpResetConfig + Var SecGrpEndSetConfig_Text + Var RESET_CONFIG + Var STARTMENU_FOLDER + Var OLD_INSTALLS + Var Prev_Install_RegKey + Var MULTIPLE_INSTALLS + Var VERSION_EXISTS + Var VERSION_NEWER + Var VERSION_OLDER + Var CANCEL_INSTALLER + Var VERSION_DATE + Var LANG_NAME + Var Status_SecGrpSetConfig + Var MAJOR_D + Var MINOR_D + Var PATCH_D + Var PATCH_ND + Var LM_VERSION + Var LM_VERSION_INST + Var LM_VERSION_UNINST + Var latest_version + Var latest_pathexe + Var BU_X + Var BU_Y + Var UAT + Var OUAT + Var USERS_APPDATA + Var ADMIN_APPDATA + Var USERS_NAME + Var counter_tmp + Var CurrentDirVar + Var CurrentFileVar + Var CONTEXT + Var REG_CHARTDIRS + Var USERNAME + Var IS_ADMIN + Var Compare_Version_Result + Var Inst_Or_Uninst + Var Marquee_Handle + Var Banner_Text_Blink + Var error_tmp +# onSelChange + Var ConfigSetLang + Var ConfigSetChartDir + Var SetConfig +# Installer Pages + Var Skip_Page_CleanUp + Var Skip_Page_TypeInst + Var Skip_Page_SetConfig + Var Skip_Page_Directory + Var Skip_Page_Startmenu + Var Skip_Page_Confirm +# Page_TypeInst + Var Label_TypeInst_Reinstall + Var RB_Reinstall + Var Label_TypeInst_Upgrade + Var RB_Upgrade + Var Label_TypeInst_Downgrade + Var RB_Downgrade + Var Label_TypeInst_Parallel + Var GroupBox_TypeInst + Var RB_Parallel + Var TI_REINSTALL + Var TI_UPGRADE + Var TI_DOWNGRADE + Var TI_PARALLEL + Var GroupBox_Size + Var INSTALL_TYPE +# Page_SetConfig + Var Label_SetConfig + Var GroupBox_Language_SetConfig + Var CheckBox_Language_SetConfig + Var GroupBox_ChartDir_SetConfig + Var DirRequest_SetConfig + Var Button_Delete_SetConfig + Var Button_DeleteAll_SetConfig + Var Button_Add_SetConfig + Var ListBox_SetConfig +;# Page_SetConfig_Leave + Var CHART_DIR_TMP_FILE + Var CHART_DIR_EMPTY + Var CONFIG_SET_LANG + +# Uninstaller Pages + Var Skip_UnPage_Components +;-------------------------------- +;# Execution Level + RequestExecutionLevel highest + +;-------------------------------- +;# Includes + !addincludedir "@CPACK_NSIS_DIR@/Include" + !addplugindir "@CPACK_NSIS_DIR@/Plugins" + + !include MUI2.nsh + !include LogicLib.nsh + !include nsDialogs.nsh + !include Sections.nsh + !include StrFunc.nsh + !include WordFunc.nsh + !include TextFunc.nsh + !include FileFunc.nsh + !include WinVer.nsh + + !include UAC.nsh + + !define MUI_UI "@CPACK_NSIS_DIR@/UI/opencpn_ui.exe" + +;-------------------------------- +;# General + ;# Name and file + Name "@CPACK_NSIS_PACKAGE_NAME@" + OutFile "@CPACK_TOPLEVEL_DIRECTORY@/${OUTPUT_FILE_NAME}" + + ;# Default installation folder + InstallDir "$PROGRAMFILES\s63_pi" + + BrandingText /TRIMLEFT "s63_pi $(Installer) v${OCPN_INSTALLER_VERSION}" +;-------------------------------- +;# Interface Settings + !define MUI_CUSTOMFUNCTION_GUIINIT myGuiInit + !define MUI_CUSTOMFUNCTION_UNGUIINIT un.myGuiInit + + !define MUI_ABORTWARNING + + ;# MUI Settings / Header + !define MUI_ICON "@CPACK_PACKAGE_ICON@" + !define MUI_HEADERIMAGE + !define MUI_HEADERIMAGE_LEFT + !define MUI_HEADERIMAGE_BITMAP "@CPACK_NSIS_DIR@\Bitmaps\header-install.bmp" + !define MUI_HEADERIMAGE_UNBITMAP "@CPACK_NSIS_DIR@\Bitmaps\header-uninstall.bmp" + + ;# MUI Settings / Wizard + !define MUI_WELCOMEFINISHPAGE_BITMAP "@CPACK_NSIS_DIR@\Bitmaps\wizard-install.bmp" + !define MUI_UNWELCOMEFINISHPAGE_BITMAP "@CPACK_NSIS_DIR@\Bitmaps\wizard-uninstall.bmp" + + ;# Set Multi-Language settings + ;# Language Selection Dialog Settings + ;# Show all languages, despite user's codepage + !define MUI_LANGDLL_ALLLANGUAGES +/* + ;# Remember the installer language + !define MUI_LANGDLL_REGISTRY_ROOT "HKLM" + !define MUI_LANGDLL_REGISTRY_KEY "${REG_KEY_UN}" + !define MUI_LANGDLL_REGISTRY_VALUENAME "SetupLanguage" + !define MUI_LANGDLL_WINDOWTITLE "$(LangDialog_Title)" + !define MUI_LANGDLL_INFO "$(LangDialog_Text)" + */ +;-------------------------------- +;# Calls for making respective functions available + ${StrLoc} + +;-------------------------------- +;################################################################################################## +;# Macros # +;################################################################################################## + +!ifndef ___EnumHKU___ + !define ___EnumHKU___ + + !include LogicLib.nsh + !include WordFunc.nsh + + !define TOKEN_QUERY 0x0008 + !define TOKEN_ADJUST_PRIVILEGES 0x0020 + + !define SE_RESTORE_NAME SeRestorePrivilege + + !define SE_PRIVILEGE_ENABLED 0x00000002 + + !define HKEY_USERS 0x80000003 + + Var key + Var logged + Var EnumHKU_counter + Var SID + Var USERPROFILE + + !macro _EnumHKU_AdjustTokens + StrCpy $R1 0 + + System::Call "kernel32::GetCurrentProcess() i .R0" + System::Call "advapi32::OpenProcessToken(i R0, i ${TOKEN_QUERY}|${TOKEN_ADJUST_PRIVILEGES}, *i R1R1) i .R0" + + ${If} $R0 != 0 + System::Call "advapi32::LookupPrivilegeValue(t n, t '${SE_RESTORE_NAME}', *l .R2) i .R0" + + ${If} $R0 != 0 + System::Call "*(i 1, l R2, i ${SE_PRIVILEGE_ENABLED}) i .R0" + System::Call "advapi32::AdjustTokenPrivileges(i R1, i 0, i R0, i 0, i 0, i 0)" + System::Free $R0 + ${EndIf} + + System::Call "kernel32::CloseHandle(i R1)" + ${EndIf} + !macroend + + !macro _EnumHKU_InvokeCallback CALLBACK SUBKEY + Push $0 + Push $1 + Push $R0 + Push $R1 + Push $R2 + Push $R3 + Push $R4 + Push $R5 + Push $R6 + + Push "${SUBKEY}" + Call "${CALLBACK}" + + Pop $R6 + Pop $R5 + Pop $R4 + Pop $R3 + Pop $R2 + Pop $R1 + Pop $R0 + Pop $1 + Pop $0 + !macroend + + !macro _EnumHKU_Load FILE CALLBACK SUBKEY + GetFullPathName /SHORT $R2 ${FILE} + System::Call "advapi32::RegLoadKeyW(i ${HKEY_USERS}, t '${SUBKEY}', t R2) i .R3" + ${If} $R3 == 0 + !insertmacro _EnumHKU_InvokeCallback ${CALLBACK} "${SUBKEY}" + ;System::Call "advapi32::RegUnLoadKeyW(i ${HKEY_USERS}, t '${SUBKEY}')" + IntOp $EnumHKU_counter $EnumHKU_counter + 1 + ${EndIf} + !macroend + + !macro EnumHKU UN CALLBACK SUBKEY + Push $0 + Push $1 + StrCpy $EnumHKU_counter 0 + GetFunctionAddress $0 "${CALLBACK}" + StrCpy $1 "${SUBKEY}_$EnumHKU_counter" + StrCpy $key ${SUBKEY} + Call ${UN}_EnumHKU + Pop $1 + Pop $0 + !macroend + + !define EnumHKU '!insertmacro EnumHKU ""' + !define un.EnumHKU '!insertmacro EnumHKU "un."' + + !macro _EnumHKU UN + Function ${UN}_EnumHKU + Push $R0 + Push $R1 + Push $R2 + Push $R3 + Push $R4 + Push $R5 + Push $R6 + + # enumerate logged on users + StrCpy $R0 0 + ${Do} + EnumRegKey $R1 HKU "" $R0 + ${If} $R1 != "" + StrLen $R4 $R1 + ${If} $R4 > 8 + StrCpy $R6 0 + ${WordFind} "$R1" "_Classes" "E*" $R6 + IfErrors 0 cont + + ReadRegStr $R5 HKU "$R1\Volatile Environment" USERPROFILE + ExpandEnvStrings $R5 $R5 + StrCpy $USERPROFILE $R5 + StrCpy $logged "on" + !insertmacro _EnumHKU_InvokeCallback $0 $R1 + StrCpy $USERPROFILE "" + StrCpy $logged "" + ${EndIf} + cont: + IntOp $R0 $R0 + 1 + ${EndIf} + ${LoopUntil} $R1 == "" + + # enumerate logged off users + System::Call "kernel32::GetVersion() i .R0" + IntOp $R0 $R0 & 0x80000000 + ${If} $R0 == 0 + # nt + !insertmacro _EnumHKU_AdjustTokens + StrCpy $R0 0 + ${Do} + EnumRegKey $R1 HKLM "SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProfileList" $R0 + ${If} $R1 != "" + StrLen $R4 $R1 + ${If} $R4 > 8 + ClearErrors + ReadRegStr $R5 HKU "$R1\Volatile Environment" HOMEPATH + IfErrors 0 cont1 + ReadRegStr $R5 HKLM "SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProfileList\$R1" ProfileImagePath + ExpandEnvStrings $R5 $R5 + StrCpy $USERPROFILE $R5 + StrCpy $logged "off" + !insertmacro _EnumHKU_Load "$R5\NTUSER.DAT" $0 $1 + StrCpy $1 "$key_$EnumHKU_counter" + StrCpy $USERPROFILE "" + StrCpy $logged "" + ${EndIf} + + cont1: + IntOp $R0 $R0 + 1 + ${EndIf} + ${LoopUntil} $R1 == "" + ${Else} + # 9x + ClearErrors + FindFirst $R1 $R2 "$WINDIR\Profiles\*.*" + ${Unless} ${Errors} + ${Do} + ${If} $R2 != "." + ${AndIf} $R2 != ".." + ${If} ${FileExists} "$WINDIR\Profiles\$R2\USER.DAT" + !insertmacro _EnumHKU_Load "$WINDIR\Profiles\$R2\USER.DAT" $0 $1 + ${EndIf} + ${EndIf} + ClearErrors + FindNext $R1 $R2 + ${LoopUntil} ${Errors} + FindClose $R1 + ${EndUnless} + ${Endif} + + Pop $R6 + Pop $R5 + Pop $R4 + Pop $R3 + Pop $R2 + Pop $R1 + Pop $R0 + FunctionEnd + !macroend + + !insertmacro _EnumHKU "" + !insertmacro _EnumHKU "un." +!endif + +!macro IndexOf Var Str Char + Push "${Char}" + Push "${Str}" + Call IndexOf + Pop "${Var}" +!macroend +!define IndexOf "!insertmacro IndexOf" + +!macro RIndexOf Var Str Char + Push "${Char}" + Push "${Str}" + Call RIndexOf + Pop "${Var}" +!macroend +!define RIndexOf "!insertmacro RIndexOf" + + +!macro Explode Length Separator String + Push `${Separator}` + Push `${String}` + Call Explode + Pop `${Length}` +!macroend + +!macro unExplode Length Separator String + Push `${Separator}` + Push `${String}` + Call un.Explode + Pop `${Length}` +!macroend + +!ifndef _RecFind_Included + !define _RecFind_Included + + Var _RecFindVar1 + Var _RecFindVar2 + + !macro _RecFindOpen Dir CurrentDirVar CurrentFileVar + !define _Local `${__LINE__}` + !define _Dir `${Dir}` + !define _CurrentDirVar `${CurrentDirVar}` + !define _CurrentFileVar `${CurrentFileVar}` + + !define _RecFindOpenSet + + StrCpy $_RecFindVar2 1 + Push `` + + `nextDir${_Local}:` + Pop `${_CurrentDirVar}` + IntOp $_RecFindVar2 $_RecFindVar2 - 1 + !macroend + !define RecFindOpen `!insertmacro _RecFindOpen` + + !macro _RecFindFirst + !ifndef _RecFindOpenSet + !error `Incorrect use of RecFind commands!` + !else + !define _RecFindFirstSet + !endif + + ClearErrors + FindFirst $_RecFindVar1 `${_CurrentFileVar}` `${_Dir}${_CurrentDirVar}\*.*` + IfErrors `Done${_Local}` + + `checkFile${_Local}:` + StrCmp ${_CurrentFileVar} . `nextFile${_Local}` + StrCmp ${_CurrentFileVar} .. `nextFile${_Local}` + + IfFileExists `${_Dir}${_CurrentDirVar}\${_CurrentFileVar}\*.*` 0 +4 + Push `${_CurrentDirVar}\${_CurrentFileVar}` + IntOp $_RecFindVar2 $_RecFindVar2 + 1 + Goto `nextFile${_Local}` + !macroend + !define RecFindFirst `!insertmacro _RecFindFirst` + + !macro _RecFindNext + !ifndef _RecFindOpenSet | _RecFindFirstSet + !error `Incorrect use of RecFind commands!` + !else + !define _RecFindNextSet + !endif + + `nextFile${_Local}:` + + ClearErrors + FindNext $_RecFindVar1 `${_CurrentFileVar}` + IfErrors 0 `checkFile${_Local}` + + StrCmp $_RecFindVar2 0 +3 + FindClose $_RecFindVar1 + Goto `nextDir${_Local}` + !macroend + !define RecFindNext `!insertmacro _RecFindNext` + + !macro _RecFindClose + !ifndef _RecFindOpenSet | _RecFindFirstSet | _RecFindNextSet + !error `Incorrect use of RecFind commands!` + !else + !undef _RecFindOpenSet + !undef _RecFindFirstSet + !undef _RecFindNextSet + !endif + + `Done${_Local}:` + FindClose $_RecFindVar1 + + StrCmp $_RecFindVar2 0 +4 + Pop $_RecFindVar1 + IntOp $_RecFindVar2 $_RecFindVar2 - 1 + Goto -3 + + !undef _CurrentFileVar + !undef _CurrentDirVar + !undef _Dir + !undef _Local + !macroend + !define RecFindClose `!insertmacro _RecFindClose` +!endif + +;-------------------------------------------------------------------------------------------------- +;################################################################################################## +;# FUNCTIONS # +;################################################################################################## + +; StrContains +; This function does a case sensitive searches for an occurrence of a substring in a string. +; It returns the substring if it is found. +; Otherwise it returns null(""). +; Written by kenglish_hi +; Adapted from StrReplace written by dandaman32 + + +Var STR_HAYSTACK +Var STR_NEEDLE +Var STR_CONTAINS_VAR_1 +Var STR_CONTAINS_VAR_2 +Var STR_CONTAINS_VAR_3 +Var STR_CONTAINS_VAR_4 +Var STR_RETURN_VAR + +Function StrContains + Exch $STR_NEEDLE + Exch 1 + Exch $STR_HAYSTACK + ; Uncomment to debug + ;MessageBox MB_OK 'STR_NEEDLE = $STR_NEEDLE STR_HAYSTACK = $STR_HAYSTACK ' + StrCpy $STR_RETURN_VAR "" + StrCpy $STR_CONTAINS_VAR_1 -1 + StrLen $STR_CONTAINS_VAR_2 $STR_NEEDLE + StrLen $STR_CONTAINS_VAR_4 $STR_HAYSTACK + loop: + IntOp $STR_CONTAINS_VAR_1 $STR_CONTAINS_VAR_1 + 1 + StrCpy $STR_CONTAINS_VAR_3 $STR_HAYSTACK $STR_CONTAINS_VAR_2 $STR_CONTAINS_VAR_1 + StrCmp $STR_CONTAINS_VAR_3 $STR_NEEDLE found + StrCmp $STR_CONTAINS_VAR_1 $STR_CONTAINS_VAR_4 done + Goto loop + found: + StrCpy $STR_RETURN_VAR $STR_NEEDLE + Goto done + done: + Pop $STR_NEEDLE ;Prevent "invalid opcode" errors and keep the + Exch $STR_RETURN_VAR +FunctionEnd + +!macro _StrContainsConstructor OUT NEEDLE HAYSTACK + Push `${HAYSTACK}` + Push `${NEEDLE}` + Call StrContains + Pop `${OUT}` +!macroend + +!define StrContains '!insertmacro "_StrContainsConstructor"' + + + + + + +;-------------------------------------------------------------------------------------------------- +;################################################################################################## +;# PAGES # +;################################################################################################## +;# Installer Pages # +;################################################################################################## +/* Var Skip_Page_CleanUp + Var Skip_Page_TypeInst + Var Skip_Page_SetConfig + Var Skip_Page_Directory + Var Skip_Page_Startmenu + Var Skip_Page_Confirm +*/ + ;# Welcome page + !define MUI_WELCOMEPAGE_TITLE_3LINES + !insertmacro MUI_PAGE_WELCOME + + ;# License page + !define MUI_PAGE_CUSTOMFUNCTION_LEAVE Page_License_Leave + ;!insertmacro MUI_PAGE_LICENSE "@CPACK_RESOURCE_FILE_LICENSE@" + + !define MUI_LICENSEPAGE_BUTTON "$(^NextBtn)" + !define MUI_LICENSEPAGE_TEXT_BOTTOM $(License_Message) + + !insertmacro MUI_PAGE_LICENSE $(license) + +/* + ;# Clean up page - only shown if previous installation(s) <= 2.2.823 were found - checked in .onInit function +; Page custom Page_CleanUp Page_CleanUp_Leave +*/ + ;# Install type page - only shown if previous installation(s) > 2.2.823 were found - checked in .onInit function + Page custom Page_TypeInst Page_TypeInst_Leave + +/* + ;# Components page + !define MUI_COMPONENTSPAGE_SMALLDESC + !define MUI_PAGE_HEADER_TEXT $(CP_HEADER_TEXT) + !define MUI_PAGE_HEADER_SUBTEXT $(CP_HEADER_SUBTEXT) + !define MUI_COMPONENTSPAGE_TEXT_TOP $(CP_TOP) + !define MUI_COMPONENTSPAGE_TEXT_COMPLIST $(CP_COMPLIST) + !define MUI_COMPONENTSPAGE_TEXT_INSTTYPE "" ;#CHANGE $(CP_INSTTYPE) + ;!define MUI_COMPONENTSPAGE_TEXT_DESCRIPTION_TITLE $(CP_DESCRIPTION_TITLE) ;# for this we can use the default text + ;!define MUI_COMPONENTSPAGE_TEXT_DESCRIPTION_INFO $(CP_DESCRIPTION_INFO) ;# for this we can use the default text + !define MUI_PAGE_CUSTOMFUNCTION_PRE Page_Components_Pre + !define MUI_PAGE_CUSTOMFUNCTION_SHOW Page_Components_Show + !define MUI_PAGE_CUSTOMFUNCTION_LEAVE Page_Components_Leave + !insertmacro MUI_PAGE_COMPONENTS +*/ + ;# Directory page - allows for changing/ selecting the install directory + !define MUI_DIRECTORYPAGE_VERIFYONLEAVE + !define MUI_PAGE_CUSTOMFUNCTION_PRE Page_Directory_Pre + !define MUI_PAGE_CUSTOMFUNCTION_LEAVE Page_Directory_Leave + !insertmacro MUI_PAGE_DIRECTORY + +/* + ;# Start Menu Folder page - allows for changing/ selecting the Start Menu Folder (if Shortcuts get installed is configured on the Components page) + !define MUI_STARTMENUPAGE_NODISABLE + !define MUI_STARTMENUPAGE_REGISTRY_ROOT "SHCTX" + !define MUI_STARTMENUPAGE_REGISTRY_KEY "${REG_KEY_UN}" + !define MUI_STARTMENUPAGE_REGISTRY_VALUENAME "StartMenuFolder" + !define MUI_STARTMENUPAGE_DEFAULTFOLDER "OpenCPN" + !define MUI_PAGE_CUSTOMFUNCTION_PRE Page_Startmenu_Pre + !insertmacro MUI_PAGE_STARTMENU "Application" $STARTMENU_FOLDER + + ;# Set Config page - selecting chart director[y|ies] and setting the language in opencpn.ini - only available if opencpn.ini does not exist (or is being deleted) + Page custom Page_SetConfig Page_SetConfig_Leave +*/ + ;# Confirm page - shows all settings for the installation (is mainly needed to always have the 'Install' button on the right page, ie. if Start Menu page is skipped) + Page custom Page_Confirm + + ;# Install page + !define MUI_PAGE_CUSTOMFUNCTION_SHOW Page_Instfiles_Show + !insertmacro MUI_PAGE_INSTFILES + + ;# Finish page + + #!define MUI_FINISHPAGE_RUN opencpn.exe +# !define MUI_FINISHPAGE_RUN +# !define MUI_FINISHPAGE_RUN_FUNCTION ExecAppFile + + !define MUI_FINISHPAGE_SHOWREADME install.log + !define MUI_FINISHPAGE_SHOWREADME_TEXT $(Show_Readme_Text) + !define MUI_FINISHPAGE_SHOWREADME_NOTCHECKED + !define MUI_FINISHPAGE_LINK $(Finish_Link_Text) + !define MUI_FINISHPAGE_LINK_LOCATION $(Finish_Link_URL) + !define MUI_FINISHPAGE_LINK_COLOR 000080 + !define MUI_FINISHPAGE_NOREBOOTSUPPORT + !define MUI_FINISHPAGE_TITLE_3LINES + !insertmacro MUI_PAGE_FINISH + +;-------------------------------- +;################################################################################################## +;# Uninstaller Pages # +;################################################################################################## + ;# Welcome page + !define MUI_WELCOMEPAGE_TITLE_3LINES + !insertmacro MUI_UNPAGE_WELCOME + +/* + ;# Components page + !define MUI_PAGE_CUSTOMFUNCTION_PRE un.Page_Components_Pre + !insertmacro MUI_UNPAGE_COMPONENTS +*/ + ;# Confirm page + !insertmacro MUI_UNPAGE_CONFIRM + ;# Uninstall page + !insertmacro MUI_UNPAGE_INSTFILES + + ;# Finish page + !define MUI_FINISHPAGE_TITLE_3LINES + !insertmacro MUI_UNPAGE_FINISH + +;-------------------------------------------------------------------------------------------------- +;################################################################################################## +;# Languages # +;################################################################################################## +;# Languages + !insertmacro MUI_LANGUAGE "English" ;# first language is the default language + !insertmacro MUI_LANGUAGE "German" + !include /NONFATAL "Langstrings_GERMAN.nsh" + !insertmacro MUI_LANGUAGE "French" + !include /NONFATAL "Langstrings_FRENCH.nsh" + !insertmacro MUI_LANGUAGE "Czech" + !include /NONFATAL "Langstrings_CZECH.nsh" + !insertmacro MUI_LANGUAGE "Danish" + !include /NONFATAL "Langstrings_DANISH.nsh" + !insertmacro MUI_LANGUAGE "Spanish" + !include /NONFATAL "Langstrings_SPANISH.nsh" + !insertmacro MUI_LANGUAGE "Italian" + !include /NONFATAL "Langstrings_ITALIAN.nsh" + !insertmacro MUI_LANGUAGE "Dutch" + !include /NONFATAL "Langstrings_DUTCH.nsh" + !insertmacro MUI_LANGUAGE "Polish" + !include /NONFATAL "Langstrings_POLISH.nsh" + !insertmacro MUI_LANGUAGE "PortugueseBR" + !include /NONFATAL "Langstrings_PORTUGUESEBR.nsh" + !insertmacro MUI_LANGUAGE "Portuguese" + !include /NONFATAL "Langstrings_PORTUGUESE.nsh" + !insertmacro MUI_LANGUAGE "Russian" + !include /NONFATAL "Langstrings_RUSSIAN.nsh" + !insertmacro MUI_LANGUAGE "Swedish" + !include /NONFATAL "Langstrings_SWEDISH.nsh" + !insertmacro MUI_LANGUAGE "Finnish" + !include /NONFATAL "Langstrings_FINNISH.nsh" + !insertmacro MUI_LANGUAGE "Norwegian" + !include /NONFATAL "Langstrings_NORWEGIAN.nsh" + !insertmacro MUI_LANGUAGE "TradChinese" + !include /NONFATAL "Langstrings_CHINESETW.nsh" + !insertmacro MUI_LANGUAGE "Turkish" + !include /NONFATAL "Langstrings_TURKISH.nsh" + ;!insertmacro MUI_LANGUAGE "Hungarian" + ;!include /NONFATAL "Langstrings_HUNGARIAN.nsh" + +;-------------------------------- +;# Reserve Files + ;# If you are using solid compression, files that are required before + ;# the actual installation should be stored first in the data block, + ;# because this will make your installer start faster. + !insertmacro MUI_RESERVEFILE_LANGDLL + +;# Remember the installer language + !define MUI_LANGDLL_REGISTRY_ROOT "HKLM" + !define MUI_LANGDLL_REGISTRY_KEY "${REG_KEY_UN}" + !define MUI_LANGDLL_REGISTRY_VALUENAME "SetupLanguage" + !define MUI_LANGDLL_WINDOWTITLE $(LangDialog_Title) + !define MUI_LANGDLL_INFO $(LangDialog_Text) + +;-------------------------------------------------------------------------------------------------- +;################################################################################################## +;# S E C T I O N S # +;################################################################################################## +;# Installer Sections # +;################################################################################################## +Section "-Topmost Section" SecTopmost ;# this needs to be always the first section to be executed! + SetShellVarContext all + SetOutPath $INSTDIR + + ${If} $INSTALL_TYPE == 1 + ${OrIf} $INSTALL_TYPE == 2 + ${OrIf} $INSTALL_TYPE == 3 + ReadRegStr $0 HKLM "$Prev_Install_RegKey" "UninstallString" + ${StrFilter} "$0" "" "" "$\"" $0 + ClearErrors + ExecWait '"$0" /S /type=1 _?=$INSTDIR' + IfErrors 0 +2 + DetailPrint "Error on uninstalling" + Sleep 100 + Delete $0 + ${EndIf} +SectionEnd + + +;# Install Section /hidden +Section "-Install Section" SecInstall + @CPACK_NSIS_FULL_INSTALL@ + + @CPACK_NSIS_EXTRA_INSTALL_COMMANDS@ + + ;# Create uninstaller + WriteUninstaller "$INSTDIR\Uninstall @CPACK_PACKAGE_VERSION@.exe" + + ;# Registry Entries + SetShellVarContext all ;# make sure that we write to HKLM + ;# HKLM Software\Microsoft\Windows\CurrentVersion\Uninstall\OpenCPN + WriteRegStr SHCTX "${REG_KEY_UN}" "DisplayName" "@CPACK_PACKAGE_NAME@ @CPACK_PACKAGE_VERSION@" + WriteRegStr SHCTX "${REG_KEY_UN}" "DisplayVersion" "@CPACK_PACKAGE_VERSION@" + WriteRegStr SHCTX "${REG_KEY_UN}" "CompareVersion" "$VERSION_DATE" + WriteRegStr SHCTX "${REG_KEY_UN}" "StartMenuPath" "$SMPROGRAMS\$STARTMENU_FOLDER" + WriteRegStr SHCTX "${REG_KEY_UN}" "InstallLocation" "$INSTDIR" + WriteRegStr SHCTX "${REG_KEY_UN}" "UninstallString" "$\"$INSTDIR\Uninstall @CPACK_PACKAGE_VERSION@.exe$\"" + WriteRegStr SHCTX "${REG_KEY_UN}" "QuietUninstallString" "$\"$INSTDIR\Uninstall @CPACK_PACKAGE_VERSION@.exe /S$\"" + WriteRegStr SHCTX "${REG_KEY_UN}" "ConfigLocation" "$APPDATA\@CPACK_NSIS_PACKAGE_NAME_LC@" + WriteRegStr SHCTX "${REG_KEY_UN}" "DisplayIcon" "$INSTDIR\@CPACK_NSIS_INSTALLED_ICON_NAME@" + WriteRegStr SHCTX "${REG_KEY_UN}" "Publisher" "@CPACK_PACKAGE_VENDOR@" + WriteRegDWORD SHCTX "${REG_KEY_UN}" "VersionMajor" $MAJOR_D + WriteRegDWORD SHCTX "${REG_KEY_UN}" "VersionMinor" $MINOR_D + WriteRegDWORD SHCTX "${REG_KEY_UN}" "VersionPatch" $PATCH_D + WriteRegDWORD SHCTX "${REG_KEY_UN}" "NoModify" 1 + WriteRegDWORD SHCTX "${REG_KEY_UN}" "NoRepair" 1 + WriteRegStr SHCTX "${REG_KEY_UN}" "HelpLink" "http://opencpn.org/" + WriteRegStr SHCTX "${REG_KEY_UN}" "URLInfoAbout" "http://opencpn.org/" + WriteRegStr SHCTX "${REG_KEY_UN}" "Contact" "http://opencpn.org/" + WriteRegStr SHCTX "${REG_KEY_UN}" "InstallUser" "$USERS_NAME" + ${If} ${UAC_IsInnerInstance} + WriteRegStr SHCTX "${REG_KEY_UN}" "InstallAdminUser" "$USERNAME" + ${EndIf} + + ;# Create the config folder if it does not exist and set full access rights to it +; ${IfNot} ${FileExists} "$APPDATA\@CPACK_NSIS_PACKAGE_NAME_LC@\*.*" +; CreateDirectory "$APPDATA\@CPACK_NSIS_PACKAGE_NAME_LC@" +; Sleep 250 +; ${EndIf} +; AccessControlW::GrantOnFile "$APPDATA\@CPACK_NSIS_PACKAGE_NAME_LC@" "(BU)" "GenericRead + GenericExecute + GenericWrite + Delete + FullAccess" + + ;# Save the log file + StrCpy $0 "$INSTDIR\install.log" + Push $0 + Call DumpLog +SectionEnd + +;-------------------------------- +;################################################################################################## +;# Uninstaller Sections # +;################################################################################################## + +Section "-un.Delete Config RegKey" UnSecDeleteConfigRegKey + DeleteRegKey HKLM "${REG_KEY}" +SectionEnd + +Section /o "-un.Backup Config to RegKey" UnSecBackupConfigToRegKey + SetShellVarContext all +/* + ${If} ${FileExists} "$APPDATA\@CPACK_NSIS_PACKAGE_NAME_LC@\opencpn.ini" + ClearErrors + StrCpy $0 "" + StrCpy $2 0 + loop: + IntOp $2 $2 + 1 + ReadINIStr $1 "$APPDATA\@CPACK_NSIS_PACKAGE_NAME_LC@\opencpn.ini" "ChartDirectories" "ChartDir$2" + StrCmp $1 "" cont + ${WordReplace} "$1" "\\" "\" "+" $3 + ${unExplode} $4 "^" "$3" + Pop $5 + StrCmp $5 "" cont + StrCmp $0 "" 0 +2 + StrCpy $0 $5 + StrCpy $0 "$0;$5" + Goto loop + cont: + WriteRegStr HKLM "${REG_KEY}" "ChartDirs" "$0" + + ReadINIStr $0 "$APPDATA\@CPACK_NSIS_PACKAGE_NAME_LC@\opencpn.ini" "Settings" "Locale" + StrCmp $0 "" +2 0 + WriteRegStr HKLM "${REG_KEY}" "InstallerLanguage" "$0" + ${EndIf} +*/ +SectionEnd + +Section "un.Delete Config Folder" UnSecDeleteConfigFolder + SetShellVarContext all +/* + ${If} ${FileExists} "$APPDATA\@CPACK_NSIS_PACKAGE_NAME_LC@\*.*" + RMDir /r "$APPDATA\@CPACK_NSIS_PACKAGE_NAME_LC@" + ClearErrors + ${EndIf} +*/ +SectionEnd + +Section "-un.Uninstall" UnSecUninstall + +/* + ;# Delete all Shortcuts + Push $INSTDIR + Call un.Delete_Desktop_Shortcuts + Push $INSTDIR + Call un.Delete_Start_Menu_Shortcuts +*/ + ;# Delete subdirs and files in INSTDIR + ;# Remove the uninstaller itself + ReadRegStr $0 HKLM "${REG_KEY_UN}" "UninstallString" + ${StrFilter} "$0" "" "" "$\"" $0 + Delete $0 + ;# Remove the installation log file + Delete "$INSTDIR\install.log" + @CPACK_NSIS_DELETE_FILES@ + @CPACK_NSIS_DELETE_DIRECTORIES@ + + ;# Remove the installation directory INSTDIR if it is empty + ClearErrors + RMDir "$INSTDIR" + IfErrors 0 cont + IfSilent cont + MessageBox MB_OK|MB_ICONEXCLAMATION "$(Msg_Error_Remove_InstDir)" + + cont: + ;# Remove RegKey + DeleteRegKey HKLM "${REG_KEY_UN}" +SectionEnd + +;-------------------------------------------------------------------------------------------------- +;################################################################################################## +;# F U N C T I O N S # +;################################################################################################## +;# Installer Functions # +;################################################################################################## +;# .onInit Function +Function .onInit + ;# Check if Windows version is at least XP (not Win 98, Win 2000 or older) + ${IfNot} ${AtLeastWinXP} + MessageBox MB_OK|MB_ICONEXCLAMATION "$(Installer_Unsupported_Windows_Version)" + Abort + ${Else} + ${If} ${IsWinXP} + ${AndIf} ${AtMostServicePack} 2 + MessageBox MB_OK|MB_ICONEXCLAMATION "$(Installer_Unsupported_XP_SP_Version)" + Abort + ${EndIf} + ${EndIf} + + ;Prevent multiple instances of the installer + ${IfNot} ${UAC_IsInnerInstance} + System::Call 'kernel32::CreateMutexW(i 0, i 0, t "ocpn_inst_@CPACK_PACKAGE_VERSION@") i .r1 ?e' + Pop $R0 + StrCmp $R0 0 +3 + MessageBox MB_OK|MB_ICONEXCLAMATION "$(Installer_Running)" + Abort + ${EndIf} + + Call GetUserInfo + StrCpy $USERS_NAME $USERNAME + + ;# Macros to be inserted + ${If} $IS_ADMIN == 1 + !insertmacro MUI_LANGDLL_DISPLAY + ${EndIf} + + SetShellVarContext current + StrCpy $USERS_APPDATA $APPDATA + StrCpy $ADMIN_APPDATA $APPDATA + + ;# UAC check if user has Admin privileges and prompt for elevation if not + uac_tryagain: + !insertmacro UAC_RunElevated + StrCpy $Inst_Or_Uninst "$(Installer)" + ${Switch} $0 + ${Case} 0 + ${IfThen} $1 = 1 ${|} Quit ${|} ;# we are the outer process, the inner process has done its work, we are done + ${IfThen} $3 <> 0 ${|} ${Break} ${|} ;# we are admin, let the show go on + ${If} $1 = 3 ;# RunAs completed successfully, but with a non-admin user + MessageBox mb_IconExclamation|mb_TopMost|mb_SetForeground "$(Msg_UAC_Admin_Retry)" /SD IDNO IDOK uac_tryagain IDNO 0 + ${EndIf} + ;# fall-through and die + ${Case} 1223 + MessageBox mb_IconStop|mb_TopMost|mb_SetForeground "$(Msg_UAC_Admin_Abort)" + Quit + ${Case} 1062 + MessageBox mb_IconStop|mb_TopMost|mb_SetForeground "$(Msg_UAC_Logon_Abort)" + Quit + ${Default} + MessageBox mb_IconStop|mb_TopMost|mb_SetForeground "$(Msg_UAC_No_Elevation)" + Quit + ${EndSwitch} + +########## from here we can be sure to run with admin privileges ########## + + ;# Delete all temporary files created during the installation + Delete "$TEMP\opencpn_*.tmp" + + ;# Check for unloaded Registry hive from previous installation attempt e.g. when installer crashed + StrCpy $0 0 + !insertmacro _EnumHKU_AdjustTokens + ${Do} + EnumRegKey $1 HKU "" $0 + StrCmp $1 "" done + IntOp $0 $0 + 1 + ClearErrors + ${WordFind} "$1" "opencpn-inst-tmp-sid" "E*" $2 + IfErrors +2 0 + System::Call "advapi32::RegUnLoadKeyW(i ${HKEY_USERS}, t '$1') i .r3" + ${Loop} + done: + ${If} ${UAC_IsInnerInstance} + !insertmacro UAC_AsUser_GetGlobalVar $USERS_APPDATA + !insertmacro UAC_AsUser_GetGlobalVar $USERS_NAME + ${EndIf} + + ClearErrors + Var /GLOBAL INST_PARAMS + Var /GLOBAL FORCE_SCAN + ${GetParameters} $INST_PARAMS + ${GetOptions} "$INST_PARAMS" "/scan" $FORCE_SCAN + IfErrors +2 + + # Get the user's SID from the username + ReadRegStr $0 HKCU "Volatile Environment" "USERNAME" + System::Call /NOUNLOAD '*(&w${NSIS_MAX_STRLEN})i.R9' + System::Call /NOUNLOAD 'advapi32::LookupAccountNameW(,t "$0",i R9,*i ${NSIS_MAX_STRLEN},w .R8,*i ${NSIS_MAX_STRLEN},*i .r4)i.r5' + System::Call /NOUNLOAD 'advapi32::ConvertSidToStringSidW(i R9,*t .R8)i.r5' + StrCpy $INST_USER_SID $R8 + + Call VersionDate + + ;# check for previous installed versions conforming to this installer + Call Check_Prev_Installs + + ;# check for old installed versions prior to the ones that uses this installer + StrCpy $OLD_INSTALLS 0 + + Call Reg_Scan_Old_Versions_HKLM + + Call EnumProfileList + + Call Get_Users_Values + + ${If} $OLD_INSTALLS == 0 + StrCpy $Skip_Page_CleanUp 1 + ${EndIf} + + + ;# make sure that the DWORD values for the Registry only contain digits + ${StrFilter} "@CPACK_PACKAGE_VERSION_MAJOR@" "1" "" "" $MAJOR_D + ${StrFilter} "@CPACK_PACKAGE_VERSION_MINOR@" "1" "" "" $MINOR_D + ${StrFilter} "@CPACK_PACKAGE_VERSION_PATCH@" "1" "" "" $PATCH_D + + StrCpy $INSTDIR "$PROGRAMFILES\OpenCPN\plugins\s63_pi" + + ;Call GetAllUsers +FunctionEnd + +;-------------------------------- +;# myGuiInit Function +/* +Var CONFIG_EMPTY +Var INI_EXISTS +Var CHARTDB_EXISTS +Var SENC_EXISTS +Var CM93_EXISTS +Var NAVOBJ_EXISTS +Var LOG_EXISTS +Var REG_LANG +Var Count_SecGrpResetConfig +Var SecGrpEndSetConfig_Text +*/ +Function myGuiInit + ;Get chosen installer language + ${Switch} $LANGUAGE + ${Case} ${LANG_CZECH} + StrCpy $LANG_NAME "Čeština" + StrCpy $REG_LANG "cs_CZ" + ${Break} + ${Case} ${LANG_DANISH} + StrCpy $LANG_NAME "Dansk" + StrCpy $REG_LANG "da_DK" + ${Break} + ${Case} ${LANG_GERMAN} + StrCpy $LANG_NAME "Deutsch" + StrCpy $REG_LANG "de_DE" + ${Break} + ${Case} ${LANG_ENGLISH} + StrCpy $LANG_NAME "English" + StrCpy $REG_LANG "en_US" + ${Break} + ${Case} ${LANG_SPANISH} + StrCpy $LANG_NAME "Español" + StrCpy $REG_LANG "es_ES" + ${Break} + ${Case} ${LANG_FRENCH} + StrCpy $LANG_NAME "Français" + StrCpy $REG_LANG "fr_FR" + ${Break} + ${Case} ${LANG_ITALIAN} + StrCpy $LANG_NAME "Italiano" + StrCpy $REG_LANG "it_IT" + ${Break} + ${Case} ${LANG_DUTCH} + StrCpy $LANG_NAME "Nederlandse" + StrCpy $REG_LANG "nl_NL" + ${Break} + ${Case} ${LANG_POLISH} + StrCpy $LANG_NAME "Polski" + StrCpy $REG_LANG "pl_PL" + ${Break} + ${Case} ${LANG_PORTUGUESE} + StrCpy $LANG_NAME "Português" + StrCpy $REG_LANG "pt_PT" + ${Break} + ${Case} ${LANG_PORTUGUESEBR} + StrCpy $LANG_NAME "Português Brasileiro" + StrCpy $REG_LANG "pt_BR" + ${Break} + ${Case} ${LANG_SWEDISH} + StrCpy $LANG_NAME "Svenska" + StrCpy $REG_LANG "sv_SE" + ${Break} + ${Case} ${LANG_RUSSIAN} + StrCpy $LANG_NAME "Русский" + StrCpy $REG_LANG "ru_RU" + ${Break} + ${Case} ${LANG_NORWEGIAN} + StrCpy $LANG_NAME "Norsk" + StrCpy $REG_LANG "nb_NO" + ${Break} + ${Case} ${LANG_FINNISH} + StrCpy $LANG_NAME "Suomalainen" + StrCpy $REG_LANG "fi_FI" + ${Break} + ${Case} ${LANG_TRADCHINESE} + StrCpy $LANG_NAME "正體中文" + StrCpy $REG_LANG "zh_TW" + ${Break} + ${Case} ${LANG_Turkish} + StrCpy $LANG_NAME "Türkçe" + StrCpy $REG_LANG "tr_TR" + ${Break} + ${Default} + ${Break} + ${EndSwitch} + + ;# Set Sections Text + SectionSetText ${SecGrpShortcuts} $(SecGrpShortcuts_Text) + SectionSetText ${SecShortcutStartmenu} $(SecShortcutStartmenu_Text) + SectionSetText ${SecShortcutDesktop} $(SecShortcutDesktop_Text) + SectionSetText ${SecSetConfig} $(SecSetConfig_Text) + +/* + ;# Look for config dir ("%APPDATA%\opencpn) and the several config files + Call Check_Config_Exists + + ${If} $CONFIG_EXISTS != 1 + ${OrIf} $CONFIG_EMPTY == 1 + Call Hide_SecGrpResetConfig + IntOp $0 ${SF_SELECTED} | ${SF_BOLD} + SectionSetFlags ${SecSetConfig} $0 + StrCpy $SetConfig 1 + ${EndIf} +*/ + SetShellVarContext all ;# switch SetShellVarContext back to ALL +FunctionEnd + +/* +;-------------------------------- +;# onSelChange +;Var ConfigSetLang +;Var ConfigSetChartDir +;Var SetConfig +Function .onSelChange + ;# Check if all available Sections in SecGrpResetConfig are selected => set SecGrpResetConfig to selected instead of partially selected + Push $0 + Push $1 + Push $2 + Push $3 + Push $R0 + Push $R1 + StrCpy $0 ${SecGrpResetConfig} + StrCpy $1 0 + StrCpy $2 0 + ${Do} + IntOp $0 $0 + 1 + ${If} ${SectionIsSectionGroupEnd} $0 + Goto end + ${EndIf} + SectionGetText $0 $R0 + ${If} $R0 != "" + ${AndIf} ${SectionIsSelected} $0 + Goto found_selected + ${ElseIf} $R0 != "" + ${AndIfNot} ${SectionIsSelected} $0 + Goto found_unselected + ${EndIf} + ${Loop} + + found_selected: + StrCpy $0 ${SecGrpResetConfig} + ${Do} + IntOp $0 $0 + 1 + ${If} ${SectionIsSectionGroupEnd} $0 + Goto end + ${EndIf} + SectionGetText $0 $R0 + ${If} $R0 == "" + ${AndIfNot} ${SectionIsSelected} $0 + SectionSetFlags $0 ${SF_SELECTED} + ${EndIf} + ${Loop} + + found_unselected: + StrCpy $0 ${SecGrpResetConfig} + ${Do} + IntOp $0 $0 + 1 + ${If} ${SectionIsSectionGroupEnd} $0 + Goto end + ${EndIf} + SectionGetText $0 $R0 + ${If} $R0 == "" + ${AndIf} ${SectionIsSelected} $0 + !insertmacro ClearSectionFlag $0 ${SF_SELECTED} + ${EndIf} + ${Loop} + + end: + SectionGetText ${SecDeleteConfigFile} $R1 + ${If} $R1 != "" + ${IfNot} ${SectionIsReadOnly} ${SecSetConfig} + ${AndIfNot} ${SectionIsSelected} ${SecSetConfig} + ${AndIf} $SetConfig == 1 + StrCpy $SetConfig 0 + ${EndIf} + + ${IfNot} ${SectionIsSelected} ${SecDeleteConfigFile} + ${AndIf} ${SectionIsSelected} ${SecSetConfig} + !insertmacro ClearSectionFlag ${SecSetConfig} ${SF_SELECTED} + IntOp $0 ${SF_RO} | ${SF_BOLD} + SectionSetFlags ${SecSetConfig} $0 + ;SectionSetFlags ${SecSetConfig} ${SF_RO} + StrCpy $SetConfig 1 + ${ElseIfNot} ${SectionIsSelected} ${SecDeleteConfigFile} + ${AndIfNot} ${SectionIsSelected} ${SecSetConfig} + IntOp $0 ${SF_RO} | ${SF_BOLD} + SectionSetFlags ${SecSetConfig} $0 + ;SectionSetFlags ${SecSetConfig} ${SF_RO} + StrCpy $SetConfig 0 + ${ElseIf} ${SectionIsSelected} ${SecDeleteConfigFile} + ${AndIfNot} ${SectionIsSelected} ${SecSetConfig} + ${AndIf} $SetConfig == 1 + !insertmacro ClearSectionFlag ${SecSetConfig} ${SF_RO} + IntOp $0 ${SF_SELECTED} | ${SF_BOLD} + SectionSetFlags ${SecSetConfig} $0 + ;SectionSetFlags ${SecSetConfig} ${SF_SELECTED} + ${ElseIf} ${SectionIsSelected} ${SecDeleteConfigFile} + ${AndIf} $SetConfig == 0 + !insertmacro ClearSectionFlag ${SecSetConfig} ${SF_RO} + StrCpy $SetConfig 0 + ${EndIf} + ${EndIf} + + Pop $R1 + Pop $R0 + Pop $3 + Pop $2 + Pop $1 + Pop $0 +FunctionEnd + +*/ +Function .OnInstFailed + Call InstallerEnd +FunctionEnd + + +Function .OnInstSuccess + Call InstallerEnd +FunctionEnd + + +Function .onGUIEnd + Call InstallerEnd +FunctionEnd + + +Function InstallerEnd + ;# Delete all temporary files created during the installation + Delete "$TEMP\opencpn_*.tmp" + ${If} $EnumHKU_counter > 0 + ${ForEach} $1 $EnumHKU_counter 0 - 1 + System::Call "advapi32::RegUnLoadKeyW(i ${HKEY_USERS}, t '$key_$1')" + ${Next} + ${Endif} +FunctionEnd + +;-------------------------------- +;################################################################################################## +;# Installer Page Functions # +;################################################################################################## +;# Page_License_Leave + Function Page_License_Leave +/* + FindWindow $mui.ComponentsPage "#32770" "" $HWNDPARENT + System::Call "*(i 0, i 0, i 4, i 8) i .r1" + System::Call "User32::MapDialogRect(i $mui.ComponentsPage, i r1) i .r2" + System::Call "*$1(i .r2, i.r3, i.r4, i.r5)" + System::Free $1 + StrCpy $BU_X $4 + StrCpy $BU_Y $5 +*/ + FunctionEnd + +/* +;-------------------------------- +;# Page_CleanUp + Var Label_CleanUp + Var Label_FullScan_CleanUp + Var GroupBox_CleanUp + Var ListBox_CleanUp + Var Button_FullScan_CleanUp + Var Button_UnselectAll_CleanUp + Var Button_SelectAll_CleanUp + Var Button_Uninstall_Selected_CleanUp + Var Banner_Handle + Var MSG_Box_Uninstall_Shown + Function Page_CleanUp + ${If} $Skip_Page_CleanUp == 1 + Abort + ${EndIf} + + !ifndef PBS_MARQUEE + !define PBS_MARQUEE 0x08 + !endif + !ifndef PBM_SETMARQUEE + !define PBM_SETMARQUEE 0x040A + !endif + !ifndef GWL_STYLE + !define GWL_STYLE -16 + !endif + + ${IfNot} $MSG_Box_Uninstall_Shown == 1 + MessageBox MB_YESNO|MB_ICONQUESTION "$(Msg_Uninstall_Old_Versions)" IDYES cont IDNO skip + ${Else} + Goto cont + ${EndIf} + + skip: + Abort + + cont: + StrCpy $MSG_Box_Uninstall_Shown 1 + !insertmacro MUI_HEADER_TEXT "$(Page_CleanUp_Title)" "$(Page_CleanUp_Subtitle)" + + nsDialogs::Create /NOUNLOAD 1018 + Pop $0 + ${If} $0 == error + Abort + ${EndIf} + + ${NSD_CreateLabel} 0 0 200u 16u "$(LAB_FullScan_CleanUp)" + Pop $Label_FullScan_CleanUp + + ${NSD_CreateButton} 220u 0 70u 15u "$(BT_FullScan_CleanUp)" + Pop $Button_FullScan_CleanUp + GetFunctionAddress $0 Button_FullScan_CleanUp_Click + nsDialogs::OnClick /NOUNLOAD $Button_FullScan_CleanUp $0 + + ${NSD_CreateLabel} 0 22u 100% 24u "$(Label_CleanUp_Text)" + Pop $Label_CleanUp + + ${NSD_CreateGroupBox} 0 55u 100% 85u "$(Install_Location_Default)" + Pop $GroupBox_CleanUp + + !define __NSD_ListBoxMultiselect_CLASS LISTBOX + !define __NSD_ListBoxMultiselect_STYLE ${DEFAULT_STYLES}|${WS_TABSTOP}|${WS_VSCROLL}|${LBS_DISABLENOSCROLL}|${LBS_HASSTRINGS}|${LBS_NOINTEGRALHEIGHT}|${LBS_NOTIFY}|${LBS_MULTIPLESEL} + !define __NSD_ListBoxMultiselect_EXSTYLE ${WS_EX_WINDOWEDGE}|${WS_EX_CLIENTEDGE} + !insertmacro __NSD_DefineControl ListBoxMultiselect + ${NSD_CreateListboxMultiselect} 10u 70u 200u 65u "$(LB_CleanUp)" + Pop $ListBox_CleanUp + GetFunctionAddress $0 ListBox_CleanUp_Change + nsDialogs::OnChange /NOUNLOAD $ListBox_CleanUp $0 + + ${NSD_CreateButton} 220u 70u 70u 15u "$(BT_UnselectAll_CleanUp)" + Pop $Button_UnselectAll_CleanUp + GetFunctionAddress $0 Button_UnselectAll_CleanUp_Click + nsDialogs::OnClick /NOUNLOAD $Button_UnselectAll_CleanUp $0 + + ${NSD_CreateButton} 220u 100u 70u 15u "$(BT_SelectAll_CleanUp)" + Pop $Button_SelectAll_CleanUp + GetFunctionAddress $0 Button_SelectAll_CleanUp_Click + nsDialogs::OnClick /NOUNLOAD $Button_SelectAll_CleanUp $0 + + ${NSD_CreateButton} 220u 120u 70u 15u "$(BT_Uninstall_Selected_CleanUp)" + Pop $Button_Uninstall_Selected_CleanUp + GetFunctionAddress $0 Button_Uninstall_Selected_CleanUp_Click + nsDialogs::OnClick /NOUNLOAD $Button_Uninstall_Selected_CleanUp $0 + + + ;# First check if HDD scan was already done + ${If} ${FileExists} "$TEMP\opencpn_hdd_full_scan.tmp" + EnableWindow $Button_FullScan_CleanUp 0 + EnableWindow $Label_FullScan_CleanUp 0 + SendMessage $GroupBox_CleanUp ${WM_SETTEXT} 0 "STR:$(Install_Location_HDD_Scan)" + ClearErrors + FileOpen $R0 "$TEMP\opencpn_hdd_full_scan.tmp" r + IfErrors done1 + ${Do} + FileReadUTF16LE $R0 $R1 + ${If} $R1 == "" + Goto done1 + ${Else} + ${TrimNewLines} $R1 $R1 + SendMessage $ListBox_CleanUp ${LB_ADDSTRING} 0 "STR:$R1" + ${EndIf} + ${Loop} + done1: + FileClose $R0 + ;# if not get values from LM_VERSION and opencpn_old_installs.tmp file + ${Else} + ${IfNot} ${FileExists} "$TEMP\opencpn_hdd_quick_scan.tmp" + ;# Scan the default locations for program installations on a per-user and all-users basis + Banner::show /NOUNLOAD /set 76 "$(Search_old_installations)" + Banner::getWindow /NOUNLOAD + Pop $Banner_Handle + ShowWindow $Banner_Handle ${SW_HIDE} + ${NSD_AddExStyle} $Banner_Handle ${WS_EX_APPWINDOW} + ShowWindow $Banner_Handle ${SW_SHOW} + GetDlgItem $2 $Banner_Handle 1030 + SendMessage $2 ${WM_SETTEXT} 0 "STR:$(text_please_wait_1)" + + ; Get progress bar handle. + GetDlgItem $Marquee_Handle $Banner_Handle 1004 + + ; Set PBS_MARQUEE style for the progress bar control. + System::Call "user32::GetWindowLong(i $Marquee_Handle, i ${GWL_STYLE}) i .r1" + System::Call "user32::SetWindowLong(i $Marquee_Handle, i ${GWL_STYLE}, i $1|${PBS_MARQUEE})" + + ; Send PBM_SETMARQUEE message to start the marquee. + ; lParam is time in milliseconds between marquee animation updates. + SendMessage $Marquee_Handle ${PBM_SETMARQUEE} 1 50 + + System::Call "User32::SetWindowPos(i $Banner_Handle, i -1, i 0, i 0, i 0, i 0, i 83)" + + HideWindow + + Call Quick_Scan_Old_Versions + + ShowWindow $HWNDPARENT ${SW_SHOW} + BringToFront + SendMessage $Marquee_Handle ${PBM_SETMARQUEE} 0 0 + System::Call "user32::SetWindowLong(i $Marquee_Handle, i ${GWL_STYLE}, i $1)" + Banner::destroy + ${EndIf} + + ClearErrors + FileOpen $R0 "$TEMP\opencpn_hdd_quick_scan.tmp" r + IfErrors done2 + ${Do} + FileReadUTF16LE $R0 $R1 + ${If} $R1 == "" + Goto done2 + ${Else} + ${TrimNewLines} $R1 $R1 + SendMessage $ListBox_CleanUp ${LB_ADDSTRING} 0 "STR:$R1" + ${EndIf} + ${Loop} + + done2: + FileClose $R0 + ${EndIf} + ;# Pre-select all listbox-items + ${NSD_LB_GetCount} $ListBox_CleanUp $1 + IntOp $1 $1 - 1 + SendMessage $ListBox_CleanUp ${LB_SELITEMRANGEEX} 0 $1 + Call ListBox_CleanUp_Change + + nsDialogs::Show + FunctionEnd +*/ + +/* + Function Button_FullScan_CleanUp_Click + SendMessage $ListBox_CleanUp ${LB_RESETCONTENT} 0 0 + + Banner::show /NOUNLOAD /set 76 "$(Scanning_HDD)" + Banner::getWindow /NOUNLOAD + Pop $Banner_Handle + ShowWindow $Banner_Handle ${SW_HIDE} + SendMessage $Banner_Handle ${WM_SETTEXT} 0 "STR:$(OCPN_Scanning_HDD)" + ${NSD_AddExStyle} $Banner_Handle ${WS_EX_APPWINDOW} + ShowWindow $Banner_Handle ${SW_SHOW} + GetDlgItem $2 $Banner_Handle 1030 + SendMessage $2 ${WM_SETTEXT} 0 "STR:$(text_please_wait_1)" + + ; Get progress bar handle. + GetDlgItem $Marquee_Handle $Banner_Handle 1004 + + ; Set PBS_MARQUEE style for the progress bar control. + System::Call "user32::GetWindowLong(i $Marquee_Handle, i ${GWL_STYLE}) i .r1" + System::Call "user32::SetWindowLong(i $Marquee_Handle, i ${GWL_STYLE}, i $1|${PBS_MARQUEE})" + + ; Send PBM_SETMARQUEE message to start the marquee. + ; lParam is time in milliseconds between marquee animation updates. + SendMessage $Marquee_Handle ${PBM_SETMARQUEE} 1 50 + + System::Call "User32::SetWindowPos(i $Banner_Handle, i -1, i 0, i 0, i 0, i 0, i 83)" + + HideWindow + + Call Full_Scan_Old_Versions + + ${If} ${FileExists} "$TEMP\opencpn_hdd_full_scan.tmp" + Delete "$TEMP\opencpn_hdd_quick_scan.tmp" + ${EndIf} + + ;# If install locations were found compare with Registry keys + ${If} $counter_tmp > 0 + ${If} $LM_VERSION_INST != "" + ClearErrors + FileOpen $R0 "$TEMP\opencpn_hdd_full_scan.tmp" r + IfErrors done1 + ${Do} + FileReadUTF16LE $R0 $R1 + ${If} $R1 == "" + Goto done1 + ${Else} + ${TrimNewLines} $R1 $R1 + StrCmp $R1 $R2 done1 + ${EndIf} + ${Loop} + ;# Path from Registry key wasn't found => delete RegKey + DeleteRegKey HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\OpenCPN_is1" + StrCpy $LM_VERSION_INST "" + + done1: + FileClose $R0 + ${EndIf} + + ${If} ${FileExists} "$TEMP\opencpn_old_installs.tmp" + ;# Clear the stack + ClearErrors + ${Do} + Pop $0 + IfErrors empty + ${Loop} + empty: + + ClearErrors + FileOpen $R0 "$TEMP\opencpn_old_installs.tmp" r + + IfErrors done3 + ${Do} + FileReadUTF16LE $R0 $R3 + FileReadUTF16LE $R0 $R2 + ${If} $R3 == "" + Goto done3 + ${Else} + ${TrimNewLines} $R3 $R3 + ${TrimNewLines} $R2 $R2 + FileReadUTF16LE $R0 $R1 + ${TrimNewLines} $R1 $R1 + ClearErrors + FileOpen $0 "$TEMP\opencpn_hdd_full_scan.tmp" r + IfErrors next + ${Do} + FileReadUTF16LE $0 $1 + ${If} $1 == "" + Goto next + ${Else} + ${TrimNewLines} $1 $1 + StrCmp $1 $R1 done2 + ${EndIf} + ${Loop} + ;# Path from Registry key wasn't found => delete RegKey + DeleteRegKey HKU $R3 + Goto next + + done2: + Push $R1 + Push $R2 + Push $R3 + next: + FileClose $0 + ${EndIf} + ${Loop} + done3: + FileClose $R0 + + ClearErrors + FileOpen $R0 "$TEMP\opencpn_old_installs.tmp" w + IfErrors done4 + ${Do} + Pop $R1 + IfErrors done4 + FileWriteUTF16LE $R0 $R1 + FileWriteUTF16LE $R0 "$\r$\n" + ${Loop} + done4: + FileClose $R0 + ${EndIf} + ${EndIf} + + EnableWindow $Button_FullScan_CleanUp 0 ;# Disable the Scan HDD button after scan was done + EnableWindow $Label_FullScan_CleanUp 0 ;# Disable the Scan HDD label after scan was done + SendMessage $GroupBox_CleanUp ${WM_SETTEXT} 0 "STR:$(Install_Location_HDD_Scan)" + + ShowWindow $HWNDPARENT ${SW_SHOW} + BringToFront + + ; Stop the marquee and set the old styles back for the progress bar control. + SendMessage $Marquee_Handle ${PBM_SETMARQUEE} 0 0 + System::Call "user32::SetWindowLong(i $Marquee_Handle, i ${GWL_STYLE}, i $1)" + + Banner::destroy + FunctionEnd +*/ + + Function Button_UnselectAll_CleanUp_Click + SendMessage $ListBox_CleanUp ${LB_SETSEL} FALSE -1 + Call ListBox_CleanUp_Change + FunctionEnd + + Function Button_SelectAll_CleanUp_Click + ${NSD_LB_GetCount} $ListBox_CleanUp $1 + IntOp $1 $1 - 1 + ${If} $1 == 0 + IntOp $1 $1 + 1 + ${EndIf} + SendMessage $ListBox_CleanUp ${LB_SELITEMRANGEEX} 0 $1 + Call ListBox_CleanUp_Change + FunctionEnd + + Function ListBox_CleanUp_Change + SendMessage $ListBox_CleanUp ${LB_GETSELCOUNT} 0 0 $1 + ${NSD_LB_GetCount} $ListBox_CleanUp $2 + ${If} $2 > 0 + ${If} $1 == 0 + EnableWindow $Button_Uninstall_Selected_CleanUp 0 + EnableWindow $Button_UnselectAll_CleanUp 0 + EnableWindow $Button_SelectAll_CleanUp 1 + ${ElseIf} $1 > 0 + ${AndIf} $1 == $2 + EnableWindow $Button_Uninstall_Selected_CleanUp 1 + EnableWindow $Button_UnselectAll_CleanUp 1 + EnableWindow $Button_SelectAll_CleanUp 0 + ${Else} + EnableWindow $Button_Uninstall_Selected_CleanUp 1 + EnableWindow $Button_UnselectAll_CleanUp 1 + EnableWindow $Button_SelectAll_CleanUp 1 + ${EndIf} + ${Else} + EnableWindow $Button_Uninstall_Selected_CleanUp 0 + EnableWindow $Button_UnselectAll_CleanUp 0 + EnableWindow $Button_SelectAll_CleanUp 0 + ${EndIf} + FunctionEnd + +/* + Var Uninstall_Path_Tmp + Function Button_Uninstall_Selected_CleanUp_Click + EnableWindow $Button_Uninstall_Selected_CleanUp 0 + SendMessage $ListBox_CleanUp ${LB_GETSELCOUNT} 0 0 $1 + ${NSD_LB_GetCount} $ListBox_CleanUp $2 + ClearErrors + FileOpen $R0 "$TEMP\opencpn_uninstall.tmp" w + IfErrors done + IntOp $2 $2 - 1 + ${ForEach} $3 $2 0 - 1 + SendMessage $ListBox_CleanUp ${LB_GETSEL} $3 0 $4 + ${If} $4 > 0 + System::Call "User32::SendMessage(i $ListBox_CleanUp, i ${LB_GETTEXT}, i $3, t .r5)" + FileWriteUTF16LE $R0 "$5" + FileWriteUTF16LE $R0 "$\r$\n" + SendMessage $ListBox_CleanUp ${LB_DELETESTRING} $3 0 + ${EndIf} + ${Next} + done: + FileClose $R0 + + Call ListBox_CleanUp_Change + + StrCpy $R8 "" + StrCpy $R7 "" + StrCpy $R6 "" + StrCpy $R5 "" + ${If} ${FileExists} "$TEMP\opencpn_uninstall.tmp" + ${If} ${FileExists} "$TEMP\opencpn_hdd_full_scan.tmp" + StrCpy $R8 "opencpn_hdd_full_scan.tmp" + ${ElseIf} ${FileExists} "$TEMP\opencpn_hdd_quick_scan.tmp" + StrCpy $R8 "opencpn_hdd_quick_scan.tmp" + ${EndIf} + + ${If} ${FileExists} "$TEMP\opencpn_old_installs.tmp" + StrCpy $R7 1 + ${EndIf} + + ${If} ${FileExists} "$TEMP\opencpn_old_uninstall_regkeys.tmp" + StrCpy $R6 1 + ${EndIf} + + ${If} ${FileExists} "$TEMP\opencpn_appdata.tmp" + StrCpy $R5 1 + ${EndIf} + + ClearErrors + FileOpen $R4 "$TEMP\opencpn_uninstall.tmp" r + IfErrors end + loop: + ClearErrors + FileReadUTF16LE $R4 $0 + IfErrors end + StrCmp $0 "" loop + StrCmp $0 "$\r$\n" loop + + ${TrimNewLines} $0 $0 + StrCpy $Uninstall_Path_Tmp $0 + + ;# Delete installation directory + ClearErrors + Call Delete_Installation_Dir + IfErrors 0 +2 + MessageBox MB_OK|MB_ICONEXCLAMATION "Error RMDir: $0" ;#ON ERROR + + ;# If deleted installation was the one in the HKLM ...\OpenCPN_is1 subkey => delete RegKey + ${If} $LM_VERSION_INST != "" + StrCmp $0 $LM_VERSION_INST 0 cont + ClearErrors + DeleteRegKey HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\OpenCPN_is1" + IfErrors 0 +2 + MessageBox MB_OK|MB_ICONEXCLAMATION "Error DeleteRegKey HKLM Software\Microsoft\Windows\CurrentVersion\Uninstall\OpenCPN_is1" ;#ON ERROR + StrCpy $LM_VERSION "" + StrCpy $LM_VERSION_INST "" + StrCpy $LM_VERSION_UNINST "" + ${EndIf} + + cont: + ;# Delete Start Menu shortcuts + Push $Uninstall_Path_Tmp + Call Delete_Start_Menu_Shortcuts + + ;# Delete Desktop shortcuts + Push $Uninstall_Path_Tmp + Call Delete_Desktop_Shortcuts + + ;# Delete RegKeys in HKU Software\opencpn.org\... + ${If} $R7 == 1 + Call Update_Old_Installs + ${EndIf} + + ;# Delete RegKeys in HKU Software\...\Uninstall\OpenCPN + ${If} $R6 == 1 + Call Update_Old_Uninstalls + ${EndIf} + + ;# Delete %APPDATA\opencpn folder + ${If} $R5 == 1 + Call Update_Appdata + ${EndIf} + + ${IfNot} $R8 == "" + Call Update_HDD_Scan + ${EndIf} + + Goto loop + end: + FileClose $R4 + Delete "$TEMP\opencpn_uninstall.tmp" + StrCpy $Uninstall_Path_Tmp "" + ${EndIf} + + ${NSD_LB_GetCount} $ListBox_CleanUp $2 + ${If} $2 == 0 ;# listbox is empty - all were uninstalled + StrCpy $Skip_Page_CleanUp 1 + GetDlgItem $0 $HWNDPARENT 1 + SendMessage $0 ${BM_CLICK} 0 0 + ${EndIf} + FunctionEnd +*/ + +/* + Function Update_HDD_Scan + Push $0 + Push $1 + Push $2 + Push $3 + Push $4 + Push $R0 + Push $R8 + ClearErrors + FileOpen $0 "$TEMP\$R8" r ;# open target file for reading + GetTempFileName $R0 ;# get new temp file name + FileOpen $1 $R0 w ;# open temp file for writing + IfErrors end + loop: + FileReadUTF16LE $0 $2 ;# read line from target file + IfErrors done ;# check if end of file reached + ${TrimNewLines} $2 $2 + StrCmp $2 "$Uninstall_Path_Tmp" +2 ;# compare line with search string with CR/LF + FileWriteUTF16LE $1 "$2$\r$\n" ;# write line to temp file + Goto loop + done: + FileClose $0 ;# close target file + FileClose $1 ;# close temp file + Delete "$TEMP\$R8" ;# delete target file + CopyFiles /SILENT $R0 "$TEMP\$R8" ;# copy temp file to target file + Delete $R0 ;# delete temp file + end: + Pop $R8 + Pop $R0 + Pop $4 + Pop $3 + Pop $2 + Pop $1 + Pop $0 + FunctionEnd +*/ + +/* + Function Update_Old_Installs + Push $0 + Push $1 + Push $2 + Push $3 + Push $4 + Push $R0 + Push $R1 + ClearErrors + FileOpen $0 "$TEMP\opencpn_old_installs.tmp" r ;# open target file for reading + GetTempFileName $R0 ;# get new temp file name + FileOpen $1 $R0 w ;# open temp file for writing + IfErrors end + loop: + FileReadUTF16LE $0 $4 ;# read line from target file + FileReadUTF16LE $0 $3 ;# read line from target file + FileReadUTF16LE $0 $2 ;# read line from target file + IfErrors done ;# check if end of file reached + ${TrimNewLines} $2 $2 + StrCmp $2 "$Uninstall_Path_Tmp" +5 ;# compare line with search string with CR/LF + FileWriteUTF16LE $1 $4 ;# write line to temp file + FileWriteUTF16LE $1 $3 ;# write line to temp file + FileWriteUTF16LE $1 "$2$\r$\n" ;# write line to temp file + Goto loop + ${TrimNewLines} $4 $4 + DeleteRegKey HKU "$4" + ${WordFind} "$4" "\" "-2{*" $4 + DeleteRegKey /ifempty HKU "$4" + ClearErrors + Goto loop + done: + FileClose $0 ;# close target file + FileClose $1 ;# close temp file + Delete "$TEMP\opencpn_old_installs.tmp" ;# delete target file + CopyFiles /SILENT $R0 "$TEMP\opencpn_old_installs.tmp" ;# copy temp file to target file + Delete $R0 ;# delete temp file + end: + Pop $R1 + Pop $R0 + Pop $4 + Pop $3 + Pop $2 + Pop $1 + Pop $0 + FunctionEnd +*/ + +/* + Function Update_Old_Uninstalls + Push $0 + Push $1 + Push $2 + Push $3 + Push $4 + Push $R0 + Push $R1 + ClearErrors + FileOpen $0 "$TEMP\opencpn_old_uninstall_regkeys.tmp" r ;# open target file for reading + GetTempFileName $R0 ;# get new temp file name + FileOpen $1 $R0 w ;# open temp file for writing + IfErrors end + loop: + FileReadUTF16LE $0 $4 ;# read line from target file + FileReadUTF16LE $0 $3 ;# read line from target file + FileReadUTF16LE $0 $2 ;# read line from target file + IfErrors done ;# check if end of file reached + ${TrimNewLines} $2 $2 + StrCmp $2 "$Uninstall_Path_Tmp" +5 ;# compare line with search string with CR/LF + FileWriteUTF16LE $1 $4 ;# write line to temp file + FileWriteUTF16LE $1 $3 ;# write line to temp file + FileWriteUTF16LE $1 "$2$\r$\n" ;# write line to temp file + Goto loop + ${TrimNewLines} $3 $3 + DeleteRegKey HKU "$3" + ClearErrors + Goto loop + done: + FileClose $0 ;# close target file + FileClose $1 ;# close temp file + Delete "$TEMP\opencpn_old_uninstall_regkeys.tmp" ;# delete target file + CopyFiles /SILENT $R0 "$TEMP\opencpn_old_uninstall_regkeys.tmp" ;# copy temp file to target file + Delete $R0 ;# delete temp file + end: + Pop $R1 + Pop $R0 + Pop $4 + Pop $3 + Pop $2 + Pop $1 + Pop $0 + FunctionEnd +*/ + +/* + Function Update_Appdata + Push $0 + Push $1 + Push $2 + Push $3 + Push $4 + Push $R0 + Push $R1 + ClearErrors + FileOpen $0 "$TEMP\opencpn_appdata.tmp" r ;# open target file for reading + GetTempFileName $R0 ;# get new temp file name + FileOpen $1 $R0 w ;# open temp file for writing + IfErrors end + loop: + FileReadUTF16LE $0 $4 ;# read line from target file + FileReadUTF16LE $0 $3 ;# read line from target file + FileReadUTF16LE $0 $2 ;# read line from target file + IfErrors done ;# check if end of file reached + ${TrimNewLines} $2 $2 + StrCmp $2 "$Uninstall_Path_Tmp" +5 ;# compare line with search string with CR/LF + FileWriteUTF16LE $1 $4 ;# write line to temp file + FileWriteUTF16LE $1 $3 ;# write line to temp file + FileWriteUTF16LE $1 "$2$\r$\n" ;# write line to temp file + Goto loop + ${TrimNewLines} $3 $3 + RMDir /r "$3\opencpn" + ClearErrors + Goto loop + done: + FileClose $0 ;# close target file + FileClose $1 ;# close temp file + Delete "$TEMP\opencpn_appdata.tmp" ;# delete target file + CopyFiles /SILENT $R0 "$TEMP\opencpn_appdata.tmp" ;# copy temp file to target file + Delete $R0 ;# delete temp file + end: + Pop $R1 + Pop $R0 + Pop $4 + Pop $3 + Pop $2 + Pop $1 + Pop $0 + FunctionEnd +*/ + +/* +;-------------------------------- +;# Page_CleanUp_Leave + Function Page_CleanUp_Leave + ${NSD_LB_GetCount} $ListBox_CleanUp $2 + ${If} $2 > 0 ;# listbox is not empty - not all old versions were uninstalled + MessageBox MB_YESNO|MB_ICONQUESTION "$(Msg_Not_All_Old_Uninstalled)" IDYES leaving + Abort + ${EndIf} + leaving: + SendMessage $ListBox_CleanUp ${LB_RESETCONTENT} 0 0 + FunctionEnd + +*/ + +;-------------------------------- +;# Page_TypeInst +/* Var Label_TypeInst_Reinstall + Var RB_Reinstall + Var Label_TypeInst_Upgrade + Var RB_Upgrade + Var Label_TypeInst_Downgrade + Var RB_Downgrade + Var Label_TypeInst_Parallel + Var GroupBox_TypeInst + Var RB_Parallel + Var TI_REINSTALL + Var TI_UPGRADE + Var TI_DOWNGRADE + Var TI_PARALLEL + Var GroupBox_Size + Var INSTALL_TYPE + */ + Function Page_TypeInst + ${If} $Skip_Page_TypeInst == 1 + Abort + ${EndIf} + ${If} $VERSION_EXISTS == 1 + !insertmacro MUI_HEADER_TEXT $(Page_TypeInst_Title_Exists) $(Page_TypeInst_Subtitle_Exists) + ${ElseIf} $MULTIPLE_INSTALLS == 1 + !insertmacro MUI_HEADER_TEXT $(Page_TypeInst_Title_1) $(Page_TypeInst_Subtitle_1) + ${ElseIf} $MULTIPLE_INSTALLS > 1 + !insertmacro MUI_HEADER_TEXT $(Page_TypeInst_Title) $(Page_TypeInst_Subtitle) + ${EndIf} + + nsDialogs::Create /NOUNLOAD 1018 + Pop $0 + + ${If} $0 == error + Abort + ${EndIf} + + ;Case 1: same version already installed => Option 1: Reinstall + ${If} $VERSION_EXISTS == 1 + ${NSD_CreateLabel} 0 0 100% 40u "$(Label_TypeInst_Reinstall_Text)" + Pop $Label_TypeInst_Reinstall + + ${NSD_CreateRadioButton} 10u 65u 100% 10u "$(RB_Reinstall_TypeInst_Text)" + Pop $RB_Reinstall + ${NSD_AddStyle} $RB_Reinstall ${WS_GROUP} + ${NSD_SetState} $RB_Reinstall ${BST_CHECKED} + + StrCpy $GroupBox_Size 1 + ;Case 2: one older previous installation => Option 1: Upgrade Option 2: Parallel Installation + ${ElseIf} $MULTIPLE_INSTALLS == 1 + ${AndIf} $VERSION_NEWER == 1 + ${NSD_CreateLabel} 0 0 100% 32u "$(Label_TypeInst_Upgrade_Text)" + Pop $Label_TypeInst_Upgrade + + ${NSD_CreateRadioButton} 10u 65u 100% 10u "$(RB_Upgrade_TypeInst_Text)" + Pop $RB_Upgrade + ${NSD_AddStyle} $RB_Upgrade ${WS_GROUP} + ${If} $TI_UPGRADE != "" + ${NSD_SetState} $RB_Upgrade $TI_UPGRADE + ${ElseIf} $TI_UPGRADE == "" + ${AndIf} $TI_PARALLEL == "" + ${NSD_SetState} $RB_Upgrade ${BST_CHECKED} + ${EndIf} +/* + ${NSD_CreateRadioButton} 10u 85u 100% 10u "$(RB_Parallel_TypeInst_Text)" + Pop $RB_Parallel + ${If} $TI_PARALLEL != "" + ${NSD_SetState} $RB_Parallel $TI_PARALLEL + ${EndIf} +*/ + StrCpy $GroupBox_Size 1 + ;Case 3: one newer previous installation => Option 1: Downgrade Option 2: Parallel Installation + ${ElseIf} $MULTIPLE_INSTALLS == 1 + ${AndIf} $VERSION_OLDER == 1 + ${NSD_CreateLabel} 0 0 100% 32u "$(Label_TypeInst_Downgrade_Text)" + Pop $Label_TypeInst_Downgrade + + ${NSD_CreateRadioButton} 10u 65u 100% 10u "$(RB_Downgrade_TypeInst_Text)" + Pop $RB_Downgrade + ${NSD_AddStyle} $RB_Downgrade ${WS_GROUP} + ${If} $TI_DOWNGRADE != "" + ${NSD_SetState} $RB_Upgrade $TI_DOWNGRADE + ${ElseIf} $TI_DOWNGRADE == "" + ${AndIf} $TI_PARALLEL == "" + ${NSD_SetState} $RB_Downgrade ${BST_CHECKED} + ${EndIf} +/* + ${NSD_CreateRadioButton} 10u 85u 100% 10u "$(RB_Parallel_TypeInst_Text)" + Pop $RB_Parallel + ${If} $TI_PARALLEL != "" + ${NSD_SetState} $RB_Parallel $TI_PARALLEL + ${EndIf} +*/ + StrCpy $GroupBox_Size 1 +/* + ;Case 4: more than one previous installation => Option 1: Parallel Installation + ${ElseIf} $MULTIPLE_INSTALLS > 1 + ${NSD_CreateLabel} 0 0 100% 32u "$(Label_TypeInst_Parallel_Text)" + Pop $Label_TypeInst_Parallel + + ${NSD_CreateRadioButton} 10u 65u 100% 10u "$(RB_Parallel_TypeInst_Text)" + Pop $RB_Parallel + ${NSD_AddStyle} $RB_Parallel ${WS_GROUP} + ${NSD_SetState} $RB_Parallel ${BST_CHECKED} + + StrCpy $GroupBox_Size 1 +*/ + ${EndIf} + + ${If} $GroupBox_Size == 1 + ${NSD_CreateGroupBox} 0 50u 100% 35u "Install Type" + Pop $GroupBox_TypeInst + ${ElseIf} $GroupBox_Size == 2 + ${NSD_CreateGroupBox} 0 50u 100% 55u "Install Type" + Pop $GroupBox_TypeInst + ${EndIf} + + nsDialogs::Show + FunctionEnd + +;-------------------------------- +;# Page_TypeInst_Leave + Function Page_TypeInst_Leave + ${If} $RB_Reinstall != "" + ${NSD_GetState} $RB_Reinstall $TI_REINSTALL + ${EndIf} + ${If} $RB_Upgrade != "" + ${NSD_GetState} $RB_Upgrade $TI_UPGRADE + ${EndIf} + ${If} $RB_Downgrade != "" + ${NSD_GetState} $RB_Downgrade $TI_DOWNGRADE + ${EndIf} + ${If} $RB_Parallel != "" + ${NSD_GetState} $RB_Parallel $TI_PARALLEL + ${EndIf} + + StrCpy $Skip_Page_Directory "" + ${If} $TI_REINSTALL == 1 + StrCpy $INSTALL_TYPE 1 + ${ElseIf} $TI_UPGRADE == 1 + StrCpy $INSTALL_TYPE 2 + ${ElseIf} $TI_DOWNGRADE == 1 + StrCpy $INSTALL_TYPE 3 + ${ElseIf} $TI_PARALLEL == 1 + StrCpy $INSTALL_TYPE 4 + ${EndIf} + + ${If} $INSTALL_TYPE == 1 + ${OrIf} $INSTALL_TYPE == 2 + ${OrIf} $INSTALL_TYPE == 3 + StrCpy $Skip_Page_Directory 1 + ReadRegStr $0 HKLM "$Prev_Install_RegKey" "InstallLocation" + StrCpy $INSTDIR $0 + ${EndIf} + + ; On Upgrade or Downgrade, tentatively trim any Package Version trailer from install location + ${If} $INSTALL_TYPE == 2 + ${OrIf} $INSTALL_TYPE == 3 + StrCpy $R1 0 + Push $INSTDIR + Push "OpenCPN\plugins\s63_pi" + Push ">" + Call StrLoc + Pop $0 + + StrCpy $R1 $INSTDIR $0 + StrCpy $R1 "$R1OpenCPN\plugins\s63_pi" + StrLen $R2 $INSTDIR + StrLen $R3 $R1 + +/* + ; If Previous install dir was a parallel, make the upgrade also parallel. + ${If} $R2 > $R3 + StrCpy $INSTDIR "$R1 @CPACK_PACKAGE_VERSION@" + ${Else} + StrCpy $INSTDIR $R1 + ${Endif} +*/ + ${Endif} + + ${If} $INSTALL_TYPE == 4 + StrCpy $INSTDIR "$PROGRAMFILES\OpenCPN\plugins\s63_pi @CPACK_PACKAGE_VERSION@" + ${EndIf} + FunctionEnd + +/* +;-------------------------------- +;# Page_Components_Pre + Function Page_Components_Pre + + FunctionEnd + +;-------------------------------- +;# Page_Components_Show + Function Page_Components_Show + ;# change controls size and position on the Components Page + Push $0 + Push $1 + Push $2 + Push $3 + Push $4 + Push $5 + Push $6 + Push $7 + + FindWindow $mui.ComponentsPage "#32770" "" $HWNDPARENT + + ;GetDlgItem $mui.ComponentsPage.Text $mui.ComponentsPage 1006 + GetDlgItem $mui.ComponentsPage.InstTypesText $mui.ComponentsPage 1021 + ShowWindow $mui.ComponentsPage.InstTypesText ${SW_HIDE} + + GetDlgItem $mui.ComponentsPage.ComponentsText $mui.ComponentsPage 1022 + GetDlgItem $mui.ComponentsPage.InstTypes $mui.ComponentsPage 1017 + ShowWindow $mui.ComponentsPage.InstTypes ${SW_HIDE} + + GetDlgItem $mui.ComponentsPage.Components $mui.ComponentsPage 1032 + GetDlgItem $mui.ComponentsPage.DescriptionTitle $mui.ComponentsPage 1042 + GetDlgItem $mui.ComponentsPage.DescriptionText $mui.ComponentsPage 1043 + GetDlgItem $mui.ComponentsPage.SpaceRequired $mui.ComponentsPage 1023 + ShowWindow $mui.ComponentsPage.SpaceRequired ${SW_HIDE} + + Push "198" + Push "40" + Push "100" + Push "100" + Call DU2Pix + System::Call "User32::SetWindowPos(i $mui.ComponentsPage.DescriptionTitle, i 0, i $1, i $2, i $3, i $4, i 64)" ;# 1042 + + Push "203" + Push "50" + Push "90" + Push "85" + Call DU2Pix + System::Call "User32::SetWindowPos(i $mui.ComponentsPage.DescriptionText, i 0, i $1, i $2, i $3, i $4, i 64)" ;# 1043 + + Push "0" + Push "25" + Push "300" + Push "15" + Call DU2Pix + System::Call "User32::SetWindowPos(i $mui.ComponentsPage.ComponentsText, i 0, i $1, i $2, i $3, i $4, i 64)" ;# 1022 + + Push "0" + Push "40" + Push "195" + Push "100" + Call DU2Pix + System::Call "User32::SetWindowPos(i $mui.ComponentsPage.Components, i 0, i $1, i $2, i $3, i $4, i 64)" ;# 1032 + + Pop $7 + Pop $6 + Pop $5 + Pop $4 + Pop $3 + Pop $2 + Pop $1 + Pop $0 + FunctionEnd + +;-------------------------------- +;# Page_Components_Leave + Function Page_Components_Leave + ${IfNot} ${SectionIsSelected} ${SecSetConfig} + StrCpy $Skip_Page_SetConfig 1 + ${Else} + StrCpy $Skip_Page_SetConfig 0 + ${EndIf} + + ${IfNot} ${SectionIsSelected} ${SecShortcutStartmenu} + StrCpy $Skip_Page_Startmenu 1 + ${Else} + StrCpy $Skip_Page_Startmenu 0 + ${EndIf} + FunctionEnd +*/ +;-------------------------------- +;# Page_Directory_Pre + Function Page_Directory_Pre + ${If} $Skip_Page_Directory == 1 + Abort + ${EndIf} + FunctionEnd + +;-------------------------------- +;# Page_Directory_Leave + Function Page_Directory_Leave + GetInstDirError $R0 + ${If} $R0 > 0 ;# Invalid path entered + MessageBox MB_OK|MB_ICONSTOP "$(Msg_Path_Invalid)" + Abort + ${EndIf} + + ${If} $INSTALL_TYPE == 4 + ${AndIf} ${FileExists} "$INSTDIR\opencpn.exe" + MessageBox MB_OK|MB_ICONSTOP "$(Msg_Path_Installation_Exists)" + Abort + ${EndIf} + FunctionEnd + + + + + +/* +;-------------------------------- +;# Page_Startmenu_Pre + Function Page_Startmenu_Pre + ${If} $Skip_Page_Startmenu == 1 + Abort + ${EndIf} + + ${If} $INSTALL_TYPE == 1 + ${OrIf} $INSTALL_TYPE == 2 + ${OrIf} $INSTALL_TYPE == 3 + ReadRegStr $0 HKLM "$Prev_Install_RegKey" "StartMenuFolder" + StrCpy $STARTMENU_FOLDER $0 + ${EndIf} + FunctionEnd +*/ +;-------------------------------- +/*# Page_SetConfig + Var Label_SetConfig + Var GroupBox_Language_SetConfig + Var CheckBox_Language_SetConfig + Var GroupBox_ChartDir_SetConfig + Var DirRequest_SetConfig + Var Button_Delete_SetConfig + Var Button_DeleteAll_SetConfig + Var Button_Add_SetConfig + Var ListBox_SetConfig +*/ + +/* + Function Page_SetConfig + ${If} $Skip_Page_SetConfig == 1 + Abort + ${EndIf} + !insertmacro MUI_HEADER_TEXT $(Page_SetConfig_Title) $(Page_SetConfig_Subtitle) + nsDialogs::Create /NOUNLOAD 1018 + Pop $0 + ${If} $0 == error + Abort + ${EndIf} + + ${NSD_CreateLabel} 0 0 100% 16u "$(Label_SetConfig_Text)" + Pop $Label_SetConfig + + ${NSD_CreateGroupBox} 0 20u 100% 30u "$(GB_Language_SetConfig_Text)" + Pop $GroupBox_Language_SetConfig + + ${NSD_CreateCheckBox} 10u 35u 100% 10u "$(CB_Language_SetConfig_Text)" + Pop $CheckBox_Language_SetConfig + ;StrCmp $CONFIG_SET_LANG "" cont + ${If} $CONFIG_SET_LANG == "" + ${NSD_SetState} $CheckBox_Language_SetConfig ${BST_CHECKED} + Goto cont + ${EndIf} + + StrCmp $CONFIG_SET_LANG 0 0 +2 + ${NSD_SetState} $CheckBox_Language_SetConfig ${BST_UNCHECKED} + StrCmp $CONFIG_SET_LANG 1 0 +2 + ${NSD_SetState} $CheckBox_Language_SetConfig ${BST_CHECKED} + + cont: + ${NSD_CreateGroupBox} 0 55u 100% 85u "$(GB_ChartDir_SetConfig_Text)" + Pop $GroupBox_ChartDir_SetConfig + + ${NSD_CreateButton} 220u 70u 60u 15u "$(BT_Delete_SetConfig_Text)" + Pop $Button_Delete_SetConfig + GetFunctionAddress $0 Button_Delete_SetConfig_Click + nsDialogs::OnClick /NOUNLOAD $Button_Delete_SetConfig $0 + + ${NSD_CreateButton} 220u 88u 60u 15u "$(BT_DeleteAll_SetConfig_Text)" + Pop $Button_DeleteAll_SetConfig + GetFunctionAddress $0 Button_DeleteAll_SetConfig_Click + nsDialogs::OnClick /NOUNLOAD $Button_DeleteAll_SetConfig $0 + + ${NSD_CreateButton} 220u 115u 60u 15u "$(BT_Browse_SetConfig_Text)" + Pop $Button_Add_SetConfig + GetFunctionAddress $0 Button_Add_SetConfig_Click + nsDialogs::OnClick /NOUNLOAD $Button_Add_SetConfig $0 + + ${NSD_CreateListBox} 10u 70u 200u 60u $(LB_SetConfig) + Pop $ListBox_SetConfig + GetFunctionAddress $0 ListBox_SetConfig_Change + nsDialogs::OnChange /NOUNLOAD $ListBox_SetConfig $0 + ${IfNot} $CHART_DIR_EMPTY == 1 + SetShellVarContext all + ${If} ${FileExists} "$TEMP\opencpn_chart_dirs.tmp" + ClearErrors + FileOpen $R0 "$TEMP\opencpn_chart_dirs.tmp" r + IfErrors end + loop: + ClearErrors + FileReadUTF16LE $R0 $1 + IfErrors end + ${TrimNewLines} $1 $1 + SendMessage $ListBox_SetConfig ${LB_ADDSTRING} 0 "STR:$1" + Goto loop + end: + FileClose $R0 + ${ElseIf} $INI_EXISTS == 1 + StrCpy $R2 0 + loop2: + IntOp $R2 $R2 + 1 + ReadINIStr $R1 "$APPDATA\@CPACK_NSIS_PACKAGE_NAME_LC@\opencpn.ini" "ChartDirectories" "ChartDir$R2" + StrCmp $R1 "" cont2 + ${WordReplace} "$R1" "\\" "\" "+" $R3 + ${Explode} $R4 "^" "$R3" + Pop $R5 + StrCmp $R5 "" cont2 + SendMessage $ListBox_SetConfig ${LB_ADDSTRING} 0 "STR:$R5" + Goto loop2 + ${Else} + ReadRegStr $0 HKLM "Software\OpenCPN" "ChartDirs" + StrCmp $0 "" cont2 + ${Explode} $3 ";" "$0" + ${For} $1 1 $3 + Pop $2 + ${TrimNewLines} $2 $2 + SendMessage $ListBox_SetConfig ${LB_ADDSTRING} 0 "STR:$2" + ${Next} + ${EndIf} + ${EndIf} + + cont2: + Call ListBox_SetConfig_Change + nsDialogs::Show + FunctionEnd + + Function Button_Delete_SetConfig_Click + SendMessage $ListBox_SetConfig ${LB_GETCURSEL} 0 0 $0 + SendMessage $ListBox_SetConfig ${LB_DELETESTRING} $0 0 + Call ListBox_SetConfig_Change + FunctionEnd + + Function Button_DeleteAll_SetConfig_Click + SendMessage $ListBox_SetConfig ${LB_RESETCONTENT} 0 0 + Call ListBox_SetConfig_Change + FunctionEnd + + Function Button_Add_SetConfig_Click + Var /GLOBAL Initial_Dir + StrCmp $Initial_Dir "" 0 +3 + SetShellVarContext all + StrCpy $Initial_Dir "$DOCUMENTS" + nsDialogs::SelectFolderDialog /NOUNLOAD "$(Select_Chart_Directory)" "$Initial_Dir" + Pop $0 + ${If} $0 == error + Abort + ${EndIf} + StrCpy $Initial_Dir $0 + ${NSD_LB_GetCount} $ListBox_SetConfig $2 + ${If} $2 > 0 + SendMessage $ListBox_SetConfig ${LB_FINDSTRINGEXACT} -1 "STR:$0" $6 + ${IfNot} $6 < 0 + Goto end + ${EndIf} + ${EndIf} + SendMessage $ListBox_SetConfig ${LB_ADDSTRING} 0 "STR:$0" + end: + Call ListBox_SetConfig_Change + FunctionEnd + + Function ListBox_SetConfig_Change + ${NSD_LB_GetCount} $ListBox_SetConfig $0 + ${If} $0 > 0 + StrCpy $CHART_DIR_EMPTY 0 + ${NSD_LB_GetSelection} $ListBox_SetConfig $1 + ${If} $1 != "" + EnableWindow $Button_Delete_SetConfig 1 + ${Else} + EnableWindow $Button_Delete_SetConfig 0 + ${EndIf} + EnableWindow $Button_DeleteAll_SetConfig 1 + ${Else} + EnableWindow $Button_Delete_SetConfig 0 + EnableWindow $Button_DeleteAll_SetConfig 0 + StrCpy $CHART_DIR_EMPTY 1 + ${EndIf} + FunctionEnd + +*/ +/* +;-------------------------------- +# Page_SetConfig_Leave +# Var CHART_DIR_TMP_FILE + + Function Page_SetConfig_Leave + ${NSD_LB_GetCount} $ListBox_SetConfig $0 + ${If} $0 > 0 + ClearErrors + FileOpen $R0 "$TEMP\opencpn_chart_dirs.tmp" w + IfErrors done + IntOp $0 $0 - 1 + ${For} $1 0 $0 + SendMessage $ListBox_SetConfig ${LB_SETCURSEL} $1 0 + System::Call "User32::SendMessage(i $ListBox_SetConfig, i ${LB_GETTEXT}, i $1, t .r2)" + FileWriteUTF16LE $R0 $2 + FileWriteUTF16LE $R0 "$\r$\n" + ${Next} + FileClose $R0 + StrCpy $CHART_DIR_TMP_FILE 1 + ${Else} + StrCpy $CHART_DIR_EMPTY 1 + ${EndIf} + + done: + ${NSD_GetState} $CheckBox_Language_SetConfig $0 + ${If} $0 == ${BST_CHECKED} + StrCpy $CONFIG_SET_LANG 1 + ${Else} + StrCpy $CONFIG_SET_LANG 0 + ${EndIf} + FunctionEnd +*/ +;-------------------------------- +;# Page_Confirm + Var Install_Options + Var TEXT_INSTALL_OPTIONS + Function Page_Confirm + !insertmacro MUI_HEADER_TEXT $(Page_Confirm_Title) $(Page_Confirm_Subtitle) + ;# gather all installation settings and prepare (string) variable '$Install_Options' to display + ;# add the installation type to '$Install_Options' + StrCpy $Install_Options "$(Installation_Type):$\r$\n" + ${If} $Skip_Page_TypeInst != 1 + ${Switch} $INSTALL_TYPE + ${Case} 1 + StrCpy $Install_Options "$Install_Options$\t$(Type_Reinstall)" + ${Break} + ${Case} 2 + StrCpy $Install_Options "$Install_Options$\t$(Type_Upgrade)" + ${Break} + ${Case} 3 + StrCpy $Install_Options "$Install_Options$\t$(Type_Downgrade)" + ${Break} + ${Case} 4 + StrCpy $Install_Options "$Install_Options$\t$(Type_Parallel_Installation)" + ${Break} + ${Default} + ${Break} + ${EndSwitch} + ${Else} + StrCpy $Install_Options "$Install_Options$\t$(Type_Fresh_Installation)" + ${EndIf} + + ;# add the installation directory to '$Install_Options' + StrCpy $Install_Options "$Install_Options$\r$\n$\r$\n$(Installation_Directory):$\r$\n$\t$INSTDIR" + +/* + ;# add the delete config settings to '$Install_Options' + ${If} $CONFIG_EXISTS == 1 + ${AndIf} $CONFIG_EMPTY != 1 + StrCpy $Install_Options "$Install_Options$\r$\n$\r$\n$(Installation_Delete_Config):" + SectionGetFlags ${SecGrpResetConfig} $0 + SectionGetFlags ${SecGrpResetConfig} $1 + IntOp $0 $0 & ${SF_SELECTED} + IntOp $1 $1 & ${SF_PSELECTED} + StrCmp $0 0 +3 0 + StrCpy $Install_Options "$Install_Options$\r$\n$\t$(SecGrpResetConfig_Text)" + Goto cont + + StrCmp $1 0 none_selected 0 + SectionGetFlags ${SecDeleteConfigFile} $0 + IntOp $0 $0 & ${SF_SELECTED} + StrCmp $0 0 +2 0 + StrCpy $Install_Options "$Install_Options$\r$\n$\t$(SecDeleteConfigFile_Text)" + SectionGetFlags ${SecDeleteChartDB} $0 + IntOp $0 $0 & ${SF_SELECTED} + StrCmp $0 0 +2 0 + StrCpy $Install_Options "$Install_Options$\r$\n$\t$(SecDeleteChartDB_Text)" + SectionGetFlags ${SecDeleteSENC} $0 + IntOp $0 $0 & ${SF_SELECTED} + StrCmp $0 0 +2 0 + StrCpy $Install_Options "$Install_Options$\r$\n$\t$(SecDeleteSENC_Text)" + SectionGetFlags ${SecDeleteCM93} $0 + IntOp $0 $0 & ${SF_SELECTED} + StrCmp $0 0 +2 0 + StrCpy $Install_Options "$Install_Options$\r$\n$\t$(SecDeleteCM93_Text)" + SectionGetFlags ${SecDeleteNavobjFile} $0 + IntOp $0 $0 & ${SF_SELECTED} + StrCmp $0 0 +2 0 + StrCpy $Install_Options "$Install_Options$\r$\n$\t$(SecDeleteNavobjFile_Text)" + SectionGetFlags ${SecDeleteLogFile} $0 + IntOp $0 $0 & ${SF_SELECTED} + StrCmp $0 0 +2 0 + StrCpy $Install_Options "$Install_Options$\r$\n$\t$(SecDeleteLogFile_Text)" + Goto cont + + none_selected: + StrCpy $Install_Options "$Install_Options$\r$\n$\t$(text_none)" + + cont: + ${EndIf} +*/ + +/* + ;# add the shortcut settings to '$Install_Options' + StrCpy $Install_Options "$Install_Options$\r$\n$\r$\n$(Create_Shortcuts):" + SectionGetFlags ${SecShortcutStartmenu} $0 + IntOp $0 $0 & ${SF_SELECTED} + ${If} $0 != 0 + StrCpy $Install_Options "$Install_Options$\r$\n$\t$(Create_Shortcut_Start_Menu): $STARTMENU_FOLDER" + StrCpy $2 1 + ${Else} + StrCpy $2 0 + ${EndIf} + + SectionGetFlags ${SecShortcutDesktop} $0 + IntOp $0 $0 & ${SF_SELECTED} + ${If} $0 != 0 + StrCpy $Install_Options "$Install_Options$\r$\n$\t$(Create_Shortcut_Desktop): $DESKTOP" + ${Else} + StrCmp $2 0 0 +2 + StrCpy $Install_Options "$Install_Options$\r$\n$\t$(text_none)" + ${EndIf} +*/ + +/* + ;# add the pre-config settings to '$Install_Options' + ${IfNot} ${SectionIsReadOnly} ${SecSetConfig} + ${AndIf} ${SectionIsSelected} ${SecSetConfig} + StrCpy $Install_Options "$Install_Options$\r$\n$\r$\n$(SecSetConfig_Text):" + StrCmp $CONFIG_SET_LANG 1 0 +2 + StrCpy $Install_Options "$Install_Options$\r$\n$\t$(CB_Language_SetConfig_Text)" + StrCmp $CHART_DIR_TMP_FILE 1 0 end + IfFileExists "$TEMP\opencpn_chart_dirs.tmp" 0 end + StrCpy $Install_Options "$Install_Options$\r$\n$\t$(GB_ChartDir_SetConfig_Text)" + ClearErrors + FileOpen $0 "$TEMP\opencpn_chart_dirs.tmp" r + IfErrors end + ${Do} + FileReadUTF16LE $0 $1 + IfErrors done + ${TrimNewLines} $1 $1 + StrCmp $1 "" +2 + StrCpy $Install_Options "$Install_Options$\r$\n$\t - $1" + ${Loop} + done: + FileClose $0 + end: + ${EndIf} + ;# end '$Install_Options' +*/ + nsDialogs::Create /NOUNLOAD 1018 + Pop $0 + ${If} $0 == error + Abort + ${EndIf} + + nsDialogs::CreateControl EDIT "${__NSD_Text_STYLE}|${WS_VSCROLL}|${WS_HSCROLL}|${ES_MULTILINE}|${ES_WANTRETURN}|${ES_READONLY}" "${__NSD_Text_EXSTYLE}" 0 0 100% 100% "$Install_Options" + Pop $TEXT_INSTALL_OPTIONS + + nsDialogs::Show + FunctionEnd + +;# Page_Instfiles_Show + Function Page_Instfiles_Show + w7tbp::Start + FunctionEnd + +;-------------------------------- +;################################################################################################## +;# General Installer Functions # +;################################################################################################## +Function GetAllUsers + ReadRegStr $0 HKLM "System\CurrentControlSet\Control\ComputerName\ActiveComputerName" "ComputerName" + System::Call 'netapi32::NetUserEnum(w "\\$0",i 0,i 2,*i .R0,i ${NSIS_MAX_STRLEN}, *i .R1,*i .R2,*i .r1)i .r2' + StrCpy $R8 $R0 + IntOp $R2 $R2 - 1 + ${ForEach} $9 0 $R2 + 1 + System::Call "*$R0(w.R9)" + MessageBox MB_OK "[$R9]" + IntOp $R0 $R0 + 4 + ${Next} + System::Call 'netapi32.dll::NetApiBufferFree(i R8)i .R1' +FunctionEnd + + +Function Hide_SecGrpResetConfig + Push $0 + !insertmacro ClearSectionFlag ${SecDeleteConfigFile} ${SF_SELECTED} + SectionSetText ${SecDeleteConfigFile} "" + !insertmacro ClearSectionFlag ${SecDeleteChartDB} ${SF_SELECTED} + SectionSetText ${SecDeleteChartDB} "" + !insertmacro ClearSectionFlag ${SecDeleteSENC} ${SF_SELECTED} + SectionSetText ${SecDeleteSENC} "" + !insertmacro ClearSectionFlag ${SecDeleteCM93} ${SF_SELECTED} + SectionSetText ${SecDeleteCM93} "" + !insertmacro ClearSectionFlag ${SecDeleteNavobjFile} ${SF_SELECTED} + SectionSetText ${SecDeleteNavobjFile} "" + !insertmacro ClearSectionFlag ${SecDeleteLogFile} ${SF_SELECTED} + SectionSetText ${SecDeleteLogFile} "" + !insertmacro ClearSectionFlag ${SecGrpResetConfig} ${SF_SECGRP} + !insertmacro ClearSectionFlag ${SecGrpResetConfig} ${SF_SELECTED} + SectionSetFlags ${SecGrpResetConfig} 0 + SectionSetText ${SecGrpResetConfig} "" + IntOp $0 ${SecDeleteLogFile} + 1 + !insertmacro ClearSectionFlag $0 ${SF_SECGRPEND} + SectionSetText $0 "" + Pop $0 +FunctionEnd + + +Function Check_Config_Exists + ;# Look for config dir ("%APPDATA%\opencpn) and the several config files + SetShellVarContext all + + ${IfNot} ${FileExists} "$APPDATA\@CPACK_NSIS_PACKAGE_NAME_LC@\*.*" + ${If} ${FileExists} "$USERS_APPDATA\@CPACK_NSIS_PACKAGE_NAME_LC@\*.*" + CreateDirectory "$APPDATA\@CPACK_NSIS_PACKAGE_NAME_LC@" + Sleep 250 + AccessControlW::GrantOnFile "$APPDATA\@CPACK_NSIS_PACKAGE_NAME_LC@" "(BU)" "GenericRead + GenericExecute + GenericWrite + Delete + FullAccess" + CopyFiles /SILENT "$USERS_APPDATA\@CPACK_NSIS_PACKAGE_NAME_LC@\*.*" "$APPDATA\@CPACK_NSIS_PACKAGE_NAME_LC@" + ${ElseIf} ${FileExists} "$ADMIN_APPDATA\@CPACK_NSIS_PACKAGE_NAME_LC@\*.*" + CreateDirectory "$APPDATA\@CPACK_NSIS_PACKAGE_NAME_LC@" + Sleep 250 + AccessControlW::GrantOnFile "$APPDATA\@CPACK_NSIS_PACKAGE_NAME_LC@" "(BU)" "GenericRead + GenericExecute + GenericWrite + Delete + FullAccess" + CopyFiles /SILENT "$ADMIN_APPDATA\@CPACK_NSIS_PACKAGE_NAME_LC@\*.*" "$APPDATA\@CPACK_NSIS_PACKAGE_NAME_LC@" + ${EndIf} + + ${If} ${FileExists} "$APPDATA\@CPACK_NSIS_PACKAGE_NAME_LC@\opencpn.ini" + DeleteINISec "$APPDATA\@CPACK_NSIS_PACKAGE_NAME_LC@\opencpn.ini" Directories + ${EndIf} + ${EndIf} + + ${If} ${FileExists} "$APPDATA\@CPACK_NSIS_PACKAGE_NAME_LC@\*.*" + StrCpy $CONFIG_EXISTS 1 + SectionSetText ${SecGrpResetConfig} $(SecGrpResetConfig_Text) + ${EndIf} + StrCpy $Count_SecGrpResetConfig 0 + ${If} $CONFIG_EXISTS == 1 + ${If} ${FileExists} "$APPDATA\@CPACK_NSIS_PACKAGE_NAME_LC@\opencpn.ini" + StrCpy $INI_EXISTS 1 + IntOp $Count_SecGrpResetConfig $Count_SecGrpResetConfig + 1 + SectionSetText ${SecDeleteConfigFile} $(SecDeleteConfigFile_Text) + ${Else} + !insertmacro ClearSectionFlag ${SecDeleteConfigFile} ${SF_SELECTED} + SectionSetText ${SecDeleteConfigFile} "" + ${EndIf} + + ${If} ${FileExists} "$APPDATA\@CPACK_NSIS_PACKAGE_NAME_LC@\CHRTLIST.DAT" + StrCpy $CHARTDB_EXISTS 1 + IntOp $Count_SecGrpResetConfig $Count_SecGrpResetConfig + 1 + SectionSetText ${SecDeleteChartDB} $(SecDeleteChartDB_Text) + ${Else} + !insertmacro ClearSectionFlag ${SecDeleteChartDB} ${SF_SELECTED} + SectionSetText ${SecDeleteChartDB} "" + ${EndIf} + + ${If} ${FileExists} "$APPDATA\@CPACK_NSIS_PACKAGE_NAME_LC@\SENC\*.*" + StrCpy $SENC_EXISTS 1 + IntOp $Count_SecGrpResetConfig $Count_SecGrpResetConfig + 1 + SectionSetText ${SecDeleteSENC} $(SecDeleteSENC_Text) + ${Else} + !insertmacro ClearSectionFlag ${SecDeleteSENC} ${SF_SELECTED} + SectionSetText ${SecDeleteSENC} "" + ${EndIf} + + ${If} ${FileExists} "$APPDATA\@CPACK_NSIS_PACKAGE_NAME_LC@\cm93\*.*" + StrCpy $CM93_EXISTS 1 + IntOp $Count_SecGrpResetConfig $Count_SecGrpResetConfig + 1 + SectionSetText ${SecDeleteCM93} $(SecDeleteCM93_Text) + ${Else} + !insertmacro ClearSectionFlag ${SecDeleteCM93} ${SF_SELECTED} + SectionSetText ${SecDeleteCM93} "" + ${EndIf} + + ${If} ${FileExists} "$APPDATA\@CPACK_NSIS_PACKAGE_NAME_LC@\navobj.xml" + StrCpy $NAVOBJ_EXISTS 1 + IntOp $Count_SecGrpResetConfig $Count_SecGrpResetConfig + 1 + SectionSetText ${SecDeleteNavobjFile} $(SecDeleteNavobjFile_Text) + ${Else} + !insertmacro ClearSectionFlag ${SecDeleteNavobjFile} ${SF_SELECTED} + SectionSetText ${SecDeleteNavobjFile} "" + ${EndIf} + + ${If} ${FileExists} "$APPDATA\@CPACK_NSIS_PACKAGE_NAME_LC@\opencpn.log" + StrCpy $LOG_EXISTS 1 + IntOp $Count_SecGrpResetConfig $Count_SecGrpResetConfig + 1 + SectionSetText ${SecDeleteLogFile} $(SecDeleteLogFile_Text) + ${Else} + !insertmacro ClearSectionFlag ${SecDeleteLogFile} ${SF_SELECTED} + SectionSetText ${SecDeleteLogFile} "" + ${EndIf} + + ${If} $Count_SecGrpResetConfig == 0 + StrCpy $CONFIG_EMPTY 1 + ${EndIf} + + !insertmacro ClearSectionFlag ${SecSetConfig} ${SF_SELECTED} + IntOp $0 ${SF_RO} | ${SF_BOLD} + SectionSetFlags ${SecSetConfig} $0 + ;SectionSetFlags ${SecSetConfig} ${SF_RO} + StrCpy $SetConfig 0 + ${EndIf} +FunctionEnd + + +Function Reg_Scan_Old_Versions_HKLM + ;# Registry look-up + ;# Versions prior to 2.2.727 write RegKey "OpenCPN_is1" to "HKLM\Software\Microsoft\Windows\CurrentVersion\Uninstall" + ReadRegStr $0 HKLM Software\Microsoft\Windows\CurrentVersion\Uninstall\OpenCPN_is1 "DisplayName" + ${If} $0 != "" + ${StrFilter} "$0" "31" "." " " $1 + StrCpy $LM_VERSION "$1" + ReadRegStr $0 HKLM Software\Microsoft\Windows\CurrentVersion\Uninstall\OpenCPN_is1 "UninstallString" + ${StrFilter} "$0" "" "" "$\"" $2 + ${If} ${FileExists} "$2" + ReadRegStr $0 HKLM Software\Microsoft\Windows\CurrentVersion\Uninstall\OpenCPN_is1 "QuietUninstallString" + ${StrFilter} "$0" "" "" "$\"" $3 + StrCpy $LM_VERSION_UNINST $3 + ReadRegStr $4 HKLM Software\Microsoft\Windows\CurrentVersion\Uninstall\OpenCPN_is1 "InstallLocation" + ${TrimNewLines} $4 $4 + ${If} ${FileExists} "$4opencpn.exe" + ${AndIf} ${FileExists} "$4unins*.exe" + ;# check if last character of $4 is a "\" and if so remove it + ${RIndexOf} $6 "$4" "\" + ${If} $6 == 1 + ${WordReplace} "$4" "\" "" "-1" $4 + ${EndIf} + + StrCpy $LM_VERSION_INST $4 + IntOp $OLD_INSTALLS $OLD_INSTALLS + 1 + ;StrCpy $VERSION_NEWER 1 + ${Else} + DeleteRegKey HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\OpenCPN_is1" + StrCpy $LM_VERSION "" + StrCpy $LM_VERSION_UNINST "" + ${EndIf} + ${EndIf} + ${EndIf} +FunctionEnd + + +Function EnumProfileList + ${EnumHKU} Callback_EnumProfileList opencpn-inst-tmp-sid +FunctionEnd + + +Function Callback_EnumProfileList + ;# Get the SID or tmpkey from the stack + Pop $SID + ClearErrors + ${If} ${FileExists} "$TEMP\opencpn_users_sid.tmp" + FileOpen $R0 "$TEMP\opencpn_users_sid.tmp" a + FileSeek $R0 0 END + ${Else} + FileOpen $R0 "$TEMP\opencpn_users_sid.tmp" w + ${EndIf} + + IfErrors done + FileWriteUTF16LE $R0 "$SID" + FileWriteUTF16LE $R0 "$\r$\n" + FileWriteUTF16LE $R0 "$USERPROFILE" + FileWriteUTF16LE $R0 "$\r$\n" + FileClose $R0 + done: +FunctionEnd + + +Function Get_Users_Values + Var /GLOBAL tmp_file_handle + StrCpy $SID "" + ClearErrors + ${If} ${FileExists} "$TEMP\opencpn_users_sid.tmp" + FileOpen $tmp_file_handle "$TEMP\opencpn_users_sid.tmp" r + IfErrors end + ${Do} + FileReadUTF16LE $tmp_file_handle $SID + FileReadUTF16LE $tmp_file_handle $USERPROFILE + StrCmp $SID "" done + ${TrimNewLines} $SID $SID + ${TrimNewLines} $USERPROFILE $USERPROFILE + ;# List of functions to call + Call Users_Appdata_Paths + Call Users_StartMenu_Paths + Call Users_Desktop_Paths + Call Users_Personal_Paths + Call Reg_Scan_Old_Versions_HKCU + ${Loop} + done: + FileClose $tmp_file_handle + StrCpy $SID "" + StrCpy $USERPROFILE "" + ${EndIf} + end: +FunctionEnd + + +Function Users_Appdata_Paths + ReadRegStr $1 HKU "$SID\Software\Microsoft\Windows\CurrentVersion\Explorer\User Shell Folders" AppData + ${WordReplace} "$1" "%USERPROFILE%" "$USERPROFILE" "+" $2 + ExpandEnvStrings $2 $2 + StrCmp $2 "" done + + StrCpy $5 "none" + ;# check if an OpenCPN config folder exists in the given path + ${If} ${FileExists} "$2\@CPACK_NSIS_PACKAGE_NAME_LC@\opencpn.ini" + ReadINIStr $3 "$2\@CPACK_NSIS_PACKAGE_NAME_LC@\opencpn.ini" Directories S57DataLocation + ${WordReplace} "$3" "\\" "\" "+" $4 + ${WordFind} "$4" "\" "-2{*" $5 + StrCmp $5 "" 0 +2 + StrCpy $5 "none" + ${EndIf} + + ClearErrors + ${If} ${FileExists} "$TEMP\opencpn_appdata.tmp" + FileOpen $R0 "$TEMP\opencpn_appdata.tmp" a + FileSeek $R0 0 END + ${Else} + FileOpen $R0 "$TEMP\opencpn_appdata.tmp" w + ${EndIf} + IfErrors done + FileWriteUTF16LE $R0 "$SID" + FileWriteUTF16LE $R0 "$\r$\n" + FileWriteUTF16LE $R0 "$2" + FileWriteUTF16LE $R0 "$\r$\n" + FileWriteUTF16LE $R0 "$5" + FileWriteUTF16LE $R0 "$\r$\n" + FileClose $R0 + done: +FunctionEnd + + +Function Users_Personal_Paths + ReadRegStr $1 HKU "$SID\Software\Microsoft\Windows\CurrentVersion\Explorer\User Shell Folders" Personal + ${WordReplace} "$1" "%USERPROFILE%" "$USERPROFILE" "+" $2 + ExpandEnvStrings $2 $2 + + ClearErrors + ${If} ${FileExists} "$TEMP\opencpn_personal.tmp" + FileOpen $R0 "$TEMP\opencpn_personal.tmp" a + IfErrors done + FileSeek $R0 0 END + ${Else} + FileOpen $R0 "$TEMP\opencpn_personal.tmp" w + IfErrors done + ${EndIf} + + FileWriteUTF16LE $R0 "$SID" + FileWriteUTF16LE $R0 "$\r$\n" + FileWriteUTF16LE $R0 "$2" + FileWriteUTF16LE $R0 "$\r$\n" + FileClose $R0 + done: +FunctionEnd + + +Function Users_StartMenu_Paths + ReadRegStr $1 HKU "$SID\Software\Microsoft\Windows\CurrentVersion\Explorer\User Shell Folders" "Start Menu" + ${WordReplace} "$1" "%USERPROFILE%" "$USERPROFILE" "+" $2 + ExpandEnvStrings $2 $2 + + ClearErrors + ${If} ${FileExists} "$TEMP\opencpn_startmenu.tmp" + FileOpen $R0 "$TEMP\opencpn_startmenu.tmp" a + FileSeek $R0 0 END + ${Else} + FileOpen $R0 "$TEMP\opencpn_startmenu.tmp" w + ${EndIf} + IfErrors done + FileWriteUTF16LE $R0 "$SID" + FileWriteUTF16LE $R0 "$\r$\n" + FileWriteUTF16LE $R0 "$2" + FileWriteUTF16LE $R0 "$\r$\n" + FileClose $R0 + done: +FunctionEnd + + +Function Users_Desktop_Paths + ReadRegStr $1 HKU "$SID\Software\Microsoft\Windows\CurrentVersion\Explorer\User Shell Folders" Desktop + ${WordReplace} "$1" "%USERPROFILE%" "$USERPROFILE" "+" $2 + ExpandEnvStrings $2 $2 + + ClearErrors + ${If} ${FileExists} "$TEMP\opencpn_desktop.tmp" + FileOpen $R0 "$TEMP\opencpn_desktop.tmp" a + FileSeek $R0 0 END + ${Else} + FileOpen $R0 "$TEMP\opencpn_desktop.tmp" w + ${EndIf} + IfErrors done + FileWriteUTF16LE $R0 "$SID" + FileWriteUTF16LE $R0 "$\r$\n" + FileWriteUTF16LE $R0 "$2" + FileWriteUTF16LE $R0 "$\r$\n" + FileClose $R0 + done: +FunctionEnd + + +;Var latest_version +;Var latest_pathexe +Function Reg_Scan_Old_Versions_HKCU + ;# Versions from 2.2.727 up to 2.2.xxxx write RegKey "OpenCPN" to "HKCU\Software\Microsoft\Windows\CurrentVersion\Uninstall\" + ;# and also RegKey "OpenCPN " to "HKCU\Software\opencpn.org\" + ;# Find latest installed version => it's the one found in "HKCU\Software\Microsoft\Windows\CurrentVersion\Uninstall\OpenCPN" + + ReadRegStr $0 HKU "$SID\Software\Microsoft\Windows\CurrentVersion\Uninstall\OpenCPN" "DisplayVersion" + ${If} $0 != "" + StrCpy $latest_version $0 + ReadRegStr $0 HKU "$SID\Software\Microsoft\Windows\CurrentVersion\Uninstall\OpenCPN" "DisplayIcon" + StrCpy $latest_pathexe $0 + ReadRegStr $0 HKU "$SID\Software\Microsoft\Windows\CurrentVersion\Uninstall\OpenCPN" "UninstallString" + ;StrCpy $CU_VERSION_UNINST $0 + ${WordFind} "$0" "\" "-2{*" $1 + ${If} ${FileExists} "$1\opencpn.exe" + ${AndIf} ${FileExists} "$1\unins*.exe" + ClearErrors + ${If} ${FileExists} "$TEMP\opencpn_old_uninstall_regkeys.tmp" + FileOpen $R0 "$TEMP\opencpn_old_uninstall_regkeys.tmp" a + FileSeek $R0 0 END + ${Else} + FileOpen $R0 "$TEMP\opencpn_old_uninstall_regkeys.tmp" w + ${EndIf} + + IfErrors done + FileWriteUTF16LE $R0 "$SID$\r$\n" + FileWriteUTF16LE $R0 "$SID\Software\Microsoft\Windows\CurrentVersion\Uninstall\OpenCPN$\r$\n" + FileWriteUTF16LE $R0 "$1$\r$\n" + FileClose $R0 + ${Else} + DeleteRegKey HKU "$SID\Software\Microsoft\Windows\CurrentVersion\Uninstall\OpenCPN" + ${EndIf} + ${EndIf} + + done: + ClearErrors + ${Do} + Pop $0 + IfErrors empty + ${Loop} + empty: + StrCpy $0 0 + StrCpy $1 "" + ${Do} + EnumRegKey $1 HKU "$SID\Software\opencpn.org" $0 + StrCmp $1 "" done1 + IntOp $0 $0 + 1 + Push $1 + ${Loop} + done1: + ${If} $0 > 0 + ClearErrors + ${If} ${FileExists} "$TEMP\opencpn_old_installs.tmp" + FileOpen $R0 "$TEMP\opencpn_old_installs.tmp" a + FileSeek $R0 0 END + ${Else} + FileOpen $R0 "$TEMP\opencpn_old_installs.tmp" w + ${EndIf} + IfErrors done2 + ${Do} + Pop $R1 + IfErrors finished + ${StrFilter} "$R1" "31" "." " " $R2 ;# R2 = version + ;StrCpy $CU_VERSION $R2 + ReadRegStr $R3 HKU "$SID\Software\opencpn.org\$R1" "" ;# R3 = install path + ReadRegStr $R4 HKU "$SID\Software\opencpn.org\$R1" "Start Menu Folder" ;# R4 = Start Menu Folder + ReadRegStr $R5 HKU "$SID\Software\Microsoft\Windows\CurrentVersion\Explorer\User Shell Folders" "Start Menu" ;# R5 = Start Menu Path + ${WordReplace} "$R5" "%USERPROFILE%" "$USERPROFILE" "+" $R5 + ExpandEnvStrings $R5 $R5 + ;StrCpy $CU_VERSION_INST "$R3\" + ${If} "$R3\opencpn.exe" == $latest_pathexe + ${AndIf} $R2 != $latest_version + DeleteRegKey HKU "$SID\Software\opencpn.org\$R1" + ${ElseIf} ${FileExists} "$R3\opencpn.exe" + ${AndIf} ${FileExists} "$R3\unins*.exe" + FileWriteUTF16LE $R0 "$SID\Software\opencpn.org\$R1" + FileWriteUTF16LE $R0 "$\r$\n" + FileWriteUTF16LE $R0 "$R5\$R4" + FileWriteUTF16LE $R0 "$\r$\n" + FileWriteUTF16LE $R0 "$R3" + FileWriteUTF16LE $R0 "$\r$\n" + IntOp $OLD_INSTALLS $OLD_INSTALLS + 1 + ;StrCpy $VERSION_NEWER 1 + ${Else} + DeleteRegKey HKU "$SID\Software\opencpn.org\$R1" + DeleteRegKey /ifempty HKU "$SID\Software\opencpn.org" + ${EndIf} + ${Loop} + finished: + FileClose $R0 + ${Else} + DeleteRegKey HKU "$SID\Software\opencpn.org" + ${EndIf} + + done2: + StrCpy $latest_version "" + StrCpy $latest_pathexe "" +FunctionEnd + + +Function Quick_Scan_Old_Versions + ;# Scan the given Drive for file "opencpn.exe" + ${If} ${FileExists} "$TEMP\opencpn_personal.tmp" + ClearErrors + FileOpen $R0 "$TEMP\opencpn_personal.tmp" r + IfErrors end + ${Do} + FileReadUTF16LE $R0 $R1 + FileReadUTF16LE $R0 $R2 + IfErrors done + StrCmp $R2 "" done + ${TrimNewLines} $R2 $R2 + ${Locate} "$R2" "/L=F /M=opencpn.exe" "Found_OpenCPN_Installation" + ${Loop} + done: + FileClose $R0 + ${EndIf} + + end: + ${Locate} "$PROGRAMFILES" "/L=F /M=opencpn.exe" "Found_OpenCPN_Installation" +FunctionEnd + + +Function Found_OpenCPN_Installation + Push $R0 + Push $R1 + ${If} ${FileExists} "$R8\unins*.exe" + ${If} ${FileExists} "$TEMP\opencpn_prev_installs.tmp" + ClearErrors + FileOpen $R1 "$TEMP\opencpn_prev_installs.tmp" r + IfErrors cont + ${Do} + FileReadUTF16LE $R1 $R2 + FileReadUTF16LE $R1 $R3 + StrCmp $R2 "" done + ${TrimNewLines} $R2 $R2 + ${TrimNewLines} $R3 $R3 + StrCmp $R3 $R8 found + ${LoopUntil} $R2 == "" + done: + FileClose $R1 + Goto cont + + found: + FileClose $R1 + Goto end + ${EndIf} + + cont: + IntOp $counter_tmp $counter_tmp + 1 + ClearErrors + ${IfNot} ${FileExists} "$TEMP\opencpn_hdd_quick_scan.tmp" + FileOpen $R0 "$TEMP\opencpn_hdd_quick_scan.tmp" w + IfErrors end + ${Else} + FileOpen $R0 "$TEMP\opencpn_hdd_quick_scan.tmp" a + IfErrors end + FileSeek $R0 0 END + ${EndIf} + + FileWriteUTF16LE $R0 "$R8" + FileWriteUTF16LE $R0 "$\r$\n" + FileClose $R0 + ${EndIf} + + end: + Pop $R1 + Pop $R0 + Push $0 +FunctionEnd + + +;Var counter_tmp +Function Full_Scan_Old_Versions + ;# Get all HDD Drive Letters on the system + StrCpy $counter_tmp 0 + ${GetDrives} "HDD" "Scan_Drive" +FunctionEnd + + +Function Scan_Drive + ;# Scan the given Drive for file "opencpn.exe" + /*;#DEBUG - scan only crtain drives + ${IfNot} $9 == "D:\" + ;${AndIfNot} $9 == "F:\" + Goto end + ${EndIf} + ;#DEBUG End */ + StrCpy $3 "$(Banner_Scan_Drive)" + GetDlgItem $2 $Banner_Handle 76 + SendMessage $2 ${WM_SETTEXT} 0 "STR:$3" + ${Locate} "$9" "/L=F /M=opencpn.exe" "Found_OCPN_Exe" + end: + Push $0 +FunctionEnd + + +Function Found_OCPN_Exe + Push $1 + ClearErrors + StrCpy $1 0 + StrCpy $2 0 + ${WordFind} "$R8" "\RECYCLER\" "E*" $1 + ${WordFind} "$R8" "\$$Recycle.Bin" "E*" $2 + IfErrors 0 cont1 + ${If} $1 == 1 + ${AndIf} $2 == 1 + Goto cont2 + ${EndIf} + + cont1: + ${If} $1 > 0 + ${OrIf} $2 > 0 + Goto end + ${EndIf} + + cont2: + ${If} ${FileExists} "$R8\unins*.exe" + ${If} ${FileExists} "$TEMP\opencpn_prev_installs.tmp" + ClearErrors + FileOpen $R1 "$TEMP\opencpn_prev_installs.tmp" r + IfErrors cont3 + ${Do} + FileReadUTF16LE $R1 $R2 + FileReadUTF16LE $R1 $R3 + StrCmp $R2 "" done + ${TrimNewLines} $R2 $R2 + ${TrimNewLines} $R3 $R3 + StrCmp $R3 $R8 found + ${LoopUntil} $R2 == "" + done: + FileClose $R1 + Goto cont3 + + found: + FileClose $R1 + Goto end + ${EndIf} + + cont3: + IntOp $counter_tmp $counter_tmp + 1 + GetDlgItem $2 $Banner_Handle 1030 + StrCmp $counter_tmp 1 0 +3 + StrCpy $R4 "$(Banner_Installation_Found_Singular)" + Goto +2 + StrCpy $R4 "$(Banner_Installation_Found_Plural)" + SendMessage $2 ${WM_SETTEXT} 0 "STR:$R4" + SendMessage $ListBox_CleanUp ${LB_ADDSTRING} 0 "STR:$R8" + ClearErrors + ${IfNot} ${FileExists} "$TEMP\opencpn_hdd_full_scan.tmp" + FileOpen $R0 "$TEMP\opencpn_hdd_full_scan.tmp" w + IfErrors end + ${Else} + FileOpen $R0 "$TEMP\opencpn_hdd_full_scan.tmp" a + IfErrors end + FileSeek $R0 0 END + ${EndIf} + + FileWriteUTF16LE $R0 "$R8" + FileWriteUTF16LE $R0 "$\r$\n" + FileClose $R0 + end: + ${EndIf} + Pop $1 + Push $0 +FunctionEnd + + +Function Delete_Installation_Dir + StrCmp $Uninstall_Path_Tmp "" end + ;# Check subdirs and remove them recursive ... + ${If} ${FileExists} "$Uninstall_Path_Tmp\doc\*.*" + RMDir /r "$Uninstall_Path_Tmp\doc" + ${EndIf} + + ${If} ${FileExists} "$Uninstall_Path_Tmp\lang\*.*" + RMDir /r "$Uninstall_Path_Tmp\lang" + ${EndIf} + + ${If} ${FileExists} "$Uninstall_Path_Tmp\Microsoft.VC80.CRT\*.*" + RMDir /r "$Uninstall_Path_Tmp\Microsoft.VC80.CRT" + ${EndIf} + + ${If} ${FileExists} "$Uninstall_Path_Tmp\s57data\*.*" + RMDir /r "$Uninstall_Path_Tmp\s57data" + ${EndIf} + + ${If} ${FileExists} "$Uninstall_Path_Tmp\sounds\*.*" + RMDir /r "$Uninstall_Path_Tmp\sounds" + ${EndIf} + + ${If} ${FileExists} "$Uninstall_Path_Tmp\TCDATA\*.*" + RMDir /r "$Uninstall_Path_Tmp\TCDATA" + ${EndIf} + + ${If} ${FileExists} "$Uninstall_Path_Tmp\gshhs\*.*" + RMDir /r "$Uninstall_Path_Tmp\gshhs" + ${EndIf} + + ${If} ${FileExists} "$Uninstall_Path_Tmp\plugins\*.*" + RMDir /r "$Uninstall_Path_Tmp\plugins" + ${EndIf} + + ${If} ${FileExists} "$Uninstall_Path_Tmp\share\*.*" + RMDir /r "$Uninstall_Path_Tmp\share" + ${EndIf} + + ;# Check files and delete them ... + ${If} ${FileExists} "$Uninstall_Path_Tmp\opencpn.exe" + Delete "$Uninstall_Path_Tmp\opencpn.exe" + ${EndIf} + + ${If} ${FileExists} "$Uninstall_Path_Tmp\license.txt" + Delete "$Uninstall_Path_Tmp\license.txt" + ${EndIf} + + ${If} ${FileExists} "$Uninstall_Path_Tmp\unins000.dat" + Delete "$Uninstall_Path_Tmp\unins000.dat" + ${EndIf} + + ${If} ${FileExists} "$Uninstall_Path_Tmp\unins000.exe" + Delete "$Uninstall_Path_Tmp\unins000.exe" + ${EndIf} + + ${If} ${FileExists} "$Uninstall_Path_Tmp\install.log" + Delete "$Uninstall_Path_Tmp\install.log" + ${EndIf} + + ${If} ${FileExists} "$Uninstall_Path_Tmp\install.log" + Delete "$Uninstall_Path_Tmp\install.log" + ${EndIf} + + Push $0 + Push $1 + Push $2 + Push $R9 + Push $R8 + Push $R7 + Push $R6 + ;# Find the Uninstall file + ${Locate} "$Uninstall_Path_Tmp" "/L=F /M=Uninstall*.exe /G=0" "Delete_Located_File_Single" + ;# Find the wx.. DLLs + ${Locate} "$Uninstall_Path_Tmp" "/L=F /M=wx*.dll /G=0" "Delete_Located_File_Multi" + ;# Dummy call of Locate as it does not properly close its handle and so the dir cannot be deleted though it might be empty + ${Locate} "C:\" "/L=DE /M=*.* /G=0" "Dummy_Function" + + ;# Remove the installation dir ($Uninstall_Path_Tmp) if empty + RMDir "$Uninstall_Path_Tmp" + ${If} ${FileExists} "$Uninstall_Path_Tmp\*.*" + Sleep 250 + RMDir "$Uninstall_Path_Tmp" + ${EndIf} + + Pop $R6 + Pop $R7 + Pop $R8 + Pop $R9 + Pop $2 + Pop $1 + Pop $0 + end: +FunctionEnd + ;# Helper-Functions for Delete_Installation_Dir + Function Delete_Located_File_Single + Delete "$R9" + StrCpy $0 StopLocate + Push $0 + FunctionEnd + + Function Delete_Located_File_Multi + Delete "$R9" + Push $0 + FunctionEnd + + Function Dummy_Function + StrCpy $0 StopLocate + Push $0 + FunctionEnd + ;# End Helper-Functions + + +Function ExecAppFile + !insertmacro UAC_AsUser_ExecShell 'open' '$INSTDIR\opencpn.exe' '' '$INSTDIR' '' + loop: + System::Call user32::GetForegroundWindow()i.r0 + Sleep 200 + IntCmpU $0 $hwndparent loop +FunctionEnd + + +Function DU2Pix + Pop $4 + Pop $3 + Pop $2 + Pop $1 + IntOp $1 $1 * $BU_X + IntOp $1 $1 / 4 + IntOp $2 $2 * $BU_Y + IntOp $2 $2 / 8 + IntOp $3 $3 * $BU_X + IntOp $3 $3 / 4 + IntOp $4 $4 * $BU_Y + IntOp $4 $4 / 8 +FunctionEnd + + +;!define LVM_GETITEMCOUNT 0x1004 ;# ANSI +;!define LVM_GETITEMTEXT 0x102D ;# ANSI +!define LVM_GETITEMCOUNT 0x1004 +!define LVM_GETITEMTEXT 0x1073 + +Function DumpLog + Exch $5 + Push $0 + Push $1 + Push $2 + Push $3 + Push $4 + Push $6 + + FindWindow $0 "#32770" "" $HWNDPARENT + GetDlgItem $0 $0 1016 + StrCmp $0 0 error + FileOpen $5 $5 "w" + FileWriteWord $5 0xfeff ; Write the BOM + StrCmp $5 0 error + SendMessage $0 ${LVM_GETITEMCOUNT} 0 0 $6 + System::StrAlloc ${NSIS_MAX_STRLEN} + Pop $3 + StrCpy $2 0 + System::Call "*(i, i, i, i, i, i, i, i, i) i \ + (0, 0, 0, 0, 0, r3, ${NSIS_MAX_STRLEN}) .r1" + loop: StrCmp $2 $6 done + System::Call "User32::SendMessageW(i, i, i, i) i \ + ($0, ${LVM_GETITEMTEXT}, $2, r1)" + System::Call "*$3(&t${NSIS_MAX_STRLEN} .r4)" + FileWriteUTF16LE $5 "$4$\r$\n" + IntOp $2 $2 + 1 + Goto loop + done: + FileClose $5 + System::Free $1 + System::Free $3 + Goto exit + error: + MessageBox MB_OK error + exit: + Pop $6 + Pop $4 + Pop $3 + Pop $2 + Pop $1 + Pop $0 + Exch $5 +FunctionEnd + + +Function Write_Reg_ChartDirs + ClearErrors + FileOpen $R0 "$TEMP\opencpn_chart_dirs.tmp" r + IfErrors end + loop: + FileReadUTF16LE $R0 $R1 + IfErrors done + ${TrimNewLines} $R1 $R1 + ${If} $REG_CHARTDIRS == "" + StrCpy $REG_CHARTDIRS "$R1" + ${Else} + StrCpy $REG_CHARTDIRS "$REG_CHARTDIRS;$R1" + ${EndIf} + Goto loop + done: + FileClose $R0 + WriteRegStr HKLM "Software\OpenCPN" "ChartDirs" $REG_CHARTDIRS + end: +FunctionEnd + + +Function IndexOf + Exch $R0 + Exch + Exch $R1 + Push $R2 + Push $R3 + + StrCpy $R3 $R0 + StrCpy $R0 -1 + IntOp $R0 $R0 + 1 + StrCpy $R2 $R3 1 $R0 + StrCmp $R2 "" +2 + StrCmp $R2 $R1 +2 -3 + + StrCpy $R0 -1 + + Pop $R3 + Pop $R2 + Pop $R1 + Exch $R0 +FunctionEnd + + +Function RIndexOf + Exch $R0 + Exch + Exch $R1 + Push $R2 + Push $R3 + + StrCpy $R3 $R0 + StrCpy $R0 0 + IntOp $R0 $R0 + 1 + StrCpy $R2 $R3 1 -$R0 + StrCmp $R2 "" +2 + StrCmp $R2 $R1 +2 -3 + + StrCpy $R0 -1 + + Pop $R3 + Pop $R2 + Pop $R1 + Exch $R0 +FunctionEnd + +;################################################################################################## +;# Uninstaller Functions # +;################################################################################################## +;# un.onInit Function +Function un.onInit + ;Prevent multiple instances of the uninstaller + ${IfNot} ${UAC_IsInnerInstance} + System::Call 'kernel32::CreateMutexW(i 0, i 0, t "ocpn_uninst_@CPACK_PACKAGE_VERSION@") i .r1 ?e' + Pop $R0 + StrCmp $R0 0 +3 + MessageBox MB_OK|MB_ICONEXCLAMATION "$(Uninstaller_Running)" + Abort + ${EndIf} + + Call un.GetUserInfo + StrCpy $USERS_NAME $USERNAME + + ;# Macros to be inserted + ${If} $IS_ADMIN == 1 + !insertmacro MUI_UNGETLANGUAGE + ${EndIf} + + StrCpy $USERS_APPDATA $APPDATA + + ;# UAC check if user has Admin privileges and prompt for elevation if not + uac_tryagain: + !insertmacro UAC_RunElevated + StrCpy $Inst_Or_Uninst "$(Uninstaller)" + ${Switch} $0 + ${Case} 0 + ${IfThen} $1 = 1 ${|} Quit ${|} ;# we are the outer process, the inner process has done its work, we are done + ${IfThen} $3 <> 0 ${|} ${Break} ${|} ;# we are admin, let the show go on + ${If} $1 = 3 ;# RunAs completed successfully, but with a non-admin user + MessageBox mb_IconExclamation|mb_TopMost|mb_SetForeground "$(Msg_UAC_Admin_Retry)" /SD IDNO IDOK uac_tryagain IDNO 0 + ${EndIf} + ;# fall-through and die + ${Case} 1223 + MessageBox mb_IconStop|mb_TopMost|mb_SetForeground "$(Msg_UAC_Admin_Abort)" + Quit + ${Case} 1062 + MessageBox mb_IconStop|mb_TopMost|mb_SetForeground "$(Msg_UAC_Logon_Abort)" + Quit + ${Default} + MessageBox mb_IconStop|mb_TopMost|mb_SetForeground "$(Msg_UAC_No_Elevation)" + Quit + ${EndSwitch} + +########## from here we can be sure to run with admin privileges ########## + + SectionSetText ${UnSecDeleteConfigFolder} $(UnSecDeleteConfigFolder_Text) + + ClearErrors + Var /GLOBAL UN_INST_PARAMS + Var /GLOBAL UN_INST_HELP + Var /GLOBAL UN_INST_TYPE + StrCpy $UN_INST_TYPE "" + ${GetParameters} $UN_INST_PARAMS + StrCmp $UN_INST_PARAMS "" no_params + + ${GetOptions} "$UN_INST_PARAMS" "/?" $UN_INST_HELP + IfErrors +3 + StrCpy $UN_INST_HELP "help" + Goto end + + ClearErrors + ${GetOptions} "$UN_INST_PARAMS" "/type" $UN_INST_TYPE + IfErrors no_type_param + ${Switch} $UN_INST_TYPE + ${Case} "=1" ;# 1 = Program Files only (Remove/ Delete: Program Files) + StrCpy $UN_INST_TYPE 1 + !insertmacro ClearSectionFlag ${UnSecDeleteConfigFolder} ${SF_SELECTED} + !insertmacro ClearSectionFlag ${UnSecDeleteConfigRegKey} ${SF_SELECTED} + ${Break} + ${Case} "=2" ;# 2 = Preserve Config folder (Remove/ Delete: Program Files + RegKey) + StrCpy $UN_INST_TYPE 2 + !insertmacro ClearSectionFlag ${UnSecDeleteConfigFolder} ${SF_SELECTED} + ${Break} + ${Case} "=3" ;# 3 = Preserve RegKey (Remove/ Delete: Program Files + Config folder) + StrCpy $UN_INST_TYPE 3 + !insertmacro ClearSectionFlag ${UnSecDeleteConfigRegKey} ${SF_SELECTED} + SectionSetFlags ${UnSecBackupConfigToRegKey} ${SF_SELECTED} + ${Break} + ${Case} "=4" ;# 4 = Delete Config folder (Remove/ Delete: Config folder) + StrCpy $UN_INST_TYPE 4 + !insertmacro ClearSectionFlag ${UnSecUninstall} ${SF_SELECTED} + !insertmacro ClearSectionFlag ${UnSecDeleteConfigRegKey} ${SF_SELECTED} + SectionSetFlags ${UnSecBackupConfigToRegKey} ${SF_SELECTED} + ${Break} + ${Case} "=5" ;# 5 = Delete RegKey (Remove/ Delete: RegKey) + StrCpy $UN_INST_TYPE 5 + !insertmacro ClearSectionFlag ${UnSecUninstall} ${SF_SELECTED} + !insertmacro ClearSectionFlag ${UnSecDeleteConfigFolder} ${SF_SELECTED} + ${Break} + ${Default} + StrCpy $9 $UN_INST_TYPE + StrCpy $UN_INST_TYPE "error_type" ;# unknown value given for the type parameter => MsgBox => Quit + ${Break} + ${EndSwitch} + + StrCmp $UN_INST_TYPE "error_type" 0 cont + MessageBox MB_OK|MB_ICONEXCLAMATION "$(Msg_Unknown_Type_Param)" + Quit + + no_type_param: + ;# If no parameter 'type' is given assume full uninstall + StrCpy $UN_INST_TYPE 0 ;# 0 = Full Uninstall (Remove/ Delete: Program Files + Config folder + RegKey) + Goto cont + + no_params: + ;# If no parameters are given assume full uninstall + StrCpy $UN_INST_TYPE 0 ;# 0 = Full Uninstall (Remove/ Delete: Program Files + Config folder + RegKey) + + cont: + ;# Delete all temporary files created during the installation + Delete "$TEMP\opencpn_*.tmp" + + Call un.VersionDate + + Call un.Check_Prev_Installs + + ;# If there are other installations of OCPN do not remove the config folder! + ${If} $UN_INST_TYPE == 0 + ${AndIf} $VERSION_EXISTS == 1 + ${AndIf} $MULTIPLE_INSTALLS > 1 + StrCpy $Skip_UnPage_Components 1 + !insertmacro ClearSectionFlag ${UnSecDeleteConfigFolder} ${SF_SELECTED} + ${EndIf} + + ReadRegStr $0 HKLM "${REG_KEY_UN}" "CompareVersion" + + end: +FunctionEnd + + +Function un.myGuiInit + ${If} $UN_INST_HELP == "help" + MessageBox MB_OK|MB_ICONINFORMATION "$(Msg_Uninstaller_Param_Help)" + Quit + ${EndIf} +FunctionEnd + +;-------------------------------- +;################################################################################################## +;# Uninstaller Page Functions # +;################################################################################################## +/* + ;# UnPage_Components_Pre + Function un.Page_Components_Pre + ${If} $Skip_UnPage_Components == 1 + Abort + ${EndIf} + FunctionEnd +*/ +;-------------------------------- +;################################################################################################## +;# General Uninstaller Functions # +;################################################################################################## + + + +;-------------------------------- +;################################################################################################## +;# Shared Functions # +;################################################################################################## +!macro GetUserInfo_Macro un + Function ${un}GetUserInfo + ClearErrors + UserInfo::GetName + ${If} ${Errors} + StrCpy $IS_ADMIN 1 + Return + ${EndIf} + Pop $USERNAME + + UserInfo::GetAccountType + Pop $R0 + StrCpy $UAT $R0 + ${If} ${IsNT} + ${AndIf} ${IsWinNT4} + ${If} $R0 == "Admin" + StrCpy $IS_ADMIN 1 + ${Else} + StrCpy $IS_ADMIN 0 + ${EndIf} + Goto end + ${EndIf} + + ${Switch} $R0 + ${Case} "Admin" + ${Case} "Power" + StrCpy $IS_ADMIN 1 + ${Break} + ${Default} + StrCpy $IS_ADMIN 0 + ${Break} + ${EndSwitch} + + UserInfo::GetOriginalAccountType + Pop $OUAT + + end: + FunctionEnd +!macroend +!insertmacro GetUserInfo_Macro "" +!insertmacro GetUserInfo_Macro "un." + + +!macro Check_Prev_Installs_Macro un + Function ${un}Check_Prev_Installs + StrCpy $R0 0 + StrCpy $R1 "" + StrCpy $R5 0 + StrCpy $VERSION_EXISTS 0 + SetShellVarContext all + ${Do} + EnumRegKey $R1 SHCTX "${REG_ROOT_KEY_UN}" $R0 + ${If} $R1 != "" + StrLen $R2 $R1 + ${WordFind} "$R1" " " "+1" $R3 + IntOp $R0 $R0 + 1 + ${If} $R3 == "s63_pi" + ${AndIf} $R2 > 7 + ReadRegStr $R4 SHCTX "${REG_ROOT_KEY_UN}\$R1" "CompareVersion" + ReadRegStr $R6 SHCTX "${REG_ROOT_KEY_UN}\$R1" "InstallLocation" + ${If} $R4 != "" + ${VersionCompare} $VERSION_DATE $R4 $Compare_Version_Result + ${Switch} $Compare_Version_Result + ${Case} 0 ;equal + StrCpy $VERSION_EXISTS 1 + ${Break} + ${Case} 1 ;version to install is newer + StrCpy $VERSION_NEWER 1 + ${Break} + ${Case} 2 ;version to install is older + StrCpy $VERSION_OLDER 1 + ${Break} + ${Default} + ${Break} + ${EndSwitch} + IntOp $R5 $R5 + 1 + StrCpy $Prev_Install_RegKey "${REG_ROOT_KEY_UN}\$R1" + ${EndIf} + StrCmp ${un} "" 0 uninst ;# only execute when it is the Installer function + ${If} $R6 != "" + ClearErrors + ${If} ${FileExists} "$TEMP\opencpn_prev_installs.tmp" + FileOpen $0 "$TEMP\opencpn_prev_installs.tmp" a + FileSeek $0 0 END + ${Else} + FileOpen $0 "$TEMP\opencpn_prev_installs.tmp" w + ${EndIf} + IfErrors done + FileWriteUTF16LE $0 "$R1$\r$\n" + FileWriteUTF16LE $0 "$R6$\r$\n" + FileClose $0 + done: + ${EndIf} + + ${If} $VERSION_EXISTS == 1 + ${Break} + ${EndIf} + + uninst: + ${EndIf} + ${Else} + Goto done2 + ${EndIf} + ${Loop} + done2: + ${If} $R5 > 0 + StrCpy $MULTIPLE_INSTALLS $R5 + ${Else} + StrCpy $MULTIPLE_INSTALLS 0 + ${EndIf} + ${If} $MULTIPLE_INSTALLS == 0 + StrCpy $Skip_Page_TypeInst 1 + ${Else} + StrCpy $Skip_Page_TypeInst 0 + ${EndIf} + FunctionEnd +!macroend +!insertmacro Check_Prev_Installs_Macro "" +!insertmacro Check_Prev_Installs_Macro "un." + + +/* VersionDate + normalizes the CPACK_PACKAGE_VERSION_PATCH to a comparable format 'yyyy.[02|19].mmdd.00' + 02 = Beta version + 19 = Stable release + IN: CPACK_PACKAGE_VERSION_PATCH + OUT: $VERSION_DATE +*/ +Var Patch_Version +Var Version_Digits_Only +Var Version_Unified +Var Patch_Date +!macro VersionDate_Macro un + Function ${un}VersionDate + StrCpy $Patch_Version "@CPACK_PACKAGE_VERSION_PATCH@" + ${If} $Patch_Version == "" + StrCpy $Patch_Version "0000" + ${EndIf} + StrLen $0 "$Patch_Version" + ${StrFilter} "$Patch_Version" "1" "" "" $Version_Digits_Only + StrLen $1 $Version_Digits_Only + ;# Patch version contains non-digit characters + ${If} $0 != $1 + ${StrFilter} "$Patch_Version" "-2" "" "" $PATCH_ND + ${If} $1 == 3 + StrCpy $Version_Unified "b${YEAR}0$Patch_Version" + ${ElseIf} $1 == 2 + StrCpy $Version_Unified "s${YEAR}00$Patch_Version" + ${ElseIf} $1 == 1 + StrCpy $Version_Unified "s${YEAR}000$Patch_Version" + ${Else} + StrCpy $Version_Unified "b${YEAR}$Patch_Version" + ${EndIf} + ${VersionConvert} $Version_Unified "" $Patch_Date + StrCpy $VERSION_DATE "@CPACK_PACKAGE_VERSION_MAJOR@.@CPACK_PACKAGE_VERSION_MINOR@.$Patch_Date" + ;# Patch version contains only digits + ${Else} + ${If} $0 == 3 + StrCpy $Version_Unified "b${YEAR}0$Patch_Version" + ${ElseIf} $0 == 2 + StrCpy $Version_Unified "s${YEAR}00$Patch_Version" + ${ElseIf} $0 == 1 + StrCpy $Version_Unified "s${YEAR}000$Patch_Version" + ${Else} + StrCpy $Version_Unified "b${YEAR}$Patch_Version" + ${EndIf} + ${VersionConvert} $Version_Unified "" $Patch_Date + StrCpy $VERSION_DATE "@CPACK_PACKAGE_VERSION_MAJOR@.@CPACK_PACKAGE_VERSION_MINOR@.$Patch_Date.00" + ${EndIf} + FunctionEnd +!macroend +!insertmacro VersionDate_Macro "" +!insertmacro VersionDate_Macro "un." + + +!macro Delete_Start_Menu_Shortcuts_Macro un + Function ${un}Delete_Start_Menu_Shortcuts + Pop $9 + Push $R0 + Push $R1 + Push $R2 + Push $R3 + Push $R4 + ${TrimNewLines} $9 $9 + SetShellVarContext all + ${RecFindOpen} "$STARTMENU" $CurrentDirVar $CurrentFileVar + ${RecFindFirst} + ClearErrors + ${WordFind} "$CurrentFileVar" ".lnk" "E*" $8 + IfErrors next + IntCmp $8 1 0 next 0 + ShellLink::GetShortCutWorkingDirectory "$STARTMENU$CurrentDirVar\$CurrentFileVar" + Pop $0 + StrCmp "$0" "" +2 + StrCmp "$0" "$9" 0 next + ShellLink::GetShortCutTarget "$STARTMENU$CurrentDirVar\$CurrentFileVar" + Pop $1 + ${WordFind2X} "$1" "\" ".exe" "-1" $7 + ClearErrors + ${WordFind} "$7" "uninstall" "E*" $6 + IfErrors 0 +2 + StrCpy $6 0 + ;#NON-DEBUG + ${If} $7 == "opencpn" + ${OrIf} $7 == "Uninstall" + ${OrIf} $7 == "unins000" + ${OrIf} $6 == 1 + Delete "$STARTMENU$CurrentDirVar\$CurrentFileVar" + StrCmp $CurrentDirVar "" next + ClearErrors + RMDir "$STARTMENU$CurrentDirVar" + Sleep 250 + IfErrors 0 check_parent + ${If} ${FileExists} "$STARTMENU$CurrentDirVar\*.*" + ClearErrors + RMDir "$STARTMENU$CurrentDirVar" + Sleep 250 + IfErrors next check_parent + ${EndIf} + + Goto next + + check_parent: + StrCpy $R3 "$STARTMENU$CurrentDirVar" + Push $R3 + Call ${un}Parent_Dirs_Check + ${EndIf} + + next: + ${RecFindNext} + ${RecFindClose} + + ${If} ${FileExists} "$TEMP\opencpn_startmenu.tmp" + FileOpen $R0 "$TEMP\opencpn_startmenu.tmp" r + IfErrors end + ${Do} + FileReadUTF16LE $R0 $R1 + FileReadUTF16LE $R0 $R2 + ${TrimNewLines} $R1 $R1 + ${TrimNewLines} $R2 $R2 + StrCmp $R2 "" 0 +2 + ${Break} + ${RecFindOpen} "$R2" $CurrentDirVar $CurrentFileVar + ${RecFindFirst} + ClearErrors + ${WordFind} "$CurrentFileVar" ".lnk" "E*" $8 + IfErrors next1 + IntCmp $8 1 0 next1 0 + ShellLink::GetShortCutWorkingDirectory "$R2$CurrentDirVar\$CurrentFileVar" + Pop $0 + StrCmp "$0" "$9" 0 next1 + ShellLink::GetShortCutTarget "$R2$CurrentDirVar\$CurrentFileVar" + Pop $1 + ${WordFind2X} "$1" "\" ".exe" "-1" $7 + ;#NON-DEBUG + ${If} $7 == "opencpn" + ${OrIf} $7 == "Uninstall" + ${OrIf} $7 == "unins000" + Delete "$R2$CurrentDirVar\$CurrentFileVar" + StrCmp $CurrentDirVar "" next1 + ClearErrors + RMDir "$R2$CurrentDirVar" + Sleep 250 + IfErrors 0 check_parent1 + ${If} ${FileExists} "$R2$CurrentDirVar\*.*" + ClearErrors + RMDir "$R2$CurrentDirVar" + Sleep 250 + IfErrors next1 check_parent1 + ${EndIf} + + Goto next1 + + check_parent1: + StrCpy $R3 "$STARTMENU$CurrentDirVar" + Push $R3 + Call ${un}Parent_Dirs_Check + ${EndIf} + + next1: + ${RecFindNext} + ${RecFindClose} + ${LoopUntil} $R2 == "" + FileClose $R0 + ${EndIf} + + end: + Call ${un}Delete_Empty_Parents + + Pop $R4 + Pop $R3 + Pop $R2 + Pop $R1 + Pop $R0 + FunctionEnd +!macroend +!insertmacro Delete_Start_Menu_Shortcuts_Macro "" +!insertmacro Delete_Start_Menu_Shortcuts_Macro "un." + + +!macro Delete_Desktop_Shortcuts_Macro un + Function ${un}Delete_Desktop_Shortcuts + Pop $9 + Push $R0 + Push $R1 + Push $R2 + Push $R3 + ${TrimNewLines} $9 $9 + SetShellVarContext all + ${RecFindOpen} "$DESKTOP" $CurrentDirVar $CurrentFileVar + ${RecFindFirst} + ClearErrors + ${WordFind} "$CurrentFileVar" ".lnk" "E*" $8 + IfErrors next + IntCmp $8 1 0 next 0 + ShellLink::GetShortCutWorkingDirectory "$DESKTOP$CurrentDirVar\$CurrentFileVar" + Pop $0 + StrCmp "$0" "" +2 + StrCmp "$0" "$9" 0 next + ShellLink::GetShortCutTarget "$DESKTOP$CurrentDirVar\$CurrentFileVar" + Pop $1 + ${WordFind2X} "$1" "\" ".exe" "-1" $7 + ClearErrors + ${WordFind} "$7" "uninstall" "E*" $6 + IfErrors 0 +2 + StrCpy $6 0 + ;#NON-DEBUG + ${If} $7 == "opencpn" + ${OrIf} $7 == "Uninstall" + ${OrIf} $7 == "unins000" + ${OrIf} $6 == 1 + Delete "$DESKTOP$CurrentDirVar\$CurrentFileVar" + StrCmp $CurrentDirVar "" next + RMDir "$DESKTOP$CurrentDirVar" + Sleep 250 + IfErrors 0 check_parent + ${If} ${FileExists} "$DESKTOP$CurrentDirVar\*.*" + ClearErrors + RMDir "$DESKTOP$CurrentDirVar" + Sleep 250 + IfErrors next check_parent + ${EndIf} + + Goto next + + check_parent: + StrCpy $R3 "$DESKTOP$CurrentDirVar" + Push $R3 + Call ${un}Parent_Dirs_Check + ${EndIf} + + next: + ${RecFindNext} + ${RecFindClose} + + ${If} ${FileExists} "$TEMP\opencpn_desktop.tmp" + FileOpen $R0 "$TEMP\opencpn_desktop.tmp" r + IfErrors end + ${Do} + FileReadUTF16LE $R0 $R1 + FileReadUTF16LE $R0 $R2 + ${TrimNewLines} $R1 $R1 + ${TrimNewLines} $R2 $R2 + StrCmp $R2 "" 0 +2 + ${Break} + ${RecFindOpen} "$R2" $CurrentDirVar $CurrentFileVar + ${RecFindFirst} + ClearErrors + ${WordFind} "$CurrentFileVar" ".lnk" "E*" $8 + IfErrors next1 + IntCmp $8 1 0 next1 0 + ShellLink::GetShortCutWorkingDirectory "$R2$CurrentDirVar\$CurrentFileVar" + Pop $0 + StrCmp "$0" "$9" 0 next1 + ShellLink::GetShortCutTarget "$R2$CurrentDirVar\$CurrentFileVar" + Pop $1 + ${WordFind2X} "$1" "\" ".exe" "-1" $7 + ;#NON-DEBUG + ${If} $7 == "opencpn" + ${OrIf} $7 == "Uninstall" + ${OrIf} $7 == "unins000" + Delete "$R2$CurrentDirVar\$CurrentFileVar" + StrCmp $CurrentDirVar "" next1 + RMDir "$R2$CurrentDirVar" + Sleep 250 + IfErrors 0 check_parent1 + ${If} ${FileExists} "$R2$CurrentDirVar\*.*" + ClearErrors + RMDir "$R2$CurrentDirVar" + Sleep 250 + IfErrors next1 check_parent1 + ${EndIf} + + Goto next1 + + check_parent1: + StrCpy $R3 "$STARTMENU$CurrentDirVar" + Push $R3 + Call ${un}Parent_Dirs_Check + ${EndIf} + + next1: + ${RecFindNext} + ${RecFindClose} + ${LoopUntil} $R2 == "" + FileClose $R0 + ${EndIf} + + end: + Call ${un}Delete_Empty_Parents + + Pop $R3 + Pop $R2 + Pop $R1 + Pop $R0 + FunctionEnd +!macroend +!insertmacro Delete_Desktop_Shortcuts_Macro "" +!insertmacro Delete_Desktop_Shortcuts_Macro "un." + + +!macro Parent_Dirs_Check_Macro un + Function ${un}Parent_Dirs_Check + Pop $R3 + Push $R4 + ClearErrors + ${If} ${FileExists} "$TEMP\opencpn_check_parent.tmp" + FileOpen $R4 "$TEMP\opencpn_check_parent.tmp" a + IfErrors end + ${Else} + FileOpen $R4 "$TEMP\opencpn_check_parent.tmp" w + IfErrors end + ${EndIf} + + ${WordFind} "$R3" "\" "E-2{*" $R3 + IfErrors close + FileWriteUTF16LE $R4 "$R3$\r$\n" + + close: + FileClose $R4 + + end: + Pop $R4 + FunctionEnd +!macroend +!insertmacro Parent_Dirs_Check_Macro "" +!insertmacro Parent_Dirs_Check_Macro "un." + + +!macro Delete_Empty_Parents_Macro un + Function ${un}Delete_Empty_Parents + Push $R3 + Push $R4 + Push $R5 + ClearErrors + ${If} ${FileExists} "$TEMP\opencpn_check_parent.tmp" + FileOpen $R4 "$TEMP\opencpn_check_parent.tmp" r + IfErrors end + ${Do} + FileReadUTF16LE $R4 $R3 + IfErrors close + ${TrimNewLines} "$R3" $R3 + ${DirState} $R3 $R5 + StrCmp $R5 0 0 next + ClearErrors + RMDir "$R3" + Sleep 250 + IfErrors next + + loop: + ${WordFind} "$R3" "\" "E-2{*" $R3 + IfErrors next + StrCpy $error_tmp 0 + Push $R3 + Call ${un}Delete_Empty_Dir + StrCmp $error_tmp 1 loop + next: + ${Loop} + close: + FileClose $R4 + Delete "$TEMP\opencpn_check_parent.tmp" + ${EndIf} + end: + Pop $R5 + Pop $R4 + Pop $R3 + FunctionEnd +!macroend +!insertmacro Delete_Empty_Parents_Macro "" +!insertmacro Delete_Empty_Parents_Macro "un." + + +!macro Delete_Empty_Dir_Macro un + Function ${un}Delete_Empty_Dir + Push $R3 + Exch + Pop $R3 + Push $R4 + ${DirState} $R3 $R4 + StrCmp $R4 0 0 end + RMDir "$R3" + Sleep 100 + StrCpy $error_tmp 1 + + end: + Pop $R4 + Pop $R3 + FunctionEnd +!macroend +!insertmacro Delete_Empty_Dir_Macro "" +!insertmacro Delete_Empty_Dir_Macro "un." + + +; Initialize variables +Var explString +Var explSeparator +Var explStrLen +Var explSepLen +Var explOffset +Var explTmp +Var explTmp2 +Var explTmp3 +Var explArrCount +!macro Explodes_Macro un + Function ${un}Explode + /*; Initialize variables + Var /GLOBAL explString + Var /GLOBAL explSeparator + Var /GLOBAL explStrLen + Var /GLOBAL explSepLen + Var /GLOBAL explOffset + Var /GLOBAL explTmp + Var /GLOBAL explTmp2 + Var /GLOBAL explTmp3 + Var /GLOBAL explArrCount + */ + ; Get input from user + Pop $explString + Pop $explSeparator + + ; Calculates initial values + StrLen $explStrLen $explString + StrLen $explSepLen $explSeparator + StrCpy $explArrCount 1 + + ${If} $explStrLen <= 1 ; If we got a single character + ${OrIf} $explSepLen > $explStrLen ; or separator is larger than the string, + Push $explString ; then we return initial string with no change + Push 1 ; and set array's length to 1 + Return + ${EndIf} + + ; Set offset to the last symbol of the string + StrCpy $explOffset $explStrLen + IntOp $explOffset $explOffset - 1 + + ; Clear temp string to exclude the possibility of appearance of occasional data + StrCpy $explTmp "" + StrCpy $explTmp2 "" + StrCpy $explTmp3 "" + + ; Loop until the offset becomes negative + ${Do} + ; If offset becomes negative, it is time to leave the function + ${IfThen} $explOffset == -1 ${|} ${ExitDo} ${|} + + ; Remove everything before and after the searched part ("TempStr") + StrCpy $explTmp $explString $explSepLen $explOffset + + ${If} $explTmp == $explSeparator + ; Calculating offset to start copy from + IntOp $explTmp2 $explOffset + $explSepLen ; Offset equals to the current offset plus length of separator + StrCpy $explTmp3 $explString "" $explTmp2 + + Push $explTmp3 ; Throwing array item to the stack + IntOp $explArrCount $explArrCount + 1 ; Increasing array's counter + + StrCpy $explString $explString $explOffset 0 ; Cutting all characters beginning with the separator entry + StrLen $explStrLen $explString + ${EndIf} + + ${If} $explOffset = 0 ; If the beginning of the line met and there is no separator, + ; copying the rest of the string + ${If} $explSeparator == "" ; Fix for the empty separator + IntOp $explArrCount $explArrCount - 1 + ${Else} + Push $explString + ${EndIf} + ${EndIf} + + IntOp $explOffset $explOffset - 1 + ${Loop} + + Push $explArrCount + FunctionEnd +!macroend +!insertmacro Explodes_Macro "" +!insertmacro Explodes_Macro "un." + + +!macro isEmptyDir_Macro un + Function ${un}isEmptyDir + # Stack -> # Stack: + Exch $0 # Stack: $0 + Push $1 # Stack: $1, $0 + FindFirst $0 $1 "$0\*.*" + StrCmp $1 "." 0 _notempty + FindNext $0 $1 + StrCmp $1 ".." 0 _notempty + ClearErrors + FindNext $0 $1 + IfErrors 0 _notempty + FindClose $0 + Pop $1 # Stack: $0 + StrCpy $0 1 + Exch $0 # Stack: 1 (true) + Goto _end + _notempty: + FindClose $0 + Pop $1 # Stack: $0 + StrCpy $0 0 + Exch $0 # Stack: 0 (false) + _end: + FunctionEnd +!macroend +!insertmacro isEmptyDir_Macro "" +!insertmacro isEmptyDir_Macro "un." +;-------------------------------------------------------------------------------------------------- +;################################################################################################## +;# D E S C R I P T I O N S # +;################################################################################################## +;# Installer Descriptions # +;################################################################################################## + +;# License page + LicenseLangString license ${LANG_ENGLISH} "@CPACK_RESOURCE_FILE_LICENSE@" + LicenseLangString license ${LANG_GERMAN} "@CPACK_RESOURCE_FILE_LICENSE@" + LicenseLangString license ${LANG_FRENCH} "@CPACK_RESOURCE_FILE_LICENSE@" + LicenseLangString license ${LANG_CZECH} "@CPACK_RESOURCE_FILE_LICENSE@" + LicenseLangString license ${LANG_DANISH} "@CPACK_RESOURCE_FILE_LICENSE@" + LicenseLangString license ${LANG_SPANISH} "@CPACK_RESOURCE_FILE_LICENSE@" + LicenseLangString license ${LANG_ITALIAN} "@CPACK_RESOURCE_FILE_LICENSE@" + LicenseLangString license ${LANG_DUTCH} "@CPACK_RESOURCE_FILE_LICENSE@" + LicenseLangString license ${LANG_POLISH} "@CPACK_RESOURCE_FILE_LICENSE@" + LicenseLangString license ${LANG_PORTUGUESE} "@CPACK_RESOURCE_FILE_LICENSE@" + LicenseLangString license ${LANG_PORTUGUESEBR} "@CPACK_RESOURCE_FILE_LICENSE@" + LicenseLangString license ${LANG_RUSSIAN} "@CPACK_RESOURCE_FILE_LICENSE@" + LicenseLangString license ${LANG_SWEDISH} "@CPACK_RESOURCE_FILE_LICENSE@" + LicenseLangString license ${LANG_FINNISH} "@CPACK_RESOURCE_FILE_LICENSE@" + LicenseLangString license ${LANG_NORWEGIAN} "@CPACK_RESOURCE_FILE_LICENSE@" + LicenseLangString license ${LANG_TRADCHINESE} "@CPACK_RESOURCE_FILE_LICENSE@" + LicenseLangString license ${LANG_TURKISH} "@CPACK_RESOURCE_FILE_LICENSE@" + ;LicenseLangString license ${LANG_HUNGARIAN} "@CPACK_RESOURCE_FILE_LICENSE@" + +!insertmacro MUI_FUNCTION_DESCRIPTION_BEGIN + !insertmacro MUI_DESCRIPTION_TEXT ${SecGrpResetConfig} $(SecGrpResetConfig_Desc) + !insertmacro MUI_DESCRIPTION_TEXT ${SecDeleteConfigFile} $(SecDeleteConfigFile_Desc) + !insertmacro MUI_DESCRIPTION_TEXT ${SecDeleteChartDB} $(SecDeleteChartDB_Desc) + !insertmacro MUI_DESCRIPTION_TEXT ${SecDeleteSENC} $(SecDeleteSENC_Desc) + !insertmacro MUI_DESCRIPTION_TEXT ${SecDeleteCM93} $(SecDeleteCM93_Desc) + !insertmacro MUI_DESCRIPTION_TEXT ${SecDeleteNavobjFile} $(SecDeleteNavobjFile_Desc) + !insertmacro MUI_DESCRIPTION_TEXT ${SecDeleteLogFile} $(SecDeleteLogFile_Desc) + !insertmacro MUI_DESCRIPTION_TEXT ${SecGrpShortcuts} $(SecGrpShortcuts_Desc) + !insertmacro MUI_DESCRIPTION_TEXT ${SecShortcutStartmenu} $(SecShortcutStartmenu_Desc) + !insertmacro MUI_DESCRIPTION_TEXT ${SecShortcutDesktop} $(SecShortcutDesktop_Desc) + !insertmacro MUI_DESCRIPTION_TEXT ${SecSetConfig} $(SecSetConfig_Desc) +!insertmacro MUI_FUNCTION_DESCRIPTION_END + +;-------------------------------- +;################################################################################################## +;# Uninstaller Descriptions # +;################################################################################################## +!insertmacro MUI_UNFUNCTION_DESCRIPTION_BEGIN + !insertmacro MUI_DESCRIPTION_TEXT ${UnSecDeleteConfigFolder} $(UnSecDeleteConfigFolder_Desc) +!insertmacro MUI_UNFUNCTION_DESCRIPTION_END + + +;-------------------------------------------------------------------------------------------------- +;################################################################################################## +;# Language Strings # +;################################################################################################## +;#DO NOT EDIT THE NEXT LINE!!! It is needed for the online generating of the translation files! +;#Language Strings Start as of: 2010-10-10 +;#IMPORTANT: Do not end a multi-line with $\" + + LangString Installer ${LANG_ENGLISH} "installer" + + LangString Uninstaller ${LANG_ENGLISH} "uninstaller" + + ;Installer running on unsupported version of Windows + LangString Installer_Unsupported_Windows_Version ${LANG_ENGLISH} "Your Windows version is not supported (it's too old)!$\r$\nYou need at least Windows XP SP3." + + ;Installer running on Windows XP without SP3 + LangString Installer_Unsupported_XP_SP_Version ${LANG_ENGLISH} "Your Windows XP Service Pack version is not supported (it's too old)!$\r$\nYou need at least Windows XP SP3." + + ;Installer already running + LangString Installer_Running ${LANG_ENGLISH} "The installer is already running." + + ;Uninstaller already running + LangString Uninstaller_Running ${LANG_ENGLISH} "The uninstaller is already running." + + ;Language Dialog + LangString LangDialog_Title ${LANG_ENGLISH} "@CPACK_PACKAGE_NAME@ @CPACK_PACKAGE_VERSION@ Installation" + + LangString LangDialog_Text ${LANG_ENGLISH} "Please select a language:" + + ;License dialog + LangString License_Message ${LANG_ENGLISH} "OpenCPN is software libre. You are encouraged and legally \ + entitled to copy, reinstall, modify, and redistribute this program \ + for yourself and your friends under the terms of the GPL. $\r$\nSmooth sailing!" + + ;Clean up page + LangString text_please_wait_1 ${LANG_ENGLISH} "... please wait!" + + LangString Scanning_HDD ${LANG_ENGLISH} "Scanning HDD ..." + + LangString OCPN_Scanning_HDD ${LANG_ENGLISH} "OpenCPN: Scan HDD ..., please wait!" + + LangString Search_old_installations ${LANG_ENGLISH} "Searching for old installations" + + LangString Install_Location_Default ${LANG_ENGLISH} "Install Locations by default paths (may not find all)" + + LangString Install_Location_HDD_Scan ${LANG_ENGLISH} "Install Location by full HDD scan (most reliable)" + + LangString Label_CleanUp_Text ${LANG_ENGLISH} "Click on a list-item to select/ unselect it or Select ALL (recommended) and then Uninstall selected." + + LangString BT_Uninstall_Selected_CleanUp ${LANG_ENGLISH} "Uninstall Selected" + + LangString BT_SelectAll_CleanUp ${LANG_ENGLISH} "Select ALL" + + LangString BT_UnselectAll_CleanUp ${LANG_ENGLISH} "Unselect ALL" + + LangString LB_CleanUp ${LANG_ENGLISH} "Listbox Text" + + LangString BT_FullScan_CleanUp ${LANG_ENGLISH} "Scan HDD ..." + + LangString LAB_FullScan_CleanUp ${LANG_ENGLISH} "Scan the HDD for the most reliable detection.$\r$\nATTENTION: may last several minutes!" + + LangString Page_CleanUp_Title ${LANG_ENGLISH} "Uninstall older Version" + + LangString Page_CleanUp_Subtitle ${LANG_ENGLISH} "Incompatible version detected" + + ;Components Page + ;Header + LangString CP_HEADER_TEXT ${LANG_ENGLISH} "Installation Settings" + + ;Subheader + LangString CP_HEADER_SUBTEXT ${LANG_ENGLISH} "Choose the settings for the installation" + + ;Top + LangString CP_TOP ${LANG_ENGLISH} "Check or uncheck the options for the installation.$\r$\nClick 'Next' to continue." + + ;Installation type + LangString CP_INSTTYPE ${LANG_ENGLISH} "Installation type:" + + ;Components list + LangString CP_COMPLIST ${LANG_ENGLISH} "Adjust the settings individually:" + + + ;Directory page + + + ;Set Config page + LangString Page_SetConfig_Title ${LANG_ENGLISH} "Default configuration settings" + + LangString Page_SetConfig_Subtitle ${LANG_ENGLISH} "Preconfigure settings for OpenCPN" + + LangString Select_Chart_Directory ${LANG_ENGLISH} "Please select a chart directory to add to OpenCPN" + + LangString BT_Browse_SetConfig_Text ${LANG_ENGLISH} "Browse..." + + LangString BT_DeleteAll_SetConfig_Text ${LANG_ENGLISH} "Delete ALL" + + LangString BT_Delete_SetConfig_Text ${LANG_ENGLISH} "Delete" + + LangString GB_ChartDir_SetConfig_Text ${LANG_ENGLISH} "Add Chart Directory" + + LangString CB_Language_SetConfig_Text ${LANG_ENGLISH} "Set OpenCPN program language to $LANG_NAME" + + LangString GB_Language_SetConfig_Text ${LANG_ENGLISH} "Set OpenCPN program language" + + LangString Label_SetConfig_Text ${LANG_ENGLISH} "Configure preconfig settings for the OpenCPN program.$\r$\nThese settings are saved in the file opencpn.ini." + + ;Confirm page + LangString Page_Confirm_Title ${LANG_ENGLISH} "Ready to Install" + + LangString Page_Confirm_Subtitle ${LANG_ENGLISH} "Check the installation options" + + LangString Installation_Type ${LANG_ENGLISH} "Setup type" + + LangString Installation_Directory ${LANG_ENGLISH} "Destination location" + + LangString Create_Shortcuts ${LANG_ENGLISH} "Create shortcuts" + + LangString Type_Reinstall ${LANG_ENGLISH} "Reinstallation" + + LangString Type_Upgrade ${LANG_ENGLISH} "Upgrade" + + LangString Type_Downgrade ${LANG_ENGLISH} "Downgrade" + + LangString Type_Parallel_Installation ${LANG_ENGLISH} "Parallel installation" + + LangString Type_Fresh_Installation ${LANG_ENGLISH} "New installation" + + LangString Shortcuts ${LANG_ENGLISH} "Shortcuts" + + LangString Create_Shortcut_Start_Menu ${LANG_ENGLISH} "in the Start Menu folder" + + LangString Create_Shortcut_Desktop ${LANG_ENGLISH} "on the Desktop" + + LangString not_selected ${LANG_ENGLISH} "not selected" + + LangString text_none ${LANG_ENGLISH} "none" + + ;Installer Sections + ;Reset config + LangString SecGrpResetConfig_Text ${LANG_ENGLISH} "Reset ALL OpenCPN configuration files" + + ;Delete Config file (opencpn.ini) + LangString SecDeleteConfigFile_Text ${LANG_ENGLISH} "Delete config file (opencpn.ini)" + + ;Delete Chart DB (CHRTLIST.DAT) + LangString SecDeleteChartDB_Text ${LANG_ENGLISH} "Delete Chart Database file (CHRTLIST.DAT)" + + ;Delete SENC directory + LangString SecDeleteSENC_Text ${LANG_ENGLISH} "Delete SENC directory" + + ;Delete CM93 directory + LangString SecDeleteCM93_Text ${LANG_ENGLISH} "Delete CM93 Directory" + + ;Delete Log file (opencpn.log) + LangString SecDeleteLogFile_Text ${LANG_ENGLISH} "Delete Log file (opencpn.log)" + + ;Delete navobj.xml + LangString SecDeleteNavobjFile_Text ${LANG_ENGLISH} "Delete Navobject file (navobj.xml)" + + ;Set config + LangString SecSetConfig_Text ${LANG_ENGLISH} "OpenCPN Configuration Settings" + + ;Set language + LangString SecSetConfigLang_Text ${LANG_ENGLISH} "Set language to $LANG_NAME" + + ;Set chart dir(s) + LangString SecSetConfigChartDir_Text ${LANG_ENGLISH} "Select Chart Directories" + + ;Uninstaller Sections + ;Reset config + LangString UnSecDeleteConfigFolder_Text ${LANG_ENGLISH} "Delete Config folder" + + ;Installer Descriptions + LangString SecGrpResetConfig_Desc ${LANG_ENGLISH} "Deletes ALL files and subdirectories in the configuration folder." + + LangString SecDeleteConfigFile_Desc ${LANG_ENGLISH} "Deletes the configuration file. This file helds also Routes and Waypoints." + + LangString SecDeleteChartDB_Desc ${LANG_ENGLISH} "Deletes the Chart DB file." + + LangString SecDeleteSENC_Desc ${LANG_ENGLISH} "Deletes the SENC subfolder which helds the Bitmaps and S57 chart cache files." + + LangString SecDeleteCM93_Desc ${LANG_ENGLISH} "Deletes the cm93 subfolder which helds the cached cm93 chart outlines." + + LangString SecDeleteNavobjFile_Desc ${LANG_ENGLISH} "Deletes the file 'navobj.xml' in the config folder. This file contains the Tracks." + + LangString SecDeleteLogFile_Desc ${LANG_ENGLISH} "Deletes the OpenCPN log file 'opencpn.log'." + + LangString SecGrpShortcuts_Desc ${LANG_ENGLISH} "Creates shortcuts in both, the Start Menu and on the Desktop." + + LangString SecShortcutStartmenu_Desc ${LANG_ENGLISH} "Creates shortcuts for OpenCPN and the Uninstaller in the Start Menu - configurable on the next page." + + LangString SecShortcutDesktop_Desc ${LANG_ENGLISH} "Creates a shortcut for OpenCPN on the Desktop." + + LangString SecSetConfig_Desc ${LANG_ENGLISH} "Preconfigure the language setting and the chart dir(s) for s63_pi. When selected a separate page is shown for configuration." + + ;Uninstaller Descriptions + LangString UnSecDeleteConfigFolder_Desc ${LANG_ENGLISH} "Deletes the config folder and all its files and subdirectories." + + ;Un-install Link + LangString Uninstall_Link ${LANG_ENGLISH} "Uninstall @CPACK_PACKAGE_NAME@ @CPACK_PACKAGE_VERSION@" + + ;Multiple Install > 1 + ;Title + LangString Page_TypeInst_Title ${LANG_ENGLISH} "Previous Installations" + + ;Subtitle + LangString Page_TypeInst_Subtitle ${LANG_ENGLISH} "$MULTIPLE_INSTALLS installations of s63_pi found.$\r$\nChoose how you want to install s63_pi." + + ;Multiple Install = 1 + ;Title + LangString Page_TypeInst_Title_1 ${LANG_ENGLISH} "Already Installed" + + ;Subtitle + LangString Page_TypeInst_Subtitle_1 ${LANG_ENGLISH} "Found installed version of s63_pi.$\r$\n" + + ;Version exists + ;Title + LangString Page_TypeInst_Title_Exists ${LANG_ENGLISH} "Version Already Installed" + + ;Subtitle + LangString Page_TypeInst_Subtitle_Exists ${LANG_ENGLISH} "s63_pi @CPACK_PACKAGE_VERSION@ is already installed.$\r$\nChoose how you want to install s63_pi." + + ;Label + LangString Label_TypeInst_Reinstall_Text ${LANG_ENGLISH} "s63_pi @CPACK_PACKAGE_VERSION@ is already installed on your system. You can reinstall the version now using the previous settings. If you wish to install the program with different settings, cancel installation and un-install the existing version first. Click Next to continue." + + ;Radio button 'Reinstall' + LangString RB_Reinstall_TypeInst_Text ${LANG_ENGLISH} "Reinstall using previous settings" + + ;Version newer + ;Label + LangString Label_TypeInst_Upgrade_Text ${LANG_ENGLISH} "An older version of s63_pi is installed on your system. Click Next to continue upgrade." + + ;Radio button 'Upgrade' + LangString RB_Upgrade_TypeInst_Text ${LANG_ENGLISH} "Upgrade s63_pi using previous settings (recommended)" + + ;Version older + ;Label + LangString Label_TypeInst_Downgrade_Text ${LANG_ENGLISH} "A newer version of s63_pi is installed on your system. It is not recommended to downgrade to an older version. Select the installation type you want to perform and click Next to continue." + + ;Radio button 'Downgrade' + LangString RB_Downgrade_TypeInst_Text ${LANG_ENGLISH} "Downgrade s63_pi using previous settings (recommended)" + + ;Multiple versions + ;Label + LangString Label_TypeInst_Parallel_Text ${LANG_ENGLISH} "Setup has detected several installed versions of s63_pi on your system. It is recommended to have only one version of s63_pi installed at a time. Select the operation you want to perform and click Next to continue." + + ;Radio button 'Parallel Installation' + LangString RB_Parallel_TypeInst_Text ${LANG_ENGLISH} "Parallel Installation (advanced users)" + + ;Empty string - needed for Components page + LangString EmptyString ${LANG_ENGLISH} "" + + ;Finish page + LangString Show_Readme_Text ${LANG_ENGLISH} "Show Install Log file" + + LangString Finish_Link_Text ${LANG_ENGLISH} "OpenCPN website (Internet connection required)" + + LangString Finish_Link_URL ${LANG_ENGLISH} "http://opencpn.info/?ref=installer&user=$USERS_NAME&lang=$REG_LANG&version=@CPACK_PACKAGE_VERSION@" + + ;Message Boxes + LangString Msg_UAC_Admin_Retry ${LANG_ENGLISH} "This $Inst_Or_Uninst requires admin access!$\r$\nPlease log on as an Administrator and try again." + + LangString Msg_UAC_Admin_Abort ${LANG_ENGLISH} "This $Inst_Or_Uninst requires admin privileges, aborting!" + + LangString Msg_UAC_Logon_Abort ${LANG_ENGLISH} "Logon service not running, aborting!" + + LangString Msg_UAC_No_Elevation ${LANG_ENGLISH} "Unable to elevate , error $0" + + LangString Msg_Error_Remove_InstDir ${LANG_ENGLISH} "The installation directory$\r$\n'$INSTDIR'$\r$\ncould not be removed because it is not empty." + + LangString Msg_Path_Invalid ${LANG_ENGLISH} "The entered path is invalid!$\r$\n$\r$\nPlease check your input." + + LangString Msg_Path_Installation_Exists ${LANG_ENGLISH} "There already exists an installation of s63_pi in the given path.$\r$\nIf you wish to use this path, first uninstall the version. Or select another path for this installation." + + LangString Msg_Uninstall_Old_Versions ${LANG_ENGLISH} "Setup has detected at least one older version of s63_pi which is not compatible with the new version control.$\r$\n\ + It is recommended to first uninstall all of these installations (this does not affect your Config files) and clean-up the Registry.$\r$\n\ + If you click Yes on the next page a listbox with all installation locations will be shown and you will have the possibility to select the installations you wish to uninstall.$\r$\n\ + If you are unsure about possible other previous installations than those shown in the listbox, you can also perform a scan of the entire \ + Harddisk (ATTENTION: This may take several minutes) to find all install locations (recommended).$\r$\n$\r$\n\ + Do you want to uninstall the old version(s)?" + + LangString Msg_Not_All_Old_Uninstalled ${LANG_ENGLISH} "You have not uninstalled all previous installations.$\r$\n$\r$\nDo you want to continue anyway?" + + LangString Msg_Uninstaller_Param_Help ${LANG_ENGLISH} "Uninstaller Help$\r$\n$\r$\nUse the command line or a shortcut to run the uninstaller:$\r$\n$INSTDIR\Uninstall @CPACK_PACKAGE_VERSION@.exe [/?] | [/S], [/type=X]$\r$\n$\r$\nParameters:$\r$\n/?$\tshows this help message box$\r$\n/S$\truns the uninstaller in silent mode$\r$\n$\twill do a full uninstall if called without any type parameter$\r$\n/type=X$\tX must be a digit between 1 and 5$\r$\n$\t1 = Removes only the program files$\r$\n$\t2 = Removes only the program files + preconfig RegKey$\r$\n$\t3 = Removes the program files + config folder$\r$\n$\tpreserves the preconfig RegKey$\r$\n$\t4 = Deletes only the config folder$\r$\n$\t5 = Deletes only the preconfig RegKey$\r$\n$\r$\nEntering any other number or value will quit the uninstaller with a message box without removing or deleting anything." + + LangString Msg_Unknown_Type_Param ${LANG_ENGLISH} "The entered value '$9' for the type parameter is not valid!$\r$\nUse $INSTDIR\Uninstall @CPACK_PACKAGE_VERSION@.exe /?$\r$\nto see a list of valid values." + + ;added on 2010-10-16 + LangString SecGrpShortcuts_Text ${LANG_ENGLISH} "Create Shortcuts" + + LangString SecShortcutStartmenu_Text ${LANG_ENGLISH} "Add Shortcuts to the Start Menu" + + LangString SecShortcutDesktop_Text ${LANG_ENGLISH} "Create Shortcut on the Desktop" + + LangString Installation_Delete_Config ${LANG_ENGLISH} "Delete (existing) Config Subdirectories/ Files" + + ;added on 2010-10-17 + LangString Banner_Scan_Drive ${LANG_ENGLISH} "Scanning Drive $9" + + LangString Banner_Installation_Found_Singular ${LANG_ENGLISH} "Found $counter_tmp installation" + + LangString Banner_Installation_Found_Plural ${LANG_ENGLISH} "Found $counter_tmp installations" + + ;added on 2010-10-21 + LangString Uninstall_Folder_Name ${LANG_ENGLISH} "Uninstall" + + ;added on 2011-06-13 + LangString ^NameDA ${LANG_ENGLISH} "@CPACK_PACKAGE_NAME@ Version @CPACK_PACKAGE_VERSION@" + LangString Installer ${LANG_ENGLISH} "Installer" + +;#EOF diff --git a/cmake/in-files/PluginCPackOptions.cmake.in b/cmake/in-files/PluginCPackOptions.cmake.in new file mode 100644 index 0000000..5379264 --- /dev/null +++ b/cmake/in-files/PluginCPackOptions.cmake.in @@ -0,0 +1,15 @@ +# --------------------------------------------------------------------------- +# Author: Jon Gough Copyright: 2020 License: GPLv3+ +# --------------------------------------------------------------------------- + +# This file contains changes needed during the make package process depending on the type of package being created + +if(CPACK_GENERATOR MATCHES "DEB") + set(CPACK_PACKAGE_FILE_NAME "@PACKAGING_NAME@") + if(CPACK_DEBIAN_PACKAGE_ARCHITECTURE MATCHES "x86_64") + set(CPACK_DEBIAN_PACKAGE_ARCHITECTURE @ARCH_DEB@) + endif() +else() + set(CPACK_PACKAGE_FILE_NAME "@PACKAGING_NAME_XML@") + set(CPACK_DEBIAN_PACKAGE_ARCHITECTURE @ARCH@) +endif() diff --git a/cmake/in-files/cloudsmith-upload.sh.in b/cmake/in-files/cloudsmith-upload.sh.in new file mode 100644 index 0000000..717bf88 --- /dev/null +++ b/cmake/in-files/cloudsmith-upload.sh.in @@ -0,0 +1,264 @@ +#!/usr/bin/env bash + +# +# Upload the .tar.gz and .xml artifacts to cloudsmith +# +# Builds are uploaded to one of PROD, BETA or ALPHA repositories +# The repository depends on the branch and use of tag to determine which repo. +# ALPHA: Non-master branch no tag +# BETA: Non-master branch with annotated tag +# BETA: Master branch no tag +# PROD: Master branch with annotated tag +# +# If this script is used on CIRCLECI, TRAVIS or APPVEYOR it will upload the correct files to the chosen repository +# If this script is used locally it will build the correct artifacts but will not do the upload +# + +set -xe + +PROD_REPO=${CLOUDSMITH_PROD_REPO:-'@CLOUDSMITH_USER@/@CLOUDSMITH_BASE_REPOSITORY@-@PROD@'} +BETA_REPO=${CLOUDSMITH_BETA_REPO:-'@CLOUDSMITH_USER@/@CLOUDSMITH_BASE_REPOSITORY@-@BETA@'} +ALPHA_REPO=${CLOUDSMITH_ALPHA_REPO:-'@CLOUDSMITH_USER@/@CLOUDSMITH_BASE_REPOSITORY@-@ALPHA@'} + +LOCAL_BUILD=false + +if [ "$CIRCLECI" ]; then + BUILD_ID=${CIRCLE_BUILD_NUM:-1} + BUILD_DIR=$HOME/project/build + BUILD_BRANCH=$CIRCLE_BRANCH + BUILD_TAG=$CIRCLE_TAG + PKG_EXT=${CLOUDSMITH_PKG_EXT:-'deb'} +elif [ "$TRAVIS" ]; then + BUILD_ID=${TRAVIS_BUILD_NUM:-1} + BUILD_DIR=$TRAVIS_BUILD_DIR/build + BUILD_BRANCH=$TRAVIS_BRANCH + BUILD_TAG=$TRAVIS_TAG + if [ "$BUILD_BRANCH" = "$BUILD_TAG" ]; then + # Travis makes BUILD_BRANCH = BUILD_TAG so make BUILD_BRANCH "" + BUILD_BRANCH="" + fi + PKG_EXT=${CLOUDSMITH_PKG_EXT:-'deb'} +elif [ "$APPVEYOR" ]; then + BUILD_ID=${APPVEYOR_BUILD_NUMBER:-1} + BUILD_DIR=$(pwd) + BUILD_BRANCH=$APPVEYOR_REPO_BRANCH + BUILD_TAG=$APPVEYOR_REPO_TAG_NAME + PKG_EXT=${CLOUDSMITH_PKG_EXT:-'exe'} +else + BUILD_ID=${CIRCLE_BUILD_NUM:-1} + BUILD_DIR=. + BUILD_BRANCH=$CIRCLE_BRANCH + BUILD_TAG=$CIRCLE_TAG + PKG_EXT=${CLOUDSMITH_PKG_EXT:-'deb'} + LOCAL_BUILD=true +fi + +set +x +if [ -z "$CLOUDSMITH_API_KEY" ] && [ "$LOCAL_BUILD" = "false" ]; then + echo 'Cannot deploy to cloudsmith, missing $CLOUDSMITH_API_KEY' + exit 0 +fi +set -x + +if [ "$CIRCLECI" ] || [ "$TRAVIS" ]; then + if [ "$DEPLOY_USE_ORB" != "true" ]; then + if pyenv versions 2>&1 >/dev/null; then + pyenv versions + version_1=$(python --version | cut -d '.' -f1 | cut -d ' ' -f2) + version_2=$(python --version | cut -d '.' -f2) + if [ $version_1 -lt 3 ] || [ $version_2 -lt 5 ]; then + sudo apt install software-properties-common + sudo apt update + sudo apt install -y python3.8 python3-pip + sudo rm /usr/bin/python3 + sudo ln -s /usr/bin/python3.8 /usr/bin/python3 + fi + python3 --version + sudo python3 -m pip install cloudsmith-cli + pyenv rehash + elif test -d $HOME/cs-venv; then + source $HOME/cs-venv/bin/activate + python -m pip install cloudsmith-cli + elif dnf --version 2>&1 >/dev/null; then + sudo dnf -y install python3-pip python3-setuptools + sudo python3 -m pip install -q cloudsmith-cli + elif apt-get --version 2>&1 >/dev/null; then + COUNTER=0 + sudo apt install software-properties-common + sudo apt update + sudo apt install -y python3.8 + sudo rm /usr/bin/python3 + sudo ln -s /usr/bin/python3.8 /usr/bin/python3 + until + sudo apt-get install python3-pip python3-setuptools + do + if [ "$COUNTER" -gt "20" ]; then + exit -1 + fi + sleep 5 + ((COUNTER++)) + done + sudo python3 -m pip install --upgrade pip + sudo python3 -m pip install -q cloudsmith-cli + fi + fi +fi + +commit=$(git rev-parse --short=7 HEAD) || commit="unknown" +tag=$(git tag --contains HEAD) + +ls -la +pwd +xml=$(ls $BUILD_DIR/*.xml) +cat $xml +tarball=$(ls $BUILD_DIR/*.tar.gz) +tarball_basename=${tarball##*/} +echo $tarball +echo $tarball_basename + +source $BUILD_DIR/pkg_version.sh +if [ -n "${OCPN_TARGET}" ]; then + tarball_name=@PACKAGE_NAME@-@PACKAGE_VERSION@-${PKG_TARGET}-@COMPOUND_ARCH_DASH@@PKG_TARGET_WX_VER@@PKG_BUILD_GTK@-${PKG_TARGET_VERSION}-${OCPN_TARGET}-tarball +else + tarball_name=@PACKAGE_NAME@-@PACKAGE_VERSION@-${PKG_TARGET}-@COMPOUND_ARCH_DASH@@PKG_TARGET_WX_VER@@PKG_BUILD_GTK@-${PKG_TARGET_VERSION}-tarball +fi + +if [ "$(ls $BUILD_DIR/*.${PKG_EXT})" ]; then + pkg=$(ls $BUILD_DIR/*.${PKG_EXT}) +else + pkg="" +fi + +echo $BUILD_BRANCH +echo $BUILD_TAG +echo ${#BUILD_TAG} +if [ "$BUILD_TAG" = "" ] && [ "$tag" != "" ]; then + BUILD_TAG=$tag + echo "Build tag: $BUILD_TAG" +fi +if [ "$BUILD_BRANCH" = "" ]; then + build_commit=$(git show -s --format=%d $BUILD_TAG) + is_master=$(echo $build_commit | awk '/\/master/ {print}') + if [ "$is_master" != "" ] || [ "$TRAVIS" ]; then + BUILD_BRANCH="master" + fi +fi + +BUILD_BRANCH_LOWER=`echo $BUILD_BRANCH | tr '[A-Z]' '[a-z]'` +if [ "$BUILD_BRANCH_LOWER" = "master" ]; then + echo "In master branch " + if [ -n "$BUILD_TAG" ]; then + echo "building with tag" + VERSION=$BUILD_TAG + REPO="$PROD_REPO" + else + VERSION="@PROJECT_VERSION@+${BUILD_ID}.${commit}" + echo "building without tag" + REPO="$BETA_REPO" + fi +else + echo "In non master branch " $BUILD_BRANCH + if [ -n "$BUILD_TAG" ]; then + echo "building with tag" + VERSION=$BUILD_TAG + REPO="$BETA_REPO" + else + echo "building without tag" + VERSION="@PROJECT_VERSION@+${BUILD_ID}.${commit}" + REPO="$ALPHA_REPO" + fi +fi +echo $VERSION +echo $REPO + +if [ "$APPVEYOR" ] || [ $LOCAL_BUILD=true ]; then + echo 'substituting xml file variables for windows build' + while read line; do + line=${line//--pkg_repo--/$REPO} + line=${line//--name--/$tarball_name} + line=${line//--version--/$VERSION} + line=${line//--filename--/$tarball_basename} + echo $line + done < "$xml" > xml.tmp && cat xml.tmp && cp xml.tmp $xml && rm xml.tmp +else + echo 'substituting xml file variables for non-windows build' + sudo sed -i -e "s|--pkg_repo--|$REPO|" $xml + sudo sed -i -e "s|--name--|$tarball_name|" $xml + sudo sed -i -e "s|--version--|$VERSION|" $xml + sudo sed -i -e "s|--filename--|$tarball_basename|" $xml +fi + +cat $xml +ls -l $BUILD_DIR +cur_dir=$(pwd) +gunzip -f $tarball +cd "$BUILD_DIR" +rm -f metadata.xml +tarball_tar=$(ls *.tar) +xml_here=$(ls *.xml) +cp -f $xml_here metadata.xml +if [ "$TRAVIS" ] || [ "$CIRCLECI" ] || [ ! -z ${LOCAL_DEPLOY+x} ]; then + mkdir build_tar + cp $tarball_tar build_tar/. + cd build_tar + tar -xf $tarball_tar + rm *.tar + rm -rf root + cp ../metadata.xml . + tar -cf build_tarfile.tar * + tar -tf build_tarfile.tar + rm ../$tarball_tar + cp build_tarfile.tar ../$tarball_tar + cd .. + rm -rf build_tar +else + tar -rf $tarball_tar metadata.xml +fi +tar -tf $tarball_tar +gzip -f $tarball_tar +pwd +cd "$cur_dir" +pwd +ls -la +ls -la ~/. + +# Find if file exists in directory +function have_any() { + [ $# -gt 0 ] +} + +if [ ! -z ${LOCAL_DEPLOY+x} ]; then + if [ -d "/home/circleci/circleci-output" ]; then + sudo cp build/*.gz ~/circleci-output + if have_any ./build/*.deb; then + sudo cp ./build/*.deb ~/circleci-output + elif have_any ./build/*.exe; then + sudo cp ./build/*.exe ~/circleci-output + fi + else + echo "Directory ~/circleci-output not found" + fi +elif [ $LOCAL_BUILD = false ]; then +# Only upload if the owner did the pull request. Non-owners probably don't have security to upload to the cloudsmith repository + if [ "$CIRCLE_PROJECT_USERNAME" = "$CIRCLE_USERNAME" ]; then + cloudsmith push raw --republish --no-wait-for-sync \ + --name @PACKAGE_NAME@-@PACKAGE_VERSION@-@PKG_TARGET@-@COMPOUND_ARCH_DASH@@PKG_TARGET_WX_VER@@PKG_BUILD_GTK@-@PKG_TARGET_VERSION@-${OCPN_TARGET}-metadata \ + --version ${VERSION} \ + --summary "@PACKAGE@ opencpn plugin metadata for automatic installation" \ + $REPO $xml + + cloudsmith push raw --republish --no-wait-for-sync \ + --name $tarball_name \ + --version ${VERSION} \ + --summary "@PACKAGE@ opencpn plugin tarball for automatic installation" \ + $REPO $tarball + + if [ "${PKG_EXT}" != "gz" ] && [ "$pkg" != "" ]; then + cloudsmith push raw --republish --no-wait-for-sync \ + --name opencpn-package-@PACKAGE@-@PACKAGE_VERSION@-@PKG_TARGET@-@COMPOUND_ARCH_DASH@@PKG_TARGET_WX_VER@@PKG_BUILD_GTK@-@PKG_TARGET_VERSION@-${OCPN_TARGET}.${PKG_EXT} \ + --version ${VERSION} \ + --summary "@PACKAGE@ .${PKG_EXT} installation package" \ + $REPO $pkg + fi + fi +fi diff --git a/cmake/in-files/flatpak_args.in b/cmake/in-files/flatpak_args.in new file mode 100644 index 0000000..5919f0e --- /dev/null +++ b/cmake/in-files/flatpak_args.in @@ -0,0 +1,13 @@ +# add flatpak-build args in here like this: +#finish-args: +# - --socket=x11 +# - --socket=pulseaudio +# - --filesystem=home +# - --device=all +# be carefull about indents and naming. +finish-args: + - --socket=x11 + - --socket=pulseaudio + - --filesystem=home + - --device=all + diff --git a/cmake/in-files/flatpak_extra_modules.in b/cmake/in-files/flatpak_extra_modules.in new file mode 100644 index 0000000..55a9479 --- /dev/null +++ b/cmake/in-files/flatpak_extra_modules.in @@ -0,0 +1,14 @@ +# add flatpak-options args in here like this: +# - name: libusb +# config-opts: +# - --disable-shared +# - --enable-static +# - --disable-udev +# - --prefix=/app/extensions/${PACKAGE} +# sources: +# - type: archive +# url: https://downloads.sourceforge.net/project/libusb/libusb-1.0/libusb-1.0.24/libusb-1.0.24.tar.bz2 +# sha256: 7efd2685f7b327326dcfb85cee426d9b871fd70e22caa15bb68d595ce2a2b12a +# cleanup: ["/include", "/lib/*.a", "/lib/*.la", "/lib/pkgconfig"] +# +# be carefull about indents and naming. diff --git a/cmake/in-files/flatpak_options.in b/cmake/in-files/flatpak_options.in new file mode 100644 index 0000000..71ebcbf --- /dev/null +++ b/cmake/in-files/flatpak_options.in @@ -0,0 +1,8 @@ +# add flatpak-options args in here like this: +#build-options: +# build-args: +# - --share=network +# be carefull about indents and naming. +build-options: + build-args: + - --share=network diff --git a/cmake/in-files/org.opencpn.OpenCPN.Plugin.yaml.in b/cmake/in-files/org.opencpn.OpenCPN.Plugin.yaml.in new file mode 100644 index 0000000..de722e0 --- /dev/null +++ b/cmake/in-files/org.opencpn.OpenCPN.Plugin.yaml.in @@ -0,0 +1,30 @@ +id: org.opencpn.OpenCPN.Plugin.${PACKAGE} +runtime: org.opencpn.OpenCPN +runtime-version: ${RUNTIME_VERSION} +sdk: org.freedesktop.Sdk//${SDK_VER} +build-extension: true +separate-locales: false +appstream-compose: false +${finish_args} +${build_options} + +modules: + - name: ${PACKAGE} + no-autogen: true + buildsystem: cmake + builddir: true + config-opts: + - -DCMAKE_INSTALL_PREFIX=/app/extensions/${PACKAGE} + - -DOCPN_FLATPAK_BUILD=ON + - -DOCPN_TARGET=${OCPN_TARGET} + - -DSDK_VER=${SDK_VER} + - -DWX_VER=${WX_VER} + build-options: + cflags: -fPIC + cxxflags: -fPIC -DFLATPAK + strip: true + sources: + - type: git + url: https://${GIT_REPOSITORY_SERVER}/${GIT_REPOSITORY} + ${GIT_BRANCH_OR_TAG}: ${GIT_REPOSITORY_ITEM} +${flatpak_extra_modules} diff --git a/cmake/in-files/pkg_version.sh.in b/cmake/in-files/pkg_version.sh.in new file mode 100644 index 0000000..b6e5c6a --- /dev/null +++ b/cmake/in-files/pkg_version.sh.in @@ -0,0 +1,11 @@ +# +# File is 'sourced' in script files to ensure the correct environment variables are created +# + +VERSION=@PACKAGE_VERSION@.@PKG_RELEASE@ +VERSION_DATE="@GIT_COMMIT_DATE@" +PKG_TARGET=@PKG_TARGET@ +PKG_TARGET_VERSION=@PKG_TARGET_VERSION@ + +# Opencpn api version, part of win32 installer name (major * 100 + minor). +OCPN_API_VERSION=@OCPN_API_VERSION_MAJOR@.@OCPN_API_VERSION_MINOR@ diff --git a/cmake/in-files/plugin.xml.in b/cmake/in-files/plugin.xml.in new file mode 100644 index 0000000..0e7229a --- /dev/null +++ b/cmake/in-files/plugin.xml.in @@ -0,0 +1,26 @@ + + + ${COMMON_NAME} + ${PACKAGE_VERSION} + ${PROJECT_VERSION_TWEAK} + ${XML_SUMMARY} + + ${OCPN_API_VERSION_MAJOR}.${OCPN_API_VERSION_MINOR} + yes + ${PACKAGE_CONTACT} + https://github.com/${GIT_REPOSITORY} + + + ${XML_DESCRIPTION} + + + ${PKG_TARGET_FULL} + ${PKG_BUILD_TARGET} + ${PKG_BUILT_WITH_GTK} + ${PKG_TARGET_VERSION} + ${ARCH} + + ${PKG_URL} + + ${XML_INFO_URL} + diff --git a/cmake/in-files/readme.txt b/cmake/in-files/readme.txt new file mode 100644 index 0000000..149fbc9 --- /dev/null +++ b/cmake/in-files/readme.txt @@ -0,0 +1,10 @@ +The files in this directory are not executed but are transformed or used by the build process. + +version.h.in is updated to include the current settings from CMakeLists.txt and put in a location that +is part of the include directory set. Source code that needs these settings just have to use: +#include "version.h" +at/near the top of the source code file. + +the wxWTranslateCatalog.h.in file is used to ensure that the plugins language files are accessed rather than +OpenCPN language files. This allows for change of context of words to be applied correctly. Without this there +can be confusion when a language uses a different word translation in different contexts. diff --git a/cmake/in-files/version.h.in b/cmake/in-files/version.h.in new file mode 100644 index 0000000..8325645 --- /dev/null +++ b/cmake/in-files/version.h.in @@ -0,0 +1,16 @@ +#define PLUGIN_NAME ${PROJECT_NAME} +#define PLUGIN_CATALOG_NAME wxS("opencpn-${PACKAGE_NAME}") +#define PLUGIN_VERSION_MAJOR ${VERSION_MAJOR} +#define PLUGIN_VERSION_MINOR ${VERSION_MINOR} +#define PLUGIN_VERSION_PATCH ${VERSION_PATCH} +#define PLUGIN_VERSION_TWEAK ${VERSION_TWEAK} +#define PLUGIN_VERSION_DATE "${VERSION_DATE}" +#define PLUGIN_COMMON_NAME "${COMMON_NAME}" +#define PLUGIN_SHORT_DESCRIPTION "${SHORT_DESCRIPTION}" +#define PLUGIN_LONG_DESCRIPTION "${LONG_DESCRIPTION}" +#define PLUGIN_PACKAGE_NAME "${PACKAGE_NAME}" +// API version of OCPN to use +#define OCPN_API_VERSION_MAJOR ${OCPN_API_VERSION_MAJOR} +#define OCPN_API_VERSION_MINOR ${OCPN_API_VERSION_MINOR} +// Include extra version settings if required +${EXTRA_VERSION_INFO} diff --git a/cmake/wxWTranslateCatalog.h.in b/cmake/in-files/wxWTranslateCatalog.h.in similarity index 86% rename from cmake/wxWTranslateCatalog.h.in rename to cmake/in-files/wxWTranslateCatalog.h.in index 6a383e5..1a07e2a 100644 --- a/cmake/wxWTranslateCatalog.h.in +++ b/cmake/in-files/wxWTranslateCatalog.h.in @@ -25,14 +25,18 @@ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * *************************************************************************** */ -#ifndef _ODCATTRANS_H_ -#define _ODCATTRANS_H_ +#ifndef _PICATTRANS_H_ +#define _PICATTRANS_H_ #ifndef WXINTL_NO_GETTEXT_MACRO #ifdef _ #undef _ #endif // _ -#define _(s) wxGetTranslation((s), wxS("opencpn-${PROJECT_NAME}")) +#if wxCHECK_VERSION(3,0,0) + #define _(s) wxGetTranslation((s), wxS("opencpn-${PACKAGE_NAME}")) +#else // wxCHECK_VERSION(3,0,0) +#define _(s) wxGetTranslation(wxT(s), wxT("opencpn-${PACKAGE_NAME}")) +#endif // wxCHECK_VERSION(3,0,0) #endif // WXINTL_NO_GETTEXT_MACRO #endif diff --git a/cmake/readme.txt b/cmake/readme.txt new file mode 100644 index 0000000..54def7e --- /dev/null +++ b/cmake/readme.txt @@ -0,0 +1,22 @@ +The *.cmake files in this directory provide resources to build the make environment. However, the contents of these +files is mainly static, so this helps reduce the size and complexity of the main CMakeLists.txt file. + +The following files are manadatory for the cmake process to work: +pluginConfigure.cmake +PluginInstall.cmake +PluginLocalization.cmake +PluginPackage.cmake +PluginSetup.cmake + +These file should only be changed with great care as they use generalised processes to handle the generation of the +build environments. If you need to add functionality that you need for your plugin then add extra cmake files here +for your purpose. It is strongly suggested that you do not change these files as if updates to the process are +required it is much easier to do a file replace than identify what has changed. + +An example of an 'extra' cmake file can be seen with: +FindTinyXML.cmake + +Extra files are added to the CMakeLists.txt file by using an include statement such as: +include("cmake/FindTinyXML.cmake") + +Please be case sensitive as it may work on windows builds without this but Linux builds will not. diff --git a/cmake/version.h.in b/cmake/version.h.in deleted file mode 100755 index e709af8..0000000 --- a/cmake/version.h.in +++ /dev/null @@ -1,3 +0,0 @@ -#define PLUGIN_VERSION_MAJOR ${PLUGIN_VERSION_MAJOR} -#define PLUGIN_VERSION_MINOR ${PLUGIN_VERSION_MINOR} -#define PLUGIN_VERSION_DATE "${PLUGIN_VERSION_DATE}" diff --git a/data/Celestial_Navigation_Information.html b/data/Celestial_Navigation_Information.html index 94595ee..ae004bb 100755 --- a/data/Celestial_Navigation_Information.html +++ b/data/Celestial_Navigation_Information.html @@ -281,5 +281,5 @@

Navigation in principle

at the intercept of the new line and the translated one. Sailors call this the SUN RUN SUN method. -

The above information was edited from www.erikdeman.de +

The above information was edited from Eric De Man siranah.de diff --git a/data/celestial_navigation.png b/data/celestial_navigation.png new file mode 100644 index 0000000..c9f4503 Binary files /dev/null and b/data/celestial_navigation.png differ diff --git a/data/celestial_navigation.svg b/data/celestial_navigation.svg new file mode 100644 index 0000000..e7bc98e --- /dev/null +++ b/data/celestial_navigation.svg @@ -0,0 +1,216 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + image/svg+xml + + + + + + + + + + + + + diff --git a/data/celestial_navigation_panel.png b/data/celestial_navigation_panel.png new file mode 100644 index 0000000..2f4e221 Binary files /dev/null and b/data/celestial_navigation_panel.png differ diff --git a/data/celestial_navigation_panel.svg b/data/celestial_navigation_panel.svg new file mode 100644 index 0000000..e08020e --- /dev/null +++ b/data/celestial_navigation_panel.svg @@ -0,0 +1,238 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + image/svg+xml + + + + + + + + + + + + + diff --git a/data/celestial_navigation_pi.svg b/data/celestial_navigation_pi.svg new file mode 100644 index 0000000..3be744b --- /dev/null +++ b/data/celestial_navigation_pi.svg @@ -0,0 +1,124 @@ + + + + + + + + image/svg+xml + + + + + + + + + + + + + diff --git a/data/celestial_navigation_rollover.svg b/data/celestial_navigation_rollover.svg new file mode 100644 index 0000000..3029ecc --- /dev/null +++ b/data/celestial_navigation_rollover.svg @@ -0,0 +1,199 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + image/svg+xml + + + + + + + + + + + + + diff --git a/data/celestial_navigation_toggled.svg b/data/celestial_navigation_toggled.svg new file mode 100644 index 0000000..3029ecc --- /dev/null +++ b/data/celestial_navigation_toggled.svg @@ -0,0 +1,199 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + image/svg+xml + + + + + + + + + + + + + diff --git a/include/GL/gl.h b/include/GL/gl.h deleted file mode 100644 index ce5e90e..0000000 --- a/include/GL/gl.h +++ /dev/null @@ -1,2252 +0,0 @@ -/* - * Mesa 3-D graphics library - * Version: 7.0 - * - * Copyright (C) 1999-2007 Brian Paul All Rights Reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a - * copy of this software and associated documentation files (the "Software"), - * to deal in the Software without restriction, including without limitation - * the rights to use, copy, modify, merge, publish, distribute, sublicense, - * and/or sell copies of the Software, and to permit persons to whom the - * Software is furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included - * in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS - * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL - * BRIAN PAUL BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN - * AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - */ - - -#ifndef __gl_h_ -#define __gl_h_ - -#if defined(USE_MGL_NAMESPACE) -#include "gl_mangle.h" -#endif - - -/********************************************************************** - * Begin system-specific stuff. Do not do any of this when building - * for SciTech SNAP, as this is all done before this header file is - * included. - */ -#if !defined(__SCITECH_SNAP__) - -#if defined(__BEOS__) -#include /* to get some BeOS-isms */ -#endif - -#if !defined(OPENSTEP) && (defined(NeXT) || defined(NeXT_PDO)) -#define OPENSTEP -#endif - -#if defined(_WIN32) && !defined(__WIN32__) && !defined(__CYGWIN__) -#define __WIN32__ -#endif - -#if !defined(OPENSTEP) && (defined(__WIN32__) && !defined(__CYGWIN__)) -# if (defined(_MSC_VER) || defined(__MINGW32__)) && defined(BUILD_GL32) /* tag specify we're building mesa as a DLL */ -# define GLAPI __declspec(dllexport) -# elif (defined(_MSC_VER) || defined(__MINGW32__)) && defined(_DLL) /* tag specifying we're building for DLL runtime support */ -# define GLAPI __declspec(dllimport) -# else /* for use with static link lib build of Win32 edition only */ -# define GLAPI extern -# endif /* _STATIC_MESA support */ -# define GLAPIENTRY __stdcall -#elif defined(__CYGWIN__) && defined(USE_OPENGL32) /* use native windows opengl32 */ -# define GLAPI extern -# define GLAPIENTRY __stdcall -#elif defined(__GNUC__) && (__GNUC__ * 100 + __GNUC_MINOR__) >= 303 -# define GLAPI __attribute__((visibility("default"))) -# define GLAPIENTRY -#endif /* WIN32 && !CYGWIN */ - -#if (defined(__BEOS__) && defined(__POWERPC__)) || defined(__QUICKDRAW__) -# define PRAGMA_EXPORT_SUPPORTED 1 -#endif - -/* - * WINDOWS: Include windows.h here to define APIENTRY. - * It is also useful when applications include this file by - * including only glut.h, since glut.h depends on windows.h. - * Applications needing to include windows.h with parms other - * than "WIN32_LEAN_AND_MEAN" may include windows.h before - * glut.h or gl.h. - */ -#if defined(_WIN32) && !defined(APIENTRY) && !defined(__CYGWIN__) -#define WIN32_LEAN_AND_MEAN 1 -#include -#endif - -#if defined(_WIN32) && !defined(_WINGDI_) && !defined(_GNU_H_WINDOWS32_DEFINES) \ - && !defined(OPENSTEP) && !defined(__CYGWIN__) || defined(__MINGW32__) -#include -#endif - -#if defined(macintosh) && PRAGMA_IMPORT_SUPPORTED -#pragma import on -#endif - -#ifndef GLAPI -#define GLAPI extern -#endif - -#ifndef GLAPIENTRY -#define GLAPIENTRY -#endif - -#ifndef APIENTRY -#define APIENTRY GLAPIENTRY -#endif - -/* "P" suffix to be used for a pointer to a function */ -#ifndef APIENTRYP -#define APIENTRYP APIENTRY * -#endif - -#ifndef GLAPIENTRYP -#define GLAPIENTRYP GLAPIENTRY * -#endif - -#ifdef CENTERLINE_CLPP -#define signed -#endif - -#if defined(PRAGMA_EXPORT_SUPPORTED) -#pragma export on -#endif - -#endif /* !__SCITECH_SNAP__ */ -/* - * End system-specific stuff. - **********************************************************************/ - - - -#ifdef __cplusplus -extern "C" { -#endif - - - -#define GL_VERSION_1_1 1 -#define GL_VERSION_1_2 1 -#define GL_VERSION_1_3 1 -#define GL_ARB_imaging 1 - - -/* - * Datatypes - */ -typedef unsigned int GLenum; -typedef unsigned char GLboolean; -typedef unsigned int GLbitfield; -typedef void GLvoid; -typedef signed char GLbyte; /* 1-byte signed */ -typedef short GLshort; /* 2-byte signed */ -typedef int GLint; /* 4-byte signed */ -typedef unsigned char GLubyte; /* 1-byte unsigned */ -typedef unsigned short GLushort; /* 2-byte unsigned */ -typedef unsigned int GLuint; /* 4-byte unsigned */ -typedef int GLsizei; /* 4-byte signed */ -typedef float GLfloat; /* single precision float */ -typedef float GLclampf; /* single precision float in [0,1] */ -typedef double GLdouble; /* double precision float */ -typedef double GLclampd; /* double precision float in [0,1] */ - - - -/* - * Constants - */ - -/* Boolean values */ -#define GL_FALSE 0x0 -#define GL_TRUE 0x1 - -/* Data types */ -#define GL_BYTE 0x1400 -#define GL_UNSIGNED_BYTE 0x1401 -#define GL_SHORT 0x1402 -#define GL_UNSIGNED_SHORT 0x1403 -#define GL_INT 0x1404 -#define GL_UNSIGNED_INT 0x1405 -#define GL_FLOAT 0x1406 -#define GL_2_BYTES 0x1407 -#define GL_3_BYTES 0x1408 -#define GL_4_BYTES 0x1409 -#define GL_DOUBLE 0x140A - -/* Primitives */ -#define GL_POINTS 0x0000 -#define GL_LINES 0x0001 -#define GL_LINE_LOOP 0x0002 -#define GL_LINE_STRIP 0x0003 -#define GL_TRIANGLES 0x0004 -#define GL_TRIANGLE_STRIP 0x0005 -#define GL_TRIANGLE_FAN 0x0006 -#define GL_QUADS 0x0007 -#define GL_QUAD_STRIP 0x0008 -#define GL_POLYGON 0x0009 - -/* Vertex Arrays */ -#define GL_VERTEX_ARRAY 0x8074 -#define GL_NORMAL_ARRAY 0x8075 -#define GL_COLOR_ARRAY 0x8076 -#define GL_INDEX_ARRAY 0x8077 -#define GL_TEXTURE_COORD_ARRAY 0x8078 -#define GL_EDGE_FLAG_ARRAY 0x8079 -#define GL_VERTEX_ARRAY_SIZE 0x807A -#define GL_VERTEX_ARRAY_TYPE 0x807B -#define GL_VERTEX_ARRAY_STRIDE 0x807C -#define GL_NORMAL_ARRAY_TYPE 0x807E -#define GL_NORMAL_ARRAY_STRIDE 0x807F -#define GL_COLOR_ARRAY_SIZE 0x8081 -#define GL_COLOR_ARRAY_TYPE 0x8082 -#define GL_COLOR_ARRAY_STRIDE 0x8083 -#define GL_INDEX_ARRAY_TYPE 0x8085 -#define GL_INDEX_ARRAY_STRIDE 0x8086 -#define GL_TEXTURE_COORD_ARRAY_SIZE 0x8088 -#define GL_TEXTURE_COORD_ARRAY_TYPE 0x8089 -#define GL_TEXTURE_COORD_ARRAY_STRIDE 0x808A -#define GL_EDGE_FLAG_ARRAY_STRIDE 0x808C -#define GL_VERTEX_ARRAY_POINTER 0x808E -#define GL_NORMAL_ARRAY_POINTER 0x808F -#define GL_COLOR_ARRAY_POINTER 0x8090 -#define GL_INDEX_ARRAY_POINTER 0x8091 -#define GL_TEXTURE_COORD_ARRAY_POINTER 0x8092 -#define GL_EDGE_FLAG_ARRAY_POINTER 0x8093 -#define GL_V2F 0x2A20 -#define GL_V3F 0x2A21 -#define GL_C4UB_V2F 0x2A22 -#define GL_C4UB_V3F 0x2A23 -#define GL_C3F_V3F 0x2A24 -#define GL_N3F_V3F 0x2A25 -#define GL_C4F_N3F_V3F 0x2A26 -#define GL_T2F_V3F 0x2A27 -#define GL_T4F_V4F 0x2A28 -#define GL_T2F_C4UB_V3F 0x2A29 -#define GL_T2F_C3F_V3F 0x2A2A -#define GL_T2F_N3F_V3F 0x2A2B -#define GL_T2F_C4F_N3F_V3F 0x2A2C -#define GL_T4F_C4F_N3F_V4F 0x2A2D - -/* Matrix Mode */ -#define GL_MATRIX_MODE 0x0BA0 -#define GL_MODELVIEW 0x1700 -#define GL_PROJECTION 0x1701 -#define GL_TEXTURE 0x1702 - -/* Points */ -#define GL_POINT_SMOOTH 0x0B10 -#define GL_POINT_SIZE 0x0B11 -#define GL_POINT_SIZE_GRANULARITY 0x0B13 -#define GL_POINT_SIZE_RANGE 0x0B12 - -/* Lines */ -#define GL_LINE_SMOOTH 0x0B20 -#define GL_LINE_STIPPLE 0x0B24 -#define GL_LINE_STIPPLE_PATTERN 0x0B25 -#define GL_LINE_STIPPLE_REPEAT 0x0B26 -#define GL_LINE_WIDTH 0x0B21 -#define GL_LINE_WIDTH_GRANULARITY 0x0B23 -#define GL_LINE_WIDTH_RANGE 0x0B22 - -/* Polygons */ -#define GL_POINT 0x1B00 -#define GL_LINE 0x1B01 -#define GL_FILL 0x1B02 -#define GL_CW 0x0900 -#define GL_CCW 0x0901 -#define GL_FRONT 0x0404 -#define GL_BACK 0x0405 -#define GL_POLYGON_MODE 0x0B40 -#define GL_POLYGON_SMOOTH 0x0B41 -#define GL_POLYGON_STIPPLE 0x0B42 -#define GL_EDGE_FLAG 0x0B43 -#define GL_CULL_FACE 0x0B44 -#define GL_CULL_FACE_MODE 0x0B45 -#define GL_FRONT_FACE 0x0B46 -#define GL_POLYGON_OFFSET_FACTOR 0x8038 -#define GL_POLYGON_OFFSET_UNITS 0x2A00 -#define GL_POLYGON_OFFSET_POINT 0x2A01 -#define GL_POLYGON_OFFSET_LINE 0x2A02 -#define GL_POLYGON_OFFSET_FILL 0x8037 - -/* Display Lists */ -#define GL_COMPILE 0x1300 -#define GL_COMPILE_AND_EXECUTE 0x1301 -#define GL_LIST_BASE 0x0B32 -#define GL_LIST_INDEX 0x0B33 -#define GL_LIST_MODE 0x0B30 - -/* Depth buffer */ -#define GL_NEVER 0x0200 -#define GL_LESS 0x0201 -#define GL_EQUAL 0x0202 -#define GL_LEQUAL 0x0203 -#define GL_GREATER 0x0204 -#define GL_NOTEQUAL 0x0205 -#define GL_GEQUAL 0x0206 -#define GL_ALWAYS 0x0207 -#define GL_DEPTH_TEST 0x0B71 -#define GL_DEPTH_BITS 0x0D56 -#define GL_DEPTH_CLEAR_VALUE 0x0B73 -#define GL_DEPTH_FUNC 0x0B74 -#define GL_DEPTH_RANGE 0x0B70 -#define GL_DEPTH_WRITEMASK 0x0B72 -#define GL_DEPTH_COMPONENT 0x1902 - -/* Lighting */ -#define GL_LIGHTING 0x0B50 -#define GL_LIGHT0 0x4000 -#define GL_LIGHT1 0x4001 -#define GL_LIGHT2 0x4002 -#define GL_LIGHT3 0x4003 -#define GL_LIGHT4 0x4004 -#define GL_LIGHT5 0x4005 -#define GL_LIGHT6 0x4006 -#define GL_LIGHT7 0x4007 -#define GL_SPOT_EXPONENT 0x1205 -#define GL_SPOT_CUTOFF 0x1206 -#define GL_CONSTANT_ATTENUATION 0x1207 -#define GL_LINEAR_ATTENUATION 0x1208 -#define GL_QUADRATIC_ATTENUATION 0x1209 -#define GL_AMBIENT 0x1200 -#define GL_DIFFUSE 0x1201 -#define GL_SPECULAR 0x1202 -#define GL_SHININESS 0x1601 -#define GL_EMISSION 0x1600 -#define GL_POSITION 0x1203 -#define GL_SPOT_DIRECTION 0x1204 -#define GL_AMBIENT_AND_DIFFUSE 0x1602 -#define GL_COLOR_INDEXES 0x1603 -#define GL_LIGHT_MODEL_TWO_SIDE 0x0B52 -#define GL_LIGHT_MODEL_LOCAL_VIEWER 0x0B51 -#define GL_LIGHT_MODEL_AMBIENT 0x0B53 -#define GL_FRONT_AND_BACK 0x0408 -#define GL_SHADE_MODEL 0x0B54 -#define GL_FLAT 0x1D00 -#define GL_SMOOTH 0x1D01 -#define GL_COLOR_MATERIAL 0x0B57 -#define GL_COLOR_MATERIAL_FACE 0x0B55 -#define GL_COLOR_MATERIAL_PARAMETER 0x0B56 -#define GL_NORMALIZE 0x0BA1 - -/* User clipping planes */ -#define GL_CLIP_PLANE0 0x3000 -#define GL_CLIP_PLANE1 0x3001 -#define GL_CLIP_PLANE2 0x3002 -#define GL_CLIP_PLANE3 0x3003 -#define GL_CLIP_PLANE4 0x3004 -#define GL_CLIP_PLANE5 0x3005 - -/* Accumulation buffer */ -#define GL_ACCUM_RED_BITS 0x0D58 -#define GL_ACCUM_GREEN_BITS 0x0D59 -#define GL_ACCUM_BLUE_BITS 0x0D5A -#define GL_ACCUM_ALPHA_BITS 0x0D5B -#define GL_ACCUM_CLEAR_VALUE 0x0B80 -#define GL_ACCUM 0x0100 -#define GL_ADD 0x0104 -#define GL_LOAD 0x0101 -#define GL_MULT 0x0103 -#define GL_RETURN 0x0102 - -/* Alpha testing */ -#define GL_ALPHA_TEST 0x0BC0 -#define GL_ALPHA_TEST_REF 0x0BC2 -#define GL_ALPHA_TEST_FUNC 0x0BC1 - -/* Blending */ -#define GL_BLEND 0x0BE2 -#define GL_BLEND_SRC 0x0BE1 -#define GL_BLEND_DST 0x0BE0 -#define GL_ZERO 0x0 -#define GL_ONE 0x1 -#define GL_SRC_COLOR 0x0300 -#define GL_ONE_MINUS_SRC_COLOR 0x0301 -#define GL_SRC_ALPHA 0x0302 -#define GL_ONE_MINUS_SRC_ALPHA 0x0303 -#define GL_DST_ALPHA 0x0304 -#define GL_ONE_MINUS_DST_ALPHA 0x0305 -#define GL_DST_COLOR 0x0306 -#define GL_ONE_MINUS_DST_COLOR 0x0307 -#define GL_SRC_ALPHA_SATURATE 0x0308 - -/* Render Mode */ -#define GL_FEEDBACK 0x1C01 -#define GL_RENDER 0x1C00 -#define GL_SELECT 0x1C02 - -/* Feedback */ -#define GL_2D 0x0600 -#define GL_3D 0x0601 -#define GL_3D_COLOR 0x0602 -#define GL_3D_COLOR_TEXTURE 0x0603 -#define GL_4D_COLOR_TEXTURE 0x0604 -#define GL_POINT_TOKEN 0x0701 -#define GL_LINE_TOKEN 0x0702 -#define GL_LINE_RESET_TOKEN 0x0707 -#define GL_POLYGON_TOKEN 0x0703 -#define GL_BITMAP_TOKEN 0x0704 -#define GL_DRAW_PIXEL_TOKEN 0x0705 -#define GL_COPY_PIXEL_TOKEN 0x0706 -#define GL_PASS_THROUGH_TOKEN 0x0700 -#define GL_FEEDBACK_BUFFER_POINTER 0x0DF0 -#define GL_FEEDBACK_BUFFER_SIZE 0x0DF1 -#define GL_FEEDBACK_BUFFER_TYPE 0x0DF2 - -/* Selection */ -#define GL_SELECTION_BUFFER_POINTER 0x0DF3 -#define GL_SELECTION_BUFFER_SIZE 0x0DF4 - -/* Fog */ -#define GL_FOG 0x0B60 -#define GL_FOG_MODE 0x0B65 -#define GL_FOG_DENSITY 0x0B62 -#define GL_FOG_COLOR 0x0B66 -#define GL_FOG_INDEX 0x0B61 -#define GL_FOG_START 0x0B63 -#define GL_FOG_END 0x0B64 -#define GL_LINEAR 0x2601 -#define GL_EXP 0x0800 -#define GL_EXP2 0x0801 - -/* Logic Ops */ -#define GL_LOGIC_OP 0x0BF1 -#define GL_INDEX_LOGIC_OP 0x0BF1 -#define GL_COLOR_LOGIC_OP 0x0BF2 -#define GL_LOGIC_OP_MODE 0x0BF0 -#define GL_CLEAR 0x1500 -#define GL_SET 0x150F -#define GL_COPY 0x1503 -#define GL_COPY_INVERTED 0x150C -#define GL_NOOP 0x1505 -#define GL_INVERT 0x150A -#define GL_AND 0x1501 -#define GL_NAND 0x150E -#define GL_OR 0x1507 -#define GL_NOR 0x1508 -#define GL_XOR 0x1506 -#define GL_EQUIV 0x1509 -#define GL_AND_REVERSE 0x1502 -#define GL_AND_INVERTED 0x1504 -#define GL_OR_REVERSE 0x150B -#define GL_OR_INVERTED 0x150D - -/* Stencil */ -#define GL_STENCIL_BITS 0x0D57 -#define GL_STENCIL_TEST 0x0B90 -#define GL_STENCIL_CLEAR_VALUE 0x0B91 -#define GL_STENCIL_FUNC 0x0B92 -#define GL_STENCIL_VALUE_MASK 0x0B93 -#define GL_STENCIL_FAIL 0x0B94 -#define GL_STENCIL_PASS_DEPTH_FAIL 0x0B95 -#define GL_STENCIL_PASS_DEPTH_PASS 0x0B96 -#define GL_STENCIL_REF 0x0B97 -#define GL_STENCIL_WRITEMASK 0x0B98 -#define GL_STENCIL_INDEX 0x1901 -#define GL_KEEP 0x1E00 -#define GL_REPLACE 0x1E01 -#define GL_INCR 0x1E02 -#define GL_DECR 0x1E03 - -/* Buffers, Pixel Drawing/Reading */ -#define GL_NONE 0x0 -#define GL_LEFT 0x0406 -#define GL_RIGHT 0x0407 -/*GL_FRONT 0x0404 */ -/*GL_BACK 0x0405 */ -/*GL_FRONT_AND_BACK 0x0408 */ -#define GL_FRONT_LEFT 0x0400 -#define GL_FRONT_RIGHT 0x0401 -#define GL_BACK_LEFT 0x0402 -#define GL_BACK_RIGHT 0x0403 -#define GL_AUX0 0x0409 -#define GL_AUX1 0x040A -#define GL_AUX2 0x040B -#define GL_AUX3 0x040C -#define GL_COLOR_INDEX 0x1900 -#define GL_RED 0x1903 -#define GL_GREEN 0x1904 -#define GL_BLUE 0x1905 -#define GL_ALPHA 0x1906 -#define GL_LUMINANCE 0x1909 -#define GL_LUMINANCE_ALPHA 0x190A -#define GL_ALPHA_BITS 0x0D55 -#define GL_RED_BITS 0x0D52 -#define GL_GREEN_BITS 0x0D53 -#define GL_BLUE_BITS 0x0D54 -#define GL_INDEX_BITS 0x0D51 -#define GL_SUBPIXEL_BITS 0x0D50 -#define GL_AUX_BUFFERS 0x0C00 -#define GL_READ_BUFFER 0x0C02 -#define GL_DRAW_BUFFER 0x0C01 -#define GL_DOUBLEBUFFER 0x0C32 -#define GL_STEREO 0x0C33 -#define GL_BITMAP 0x1A00 -#define GL_COLOR 0x1800 -#define GL_DEPTH 0x1801 -#define GL_STENCIL 0x1802 -#define GL_DITHER 0x0BD0 -#define GL_RGB 0x1907 -#define GL_RGBA 0x1908 - -/* Implementation limits */ -#define GL_MAX_LIST_NESTING 0x0B31 -#define GL_MAX_EVAL_ORDER 0x0D30 -#define GL_MAX_LIGHTS 0x0D31 -#define GL_MAX_CLIP_PLANES 0x0D32 -#define GL_MAX_TEXTURE_SIZE 0x0D33 -#define GL_MAX_PIXEL_MAP_TABLE 0x0D34 -#define GL_MAX_ATTRIB_STACK_DEPTH 0x0D35 -#define GL_MAX_MODELVIEW_STACK_DEPTH 0x0D36 -#define GL_MAX_NAME_STACK_DEPTH 0x0D37 -#define GL_MAX_PROJECTION_STACK_DEPTH 0x0D38 -#define GL_MAX_TEXTURE_STACK_DEPTH 0x0D39 -#define GL_MAX_VIEWPORT_DIMS 0x0D3A -#define GL_MAX_CLIENT_ATTRIB_STACK_DEPTH 0x0D3B - -/* Gets */ -#define GL_ATTRIB_STACK_DEPTH 0x0BB0 -#define GL_CLIENT_ATTRIB_STACK_DEPTH 0x0BB1 -#define GL_COLOR_CLEAR_VALUE 0x0C22 -#define GL_COLOR_WRITEMASK 0x0C23 -#define GL_CURRENT_INDEX 0x0B01 -#define GL_CURRENT_COLOR 0x0B00 -#define GL_CURRENT_NORMAL 0x0B02 -#define GL_CURRENT_RASTER_COLOR 0x0B04 -#define GL_CURRENT_RASTER_DISTANCE 0x0B09 -#define GL_CURRENT_RASTER_INDEX 0x0B05 -#define GL_CURRENT_RASTER_POSITION 0x0B07 -#define GL_CURRENT_RASTER_TEXTURE_COORDS 0x0B06 -#define GL_CURRENT_RASTER_POSITION_VALID 0x0B08 -#define GL_CURRENT_TEXTURE_COORDS 0x0B03 -#define GL_INDEX_CLEAR_VALUE 0x0C20 -#define GL_INDEX_MODE 0x0C30 -#define GL_INDEX_WRITEMASK 0x0C21 -#define GL_MODELVIEW_MATRIX 0x0BA6 -#define GL_MODELVIEW_STACK_DEPTH 0x0BA3 -#define GL_NAME_STACK_DEPTH 0x0D70 -#define GL_PROJECTION_MATRIX 0x0BA7 -#define GL_PROJECTION_STACK_DEPTH 0x0BA4 -#define GL_RENDER_MODE 0x0C40 -#define GL_RGBA_MODE 0x0C31 -#define GL_TEXTURE_MATRIX 0x0BA8 -#define GL_TEXTURE_STACK_DEPTH 0x0BA5 -#define GL_VIEWPORT 0x0BA2 - -/* Evaluators */ -#define GL_AUTO_NORMAL 0x0D80 -#define GL_MAP1_COLOR_4 0x0D90 -#define GL_MAP1_INDEX 0x0D91 -#define GL_MAP1_NORMAL 0x0D92 -#define GL_MAP1_TEXTURE_COORD_1 0x0D93 -#define GL_MAP1_TEXTURE_COORD_2 0x0D94 -#define GL_MAP1_TEXTURE_COORD_3 0x0D95 -#define GL_MAP1_TEXTURE_COORD_4 0x0D96 -#define GL_MAP1_VERTEX_3 0x0D97 -#define GL_MAP1_VERTEX_4 0x0D98 -#define GL_MAP2_COLOR_4 0x0DB0 -#define GL_MAP2_INDEX 0x0DB1 -#define GL_MAP2_NORMAL 0x0DB2 -#define GL_MAP2_TEXTURE_COORD_1 0x0DB3 -#define GL_MAP2_TEXTURE_COORD_2 0x0DB4 -#define GL_MAP2_TEXTURE_COORD_3 0x0DB5 -#define GL_MAP2_TEXTURE_COORD_4 0x0DB6 -#define GL_MAP2_VERTEX_3 0x0DB7 -#define GL_MAP2_VERTEX_4 0x0DB8 -#define GL_MAP1_GRID_DOMAIN 0x0DD0 -#define GL_MAP1_GRID_SEGMENTS 0x0DD1 -#define GL_MAP2_GRID_DOMAIN 0x0DD2 -#define GL_MAP2_GRID_SEGMENTS 0x0DD3 -#define GL_COEFF 0x0A00 -#define GL_ORDER 0x0A01 -#define GL_DOMAIN 0x0A02 - -/* Hints */ -#define GL_PERSPECTIVE_CORRECTION_HINT 0x0C50 -#define GL_POINT_SMOOTH_HINT 0x0C51 -#define GL_LINE_SMOOTH_HINT 0x0C52 -#define GL_POLYGON_SMOOTH_HINT 0x0C53 -#define GL_FOG_HINT 0x0C54 -#define GL_DONT_CARE 0x1100 -#define GL_FASTEST 0x1101 -#define GL_NICEST 0x1102 - -/* Scissor box */ -#define GL_SCISSOR_BOX 0x0C10 -#define GL_SCISSOR_TEST 0x0C11 - -/* Pixel Mode / Transfer */ -#define GL_MAP_COLOR 0x0D10 -#define GL_MAP_STENCIL 0x0D11 -#define GL_INDEX_SHIFT 0x0D12 -#define GL_INDEX_OFFSET 0x0D13 -#define GL_RED_SCALE 0x0D14 -#define GL_RED_BIAS 0x0D15 -#define GL_GREEN_SCALE 0x0D18 -#define GL_GREEN_BIAS 0x0D19 -#define GL_BLUE_SCALE 0x0D1A -#define GL_BLUE_BIAS 0x0D1B -#define GL_ALPHA_SCALE 0x0D1C -#define GL_ALPHA_BIAS 0x0D1D -#define GL_DEPTH_SCALE 0x0D1E -#define GL_DEPTH_BIAS 0x0D1F -#define GL_PIXEL_MAP_S_TO_S_SIZE 0x0CB1 -#define GL_PIXEL_MAP_I_TO_I_SIZE 0x0CB0 -#define GL_PIXEL_MAP_I_TO_R_SIZE 0x0CB2 -#define GL_PIXEL_MAP_I_TO_G_SIZE 0x0CB3 -#define GL_PIXEL_MAP_I_TO_B_SIZE 0x0CB4 -#define GL_PIXEL_MAP_I_TO_A_SIZE 0x0CB5 -#define GL_PIXEL_MAP_R_TO_R_SIZE 0x0CB6 -#define GL_PIXEL_MAP_G_TO_G_SIZE 0x0CB7 -#define GL_PIXEL_MAP_B_TO_B_SIZE 0x0CB8 -#define GL_PIXEL_MAP_A_TO_A_SIZE 0x0CB9 -#define GL_PIXEL_MAP_S_TO_S 0x0C71 -#define GL_PIXEL_MAP_I_TO_I 0x0C70 -#define GL_PIXEL_MAP_I_TO_R 0x0C72 -#define GL_PIXEL_MAP_I_TO_G 0x0C73 -#define GL_PIXEL_MAP_I_TO_B 0x0C74 -#define GL_PIXEL_MAP_I_TO_A 0x0C75 -#define GL_PIXEL_MAP_R_TO_R 0x0C76 -#define GL_PIXEL_MAP_G_TO_G 0x0C77 -#define GL_PIXEL_MAP_B_TO_B 0x0C78 -#define GL_PIXEL_MAP_A_TO_A 0x0C79 -#define GL_PACK_ALIGNMENT 0x0D05 -#define GL_PACK_LSB_FIRST 0x0D01 -#define GL_PACK_ROW_LENGTH 0x0D02 -#define GL_PACK_SKIP_PIXELS 0x0D04 -#define GL_PACK_SKIP_ROWS 0x0D03 -#define GL_PACK_SWAP_BYTES 0x0D00 -#define GL_UNPACK_ALIGNMENT 0x0CF5 -#define GL_UNPACK_LSB_FIRST 0x0CF1 -#define GL_UNPACK_ROW_LENGTH 0x0CF2 -#define GL_UNPACK_SKIP_PIXELS 0x0CF4 -#define GL_UNPACK_SKIP_ROWS 0x0CF3 -#define GL_UNPACK_SWAP_BYTES 0x0CF0 -#define GL_ZOOM_X 0x0D16 -#define GL_ZOOM_Y 0x0D17 - -/* Texture mapping */ -#define GL_TEXTURE_ENV 0x2300 -#define GL_TEXTURE_ENV_MODE 0x2200 -#define GL_TEXTURE_1D 0x0DE0 -#define GL_TEXTURE_2D 0x0DE1 -#define GL_TEXTURE_WRAP_S 0x2802 -#define GL_TEXTURE_WRAP_T 0x2803 -#define GL_TEXTURE_MAG_FILTER 0x2800 -#define GL_TEXTURE_MIN_FILTER 0x2801 -#define GL_TEXTURE_ENV_COLOR 0x2201 -#define GL_TEXTURE_GEN_S 0x0C60 -#define GL_TEXTURE_GEN_T 0x0C61 -#define GL_TEXTURE_GEN_MODE 0x2500 -#define GL_TEXTURE_BORDER_COLOR 0x1004 -#define GL_TEXTURE_WIDTH 0x1000 -#define GL_TEXTURE_HEIGHT 0x1001 -#define GL_TEXTURE_BORDER 0x1005 -#define GL_TEXTURE_COMPONENTS 0x1003 -#define GL_TEXTURE_RED_SIZE 0x805C -#define GL_TEXTURE_GREEN_SIZE 0x805D -#define GL_TEXTURE_BLUE_SIZE 0x805E -#define GL_TEXTURE_ALPHA_SIZE 0x805F -#define GL_TEXTURE_LUMINANCE_SIZE 0x8060 -#define GL_TEXTURE_INTENSITY_SIZE 0x8061 -#define GL_NEAREST_MIPMAP_NEAREST 0x2700 -#define GL_NEAREST_MIPMAP_LINEAR 0x2702 -#define GL_LINEAR_MIPMAP_NEAREST 0x2701 -#define GL_LINEAR_MIPMAP_LINEAR 0x2703 -#define GL_OBJECT_LINEAR 0x2401 -#define GL_OBJECT_PLANE 0x2501 -#define GL_EYE_LINEAR 0x2400 -#define GL_EYE_PLANE 0x2502 -#define GL_SPHERE_MAP 0x2402 -#define GL_DECAL 0x2101 -#define GL_MODULATE 0x2100 -#define GL_NEAREST 0x2600 -#define GL_REPEAT 0x2901 -#define GL_CLAMP 0x2900 -#define GL_S 0x2000 -#define GL_T 0x2001 -#define GL_R 0x2002 -#define GL_Q 0x2003 -#define GL_TEXTURE_GEN_R 0x0C62 -#define GL_TEXTURE_GEN_Q 0x0C63 - -/* Utility */ -#define GL_VENDOR 0x1F00 -#define GL_RENDERER 0x1F01 -#define GL_VERSION 0x1F02 -#define GL_EXTENSIONS 0x1F03 - -/* Errors */ -#define GL_NO_ERROR 0x0 -#define GL_INVALID_ENUM 0x0500 -#define GL_INVALID_VALUE 0x0501 -#define GL_INVALID_OPERATION 0x0502 -#define GL_STACK_OVERFLOW 0x0503 -#define GL_STACK_UNDERFLOW 0x0504 -#define GL_OUT_OF_MEMORY 0x0505 - -/* glPush/PopAttrib bits */ -#define GL_CURRENT_BIT 0x00000001 -#define GL_POINT_BIT 0x00000002 -#define GL_LINE_BIT 0x00000004 -#define GL_POLYGON_BIT 0x00000008 -#define GL_POLYGON_STIPPLE_BIT 0x00000010 -#define GL_PIXEL_MODE_BIT 0x00000020 -#define GL_LIGHTING_BIT 0x00000040 -#define GL_FOG_BIT 0x00000080 -#define GL_DEPTH_BUFFER_BIT 0x00000100 -#define GL_ACCUM_BUFFER_BIT 0x00000200 -#define GL_STENCIL_BUFFER_BIT 0x00000400 -#define GL_VIEWPORT_BIT 0x00000800 -#define GL_TRANSFORM_BIT 0x00001000 -#define GL_ENABLE_BIT 0x00002000 -#define GL_COLOR_BUFFER_BIT 0x00004000 -#define GL_HINT_BIT 0x00008000 -#define GL_EVAL_BIT 0x00010000 -#define GL_LIST_BIT 0x00020000 -#define GL_TEXTURE_BIT 0x00040000 -#define GL_SCISSOR_BIT 0x00080000 -#define GL_ALL_ATTRIB_BITS 0x000FFFFF - - -/* OpenGL 1.1 */ -#define GL_PROXY_TEXTURE_1D 0x8063 -#define GL_PROXY_TEXTURE_2D 0x8064 -#define GL_TEXTURE_PRIORITY 0x8066 -#define GL_TEXTURE_RESIDENT 0x8067 -#define GL_TEXTURE_BINDING_1D 0x8068 -#define GL_TEXTURE_BINDING_2D 0x8069 -#define GL_TEXTURE_INTERNAL_FORMAT 0x1003 -#define GL_ALPHA4 0x803B -#define GL_ALPHA8 0x803C -#define GL_ALPHA12 0x803D -#define GL_ALPHA16 0x803E -#define GL_LUMINANCE4 0x803F -#define GL_LUMINANCE8 0x8040 -#define GL_LUMINANCE12 0x8041 -#define GL_LUMINANCE16 0x8042 -#define GL_LUMINANCE4_ALPHA4 0x8043 -#define GL_LUMINANCE6_ALPHA2 0x8044 -#define GL_LUMINANCE8_ALPHA8 0x8045 -#define GL_LUMINANCE12_ALPHA4 0x8046 -#define GL_LUMINANCE12_ALPHA12 0x8047 -#define GL_LUMINANCE16_ALPHA16 0x8048 -#define GL_INTENSITY 0x8049 -#define GL_INTENSITY4 0x804A -#define GL_INTENSITY8 0x804B -#define GL_INTENSITY12 0x804C -#define GL_INTENSITY16 0x804D -#define GL_R3_G3_B2 0x2A10 -#define GL_RGB4 0x804F -#define GL_RGB5 0x8050 -#define GL_RGB8 0x8051 -#define GL_RGB10 0x8052 -#define GL_RGB12 0x8053 -#define GL_RGB16 0x8054 -#define GL_RGBA2 0x8055 -#define GL_RGBA4 0x8056 -#define GL_RGB5_A1 0x8057 -#define GL_RGBA8 0x8058 -#define GL_RGB10_A2 0x8059 -#define GL_RGBA12 0x805A -#define GL_RGBA16 0x805B -#define GL_CLIENT_PIXEL_STORE_BIT 0x00000001 -#define GL_CLIENT_VERTEX_ARRAY_BIT 0x00000002 -#define GL_ALL_CLIENT_ATTRIB_BITS 0xFFFFFFFF -#define GL_CLIENT_ALL_ATTRIB_BITS 0xFFFFFFFF - - - -/* - * Miscellaneous - */ - -GLAPI void GLAPIENTRY glClearIndex( GLfloat c ); - -GLAPI void GLAPIENTRY glClearColor( GLclampf red, GLclampf green, GLclampf blue, GLclampf alpha ); - -GLAPI void GLAPIENTRY glClear( GLbitfield mask ); - -GLAPI void GLAPIENTRY glIndexMask( GLuint mask ); - -GLAPI void GLAPIENTRY glColorMask( GLboolean red, GLboolean green, GLboolean blue, GLboolean alpha ); - -GLAPI void GLAPIENTRY glAlphaFunc( GLenum func, GLclampf ref ); - -GLAPI void GLAPIENTRY glBlendFunc( GLenum sfactor, GLenum dfactor ); - -GLAPI void GLAPIENTRY glLogicOp( GLenum opcode ); - -GLAPI void GLAPIENTRY glCullFace( GLenum mode ); - -GLAPI void GLAPIENTRY glFrontFace( GLenum mode ); - -GLAPI void GLAPIENTRY glPointSize( GLfloat size ); - -GLAPI void GLAPIENTRY glLineWidth( GLfloat width ); - -GLAPI void GLAPIENTRY glLineStipple( GLint factor, GLushort pattern ); - -GLAPI void GLAPIENTRY glPolygonMode( GLenum face, GLenum mode ); - -GLAPI void GLAPIENTRY glPolygonOffset( GLfloat factor, GLfloat units ); - -GLAPI void GLAPIENTRY glPolygonStipple( const GLubyte *mask ); - -GLAPI void GLAPIENTRY glGetPolygonStipple( GLubyte *mask ); - -GLAPI void GLAPIENTRY glEdgeFlag( GLboolean flag ); - -GLAPI void GLAPIENTRY glEdgeFlagv( const GLboolean *flag ); - -GLAPI void GLAPIENTRY glScissor( GLint x, GLint y, GLsizei width, GLsizei height); - -GLAPI void GLAPIENTRY glClipPlane( GLenum plane, const GLdouble *equation ); - -GLAPI void GLAPIENTRY glGetClipPlane( GLenum plane, GLdouble *equation ); - -GLAPI void GLAPIENTRY glDrawBuffer( GLenum mode ); - -GLAPI void GLAPIENTRY glReadBuffer( GLenum mode ); - -GLAPI void GLAPIENTRY glEnable( GLenum cap ); - -GLAPI void GLAPIENTRY glDisable( GLenum cap ); - -GLAPI GLboolean GLAPIENTRY glIsEnabled( GLenum cap ); - - -GLAPI void GLAPIENTRY glEnableClientState( GLenum cap ); /* 1.1 */ - -GLAPI void GLAPIENTRY glDisableClientState( GLenum cap ); /* 1.1 */ - - -GLAPI void GLAPIENTRY glGetBooleanv( GLenum pname, GLboolean *params ); - -GLAPI void GLAPIENTRY glGetDoublev( GLenum pname, GLdouble *params ); - -GLAPI void GLAPIENTRY glGetFloatv( GLenum pname, GLfloat *params ); - -GLAPI void GLAPIENTRY glGetIntegerv( GLenum pname, GLint *params ); - - -GLAPI void GLAPIENTRY glPushAttrib( GLbitfield mask ); - -GLAPI void GLAPIENTRY glPopAttrib( void ); - - -GLAPI void GLAPIENTRY glPushClientAttrib( GLbitfield mask ); /* 1.1 */ - -GLAPI void GLAPIENTRY glPopClientAttrib( void ); /* 1.1 */ - - -GLAPI GLint GLAPIENTRY glRenderMode( GLenum mode ); - -GLAPI GLenum GLAPIENTRY glGetError( void ); - -GLAPI const GLubyte * GLAPIENTRY glGetString( GLenum name ); - -GLAPI void GLAPIENTRY glFinish( void ); - -GLAPI void GLAPIENTRY glFlush( void ); - -GLAPI void GLAPIENTRY glHint( GLenum target, GLenum mode ); - - -/* - * Depth Buffer - */ - -GLAPI void GLAPIENTRY glClearDepth( GLclampd depth ); - -GLAPI void GLAPIENTRY glDepthFunc( GLenum func ); - -GLAPI void GLAPIENTRY glDepthMask( GLboolean flag ); - -GLAPI void GLAPIENTRY glDepthRange( GLclampd near_val, GLclampd far_val ); - - -/* - * Accumulation Buffer - */ - -GLAPI void GLAPIENTRY glClearAccum( GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha ); - -GLAPI void GLAPIENTRY glAccum( GLenum op, GLfloat value ); - - -/* - * Transformation - */ - -GLAPI void GLAPIENTRY glMatrixMode( GLenum mode ); - -GLAPI void GLAPIENTRY glOrtho( GLdouble left, GLdouble right, - GLdouble bottom, GLdouble top, - GLdouble near_val, GLdouble far_val ); - -GLAPI void GLAPIENTRY glFrustum( GLdouble left, GLdouble right, - GLdouble bottom, GLdouble top, - GLdouble near_val, GLdouble far_val ); - -GLAPI void GLAPIENTRY glViewport( GLint x, GLint y, - GLsizei width, GLsizei height ); - -GLAPI void GLAPIENTRY glPushMatrix( void ); - -GLAPI void GLAPIENTRY glPopMatrix( void ); - -GLAPI void GLAPIENTRY glLoadIdentity( void ); - -GLAPI void GLAPIENTRY glLoadMatrixd( const GLdouble *m ); -GLAPI void GLAPIENTRY glLoadMatrixf( const GLfloat *m ); - -GLAPI void GLAPIENTRY glMultMatrixd( const GLdouble *m ); -GLAPI void GLAPIENTRY glMultMatrixf( const GLfloat *m ); - -GLAPI void GLAPIENTRY glRotated( GLdouble angle, - GLdouble x, GLdouble y, GLdouble z ); -GLAPI void GLAPIENTRY glRotatef( GLfloat angle, - GLfloat x, GLfloat y, GLfloat z ); - -GLAPI void GLAPIENTRY glScaled( GLdouble x, GLdouble y, GLdouble z ); -GLAPI void GLAPIENTRY glScalef( GLfloat x, GLfloat y, GLfloat z ); - -GLAPI void GLAPIENTRY glTranslated( GLdouble x, GLdouble y, GLdouble z ); -GLAPI void GLAPIENTRY glTranslatef( GLfloat x, GLfloat y, GLfloat z ); - - -/* - * Display Lists - */ - -GLAPI GLboolean GLAPIENTRY glIsList( GLuint list ); - -GLAPI void GLAPIENTRY glDeleteLists( GLuint list, GLsizei range ); - -GLAPI GLuint GLAPIENTRY glGenLists( GLsizei range ); - -GLAPI void GLAPIENTRY glNewList( GLuint list, GLenum mode ); - -GLAPI void GLAPIENTRY glEndList( void ); - -GLAPI void GLAPIENTRY glCallList( GLuint list ); - -GLAPI void GLAPIENTRY glCallLists( GLsizei n, GLenum type, - const GLvoid *lists ); - -GLAPI void GLAPIENTRY glListBase( GLuint base ); - - -/* - * Drawing Functions - */ - -GLAPI void GLAPIENTRY glBegin( GLenum mode ); - -GLAPI void GLAPIENTRY glEnd( void ); - - -GLAPI void GLAPIENTRY glVertex2d( GLdouble x, GLdouble y ); -GLAPI void GLAPIENTRY glVertex2f( GLfloat x, GLfloat y ); -GLAPI void GLAPIENTRY glVertex2i( GLint x, GLint y ); -GLAPI void GLAPIENTRY glVertex2s( GLshort x, GLshort y ); - -GLAPI void GLAPIENTRY glVertex3d( GLdouble x, GLdouble y, GLdouble z ); -GLAPI void GLAPIENTRY glVertex3f( GLfloat x, GLfloat y, GLfloat z ); -GLAPI void GLAPIENTRY glVertex3i( GLint x, GLint y, GLint z ); -GLAPI void GLAPIENTRY glVertex3s( GLshort x, GLshort y, GLshort z ); - -GLAPI void GLAPIENTRY glVertex4d( GLdouble x, GLdouble y, GLdouble z, GLdouble w ); -GLAPI void GLAPIENTRY glVertex4f( GLfloat x, GLfloat y, GLfloat z, GLfloat w ); -GLAPI void GLAPIENTRY glVertex4i( GLint x, GLint y, GLint z, GLint w ); -GLAPI void GLAPIENTRY glVertex4s( GLshort x, GLshort y, GLshort z, GLshort w ); - -GLAPI void GLAPIENTRY glVertex2dv( const GLdouble *v ); -GLAPI void GLAPIENTRY glVertex2fv( const GLfloat *v ); -GLAPI void GLAPIENTRY glVertex2iv( const GLint *v ); -GLAPI void GLAPIENTRY glVertex2sv( const GLshort *v ); - -GLAPI void GLAPIENTRY glVertex3dv( const GLdouble *v ); -GLAPI void GLAPIENTRY glVertex3fv( const GLfloat *v ); -GLAPI void GLAPIENTRY glVertex3iv( const GLint *v ); -GLAPI void GLAPIENTRY glVertex3sv( const GLshort *v ); - -GLAPI void GLAPIENTRY glVertex4dv( const GLdouble *v ); -GLAPI void GLAPIENTRY glVertex4fv( const GLfloat *v ); -GLAPI void GLAPIENTRY glVertex4iv( const GLint *v ); -GLAPI void GLAPIENTRY glVertex4sv( const GLshort *v ); - - -GLAPI void GLAPIENTRY glNormal3b( GLbyte nx, GLbyte ny, GLbyte nz ); -GLAPI void GLAPIENTRY glNormal3d( GLdouble nx, GLdouble ny, GLdouble nz ); -GLAPI void GLAPIENTRY glNormal3f( GLfloat nx, GLfloat ny, GLfloat nz ); -GLAPI void GLAPIENTRY glNormal3i( GLint nx, GLint ny, GLint nz ); -GLAPI void GLAPIENTRY glNormal3s( GLshort nx, GLshort ny, GLshort nz ); - -GLAPI void GLAPIENTRY glNormal3bv( const GLbyte *v ); -GLAPI void GLAPIENTRY glNormal3dv( const GLdouble *v ); -GLAPI void GLAPIENTRY glNormal3fv( const GLfloat *v ); -GLAPI void GLAPIENTRY glNormal3iv( const GLint *v ); -GLAPI void GLAPIENTRY glNormal3sv( const GLshort *v ); - - -GLAPI void GLAPIENTRY glIndexd( GLdouble c ); -GLAPI void GLAPIENTRY glIndexf( GLfloat c ); -GLAPI void GLAPIENTRY glIndexi( GLint c ); -GLAPI void GLAPIENTRY glIndexs( GLshort c ); -GLAPI void GLAPIENTRY glIndexub( GLubyte c ); /* 1.1 */ - -GLAPI void GLAPIENTRY glIndexdv( const GLdouble *c ); -GLAPI void GLAPIENTRY glIndexfv( const GLfloat *c ); -GLAPI void GLAPIENTRY glIndexiv( const GLint *c ); -GLAPI void GLAPIENTRY glIndexsv( const GLshort *c ); -GLAPI void GLAPIENTRY glIndexubv( const GLubyte *c ); /* 1.1 */ - -GLAPI void GLAPIENTRY glColor3b( GLbyte red, GLbyte green, GLbyte blue ); -GLAPI void GLAPIENTRY glColor3d( GLdouble red, GLdouble green, GLdouble blue ); -GLAPI void GLAPIENTRY glColor3f( GLfloat red, GLfloat green, GLfloat blue ); -GLAPI void GLAPIENTRY glColor3i( GLint red, GLint green, GLint blue ); -GLAPI void GLAPIENTRY glColor3s( GLshort red, GLshort green, GLshort blue ); -GLAPI void GLAPIENTRY glColor3ub( GLubyte red, GLubyte green, GLubyte blue ); -GLAPI void GLAPIENTRY glColor3ui( GLuint red, GLuint green, GLuint blue ); -GLAPI void GLAPIENTRY glColor3us( GLushort red, GLushort green, GLushort blue ); - -GLAPI void GLAPIENTRY glColor4b( GLbyte red, GLbyte green, - GLbyte blue, GLbyte alpha ); -GLAPI void GLAPIENTRY glColor4d( GLdouble red, GLdouble green, - GLdouble blue, GLdouble alpha ); -GLAPI void GLAPIENTRY glColor4f( GLfloat red, GLfloat green, - GLfloat blue, GLfloat alpha ); -GLAPI void GLAPIENTRY glColor4i( GLint red, GLint green, - GLint blue, GLint alpha ); -GLAPI void GLAPIENTRY glColor4s( GLshort red, GLshort green, - GLshort blue, GLshort alpha ); -GLAPI void GLAPIENTRY glColor4ub( GLubyte red, GLubyte green, - GLubyte blue, GLubyte alpha ); -GLAPI void GLAPIENTRY glColor4ui( GLuint red, GLuint green, - GLuint blue, GLuint alpha ); -GLAPI void GLAPIENTRY glColor4us( GLushort red, GLushort green, - GLushort blue, GLushort alpha ); - - -GLAPI void GLAPIENTRY glColor3bv( const GLbyte *v ); -GLAPI void GLAPIENTRY glColor3dv( const GLdouble *v ); -GLAPI void GLAPIENTRY glColor3fv( const GLfloat *v ); -GLAPI void GLAPIENTRY glColor3iv( const GLint *v ); -GLAPI void GLAPIENTRY glColor3sv( const GLshort *v ); -GLAPI void GLAPIENTRY glColor3ubv( const GLubyte *v ); -GLAPI void GLAPIENTRY glColor3uiv( const GLuint *v ); -GLAPI void GLAPIENTRY glColor3usv( const GLushort *v ); - -GLAPI void GLAPIENTRY glColor4bv( const GLbyte *v ); -GLAPI void GLAPIENTRY glColor4dv( const GLdouble *v ); -GLAPI void GLAPIENTRY glColor4fv( const GLfloat *v ); -GLAPI void GLAPIENTRY glColor4iv( const GLint *v ); -GLAPI void GLAPIENTRY glColor4sv( const GLshort *v ); -GLAPI void GLAPIENTRY glColor4ubv( const GLubyte *v ); -GLAPI void GLAPIENTRY glColor4uiv( const GLuint *v ); -GLAPI void GLAPIENTRY glColor4usv( const GLushort *v ); - - -GLAPI void GLAPIENTRY glTexCoord1d( GLdouble s ); -GLAPI void GLAPIENTRY glTexCoord1f( GLfloat s ); -GLAPI void GLAPIENTRY glTexCoord1i( GLint s ); -GLAPI void GLAPIENTRY glTexCoord1s( GLshort s ); - -GLAPI void GLAPIENTRY glTexCoord2d( GLdouble s, GLdouble t ); -GLAPI void GLAPIENTRY glTexCoord2f( GLfloat s, GLfloat t ); -GLAPI void GLAPIENTRY glTexCoord2i( GLint s, GLint t ); -GLAPI void GLAPIENTRY glTexCoord2s( GLshort s, GLshort t ); - -GLAPI void GLAPIENTRY glTexCoord3d( GLdouble s, GLdouble t, GLdouble r ); -GLAPI void GLAPIENTRY glTexCoord3f( GLfloat s, GLfloat t, GLfloat r ); -GLAPI void GLAPIENTRY glTexCoord3i( GLint s, GLint t, GLint r ); -GLAPI void GLAPIENTRY glTexCoord3s( GLshort s, GLshort t, GLshort r ); - -GLAPI void GLAPIENTRY glTexCoord4d( GLdouble s, GLdouble t, GLdouble r, GLdouble q ); -GLAPI void GLAPIENTRY glTexCoord4f( GLfloat s, GLfloat t, GLfloat r, GLfloat q ); -GLAPI void GLAPIENTRY glTexCoord4i( GLint s, GLint t, GLint r, GLint q ); -GLAPI void GLAPIENTRY glTexCoord4s( GLshort s, GLshort t, GLshort r, GLshort q ); - -GLAPI void GLAPIENTRY glTexCoord1dv( const GLdouble *v ); -GLAPI void GLAPIENTRY glTexCoord1fv( const GLfloat *v ); -GLAPI void GLAPIENTRY glTexCoord1iv( const GLint *v ); -GLAPI void GLAPIENTRY glTexCoord1sv( const GLshort *v ); - -GLAPI void GLAPIENTRY glTexCoord2dv( const GLdouble *v ); -GLAPI void GLAPIENTRY glTexCoord2fv( const GLfloat *v ); -GLAPI void GLAPIENTRY glTexCoord2iv( const GLint *v ); -GLAPI void GLAPIENTRY glTexCoord2sv( const GLshort *v ); - -GLAPI void GLAPIENTRY glTexCoord3dv( const GLdouble *v ); -GLAPI void GLAPIENTRY glTexCoord3fv( const GLfloat *v ); -GLAPI void GLAPIENTRY glTexCoord3iv( const GLint *v ); -GLAPI void GLAPIENTRY glTexCoord3sv( const GLshort *v ); - -GLAPI void GLAPIENTRY glTexCoord4dv( const GLdouble *v ); -GLAPI void GLAPIENTRY glTexCoord4fv( const GLfloat *v ); -GLAPI void GLAPIENTRY glTexCoord4iv( const GLint *v ); -GLAPI void GLAPIENTRY glTexCoord4sv( const GLshort *v ); - - -GLAPI void GLAPIENTRY glRasterPos2d( GLdouble x, GLdouble y ); -GLAPI void GLAPIENTRY glRasterPos2f( GLfloat x, GLfloat y ); -GLAPI void GLAPIENTRY glRasterPos2i( GLint x, GLint y ); -GLAPI void GLAPIENTRY glRasterPos2s( GLshort x, GLshort y ); - -GLAPI void GLAPIENTRY glRasterPos3d( GLdouble x, GLdouble y, GLdouble z ); -GLAPI void GLAPIENTRY glRasterPos3f( GLfloat x, GLfloat y, GLfloat z ); -GLAPI void GLAPIENTRY glRasterPos3i( GLint x, GLint y, GLint z ); -GLAPI void GLAPIENTRY glRasterPos3s( GLshort x, GLshort y, GLshort z ); - -GLAPI void GLAPIENTRY glRasterPos4d( GLdouble x, GLdouble y, GLdouble z, GLdouble w ); -GLAPI void GLAPIENTRY glRasterPos4f( GLfloat x, GLfloat y, GLfloat z, GLfloat w ); -GLAPI void GLAPIENTRY glRasterPos4i( GLint x, GLint y, GLint z, GLint w ); -GLAPI void GLAPIENTRY glRasterPos4s( GLshort x, GLshort y, GLshort z, GLshort w ); - -GLAPI void GLAPIENTRY glRasterPos2dv( const GLdouble *v ); -GLAPI void GLAPIENTRY glRasterPos2fv( const GLfloat *v ); -GLAPI void GLAPIENTRY glRasterPos2iv( const GLint *v ); -GLAPI void GLAPIENTRY glRasterPos2sv( const GLshort *v ); - -GLAPI void GLAPIENTRY glRasterPos3dv( const GLdouble *v ); -GLAPI void GLAPIENTRY glRasterPos3fv( const GLfloat *v ); -GLAPI void GLAPIENTRY glRasterPos3iv( const GLint *v ); -GLAPI void GLAPIENTRY glRasterPos3sv( const GLshort *v ); - -GLAPI void GLAPIENTRY glRasterPos4dv( const GLdouble *v ); -GLAPI void GLAPIENTRY glRasterPos4fv( const GLfloat *v ); -GLAPI void GLAPIENTRY glRasterPos4iv( const GLint *v ); -GLAPI void GLAPIENTRY glRasterPos4sv( const GLshort *v ); - - -GLAPI void GLAPIENTRY glRectd( GLdouble x1, GLdouble y1, GLdouble x2, GLdouble y2 ); -GLAPI void GLAPIENTRY glRectf( GLfloat x1, GLfloat y1, GLfloat x2, GLfloat y2 ); -GLAPI void GLAPIENTRY glRecti( GLint x1, GLint y1, GLint x2, GLint y2 ); -GLAPI void GLAPIENTRY glRects( GLshort x1, GLshort y1, GLshort x2, GLshort y2 ); - - -GLAPI void GLAPIENTRY glRectdv( const GLdouble *v1, const GLdouble *v2 ); -GLAPI void GLAPIENTRY glRectfv( const GLfloat *v1, const GLfloat *v2 ); -GLAPI void GLAPIENTRY glRectiv( const GLint *v1, const GLint *v2 ); -GLAPI void GLAPIENTRY glRectsv( const GLshort *v1, const GLshort *v2 ); - - -/* - * Vertex Arrays (1.1) - */ - -GLAPI void GLAPIENTRY glVertexPointer( GLint size, GLenum type, - GLsizei stride, const GLvoid *ptr ); - -GLAPI void GLAPIENTRY glNormalPointer( GLenum type, GLsizei stride, - const GLvoid *ptr ); - -GLAPI void GLAPIENTRY glColorPointer( GLint size, GLenum type, - GLsizei stride, const GLvoid *ptr ); - -GLAPI void GLAPIENTRY glIndexPointer( GLenum type, GLsizei stride, - const GLvoid *ptr ); - -GLAPI void GLAPIENTRY glTexCoordPointer( GLint size, GLenum type, - GLsizei stride, const GLvoid *ptr ); - -GLAPI void GLAPIENTRY glEdgeFlagPointer( GLsizei stride, const GLvoid *ptr ); - -GLAPI void GLAPIENTRY glGetPointerv( GLenum pname, GLvoid **params ); - -GLAPI void GLAPIENTRY glArrayElement( GLint i ); - -GLAPI void GLAPIENTRY glDrawArrays( GLenum mode, GLint first, GLsizei count ); - -GLAPI void GLAPIENTRY glDrawElements( GLenum mode, GLsizei count, - GLenum type, const GLvoid *indices ); - -GLAPI void GLAPIENTRY glInterleavedArrays( GLenum format, GLsizei stride, - const GLvoid *pointer ); - -/* - * Lighting - */ - -GLAPI void GLAPIENTRY glShadeModel( GLenum mode ); - -GLAPI void GLAPIENTRY glLightf( GLenum light, GLenum pname, GLfloat param ); -GLAPI void GLAPIENTRY glLighti( GLenum light, GLenum pname, GLint param ); -GLAPI void GLAPIENTRY glLightfv( GLenum light, GLenum pname, - const GLfloat *params ); -GLAPI void GLAPIENTRY glLightiv( GLenum light, GLenum pname, - const GLint *params ); - -GLAPI void GLAPIENTRY glGetLightfv( GLenum light, GLenum pname, - GLfloat *params ); -GLAPI void GLAPIENTRY glGetLightiv( GLenum light, GLenum pname, - GLint *params ); - -GLAPI void GLAPIENTRY glLightModelf( GLenum pname, GLfloat param ); -GLAPI void GLAPIENTRY glLightModeli( GLenum pname, GLint param ); -GLAPI void GLAPIENTRY glLightModelfv( GLenum pname, const GLfloat *params ); -GLAPI void GLAPIENTRY glLightModeliv( GLenum pname, const GLint *params ); - -GLAPI void GLAPIENTRY glMaterialf( GLenum face, GLenum pname, GLfloat param ); -GLAPI void GLAPIENTRY glMateriali( GLenum face, GLenum pname, GLint param ); -GLAPI void GLAPIENTRY glMaterialfv( GLenum face, GLenum pname, const GLfloat *params ); -GLAPI void GLAPIENTRY glMaterialiv( GLenum face, GLenum pname, const GLint *params ); - -GLAPI void GLAPIENTRY glGetMaterialfv( GLenum face, GLenum pname, GLfloat *params ); -GLAPI void GLAPIENTRY glGetMaterialiv( GLenum face, GLenum pname, GLint *params ); - -GLAPI void GLAPIENTRY glColorMaterial( GLenum face, GLenum mode ); - - -/* - * Raster functions - */ - -GLAPI void GLAPIENTRY glPixelZoom( GLfloat xfactor, GLfloat yfactor ); - -GLAPI void GLAPIENTRY glPixelStoref( GLenum pname, GLfloat param ); -GLAPI void GLAPIENTRY glPixelStorei( GLenum pname, GLint param ); - -GLAPI void GLAPIENTRY glPixelTransferf( GLenum pname, GLfloat param ); -GLAPI void GLAPIENTRY glPixelTransferi( GLenum pname, GLint param ); - -GLAPI void GLAPIENTRY glPixelMapfv( GLenum map, GLsizei mapsize, - const GLfloat *values ); -GLAPI void GLAPIENTRY glPixelMapuiv( GLenum map, GLsizei mapsize, - const GLuint *values ); -GLAPI void GLAPIENTRY glPixelMapusv( GLenum map, GLsizei mapsize, - const GLushort *values ); - -GLAPI void GLAPIENTRY glGetPixelMapfv( GLenum map, GLfloat *values ); -GLAPI void GLAPIENTRY glGetPixelMapuiv( GLenum map, GLuint *values ); -GLAPI void GLAPIENTRY glGetPixelMapusv( GLenum map, GLushort *values ); - -GLAPI void GLAPIENTRY glBitmap( GLsizei width, GLsizei height, - GLfloat xorig, GLfloat yorig, - GLfloat xmove, GLfloat ymove, - const GLubyte *bitmap ); - -GLAPI void GLAPIENTRY glReadPixels( GLint x, GLint y, - GLsizei width, GLsizei height, - GLenum format, GLenum type, - GLvoid *pixels ); - -GLAPI void GLAPIENTRY glDrawPixels( GLsizei width, GLsizei height, - GLenum format, GLenum type, - const GLvoid *pixels ); - -GLAPI void GLAPIENTRY glCopyPixels( GLint x, GLint y, - GLsizei width, GLsizei height, - GLenum type ); - -/* - * Stenciling - */ - -GLAPI void GLAPIENTRY glStencilFunc( GLenum func, GLint ref, GLuint mask ); - -GLAPI void GLAPIENTRY glStencilMask( GLuint mask ); - -GLAPI void GLAPIENTRY glStencilOp( GLenum fail, GLenum zfail, GLenum zpass ); - -GLAPI void GLAPIENTRY glClearStencil( GLint s ); - - - -/* - * Texture mapping - */ - -GLAPI void GLAPIENTRY glTexGend( GLenum coord, GLenum pname, GLdouble param ); -GLAPI void GLAPIENTRY glTexGenf( GLenum coord, GLenum pname, GLfloat param ); -GLAPI void GLAPIENTRY glTexGeni( GLenum coord, GLenum pname, GLint param ); - -GLAPI void GLAPIENTRY glTexGendv( GLenum coord, GLenum pname, const GLdouble *params ); -GLAPI void GLAPIENTRY glTexGenfv( GLenum coord, GLenum pname, const GLfloat *params ); -GLAPI void GLAPIENTRY glTexGeniv( GLenum coord, GLenum pname, const GLint *params ); - -GLAPI void GLAPIENTRY glGetTexGendv( GLenum coord, GLenum pname, GLdouble *params ); -GLAPI void GLAPIENTRY glGetTexGenfv( GLenum coord, GLenum pname, GLfloat *params ); -GLAPI void GLAPIENTRY glGetTexGeniv( GLenum coord, GLenum pname, GLint *params ); - - -GLAPI void GLAPIENTRY glTexEnvf( GLenum target, GLenum pname, GLfloat param ); -GLAPI void GLAPIENTRY glTexEnvi( GLenum target, GLenum pname, GLint param ); - -GLAPI void GLAPIENTRY glTexEnvfv( GLenum target, GLenum pname, const GLfloat *params ); -GLAPI void GLAPIENTRY glTexEnviv( GLenum target, GLenum pname, const GLint *params ); - -GLAPI void GLAPIENTRY glGetTexEnvfv( GLenum target, GLenum pname, GLfloat *params ); -GLAPI void GLAPIENTRY glGetTexEnviv( GLenum target, GLenum pname, GLint *params ); - - -GLAPI void GLAPIENTRY glTexParameterf( GLenum target, GLenum pname, GLfloat param ); -GLAPI void GLAPIENTRY glTexParameteri( GLenum target, GLenum pname, GLint param ); - -GLAPI void GLAPIENTRY glTexParameterfv( GLenum target, GLenum pname, - const GLfloat *params ); -GLAPI void GLAPIENTRY glTexParameteriv( GLenum target, GLenum pname, - const GLint *params ); - -GLAPI void GLAPIENTRY glGetTexParameterfv( GLenum target, - GLenum pname, GLfloat *params); -GLAPI void GLAPIENTRY glGetTexParameteriv( GLenum target, - GLenum pname, GLint *params ); - -GLAPI void GLAPIENTRY glGetTexLevelParameterfv( GLenum target, GLint level, - GLenum pname, GLfloat *params ); -GLAPI void GLAPIENTRY glGetTexLevelParameteriv( GLenum target, GLint level, - GLenum pname, GLint *params ); - - -GLAPI void GLAPIENTRY glTexImage1D( GLenum target, GLint level, - GLint internalFormat, - GLsizei width, GLint border, - GLenum format, GLenum type, - const GLvoid *pixels ); - -GLAPI void GLAPIENTRY glTexImage2D( GLenum target, GLint level, - GLint internalFormat, - GLsizei width, GLsizei height, - GLint border, GLenum format, GLenum type, - const GLvoid *pixels ); - -GLAPI void GLAPIENTRY glGetTexImage( GLenum target, GLint level, - GLenum format, GLenum type, - GLvoid *pixels ); - - -/* 1.1 functions */ - -GLAPI void GLAPIENTRY glGenTextures( GLsizei n, GLuint *textures ); - -GLAPI void GLAPIENTRY glDeleteTextures( GLsizei n, const GLuint *textures); - -GLAPI void GLAPIENTRY glBindTexture( GLenum target, GLuint texture ); - -GLAPI void GLAPIENTRY glPrioritizeTextures( GLsizei n, - const GLuint *textures, - const GLclampf *priorities ); - -GLAPI GLboolean GLAPIENTRY glAreTexturesResident( GLsizei n, - const GLuint *textures, - GLboolean *residences ); - -GLAPI GLboolean GLAPIENTRY glIsTexture( GLuint texture ); - - -GLAPI void GLAPIENTRY glTexSubImage1D( GLenum target, GLint level, - GLint xoffset, - GLsizei width, GLenum format, - GLenum type, const GLvoid *pixels ); - - -GLAPI void GLAPIENTRY glTexSubImage2D( GLenum target, GLint level, - GLint xoffset, GLint yoffset, - GLsizei width, GLsizei height, - GLenum format, GLenum type, - const GLvoid *pixels ); - - -GLAPI void GLAPIENTRY glCopyTexImage1D( GLenum target, GLint level, - GLenum internalformat, - GLint x, GLint y, - GLsizei width, GLint border ); - - -GLAPI void GLAPIENTRY glCopyTexImage2D( GLenum target, GLint level, - GLenum internalformat, - GLint x, GLint y, - GLsizei width, GLsizei height, - GLint border ); - - -GLAPI void GLAPIENTRY glCopyTexSubImage1D( GLenum target, GLint level, - GLint xoffset, GLint x, GLint y, - GLsizei width ); - - -GLAPI void GLAPIENTRY glCopyTexSubImage2D( GLenum target, GLint level, - GLint xoffset, GLint yoffset, - GLint x, GLint y, - GLsizei width, GLsizei height ); - - -/* - * Evaluators - */ - -GLAPI void GLAPIENTRY glMap1d( GLenum target, GLdouble u1, GLdouble u2, - GLint stride, - GLint order, const GLdouble *points ); -GLAPI void GLAPIENTRY glMap1f( GLenum target, GLfloat u1, GLfloat u2, - GLint stride, - GLint order, const GLfloat *points ); - -GLAPI void GLAPIENTRY glMap2d( GLenum target, - GLdouble u1, GLdouble u2, GLint ustride, GLint uorder, - GLdouble v1, GLdouble v2, GLint vstride, GLint vorder, - const GLdouble *points ); -GLAPI void GLAPIENTRY glMap2f( GLenum target, - GLfloat u1, GLfloat u2, GLint ustride, GLint uorder, - GLfloat v1, GLfloat v2, GLint vstride, GLint vorder, - const GLfloat *points ); - -GLAPI void GLAPIENTRY glGetMapdv( GLenum target, GLenum query, GLdouble *v ); -GLAPI void GLAPIENTRY glGetMapfv( GLenum target, GLenum query, GLfloat *v ); -GLAPI void GLAPIENTRY glGetMapiv( GLenum target, GLenum query, GLint *v ); - -GLAPI void GLAPIENTRY glEvalCoord1d( GLdouble u ); -GLAPI void GLAPIENTRY glEvalCoord1f( GLfloat u ); - -GLAPI void GLAPIENTRY glEvalCoord1dv( const GLdouble *u ); -GLAPI void GLAPIENTRY glEvalCoord1fv( const GLfloat *u ); - -GLAPI void GLAPIENTRY glEvalCoord2d( GLdouble u, GLdouble v ); -GLAPI void GLAPIENTRY glEvalCoord2f( GLfloat u, GLfloat v ); - -GLAPI void GLAPIENTRY glEvalCoord2dv( const GLdouble *u ); -GLAPI void GLAPIENTRY glEvalCoord2fv( const GLfloat *u ); - -GLAPI void GLAPIENTRY glMapGrid1d( GLint un, GLdouble u1, GLdouble u2 ); -GLAPI void GLAPIENTRY glMapGrid1f( GLint un, GLfloat u1, GLfloat u2 ); - -GLAPI void GLAPIENTRY glMapGrid2d( GLint un, GLdouble u1, GLdouble u2, - GLint vn, GLdouble v1, GLdouble v2 ); -GLAPI void GLAPIENTRY glMapGrid2f( GLint un, GLfloat u1, GLfloat u2, - GLint vn, GLfloat v1, GLfloat v2 ); - -GLAPI void GLAPIENTRY glEvalPoint1( GLint i ); - -GLAPI void GLAPIENTRY glEvalPoint2( GLint i, GLint j ); - -GLAPI void GLAPIENTRY glEvalMesh1( GLenum mode, GLint i1, GLint i2 ); - -GLAPI void GLAPIENTRY glEvalMesh2( GLenum mode, GLint i1, GLint i2, GLint j1, GLint j2 ); - - -/* - * Fog - */ - -GLAPI void GLAPIENTRY glFogf( GLenum pname, GLfloat param ); - -GLAPI void GLAPIENTRY glFogi( GLenum pname, GLint param ); - -GLAPI void GLAPIENTRY glFogfv( GLenum pname, const GLfloat *params ); - -GLAPI void GLAPIENTRY glFogiv( GLenum pname, const GLint *params ); - - -/* - * Selection and Feedback - */ - -GLAPI void GLAPIENTRY glFeedbackBuffer( GLsizei size, GLenum type, GLfloat *buffer ); - -GLAPI void GLAPIENTRY glPassThrough( GLfloat token ); - -GLAPI void GLAPIENTRY glSelectBuffer( GLsizei size, GLuint *buffer ); - -GLAPI void GLAPIENTRY glInitNames( void ); - -GLAPI void GLAPIENTRY glLoadName( GLuint name ); - -GLAPI void GLAPIENTRY glPushName( GLuint name ); - -GLAPI void GLAPIENTRY glPopName( void ); - - - -/* - * OpenGL 1.2 - */ - -#define GL_RESCALE_NORMAL 0x803A -#define GL_CLAMP_TO_EDGE 0x812F -#define GL_MAX_ELEMENTS_VERTICES 0x80E8 -#define GL_MAX_ELEMENTS_INDICES 0x80E9 -#define GL_BGR 0x80E0 -#define GL_BGRA 0x80E1 -#define GL_UNSIGNED_BYTE_3_3_2 0x8032 -#define GL_UNSIGNED_BYTE_2_3_3_REV 0x8362 -#define GL_UNSIGNED_SHORT_5_6_5 0x8363 -#define GL_UNSIGNED_SHORT_5_6_5_REV 0x8364 -#define GL_UNSIGNED_SHORT_4_4_4_4 0x8033 -#define GL_UNSIGNED_SHORT_4_4_4_4_REV 0x8365 -#define GL_UNSIGNED_SHORT_5_5_5_1 0x8034 -#define GL_UNSIGNED_SHORT_1_5_5_5_REV 0x8366 -#define GL_UNSIGNED_INT_8_8_8_8 0x8035 -#define GL_UNSIGNED_INT_8_8_8_8_REV 0x8367 -#define GL_UNSIGNED_INT_10_10_10_2 0x8036 -#define GL_UNSIGNED_INT_2_10_10_10_REV 0x8368 -#define GL_LIGHT_MODEL_COLOR_CONTROL 0x81F8 -#define GL_SINGLE_COLOR 0x81F9 -#define GL_SEPARATE_SPECULAR_COLOR 0x81FA -#define GL_TEXTURE_MIN_LOD 0x813A -#define GL_TEXTURE_MAX_LOD 0x813B -#define GL_TEXTURE_BASE_LEVEL 0x813C -#define GL_TEXTURE_MAX_LEVEL 0x813D -#define GL_SMOOTH_POINT_SIZE_RANGE 0x0B12 -#define GL_SMOOTH_POINT_SIZE_GRANULARITY 0x0B13 -#define GL_SMOOTH_LINE_WIDTH_RANGE 0x0B22 -#define GL_SMOOTH_LINE_WIDTH_GRANULARITY 0x0B23 -#define GL_ALIASED_POINT_SIZE_RANGE 0x846D -#define GL_ALIASED_LINE_WIDTH_RANGE 0x846E -#define GL_PACK_SKIP_IMAGES 0x806B -#define GL_PACK_IMAGE_HEIGHT 0x806C -#define GL_UNPACK_SKIP_IMAGES 0x806D -#define GL_UNPACK_IMAGE_HEIGHT 0x806E -#define GL_TEXTURE_3D 0x806F -#define GL_PROXY_TEXTURE_3D 0x8070 -#define GL_TEXTURE_DEPTH 0x8071 -#define GL_TEXTURE_WRAP_R 0x8072 -#define GL_MAX_3D_TEXTURE_SIZE 0x8073 -#define GL_TEXTURE_BINDING_3D 0x806A - -GLAPI void GLAPIENTRY glDrawRangeElements( GLenum mode, GLuint start, - GLuint end, GLsizei count, GLenum type, const GLvoid *indices ); - -GLAPI void GLAPIENTRY glTexImage3D( GLenum target, GLint level, - GLint internalFormat, - GLsizei width, GLsizei height, - GLsizei depth, GLint border, - GLenum format, GLenum type, - const GLvoid *pixels ); - -GLAPI void GLAPIENTRY glTexSubImage3D( GLenum target, GLint level, - GLint xoffset, GLint yoffset, - GLint zoffset, GLsizei width, - GLsizei height, GLsizei depth, - GLenum format, - GLenum type, const GLvoid *pixels); - -GLAPI void GLAPIENTRY glCopyTexSubImage3D( GLenum target, GLint level, - GLint xoffset, GLint yoffset, - GLint zoffset, GLint x, - GLint y, GLsizei width, - GLsizei height ); - -typedef void (APIENTRYP PFNGLDRAWRANGEELEMENTSPROC) (GLenum mode, GLuint start, GLuint end, GLsizei count, GLenum type, const GLvoid *indices); -typedef void (APIENTRYP PFNGLTEXIMAGE3DPROC) (GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLenum format, GLenum type, const GLvoid *pixels); -typedef void (APIENTRYP PFNGLTEXSUBIMAGE3DPROC) (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, const GLvoid *pixels); -typedef void (APIENTRYP PFNGLCOPYTEXSUBIMAGE3DPROC) (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLint x, GLint y, GLsizei width, GLsizei height); - - -/* - * GL_ARB_imaging - */ - -#define GL_CONSTANT_COLOR 0x8001 -#define GL_ONE_MINUS_CONSTANT_COLOR 0x8002 -#define GL_CONSTANT_ALPHA 0x8003 -#define GL_ONE_MINUS_CONSTANT_ALPHA 0x8004 -#define GL_COLOR_TABLE 0x80D0 -#define GL_POST_CONVOLUTION_COLOR_TABLE 0x80D1 -#define GL_POST_COLOR_MATRIX_COLOR_TABLE 0x80D2 -#define GL_PROXY_COLOR_TABLE 0x80D3 -#define GL_PROXY_POST_CONVOLUTION_COLOR_TABLE 0x80D4 -#define GL_PROXY_POST_COLOR_MATRIX_COLOR_TABLE 0x80D5 -#define GL_COLOR_TABLE_SCALE 0x80D6 -#define GL_COLOR_TABLE_BIAS 0x80D7 -#define GL_COLOR_TABLE_FORMAT 0x80D8 -#define GL_COLOR_TABLE_WIDTH 0x80D9 -#define GL_COLOR_TABLE_RED_SIZE 0x80DA -#define GL_COLOR_TABLE_GREEN_SIZE 0x80DB -#define GL_COLOR_TABLE_BLUE_SIZE 0x80DC -#define GL_COLOR_TABLE_ALPHA_SIZE 0x80DD -#define GL_COLOR_TABLE_LUMINANCE_SIZE 0x80DE -#define GL_COLOR_TABLE_INTENSITY_SIZE 0x80DF -#define GL_CONVOLUTION_1D 0x8010 -#define GL_CONVOLUTION_2D 0x8011 -#define GL_SEPARABLE_2D 0x8012 -#define GL_CONVOLUTION_BORDER_MODE 0x8013 -#define GL_CONVOLUTION_FILTER_SCALE 0x8014 -#define GL_CONVOLUTION_FILTER_BIAS 0x8015 -#define GL_REDUCE 0x8016 -#define GL_CONVOLUTION_FORMAT 0x8017 -#define GL_CONVOLUTION_WIDTH 0x8018 -#define GL_CONVOLUTION_HEIGHT 0x8019 -#define GL_MAX_CONVOLUTION_WIDTH 0x801A -#define GL_MAX_CONVOLUTION_HEIGHT 0x801B -#define GL_POST_CONVOLUTION_RED_SCALE 0x801C -#define GL_POST_CONVOLUTION_GREEN_SCALE 0x801D -#define GL_POST_CONVOLUTION_BLUE_SCALE 0x801E -#define GL_POST_CONVOLUTION_ALPHA_SCALE 0x801F -#define GL_POST_CONVOLUTION_RED_BIAS 0x8020 -#define GL_POST_CONVOLUTION_GREEN_BIAS 0x8021 -#define GL_POST_CONVOLUTION_BLUE_BIAS 0x8022 -#define GL_POST_CONVOLUTION_ALPHA_BIAS 0x8023 -#define GL_CONSTANT_BORDER 0x8151 -#define GL_REPLICATE_BORDER 0x8153 -#define GL_CONVOLUTION_BORDER_COLOR 0x8154 -#define GL_COLOR_MATRIX 0x80B1 -#define GL_COLOR_MATRIX_STACK_DEPTH 0x80B2 -#define GL_MAX_COLOR_MATRIX_STACK_DEPTH 0x80B3 -#define GL_POST_COLOR_MATRIX_RED_SCALE 0x80B4 -#define GL_POST_COLOR_MATRIX_GREEN_SCALE 0x80B5 -#define GL_POST_COLOR_MATRIX_BLUE_SCALE 0x80B6 -#define GL_POST_COLOR_MATRIX_ALPHA_SCALE 0x80B7 -#define GL_POST_COLOR_MATRIX_RED_BIAS 0x80B8 -#define GL_POST_COLOR_MATRIX_GREEN_BIAS 0x80B9 -#define GL_POST_COLOR_MATRIX_BLUE_BIAS 0x80BA -#define GL_POST_COLOR_MATRIX_ALPHA_BIAS 0x80BB -#define GL_HISTOGRAM 0x8024 -#define GL_PROXY_HISTOGRAM 0x8025 -#define GL_HISTOGRAM_WIDTH 0x8026 -#define GL_HISTOGRAM_FORMAT 0x8027 -#define GL_HISTOGRAM_RED_SIZE 0x8028 -#define GL_HISTOGRAM_GREEN_SIZE 0x8029 -#define GL_HISTOGRAM_BLUE_SIZE 0x802A -#define GL_HISTOGRAM_ALPHA_SIZE 0x802B -#define GL_HISTOGRAM_LUMINANCE_SIZE 0x802C -#define GL_HISTOGRAM_SINK 0x802D -#define GL_MINMAX 0x802E -#define GL_MINMAX_FORMAT 0x802F -#define GL_MINMAX_SINK 0x8030 -#define GL_TABLE_TOO_LARGE 0x8031 -#define GL_BLEND_EQUATION 0x8009 -#define GL_MIN 0x8007 -#define GL_MAX 0x8008 -#define GL_FUNC_ADD 0x8006 -#define GL_FUNC_SUBTRACT 0x800A -#define GL_FUNC_REVERSE_SUBTRACT 0x800B -#define GL_BLEND_COLOR 0x8005 - - -GLAPI void GLAPIENTRY glColorTable( GLenum target, GLenum internalformat, - GLsizei width, GLenum format, - GLenum type, const GLvoid *table ); - -GLAPI void GLAPIENTRY glColorSubTable( GLenum target, - GLsizei start, GLsizei count, - GLenum format, GLenum type, - const GLvoid *data ); - -GLAPI void GLAPIENTRY glColorTableParameteriv(GLenum target, GLenum pname, - const GLint *params); - -GLAPI void GLAPIENTRY glColorTableParameterfv(GLenum target, GLenum pname, - const GLfloat *params); - -GLAPI void GLAPIENTRY glCopyColorSubTable( GLenum target, GLsizei start, - GLint x, GLint y, GLsizei width ); - -GLAPI void GLAPIENTRY glCopyColorTable( GLenum target, GLenum internalformat, - GLint x, GLint y, GLsizei width ); - -GLAPI void GLAPIENTRY glGetColorTable( GLenum target, GLenum format, - GLenum type, GLvoid *table ); - -GLAPI void GLAPIENTRY glGetColorTableParameterfv( GLenum target, GLenum pname, - GLfloat *params ); - -GLAPI void GLAPIENTRY glGetColorTableParameteriv( GLenum target, GLenum pname, - GLint *params ); - -GLAPI void GLAPIENTRY glBlendEquation( GLenum mode ); - -GLAPI void GLAPIENTRY glBlendColor( GLclampf red, GLclampf green, - GLclampf blue, GLclampf alpha ); - -GLAPI void GLAPIENTRY glHistogram( GLenum target, GLsizei width, - GLenum internalformat, GLboolean sink ); - -GLAPI void GLAPIENTRY glResetHistogram( GLenum target ); - -GLAPI void GLAPIENTRY glGetHistogram( GLenum target, GLboolean reset, - GLenum format, GLenum type, - GLvoid *values ); - -GLAPI void GLAPIENTRY glGetHistogramParameterfv( GLenum target, GLenum pname, - GLfloat *params ); - -GLAPI void GLAPIENTRY glGetHistogramParameteriv( GLenum target, GLenum pname, - GLint *params ); - -GLAPI void GLAPIENTRY glMinmax( GLenum target, GLenum internalformat, - GLboolean sink ); - -GLAPI void GLAPIENTRY glResetMinmax( GLenum target ); - -GLAPI void GLAPIENTRY glGetMinmax( GLenum target, GLboolean reset, - GLenum format, GLenum types, - GLvoid *values ); - -GLAPI void GLAPIENTRY glGetMinmaxParameterfv( GLenum target, GLenum pname, - GLfloat *params ); - -GLAPI void GLAPIENTRY glGetMinmaxParameteriv( GLenum target, GLenum pname, - GLint *params ); - -GLAPI void GLAPIENTRY glConvolutionFilter1D( GLenum target, - GLenum internalformat, GLsizei width, GLenum format, GLenum type, - const GLvoid *image ); - -GLAPI void GLAPIENTRY glConvolutionFilter2D( GLenum target, - GLenum internalformat, GLsizei width, GLsizei height, GLenum format, - GLenum type, const GLvoid *image ); - -GLAPI void GLAPIENTRY glConvolutionParameterf( GLenum target, GLenum pname, - GLfloat params ); - -GLAPI void GLAPIENTRY glConvolutionParameterfv( GLenum target, GLenum pname, - const GLfloat *params ); - -GLAPI void GLAPIENTRY glConvolutionParameteri( GLenum target, GLenum pname, - GLint params ); - -GLAPI void GLAPIENTRY glConvolutionParameteriv( GLenum target, GLenum pname, - const GLint *params ); - -GLAPI void GLAPIENTRY glCopyConvolutionFilter1D( GLenum target, - GLenum internalformat, GLint x, GLint y, GLsizei width ); - -GLAPI void GLAPIENTRY glCopyConvolutionFilter2D( GLenum target, - GLenum internalformat, GLint x, GLint y, GLsizei width, - GLsizei height); - -GLAPI void GLAPIENTRY glGetConvolutionFilter( GLenum target, GLenum format, - GLenum type, GLvoid *image ); - -GLAPI void GLAPIENTRY glGetConvolutionParameterfv( GLenum target, GLenum pname, - GLfloat *params ); - -GLAPI void GLAPIENTRY glGetConvolutionParameteriv( GLenum target, GLenum pname, - GLint *params ); - -GLAPI void GLAPIENTRY glSeparableFilter2D( GLenum target, - GLenum internalformat, GLsizei width, GLsizei height, GLenum format, - GLenum type, const GLvoid *row, const GLvoid *column ); - -GLAPI void GLAPIENTRY glGetSeparableFilter( GLenum target, GLenum format, - GLenum type, GLvoid *row, GLvoid *column, GLvoid *span ); - -typedef void (APIENTRYP PFNGLBLENDCOLORPROC) (GLclampf red, GLclampf green, GLclampf blue, GLclampf alpha); -typedef void (APIENTRYP PFNGLBLENDEQUATIONPROC) (GLenum mode); -typedef void (APIENTRYP PFNGLCOLORTABLEPROC) (GLenum target, GLenum internalformat, GLsizei width, GLenum format, GLenum type, const GLvoid *table); -typedef void (APIENTRYP PFNGLCOLORTABLEPARAMETERFVPROC) (GLenum target, GLenum pname, const GLfloat *params); -typedef void (APIENTRYP PFNGLCOLORTABLEPARAMETERIVPROC) (GLenum target, GLenum pname, const GLint *params); -typedef void (APIENTRYP PFNGLCOPYCOLORTABLEPROC) (GLenum target, GLenum internalformat, GLint x, GLint y, GLsizei width); -typedef void (APIENTRYP PFNGLGETCOLORTABLEPROC) (GLenum target, GLenum format, GLenum type, GLvoid *table); -typedef void (APIENTRYP PFNGLGETCOLORTABLEPARAMETERFVPROC) (GLenum target, GLenum pname, GLfloat *params); -typedef void (APIENTRYP PFNGLGETCOLORTABLEPARAMETERIVPROC) (GLenum target, GLenum pname, GLint *params); -typedef void (APIENTRYP PFNGLCOLORSUBTABLEPROC) (GLenum target, GLsizei start, GLsizei count, GLenum format, GLenum type, const GLvoid *data); -typedef void (APIENTRYP PFNGLCOPYCOLORSUBTABLEPROC) (GLenum target, GLsizei start, GLint x, GLint y, GLsizei width); -typedef void (APIENTRYP PFNGLCONVOLUTIONFILTER1DPROC) (GLenum target, GLenum internalformat, GLsizei width, GLenum format, GLenum type, const GLvoid *image); -typedef void (APIENTRYP PFNGLCONVOLUTIONFILTER2DPROC) (GLenum target, GLenum internalformat, GLsizei width, GLsizei height, GLenum format, GLenum type, const GLvoid *image); -typedef void (APIENTRYP PFNGLCONVOLUTIONPARAMETERFPROC) (GLenum target, GLenum pname, GLfloat params); -typedef void (APIENTRYP PFNGLCONVOLUTIONPARAMETERFVPROC) (GLenum target, GLenum pname, const GLfloat *params); -typedef void (APIENTRYP PFNGLCONVOLUTIONPARAMETERIPROC) (GLenum target, GLenum pname, GLint params); -typedef void (APIENTRYP PFNGLCONVOLUTIONPARAMETERIVPROC) (GLenum target, GLenum pname, const GLint *params); -typedef void (APIENTRYP PFNGLCOPYCONVOLUTIONFILTER1DPROC) (GLenum target, GLenum internalformat, GLint x, GLint y, GLsizei width); -typedef void (APIENTRYP PFNGLCOPYCONVOLUTIONFILTER2DPROC) (GLenum target, GLenum internalformat, GLint x, GLint y, GLsizei width, GLsizei height); -typedef void (APIENTRYP PFNGLGETCONVOLUTIONFILTERPROC) (GLenum target, GLenum format, GLenum type, GLvoid *image); -typedef void (APIENTRYP PFNGLGETCONVOLUTIONPARAMETERFVPROC) (GLenum target, GLenum pname, GLfloat *params); -typedef void (APIENTRYP PFNGLGETCONVOLUTIONPARAMETERIVPROC) (GLenum target, GLenum pname, GLint *params); -typedef void (APIENTRYP PFNGLGETSEPARABLEFILTERPROC) (GLenum target, GLenum format, GLenum type, GLvoid *row, GLvoid *column, GLvoid *span); -typedef void (APIENTRYP PFNGLSEPARABLEFILTER2DPROC) (GLenum target, GLenum internalformat, GLsizei width, GLsizei height, GLenum format, GLenum type, const GLvoid *row, const GLvoid *column); -typedef void (APIENTRYP PFNGLGETHISTOGRAMPROC) (GLenum target, GLboolean reset, GLenum format, GLenum type, GLvoid *values); -typedef void (APIENTRYP PFNGLGETHISTOGRAMPARAMETERFVPROC) (GLenum target, GLenum pname, GLfloat *params); -typedef void (APIENTRYP PFNGLGETHISTOGRAMPARAMETERIVPROC) (GLenum target, GLenum pname, GLint *params); -typedef void (APIENTRYP PFNGLGETMINMAXPROC) (GLenum target, GLboolean reset, GLenum format, GLenum type, GLvoid *values); -typedef void (APIENTRYP PFNGLGETMINMAXPARAMETERFVPROC) (GLenum target, GLenum pname, GLfloat *params); -typedef void (APIENTRYP PFNGLGETMINMAXPARAMETERIVPROC) (GLenum target, GLenum pname, GLint *params); -typedef void (APIENTRYP PFNGLHISTOGRAMPROC) (GLenum target, GLsizei width, GLenum internalformat, GLboolean sink); -typedef void (APIENTRYP PFNGLMINMAXPROC) (GLenum target, GLenum internalformat, GLboolean sink); -typedef void (APIENTRYP PFNGLRESETHISTOGRAMPROC) (GLenum target); -typedef void (APIENTRYP PFNGLRESETMINMAXPROC) (GLenum target); - - - -/* - * OpenGL 1.3 - */ - -/* multitexture */ -#define GL_TEXTURE0 0x84C0 -#define GL_TEXTURE1 0x84C1 -#define GL_TEXTURE2 0x84C2 -#define GL_TEXTURE3 0x84C3 -#define GL_TEXTURE4 0x84C4 -#define GL_TEXTURE5 0x84C5 -#define GL_TEXTURE6 0x84C6 -#define GL_TEXTURE7 0x84C7 -#define GL_TEXTURE8 0x84C8 -#define GL_TEXTURE9 0x84C9 -#define GL_TEXTURE10 0x84CA -#define GL_TEXTURE11 0x84CB -#define GL_TEXTURE12 0x84CC -#define GL_TEXTURE13 0x84CD -#define GL_TEXTURE14 0x84CE -#define GL_TEXTURE15 0x84CF -#define GL_TEXTURE16 0x84D0 -#define GL_TEXTURE17 0x84D1 -#define GL_TEXTURE18 0x84D2 -#define GL_TEXTURE19 0x84D3 -#define GL_TEXTURE20 0x84D4 -#define GL_TEXTURE21 0x84D5 -#define GL_TEXTURE22 0x84D6 -#define GL_TEXTURE23 0x84D7 -#define GL_TEXTURE24 0x84D8 -#define GL_TEXTURE25 0x84D9 -#define GL_TEXTURE26 0x84DA -#define GL_TEXTURE27 0x84DB -#define GL_TEXTURE28 0x84DC -#define GL_TEXTURE29 0x84DD -#define GL_TEXTURE30 0x84DE -#define GL_TEXTURE31 0x84DF -#define GL_ACTIVE_TEXTURE 0x84E0 -#define GL_CLIENT_ACTIVE_TEXTURE 0x84E1 -#define GL_MAX_TEXTURE_UNITS 0x84E2 -/* texture_cube_map */ -#define GL_NORMAL_MAP 0x8511 -#define GL_REFLECTION_MAP 0x8512 -#define GL_TEXTURE_CUBE_MAP 0x8513 -#define GL_TEXTURE_BINDING_CUBE_MAP 0x8514 -#define GL_TEXTURE_CUBE_MAP_POSITIVE_X 0x8515 -#define GL_TEXTURE_CUBE_MAP_NEGATIVE_X 0x8516 -#define GL_TEXTURE_CUBE_MAP_POSITIVE_Y 0x8517 -#define GL_TEXTURE_CUBE_MAP_NEGATIVE_Y 0x8518 -#define GL_TEXTURE_CUBE_MAP_POSITIVE_Z 0x8519 -#define GL_TEXTURE_CUBE_MAP_NEGATIVE_Z 0x851A -#define GL_PROXY_TEXTURE_CUBE_MAP 0x851B -#define GL_MAX_CUBE_MAP_TEXTURE_SIZE 0x851C -/* texture_compression */ -#define GL_COMPRESSED_ALPHA 0x84E9 -#define GL_COMPRESSED_LUMINANCE 0x84EA -#define GL_COMPRESSED_LUMINANCE_ALPHA 0x84EB -#define GL_COMPRESSED_INTENSITY 0x84EC -#define GL_COMPRESSED_RGB 0x84ED -#define GL_COMPRESSED_RGBA 0x84EE -#define GL_TEXTURE_COMPRESSION_HINT 0x84EF -#define GL_TEXTURE_COMPRESSED_IMAGE_SIZE 0x86A0 -#define GL_TEXTURE_COMPRESSED 0x86A1 -#define GL_NUM_COMPRESSED_TEXTURE_FORMATS 0x86A2 -#define GL_COMPRESSED_TEXTURE_FORMATS 0x86A3 -/* multisample */ -#define GL_MULTISAMPLE 0x809D -#define GL_SAMPLE_ALPHA_TO_COVERAGE 0x809E -#define GL_SAMPLE_ALPHA_TO_ONE 0x809F -#define GL_SAMPLE_COVERAGE 0x80A0 -#define GL_SAMPLE_BUFFERS 0x80A8 -#define GL_SAMPLES 0x80A9 -#define GL_SAMPLE_COVERAGE_VALUE 0x80AA -#define GL_SAMPLE_COVERAGE_INVERT 0x80AB -#define GL_MULTISAMPLE_BIT 0x20000000 -/* transpose_matrix */ -#define GL_TRANSPOSE_MODELVIEW_MATRIX 0x84E3 -#define GL_TRANSPOSE_PROJECTION_MATRIX 0x84E4 -#define GL_TRANSPOSE_TEXTURE_MATRIX 0x84E5 -#define GL_TRANSPOSE_COLOR_MATRIX 0x84E6 -/* texture_env_combine */ -#define GL_COMBINE 0x8570 -#define GL_COMBINE_RGB 0x8571 -#define GL_COMBINE_ALPHA 0x8572 -#define GL_SOURCE0_RGB 0x8580 -#define GL_SOURCE1_RGB 0x8581 -#define GL_SOURCE2_RGB 0x8582 -#define GL_SOURCE0_ALPHA 0x8588 -#define GL_SOURCE1_ALPHA 0x8589 -#define GL_SOURCE2_ALPHA 0x858A -#define GL_OPERAND0_RGB 0x8590 -#define GL_OPERAND1_RGB 0x8591 -#define GL_OPERAND2_RGB 0x8592 -#define GL_OPERAND0_ALPHA 0x8598 -#define GL_OPERAND1_ALPHA 0x8599 -#define GL_OPERAND2_ALPHA 0x859A -#define GL_RGB_SCALE 0x8573 -#define GL_ADD_SIGNED 0x8574 -#define GL_INTERPOLATE 0x8575 -#define GL_SUBTRACT 0x84E7 -#define GL_CONSTANT 0x8576 -#define GL_PRIMARY_COLOR 0x8577 -#define GL_PREVIOUS 0x8578 -/* texture_env_dot3 */ -#define GL_DOT3_RGB 0x86AE -#define GL_DOT3_RGBA 0x86AF -/* texture_border_clamp */ -#define GL_CLAMP_TO_BORDER 0x812D - -GLAPI void GLAPIENTRY glActiveTexture( GLenum texture ); - -GLAPI void GLAPIENTRY glClientActiveTexture( GLenum texture ); - -GLAPI void GLAPIENTRY glCompressedTexImage1D( GLenum target, GLint level, GLenum internalformat, GLsizei width, GLint border, GLsizei imageSize, const GLvoid *data ); - -GLAPI void GLAPIENTRY glCompressedTexImage2D( GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLint border, GLsizei imageSize, const GLvoid *data ); - -GLAPI void GLAPIENTRY glCompressedTexImage3D( GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLsizei imageSize, const GLvoid *data ); - -GLAPI void GLAPIENTRY glCompressedTexSubImage1D( GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLsizei imageSize, const GLvoid *data ); - -GLAPI void GLAPIENTRY glCompressedTexSubImage2D( GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLsizei imageSize, const GLvoid *data ); - -GLAPI void GLAPIENTRY glCompressedTexSubImage3D( GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLsizei imageSize, const GLvoid *data ); - -GLAPI void GLAPIENTRY glGetCompressedTexImage( GLenum target, GLint lod, GLvoid *img ); - -GLAPI void GLAPIENTRY glMultiTexCoord1d( GLenum target, GLdouble s ); - -GLAPI void GLAPIENTRY glMultiTexCoord1dv( GLenum target, const GLdouble *v ); - -GLAPI void GLAPIENTRY glMultiTexCoord1f( GLenum target, GLfloat s ); - -GLAPI void GLAPIENTRY glMultiTexCoord1fv( GLenum target, const GLfloat *v ); - -GLAPI void GLAPIENTRY glMultiTexCoord1i( GLenum target, GLint s ); - -GLAPI void GLAPIENTRY glMultiTexCoord1iv( GLenum target, const GLint *v ); - -GLAPI void GLAPIENTRY glMultiTexCoord1s( GLenum target, GLshort s ); - -GLAPI void GLAPIENTRY glMultiTexCoord1sv( GLenum target, const GLshort *v ); - -GLAPI void GLAPIENTRY glMultiTexCoord2d( GLenum target, GLdouble s, GLdouble t ); - -GLAPI void GLAPIENTRY glMultiTexCoord2dv( GLenum target, const GLdouble *v ); - -GLAPI void GLAPIENTRY glMultiTexCoord2f( GLenum target, GLfloat s, GLfloat t ); - -GLAPI void GLAPIENTRY glMultiTexCoord2fv( GLenum target, const GLfloat *v ); - -GLAPI void GLAPIENTRY glMultiTexCoord2i( GLenum target, GLint s, GLint t ); - -GLAPI void GLAPIENTRY glMultiTexCoord2iv( GLenum target, const GLint *v ); - -GLAPI void GLAPIENTRY glMultiTexCoord2s( GLenum target, GLshort s, GLshort t ); - -GLAPI void GLAPIENTRY glMultiTexCoord2sv( GLenum target, const GLshort *v ); - -GLAPI void GLAPIENTRY glMultiTexCoord3d( GLenum target, GLdouble s, GLdouble t, GLdouble r ); - -GLAPI void GLAPIENTRY glMultiTexCoord3dv( GLenum target, const GLdouble *v ); - -GLAPI void GLAPIENTRY glMultiTexCoord3f( GLenum target, GLfloat s, GLfloat t, GLfloat r ); - -GLAPI void GLAPIENTRY glMultiTexCoord3fv( GLenum target, const GLfloat *v ); - -GLAPI void GLAPIENTRY glMultiTexCoord3i( GLenum target, GLint s, GLint t, GLint r ); - -GLAPI void GLAPIENTRY glMultiTexCoord3iv( GLenum target, const GLint *v ); - -GLAPI void GLAPIENTRY glMultiTexCoord3s( GLenum target, GLshort s, GLshort t, GLshort r ); - -GLAPI void GLAPIENTRY glMultiTexCoord3sv( GLenum target, const GLshort *v ); - -GLAPI void GLAPIENTRY glMultiTexCoord4d( GLenum target, GLdouble s, GLdouble t, GLdouble r, GLdouble q ); - -GLAPI void GLAPIENTRY glMultiTexCoord4dv( GLenum target, const GLdouble *v ); - -GLAPI void GLAPIENTRY glMultiTexCoord4f( GLenum target, GLfloat s, GLfloat t, GLfloat r, GLfloat q ); - -GLAPI void GLAPIENTRY glMultiTexCoord4fv( GLenum target, const GLfloat *v ); - -GLAPI void GLAPIENTRY glMultiTexCoord4i( GLenum target, GLint s, GLint t, GLint r, GLint q ); - -GLAPI void GLAPIENTRY glMultiTexCoord4iv( GLenum target, const GLint *v ); - -GLAPI void GLAPIENTRY glMultiTexCoord4s( GLenum target, GLshort s, GLshort t, GLshort r, GLshort q ); - -GLAPI void GLAPIENTRY glMultiTexCoord4sv( GLenum target, const GLshort *v ); - - -GLAPI void GLAPIENTRY glLoadTransposeMatrixd( const GLdouble m[16] ); - -GLAPI void GLAPIENTRY glLoadTransposeMatrixf( const GLfloat m[16] ); - -GLAPI void GLAPIENTRY glMultTransposeMatrixd( const GLdouble m[16] ); - -GLAPI void GLAPIENTRY glMultTransposeMatrixf( const GLfloat m[16] ); - -GLAPI void GLAPIENTRY glSampleCoverage( GLclampf value, GLboolean invert ); - -typedef void (APIENTRYP PFNGLACTIVETEXTUREPROC) (GLenum texture); -typedef void (APIENTRYP PFNGLCLIENTACTIVETEXTUREPROC) (GLenum texture); -typedef void (APIENTRYP PFNGLMULTITEXCOORD1DPROC) (GLenum target, GLdouble s); -typedef void (APIENTRYP PFNGLMULTITEXCOORD1DVPROC) (GLenum target, const GLdouble *v); -typedef void (APIENTRYP PFNGLMULTITEXCOORD1FPROC) (GLenum target, GLfloat s); -typedef void (APIENTRYP PFNGLMULTITEXCOORD1FVPROC) (GLenum target, const GLfloat *v); -typedef void (APIENTRYP PFNGLMULTITEXCOORD1IPROC) (GLenum target, GLint s); -typedef void (APIENTRYP PFNGLMULTITEXCOORD1IVPROC) (GLenum target, const GLint *v); -typedef void (APIENTRYP PFNGLMULTITEXCOORD1SPROC) (GLenum target, GLshort s); -typedef void (APIENTRYP PFNGLMULTITEXCOORD1SVPROC) (GLenum target, const GLshort *v); -typedef void (APIENTRYP PFNGLMULTITEXCOORD2DPROC) (GLenum target, GLdouble s, GLdouble t); -typedef void (APIENTRYP PFNGLMULTITEXCOORD2DVPROC) (GLenum target, const GLdouble *v); -typedef void (APIENTRYP PFNGLMULTITEXCOORD2FPROC) (GLenum target, GLfloat s, GLfloat t); -typedef void (APIENTRYP PFNGLMULTITEXCOORD2FVPROC) (GLenum target, const GLfloat *v); -typedef void (APIENTRYP PFNGLMULTITEXCOORD2IPROC) (GLenum target, GLint s, GLint t); -typedef void (APIENTRYP PFNGLMULTITEXCOORD2IVPROC) (GLenum target, const GLint *v); -typedef void (APIENTRYP PFNGLMULTITEXCOORD2SPROC) (GLenum target, GLshort s, GLshort t); -typedef void (APIENTRYP PFNGLMULTITEXCOORD2SVPROC) (GLenum target, const GLshort *v); -typedef void (APIENTRYP PFNGLMULTITEXCOORD3DPROC) (GLenum target, GLdouble s, GLdouble t, GLdouble r); -typedef void (APIENTRYP PFNGLMULTITEXCOORD3DVPROC) (GLenum target, const GLdouble *v); -typedef void (APIENTRYP PFNGLMULTITEXCOORD3FPROC) (GLenum target, GLfloat s, GLfloat t, GLfloat r); -typedef void (APIENTRYP PFNGLMULTITEXCOORD3FVPROC) (GLenum target, const GLfloat *v); -typedef void (APIENTRYP PFNGLMULTITEXCOORD3IPROC) (GLenum target, GLint s, GLint t, GLint r); -typedef void (APIENTRYP PFNGLMULTITEXCOORD3IVPROC) (GLenum target, const GLint *v); -typedef void (APIENTRYP PFNGLMULTITEXCOORD3SPROC) (GLenum target, GLshort s, GLshort t, GLshort r); -typedef void (APIENTRYP PFNGLMULTITEXCOORD3SVPROC) (GLenum target, const GLshort *v); -typedef void (APIENTRYP PFNGLMULTITEXCOORD4DPROC) (GLenum target, GLdouble s, GLdouble t, GLdouble r, GLdouble q); -typedef void (APIENTRYP PFNGLMULTITEXCOORD4DVPROC) (GLenum target, const GLdouble *v); -typedef void (APIENTRYP PFNGLMULTITEXCOORD4FPROC) (GLenum target, GLfloat s, GLfloat t, GLfloat r, GLfloat q); -typedef void (APIENTRYP PFNGLMULTITEXCOORD4FVPROC) (GLenum target, const GLfloat *v); -typedef void (APIENTRYP PFNGLMULTITEXCOORD4IPROC) (GLenum target, GLint s, GLint t, GLint r, GLint q); -typedef void (APIENTRYP PFNGLMULTITEXCOORD4IVPROC) (GLenum target, const GLint *v); -typedef void (APIENTRYP PFNGLMULTITEXCOORD4SPROC) (GLenum target, GLshort s, GLshort t, GLshort r, GLshort q); -typedef void (APIENTRYP PFNGLMULTITEXCOORD4SVPROC) (GLenum target, const GLshort *v); -typedef void (APIENTRYP PFNGLLOADTRANSPOSEMATRIXFPROC) (const GLfloat *m); -typedef void (APIENTRYP PFNGLLOADTRANSPOSEMATRIXDPROC) (const GLdouble *m); -typedef void (APIENTRYP PFNGLMULTTRANSPOSEMATRIXFPROC) (const GLfloat *m); -typedef void (APIENTRYP PFNGLMULTTRANSPOSEMATRIXDPROC) (const GLdouble *m); -typedef void (APIENTRYP PFNGLSAMPLECOVERAGEPROC) (GLclampf value, GLboolean invert); -typedef void (APIENTRYP PFNGLCOMPRESSEDTEXIMAGE3DPROC) (GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLsizei imageSize, const GLvoid *data); -typedef void (APIENTRYP PFNGLCOMPRESSEDTEXIMAGE2DPROC) (GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLint border, GLsizei imageSize, const GLvoid *data); -typedef void (APIENTRYP PFNGLCOMPRESSEDTEXIMAGE1DPROC) (GLenum target, GLint level, GLenum internalformat, GLsizei width, GLint border, GLsizei imageSize, const GLvoid *data); -typedef void (APIENTRYP PFNGLCOMPRESSEDTEXSUBIMAGE3DPROC) (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLsizei imageSize, const GLvoid *data); -typedef void (APIENTRYP PFNGLCOMPRESSEDTEXSUBIMAGE2DPROC) (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLsizei imageSize, const GLvoid *data); -typedef void (APIENTRYP PFNGLCOMPRESSEDTEXSUBIMAGE1DPROC) (GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLsizei imageSize, const GLvoid *data); -typedef void (APIENTRYP PFNGLGETCOMPRESSEDTEXIMAGEPROC) (GLenum target, GLint level, void *img); - - -/* - * GL_ARB_multitexture (ARB extension 1 and OpenGL 1.2.1) - */ -#ifndef GL_ARB_multitexture -#define GL_ARB_multitexture 1 - -#define GL_TEXTURE0_ARB 0x84C0 -#define GL_TEXTURE1_ARB 0x84C1 -#define GL_TEXTURE2_ARB 0x84C2 -#define GL_TEXTURE3_ARB 0x84C3 -#define GL_TEXTURE4_ARB 0x84C4 -#define GL_TEXTURE5_ARB 0x84C5 -#define GL_TEXTURE6_ARB 0x84C6 -#define GL_TEXTURE7_ARB 0x84C7 -#define GL_TEXTURE8_ARB 0x84C8 -#define GL_TEXTURE9_ARB 0x84C9 -#define GL_TEXTURE10_ARB 0x84CA -#define GL_TEXTURE11_ARB 0x84CB -#define GL_TEXTURE12_ARB 0x84CC -#define GL_TEXTURE13_ARB 0x84CD -#define GL_TEXTURE14_ARB 0x84CE -#define GL_TEXTURE15_ARB 0x84CF -#define GL_TEXTURE16_ARB 0x84D0 -#define GL_TEXTURE17_ARB 0x84D1 -#define GL_TEXTURE18_ARB 0x84D2 -#define GL_TEXTURE19_ARB 0x84D3 -#define GL_TEXTURE20_ARB 0x84D4 -#define GL_TEXTURE21_ARB 0x84D5 -#define GL_TEXTURE22_ARB 0x84D6 -#define GL_TEXTURE23_ARB 0x84D7 -#define GL_TEXTURE24_ARB 0x84D8 -#define GL_TEXTURE25_ARB 0x84D9 -#define GL_TEXTURE26_ARB 0x84DA -#define GL_TEXTURE27_ARB 0x84DB -#define GL_TEXTURE28_ARB 0x84DC -#define GL_TEXTURE29_ARB 0x84DD -#define GL_TEXTURE30_ARB 0x84DE -#define GL_TEXTURE31_ARB 0x84DF -#define GL_ACTIVE_TEXTURE_ARB 0x84E0 -#define GL_CLIENT_ACTIVE_TEXTURE_ARB 0x84E1 -#define GL_MAX_TEXTURE_UNITS_ARB 0x84E2 - -GLAPI void GLAPIENTRY glActiveTextureARB(GLenum texture); -GLAPI void GLAPIENTRY glClientActiveTextureARB(GLenum texture); -GLAPI void GLAPIENTRY glMultiTexCoord1dARB(GLenum target, GLdouble s); -GLAPI void GLAPIENTRY glMultiTexCoord1dvARB(GLenum target, const GLdouble *v); -GLAPI void GLAPIENTRY glMultiTexCoord1fARB(GLenum target, GLfloat s); -GLAPI void GLAPIENTRY glMultiTexCoord1fvARB(GLenum target, const GLfloat *v); -GLAPI void GLAPIENTRY glMultiTexCoord1iARB(GLenum target, GLint s); -GLAPI void GLAPIENTRY glMultiTexCoord1ivARB(GLenum target, const GLint *v); -GLAPI void GLAPIENTRY glMultiTexCoord1sARB(GLenum target, GLshort s); -GLAPI void GLAPIENTRY glMultiTexCoord1svARB(GLenum target, const GLshort *v); -GLAPI void GLAPIENTRY glMultiTexCoord2dARB(GLenum target, GLdouble s, GLdouble t); -GLAPI void GLAPIENTRY glMultiTexCoord2dvARB(GLenum target, const GLdouble *v); -GLAPI void GLAPIENTRY glMultiTexCoord2fARB(GLenum target, GLfloat s, GLfloat t); -GLAPI void GLAPIENTRY glMultiTexCoord2fvARB(GLenum target, const GLfloat *v); -GLAPI void GLAPIENTRY glMultiTexCoord2iARB(GLenum target, GLint s, GLint t); -GLAPI void GLAPIENTRY glMultiTexCoord2ivARB(GLenum target, const GLint *v); -GLAPI void GLAPIENTRY glMultiTexCoord2sARB(GLenum target, GLshort s, GLshort t); -GLAPI void GLAPIENTRY glMultiTexCoord2svARB(GLenum target, const GLshort *v); -GLAPI void GLAPIENTRY glMultiTexCoord3dARB(GLenum target, GLdouble s, GLdouble t, GLdouble r); -GLAPI void GLAPIENTRY glMultiTexCoord3dvARB(GLenum target, const GLdouble *v); -GLAPI void GLAPIENTRY glMultiTexCoord3fARB(GLenum target, GLfloat s, GLfloat t, GLfloat r); -GLAPI void GLAPIENTRY glMultiTexCoord3fvARB(GLenum target, const GLfloat *v); -GLAPI void GLAPIENTRY glMultiTexCoord3iARB(GLenum target, GLint s, GLint t, GLint r); -GLAPI void GLAPIENTRY glMultiTexCoord3ivARB(GLenum target, const GLint *v); -GLAPI void GLAPIENTRY glMultiTexCoord3sARB(GLenum target, GLshort s, GLshort t, GLshort r); -GLAPI void GLAPIENTRY glMultiTexCoord3svARB(GLenum target, const GLshort *v); -GLAPI void GLAPIENTRY glMultiTexCoord4dARB(GLenum target, GLdouble s, GLdouble t, GLdouble r, GLdouble q); -GLAPI void GLAPIENTRY glMultiTexCoord4dvARB(GLenum target, const GLdouble *v); -GLAPI void GLAPIENTRY glMultiTexCoord4fARB(GLenum target, GLfloat s, GLfloat t, GLfloat r, GLfloat q); -GLAPI void GLAPIENTRY glMultiTexCoord4fvARB(GLenum target, const GLfloat *v); -GLAPI void GLAPIENTRY glMultiTexCoord4iARB(GLenum target, GLint s, GLint t, GLint r, GLint q); -GLAPI void GLAPIENTRY glMultiTexCoord4ivARB(GLenum target, const GLint *v); -GLAPI void GLAPIENTRY glMultiTexCoord4sARB(GLenum target, GLshort s, GLshort t, GLshort r, GLshort q); -GLAPI void GLAPIENTRY glMultiTexCoord4svARB(GLenum target, const GLshort *v); - -typedef void (APIENTRYP PFNGLACTIVETEXTUREARBPROC) (GLenum texture); -typedef void (APIENTRYP PFNGLCLIENTACTIVETEXTUREARBPROC) (GLenum texture); -typedef void (APIENTRYP PFNGLMULTITEXCOORD1DARBPROC) (GLenum target, GLdouble s); -typedef void (APIENTRYP PFNGLMULTITEXCOORD1DVARBPROC) (GLenum target, const GLdouble *v); -typedef void (APIENTRYP PFNGLMULTITEXCOORD1FARBPROC) (GLenum target, GLfloat s); -typedef void (APIENTRYP PFNGLMULTITEXCOORD1FVARBPROC) (GLenum target, const GLfloat *v); -typedef void (APIENTRYP PFNGLMULTITEXCOORD1IARBPROC) (GLenum target, GLint s); -typedef void (APIENTRYP PFNGLMULTITEXCOORD1IVARBPROC) (GLenum target, const GLint *v); -typedef void (APIENTRYP PFNGLMULTITEXCOORD1SARBPROC) (GLenum target, GLshort s); -typedef void (APIENTRYP PFNGLMULTITEXCOORD1SVARBPROC) (GLenum target, const GLshort *v); -typedef void (APIENTRYP PFNGLMULTITEXCOORD2DARBPROC) (GLenum target, GLdouble s, GLdouble t); -typedef void (APIENTRYP PFNGLMULTITEXCOORD2DVARBPROC) (GLenum target, const GLdouble *v); -typedef void (APIENTRYP PFNGLMULTITEXCOORD2FARBPROC) (GLenum target, GLfloat s, GLfloat t); -typedef void (APIENTRYP PFNGLMULTITEXCOORD2FVARBPROC) (GLenum target, const GLfloat *v); -typedef void (APIENTRYP PFNGLMULTITEXCOORD2IARBPROC) (GLenum target, GLint s, GLint t); -typedef void (APIENTRYP PFNGLMULTITEXCOORD2IVARBPROC) (GLenum target, const GLint *v); -typedef void (APIENTRYP PFNGLMULTITEXCOORD2SARBPROC) (GLenum target, GLshort s, GLshort t); -typedef void (APIENTRYP PFNGLMULTITEXCOORD2SVARBPROC) (GLenum target, const GLshort *v); -typedef void (APIENTRYP PFNGLMULTITEXCOORD3DARBPROC) (GLenum target, GLdouble s, GLdouble t, GLdouble r); -typedef void (APIENTRYP PFNGLMULTITEXCOORD3DVARBPROC) (GLenum target, const GLdouble *v); -typedef void (APIENTRYP PFNGLMULTITEXCOORD3FARBPROC) (GLenum target, GLfloat s, GLfloat t, GLfloat r); -typedef void (APIENTRYP PFNGLMULTITEXCOORD3FVARBPROC) (GLenum target, const GLfloat *v); -typedef void (APIENTRYP PFNGLMULTITEXCOORD3IARBPROC) (GLenum target, GLint s, GLint t, GLint r); -typedef void (APIENTRYP PFNGLMULTITEXCOORD3IVARBPROC) (GLenum target, const GLint *v); -typedef void (APIENTRYP PFNGLMULTITEXCOORD3SARBPROC) (GLenum target, GLshort s, GLshort t, GLshort r); -typedef void (APIENTRYP PFNGLMULTITEXCOORD3SVARBPROC) (GLenum target, const GLshort *v); -typedef void (APIENTRYP PFNGLMULTITEXCOORD4DARBPROC) (GLenum target, GLdouble s, GLdouble t, GLdouble r, GLdouble q); -typedef void (APIENTRYP PFNGLMULTITEXCOORD4DVARBPROC) (GLenum target, const GLdouble *v); -typedef void (APIENTRYP PFNGLMULTITEXCOORD4FARBPROC) (GLenum target, GLfloat s, GLfloat t, GLfloat r, GLfloat q); -typedef void (APIENTRYP PFNGLMULTITEXCOORD4FVARBPROC) (GLenum target, const GLfloat *v); -typedef void (APIENTRYP PFNGLMULTITEXCOORD4IARBPROC) (GLenum target, GLint s, GLint t, GLint r, GLint q); -typedef void (APIENTRYP PFNGLMULTITEXCOORD4IVARBPROC) (GLenum target, const GLint *v); -typedef void (APIENTRYP PFNGLMULTITEXCOORD4SARBPROC) (GLenum target, GLshort s, GLshort t, GLshort r, GLshort q); -typedef void (APIENTRYP PFNGLMULTITEXCOORD4SVARBPROC) (GLenum target, const GLshort *v); - -#endif /* GL_ARB_multitexture */ - - - -/* - * Define this token if you want "old-style" header file behaviour (extensions - * defined in gl.h). Otherwise, extensions will be included from glext.h. - */ -#if defined(GL_GLEXT_LEGACY) - -/* All extensions that used to be here are now found in glext.h */ - -#else /* GL_GLEXT_LEGACY */ - -#include - -#endif /* GL_GLEXT_LEGACY */ - - - -#if GL_ARB_shader_objects - -#ifndef GL_MESA_shader_debug -#define GL_MESA_shader_debug 1 - -#define GL_DEBUG_OBJECT_MESA 0x8759 -#define GL_DEBUG_PRINT_MESA 0x875A -#define GL_DEBUG_ASSERT_MESA 0x875B - -GLAPI GLhandleARB GLAPIENTRY glCreateDebugObjectMESA (void); -GLAPI void GLAPIENTRY glClearDebugLogMESA (GLhandleARB obj, GLenum logType, GLenum shaderType); -GLAPI void GLAPIENTRY glGetDebugLogMESA (GLhandleARB obj, GLenum logType, GLenum shaderType, GLsizei maxLength, - GLsizei *length, GLcharARB *debugLog); -GLAPI GLsizei GLAPIENTRY glGetDebugLogLengthMESA (GLhandleARB obj, GLenum logType, GLenum shaderType); - -#endif /* GL_MESA_shader_debug */ - -#endif /* GL_ARB_shader_objects */ - - -/* - * ???. GL_MESA_packed_depth_stencil - * XXX obsolete - */ -#ifndef GL_MESA_packed_depth_stencil -#define GL_MESA_packed_depth_stencil 1 - -#define GL_DEPTH_STENCIL_MESA 0x8750 -#define GL_UNSIGNED_INT_24_8_MESA 0x8751 -#define GL_UNSIGNED_INT_8_24_REV_MESA 0x8752 -#define GL_UNSIGNED_SHORT_15_1_MESA 0x8753 -#define GL_UNSIGNED_SHORT_1_15_REV_MESA 0x8754 - -#endif /* GL_MESA_packed_depth_stencil */ - - -#ifndef GL_MESA_program_debug -#define GL_MESA_program_debug 1 - -#define GL_FRAGMENT_PROGRAM_POSITION_MESA 0x8bb0 -#define GL_FRAGMENT_PROGRAM_CALLBACK_MESA 0x8bb1 -#define GL_FRAGMENT_PROGRAM_CALLBACK_FUNC_MESA 0x8bb2 -#define GL_FRAGMENT_PROGRAM_CALLBACK_DATA_MESA 0x8bb3 -#define GL_VERTEX_PROGRAM_POSITION_MESA 0x8bb4 -#define GL_VERTEX_PROGRAM_CALLBACK_MESA 0x8bb5 -#define GL_VERTEX_PROGRAM_CALLBACK_FUNC_MESA 0x8bb6 -#define GL_VERTEX_PROGRAM_CALLBACK_DATA_MESA 0x8bb7 - -typedef void (*GLprogramcallbackMESA)(GLenum target, GLvoid *data); - -GLAPI void GLAPIENTRY glProgramCallbackMESA(GLenum target, GLprogramcallbackMESA callback, GLvoid *data); - -GLAPI void GLAPIENTRY glGetProgramRegisterfvMESA(GLenum target, GLsizei len, const GLubyte *name, GLfloat *v); - -#endif /* GL_MESA_program_debug */ - - -#ifndef GL_ATI_blend_equation_separate -#define GL_ATI_blend_equation_separate 1 - -#define GL_ALPHA_BLEND_EQUATION_ATI 0x883D - -GLAPI void GLAPIENTRY glBlendEquationSeparateATI( GLenum modeRGB, GLenum modeA ); -typedef void (APIENTRYP PFNGLBLENDEQUATIONSEPARATEATIPROC) (GLenum modeRGB, GLenum modeA); - -#endif /* GL_ATI_blend_equation_separate */ - - - -/** - ** NOTE!!!!! If you add new functions to this file, or update - ** glext.h be sure to regenerate the gl_mangle.h file. See comments - ** in that file for details. - **/ - - - -/********************************************************************** - * Begin system-specific stuff - */ -#if defined(PRAGMA_EXPORT_SUPPORTED) -#pragma export off -#endif - -#if defined(macintosh) && PRAGMA_IMPORT_SUPPORTED -#pragma import off -#endif -/* - * End system-specific stuff - **********************************************************************/ - - -#ifdef __cplusplus -} -#endif - -#endif /* __gl_h_ */ diff --git a/include/GL/gl_private.h b/include/GL/gl_private.h deleted file mode 100644 index 31f3ff9..0000000 --- a/include/GL/gl_private.h +++ /dev/null @@ -1,2728 +0,0 @@ -/* - * Mesa 3-D graphics library - * Version: 7.0 - * - * Copyright (C) 1999-2007 Brian Paul All Rights Reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a - * copy of this software and associated documentation files (the "Software"), - * to deal in the Software without restriction, including without limitation - * the rights to use, copy, modify, merge, publish, distribute, sublicense, - * and/or sell copies of the Software, and to permit persons to whom the - * Software is furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included - * in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS - * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL - * BRIAN PAUL BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN - * AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - */ - -#ifndef __gl_private_h_ -#define __gl_private_h_ - -#ifndef GLAPI -#define GLAPI extern -#endif - -#ifndef GLAPIENTRY -#define GLAPIENTRY -#endif - -#ifndef APIENTRY -#define APIENTRY GLAPIENTRY -#endif - -#ifndef APIENTRY -#define APIENTRY GLAPIENTRY -#endif - -/* "P" suffix to be used for a pointer to a function */ -#ifndef APIENTRYP -#define APIENTRYP APIENTRY * -#endif - -#ifndef GLAPIENTRYP -#define GLAPIENTRYP GLAPIENTRY * -#endif - -#ifdef __cplusplus -extern "C" { -#endif - -typedef double GLclampd; /* double precision float in [0,1] */ - -// These two definitions need to be present for Qt 5.5, but removed for Qt 5.3 - -#ifdef __OCPN__ANDROID__ -#if QT_VERSION >= 0x050500 -typedef double GLdouble; /* double precision float */ -#define GL_DOUBLE 0x140A -#endif -#endif - -GLAPI void GLAPIENTRY glPushAttrib( GLbitfield mask ); -GLAPI void GLAPIENTRY glPopAttrib( void ); -GLAPI void GLAPIENTRY glEnd( void ); -GLAPI void GLAPIENTRY glBegin( GLenum mode ); -GLAPI void GLAPIENTRY glLineStipple( GLint factor, GLushort pattern ); - - -GLAPI void GLAPIENTRY glVertex2d( GLdouble x, GLdouble y ); -GLAPI void GLAPIENTRY glVertex2f( GLfloat x, GLfloat y ); -GLAPI void GLAPIENTRY glVertex2i( GLint x, GLint y ); -GLAPI void GLAPIENTRY glVertex3f( GLfloat x, GLfloat y, GLfloat z ); -GLAPI void GLAPIENTRY glVertex3dv( const GLdouble *v ); -GLAPI void GLAPIENTRY glGetDoublev( GLenum pname, GLdouble *params ); - -GLAPI void GLAPIENTRY glColor4ub( GLubyte red, GLubyte green, - GLubyte blue, GLubyte alpha ); -GLAPI void GLAPIENTRY glColor4f( GLfloat red, GLfloat green, - GLfloat blue, GLfloat alpha ); -GLAPI void GLAPIENTRY glColor3f( GLfloat red, GLfloat green, GLfloat blue ); - -GLAPI void GLAPIENTRY glRasterPos2i( GLint x, GLint y ); -GLAPI void GLAPIENTRY glPixelZoom( GLfloat xfactor, GLfloat yfactor ); -GLAPI void GLAPIENTRY glDrawPixels( GLsizei width, GLsizei height, - GLenum format, GLenum type, - const GLvoid *pixels ); -GLAPI void GLAPIENTRY glTexCoord2f( GLfloat s, GLfloat t ); -GLAPI void GLAPIENTRY glTexCoord2i( GLint s, GLint t ); -GLAPI void GLAPIENTRY glColor3ub( GLubyte red, GLubyte green, GLubyte blue ); -GLAPI void GLAPIENTRY glTexEnvi( GLenum target, GLenum pname, GLint param ); -GLAPI void GLAPIENTRY glTexEnvf( GLenum target, GLenum pname, GLfloat param ); - -GLAPI void GLAPIENTRY glMatrixMode( GLenum mode ); - -GLAPI void GLAPIENTRY glOrtho( GLdouble left, GLdouble right, - GLdouble bottom, GLdouble top, - GLdouble near_val, GLdouble far_val ); - -GLAPI void GLAPIENTRY glFrustum( GLdouble left, GLdouble right, - GLdouble bottom, GLdouble top, - GLdouble near_val, GLdouble far_val ); - -GLAPI void GLAPIENTRY glViewport( GLint x, GLint y, - GLsizei width, GLsizei height ); - -GLAPI void GLAPIENTRY glPushMatrix( void ); - -GLAPI void GLAPIENTRY glPopMatrix( void ); - -GLAPI void GLAPIENTRY glLoadIdentity( void ); - -GLAPI void GLAPIENTRY glLoadMatrixd( const GLdouble *m ); -GLAPI void GLAPIENTRY glLoadMatrixf( const GLfloat *m ); - -GLAPI void GLAPIENTRY glMultMatrixd( const GLdouble *m ); -GLAPI void GLAPIENTRY glMultMatrixf( const GLfloat *m ); - -GLAPI void GLAPIENTRY glRotated( GLdouble angle, - GLdouble x, GLdouble y, GLdouble z ); -GLAPI void GLAPIENTRY glRotatef( GLfloat angle, - GLfloat x, GLfloat y, GLfloat z ); - -GLAPI void GLAPIENTRY glScaled( GLdouble x, GLdouble y, GLdouble z ); -GLAPI void GLAPIENTRY glScalef( GLfloat x, GLfloat y, GLfloat z ); - -GLAPI void GLAPIENTRY glTranslated( GLdouble x, GLdouble y, GLdouble z ); -GLAPI void GLAPIENTRY glTranslatef( GLfloat x, GLfloat y, GLfloat z ); - -GLAPI void GLAPIENTRY glReadBuffer( GLenum mode ); -GLAPI void GLAPIENTRY glColor3ubv( const GLubyte *v ); -GLAPI void GLAPIENTRY glColor4fv( const GLfloat *v ); - -/* - * Depth Buffer - */ - -GLAPI void GLAPIENTRY glClearDepth( GLclampd depth ); -GLAPI void GLAPIENTRY glDepthFunc( GLenum func ); -GLAPI void GLAPIENTRY glDepthMask( GLboolean flag ); -GLAPI void GLAPIENTRY glDepthRange( GLclampd near_val, GLclampd far_val ); - -GLAPI void GLAPIENTRY glPolygonStipple( const GLubyte *mask ); - -GLAPI void GLAPIENTRY glNewList( GLuint list, GLenum mode ); -GLAPI void GLAPIENTRY glEndList( void ); -GLAPI void GLAPIENTRY glCallList( GLuint list ); -GLAPI void GLAPIENTRY glDeleteLists( GLuint list, GLsizei range ); -GLAPI GLuint GLAPIENTRY glGenLists( GLsizei range ); - -GLAPI void GLAPIENTRY glGetTexLevelParameteriv( GLenum target, GLint level, - GLenum pname, GLint *params ); - -typedef void (APIENTRYP PFNGLCOMPRESSEDTEXIMAGE2DPROC) (GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLint border, GLsizei imageSize, const GLvoid *data); -typedef void (APIENTRYP PFNGLBUFFERDATAPROC) (GLenum target, GLsizeiptr size, const GLvoid *data, GLenum usage); -typedef void (APIENTRYP PFNGLBINDBUFFERPROC) (GLenum target, GLuint buffer); -typedef void (APIENTRYP PFNGLDELETEBUFFERSPROC) (GLsizei n, const GLuint *buffers); -typedef void (APIENTRYP PFNGLGENBUFFERSPROC) (GLsizei n, GLuint *buffers); -typedef void (APIENTRYP PFNGLDELETERENDERBUFFERSEXTPROC) (GLsizei n, const GLuint *renderbuffers); -typedef void (APIENTRYP PFNGLGENERATEMIPMAPEXTPROC) (GLenum target); -typedef void (APIENTRYP PFNGLGETCOMPRESSEDTEXIMAGEARBPROC) (GLenum target, GLint level, GLvoid *img); -typedef void (APIENTRYP PFNGLDELETERENDERBUFFERSEXTPROC) (GLsizei n, const GLuint *renderbuffers); -typedef void (APIENTRYP PFNGLDELETEFRAMEBUFFERSEXTPROC) (GLsizei n, const GLuint *framebuffers); -typedef GLenum (APIENTRYP PFNGLCHECKFRAMEBUFFERSTATUSEXTPROC) (GLenum target); -typedef void (APIENTRYP PFNGLBINDRENDERBUFFEREXTPROC) (GLenum target, GLuint renderbuffer); -typedef void (APIENTRYP PFNGLRENDERBUFFERSTORAGEEXTPROC) (GLenum target, GLenum internalformat, GLsizei width, GLsizei height); -typedef void (APIENTRYP PFNGLFRAMEBUFFERRENDERBUFFEREXTPROC) (GLenum target, GLenum attachment, GLenum renderbuffertarget, GLuint renderbuffer); -typedef void (APIENTRYP PFNGLGENFRAMEBUFFERSEXTPROC) (GLsizei n, GLuint *framebuffers); -typedef void (APIENTRYP PFNGLGETCOMPRESSEDTEXIMAGEPROC) (GLenum target, GLint level, GLvoid *img); -typedef void (APIENTRYP PFNGLBINDFRAMEBUFFEREXTPROC) (GLenum target, GLuint framebuffer); -typedef void (APIENTRYP PFNGLGENRENDERBUFFERSEXTPROC) (GLsizei n, GLuint *renderbuffers); -typedef void (APIENTRYP PFNGLFRAMEBUFFERTEXTURE2DEXTPROC) (GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level); - -GLAPI void GLAPIENTRY glPushClientAttrib( GLbitfield mask ); /* 1.1 */ -GLAPI void GLAPIENTRY glPopClientAttrib( void ); /* 1.1 */ -GLAPI void GLAPIENTRY glEnableClientState( GLenum cap ); /* 1.1 */ -GLAPI void GLAPIENTRY glDisableClientState( GLenum cap ); /* 1.1 */ - -/* - * Vertex Arrays (1.1) - */ - -GLAPI void GLAPIENTRY glVertexPointer( GLint size, GLenum type, GLsizei stride, const GLvoid *ptr ); -GLAPI void GLAPIENTRY glRasterPos2f( GLfloat x, GLfloat y ); - -// OES FBO extensions -#ifndef GL_OES_framebuffer_object -#define GL_NONE_OES 0 -#define GL_FRAMEBUFFER_OES 0x8D40 -#define GL_RENDERBUFFER_OES 0x8D41 -#define GL_RGBA4_OES 0x8056 -#define GL_RGB5_A1_OES 0x8057 -#define GL_RGB565_OES 0x8D62 -#define GL_DEPTH_COMPONENT16_OES 0x81A5 -#define GL_RENDERBUFFER_WIDTH_OES 0x8D42 -#define GL_RENDERBUFFER_HEIGHT_OES 0x8D43 -#define GL_RENDERBUFFER_INTERNAL_FORMAT_OES 0x8D44 -#define GL_RENDERBUFFER_RED_SIZE_OES 0x8D50 -#define GL_RENDERBUFFER_GREEN_SIZE_OES 0x8D51 -#define GL_RENDERBUFFER_BLUE_SIZE_OES 0x8D52 -#define GL_RENDERBUFFER_ALPHA_SIZE_OES 0x8D53 -#define GL_RENDERBUFFER_DEPTH_SIZE_OES 0x8D54 -#define GL_RENDERBUFFER_STENCIL_SIZE_OES 0x8D55 -#define GL_FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE_OES 0x8CD0 -#define GL_FRAMEBUFFER_ATTACHMENT_OBJECT_NAME_OES 0x8CD1 -#define GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_LEVEL_OES 0x8CD2 -#define GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_CUBE_MAP_FACE_OES 0x8CD3 -#define GL_COLOR_ATTACHMENT0_OES 0x8CE0 -#define GL_DEPTH_ATTACHMENT_OES 0x8D00 -#define GL_STENCIL_ATTACHMENT_OES 0x8D20 -#define GL_FRAMEBUFFER_COMPLETE_OES 0x8CD5 -#define GL_FRAMEBUFFER_INCOMPLETE_ATTACHMENT_OES 0x8CD6 -#define GL_FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT_OES 0x8CD7 -#define GL_FRAMEBUFFER_INCOMPLETE_DIMENSIONS_OES 0x8CD9 -#define GL_FRAMEBUFFER_INCOMPLETE_FORMATS_OES 0x8CDA -#define GL_FRAMEBUFFER_UNSUPPORTED_OES 0x8CDD -#define GL_FRAMEBUFFER_BINDING_OES 0x8CA6 -#define GL_RENDERBUFFER_BINDING_OES 0x8CA7 -#define GL_MAX_RENDERBUFFER_SIZE_OES 0x84E8 -#define GL_INVALID_FRAMEBUFFER_OPERATION_OES 0x0506 -#endif - -#ifndef GL_OES_framebuffer_object -#define GL_OES_framebuffer_object 1 -GLAPI GLboolean GLAPIENTRY glIsRenderbufferOES (GLuint renderbuffer); -GLAPI void GLAPIENTRY glBindRenderbufferOES (GLenum target, GLuint renderbuffer); -GLAPI void GLAPIENTRY glDeleteRenderbuffersOES (GLsizei n, const GLuint* renderbuffers); -GLAPI void GLAPIENTRY glGenRenderbuffersOES (GLsizei n, GLuint* renderbuffers); -GLAPI void GLAPIENTRY glRenderbufferStorageOES (GLenum target, GLenum internalformat, GLsizei width, GLsizei height); -GLAPI void GLAPIENTRY glGetRenderbufferParameterivOES (GLenum target, GLenum pname, GLint* params); -GLAPI GLboolean GLAPIENTRY glIsFramebufferOES (GLuint framebuffer); -GLAPI void GLAPIENTRY glBindFramebufferOES (GLenum target, GLuint framebuffer); -GLAPI void GLAPIENTRY glDeleteFramebuffersOES (GLsizei n, const GLuint* framebuffers); -GLAPI void GLAPIENTRY glGenFramebuffersOES (GLsizei n, GLuint* framebuffers); -GLAPI GLenum GLAPIENTRY glCheckFramebufferStatusOES (GLenum target); -GLAPI void GLAPIENTRY glFramebufferRenderbufferOES (GLenum target, GLenum attachment, GLenum renderbuffertarget, GLuint renderbuffer); -GLAPI void GLAPIENTRY glFramebufferTexture2DOES (GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level); -GLAPI void GLAPIENTRY glGetFramebufferAttachmentParameterivOES (GLenum target, GLenum attachment, GLenum pname, GLint* params); -GLAPI void GLAPIENTRY glGenerateMipmapOES (GLenum target); -#endif - -#if 0 -typedef GLboolean (GL_APIENTRYP PFNGLISRENDERBUFFEROESPROC) (GLuint renderbuffer); -typedef void (GL_APIENTRYP PFNGLBINDRENDERBUFFEROESPROC) (GLenum target, GLuint renderbuffer); -typedef void (GL_APIENTRYP PFNGLDELETERENDERBUFFERSOESPROC) (GLsizei n, const GLuint* renderbuffers); -typedef void (GL_APIENTRYP PFNGLGENRENDERBUFFERSOESPROC) (GLsizei n, GLuint* renderbuffers); -typedef void (GL_APIENTRYP PFNGLRENDERBUFFERSTORAGEOESPROC) (GLenum target, GLenum internalformat, GLsizei width, GLsizei height); -typedef void (GL_APIENTRYP PFNGLGETRENDERBUFFERPARAMETERIVOESPROC) (GLenum target, GLenum pname, GLint* params); -typedef GLboolean (GL_APIENTRYP PFNGLISFRAMEBUFFEROESPROC) (GLuint framebuffer); -typedef void (GL_APIENTRYP PFNGLBINDFRAMEBUFFEROESPROC) (GLenum target, GLuint framebuffer); -typedef void (GL_APIENTRYP PFNGLDELETEFRAMEBUFFERSOESPROC) (GLsizei n, const GLuint* framebuffers); -typedef void (GL_APIENTRYP PFNGLGENFRAMEBUFFERSOESPROC) (GLsizei n, GLuint* framebuffers); -typedef GLenum (GL_APIENTRYP PFNGLCHECKFRAMEBUFFERSTATUSOESPROC) (GLenum target); -typedef void (GL_APIENTRYP PFNGLFRAMEBUFFERRENDERBUFFEROESPROC) (GLenum target, GLenum attachment, GLenum renderbuffertarget, GLuint renderbuffer); -typedef void (GL_APIENTRYP PFNGLFRAMEBUFFERTEXTURE2DOESPROC) (GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level); -typedef void (GL_APIENTRYP PFNGLGETFRAMEBUFFERATTACHMENTPARAMETERIVOESPROC) (GLenum target, GLenum attachment, GLenum pname, GLint* params); -typedef void (GL_APIENTRYP PFNGLGENERATEMIPMAPOESPROC) (GLenum target); -#endif - - - -void (*glXGetProcAddress(const GLubyte *procname))( void ); -void (* eglGetProcAddress( char const * procname))( void ); - -#define GL_TEXTURE_COMPRESSED_ARB 0x86A1 -#define GL_RENDERBUFFER_EXT 0x8D41 -#define GL_STENCIL_ATTACHMENT_EXT 0x8D20 -#define GL_DEPTH24_STENCIL8_EXT 0x88F0 -#define GL_DEPTH_ATTACHMENT_EXT 0x8D00 -#define GL_DEPTH_COMPONENT24 0x81A6 -#define GL_SMOOTH_LINE_WIDTH_GRANULARITY 0x0B23 -#define GL_DEPTH_ATTACHMENT_EXT 0x8D00 -#define GL_FRAMEBUFFER_COMPLETE_EXT 0x8CD5 -#define GL_COMPRESSED_RGB_FXT1_3DFX 0x86B0 - -#define GL_TEXTURE_COMPRESSED_IMAGE_SIZE 0x86A0 - -#define GL_POLYGON_STIPPLE 0x0B42 -#define GL_COMPILE 0x1300 -#define GL_COMPILE_AND_EXECUTE 0x1301 - -#define GL_FRAMEBUFFER_EXT 0x8D40 -#define GL_MAX_TEXTURE_LOD_BIAS 0x84FD -#define GL_TEXTURE_MIN_LOD 0x813A -#define GL_TEXTURE_MAX_LOD 0x813B -#define GL_TEXTURE_BASE_LEVEL 0x813C -#define GL_TEXTURE_LOD_BIAS_EXT 0x8501 -#define GL_TEXTURE_MAX_LEVEL 0x813D -#define GL_TEXTURE_FILTER_CONTROL_EXT 0x8500 - - - -#define GL_LINE_SMOOTH 0x0B20 -#define GL_LINE_STIPPLE 0x0B24 -#define GL_LINE_STIPPLE_PATTERN 0x0B25 -#define GL_LINE_STIPPLE_REPEAT 0x0B26 -#define GL_LINE_WIDTH 0x0B21 -#define GL_LINE_WIDTH_GRANULARITY 0x0B23 -#define GL_LINE_WIDTH_RANGE 0x0B22 - -#define GL_POINTS 0x0000 -#define GL_LINES 0x0001 -#define GL_LINE_LOOP 0x0002 -#define GL_LINE_STRIP 0x0003 -#define GL_TRIANGLES 0x0004 -#define GL_TRIANGLE_STRIP 0x0005 -#define GL_TRIANGLE_FAN 0x0006 -#define GL_QUADS 0x0007 -#define GL_QUAD_STRIP 0x0008 -#define GL_POLYGON 0x0009 - -/* glPush/PopAttrib bits */ -#define GL_CURRENT_BIT 0x00000001 -#define GL_POINT_BIT 0x00000002 -#define GL_LINE_BIT 0x00000004 -#define GL_POLYGON_BIT 0x00000008 -#define GL_POLYGON_STIPPLE_BIT 0x00000010 -#define GL_PIXEL_MODE_BIT 0x00000020 -#define GL_LIGHTING_BIT 0x00000040 -#define GL_FOG_BIT 0x00000080 -#define GL_DEPTH_BUFFER_BIT 0x00000100 -#define GL_ACCUM_BUFFER_BIT 0x00000200 -#define GL_STENCIL_BUFFER_BIT 0x00000400 -#define GL_VIEWPORT_BIT 0x00000800 -#define GL_TRANSFORM_BIT 0x00001000 -#define GL_ENABLE_BIT 0x00002000 -#define GL_COLOR_BUFFER_BIT 0x00004000 -#define GL_HINT_BIT 0x00008000 -#define GL_EVAL_BIT 0x00010000 -#define GL_LIST_BIT 0x00020000 -#define GL_TEXTURE_BIT 0x00040000 -#define GL_SCISSOR_BIT 0x00080000 -#define GL_ALL_ATTRIB_BITS 0x000FFFFF - -#define GL_CURRENT_COLOR 0x0B00 - -/* Hints */ -#define GL_PERSPECTIVE_CORRECTION_HINT 0x0C50 -#define GL_POINT_SMOOTH_HINT 0x0C51 -#define GL_LINE_SMOOTH_HINT 0x0C52 -#define GL_POLYGON_SMOOTH_HINT 0x0C53 -#define GL_FOG_HINT 0x0C54 -#define GL_DONT_CARE 0x1100 -#define GL_FASTEST 0x1101 -#define GL_NICEST 0x1102 - -/* Texture mapping */ -#define GL_TEXTURE_ENV 0x2300 -#define GL_TEXTURE_ENV_MODE 0x2200 -#define GL_TEXTURE_1D 0x0DE0 -#define GL_TEXTURE_2D 0x0DE1 -#define GL_TEXTURE_WRAP_S 0x2802 -#define GL_TEXTURE_WRAP_T 0x2803 -#define GL_TEXTURE_MAG_FILTER 0x2800 -#define GL_TEXTURE_MIN_FILTER 0x2801 -#define GL_TEXTURE_ENV_COLOR 0x2201 -#define GL_TEXTURE_GEN_S 0x0C60 -#define GL_TEXTURE_GEN_T 0x0C61 -#define GL_TEXTURE_GEN_MODE 0x2500 -#define GL_TEXTURE_BORDER_COLOR 0x1004 -#define GL_TEXTURE_WIDTH 0x1000 -#define GL_TEXTURE_HEIGHT 0x1001 -#define GL_TEXTURE_BORDER 0x1005 -#define GL_TEXTURE_COMPONENTS 0x1003 -#define GL_TEXTURE_RED_SIZE 0x805C -#define GL_TEXTURE_GREEN_SIZE 0x805D -#define GL_TEXTURE_BLUE_SIZE 0x805E -#define GL_TEXTURE_ALPHA_SIZE 0x805F -#define GL_TEXTURE_LUMINANCE_SIZE 0x8060 -#define GL_TEXTURE_INTENSITY_SIZE 0x8061 -#define GL_NEAREST_MIPMAP_NEAREST 0x2700 -#define GL_NEAREST_MIPMAP_LINEAR 0x2702 -#define GL_LINEAR_MIPMAP_NEAREST 0x2701 -#define GL_LINEAR_MIPMAP_LINEAR 0x2703 -#define GL_OBJECT_LINEAR 0x2401 -#define GL_OBJECT_PLANE 0x2501 -#define GL_EYE_LINEAR 0x2400 -#define GL_EYE_PLANE 0x2502 -#define GL_SPHERE_MAP 0x2402 -#define GL_DECAL 0x2101 -#define GL_MODULATE 0x2100 -#define GL_NEAREST 0x2600 -#define GL_REPEAT 0x2901 -#define GL_CLAMP 0x2900 -#define GL_S 0x2000 -#define GL_T 0x2001 -#define GL_R 0x2002 -#define GL_Q 0x2003 -#define GL_TEXTURE_GEN_R 0x0C62 -#define GL_TEXTURE_GEN_Q 0x0C63 - -/* Utility */ -#define GL_VENDOR 0x1F00 -#define GL_RENDERER 0x1F01 -#define GL_VERSION 0x1F02 -#define GL_EXTENSIONS 0x1F03 - -#define GL_SMOOTH_LINE_WIDTH_RANGE 0x0B22 -#define GL_MULTISAMPLE 0x809D -#define GL_POLYGON_SMOOTH 0x0B41 - -/* Vertex Arrays */ -#define GL_VERTEX_ARRAY 0x8074 - -#define GL_ARRAY_BUFFER_ARB 0x8892 -#define GL_TEXTURE_RECTANGLE_ARB 0x84F5 -#define GL_COLOR_ATTACHMENT0_EXT 0x8CE0 - -#define GL_CLIENT_PIXEL_STORE_BIT 0x00000001 -#define GL_UNPACK_ALIGNMENT 0x0CF5 -#define GL_UNPACK_LSB_FIRST 0x0CF1 -#define GL_UNPACK_ROW_LENGTH 0x0CF2 -#define GL_UNPACK_SKIP_PIXELS 0x0CF4 -#define GL_UNPACK_SKIP_ROWS 0x0CF3 -#define GL_UNPACK_SWAP_BYTES 0x0CF0 - -class GLUtesselator; -typedef void (GLAPIENTRYP _GLUfuncptr)(); - -GLAPI GLUtesselator* GLAPIENTRY gluNewTess (void); -GLAPI void GLAPIENTRY gluDeleteTess (GLUtesselator* tess); -GLAPI void GLAPIENTRY gluTessVertex (GLUtesselator* tess, GLdouble *location, GLvoid* data); -GLAPI void GLAPIENTRY gluTessBeginContour (GLUtesselator* tess); -GLAPI void GLAPIENTRY gluTessBeginPolygon (GLUtesselator* tess, GLvoid* data); -GLAPI void GLAPIENTRY gluTessCallback (GLUtesselator* tess, GLenum which, _GLUfuncptr CallBackFunc); -GLAPI void GLAPIENTRY gluTessEndContour (GLUtesselator* tess); -GLAPI void GLAPIENTRY gluTessEndPolygon (GLUtesselator* tess); -GLAPI void GLAPIENTRY gluTessNormal (GLUtesselator* tess, GLdouble valueX, GLdouble valueY, GLdouble valueZ); -GLAPI void GLAPIENTRY gluTessProperty (GLUtesselator* tess, GLenum which, GLdouble data); -GLAPI const GLubyte * GLAPIENTRY gluErrorString (GLenum error); - -GLAPI void GLAPIENTRY glColorPointer( GLint size, GLenum type, - GLsizei stride, const GLvoid *ptr ); -GLAPI void GLAPIENTRY glTexCoordPointer( GLint size, GLenum type, - GLsizei stride, const GLvoid *ptr ); - - -#define GLU_TESS_BEGIN 100100 -#define GLU_TESS_VERTEX 100101 -#define GLU_TESS_END 100102 -#define GLU_ERROR 100103 -#define GLU_TESS_ERROR GLU_ERROR -#define GLU_TESS_EDGE_FLAG 100104 -#define GLU_TESS_COMBINE 100105 -#define GLU_TESS_BEGIN_DATA 100106 -#define GLU_TESS_VERTEX_DATA 100107 -#define GLU_TESS_END_DATA 100108 -#define GLU_TESS_ERROR_DATA 100109 -#define GLU_TESS_EDGE_FLAG_DATA 100110 -#define GLU_TESS_COMBINE_DATA 100111 -#define GLU_BEGIN GLU_TESS_BEGIN -#define GLU_VERTEX GLU_TESS_VERTEX -#define GLU_END GLU_TESS_END -#define GLU_EDGE_FLAG GLU_TESS_EDGE_FLAG -#define GLU_CW 100120 -#define GLU_CCW 100121 -#define GLU_INTERIOR 100122 -#define GLU_EXTERIOR 100123 -#define GLU_UNKNOWN 100124 -#define GLU_TESS_WINDING_RULE 100140 -#define GLU_TESS_BOUNDARY_ONLY 100141 -#define GLU_TESS_TOLERANCE 100142 -#define GLU_TESS_ERROR1 100151 -#define GLU_TESS_ERROR2 100152 -#define GLU_TESS_ERROR3 100153 -#define GLU_TESS_ERROR4 100154 -#define GLU_TESS_ERROR5 100155 -#define GLU_TESS_ERROR6 100156 -#define GLU_TESS_ERROR7 100157 -#define GLU_TESS_ERROR8 100158 -#define GLU_TESS_MISSING_BEGIN_POLYGON 100151 -#define GLU_TESS_MISSING_BEGIN_CONTOUR 100152 -#define GLU_TESS_MISSING_END_POLYGON 100153 -#define GLU_TESS_MISSING_END_CONTOUR 100154 -#define GLU_TESS_COORD_TOO_LARGE 100155 -#define GLU_TESS_NEED_COMBINE_CALLBACK 100156 -#define GLU_TESS_WINDING_ODD 100130 -#define GLU_TESS_WINDING_NONZERO 100131 -#define GLU_TESS_WINDING_POSITIVE 100132 -#define GLU_TESS_WINDING_NEGATIVE 100133 -#define GLU_TESS_WINDING_ABS_GEQ_TWO 100134 -#define GL_COLOR_ARRAY 0x8076 -#define GL_TEXTURE_COORD_ARRAY 0x8078 - -/* Matrix Mode */ -#define GL_MATRIX_MODE 0x0BA0 -#define GL_MODELVIEW 0x1700 -#define GL_PROJECTION 0x1701 -#define GL_TEXTURE 0x1702 - -#define GL_MODELVIEW_MATRIX 0x0BA6 -#define GL_PROJECTION_MATRIX 0x0BA7 - -#ifdef __cplusplus -} -#endif - -#endif //__gl_private_h_ - -#if 0 -#ifndef __gl_h_ -#define __gl_h_ - -#if defined(USE_MGL_NAMESPACE) -#include "gl_mangle.h" -#endif - - -/********************************************************************** - * Begin system-specific stuff. Do not do any of this when building - * for SciTech SNAP, as this is all done before this header file is - * included. - */ -#if !defined(__SCITECH_SNAP__) - -#if defined(__BEOS__) -#include /* to get some BeOS-isms */ -#endif - -#if !defined(OPENSTEP) && (defined(NeXT) || defined(NeXT_PDO)) -#define OPENSTEP -#endif - -#if defined(_WIN32) && !defined(__WIN32__) && !defined(__CYGWIN__) -#define __WIN32__ -#endif - -#if !defined(OPENSTEP) && (defined(__WIN32__) && !defined(__CYGWIN__)) -# if (defined(_MSC_VER) || defined(__MINGW32__)) && defined(BUILD_GL32) /* tag specify we're building mesa as a DLL */ -# define GLAPI __declspec(dllexport) -# elif (defined(_MSC_VER) || defined(__MINGW32__)) && defined(_DLL) /* tag specifying we're building for DLL runtime support */ -# define GLAPI __declspec(dllimport) -# else /* for use with static link lib build of Win32 edition only */ -# define GLAPI extern -# endif /* _STATIC_MESA support */ -# define GLAPIENTRY __stdcall -#elif defined(__CYGWIN__) && defined(USE_OPENGL32) /* use native windows opengl32 */ -# define GLAPI extern -# define GLAPIENTRY __stdcall -#elif defined(__GNUC__) && (__GNUC__ * 100 + __GNUC_MINOR__) >= 303 -# define GLAPI __attribute__((visibility("default"))) -# define GLAPIENTRY -#endif /* WIN32 && !CYGWIN */ - -#if (defined(__BEOS__) && defined(__POWERPC__)) || defined(__QUICKDRAW__) -# define PRAGMA_EXPORT_SUPPORTED 1 -#endif - -/* - * WINDOWS: Include windows.h here to define APIENTRY. - * It is also useful when applications include this file by - * including only glut.h, since glut.h depends on windows.h. - * Applications needing to include windows.h with parms other - * than "WIN32_LEAN_AND_MEAN" may include windows.h before - * glut.h or gl.h. - */ -#if defined(_WIN32) && !defined(APIENTRY) && !defined(__CYGWIN__) -#define WIN32_LEAN_AND_MEAN 1 -#include -#endif - -#if defined(_WIN32) && !defined(_WINGDI_) && !defined(_GNU_H_WINDOWS32_DEFINES) \ - && !defined(OPENSTEP) && !defined(__CYGWIN__) || defined(__MINGW32__) -#include -#endif - -#if defined(macintosh) && PRAGMA_IMPORT_SUPPORTED -#pragma import on -#endif - -#ifndef GLAPI -#define GLAPI extern -#endif - -#ifndef GLAPIENTRY -#define GLAPIENTRY -#endif - -#ifndef APIENTRY -#define APIENTRY GLAPIENTRY -#endif - -/* "P" suffix to be used for a pointer to a function */ -#ifndef APIENTRYP -#define APIENTRYP APIENTRY * -#endif - -#ifndef GLAPIENTRYP -#define GLAPIENTRYP GLAPIENTRY * -#endif - -#ifdef CENTERLINE_CLPP -#define signed -#endif - -#if defined(PRAGMA_EXPORT_SUPPORTED) -#pragma export on -#endif - -#endif /* !__SCITECH_SNAP__ */ -/* - * End system-specific stuff. - **********************************************************************/ - - - -#ifdef __cplusplus -extern "C" { -#endif - - - -#define GL_VERSION_1_1 1 -#define GL_VERSION_1_2 1 -#define GL_VERSION_1_3 1 -#define GL_ARB_imaging 1 - - -/* - * Datatypes - */ -#if 0 -typedef unsigned int GLenum; -typedef unsigned char GLboolean; -typedef unsigned int GLbitfield; -typedef void GLvoid; -typedef signed char GLbyte; /* 1-byte signed */ -typedef short GLshort; /* 2-byte signed */ -typedef int GLint; /* 4-byte signed */ -typedef unsigned char GLubyte; /* 1-byte unsigned */ -typedef unsigned short GLushort; /* 2-byte unsigned */ -typedef unsigned int GLuint; /* 4-byte unsigned */ -typedef int GLsizei; /* 4-byte signed */ -typedef float GLfloat; /* single precision float */ -typedef float GLclampf; /* single precision float in [0,1] */ -typedef double GLdouble; /* double precision float */ -typedef double GLclampd; /* double precision float in [0,1] */ -#endif - - -/* - * Constants - */ - -/* Boolean values */ -#define GL_FALSE 0x0 -#define GL_TRUE 0x1 - -/* Data types */ -#define GL_BYTE 0x1400 -#define GL_UNSIGNED_BYTE 0x1401 -#define GL_SHORT 0x1402 -#define GL_UNSIGNED_SHORT 0x1403 -#define GL_INT 0x1404 -#define GL_UNSIGNED_INT 0x1405 -#define GL_FLOAT 0x1406 -#define GL_2_BYTES 0x1407 -#define GL_3_BYTES 0x1408 -#define GL_4_BYTES 0x1409 -#define GL_DOUBLE 0x140A - -/* Primitives */ -#define GL_POINTS 0x0000 -#define GL_LINES 0x0001 -#define GL_LINE_LOOP 0x0002 -#define GL_LINE_STRIP 0x0003 -#define GL_TRIANGLES 0x0004 -#define GL_TRIANGLE_STRIP 0x0005 -#define GL_TRIANGLE_FAN 0x0006 -#define GL_QUADS 0x0007 -#define GL_QUAD_STRIP 0x0008 -#define GL_POLYGON 0x0009 - -/* Vertex Arrays */ -#define GL_VERTEX_ARRAY 0x8074 -#define GL_NORMAL_ARRAY 0x8075 -#define GL_COLOR_ARRAY 0x8076 -#define GL_INDEX_ARRAY 0x8077 -#define GL_TEXTURE_COORD_ARRAY 0x8078 -#define GL_EDGE_FLAG_ARRAY 0x8079 -#define GL_VERTEX_ARRAY_SIZE 0x807A -#define GL_VERTEX_ARRAY_TYPE 0x807B -#define GL_VERTEX_ARRAY_STRIDE 0x807C -#define GL_NORMAL_ARRAY_TYPE 0x807E -#define GL_NORMAL_ARRAY_STRIDE 0x807F -#define GL_COLOR_ARRAY_SIZE 0x8081 -#define GL_COLOR_ARRAY_TYPE 0x8082 -#define GL_COLOR_ARRAY_STRIDE 0x8083 -#define GL_INDEX_ARRAY_TYPE 0x8085 -#define GL_INDEX_ARRAY_STRIDE 0x8086 -#define GL_TEXTURE_COORD_ARRAY_SIZE 0x8088 -#define GL_TEXTURE_COORD_ARRAY_TYPE 0x8089 -#define GL_TEXTURE_COORD_ARRAY_STRIDE 0x808A -#define GL_EDGE_FLAG_ARRAY_STRIDE 0x808C -#define GL_VERTEX_ARRAY_POINTER 0x808E -#define GL_NORMAL_ARRAY_POINTER 0x808F -#define GL_COLOR_ARRAY_POINTER 0x8090 -#define GL_INDEX_ARRAY_POINTER 0x8091 -#define GL_TEXTURE_COORD_ARRAY_POINTER 0x8092 -#define GL_EDGE_FLAG_ARRAY_POINTER 0x8093 -#define GL_V2F 0x2A20 -#define GL_V3F 0x2A21 -#define GL_C4UB_V2F 0x2A22 -#define GL_C4UB_V3F 0x2A23 -#define GL_C3F_V3F 0x2A24 -#define GL_N3F_V3F 0x2A25 -#define GL_C4F_N3F_V3F 0x2A26 -#define GL_T2F_V3F 0x2A27 -#define GL_T4F_V4F 0x2A28 -#define GL_T2F_C4UB_V3F 0x2A29 -#define GL_T2F_C3F_V3F 0x2A2A -#define GL_T2F_N3F_V3F 0x2A2B -#define GL_T2F_C4F_N3F_V3F 0x2A2C -#define GL_T4F_C4F_N3F_V4F 0x2A2D - -/* Points */ -#define GL_POINT_SMOOTH 0x0B10 -#define GL_POINT_SIZE 0x0B11 -#define GL_POINT_SIZE_GRANULARITY 0x0B13 -#define GL_POINT_SIZE_RANGE 0x0B12 - -/* Lines */ -#define GL_LINE_SMOOTH 0x0B20 -#define GL_LINE_STIPPLE 0x0B24 -#define GL_LINE_STIPPLE_PATTERN 0x0B25 -#define GL_LINE_STIPPLE_REPEAT 0x0B26 -#define GL_LINE_WIDTH 0x0B21 -#define GL_LINE_WIDTH_GRANULARITY 0x0B23 -#define GL_LINE_WIDTH_RANGE 0x0B22 - -/* Polygons */ -#define GL_POINT 0x1B00 -#define GL_LINE 0x1B01 -#define GL_FILL 0x1B02 -#define GL_CW 0x0900 -#define GL_CCW 0x0901 -#define GL_FRONT 0x0404 -#define GL_BACK 0x0405 -#define GL_POLYGON_MODE 0x0B40 -#define GL_POLYGON_SMOOTH 0x0B41 -#define GL_POLYGON_STIPPLE 0x0B42 -#define GL_EDGE_FLAG 0x0B43 -#define GL_CULL_FACE 0x0B44 -#define GL_CULL_FACE_MODE 0x0B45 -#define GL_FRONT_FACE 0x0B46 -#define GL_POLYGON_OFFSET_FACTOR 0x8038 -#define GL_POLYGON_OFFSET_UNITS 0x2A00 -#define GL_POLYGON_OFFSET_POINT 0x2A01 -#define GL_POLYGON_OFFSET_LINE 0x2A02 -#define GL_POLYGON_OFFSET_FILL 0x8037 - -/* Display Lists */ -#define GL_COMPILE 0x1300 -#define GL_COMPILE_AND_EXECUTE 0x1301 -#define GL_LIST_BASE 0x0B32 -#define GL_LIST_INDEX 0x0B33 -#define GL_LIST_MODE 0x0B30 - -/* Depth buffer */ -#define GL_NEVER 0x0200 -#define GL_LESS 0x0201 -#define GL_EQUAL 0x0202 -#define GL_LEQUAL 0x0203 -#define GL_GREATER 0x0204 -#define GL_NOTEQUAL 0x0205 -#define GL_GEQUAL 0x0206 -#define GL_ALWAYS 0x0207 -#define GL_DEPTH_TEST 0x0B71 -#define GL_DEPTH_BITS 0x0D56 -#define GL_DEPTH_CLEAR_VALUE 0x0B73 -#define GL_DEPTH_FUNC 0x0B74 -#define GL_DEPTH_RANGE 0x0B70 -#define GL_DEPTH_WRITEMASK 0x0B72 -#define GL_DEPTH_COMPONENT 0x1902 - -/* Lighting */ -#define GL_LIGHTING 0x0B50 -#define GL_LIGHT0 0x4000 -#define GL_LIGHT1 0x4001 -#define GL_LIGHT2 0x4002 -#define GL_LIGHT3 0x4003 -#define GL_LIGHT4 0x4004 -#define GL_LIGHT5 0x4005 -#define GL_LIGHT6 0x4006 -#define GL_LIGHT7 0x4007 -#define GL_SPOT_EXPONENT 0x1205 -#define GL_SPOT_CUTOFF 0x1206 -#define GL_CONSTANT_ATTENUATION 0x1207 -#define GL_LINEAR_ATTENUATION 0x1208 -#define GL_QUADRATIC_ATTENUATION 0x1209 -#define GL_AMBIENT 0x1200 -#define GL_DIFFUSE 0x1201 -#define GL_SPECULAR 0x1202 -#define GL_SHININESS 0x1601 -#define GL_EMISSION 0x1600 -#define GL_POSITION 0x1203 -#define GL_SPOT_DIRECTION 0x1204 -#define GL_AMBIENT_AND_DIFFUSE 0x1602 -#define GL_COLOR_INDEXES 0x1603 -#define GL_LIGHT_MODEL_TWO_SIDE 0x0B52 -#define GL_LIGHT_MODEL_LOCAL_VIEWER 0x0B51 -#define GL_LIGHT_MODEL_AMBIENT 0x0B53 -#define GL_FRONT_AND_BACK 0x0408 -#define GL_SHADE_MODEL 0x0B54 -#define GL_FLAT 0x1D00 -#define GL_SMOOTH 0x1D01 -#define GL_COLOR_MATERIAL 0x0B57 -#define GL_COLOR_MATERIAL_FACE 0x0B55 -#define GL_COLOR_MATERIAL_PARAMETER 0x0B56 -#define GL_NORMALIZE 0x0BA1 - -/* User clipping planes */ -#define GL_CLIP_PLANE0 0x3000 -#define GL_CLIP_PLANE1 0x3001 -#define GL_CLIP_PLANE2 0x3002 -#define GL_CLIP_PLANE3 0x3003 -#define GL_CLIP_PLANE4 0x3004 -#define GL_CLIP_PLANE5 0x3005 - -/* Accumulation buffer */ -#define GL_ACCUM_RED_BITS 0x0D58 -#define GL_ACCUM_GREEN_BITS 0x0D59 -#define GL_ACCUM_BLUE_BITS 0x0D5A -#define GL_ACCUM_ALPHA_BITS 0x0D5B -#define GL_ACCUM_CLEAR_VALUE 0x0B80 -#define GL_ACCUM 0x0100 -#define GL_ADD 0x0104 -#define GL_LOAD 0x0101 -#define GL_MULT 0x0103 -#define GL_RETURN 0x0102 - -/* Alpha testing */ -#define GL_ALPHA_TEST 0x0BC0 -#define GL_ALPHA_TEST_REF 0x0BC2 -#define GL_ALPHA_TEST_FUNC 0x0BC1 - -/* Blending */ -#define GL_BLEND 0x0BE2 -#define GL_BLEND_SRC 0x0BE1 -#define GL_BLEND_DST 0x0BE0 -#define GL_ZERO 0x0 -#define GL_ONE 0x1 -#define GL_SRC_COLOR 0x0300 -#define GL_ONE_MINUS_SRC_COLOR 0x0301 -#define GL_SRC_ALPHA 0x0302 -#define GL_ONE_MINUS_SRC_ALPHA 0x0303 -#define GL_DST_ALPHA 0x0304 -#define GL_ONE_MINUS_DST_ALPHA 0x0305 -#define GL_DST_COLOR 0x0306 -#define GL_ONE_MINUS_DST_COLOR 0x0307 -#define GL_SRC_ALPHA_SATURATE 0x0308 - -/* Render Mode */ -#define GL_FEEDBACK 0x1C01 -#define GL_RENDER 0x1C00 -#define GL_SELECT 0x1C02 - -/* Feedback */ -#define GL_2D 0x0600 -#define GL_3D 0x0601 -#define GL_3D_COLOR 0x0602 -#define GL_3D_COLOR_TEXTURE 0x0603 -#define GL_4D_COLOR_TEXTURE 0x0604 -#define GL_POINT_TOKEN 0x0701 -#define GL_LINE_TOKEN 0x0702 -#define GL_LINE_RESET_TOKEN 0x0707 -#define GL_POLYGON_TOKEN 0x0703 -#define GL_BITMAP_TOKEN 0x0704 -#define GL_DRAW_PIXEL_TOKEN 0x0705 -#define GL_COPY_PIXEL_TOKEN 0x0706 -#define GL_PASS_THROUGH_TOKEN 0x0700 -#define GL_FEEDBACK_BUFFER_POINTER 0x0DF0 -#define GL_FEEDBACK_BUFFER_SIZE 0x0DF1 -#define GL_FEEDBACK_BUFFER_TYPE 0x0DF2 - -/* Selection */ -#define GL_SELECTION_BUFFER_POINTER 0x0DF3 -#define GL_SELECTION_BUFFER_SIZE 0x0DF4 - -/* Fog */ -#define GL_FOG 0x0B60 -#define GL_FOG_MODE 0x0B65 -#define GL_FOG_DENSITY 0x0B62 -#define GL_FOG_COLOR 0x0B66 -#define GL_FOG_INDEX 0x0B61 -#define GL_FOG_START 0x0B63 -#define GL_FOG_END 0x0B64 -#define GL_LINEAR 0x2601 -#define GL_EXP 0x0800 -#define GL_EXP2 0x0801 - -/* Logic Ops */ -#define GL_LOGIC_OP 0x0BF1 -#define GL_INDEX_LOGIC_OP 0x0BF1 -#define GL_COLOR_LOGIC_OP 0x0BF2 -#define GL_LOGIC_OP_MODE 0x0BF0 -#define GL_CLEAR 0x1500 -#define GL_SET 0x150F -#define GL_COPY 0x1503 -#define GL_COPY_INVERTED 0x150C -#define GL_NOOP 0x1505 -#define GL_INVERT 0x150A -#define GL_AND 0x1501 -#define GL_NAND 0x150E -#define GL_OR 0x1507 -#define GL_NOR 0x1508 -#define GL_XOR 0x1506 -#define GL_EQUIV 0x1509 -#define GL_AND_REVERSE 0x1502 -#define GL_AND_INVERTED 0x1504 -#define GL_OR_REVERSE 0x150B -#define GL_OR_INVERTED 0x150D - -/* Stencil */ -#define GL_STENCIL_BITS 0x0D57 -#define GL_STENCIL_TEST 0x0B90 -#define GL_STENCIL_CLEAR_VALUE 0x0B91 -#define GL_STENCIL_FUNC 0x0B92 -#define GL_STENCIL_VALUE_MASK 0x0B93 -#define GL_STENCIL_FAIL 0x0B94 -#define GL_STENCIL_PASS_DEPTH_FAIL 0x0B95 -#define GL_STENCIL_PASS_DEPTH_PASS 0x0B96 -#define GL_STENCIL_REF 0x0B97 -#define GL_STENCIL_WRITEMASK 0x0B98 -#define GL_STENCIL_INDEX 0x1901 -#define GL_KEEP 0x1E00 -#define GL_REPLACE 0x1E01 -#define GL_INCR 0x1E02 -#define GL_DECR 0x1E03 - -/* Buffers, Pixel Drawing/Reading */ -#define GL_NONE 0x0 -#define GL_LEFT 0x0406 -#define GL_RIGHT 0x0407 -/*GL_FRONT 0x0404 */ -/*GL_BACK 0x0405 */ -/*GL_FRONT_AND_BACK 0x0408 */ -#define GL_FRONT_LEFT 0x0400 -#define GL_FRONT_RIGHT 0x0401 -#define GL_BACK_LEFT 0x0402 -#define GL_BACK_RIGHT 0x0403 -#define GL_AUX0 0x0409 -#define GL_AUX1 0x040A -#define GL_AUX2 0x040B -#define GL_AUX3 0x040C -#define GL_COLOR_INDEX 0x1900 -#define GL_RED 0x1903 -#define GL_GREEN 0x1904 -#define GL_BLUE 0x1905 -#define GL_ALPHA 0x1906 -#define GL_LUMINANCE 0x1909 -#define GL_LUMINANCE_ALPHA 0x190A -#define GL_ALPHA_BITS 0x0D55 -#define GL_RED_BITS 0x0D52 -#define GL_GREEN_BITS 0x0D53 -#define GL_BLUE_BITS 0x0D54 -#define GL_INDEX_BITS 0x0D51 -#define GL_SUBPIXEL_BITS 0x0D50 -#define GL_AUX_BUFFERS 0x0C00 -#define GL_READ_BUFFER 0x0C02 -#define GL_DRAW_BUFFER 0x0C01 -#define GL_DOUBLEBUFFER 0x0C32 -#define GL_STEREO 0x0C33 -#define GL_BITMAP 0x1A00 -#define GL_COLOR 0x1800 -#define GL_DEPTH 0x1801 -#define GL_STENCIL 0x1802 -#define GL_DITHER 0x0BD0 -#define GL_RGB 0x1907 -#define GL_RGBA 0x1908 - -/* Implementation limits */ -#define GL_MAX_LIST_NESTING 0x0B31 -#define GL_MAX_EVAL_ORDER 0x0D30 -#define GL_MAX_LIGHTS 0x0D31 -#define GL_MAX_CLIP_PLANES 0x0D32 -#define GL_MAX_TEXTURE_SIZE 0x0D33 -#define GL_MAX_PIXEL_MAP_TABLE 0x0D34 -#define GL_MAX_ATTRIB_STACK_DEPTH 0x0D35 -#define GL_MAX_MODELVIEW_STACK_DEPTH 0x0D36 -#define GL_MAX_NAME_STACK_DEPTH 0x0D37 -#define GL_MAX_PROJECTION_STACK_DEPTH 0x0D38 -#define GL_MAX_TEXTURE_STACK_DEPTH 0x0D39 -#define GL_MAX_VIEWPORT_DIMS 0x0D3A -#define GL_MAX_CLIENT_ATTRIB_STACK_DEPTH 0x0D3B - -/* Gets */ -#define GL_ATTRIB_STACK_DEPTH 0x0BB0 -#define GL_CLIENT_ATTRIB_STACK_DEPTH 0x0BB1 -#define GL_COLOR_CLEAR_VALUE 0x0C22 -#define GL_COLOR_WRITEMASK 0x0C23 -#define GL_CURRENT_INDEX 0x0B01 -#define GL_CURRENT_COLOR 0x0B00 -#define GL_CURRENT_NORMAL 0x0B02 -#define GL_CURRENT_RASTER_COLOR 0x0B04 -#define GL_CURRENT_RASTER_DISTANCE 0x0B09 -#define GL_CURRENT_RASTER_INDEX 0x0B05 -#define GL_CURRENT_RASTER_POSITION 0x0B07 -#define GL_CURRENT_RASTER_TEXTURE_COORDS 0x0B06 -#define GL_CURRENT_RASTER_POSITION_VALID 0x0B08 -#define GL_CURRENT_TEXTURE_COORDS 0x0B03 -#define GL_INDEX_CLEAR_VALUE 0x0C20 -#define GL_INDEX_MODE 0x0C30 -#define GL_INDEX_WRITEMASK 0x0C21 -#define GL_MODELVIEW_MATRIX 0x0BA6 -#define GL_MODELVIEW_STACK_DEPTH 0x0BA3 -#define GL_NAME_STACK_DEPTH 0x0D70 -#define GL_PROJECTION_MATRIX 0x0BA7 -#define GL_PROJECTION_STACK_DEPTH 0x0BA4 -#define GL_RENDER_MODE 0x0C40 -#define GL_RGBA_MODE 0x0C31 -#define GL_TEXTURE_MATRIX 0x0BA8 -#define GL_TEXTURE_STACK_DEPTH 0x0BA5 -#define GL_VIEWPORT 0x0BA2 - -/* Evaluators */ -#define GL_AUTO_NORMAL 0x0D80 -#define GL_MAP1_COLOR_4 0x0D90 -#define GL_MAP1_INDEX 0x0D91 -#define GL_MAP1_NORMAL 0x0D92 -#define GL_MAP1_TEXTURE_COORD_1 0x0D93 -#define GL_MAP1_TEXTURE_COORD_2 0x0D94 -#define GL_MAP1_TEXTURE_COORD_3 0x0D95 -#define GL_MAP1_TEXTURE_COORD_4 0x0D96 -#define GL_MAP1_VERTEX_3 0x0D97 -#define GL_MAP1_VERTEX_4 0x0D98 -#define GL_MAP2_COLOR_4 0x0DB0 -#define GL_MAP2_INDEX 0x0DB1 -#define GL_MAP2_NORMAL 0x0DB2 -#define GL_MAP2_TEXTURE_COORD_1 0x0DB3 -#define GL_MAP2_TEXTURE_COORD_2 0x0DB4 -#define GL_MAP2_TEXTURE_COORD_3 0x0DB5 -#define GL_MAP2_TEXTURE_COORD_4 0x0DB6 -#define GL_MAP2_VERTEX_3 0x0DB7 -#define GL_MAP2_VERTEX_4 0x0DB8 -#define GL_MAP1_GRID_DOMAIN 0x0DD0 -#define GL_MAP1_GRID_SEGMENTS 0x0DD1 -#define GL_MAP2_GRID_DOMAIN 0x0DD2 -#define GL_MAP2_GRID_SEGMENTS 0x0DD3 -#define GL_COEFF 0x0A00 -#define GL_ORDER 0x0A01 -#define GL_DOMAIN 0x0A02 - -/* Hints */ -#define GL_PERSPECTIVE_CORRECTION_HINT 0x0C50 -#define GL_POINT_SMOOTH_HINT 0x0C51 -#define GL_LINE_SMOOTH_HINT 0x0C52 -#define GL_POLYGON_SMOOTH_HINT 0x0C53 -#define GL_FOG_HINT 0x0C54 -#define GL_DONT_CARE 0x1100 -#define GL_FASTEST 0x1101 -#define GL_NICEST 0x1102 - -/* Scissor box */ -#define GL_SCISSOR_BOX 0x0C10 -#define GL_SCISSOR_TEST 0x0C11 - -/* Pixel Mode / Transfer */ -#define GL_MAP_COLOR 0x0D10 -#define GL_MAP_STENCIL 0x0D11 -#define GL_INDEX_SHIFT 0x0D12 -#define GL_INDEX_OFFSET 0x0D13 -#define GL_RED_SCALE 0x0D14 -#define GL_RED_BIAS 0x0D15 -#define GL_GREEN_SCALE 0x0D18 -#define GL_GREEN_BIAS 0x0D19 -#define GL_BLUE_SCALE 0x0D1A -#define GL_BLUE_BIAS 0x0D1B -#define GL_ALPHA_SCALE 0x0D1C -#define GL_ALPHA_BIAS 0x0D1D -#define GL_DEPTH_SCALE 0x0D1E -#define GL_DEPTH_BIAS 0x0D1F -#define GL_PIXEL_MAP_S_TO_S_SIZE 0x0CB1 -#define GL_PIXEL_MAP_I_TO_I_SIZE 0x0CB0 -#define GL_PIXEL_MAP_I_TO_R_SIZE 0x0CB2 -#define GL_PIXEL_MAP_I_TO_G_SIZE 0x0CB3 -#define GL_PIXEL_MAP_I_TO_B_SIZE 0x0CB4 -#define GL_PIXEL_MAP_I_TO_A_SIZE 0x0CB5 -#define GL_PIXEL_MAP_R_TO_R_SIZE 0x0CB6 -#define GL_PIXEL_MAP_G_TO_G_SIZE 0x0CB7 -#define GL_PIXEL_MAP_B_TO_B_SIZE 0x0CB8 -#define GL_PIXEL_MAP_A_TO_A_SIZE 0x0CB9 -#define GL_PIXEL_MAP_S_TO_S 0x0C71 -#define GL_PIXEL_MAP_I_TO_I 0x0C70 -#define GL_PIXEL_MAP_I_TO_R 0x0C72 -#define GL_PIXEL_MAP_I_TO_G 0x0C73 -#define GL_PIXEL_MAP_I_TO_B 0x0C74 -#define GL_PIXEL_MAP_I_TO_A 0x0C75 -#define GL_PIXEL_MAP_R_TO_R 0x0C76 -#define GL_PIXEL_MAP_G_TO_G 0x0C77 -#define GL_PIXEL_MAP_B_TO_B 0x0C78 -#define GL_PIXEL_MAP_A_TO_A 0x0C79 -#define GL_PACK_ALIGNMENT 0x0D05 -#define GL_PACK_LSB_FIRST 0x0D01 -#define GL_PACK_ROW_LENGTH 0x0D02 -#define GL_PACK_SKIP_PIXELS 0x0D04 -#define GL_PACK_SKIP_ROWS 0x0D03 -#define GL_PACK_SWAP_BYTES 0x0D00 -#define GL_UNPACK_ALIGNMENT 0x0CF5 -#define GL_UNPACK_LSB_FIRST 0x0CF1 -#define GL_UNPACK_ROW_LENGTH 0x0CF2 -#define GL_UNPACK_SKIP_PIXELS 0x0CF4 -#define GL_UNPACK_SKIP_ROWS 0x0CF3 -#define GL_UNPACK_SWAP_BYTES 0x0CF0 -#define GL_ZOOM_X 0x0D16 -#define GL_ZOOM_Y 0x0D17 - -/* Texture mapping */ -#define GL_TEXTURE_ENV 0x2300 -#define GL_TEXTURE_ENV_MODE 0x2200 -#define GL_TEXTURE_1D 0x0DE0 -#define GL_TEXTURE_2D 0x0DE1 -#define GL_TEXTURE_WRAP_S 0x2802 -#define GL_TEXTURE_WRAP_T 0x2803 -#define GL_TEXTURE_MAG_FILTER 0x2800 -#define GL_TEXTURE_MIN_FILTER 0x2801 -#define GL_TEXTURE_ENV_COLOR 0x2201 -#define GL_TEXTURE_GEN_S 0x0C60 -#define GL_TEXTURE_GEN_T 0x0C61 -#define GL_TEXTURE_GEN_MODE 0x2500 -#define GL_TEXTURE_BORDER_COLOR 0x1004 -#define GL_TEXTURE_WIDTH 0x1000 -#define GL_TEXTURE_HEIGHT 0x1001 -#define GL_TEXTURE_BORDER 0x1005 -#define GL_TEXTURE_COMPONENTS 0x1003 -#define GL_TEXTURE_RED_SIZE 0x805C -#define GL_TEXTURE_GREEN_SIZE 0x805D -#define GL_TEXTURE_BLUE_SIZE 0x805E -#define GL_TEXTURE_ALPHA_SIZE 0x805F -#define GL_TEXTURE_LUMINANCE_SIZE 0x8060 -#define GL_TEXTURE_INTENSITY_SIZE 0x8061 -#define GL_NEAREST_MIPMAP_NEAREST 0x2700 -#define GL_NEAREST_MIPMAP_LINEAR 0x2702 -#define GL_LINEAR_MIPMAP_NEAREST 0x2701 -#define GL_LINEAR_MIPMAP_LINEAR 0x2703 -#define GL_OBJECT_LINEAR 0x2401 -#define GL_OBJECT_PLANE 0x2501 -#define GL_EYE_LINEAR 0x2400 -#define GL_EYE_PLANE 0x2502 -#define GL_SPHERE_MAP 0x2402 -#define GL_DECAL 0x2101 -#define GL_MODULATE 0x2100 -#define GL_NEAREST 0x2600 -#define GL_REPEAT 0x2901 -#define GL_CLAMP 0x2900 -#define GL_S 0x2000 -#define GL_T 0x2001 -#define GL_R 0x2002 -#define GL_Q 0x2003 -#define GL_TEXTURE_GEN_R 0x0C62 -#define GL_TEXTURE_GEN_Q 0x0C63 - -/* Utility */ -#define GL_VENDOR 0x1F00 -#define GL_RENDERER 0x1F01 -#define GL_VERSION 0x1F02 -#define GL_EXTENSIONS 0x1F03 - -/* Errors */ -#define GL_NO_ERROR 0x0 -#define GL_INVALID_ENUM 0x0500 -#define GL_INVALID_VALUE 0x0501 -#define GL_INVALID_OPERATION 0x0502 -#define GL_STACK_OVERFLOW 0x0503 -#define GL_STACK_UNDERFLOW 0x0504 -#define GL_OUT_OF_MEMORY 0x0505 - -/* glPush/PopAttrib bits */ -#define GL_CURRENT_BIT 0x00000001 -#define GL_POINT_BIT 0x00000002 -#define GL_LINE_BIT 0x00000004 -#define GL_POLYGON_BIT 0x00000008 -#define GL_POLYGON_STIPPLE_BIT 0x00000010 -#define GL_PIXEL_MODE_BIT 0x00000020 -#define GL_LIGHTING_BIT 0x00000040 -#define GL_FOG_BIT 0x00000080 -#define GL_DEPTH_BUFFER_BIT 0x00000100 -#define GL_ACCUM_BUFFER_BIT 0x00000200 -#define GL_STENCIL_BUFFER_BIT 0x00000400 -#define GL_VIEWPORT_BIT 0x00000800 -#define GL_TRANSFORM_BIT 0x00001000 -#define GL_ENABLE_BIT 0x00002000 -#define GL_COLOR_BUFFER_BIT 0x00004000 -#define GL_HINT_BIT 0x00008000 -#define GL_EVAL_BIT 0x00010000 -#define GL_LIST_BIT 0x00020000 -#define GL_TEXTURE_BIT 0x00040000 -#define GL_SCISSOR_BIT 0x00080000 -#define GL_ALL_ATTRIB_BITS 0x000FFFFF - - -/* OpenGL 1.1 */ -#define GL_PROXY_TEXTURE_1D 0x8063 -#define GL_PROXY_TEXTURE_2D 0x8064 -#define GL_TEXTURE_PRIORITY 0x8066 -#define GL_TEXTURE_RESIDENT 0x8067 -#define GL_TEXTURE_BINDING_1D 0x8068 -#define GL_TEXTURE_BINDING_2D 0x8069 -#define GL_TEXTURE_INTERNAL_FORMAT 0x1003 -#define GL_ALPHA4 0x803B -#define GL_ALPHA8 0x803C -#define GL_ALPHA12 0x803D -#define GL_ALPHA16 0x803E -#define GL_LUMINANCE4 0x803F -#define GL_LUMINANCE8 0x8040 -#define GL_LUMINANCE12 0x8041 -#define GL_LUMINANCE16 0x8042 -#define GL_LUMINANCE4_ALPHA4 0x8043 -#define GL_LUMINANCE6_ALPHA2 0x8044 -#define GL_LUMINANCE8_ALPHA8 0x8045 -#define GL_LUMINANCE12_ALPHA4 0x8046 -#define GL_LUMINANCE12_ALPHA12 0x8047 -#define GL_LUMINANCE16_ALPHA16 0x8048 -#define GL_INTENSITY 0x8049 -#define GL_INTENSITY4 0x804A -#define GL_INTENSITY8 0x804B -#define GL_INTENSITY12 0x804C -#define GL_INTENSITY16 0x804D -#define GL_R3_G3_B2 0x2A10 -#define GL_RGB4 0x804F -#define GL_RGB5 0x8050 -#define GL_RGB8 0x8051 -#define GL_RGB10 0x8052 -#define GL_RGB12 0x8053 -#define GL_RGB16 0x8054 -#define GL_RGBA2 0x8055 -#define GL_RGBA4 0x8056 -#define GL_RGB5_A1 0x8057 -#define GL_RGBA8 0x8058 -#define GL_RGB10_A2 0x8059 -#define GL_RGBA12 0x805A -#define GL_RGBA16 0x805B -#define GL_CLIENT_PIXEL_STORE_BIT 0x00000001 -#define GL_CLIENT_VERTEX_ARRAY_BIT 0x00000002 -#define GL_ALL_CLIENT_ATTRIB_BITS 0xFFFFFFFF -#define GL_CLIENT_ALL_ATTRIB_BITS 0xFFFFFFFF - - - -/* - * Miscellaneous - */ - -GLAPI void GLAPIENTRY glClearIndex( GLfloat c ); - -GLAPI void GLAPIENTRY glClearColor( GLclampf red, GLclampf green, GLclampf blue, GLclampf alpha ); - -GLAPI void GLAPIENTRY glClear( GLbitfield mask ); - -GLAPI void GLAPIENTRY glIndexMask( GLuint mask ); - -GLAPI void GLAPIENTRY glColorMask( GLboolean red, GLboolean green, GLboolean blue, GLboolean alpha ); - -GLAPI void GLAPIENTRY glAlphaFunc( GLenum func, GLclampf ref ); - -GLAPI void GLAPIENTRY glBlendFunc( GLenum sfactor, GLenum dfactor ); - -GLAPI void GLAPIENTRY glLogicOp( GLenum opcode ); - -GLAPI void GLAPIENTRY glCullFace( GLenum mode ); - -GLAPI void GLAPIENTRY glFrontFace( GLenum mode ); - -GLAPI void GLAPIENTRY glPointSize( GLfloat size ); - -GLAPI void GLAPIENTRY glLineWidth( GLfloat width ); - -GLAPI void GLAPIENTRY glLineStipple( GLint factor, GLushort pattern ); - -GLAPI void GLAPIENTRY glPolygonMode( GLenum face, GLenum mode ); - -GLAPI void GLAPIENTRY glPolygonOffset( GLfloat factor, GLfloat units ); - -GLAPI void GLAPIENTRY glPolygonStipple( const GLubyte *mask ); - -GLAPI void GLAPIENTRY glGetPolygonStipple( GLubyte *mask ); - -GLAPI void GLAPIENTRY glEdgeFlag( GLboolean flag ); - -GLAPI void GLAPIENTRY glEdgeFlagv( const GLboolean *flag ); - -GLAPI void GLAPIENTRY glScissor( GLint x, GLint y, GLsizei width, GLsizei height); - -GLAPI void GLAPIENTRY glClipPlane( GLenum plane, const GLdouble *equation ); - -GLAPI void GLAPIENTRY glGetClipPlane( GLenum plane, GLdouble *equation ); - -GLAPI void GLAPIENTRY glDrawBuffer( GLenum mode ); - -GLAPI void GLAPIENTRY glReadBuffer( GLenum mode ); - -GLAPI void GLAPIENTRY glEnable( GLenum cap ); - -GLAPI void GLAPIENTRY glDisable( GLenum cap ); - -GLAPI GLboolean GLAPIENTRY glIsEnabled( GLenum cap ); - - -GLAPI void GLAPIENTRY glEnableClientState( GLenum cap ); /* 1.1 */ - -GLAPI void GLAPIENTRY glDisableClientState( GLenum cap ); /* 1.1 */ - - -GLAPI void GLAPIENTRY glGetBooleanv( GLenum pname, GLboolean *params ); - -GLAPI void GLAPIENTRY glGetDoublev( GLenum pname, GLdouble *params ); - -GLAPI void GLAPIENTRY glGetFloatv( GLenum pname, GLfloat *params ); - -GLAPI void GLAPIENTRY glGetIntegerv( GLenum pname, GLint *params ); - - -GLAPI void GLAPIENTRY glPushAttrib( GLbitfield mask ); - -GLAPI void GLAPIENTRY glPopAttrib( void ); - - -GLAPI void GLAPIENTRY glPushClientAttrib( GLbitfield mask ); /* 1.1 */ - -GLAPI void GLAPIENTRY glPopClientAttrib( void ); /* 1.1 */ - - -GLAPI GLint GLAPIENTRY glRenderMode( GLenum mode ); - -GLAPI GLenum GLAPIENTRY glGetError( void ); - -GLAPI const GLubyte * GLAPIENTRY glGetString( GLenum name ); - -GLAPI void GLAPIENTRY glFinish( void ); - -GLAPI void GLAPIENTRY glFlush( void ); - -GLAPI void GLAPIENTRY glHint( GLenum target, GLenum mode ); - - -/* - * Depth Buffer - */ - -GLAPI void GLAPIENTRY glClearDepth( GLclampd depth ); - -GLAPI void GLAPIENTRY glDepthFunc( GLenum func ); - -GLAPI void GLAPIENTRY glDepthMask( GLboolean flag ); - -GLAPI void GLAPIENTRY glDepthRange( GLclampd near_val, GLclampd far_val ); - - -/* - * Accumulation Buffer - */ - -GLAPI void GLAPIENTRY glClearAccum( GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha ); - -GLAPI void GLAPIENTRY glAccum( GLenum op, GLfloat value ); - - -/* - * Transformation - */ - -GLAPI void GLAPIENTRY glMatrixMode( GLenum mode ); - -GLAPI void GLAPIENTRY glOrtho( GLdouble left, GLdouble right, - GLdouble bottom, GLdouble top, - GLdouble near_val, GLdouble far_val ); - -GLAPI void GLAPIENTRY glFrustum( GLdouble left, GLdouble right, - GLdouble bottom, GLdouble top, - GLdouble near_val, GLdouble far_val ); - -GLAPI void GLAPIENTRY glViewport( GLint x, GLint y, - GLsizei width, GLsizei height ); - -GLAPI void GLAPIENTRY glPushMatrix( void ); - -GLAPI void GLAPIENTRY glPopMatrix( void ); - -GLAPI void GLAPIENTRY glLoadIdentity( void ); - -GLAPI void GLAPIENTRY glLoadMatrixd( const GLdouble *m ); -GLAPI void GLAPIENTRY glLoadMatrixf( const GLfloat *m ); - -GLAPI void GLAPIENTRY glMultMatrixd( const GLdouble *m ); -GLAPI void GLAPIENTRY glMultMatrixf( const GLfloat *m ); - -GLAPI void GLAPIENTRY glRotated( GLdouble angle, - GLdouble x, GLdouble y, GLdouble z ); -GLAPI void GLAPIENTRY glRotatef( GLfloat angle, - GLfloat x, GLfloat y, GLfloat z ); - -GLAPI void GLAPIENTRY glScaled( GLdouble x, GLdouble y, GLdouble z ); -GLAPI void GLAPIENTRY glScalef( GLfloat x, GLfloat y, GLfloat z ); - -GLAPI void GLAPIENTRY glTranslated( GLdouble x, GLdouble y, GLdouble z ); -GLAPI void GLAPIENTRY glTranslatef( GLfloat x, GLfloat y, GLfloat z ); - - -/* - * Display Lists - */ - -GLAPI GLboolean GLAPIENTRY glIsList( GLuint list ); - -GLAPI void GLAPIENTRY glDeleteLists( GLuint list, GLsizei range ); - -GLAPI GLuint GLAPIENTRY glGenLists( GLsizei range ); - -GLAPI void GLAPIENTRY glNewList( GLuint list, GLenum mode ); - -GLAPI void GLAPIENTRY glEndList( void ); - -GLAPI void GLAPIENTRY glCallList( GLuint list ); - -GLAPI void GLAPIENTRY glCallLists( GLsizei n, GLenum type, - const GLvoid *lists ); - -GLAPI void GLAPIENTRY glListBase( GLuint base ); - - -/* - * Drawing Functions - */ - -GLAPI void GLAPIENTRY glBegin( GLenum mode ); - -GLAPI void GLAPIENTRY glEnd( void ); - - -GLAPI void GLAPIENTRY glVertex2d( GLdouble x, GLdouble y ); -GLAPI void GLAPIENTRY glVertex2f( GLfloat x, GLfloat y ); -GLAPI void GLAPIENTRY glVertex2i( GLint x, GLint y ); -GLAPI void GLAPIENTRY glVertex2s( GLshort x, GLshort y ); - -GLAPI void GLAPIENTRY glVertex3d( GLdouble x, GLdouble y, GLdouble z ); -GLAPI void GLAPIENTRY glVertex3f( GLfloat x, GLfloat y, GLfloat z ); -GLAPI void GLAPIENTRY glVertex3i( GLint x, GLint y, GLint z ); -GLAPI void GLAPIENTRY glVertex3s( GLshort x, GLshort y, GLshort z ); - -GLAPI void GLAPIENTRY glVertex4d( GLdouble x, GLdouble y, GLdouble z, GLdouble w ); -GLAPI void GLAPIENTRY glVertex4f( GLfloat x, GLfloat y, GLfloat z, GLfloat w ); -GLAPI void GLAPIENTRY glVertex4i( GLint x, GLint y, GLint z, GLint w ); -GLAPI void GLAPIENTRY glVertex4s( GLshort x, GLshort y, GLshort z, GLshort w ); - -GLAPI void GLAPIENTRY glVertex2dv( const GLdouble *v ); -GLAPI void GLAPIENTRY glVertex2fv( const GLfloat *v ); -GLAPI void GLAPIENTRY glVertex2iv( const GLint *v ); -GLAPI void GLAPIENTRY glVertex2sv( const GLshort *v ); - -GLAPI void GLAPIENTRY glVertex3dv( const GLdouble *v ); -GLAPI void GLAPIENTRY glVertex3fv( const GLfloat *v ); -GLAPI void GLAPIENTRY glVertex3iv( const GLint *v ); -GLAPI void GLAPIENTRY glVertex3sv( const GLshort *v ); - -GLAPI void GLAPIENTRY glVertex4dv( const GLdouble *v ); -GLAPI void GLAPIENTRY glVertex4fv( const GLfloat *v ); -GLAPI void GLAPIENTRY glVertex4iv( const GLint *v ); -GLAPI void GLAPIENTRY glVertex4sv( const GLshort *v ); - - -GLAPI void GLAPIENTRY glNormal3b( GLbyte nx, GLbyte ny, GLbyte nz ); -GLAPI void GLAPIENTRY glNormal3d( GLdouble nx, GLdouble ny, GLdouble nz ); -GLAPI void GLAPIENTRY glNormal3f( GLfloat nx, GLfloat ny, GLfloat nz ); -GLAPI void GLAPIENTRY glNormal3i( GLint nx, GLint ny, GLint nz ); -GLAPI void GLAPIENTRY glNormal3s( GLshort nx, GLshort ny, GLshort nz ); - -GLAPI void GLAPIENTRY glNormal3bv( const GLbyte *v ); -GLAPI void GLAPIENTRY glNormal3dv( const GLdouble *v ); -GLAPI void GLAPIENTRY glNormal3fv( const GLfloat *v ); -GLAPI void GLAPIENTRY glNormal3iv( const GLint *v ); -GLAPI void GLAPIENTRY glNormal3sv( const GLshort *v ); - - -GLAPI void GLAPIENTRY glIndexd( GLdouble c ); -GLAPI void GLAPIENTRY glIndexf( GLfloat c ); -GLAPI void GLAPIENTRY glIndexi( GLint c ); -GLAPI void GLAPIENTRY glIndexs( GLshort c ); -GLAPI void GLAPIENTRY glIndexub( GLubyte c ); /* 1.1 */ - -GLAPI void GLAPIENTRY glIndexdv( const GLdouble *c ); -GLAPI void GLAPIENTRY glIndexfv( const GLfloat *c ); -GLAPI void GLAPIENTRY glIndexiv( const GLint *c ); -GLAPI void GLAPIENTRY glIndexsv( const GLshort *c ); -GLAPI void GLAPIENTRY glIndexubv( const GLubyte *c ); /* 1.1 */ - -GLAPI void GLAPIENTRY glColor3b( GLbyte red, GLbyte green, GLbyte blue ); -GLAPI void GLAPIENTRY glColor3d( GLdouble red, GLdouble green, GLdouble blue ); -GLAPI void GLAPIENTRY glColor3f( GLfloat red, GLfloat green, GLfloat blue ); -GLAPI void GLAPIENTRY glColor3i( GLint red, GLint green, GLint blue ); -GLAPI void GLAPIENTRY glColor3s( GLshort red, GLshort green, GLshort blue ); -GLAPI void GLAPIENTRY glColor3ub( GLubyte red, GLubyte green, GLubyte blue ); -GLAPI void GLAPIENTRY glColor3ui( GLuint red, GLuint green, GLuint blue ); -GLAPI void GLAPIENTRY glColor3us( GLushort red, GLushort green, GLushort blue ); - -GLAPI void GLAPIENTRY glColor4b( GLbyte red, GLbyte green, - GLbyte blue, GLbyte alpha ); -GLAPI void GLAPIENTRY glColor4d( GLdouble red, GLdouble green, - GLdouble blue, GLdouble alpha ); -GLAPI void GLAPIENTRY glColor4f( GLfloat red, GLfloat green, - GLfloat blue, GLfloat alpha ); -GLAPI void GLAPIENTRY glColor4i( GLint red, GLint green, - GLint blue, GLint alpha ); -GLAPI void GLAPIENTRY glColor4s( GLshort red, GLshort green, - GLshort blue, GLshort alpha ); -GLAPI void GLAPIENTRY glColor4ub( GLubyte red, GLubyte green, - GLubyte blue, GLubyte alpha ); -GLAPI void GLAPIENTRY glColor4ui( GLuint red, GLuint green, - GLuint blue, GLuint alpha ); -GLAPI void GLAPIENTRY glColor4us( GLushort red, GLushort green, - GLushort blue, GLushort alpha ); - - -GLAPI void GLAPIENTRY glColor3bv( const GLbyte *v ); -GLAPI void GLAPIENTRY glColor3dv( const GLdouble *v ); -GLAPI void GLAPIENTRY glColor3fv( const GLfloat *v ); -GLAPI void GLAPIENTRY glColor3iv( const GLint *v ); -GLAPI void GLAPIENTRY glColor3sv( const GLshort *v ); -GLAPI void GLAPIENTRY glColor3ubv( const GLubyte *v ); -GLAPI void GLAPIENTRY glColor3uiv( const GLuint *v ); -GLAPI void GLAPIENTRY glColor3usv( const GLushort *v ); - -GLAPI void GLAPIENTRY glColor4bv( const GLbyte *v ); -GLAPI void GLAPIENTRY glColor4dv( const GLdouble *v ); -GLAPI void GLAPIENTRY glColor4fv( const GLfloat *v ); -GLAPI void GLAPIENTRY glColor4iv( const GLint *v ); -GLAPI void GLAPIENTRY glColor4sv( const GLshort *v ); -GLAPI void GLAPIENTRY glColor4ubv( const GLubyte *v ); -GLAPI void GLAPIENTRY glColor4uiv( const GLuint *v ); -GLAPI void GLAPIENTRY glColor4usv( const GLushort *v ); - - -GLAPI void GLAPIENTRY glTexCoord1d( GLdouble s ); -GLAPI void GLAPIENTRY glTexCoord1f( GLfloat s ); -GLAPI void GLAPIENTRY glTexCoord1i( GLint s ); -GLAPI void GLAPIENTRY glTexCoord1s( GLshort s ); - -GLAPI void GLAPIENTRY glTexCoord2d( GLdouble s, GLdouble t ); -GLAPI void GLAPIENTRY glTexCoord2f( GLfloat s, GLfloat t ); -GLAPI void GLAPIENTRY glTexCoord2i( GLint s, GLint t ); -GLAPI void GLAPIENTRY glTexCoord2s( GLshort s, GLshort t ); - -GLAPI void GLAPIENTRY glTexCoord3d( GLdouble s, GLdouble t, GLdouble r ); -GLAPI void GLAPIENTRY glTexCoord3f( GLfloat s, GLfloat t, GLfloat r ); -GLAPI void GLAPIENTRY glTexCoord3i( GLint s, GLint t, GLint r ); -GLAPI void GLAPIENTRY glTexCoord3s( GLshort s, GLshort t, GLshort r ); - -GLAPI void GLAPIENTRY glTexCoord4d( GLdouble s, GLdouble t, GLdouble r, GLdouble q ); -GLAPI void GLAPIENTRY glTexCoord4f( GLfloat s, GLfloat t, GLfloat r, GLfloat q ); -GLAPI void GLAPIENTRY glTexCoord4i( GLint s, GLint t, GLint r, GLint q ); -GLAPI void GLAPIENTRY glTexCoord4s( GLshort s, GLshort t, GLshort r, GLshort q ); - -GLAPI void GLAPIENTRY glTexCoord1dv( const GLdouble *v ); -GLAPI void GLAPIENTRY glTexCoord1fv( const GLfloat *v ); -GLAPI void GLAPIENTRY glTexCoord1iv( const GLint *v ); -GLAPI void GLAPIENTRY glTexCoord1sv( const GLshort *v ); - -GLAPI void GLAPIENTRY glTexCoord2dv( const GLdouble *v ); -GLAPI void GLAPIENTRY glTexCoord2fv( const GLfloat *v ); -GLAPI void GLAPIENTRY glTexCoord2iv( const GLint *v ); -GLAPI void GLAPIENTRY glTexCoord2sv( const GLshort *v ); - -GLAPI void GLAPIENTRY glTexCoord3dv( const GLdouble *v ); -GLAPI void GLAPIENTRY glTexCoord3fv( const GLfloat *v ); -GLAPI void GLAPIENTRY glTexCoord3iv( const GLint *v ); -GLAPI void GLAPIENTRY glTexCoord3sv( const GLshort *v ); - -GLAPI void GLAPIENTRY glTexCoord4dv( const GLdouble *v ); -GLAPI void GLAPIENTRY glTexCoord4fv( const GLfloat *v ); -GLAPI void GLAPIENTRY glTexCoord4iv( const GLint *v ); -GLAPI void GLAPIENTRY glTexCoord4sv( const GLshort *v ); - - -GLAPI void GLAPIENTRY glRasterPos2d( GLdouble x, GLdouble y ); -GLAPI void GLAPIENTRY glRasterPos2f( GLfloat x, GLfloat y ); -GLAPI void GLAPIENTRY glRasterPos2i( GLint x, GLint y ); -GLAPI void GLAPIENTRY glRasterPos2s( GLshort x, GLshort y ); - -GLAPI void GLAPIENTRY glRasterPos3d( GLdouble x, GLdouble y, GLdouble z ); -GLAPI void GLAPIENTRY glRasterPos3f( GLfloat x, GLfloat y, GLfloat z ); -GLAPI void GLAPIENTRY glRasterPos3i( GLint x, GLint y, GLint z ); -GLAPI void GLAPIENTRY glRasterPos3s( GLshort x, GLshort y, GLshort z ); - -GLAPI void GLAPIENTRY glRasterPos4d( GLdouble x, GLdouble y, GLdouble z, GLdouble w ); -GLAPI void GLAPIENTRY glRasterPos4f( GLfloat x, GLfloat y, GLfloat z, GLfloat w ); -GLAPI void GLAPIENTRY glRasterPos4i( GLint x, GLint y, GLint z, GLint w ); -GLAPI void GLAPIENTRY glRasterPos4s( GLshort x, GLshort y, GLshort z, GLshort w ); - -GLAPI void GLAPIENTRY glRasterPos2dv( const GLdouble *v ); -GLAPI void GLAPIENTRY glRasterPos2fv( const GLfloat *v ); -GLAPI void GLAPIENTRY glRasterPos2iv( const GLint *v ); -GLAPI void GLAPIENTRY glRasterPos2sv( const GLshort *v ); - -GLAPI void GLAPIENTRY glRasterPos3dv( const GLdouble *v ); -GLAPI void GLAPIENTRY glRasterPos3fv( const GLfloat *v ); -GLAPI void GLAPIENTRY glRasterPos3iv( const GLint *v ); -GLAPI void GLAPIENTRY glRasterPos3sv( const GLshort *v ); - -GLAPI void GLAPIENTRY glRasterPos4dv( const GLdouble *v ); -GLAPI void GLAPIENTRY glRasterPos4fv( const GLfloat *v ); -GLAPI void GLAPIENTRY glRasterPos4iv( const GLint *v ); -GLAPI void GLAPIENTRY glRasterPos4sv( const GLshort *v ); - - -GLAPI void GLAPIENTRY glRectd( GLdouble x1, GLdouble y1, GLdouble x2, GLdouble y2 ); -GLAPI void GLAPIENTRY glRectf( GLfloat x1, GLfloat y1, GLfloat x2, GLfloat y2 ); -GLAPI void GLAPIENTRY glRecti( GLint x1, GLint y1, GLint x2, GLint y2 ); -GLAPI void GLAPIENTRY glRects( GLshort x1, GLshort y1, GLshort x2, GLshort y2 ); - - -GLAPI void GLAPIENTRY glRectdv( const GLdouble *v1, const GLdouble *v2 ); -GLAPI void GLAPIENTRY glRectfv( const GLfloat *v1, const GLfloat *v2 ); -GLAPI void GLAPIENTRY glRectiv( const GLint *v1, const GLint *v2 ); -GLAPI void GLAPIENTRY glRectsv( const GLshort *v1, const GLshort *v2 ); - - -/* - * Vertex Arrays (1.1) - */ - -GLAPI void GLAPIENTRY glVertexPointer( GLint size, GLenum type, - GLsizei stride, const GLvoid *ptr ); - -GLAPI void GLAPIENTRY glNormalPointer( GLenum type, GLsizei stride, - const GLvoid *ptr ); - -GLAPI void GLAPIENTRY glColorPointer( GLint size, GLenum type, - GLsizei stride, const GLvoid *ptr ); - -GLAPI void GLAPIENTRY glIndexPointer( GLenum type, GLsizei stride, - const GLvoid *ptr ); - -GLAPI void GLAPIENTRY glTexCoordPointer( GLint size, GLenum type, - GLsizei stride, const GLvoid *ptr ); - -GLAPI void GLAPIENTRY glEdgeFlagPointer( GLsizei stride, const GLvoid *ptr ); - -GLAPI void GLAPIENTRY glGetPointerv( GLenum pname, GLvoid **params ); - -GLAPI void GLAPIENTRY glArrayElement( GLint i ); - -GLAPI void GLAPIENTRY glDrawArrays( GLenum mode, GLint first, GLsizei count ); - -GLAPI void GLAPIENTRY glDrawElements( GLenum mode, GLsizei count, - GLenum type, const GLvoid *indices ); - -GLAPI void GLAPIENTRY glInterleavedArrays( GLenum format, GLsizei stride, - const GLvoid *pointer ); - -/* - * Lighting - */ - -GLAPI void GLAPIENTRY glShadeModel( GLenum mode ); - -GLAPI void GLAPIENTRY glLightf( GLenum light, GLenum pname, GLfloat param ); -GLAPI void GLAPIENTRY glLighti( GLenum light, GLenum pname, GLint param ); -GLAPI void GLAPIENTRY glLightfv( GLenum light, GLenum pname, - const GLfloat *params ); -GLAPI void GLAPIENTRY glLightiv( GLenum light, GLenum pname, - const GLint *params ); - -GLAPI void GLAPIENTRY glGetLightfv( GLenum light, GLenum pname, - GLfloat *params ); -GLAPI void GLAPIENTRY glGetLightiv( GLenum light, GLenum pname, - GLint *params ); - -GLAPI void GLAPIENTRY glLightModelf( GLenum pname, GLfloat param ); -GLAPI void GLAPIENTRY glLightModeli( GLenum pname, GLint param ); -GLAPI void GLAPIENTRY glLightModelfv( GLenum pname, const GLfloat *params ); -GLAPI void GLAPIENTRY glLightModeliv( GLenum pname, const GLint *params ); - -GLAPI void GLAPIENTRY glMaterialf( GLenum face, GLenum pname, GLfloat param ); -GLAPI void GLAPIENTRY glMateriali( GLenum face, GLenum pname, GLint param ); -GLAPI void GLAPIENTRY glMaterialfv( GLenum face, GLenum pname, const GLfloat *params ); -GLAPI void GLAPIENTRY glMaterialiv( GLenum face, GLenum pname, const GLint *params ); - -GLAPI void GLAPIENTRY glGetMaterialfv( GLenum face, GLenum pname, GLfloat *params ); -GLAPI void GLAPIENTRY glGetMaterialiv( GLenum face, GLenum pname, GLint *params ); - -GLAPI void GLAPIENTRY glColorMaterial( GLenum face, GLenum mode ); - - -/* - * Raster functions - */ - -GLAPI void GLAPIENTRY glPixelZoom( GLfloat xfactor, GLfloat yfactor ); - -GLAPI void GLAPIENTRY glPixelStoref( GLenum pname, GLfloat param ); -GLAPI void GLAPIENTRY glPixelStorei( GLenum pname, GLint param ); - -GLAPI void GLAPIENTRY glPixelTransferf( GLenum pname, GLfloat param ); -GLAPI void GLAPIENTRY glPixelTransferi( GLenum pname, GLint param ); - -GLAPI void GLAPIENTRY glPixelMapfv( GLenum map, GLsizei mapsize, - const GLfloat *values ); -GLAPI void GLAPIENTRY glPixelMapuiv( GLenum map, GLsizei mapsize, - const GLuint *values ); -GLAPI void GLAPIENTRY glPixelMapusv( GLenum map, GLsizei mapsize, - const GLushort *values ); - -GLAPI void GLAPIENTRY glGetPixelMapfv( GLenum map, GLfloat *values ); -GLAPI void GLAPIENTRY glGetPixelMapuiv( GLenum map, GLuint *values ); -GLAPI void GLAPIENTRY glGetPixelMapusv( GLenum map, GLushort *values ); - -GLAPI void GLAPIENTRY glBitmap( GLsizei width, GLsizei height, - GLfloat xorig, GLfloat yorig, - GLfloat xmove, GLfloat ymove, - const GLubyte *bitmap ); - -GLAPI void GLAPIENTRY glReadPixels( GLint x, GLint y, - GLsizei width, GLsizei height, - GLenum format, GLenum type, - GLvoid *pixels ); - -GLAPI void GLAPIENTRY glDrawPixels( GLsizei width, GLsizei height, - GLenum format, GLenum type, - const GLvoid *pixels ); - -GLAPI void GLAPIENTRY glCopyPixels( GLint x, GLint y, - GLsizei width, GLsizei height, - GLenum type ); - -/* - * Stenciling - */ - -GLAPI void GLAPIENTRY glStencilFunc( GLenum func, GLint ref, GLuint mask ); - -GLAPI void GLAPIENTRY glStencilMask( GLuint mask ); - -GLAPI void GLAPIENTRY glStencilOp( GLenum fail, GLenum zfail, GLenum zpass ); - -GLAPI void GLAPIENTRY glClearStencil( GLint s ); - - - -/* - * Texture mapping - */ - -GLAPI void GLAPIENTRY glTexGend( GLenum coord, GLenum pname, GLdouble param ); -GLAPI void GLAPIENTRY glTexGenf( GLenum coord, GLenum pname, GLfloat param ); -GLAPI void GLAPIENTRY glTexGeni( GLenum coord, GLenum pname, GLint param ); - -GLAPI void GLAPIENTRY glTexGendv( GLenum coord, GLenum pname, const GLdouble *params ); -GLAPI void GLAPIENTRY glTexGenfv( GLenum coord, GLenum pname, const GLfloat *params ); -GLAPI void GLAPIENTRY glTexGeniv( GLenum coord, GLenum pname, const GLint *params ); - -GLAPI void GLAPIENTRY glGetTexGendv( GLenum coord, GLenum pname, GLdouble *params ); -GLAPI void GLAPIENTRY glGetTexGenfv( GLenum coord, GLenum pname, GLfloat *params ); -GLAPI void GLAPIENTRY glGetTexGeniv( GLenum coord, GLenum pname, GLint *params ); - - -GLAPI void GLAPIENTRY glTexEnvf( GLenum target, GLenum pname, GLfloat param ); -GLAPI void GLAPIENTRY glTexEnvi( GLenum target, GLenum pname, GLint param ); - -GLAPI void GLAPIENTRY glTexEnvfv( GLenum target, GLenum pname, const GLfloat *params ); -GLAPI void GLAPIENTRY glTexEnviv( GLenum target, GLenum pname, const GLint *params ); - -GLAPI void GLAPIENTRY glGetTexEnvfv( GLenum target, GLenum pname, GLfloat *params ); -GLAPI void GLAPIENTRY glGetTexEnviv( GLenum target, GLenum pname, GLint *params ); - - -GLAPI void GLAPIENTRY glTexParameterf( GLenum target, GLenum pname, GLfloat param ); -GLAPI void GLAPIENTRY glTexParameteri( GLenum target, GLenum pname, GLint param ); - -GLAPI void GLAPIENTRY glTexParameterfv( GLenum target, GLenum pname, - const GLfloat *params ); -GLAPI void GLAPIENTRY glTexParameteriv( GLenum target, GLenum pname, - const GLint *params ); - -GLAPI void GLAPIENTRY glGetTexParameterfv( GLenum target, - GLenum pname, GLfloat *params); -GLAPI void GLAPIENTRY glGetTexParameteriv( GLenum target, - GLenum pname, GLint *params ); - -GLAPI void GLAPIENTRY glGetTexLevelParameterfv( GLenum target, GLint level, - GLenum pname, GLfloat *params ); -GLAPI void GLAPIENTRY glGetTexLevelParameteriv( GLenum target, GLint level, - GLenum pname, GLint *params ); - - -GLAPI void GLAPIENTRY glTexImage1D( GLenum target, GLint level, - GLint internalFormat, - GLsizei width, GLint border, - GLenum format, GLenum type, - const GLvoid *pixels ); - -GLAPI void GLAPIENTRY glTexImage2D( GLenum target, GLint level, - GLint internalFormat, - GLsizei width, GLsizei height, - GLint border, GLenum format, GLenum type, - const GLvoid *pixels ); - -GLAPI void GLAPIENTRY glGetTexImage( GLenum target, GLint level, - GLenum format, GLenum type, - GLvoid *pixels ); - - -/* 1.1 functions */ - -GLAPI void GLAPIENTRY glGenTextures( GLsizei n, GLuint *textures ); - -GLAPI void GLAPIENTRY glDeleteTextures( GLsizei n, const GLuint *textures); - -GLAPI void GLAPIENTRY glBindTexture( GLenum target, GLuint texture ); - -GLAPI void GLAPIENTRY glPrioritizeTextures( GLsizei n, - const GLuint *textures, - const GLclampf *priorities ); - -GLAPI GLboolean GLAPIENTRY glAreTexturesResident( GLsizei n, - const GLuint *textures, - GLboolean *residences ); - -GLAPI GLboolean GLAPIENTRY glIsTexture( GLuint texture ); - - -GLAPI void GLAPIENTRY glTexSubImage1D( GLenum target, GLint level, - GLint xoffset, - GLsizei width, GLenum format, - GLenum type, const GLvoid *pixels ); - - -GLAPI void GLAPIENTRY glTexSubImage2D( GLenum target, GLint level, - GLint xoffset, GLint yoffset, - GLsizei width, GLsizei height, - GLenum format, GLenum type, - const GLvoid *pixels ); - - -GLAPI void GLAPIENTRY glCopyTexImage1D( GLenum target, GLint level, - GLenum internalformat, - GLint x, GLint y, - GLsizei width, GLint border ); - - -GLAPI void GLAPIENTRY glCopyTexImage2D( GLenum target, GLint level, - GLenum internalformat, - GLint x, GLint y, - GLsizei width, GLsizei height, - GLint border ); - - -GLAPI void GLAPIENTRY glCopyTexSubImage1D( GLenum target, GLint level, - GLint xoffset, GLint x, GLint y, - GLsizei width ); - - -GLAPI void GLAPIENTRY glCopyTexSubImage2D( GLenum target, GLint level, - GLint xoffset, GLint yoffset, - GLint x, GLint y, - GLsizei width, GLsizei height ); - - -/* - * Evaluators - */ - -GLAPI void GLAPIENTRY glMap1d( GLenum target, GLdouble u1, GLdouble u2, - GLint stride, - GLint order, const GLdouble *points ); -GLAPI void GLAPIENTRY glMap1f( GLenum target, GLfloat u1, GLfloat u2, - GLint stride, - GLint order, const GLfloat *points ); - -GLAPI void GLAPIENTRY glMap2d( GLenum target, - GLdouble u1, GLdouble u2, GLint ustride, GLint uorder, - GLdouble v1, GLdouble v2, GLint vstride, GLint vorder, - const GLdouble *points ); -GLAPI void GLAPIENTRY glMap2f( GLenum target, - GLfloat u1, GLfloat u2, GLint ustride, GLint uorder, - GLfloat v1, GLfloat v2, GLint vstride, GLint vorder, - const GLfloat *points ); - -GLAPI void GLAPIENTRY glGetMapdv( GLenum target, GLenum query, GLdouble *v ); -GLAPI void GLAPIENTRY glGetMapfv( GLenum target, GLenum query, GLfloat *v ); -GLAPI void GLAPIENTRY glGetMapiv( GLenum target, GLenum query, GLint *v ); - -GLAPI void GLAPIENTRY glEvalCoord1d( GLdouble u ); -GLAPI void GLAPIENTRY glEvalCoord1f( GLfloat u ); - -GLAPI void GLAPIENTRY glEvalCoord1dv( const GLdouble *u ); -GLAPI void GLAPIENTRY glEvalCoord1fv( const GLfloat *u ); - -GLAPI void GLAPIENTRY glEvalCoord2d( GLdouble u, GLdouble v ); -GLAPI void GLAPIENTRY glEvalCoord2f( GLfloat u, GLfloat v ); - -GLAPI void GLAPIENTRY glEvalCoord2dv( const GLdouble *u ); -GLAPI void GLAPIENTRY glEvalCoord2fv( const GLfloat *u ); - -GLAPI void GLAPIENTRY glMapGrid1d( GLint un, GLdouble u1, GLdouble u2 ); -GLAPI void GLAPIENTRY glMapGrid1f( GLint un, GLfloat u1, GLfloat u2 ); - -GLAPI void GLAPIENTRY glMapGrid2d( GLint un, GLdouble u1, GLdouble u2, - GLint vn, GLdouble v1, GLdouble v2 ); -GLAPI void GLAPIENTRY glMapGrid2f( GLint un, GLfloat u1, GLfloat u2, - GLint vn, GLfloat v1, GLfloat v2 ); - -GLAPI void GLAPIENTRY glEvalPoint1( GLint i ); - -GLAPI void GLAPIENTRY glEvalPoint2( GLint i, GLint j ); - -GLAPI void GLAPIENTRY glEvalMesh1( GLenum mode, GLint i1, GLint i2 ); - -GLAPI void GLAPIENTRY glEvalMesh2( GLenum mode, GLint i1, GLint i2, GLint j1, GLint j2 ); - - -/* - * Fog - */ - -GLAPI void GLAPIENTRY glFogf( GLenum pname, GLfloat param ); - -GLAPI void GLAPIENTRY glFogi( GLenum pname, GLint param ); - -GLAPI void GLAPIENTRY glFogfv( GLenum pname, const GLfloat *params ); - -GLAPI void GLAPIENTRY glFogiv( GLenum pname, const GLint *params ); - - -/* - * Selection and Feedback - */ - -GLAPI void GLAPIENTRY glFeedbackBuffer( GLsizei size, GLenum type, GLfloat *buffer ); - -GLAPI void GLAPIENTRY glPassThrough( GLfloat token ); - -GLAPI void GLAPIENTRY glSelectBuffer( GLsizei size, GLuint *buffer ); - -GLAPI void GLAPIENTRY glInitNames( void ); - -GLAPI void GLAPIENTRY glLoadName( GLuint name ); - -GLAPI void GLAPIENTRY glPushName( GLuint name ); - -GLAPI void GLAPIENTRY glPopName( void ); - - - -/* - * OpenGL 1.2 - */ - -#define GL_RESCALE_NORMAL 0x803A -#define GL_CLAMP_TO_EDGE 0x812F -#define GL_MAX_ELEMENTS_VERTICES 0x80E8 -#define GL_MAX_ELEMENTS_INDICES 0x80E9 -#define GL_BGR 0x80E0 -#define GL_BGRA 0x80E1 -#define GL_UNSIGNED_BYTE_3_3_2 0x8032 -#define GL_UNSIGNED_BYTE_2_3_3_REV 0x8362 -#define GL_UNSIGNED_SHORT_5_6_5 0x8363 -#define GL_UNSIGNED_SHORT_5_6_5_REV 0x8364 -#define GL_UNSIGNED_SHORT_4_4_4_4 0x8033 -#define GL_UNSIGNED_SHORT_4_4_4_4_REV 0x8365 -#define GL_UNSIGNED_SHORT_5_5_5_1 0x8034 -#define GL_UNSIGNED_SHORT_1_5_5_5_REV 0x8366 -#define GL_UNSIGNED_INT_8_8_8_8 0x8035 -#define GL_UNSIGNED_INT_8_8_8_8_REV 0x8367 -#define GL_UNSIGNED_INT_10_10_10_2 0x8036 -#define GL_UNSIGNED_INT_2_10_10_10_REV 0x8368 -#define GL_LIGHT_MODEL_COLOR_CONTROL 0x81F8 -#define GL_SINGLE_COLOR 0x81F9 -#define GL_SEPARATE_SPECULAR_COLOR 0x81FA -#define GL_TEXTURE_MIN_LOD 0x813A -#define GL_TEXTURE_MAX_LOD 0x813B -#define GL_TEXTURE_BASE_LEVEL 0x813C -#define GL_TEXTURE_MAX_LEVEL 0x813D -#define GL_SMOOTH_POINT_SIZE_RANGE 0x0B12 -#define GL_SMOOTH_POINT_SIZE_GRANULARITY 0x0B13 -#define GL_SMOOTH_LINE_WIDTH_RANGE 0x0B22 -#define GL_SMOOTH_LINE_WIDTH_GRANULARITY 0x0B23 -#define GL_ALIASED_POINT_SIZE_RANGE 0x846D -#define GL_ALIASED_LINE_WIDTH_RANGE 0x846E -#define GL_PACK_SKIP_IMAGES 0x806B -#define GL_PACK_IMAGE_HEIGHT 0x806C -#define GL_UNPACK_SKIP_IMAGES 0x806D -#define GL_UNPACK_IMAGE_HEIGHT 0x806E -#define GL_TEXTURE_3D 0x806F -#define GL_PROXY_TEXTURE_3D 0x8070 -#define GL_TEXTURE_DEPTH 0x8071 -#define GL_TEXTURE_WRAP_R 0x8072 -#define GL_MAX_3D_TEXTURE_SIZE 0x8073 -#define GL_TEXTURE_BINDING_3D 0x806A - -GLAPI void GLAPIENTRY glDrawRangeElements( GLenum mode, GLuint start, - GLuint end, GLsizei count, GLenum type, const GLvoid *indices ); - -GLAPI void GLAPIENTRY glTexImage3D( GLenum target, GLint level, - GLint internalFormat, - GLsizei width, GLsizei height, - GLsizei depth, GLint border, - GLenum format, GLenum type, - const GLvoid *pixels ); - -GLAPI void GLAPIENTRY glTexSubImage3D( GLenum target, GLint level, - GLint xoffset, GLint yoffset, - GLint zoffset, GLsizei width, - GLsizei height, GLsizei depth, - GLenum format, - GLenum type, const GLvoid *pixels); - -GLAPI void GLAPIENTRY glCopyTexSubImage3D( GLenum target, GLint level, - GLint xoffset, GLint yoffset, - GLint zoffset, GLint x, - GLint y, GLsizei width, - GLsizei height ); - -typedef void (APIENTRYP PFNGLDRAWRANGEELEMENTSPROC) (GLenum mode, GLuint start, GLuint end, GLsizei count, GLenum type, const GLvoid *indices); -typedef void (APIENTRYP PFNGLTEXIMAGE3DPROC) (GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLenum format, GLenum type, const GLvoid *pixels); -typedef void (APIENTRYP PFNGLTEXSUBIMAGE3DPROC) (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, const GLvoid *pixels); -typedef void (APIENTRYP PFNGLCOPYTEXSUBIMAGE3DPROC) (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLint x, GLint y, GLsizei width, GLsizei height); - - -/* - * GL_ARB_imaging - */ - -#define GL_CONSTANT_COLOR 0x8001 -#define GL_ONE_MINUS_CONSTANT_COLOR 0x8002 -#define GL_CONSTANT_ALPHA 0x8003 -#define GL_ONE_MINUS_CONSTANT_ALPHA 0x8004 -#define GL_COLOR_TABLE 0x80D0 -#define GL_POST_CONVOLUTION_COLOR_TABLE 0x80D1 -#define GL_POST_COLOR_MATRIX_COLOR_TABLE 0x80D2 -#define GL_PROXY_COLOR_TABLE 0x80D3 -#define GL_PROXY_POST_CONVOLUTION_COLOR_TABLE 0x80D4 -#define GL_PROXY_POST_COLOR_MATRIX_COLOR_TABLE 0x80D5 -#define GL_COLOR_TABLE_SCALE 0x80D6 -#define GL_COLOR_TABLE_BIAS 0x80D7 -#define GL_COLOR_TABLE_FORMAT 0x80D8 -#define GL_COLOR_TABLE_WIDTH 0x80D9 -#define GL_COLOR_TABLE_RED_SIZE 0x80DA -#define GL_COLOR_TABLE_GREEN_SIZE 0x80DB -#define GL_COLOR_TABLE_BLUE_SIZE 0x80DC -#define GL_COLOR_TABLE_ALPHA_SIZE 0x80DD -#define GL_COLOR_TABLE_LUMINANCE_SIZE 0x80DE -#define GL_COLOR_TABLE_INTENSITY_SIZE 0x80DF -#define GL_CONVOLUTION_1D 0x8010 -#define GL_CONVOLUTION_2D 0x8011 -#define GL_SEPARABLE_2D 0x8012 -#define GL_CONVOLUTION_BORDER_MODE 0x8013 -#define GL_CONVOLUTION_FILTER_SCALE 0x8014 -#define GL_CONVOLUTION_FILTER_BIAS 0x8015 -#define GL_REDUCE 0x8016 -#define GL_CONVOLUTION_FORMAT 0x8017 -#define GL_CONVOLUTION_WIDTH 0x8018 -#define GL_CONVOLUTION_HEIGHT 0x8019 -#define GL_MAX_CONVOLUTION_WIDTH 0x801A -#define GL_MAX_CONVOLUTION_HEIGHT 0x801B -#define GL_POST_CONVOLUTION_RED_SCALE 0x801C -#define GL_POST_CONVOLUTION_GREEN_SCALE 0x801D -#define GL_POST_CONVOLUTION_BLUE_SCALE 0x801E -#define GL_POST_CONVOLUTION_ALPHA_SCALE 0x801F -#define GL_POST_CONVOLUTION_RED_BIAS 0x8020 -#define GL_POST_CONVOLUTION_GREEN_BIAS 0x8021 -#define GL_POST_CONVOLUTION_BLUE_BIAS 0x8022 -#define GL_POST_CONVOLUTION_ALPHA_BIAS 0x8023 -#define GL_CONSTANT_BORDER 0x8151 -#define GL_REPLICATE_BORDER 0x8153 -#define GL_CONVOLUTION_BORDER_COLOR 0x8154 -#define GL_COLOR_MATRIX 0x80B1 -#define GL_COLOR_MATRIX_STACK_DEPTH 0x80B2 -#define GL_MAX_COLOR_MATRIX_STACK_DEPTH 0x80B3 -#define GL_POST_COLOR_MATRIX_RED_SCALE 0x80B4 -#define GL_POST_COLOR_MATRIX_GREEN_SCALE 0x80B5 -#define GL_POST_COLOR_MATRIX_BLUE_SCALE 0x80B6 -#define GL_POST_COLOR_MATRIX_ALPHA_SCALE 0x80B7 -#define GL_POST_COLOR_MATRIX_RED_BIAS 0x80B8 -#define GL_POST_COLOR_MATRIX_GREEN_BIAS 0x80B9 -#define GL_POST_COLOR_MATRIX_BLUE_BIAS 0x80BA -#define GL_POST_COLOR_MATRIX_ALPHA_BIAS 0x80BB -#define GL_HISTOGRAM 0x8024 -#define GL_PROXY_HISTOGRAM 0x8025 -#define GL_HISTOGRAM_WIDTH 0x8026 -#define GL_HISTOGRAM_FORMAT 0x8027 -#define GL_HISTOGRAM_RED_SIZE 0x8028 -#define GL_HISTOGRAM_GREEN_SIZE 0x8029 -#define GL_HISTOGRAM_BLUE_SIZE 0x802A -#define GL_HISTOGRAM_ALPHA_SIZE 0x802B -#define GL_HISTOGRAM_LUMINANCE_SIZE 0x802C -#define GL_HISTOGRAM_SINK 0x802D -#define GL_MINMAX 0x802E -#define GL_MINMAX_FORMAT 0x802F -#define GL_MINMAX_SINK 0x8030 -#define GL_TABLE_TOO_LARGE 0x8031 -#define GL_BLEND_EQUATION 0x8009 -#define GL_MIN 0x8007 -#define GL_MAX 0x8008 -#define GL_FUNC_ADD 0x8006 -#define GL_FUNC_SUBTRACT 0x800A -#define GL_FUNC_REVERSE_SUBTRACT 0x800B -#define GL_BLEND_COLOR 0x8005 - - -GLAPI void GLAPIENTRY glColorTable( GLenum target, GLenum internalformat, - GLsizei width, GLenum format, - GLenum type, const GLvoid *table ); - -GLAPI void GLAPIENTRY glColorSubTable( GLenum target, - GLsizei start, GLsizei count, - GLenum format, GLenum type, - const GLvoid *data ); - -GLAPI void GLAPIENTRY glColorTableParameteriv(GLenum target, GLenum pname, - const GLint *params); - -GLAPI void GLAPIENTRY glColorTableParameterfv(GLenum target, GLenum pname, - const GLfloat *params); - -GLAPI void GLAPIENTRY glCopyColorSubTable( GLenum target, GLsizei start, - GLint x, GLint y, GLsizei width ); - -GLAPI void GLAPIENTRY glCopyColorTable( GLenum target, GLenum internalformat, - GLint x, GLint y, GLsizei width ); - -GLAPI void GLAPIENTRY glGetColorTable( GLenum target, GLenum format, - GLenum type, GLvoid *table ); - -GLAPI void GLAPIENTRY glGetColorTableParameterfv( GLenum target, GLenum pname, - GLfloat *params ); - -GLAPI void GLAPIENTRY glGetColorTableParameteriv( GLenum target, GLenum pname, - GLint *params ); - -GLAPI void GLAPIENTRY glBlendEquation( GLenum mode ); - -GLAPI void GLAPIENTRY glBlendColor( GLclampf red, GLclampf green, - GLclampf blue, GLclampf alpha ); - -GLAPI void GLAPIENTRY glHistogram( GLenum target, GLsizei width, - GLenum internalformat, GLboolean sink ); - -GLAPI void GLAPIENTRY glResetHistogram( GLenum target ); - -GLAPI void GLAPIENTRY glGetHistogram( GLenum target, GLboolean reset, - GLenum format, GLenum type, - GLvoid *values ); - -GLAPI void GLAPIENTRY glGetHistogramParameterfv( GLenum target, GLenum pname, - GLfloat *params ); - -GLAPI void GLAPIENTRY glGetHistogramParameteriv( GLenum target, GLenum pname, - GLint *params ); - -GLAPI void GLAPIENTRY glMinmax( GLenum target, GLenum internalformat, - GLboolean sink ); - -GLAPI void GLAPIENTRY glResetMinmax( GLenum target ); - -GLAPI void GLAPIENTRY glGetMinmax( GLenum target, GLboolean reset, - GLenum format, GLenum types, - GLvoid *values ); - -GLAPI void GLAPIENTRY glGetMinmaxParameterfv( GLenum target, GLenum pname, - GLfloat *params ); - -GLAPI void GLAPIENTRY glGetMinmaxParameteriv( GLenum target, GLenum pname, - GLint *params ); - -GLAPI void GLAPIENTRY glConvolutionFilter1D( GLenum target, - GLenum internalformat, GLsizei width, GLenum format, GLenum type, - const GLvoid *image ); - -GLAPI void GLAPIENTRY glConvolutionFilter2D( GLenum target, - GLenum internalformat, GLsizei width, GLsizei height, GLenum format, - GLenum type, const GLvoid *image ); - -GLAPI void GLAPIENTRY glConvolutionParameterf( GLenum target, GLenum pname, - GLfloat params ); - -GLAPI void GLAPIENTRY glConvolutionParameterfv( GLenum target, GLenum pname, - const GLfloat *params ); - -GLAPI void GLAPIENTRY glConvolutionParameteri( GLenum target, GLenum pname, - GLint params ); - -GLAPI void GLAPIENTRY glConvolutionParameteriv( GLenum target, GLenum pname, - const GLint *params ); - -GLAPI void GLAPIENTRY glCopyConvolutionFilter1D( GLenum target, - GLenum internalformat, GLint x, GLint y, GLsizei width ); - -GLAPI void GLAPIENTRY glCopyConvolutionFilter2D( GLenum target, - GLenum internalformat, GLint x, GLint y, GLsizei width, - GLsizei height); - -GLAPI void GLAPIENTRY glGetConvolutionFilter( GLenum target, GLenum format, - GLenum type, GLvoid *image ); - -GLAPI void GLAPIENTRY glGetConvolutionParameterfv( GLenum target, GLenum pname, - GLfloat *params ); - -GLAPI void GLAPIENTRY glGetConvolutionParameteriv( GLenum target, GLenum pname, - GLint *params ); - -GLAPI void GLAPIENTRY glSeparableFilter2D( GLenum target, - GLenum internalformat, GLsizei width, GLsizei height, GLenum format, - GLenum type, const GLvoid *row, const GLvoid *column ); - -GLAPI void GLAPIENTRY glGetSeparableFilter( GLenum target, GLenum format, - GLenum type, GLvoid *row, GLvoid *column, GLvoid *span ); - -typedef void (APIENTRYP PFNGLBLENDCOLORPROC) (GLclampf red, GLclampf green, GLclampf blue, GLclampf alpha); -typedef void (APIENTRYP PFNGLBLENDEQUATIONPROC) (GLenum mode); -typedef void (APIENTRYP PFNGLCOLORTABLEPROC) (GLenum target, GLenum internalformat, GLsizei width, GLenum format, GLenum type, const GLvoid *table); -typedef void (APIENTRYP PFNGLCOLORTABLEPARAMETERFVPROC) (GLenum target, GLenum pname, const GLfloat *params); -typedef void (APIENTRYP PFNGLCOLORTABLEPARAMETERIVPROC) (GLenum target, GLenum pname, const GLint *params); -typedef void (APIENTRYP PFNGLCOPYCOLORTABLEPROC) (GLenum target, GLenum internalformat, GLint x, GLint y, GLsizei width); -typedef void (APIENTRYP PFNGLGETCOLORTABLEPROC) (GLenum target, GLenum format, GLenum type, GLvoid *table); -typedef void (APIENTRYP PFNGLGETCOLORTABLEPARAMETERFVPROC) (GLenum target, GLenum pname, GLfloat *params); -typedef void (APIENTRYP PFNGLGETCOLORTABLEPARAMETERIVPROC) (GLenum target, GLenum pname, GLint *params); -typedef void (APIENTRYP PFNGLCOLORSUBTABLEPROC) (GLenum target, GLsizei start, GLsizei count, GLenum format, GLenum type, const GLvoid *data); -typedef void (APIENTRYP PFNGLCOPYCOLORSUBTABLEPROC) (GLenum target, GLsizei start, GLint x, GLint y, GLsizei width); -typedef void (APIENTRYP PFNGLCONVOLUTIONFILTER1DPROC) (GLenum target, GLenum internalformat, GLsizei width, GLenum format, GLenum type, const GLvoid *image); -typedef void (APIENTRYP PFNGLCONVOLUTIONFILTER2DPROC) (GLenum target, GLenum internalformat, GLsizei width, GLsizei height, GLenum format, GLenum type, const GLvoid *image); -typedef void (APIENTRYP PFNGLCONVOLUTIONPARAMETERFPROC) (GLenum target, GLenum pname, GLfloat params); -typedef void (APIENTRYP PFNGLCONVOLUTIONPARAMETERFVPROC) (GLenum target, GLenum pname, const GLfloat *params); -typedef void (APIENTRYP PFNGLCONVOLUTIONPARAMETERIPROC) (GLenum target, GLenum pname, GLint params); -typedef void (APIENTRYP PFNGLCONVOLUTIONPARAMETERIVPROC) (GLenum target, GLenum pname, const GLint *params); -typedef void (APIENTRYP PFNGLCOPYCONVOLUTIONFILTER1DPROC) (GLenum target, GLenum internalformat, GLint x, GLint y, GLsizei width); -typedef void (APIENTRYP PFNGLCOPYCONVOLUTIONFILTER2DPROC) (GLenum target, GLenum internalformat, GLint x, GLint y, GLsizei width, GLsizei height); -typedef void (APIENTRYP PFNGLGETCONVOLUTIONFILTERPROC) (GLenum target, GLenum format, GLenum type, GLvoid *image); -typedef void (APIENTRYP PFNGLGETCONVOLUTIONPARAMETERFVPROC) (GLenum target, GLenum pname, GLfloat *params); -typedef void (APIENTRYP PFNGLGETCONVOLUTIONPARAMETERIVPROC) (GLenum target, GLenum pname, GLint *params); -typedef void (APIENTRYP PFNGLGETSEPARABLEFILTERPROC) (GLenum target, GLenum format, GLenum type, GLvoid *row, GLvoid *column, GLvoid *span); -typedef void (APIENTRYP PFNGLSEPARABLEFILTER2DPROC) (GLenum target, GLenum internalformat, GLsizei width, GLsizei height, GLenum format, GLenum type, const GLvoid *row, const GLvoid *column); -typedef void (APIENTRYP PFNGLGETHISTOGRAMPROC) (GLenum target, GLboolean reset, GLenum format, GLenum type, GLvoid *values); -typedef void (APIENTRYP PFNGLGETHISTOGRAMPARAMETERFVPROC) (GLenum target, GLenum pname, GLfloat *params); -typedef void (APIENTRYP PFNGLGETHISTOGRAMPARAMETERIVPROC) (GLenum target, GLenum pname, GLint *params); -typedef void (APIENTRYP PFNGLGETMINMAXPROC) (GLenum target, GLboolean reset, GLenum format, GLenum type, GLvoid *values); -typedef void (APIENTRYP PFNGLGETMINMAXPARAMETERFVPROC) (GLenum target, GLenum pname, GLfloat *params); -typedef void (APIENTRYP PFNGLGETMINMAXPARAMETERIVPROC) (GLenum target, GLenum pname, GLint *params); -typedef void (APIENTRYP PFNGLHISTOGRAMPROC) (GLenum target, GLsizei width, GLenum internalformat, GLboolean sink); -typedef void (APIENTRYP PFNGLMINMAXPROC) (GLenum target, GLenum internalformat, GLboolean sink); -typedef void (APIENTRYP PFNGLRESETHISTOGRAMPROC) (GLenum target); -typedef void (APIENTRYP PFNGLRESETMINMAXPROC) (GLenum target); - - - -/* - * OpenGL 1.3 - */ - -/* multitexture */ -#define GL_TEXTURE0 0x84C0 -#define GL_TEXTURE1 0x84C1 -#define GL_TEXTURE2 0x84C2 -#define GL_TEXTURE3 0x84C3 -#define GL_TEXTURE4 0x84C4 -#define GL_TEXTURE5 0x84C5 -#define GL_TEXTURE6 0x84C6 -#define GL_TEXTURE7 0x84C7 -#define GL_TEXTURE8 0x84C8 -#define GL_TEXTURE9 0x84C9 -#define GL_TEXTURE10 0x84CA -#define GL_TEXTURE11 0x84CB -#define GL_TEXTURE12 0x84CC -#define GL_TEXTURE13 0x84CD -#define GL_TEXTURE14 0x84CE -#define GL_TEXTURE15 0x84CF -#define GL_TEXTURE16 0x84D0 -#define GL_TEXTURE17 0x84D1 -#define GL_TEXTURE18 0x84D2 -#define GL_TEXTURE19 0x84D3 -#define GL_TEXTURE20 0x84D4 -#define GL_TEXTURE21 0x84D5 -#define GL_TEXTURE22 0x84D6 -#define GL_TEXTURE23 0x84D7 -#define GL_TEXTURE24 0x84D8 -#define GL_TEXTURE25 0x84D9 -#define GL_TEXTURE26 0x84DA -#define GL_TEXTURE27 0x84DB -#define GL_TEXTURE28 0x84DC -#define GL_TEXTURE29 0x84DD -#define GL_TEXTURE30 0x84DE -#define GL_TEXTURE31 0x84DF -#define GL_ACTIVE_TEXTURE 0x84E0 -#define GL_CLIENT_ACTIVE_TEXTURE 0x84E1 -#define GL_MAX_TEXTURE_UNITS 0x84E2 -/* texture_cube_map */ -#define GL_NORMAL_MAP 0x8511 -#define GL_REFLECTION_MAP 0x8512 -#define GL_TEXTURE_CUBE_MAP 0x8513 -#define GL_TEXTURE_BINDING_CUBE_MAP 0x8514 -#define GL_TEXTURE_CUBE_MAP_POSITIVE_X 0x8515 -#define GL_TEXTURE_CUBE_MAP_NEGATIVE_X 0x8516 -#define GL_TEXTURE_CUBE_MAP_POSITIVE_Y 0x8517 -#define GL_TEXTURE_CUBE_MAP_NEGATIVE_Y 0x8518 -#define GL_TEXTURE_CUBE_MAP_POSITIVE_Z 0x8519 -#define GL_TEXTURE_CUBE_MAP_NEGATIVE_Z 0x851A -#define GL_PROXY_TEXTURE_CUBE_MAP 0x851B -#define GL_MAX_CUBE_MAP_TEXTURE_SIZE 0x851C -/* texture_compression */ -#define GL_COMPRESSED_ALPHA 0x84E9 -#define GL_COMPRESSED_LUMINANCE 0x84EA -#define GL_COMPRESSED_LUMINANCE_ALPHA 0x84EB -#define GL_COMPRESSED_INTENSITY 0x84EC -#define GL_COMPRESSED_RGB 0x84ED -#define GL_COMPRESSED_RGBA 0x84EE -#define GL_TEXTURE_COMPRESSION_HINT 0x84EF -#define GL_TEXTURE_COMPRESSED_IMAGE_SIZE 0x86A0 -#define GL_TEXTURE_COMPRESSED 0x86A1 -#define GL_NUM_COMPRESSED_TEXTURE_FORMATS 0x86A2 -#define GL_COMPRESSED_TEXTURE_FORMATS 0x86A3 -/* multisample */ -#define GL_MULTISAMPLE 0x809D -#define GL_SAMPLE_ALPHA_TO_COVERAGE 0x809E -#define GL_SAMPLE_ALPHA_TO_ONE 0x809F -#define GL_SAMPLE_COVERAGE 0x80A0 -#define GL_SAMPLE_BUFFERS 0x80A8 -#define GL_SAMPLES 0x80A9 -#define GL_SAMPLE_COVERAGE_VALUE 0x80AA -#define GL_SAMPLE_COVERAGE_INVERT 0x80AB -#define GL_MULTISAMPLE_BIT 0x20000000 -/* transpose_matrix */ -#define GL_TRANSPOSE_MODELVIEW_MATRIX 0x84E3 -#define GL_TRANSPOSE_PROJECTION_MATRIX 0x84E4 -#define GL_TRANSPOSE_TEXTURE_MATRIX 0x84E5 -#define GL_TRANSPOSE_COLOR_MATRIX 0x84E6 -/* texture_env_combine */ -#define GL_COMBINE 0x8570 -#define GL_COMBINE_RGB 0x8571 -#define GL_COMBINE_ALPHA 0x8572 -#define GL_SOURCE0_RGB 0x8580 -#define GL_SOURCE1_RGB 0x8581 -#define GL_SOURCE2_RGB 0x8582 -#define GL_SOURCE0_ALPHA 0x8588 -#define GL_SOURCE1_ALPHA 0x8589 -#define GL_SOURCE2_ALPHA 0x858A -#define GL_OPERAND0_RGB 0x8590 -#define GL_OPERAND1_RGB 0x8591 -#define GL_OPERAND2_RGB 0x8592 -#define GL_OPERAND0_ALPHA 0x8598 -#define GL_OPERAND1_ALPHA 0x8599 -#define GL_OPERAND2_ALPHA 0x859A -#define GL_RGB_SCALE 0x8573 -#define GL_ADD_SIGNED 0x8574 -#define GL_INTERPOLATE 0x8575 -#define GL_SUBTRACT 0x84E7 -#define GL_CONSTANT 0x8576 -#define GL_PRIMARY_COLOR 0x8577 -#define GL_PREVIOUS 0x8578 -/* texture_env_dot3 */ -#define GL_DOT3_RGB 0x86AE -#define GL_DOT3_RGBA 0x86AF -/* texture_border_clamp */ -#define GL_CLAMP_TO_BORDER 0x812D - -GLAPI void GLAPIENTRY glActiveTexture( GLenum texture ); - -GLAPI void GLAPIENTRY glClientActiveTexture( GLenum texture ); - -GLAPI void GLAPIENTRY glCompressedTexImage1D( GLenum target, GLint level, GLenum internalformat, GLsizei width, GLint border, GLsizei imageSize, const GLvoid *data ); - -GLAPI void GLAPIENTRY glCompressedTexImage2D( GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLint border, GLsizei imageSize, const GLvoid *data ); - -GLAPI void GLAPIENTRY glCompressedTexImage3D( GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLsizei imageSize, const GLvoid *data ); - -GLAPI void GLAPIENTRY glCompressedTexSubImage1D( GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLsizei imageSize, const GLvoid *data ); - -GLAPI void GLAPIENTRY glCompressedTexSubImage2D( GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLsizei imageSize, const GLvoid *data ); - -GLAPI void GLAPIENTRY glCompressedTexSubImage3D( GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLsizei imageSize, const GLvoid *data ); - -GLAPI void GLAPIENTRY glGetCompressedTexImage( GLenum target, GLint lod, GLvoid *img ); - -GLAPI void GLAPIENTRY glMultiTexCoord1d( GLenum target, GLdouble s ); - -GLAPI void GLAPIENTRY glMultiTexCoord1dv( GLenum target, const GLdouble *v ); - -GLAPI void GLAPIENTRY glMultiTexCoord1f( GLenum target, GLfloat s ); - -GLAPI void GLAPIENTRY glMultiTexCoord1fv( GLenum target, const GLfloat *v ); - -GLAPI void GLAPIENTRY glMultiTexCoord1i( GLenum target, GLint s ); - -GLAPI void GLAPIENTRY glMultiTexCoord1iv( GLenum target, const GLint *v ); - -GLAPI void GLAPIENTRY glMultiTexCoord1s( GLenum target, GLshort s ); - -GLAPI void GLAPIENTRY glMultiTexCoord1sv( GLenum target, const GLshort *v ); - -GLAPI void GLAPIENTRY glMultiTexCoord2d( GLenum target, GLdouble s, GLdouble t ); - -GLAPI void GLAPIENTRY glMultiTexCoord2dv( GLenum target, const GLdouble *v ); - -GLAPI void GLAPIENTRY glMultiTexCoord2f( GLenum target, GLfloat s, GLfloat t ); - -GLAPI void GLAPIENTRY glMultiTexCoord2fv( GLenum target, const GLfloat *v ); - -GLAPI void GLAPIENTRY glMultiTexCoord2i( GLenum target, GLint s, GLint t ); - -GLAPI void GLAPIENTRY glMultiTexCoord2iv( GLenum target, const GLint *v ); - -GLAPI void GLAPIENTRY glMultiTexCoord2s( GLenum target, GLshort s, GLshort t ); - -GLAPI void GLAPIENTRY glMultiTexCoord2sv( GLenum target, const GLshort *v ); - -GLAPI void GLAPIENTRY glMultiTexCoord3d( GLenum target, GLdouble s, GLdouble t, GLdouble r ); - -GLAPI void GLAPIENTRY glMultiTexCoord3dv( GLenum target, const GLdouble *v ); - -GLAPI void GLAPIENTRY glMultiTexCoord3f( GLenum target, GLfloat s, GLfloat t, GLfloat r ); - -GLAPI void GLAPIENTRY glMultiTexCoord3fv( GLenum target, const GLfloat *v ); - -GLAPI void GLAPIENTRY glMultiTexCoord3i( GLenum target, GLint s, GLint t, GLint r ); - -GLAPI void GLAPIENTRY glMultiTexCoord3iv( GLenum target, const GLint *v ); - -GLAPI void GLAPIENTRY glMultiTexCoord3s( GLenum target, GLshort s, GLshort t, GLshort r ); - -GLAPI void GLAPIENTRY glMultiTexCoord3sv( GLenum target, const GLshort *v ); - -GLAPI void GLAPIENTRY glMultiTexCoord4d( GLenum target, GLdouble s, GLdouble t, GLdouble r, GLdouble q ); - -GLAPI void GLAPIENTRY glMultiTexCoord4dv( GLenum target, const GLdouble *v ); - -GLAPI void GLAPIENTRY glMultiTexCoord4f( GLenum target, GLfloat s, GLfloat t, GLfloat r, GLfloat q ); - -GLAPI void GLAPIENTRY glMultiTexCoord4fv( GLenum target, const GLfloat *v ); - -GLAPI void GLAPIENTRY glMultiTexCoord4i( GLenum target, GLint s, GLint t, GLint r, GLint q ); - -GLAPI void GLAPIENTRY glMultiTexCoord4iv( GLenum target, const GLint *v ); - -GLAPI void GLAPIENTRY glMultiTexCoord4s( GLenum target, GLshort s, GLshort t, GLshort r, GLshort q ); - -GLAPI void GLAPIENTRY glMultiTexCoord4sv( GLenum target, const GLshort *v ); - - -GLAPI void GLAPIENTRY glLoadTransposeMatrixd( const GLdouble m[16] ); - -GLAPI void GLAPIENTRY glLoadTransposeMatrixf( const GLfloat m[16] ); - -GLAPI void GLAPIENTRY glMultTransposeMatrixd( const GLdouble m[16] ); - -GLAPI void GLAPIENTRY glMultTransposeMatrixf( const GLfloat m[16] ); - -GLAPI void GLAPIENTRY glSampleCoverage( GLclampf value, GLboolean invert ); - -typedef void (APIENTRYP PFNGLACTIVETEXTUREPROC) (GLenum texture); -typedef void (APIENTRYP PFNGLCLIENTACTIVETEXTUREPROC) (GLenum texture); -typedef void (APIENTRYP PFNGLMULTITEXCOORD1DPROC) (GLenum target, GLdouble s); -typedef void (APIENTRYP PFNGLMULTITEXCOORD1DVPROC) (GLenum target, const GLdouble *v); -typedef void (APIENTRYP PFNGLMULTITEXCOORD1FPROC) (GLenum target, GLfloat s); -typedef void (APIENTRYP PFNGLMULTITEXCOORD1FVPROC) (GLenum target, const GLfloat *v); -typedef void (APIENTRYP PFNGLMULTITEXCOORD1IPROC) (GLenum target, GLint s); -typedef void (APIENTRYP PFNGLMULTITEXCOORD1IVPROC) (GLenum target, const GLint *v); -typedef void (APIENTRYP PFNGLMULTITEXCOORD1SPROC) (GLenum target, GLshort s); -typedef void (APIENTRYP PFNGLMULTITEXCOORD1SVPROC) (GLenum target, const GLshort *v); -typedef void (APIENTRYP PFNGLMULTITEXCOORD2DPROC) (GLenum target, GLdouble s, GLdouble t); -typedef void (APIENTRYP PFNGLMULTITEXCOORD2DVPROC) (GLenum target, const GLdouble *v); -typedef void (APIENTRYP PFNGLMULTITEXCOORD2FPROC) (GLenum target, GLfloat s, GLfloat t); -typedef void (APIENTRYP PFNGLMULTITEXCOORD2FVPROC) (GLenum target, const GLfloat *v); -typedef void (APIENTRYP PFNGLMULTITEXCOORD2IPROC) (GLenum target, GLint s, GLint t); -typedef void (APIENTRYP PFNGLMULTITEXCOORD2IVPROC) (GLenum target, const GLint *v); -typedef void (APIENTRYP PFNGLMULTITEXCOORD2SPROC) (GLenum target, GLshort s, GLshort t); -typedef void (APIENTRYP PFNGLMULTITEXCOORD2SVPROC) (GLenum target, const GLshort *v); -typedef void (APIENTRYP PFNGLMULTITEXCOORD3DPROC) (GLenum target, GLdouble s, GLdouble t, GLdouble r); -typedef void (APIENTRYP PFNGLMULTITEXCOORD3DVPROC) (GLenum target, const GLdouble *v); -typedef void (APIENTRYP PFNGLMULTITEXCOORD3FPROC) (GLenum target, GLfloat s, GLfloat t, GLfloat r); -typedef void (APIENTRYP PFNGLMULTITEXCOORD3FVPROC) (GLenum target, const GLfloat *v); -typedef void (APIENTRYP PFNGLMULTITEXCOORD3IPROC) (GLenum target, GLint s, GLint t, GLint r); -typedef void (APIENTRYP PFNGLMULTITEXCOORD3IVPROC) (GLenum target, const GLint *v); -typedef void (APIENTRYP PFNGLMULTITEXCOORD3SPROC) (GLenum target, GLshort s, GLshort t, GLshort r); -typedef void (APIENTRYP PFNGLMULTITEXCOORD3SVPROC) (GLenum target, const GLshort *v); -typedef void (APIENTRYP PFNGLMULTITEXCOORD4DPROC) (GLenum target, GLdouble s, GLdouble t, GLdouble r, GLdouble q); -typedef void (APIENTRYP PFNGLMULTITEXCOORD4DVPROC) (GLenum target, const GLdouble *v); -typedef void (APIENTRYP PFNGLMULTITEXCOORD4FPROC) (GLenum target, GLfloat s, GLfloat t, GLfloat r, GLfloat q); -typedef void (APIENTRYP PFNGLMULTITEXCOORD4FVPROC) (GLenum target, const GLfloat *v); -typedef void (APIENTRYP PFNGLMULTITEXCOORD4IPROC) (GLenum target, GLint s, GLint t, GLint r, GLint q); -typedef void (APIENTRYP PFNGLMULTITEXCOORD4IVPROC) (GLenum target, const GLint *v); -typedef void (APIENTRYP PFNGLMULTITEXCOORD4SPROC) (GLenum target, GLshort s, GLshort t, GLshort r, GLshort q); -typedef void (APIENTRYP PFNGLMULTITEXCOORD4SVPROC) (GLenum target, const GLshort *v); -typedef void (APIENTRYP PFNGLLOADTRANSPOSEMATRIXFPROC) (const GLfloat *m); -typedef void (APIENTRYP PFNGLLOADTRANSPOSEMATRIXDPROC) (const GLdouble *m); -typedef void (APIENTRYP PFNGLMULTTRANSPOSEMATRIXFPROC) (const GLfloat *m); -typedef void (APIENTRYP PFNGLMULTTRANSPOSEMATRIXDPROC) (const GLdouble *m); -typedef void (APIENTRYP PFNGLSAMPLECOVERAGEPROC) (GLclampf value, GLboolean invert); -typedef void (APIENTRYP PFNGLCOMPRESSEDTEXIMAGE3DPROC) (GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLsizei imageSize, const GLvoid *data); -typedef void (APIENTRYP PFNGLCOMPRESSEDTEXIMAGE2DPROC) (GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLint border, GLsizei imageSize, const GLvoid *data); -typedef void (APIENTRYP PFNGLCOMPRESSEDTEXIMAGE1DPROC) (GLenum target, GLint level, GLenum internalformat, GLsizei width, GLint border, GLsizei imageSize, const GLvoid *data); -typedef void (APIENTRYP PFNGLCOMPRESSEDTEXSUBIMAGE3DPROC) (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLsizei imageSize, const GLvoid *data); -typedef void (APIENTRYP PFNGLCOMPRESSEDTEXSUBIMAGE2DPROC) (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLsizei imageSize, const GLvoid *data); -typedef void (APIENTRYP PFNGLCOMPRESSEDTEXSUBIMAGE1DPROC) (GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLsizei imageSize, const GLvoid *data); -typedef void (APIENTRYP PFNGLGETCOMPRESSEDTEXIMAGEPROC) (GLenum target, GLint level, void *img); - - -/* - * GL_ARB_multitexture (ARB extension 1 and OpenGL 1.2.1) - */ -#ifndef GL_ARB_multitexture -#define GL_ARB_multitexture 1 - -#define GL_TEXTURE0_ARB 0x84C0 -#define GL_TEXTURE1_ARB 0x84C1 -#define GL_TEXTURE2_ARB 0x84C2 -#define GL_TEXTURE3_ARB 0x84C3 -#define GL_TEXTURE4_ARB 0x84C4 -#define GL_TEXTURE5_ARB 0x84C5 -#define GL_TEXTURE6_ARB 0x84C6 -#define GL_TEXTURE7_ARB 0x84C7 -#define GL_TEXTURE8_ARB 0x84C8 -#define GL_TEXTURE9_ARB 0x84C9 -#define GL_TEXTURE10_ARB 0x84CA -#define GL_TEXTURE11_ARB 0x84CB -#define GL_TEXTURE12_ARB 0x84CC -#define GL_TEXTURE13_ARB 0x84CD -#define GL_TEXTURE14_ARB 0x84CE -#define GL_TEXTURE15_ARB 0x84CF -#define GL_TEXTURE16_ARB 0x84D0 -#define GL_TEXTURE17_ARB 0x84D1 -#define GL_TEXTURE18_ARB 0x84D2 -#define GL_TEXTURE19_ARB 0x84D3 -#define GL_TEXTURE20_ARB 0x84D4 -#define GL_TEXTURE21_ARB 0x84D5 -#define GL_TEXTURE22_ARB 0x84D6 -#define GL_TEXTURE23_ARB 0x84D7 -#define GL_TEXTURE24_ARB 0x84D8 -#define GL_TEXTURE25_ARB 0x84D9 -#define GL_TEXTURE26_ARB 0x84DA -#define GL_TEXTURE27_ARB 0x84DB -#define GL_TEXTURE28_ARB 0x84DC -#define GL_TEXTURE29_ARB 0x84DD -#define GL_TEXTURE30_ARB 0x84DE -#define GL_TEXTURE31_ARB 0x84DF -#define GL_ACTIVE_TEXTURE_ARB 0x84E0 -#define GL_CLIENT_ACTIVE_TEXTURE_ARB 0x84E1 -#define GL_MAX_TEXTURE_UNITS_ARB 0x84E2 - -GLAPI void GLAPIENTRY glActiveTextureARB(GLenum texture); -GLAPI void GLAPIENTRY glClientActiveTextureARB(GLenum texture); -GLAPI void GLAPIENTRY glMultiTexCoord1dARB(GLenum target, GLdouble s); -GLAPI void GLAPIENTRY glMultiTexCoord1dvARB(GLenum target, const GLdouble *v); -GLAPI void GLAPIENTRY glMultiTexCoord1fARB(GLenum target, GLfloat s); -GLAPI void GLAPIENTRY glMultiTexCoord1fvARB(GLenum target, const GLfloat *v); -GLAPI void GLAPIENTRY glMultiTexCoord1iARB(GLenum target, GLint s); -GLAPI void GLAPIENTRY glMultiTexCoord1ivARB(GLenum target, const GLint *v); -GLAPI void GLAPIENTRY glMultiTexCoord1sARB(GLenum target, GLshort s); -GLAPI void GLAPIENTRY glMultiTexCoord1svARB(GLenum target, const GLshort *v); -GLAPI void GLAPIENTRY glMultiTexCoord2dARB(GLenum target, GLdouble s, GLdouble t); -GLAPI void GLAPIENTRY glMultiTexCoord2dvARB(GLenum target, const GLdouble *v); -GLAPI void GLAPIENTRY glMultiTexCoord2fARB(GLenum target, GLfloat s, GLfloat t); -GLAPI void GLAPIENTRY glMultiTexCoord2fvARB(GLenum target, const GLfloat *v); -GLAPI void GLAPIENTRY glMultiTexCoord2iARB(GLenum target, GLint s, GLint t); -GLAPI void GLAPIENTRY glMultiTexCoord2ivARB(GLenum target, const GLint *v); -GLAPI void GLAPIENTRY glMultiTexCoord2sARB(GLenum target, GLshort s, GLshort t); -GLAPI void GLAPIENTRY glMultiTexCoord2svARB(GLenum target, const GLshort *v); -GLAPI void GLAPIENTRY glMultiTexCoord3dARB(GLenum target, GLdouble s, GLdouble t, GLdouble r); -GLAPI void GLAPIENTRY glMultiTexCoord3dvARB(GLenum target, const GLdouble *v); -GLAPI void GLAPIENTRY glMultiTexCoord3fARB(GLenum target, GLfloat s, GLfloat t, GLfloat r); -GLAPI void GLAPIENTRY glMultiTexCoord3fvARB(GLenum target, const GLfloat *v); -GLAPI void GLAPIENTRY glMultiTexCoord3iARB(GLenum target, GLint s, GLint t, GLint r); -GLAPI void GLAPIENTRY glMultiTexCoord3ivARB(GLenum target, const GLint *v); -GLAPI void GLAPIENTRY glMultiTexCoord3sARB(GLenum target, GLshort s, GLshort t, GLshort r); -GLAPI void GLAPIENTRY glMultiTexCoord3svARB(GLenum target, const GLshort *v); -GLAPI void GLAPIENTRY glMultiTexCoord4dARB(GLenum target, GLdouble s, GLdouble t, GLdouble r, GLdouble q); -GLAPI void GLAPIENTRY glMultiTexCoord4dvARB(GLenum target, const GLdouble *v); -GLAPI void GLAPIENTRY glMultiTexCoord4fARB(GLenum target, GLfloat s, GLfloat t, GLfloat r, GLfloat q); -GLAPI void GLAPIENTRY glMultiTexCoord4fvARB(GLenum target, const GLfloat *v); -GLAPI void GLAPIENTRY glMultiTexCoord4iARB(GLenum target, GLint s, GLint t, GLint r, GLint q); -GLAPI void GLAPIENTRY glMultiTexCoord4ivARB(GLenum target, const GLint *v); -GLAPI void GLAPIENTRY glMultiTexCoord4sARB(GLenum target, GLshort s, GLshort t, GLshort r, GLshort q); -GLAPI void GLAPIENTRY glMultiTexCoord4svARB(GLenum target, const GLshort *v); - -typedef void (APIENTRYP PFNGLACTIVETEXTUREARBPROC) (GLenum texture); -typedef void (APIENTRYP PFNGLCLIENTACTIVETEXTUREARBPROC) (GLenum texture); -typedef void (APIENTRYP PFNGLMULTITEXCOORD1DARBPROC) (GLenum target, GLdouble s); -typedef void (APIENTRYP PFNGLMULTITEXCOORD1DVARBPROC) (GLenum target, const GLdouble *v); -typedef void (APIENTRYP PFNGLMULTITEXCOORD1FARBPROC) (GLenum target, GLfloat s); -typedef void (APIENTRYP PFNGLMULTITEXCOORD1FVARBPROC) (GLenum target, const GLfloat *v); -typedef void (APIENTRYP PFNGLMULTITEXCOORD1IARBPROC) (GLenum target, GLint s); -typedef void (APIENTRYP PFNGLMULTITEXCOORD1IVARBPROC) (GLenum target, const GLint *v); -typedef void (APIENTRYP PFNGLMULTITEXCOORD1SARBPROC) (GLenum target, GLshort s); -typedef void (APIENTRYP PFNGLMULTITEXCOORD1SVARBPROC) (GLenum target, const GLshort *v); -typedef void (APIENTRYP PFNGLMULTITEXCOORD2DARBPROC) (GLenum target, GLdouble s, GLdouble t); -typedef void (APIENTRYP PFNGLMULTITEXCOORD2DVARBPROC) (GLenum target, const GLdouble *v); -typedef void (APIENTRYP PFNGLMULTITEXCOORD2FARBPROC) (GLenum target, GLfloat s, GLfloat t); -typedef void (APIENTRYP PFNGLMULTITEXCOORD2FVARBPROC) (GLenum target, const GLfloat *v); -typedef void (APIENTRYP PFNGLMULTITEXCOORD2IARBPROC) (GLenum target, GLint s, GLint t); -typedef void (APIENTRYP PFNGLMULTITEXCOORD2IVARBPROC) (GLenum target, const GLint *v); -typedef void (APIENTRYP PFNGLMULTITEXCOORD2SARBPROC) (GLenum target, GLshort s, GLshort t); -typedef void (APIENTRYP PFNGLMULTITEXCOORD2SVARBPROC) (GLenum target, const GLshort *v); -typedef void (APIENTRYP PFNGLMULTITEXCOORD3DARBPROC) (GLenum target, GLdouble s, GLdouble t, GLdouble r); -typedef void (APIENTRYP PFNGLMULTITEXCOORD3DVARBPROC) (GLenum target, const GLdouble *v); -typedef void (APIENTRYP PFNGLMULTITEXCOORD3FARBPROC) (GLenum target, GLfloat s, GLfloat t, GLfloat r); -typedef void (APIENTRYP PFNGLMULTITEXCOORD3FVARBPROC) (GLenum target, const GLfloat *v); -typedef void (APIENTRYP PFNGLMULTITEXCOORD3IARBPROC) (GLenum target, GLint s, GLint t, GLint r); -typedef void (APIENTRYP PFNGLMULTITEXCOORD3IVARBPROC) (GLenum target, const GLint *v); -typedef void (APIENTRYP PFNGLMULTITEXCOORD3SARBPROC) (GLenum target, GLshort s, GLshort t, GLshort r); -typedef void (APIENTRYP PFNGLMULTITEXCOORD3SVARBPROC) (GLenum target, const GLshort *v); -typedef void (APIENTRYP PFNGLMULTITEXCOORD4DARBPROC) (GLenum target, GLdouble s, GLdouble t, GLdouble r, GLdouble q); -typedef void (APIENTRYP PFNGLMULTITEXCOORD4DVARBPROC) (GLenum target, const GLdouble *v); -typedef void (APIENTRYP PFNGLMULTITEXCOORD4FARBPROC) (GLenum target, GLfloat s, GLfloat t, GLfloat r, GLfloat q); -typedef void (APIENTRYP PFNGLMULTITEXCOORD4FVARBPROC) (GLenum target, const GLfloat *v); -typedef void (APIENTRYP PFNGLMULTITEXCOORD4IARBPROC) (GLenum target, GLint s, GLint t, GLint r, GLint q); -typedef void (APIENTRYP PFNGLMULTITEXCOORD4IVARBPROC) (GLenum target, const GLint *v); -typedef void (APIENTRYP PFNGLMULTITEXCOORD4SARBPROC) (GLenum target, GLshort s, GLshort t, GLshort r, GLshort q); -typedef void (APIENTRYP PFNGLMULTITEXCOORD4SVARBPROC) (GLenum target, const GLshort *v); - -#endif /* GL_ARB_multitexture */ - - - -/* - * Define this token if you want "old-style" header file behaviour (extensions - * defined in gl.h). Otherwise, extensions will be included from glext.h. - */ -#if defined(GL_GLEXT_LEGACY) - -/* All extensions that used to be here are now found in glext.h */ - -#else /* GL_GLEXT_LEGACY */ - -//#include - -#endif /* GL_GLEXT_LEGACY */ - - - -#if GL_ARB_shader_objects - -#ifndef GL_MESA_shader_debug -#define GL_MESA_shader_debug 1 - -#define GL_DEBUG_OBJECT_MESA 0x8759 -#define GL_DEBUG_PRINT_MESA 0x875A -#define GL_DEBUG_ASSERT_MESA 0x875B - -GLAPI GLhandleARB GLAPIENTRY glCreateDebugObjectMESA (void); -GLAPI void GLAPIENTRY glClearDebugLogMESA (GLhandleARB obj, GLenum logType, GLenum shaderType); -GLAPI void GLAPIENTRY glGetDebugLogMESA (GLhandleARB obj, GLenum logType, GLenum shaderType, GLsizei maxLength, - GLsizei *length, GLcharARB *debugLog); -GLAPI GLsizei GLAPIENTRY glGetDebugLogLengthMESA (GLhandleARB obj, GLenum logType, GLenum shaderType); - -#endif /* GL_MESA_shader_debug */ - -#endif /* GL_ARB_shader_objects */ - - -/* - * ???. GL_MESA_packed_depth_stencil - * XXX obsolete - */ -#ifndef GL_MESA_packed_depth_stencil -#define GL_MESA_packed_depth_stencil 1 - -#define GL_DEPTH_STENCIL_MESA 0x8750 -#define GL_UNSIGNED_INT_24_8_MESA 0x8751 -#define GL_UNSIGNED_INT_8_24_REV_MESA 0x8752 -#define GL_UNSIGNED_SHORT_15_1_MESA 0x8753 -#define GL_UNSIGNED_SHORT_1_15_REV_MESA 0x8754 - -#endif /* GL_MESA_packed_depth_stencil */ - - -#ifndef GL_MESA_program_debug -#define GL_MESA_program_debug 1 - -#define GL_FRAGMENT_PROGRAM_POSITION_MESA 0x8bb0 -#define GL_FRAGMENT_PROGRAM_CALLBACK_MESA 0x8bb1 -#define GL_FRAGMENT_PROGRAM_CALLBACK_FUNC_MESA 0x8bb2 -#define GL_FRAGMENT_PROGRAM_CALLBACK_DATA_MESA 0x8bb3 -#define GL_VERTEX_PROGRAM_POSITION_MESA 0x8bb4 -#define GL_VERTEX_PROGRAM_CALLBACK_MESA 0x8bb5 -#define GL_VERTEX_PROGRAM_CALLBACK_FUNC_MESA 0x8bb6 -#define GL_VERTEX_PROGRAM_CALLBACK_DATA_MESA 0x8bb7 - -typedef void (*GLprogramcallbackMESA)(GLenum target, GLvoid *data); - -GLAPI void GLAPIENTRY glProgramCallbackMESA(GLenum target, GLprogramcallbackMESA callback, GLvoid *data); - -GLAPI void GLAPIENTRY glGetProgramRegisterfvMESA(GLenum target, GLsizei len, const GLubyte *name, GLfloat *v); - -#endif /* GL_MESA_program_debug */ - - -#ifndef GL_ATI_blend_equation_separate -#define GL_ATI_blend_equation_separate 1 - -#define GL_ALPHA_BLEND_EQUATION_ATI 0x883D - -GLAPI void GLAPIENTRY glBlendEquationSeparateATI( GLenum modeRGB, GLenum modeA ); -typedef void (APIENTRYP PFNGLBLENDEQUATIONSEPARATEATIPROC) (GLenum modeRGB, GLenum modeA); - -#endif /* GL_ATI_blend_equation_separate */ - - - -/** - ** NOTE!!!!! If you add new functions to this file, or update - ** glext.h be sure to regenerate the gl_mangle.h file. See comments - ** in that file for details. - **/ - - - -/********************************************************************** - * Begin system-specific stuff - */ -#if defined(PRAGMA_EXPORT_SUPPORTED) -#pragma export off -#endif - -#if defined(macintosh) && PRAGMA_IMPORT_SUPPORTED -#pragma import off -#endif -/* - * End system-specific stuff - **********************************************************************/ - - -#ifdef __cplusplus -} -#endif - -#endif /* __gl_h_ */ -#endif diff --git a/include/GL/glext.h b/include/GL/glext.h deleted file mode 100644 index 2519a6c..0000000 --- a/include/GL/glext.h +++ /dev/null @@ -1,7260 +0,0 @@ -#ifndef __glext_h_ -#define __glext_h_ - -#ifdef __cplusplus -extern "C" { -#endif - -/* -** Copyright (c) 2007 The Khronos Group Inc. -** -** Permission is hereby granted, free of charge, to any person obtaining a -** copy of this software and/or associated documentation files (the -** "Materials"), to deal in the Materials without restriction, including -** without limitation the rights to use, copy, modify, merge, publish, -** distribute, sublicense, and/or sell copies of the Materials, and to -** permit persons to whom the Materials are furnished to do so, subject to -** the following conditions: -** -** The above copyright notice and this permission notice shall be included -** in all copies or substantial portions of the Materials. -** -** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, -** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. -** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY -** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, -** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE -** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. -*/ - -#if defined(_WIN32) && !defined(APIENTRY) && !defined(__CYGWIN__) && !defined(__SCITECH_SNAP__) -#define WIN32_LEAN_AND_MEAN 1 -#include -#endif - -#ifndef APIENTRY -#define APIENTRY -#endif -#ifndef APIENTRYP -#define APIENTRYP APIENTRY * -#endif -#ifndef GLAPI -#define GLAPI extern -#endif - -/*************************************************************/ - -/* Header file version number, required by OpenGL ABI for Linux */ -/* glext.h last updated 2007/02/12 */ -/* Current version at http://www.opengl.org/registry/ */ -#define GL_GLEXT_VERSION 39 - -#ifndef GL_VERSION_1_2 -#define GL_UNSIGNED_BYTE_3_3_2 0x8032 -#define GL_UNSIGNED_SHORT_4_4_4_4 0x8033 -#define GL_UNSIGNED_SHORT_5_5_5_1 0x8034 -#define GL_UNSIGNED_INT_8_8_8_8 0x8035 -#define GL_UNSIGNED_INT_10_10_10_2 0x8036 -#define GL_RESCALE_NORMAL 0x803A -#define GL_TEXTURE_BINDING_3D 0x806A -#define GL_PACK_SKIP_IMAGES 0x806B -#define GL_PACK_IMAGE_HEIGHT 0x806C -#define GL_UNPACK_SKIP_IMAGES 0x806D -#define GL_UNPACK_IMAGE_HEIGHT 0x806E -#define GL_TEXTURE_3D 0x806F -#define GL_PROXY_TEXTURE_3D 0x8070 -#define GL_TEXTURE_DEPTH 0x8071 -#define GL_TEXTURE_WRAP_R 0x8072 -#define GL_MAX_3D_TEXTURE_SIZE 0x8073 -#define GL_UNSIGNED_BYTE_2_3_3_REV 0x8362 -#define GL_UNSIGNED_SHORT_5_6_5 0x8363 -#define GL_UNSIGNED_SHORT_5_6_5_REV 0x8364 -#define GL_UNSIGNED_SHORT_4_4_4_4_REV 0x8365 -#define GL_UNSIGNED_SHORT_1_5_5_5_REV 0x8366 -#define GL_UNSIGNED_INT_8_8_8_8_REV 0x8367 -#define GL_UNSIGNED_INT_2_10_10_10_REV 0x8368 -#define GL_BGR 0x80E0 -#define GL_BGRA 0x80E1 -#define GL_MAX_ELEMENTS_VERTICES 0x80E8 -#define GL_MAX_ELEMENTS_INDICES 0x80E9 -#define GL_CLAMP_TO_EDGE 0x812F -#define GL_TEXTURE_MIN_LOD 0x813A -#define GL_TEXTURE_MAX_LOD 0x813B -#define GL_TEXTURE_BASE_LEVEL 0x813C -#define GL_TEXTURE_MAX_LEVEL 0x813D -#define GL_LIGHT_MODEL_COLOR_CONTROL 0x81F8 -#define GL_SINGLE_COLOR 0x81F9 -#define GL_SEPARATE_SPECULAR_COLOR 0x81FA -#define GL_SMOOTH_POINT_SIZE_RANGE 0x0B12 -#define GL_SMOOTH_POINT_SIZE_GRANULARITY 0x0B13 -#define GL_SMOOTH_LINE_WIDTH_RANGE 0x0B22 -#define GL_SMOOTH_LINE_WIDTH_GRANULARITY 0x0B23 -#define GL_ALIASED_POINT_SIZE_RANGE 0x846D -#define GL_ALIASED_LINE_WIDTH_RANGE 0x846E -#endif - -#ifndef GL_ARB_imaging -#define GL_CONSTANT_COLOR 0x8001 -#define GL_ONE_MINUS_CONSTANT_COLOR 0x8002 -#define GL_CONSTANT_ALPHA 0x8003 -#define GL_ONE_MINUS_CONSTANT_ALPHA 0x8004 -#define GL_BLEND_COLOR 0x8005 -#define GL_FUNC_ADD 0x8006 -#define GL_MIN 0x8007 -#define GL_MAX 0x8008 -#define GL_BLEND_EQUATION 0x8009 -#define GL_FUNC_SUBTRACT 0x800A -#define GL_FUNC_REVERSE_SUBTRACT 0x800B -#define GL_CONVOLUTION_1D 0x8010 -#define GL_CONVOLUTION_2D 0x8011 -#define GL_SEPARABLE_2D 0x8012 -#define GL_CONVOLUTION_BORDER_MODE 0x8013 -#define GL_CONVOLUTION_FILTER_SCALE 0x8014 -#define GL_CONVOLUTION_FILTER_BIAS 0x8015 -#define GL_REDUCE 0x8016 -#define GL_CONVOLUTION_FORMAT 0x8017 -#define GL_CONVOLUTION_WIDTH 0x8018 -#define GL_CONVOLUTION_HEIGHT 0x8019 -#define GL_MAX_CONVOLUTION_WIDTH 0x801A -#define GL_MAX_CONVOLUTION_HEIGHT 0x801B -#define GL_POST_CONVOLUTION_RED_SCALE 0x801C -#define GL_POST_CONVOLUTION_GREEN_SCALE 0x801D -#define GL_POST_CONVOLUTION_BLUE_SCALE 0x801E -#define GL_POST_CONVOLUTION_ALPHA_SCALE 0x801F -#define GL_POST_CONVOLUTION_RED_BIAS 0x8020 -#define GL_POST_CONVOLUTION_GREEN_BIAS 0x8021 -#define GL_POST_CONVOLUTION_BLUE_BIAS 0x8022 -#define GL_POST_CONVOLUTION_ALPHA_BIAS 0x8023 -#define GL_HISTOGRAM 0x8024 -#define GL_PROXY_HISTOGRAM 0x8025 -#define GL_HISTOGRAM_WIDTH 0x8026 -#define GL_HISTOGRAM_FORMAT 0x8027 -#define GL_HISTOGRAM_RED_SIZE 0x8028 -#define GL_HISTOGRAM_GREEN_SIZE 0x8029 -#define GL_HISTOGRAM_BLUE_SIZE 0x802A -#define GL_HISTOGRAM_ALPHA_SIZE 0x802B -#define GL_HISTOGRAM_LUMINANCE_SIZE 0x802C -#define GL_HISTOGRAM_SINK 0x802D -#define GL_MINMAX 0x802E -#define GL_MINMAX_FORMAT 0x802F -#define GL_MINMAX_SINK 0x8030 -#define GL_TABLE_TOO_LARGE 0x8031 -#define GL_COLOR_MATRIX 0x80B1 -#define GL_COLOR_MATRIX_STACK_DEPTH 0x80B2 -#define GL_MAX_COLOR_MATRIX_STACK_DEPTH 0x80B3 -#define GL_POST_COLOR_MATRIX_RED_SCALE 0x80B4 -#define GL_POST_COLOR_MATRIX_GREEN_SCALE 0x80B5 -#define GL_POST_COLOR_MATRIX_BLUE_SCALE 0x80B6 -#define GL_POST_COLOR_MATRIX_ALPHA_SCALE 0x80B7 -#define GL_POST_COLOR_MATRIX_RED_BIAS 0x80B8 -#define GL_POST_COLOR_MATRIX_GREEN_BIAS 0x80B9 -#define GL_POST_COLOR_MATRIX_BLUE_BIAS 0x80BA -#define GL_POST_COLOR_MATRIX_ALPHA_BIAS 0x80BB -#define GL_COLOR_TABLE 0x80D0 -#define GL_POST_CONVOLUTION_COLOR_TABLE 0x80D1 -#define GL_POST_COLOR_MATRIX_COLOR_TABLE 0x80D2 -#define GL_PROXY_COLOR_TABLE 0x80D3 -#define GL_PROXY_POST_CONVOLUTION_COLOR_TABLE 0x80D4 -#define GL_PROXY_POST_COLOR_MATRIX_COLOR_TABLE 0x80D5 -#define GL_COLOR_TABLE_SCALE 0x80D6 -#define GL_COLOR_TABLE_BIAS 0x80D7 -#define GL_COLOR_TABLE_FORMAT 0x80D8 -#define GL_COLOR_TABLE_WIDTH 0x80D9 -#define GL_COLOR_TABLE_RED_SIZE 0x80DA -#define GL_COLOR_TABLE_GREEN_SIZE 0x80DB -#define GL_COLOR_TABLE_BLUE_SIZE 0x80DC -#define GL_COLOR_TABLE_ALPHA_SIZE 0x80DD -#define GL_COLOR_TABLE_LUMINANCE_SIZE 0x80DE -#define GL_COLOR_TABLE_INTENSITY_SIZE 0x80DF -#define GL_CONSTANT_BORDER 0x8151 -#define GL_REPLICATE_BORDER 0x8153 -#define GL_CONVOLUTION_BORDER_COLOR 0x8154 -#endif - -#ifndef GL_VERSION_1_3 -#define GL_TEXTURE0 0x84C0 -#define GL_TEXTURE1 0x84C1 -#define GL_TEXTURE2 0x84C2 -#define GL_TEXTURE3 0x84C3 -#define GL_TEXTURE4 0x84C4 -#define GL_TEXTURE5 0x84C5 -#define GL_TEXTURE6 0x84C6 -#define GL_TEXTURE7 0x84C7 -#define GL_TEXTURE8 0x84C8 -#define GL_TEXTURE9 0x84C9 -#define GL_TEXTURE10 0x84CA -#define GL_TEXTURE11 0x84CB -#define GL_TEXTURE12 0x84CC -#define GL_TEXTURE13 0x84CD -#define GL_TEXTURE14 0x84CE -#define GL_TEXTURE15 0x84CF -#define GL_TEXTURE16 0x84D0 -#define GL_TEXTURE17 0x84D1 -#define GL_TEXTURE18 0x84D2 -#define GL_TEXTURE19 0x84D3 -#define GL_TEXTURE20 0x84D4 -#define GL_TEXTURE21 0x84D5 -#define GL_TEXTURE22 0x84D6 -#define GL_TEXTURE23 0x84D7 -#define GL_TEXTURE24 0x84D8 -#define GL_TEXTURE25 0x84D9 -#define GL_TEXTURE26 0x84DA -#define GL_TEXTURE27 0x84DB -#define GL_TEXTURE28 0x84DC -#define GL_TEXTURE29 0x84DD -#define GL_TEXTURE30 0x84DE -#define GL_TEXTURE31 0x84DF -#define GL_ACTIVE_TEXTURE 0x84E0 -#define GL_CLIENT_ACTIVE_TEXTURE 0x84E1 -#define GL_MAX_TEXTURE_UNITS 0x84E2 -#define GL_TRANSPOSE_MODELVIEW_MATRIX 0x84E3 -#define GL_TRANSPOSE_PROJECTION_MATRIX 0x84E4 -#define GL_TRANSPOSE_TEXTURE_MATRIX 0x84E5 -#define GL_TRANSPOSE_COLOR_MATRIX 0x84E6 -#define GL_MULTISAMPLE 0x809D -#define GL_SAMPLE_ALPHA_TO_COVERAGE 0x809E -#define GL_SAMPLE_ALPHA_TO_ONE 0x809F -#define GL_SAMPLE_COVERAGE 0x80A0 -#define GL_SAMPLE_BUFFERS 0x80A8 -#define GL_SAMPLES 0x80A9 -#define GL_SAMPLE_COVERAGE_VALUE 0x80AA -#define GL_SAMPLE_COVERAGE_INVERT 0x80AB -#define GL_MULTISAMPLE_BIT 0x20000000 -#define GL_NORMAL_MAP 0x8511 -#define GL_REFLECTION_MAP 0x8512 -#define GL_TEXTURE_CUBE_MAP 0x8513 -#define GL_TEXTURE_BINDING_CUBE_MAP 0x8514 -#define GL_TEXTURE_CUBE_MAP_POSITIVE_X 0x8515 -#define GL_TEXTURE_CUBE_MAP_NEGATIVE_X 0x8516 -#define GL_TEXTURE_CUBE_MAP_POSITIVE_Y 0x8517 -#define GL_TEXTURE_CUBE_MAP_NEGATIVE_Y 0x8518 -#define GL_TEXTURE_CUBE_MAP_POSITIVE_Z 0x8519 -#define GL_TEXTURE_CUBE_MAP_NEGATIVE_Z 0x851A -#define GL_PROXY_TEXTURE_CUBE_MAP 0x851B -#define GL_MAX_CUBE_MAP_TEXTURE_SIZE 0x851C -#define GL_COMPRESSED_ALPHA 0x84E9 -#define GL_COMPRESSED_LUMINANCE 0x84EA -#define GL_COMPRESSED_LUMINANCE_ALPHA 0x84EB -#define GL_COMPRESSED_INTENSITY 0x84EC -#define GL_COMPRESSED_RGB 0x84ED -#define GL_COMPRESSED_RGBA 0x84EE -#define GL_TEXTURE_COMPRESSION_HINT 0x84EF -#define GL_TEXTURE_COMPRESSED_IMAGE_SIZE 0x86A0 -#define GL_TEXTURE_COMPRESSED 0x86A1 -#define GL_NUM_COMPRESSED_TEXTURE_FORMATS 0x86A2 -#define GL_COMPRESSED_TEXTURE_FORMATS 0x86A3 -#define GL_CLAMP_TO_BORDER 0x812D -#define GL_COMBINE 0x8570 -#define GL_COMBINE_RGB 0x8571 -#define GL_COMBINE_ALPHA 0x8572 -#define GL_SOURCE0_RGB 0x8580 -#define GL_SOURCE1_RGB 0x8581 -#define GL_SOURCE2_RGB 0x8582 -#define GL_SOURCE0_ALPHA 0x8588 -#define GL_SOURCE1_ALPHA 0x8589 -#define GL_SOURCE2_ALPHA 0x858A -#define GL_OPERAND0_RGB 0x8590 -#define GL_OPERAND1_RGB 0x8591 -#define GL_OPERAND2_RGB 0x8592 -#define GL_OPERAND0_ALPHA 0x8598 -#define GL_OPERAND1_ALPHA 0x8599 -#define GL_OPERAND2_ALPHA 0x859A -#define GL_RGB_SCALE 0x8573 -#define GL_ADD_SIGNED 0x8574 -#define GL_INTERPOLATE 0x8575 -#define GL_SUBTRACT 0x84E7 -#define GL_CONSTANT 0x8576 -#define GL_PRIMARY_COLOR 0x8577 -#define GL_PREVIOUS 0x8578 -#define GL_DOT3_RGB 0x86AE -#define GL_DOT3_RGBA 0x86AF -#endif - -#ifndef GL_VERSION_1_4 -#define GL_BLEND_DST_RGB 0x80C8 -#define GL_BLEND_SRC_RGB 0x80C9 -#define GL_BLEND_DST_ALPHA 0x80CA -#define GL_BLEND_SRC_ALPHA 0x80CB -#define GL_POINT_SIZE_MIN 0x8126 -#define GL_POINT_SIZE_MAX 0x8127 -#define GL_POINT_FADE_THRESHOLD_SIZE 0x8128 -#define GL_POINT_DISTANCE_ATTENUATION 0x8129 -#define GL_GENERATE_MIPMAP 0x8191 -#define GL_GENERATE_MIPMAP_HINT 0x8192 -#define GL_DEPTH_COMPONENT16 0x81A5 -#define GL_DEPTH_COMPONENT24 0x81A6 -#define GL_DEPTH_COMPONENT32 0x81A7 -#define GL_MIRRORED_REPEAT 0x8370 -#define GL_FOG_COORDINATE_SOURCE 0x8450 -#define GL_FOG_COORDINATE 0x8451 -#define GL_FRAGMENT_DEPTH 0x8452 -#define GL_CURRENT_FOG_COORDINATE 0x8453 -#define GL_FOG_COORDINATE_ARRAY_TYPE 0x8454 -#define GL_FOG_COORDINATE_ARRAY_STRIDE 0x8455 -#define GL_FOG_COORDINATE_ARRAY_POINTER 0x8456 -#define GL_FOG_COORDINATE_ARRAY 0x8457 -#define GL_COLOR_SUM 0x8458 -#define GL_CURRENT_SECONDARY_COLOR 0x8459 -#define GL_SECONDARY_COLOR_ARRAY_SIZE 0x845A -#define GL_SECONDARY_COLOR_ARRAY_TYPE 0x845B -#define GL_SECONDARY_COLOR_ARRAY_STRIDE 0x845C -#define GL_SECONDARY_COLOR_ARRAY_POINTER 0x845D -#define GL_SECONDARY_COLOR_ARRAY 0x845E -#define GL_MAX_TEXTURE_LOD_BIAS 0x84FD -#define GL_TEXTURE_FILTER_CONTROL 0x8500 -#define GL_TEXTURE_LOD_BIAS 0x8501 -#define GL_INCR_WRAP 0x8507 -#define GL_DECR_WRAP 0x8508 -#define GL_TEXTURE_DEPTH_SIZE 0x884A -#define GL_DEPTH_TEXTURE_MODE 0x884B -#define GL_TEXTURE_COMPARE_MODE 0x884C -#define GL_TEXTURE_COMPARE_FUNC 0x884D -#define GL_COMPARE_R_TO_TEXTURE 0x884E -#endif - -#ifndef GL_VERSION_1_5 -#define GL_BUFFER_SIZE 0x8764 -#define GL_BUFFER_USAGE 0x8765 -#define GL_QUERY_COUNTER_BITS 0x8864 -#define GL_CURRENT_QUERY 0x8865 -#define GL_QUERY_RESULT 0x8866 -#define GL_QUERY_RESULT_AVAILABLE 0x8867 -#define GL_ARRAY_BUFFER 0x8892 -#define GL_ELEMENT_ARRAY_BUFFER 0x8893 -#define GL_ARRAY_BUFFER_BINDING 0x8894 -#define GL_ELEMENT_ARRAY_BUFFER_BINDING 0x8895 -#define GL_VERTEX_ARRAY_BUFFER_BINDING 0x8896 -#define GL_NORMAL_ARRAY_BUFFER_BINDING 0x8897 -#define GL_COLOR_ARRAY_BUFFER_BINDING 0x8898 -#define GL_INDEX_ARRAY_BUFFER_BINDING 0x8899 -#define GL_TEXTURE_COORD_ARRAY_BUFFER_BINDING 0x889A -#define GL_EDGE_FLAG_ARRAY_BUFFER_BINDING 0x889B -#define GL_SECONDARY_COLOR_ARRAY_BUFFER_BINDING 0x889C -#define GL_FOG_COORDINATE_ARRAY_BUFFER_BINDING 0x889D -#define GL_WEIGHT_ARRAY_BUFFER_BINDING 0x889E -#define GL_VERTEX_ATTRIB_ARRAY_BUFFER_BINDING 0x889F -#define GL_READ_ONLY 0x88B8 -#define GL_WRITE_ONLY 0x88B9 -#define GL_READ_WRITE 0x88BA -#define GL_BUFFER_ACCESS 0x88BB -#define GL_BUFFER_MAPPED 0x88BC -#define GL_BUFFER_MAP_POINTER 0x88BD -#define GL_STREAM_DRAW 0x88E0 -#define GL_STREAM_READ 0x88E1 -#define GL_STREAM_COPY 0x88E2 -#define GL_STATIC_DRAW 0x88E4 -#define GL_STATIC_READ 0x88E5 -#define GL_STATIC_COPY 0x88E6 -#define GL_DYNAMIC_DRAW 0x88E8 -#define GL_DYNAMIC_READ 0x88E9 -#define GL_DYNAMIC_COPY 0x88EA -#define GL_SAMPLES_PASSED 0x8914 -#define GL_FOG_COORD_SRC GL_FOG_COORDINATE_SOURCE -#define GL_FOG_COORD GL_FOG_COORDINATE -#define GL_CURRENT_FOG_COORD GL_CURRENT_FOG_COORDINATE -#define GL_FOG_COORD_ARRAY_TYPE GL_FOG_COORDINATE_ARRAY_TYPE -#define GL_FOG_COORD_ARRAY_STRIDE GL_FOG_COORDINATE_ARRAY_STRIDE -#define GL_FOG_COORD_ARRAY_POINTER GL_FOG_COORDINATE_ARRAY_POINTER -#define GL_FOG_COORD_ARRAY GL_FOG_COORDINATE_ARRAY -#define GL_FOG_COORD_ARRAY_BUFFER_BINDING GL_FOG_COORDINATE_ARRAY_BUFFER_BINDING -#define GL_SRC0_RGB GL_SOURCE0_RGB -#define GL_SRC1_RGB GL_SOURCE1_RGB -#define GL_SRC2_RGB GL_SOURCE2_RGB -#define GL_SRC0_ALPHA GL_SOURCE0_ALPHA -#define GL_SRC1_ALPHA GL_SOURCE1_ALPHA -#define GL_SRC2_ALPHA GL_SOURCE2_ALPHA -#endif - -#ifndef GL_VERSION_2_0 -#define GL_BLEND_EQUATION_RGB GL_BLEND_EQUATION -#define GL_VERTEX_ATTRIB_ARRAY_ENABLED 0x8622 -#define GL_VERTEX_ATTRIB_ARRAY_SIZE 0x8623 -#define GL_VERTEX_ATTRIB_ARRAY_STRIDE 0x8624 -#define GL_VERTEX_ATTRIB_ARRAY_TYPE 0x8625 -#define GL_CURRENT_VERTEX_ATTRIB 0x8626 -#define GL_VERTEX_PROGRAM_POINT_SIZE 0x8642 -#define GL_VERTEX_PROGRAM_TWO_SIDE 0x8643 -#define GL_VERTEX_ATTRIB_ARRAY_POINTER 0x8645 -#define GL_STENCIL_BACK_FUNC 0x8800 -#define GL_STENCIL_BACK_FAIL 0x8801 -#define GL_STENCIL_BACK_PASS_DEPTH_FAIL 0x8802 -#define GL_STENCIL_BACK_PASS_DEPTH_PASS 0x8803 -#define GL_MAX_DRAW_BUFFERS 0x8824 -#define GL_DRAW_BUFFER0 0x8825 -#define GL_DRAW_BUFFER1 0x8826 -#define GL_DRAW_BUFFER2 0x8827 -#define GL_DRAW_BUFFER3 0x8828 -#define GL_DRAW_BUFFER4 0x8829 -#define GL_DRAW_BUFFER5 0x882A -#define GL_DRAW_BUFFER6 0x882B -#define GL_DRAW_BUFFER7 0x882C -#define GL_DRAW_BUFFER8 0x882D -#define GL_DRAW_BUFFER9 0x882E -#define GL_DRAW_BUFFER10 0x882F -#define GL_DRAW_BUFFER11 0x8830 -#define GL_DRAW_BUFFER12 0x8831 -#define GL_DRAW_BUFFER13 0x8832 -#define GL_DRAW_BUFFER14 0x8833 -#define GL_DRAW_BUFFER15 0x8834 -#define GL_BLEND_EQUATION_ALPHA 0x883D -#define GL_POINT_SPRITE 0x8861 -#define GL_COORD_REPLACE 0x8862 -#define GL_MAX_VERTEX_ATTRIBS 0x8869 -#define GL_VERTEX_ATTRIB_ARRAY_NORMALIZED 0x886A -#define GL_MAX_TEXTURE_COORDS 0x8871 -#define GL_MAX_TEXTURE_IMAGE_UNITS 0x8872 -#define GL_FRAGMENT_SHADER 0x8B30 -#define GL_VERTEX_SHADER 0x8B31 -#define GL_MAX_FRAGMENT_UNIFORM_COMPONENTS 0x8B49 -#define GL_MAX_VERTEX_UNIFORM_COMPONENTS 0x8B4A -#define GL_MAX_VARYING_FLOATS 0x8B4B -#define GL_MAX_VERTEX_TEXTURE_IMAGE_UNITS 0x8B4C -#define GL_MAX_COMBINED_TEXTURE_IMAGE_UNITS 0x8B4D -#define GL_SHADER_TYPE 0x8B4F -#define GL_FLOAT_VEC2 0x8B50 -#define GL_FLOAT_VEC3 0x8B51 -#define GL_FLOAT_VEC4 0x8B52 -#define GL_INT_VEC2 0x8B53 -#define GL_INT_VEC3 0x8B54 -#define GL_INT_VEC4 0x8B55 -#define GL_BOOL 0x8B56 -#define GL_BOOL_VEC2 0x8B57 -#define GL_BOOL_VEC3 0x8B58 -#define GL_BOOL_VEC4 0x8B59 -#define GL_FLOAT_MAT2 0x8B5A -#define GL_FLOAT_MAT3 0x8B5B -#define GL_FLOAT_MAT4 0x8B5C -#define GL_SAMPLER_1D 0x8B5D -#define GL_SAMPLER_2D 0x8B5E -#define GL_SAMPLER_3D 0x8B5F -#define GL_SAMPLER_CUBE 0x8B60 -#define GL_SAMPLER_1D_SHADOW 0x8B61 -#define GL_SAMPLER_2D_SHADOW 0x8B62 -#define GL_DELETE_STATUS 0x8B80 -#define GL_COMPILE_STATUS 0x8B81 -#define GL_LINK_STATUS 0x8B82 -#define GL_VALIDATE_STATUS 0x8B83 -#define GL_INFO_LOG_LENGTH 0x8B84 -#define GL_ATTACHED_SHADERS 0x8B85 -#define GL_ACTIVE_UNIFORMS 0x8B86 -#define GL_ACTIVE_UNIFORM_MAX_LENGTH 0x8B87 -#define GL_SHADER_SOURCE_LENGTH 0x8B88 -#define GL_ACTIVE_ATTRIBUTES 0x8B89 -#define GL_ACTIVE_ATTRIBUTE_MAX_LENGTH 0x8B8A -#define GL_FRAGMENT_SHADER_DERIVATIVE_HINT 0x8B8B -#define GL_SHADING_LANGUAGE_VERSION 0x8B8C -#define GL_CURRENT_PROGRAM 0x8B8D -#define GL_POINT_SPRITE_COORD_ORIGIN 0x8CA0 -#define GL_LOWER_LEFT 0x8CA1 -#define GL_UPPER_LEFT 0x8CA2 -#define GL_STENCIL_BACK_REF 0x8CA3 -#define GL_STENCIL_BACK_VALUE_MASK 0x8CA4 -#define GL_STENCIL_BACK_WRITEMASK 0x8CA5 -#endif - -#ifndef GL_VERSION_2_1 -#define GL_CURRENT_RASTER_SECONDARY_COLOR 0x845F -#define GL_PIXEL_PACK_BUFFER 0x88EB -#define GL_PIXEL_UNPACK_BUFFER 0x88EC -#define GL_PIXEL_PACK_BUFFER_BINDING 0x88ED -#define GL_PIXEL_UNPACK_BUFFER_BINDING 0x88EF -#define GL_FLOAT_MAT2x3 0x8B65 -#define GL_FLOAT_MAT2x4 0x8B66 -#define GL_FLOAT_MAT3x2 0x8B67 -#define GL_FLOAT_MAT3x4 0x8B68 -#define GL_FLOAT_MAT4x2 0x8B69 -#define GL_FLOAT_MAT4x3 0x8B6A -#define GL_SRGB 0x8C40 -#define GL_SRGB8 0x8C41 -#define GL_SRGB_ALPHA 0x8C42 -#define GL_SRGB8_ALPHA8 0x8C43 -#define GL_SLUMINANCE_ALPHA 0x8C44 -#define GL_SLUMINANCE8_ALPHA8 0x8C45 -#define GL_SLUMINANCE 0x8C46 -#define GL_SLUMINANCE8 0x8C47 -#define GL_COMPRESSED_SRGB 0x8C48 -#define GL_COMPRESSED_SRGB_ALPHA 0x8C49 -#define GL_COMPRESSED_SLUMINANCE 0x8C4A -#define GL_COMPRESSED_SLUMINANCE_ALPHA 0x8C4B -#endif - -#ifndef GL_ARB_multitexture -#define GL_TEXTURE0_ARB 0x84C0 -#define GL_TEXTURE1_ARB 0x84C1 -#define GL_TEXTURE2_ARB 0x84C2 -#define GL_TEXTURE3_ARB 0x84C3 -#define GL_TEXTURE4_ARB 0x84C4 -#define GL_TEXTURE5_ARB 0x84C5 -#define GL_TEXTURE6_ARB 0x84C6 -#define GL_TEXTURE7_ARB 0x84C7 -#define GL_TEXTURE8_ARB 0x84C8 -#define GL_TEXTURE9_ARB 0x84C9 -#define GL_TEXTURE10_ARB 0x84CA -#define GL_TEXTURE11_ARB 0x84CB -#define GL_TEXTURE12_ARB 0x84CC -#define GL_TEXTURE13_ARB 0x84CD -#define GL_TEXTURE14_ARB 0x84CE -#define GL_TEXTURE15_ARB 0x84CF -#define GL_TEXTURE16_ARB 0x84D0 -#define GL_TEXTURE17_ARB 0x84D1 -#define GL_TEXTURE18_ARB 0x84D2 -#define GL_TEXTURE19_ARB 0x84D3 -#define GL_TEXTURE20_ARB 0x84D4 -#define GL_TEXTURE21_ARB 0x84D5 -#define GL_TEXTURE22_ARB 0x84D6 -#define GL_TEXTURE23_ARB 0x84D7 -#define GL_TEXTURE24_ARB 0x84D8 -#define GL_TEXTURE25_ARB 0x84D9 -#define GL_TEXTURE26_ARB 0x84DA -#define GL_TEXTURE27_ARB 0x84DB -#define GL_TEXTURE28_ARB 0x84DC -#define GL_TEXTURE29_ARB 0x84DD -#define GL_TEXTURE30_ARB 0x84DE -#define GL_TEXTURE31_ARB 0x84DF -#define GL_ACTIVE_TEXTURE_ARB 0x84E0 -#define GL_CLIENT_ACTIVE_TEXTURE_ARB 0x84E1 -#define GL_MAX_TEXTURE_UNITS_ARB 0x84E2 -#endif - -#ifndef GL_ARB_transpose_matrix -#define GL_TRANSPOSE_MODELVIEW_MATRIX_ARB 0x84E3 -#define GL_TRANSPOSE_PROJECTION_MATRIX_ARB 0x84E4 -#define GL_TRANSPOSE_TEXTURE_MATRIX_ARB 0x84E5 -#define GL_TRANSPOSE_COLOR_MATRIX_ARB 0x84E6 -#endif - -#ifndef GL_ARB_multisample -#define GL_MULTISAMPLE_ARB 0x809D -#define GL_SAMPLE_ALPHA_TO_COVERAGE_ARB 0x809E -#define GL_SAMPLE_ALPHA_TO_ONE_ARB 0x809F -#define GL_SAMPLE_COVERAGE_ARB 0x80A0 -#define GL_SAMPLE_BUFFERS_ARB 0x80A8 -#define GL_SAMPLES_ARB 0x80A9 -#define GL_SAMPLE_COVERAGE_VALUE_ARB 0x80AA -#define GL_SAMPLE_COVERAGE_INVERT_ARB 0x80AB -#define GL_MULTISAMPLE_BIT_ARB 0x20000000 -#endif - -#ifndef GL_ARB_texture_env_add -#endif - -#ifndef GL_ARB_texture_cube_map -#define GL_NORMAL_MAP_ARB 0x8511 -#define GL_REFLECTION_MAP_ARB 0x8512 -#define GL_TEXTURE_CUBE_MAP_ARB 0x8513 -#define GL_TEXTURE_BINDING_CUBE_MAP_ARB 0x8514 -#define GL_TEXTURE_CUBE_MAP_POSITIVE_X_ARB 0x8515 -#define GL_TEXTURE_CUBE_MAP_NEGATIVE_X_ARB 0x8516 -#define GL_TEXTURE_CUBE_MAP_POSITIVE_Y_ARB 0x8517 -#define GL_TEXTURE_CUBE_MAP_NEGATIVE_Y_ARB 0x8518 -#define GL_TEXTURE_CUBE_MAP_POSITIVE_Z_ARB 0x8519 -#define GL_TEXTURE_CUBE_MAP_NEGATIVE_Z_ARB 0x851A -#define GL_PROXY_TEXTURE_CUBE_MAP_ARB 0x851B -#define GL_MAX_CUBE_MAP_TEXTURE_SIZE_ARB 0x851C -#endif - -#ifndef GL_ARB_texture_compression -#define GL_COMPRESSED_ALPHA_ARB 0x84E9 -#define GL_COMPRESSED_LUMINANCE_ARB 0x84EA -#define GL_COMPRESSED_LUMINANCE_ALPHA_ARB 0x84EB -#define GL_COMPRESSED_INTENSITY_ARB 0x84EC -#define GL_COMPRESSED_RGB_ARB 0x84ED -#define GL_COMPRESSED_RGBA_ARB 0x84EE -#define GL_TEXTURE_COMPRESSION_HINT_ARB 0x84EF -#define GL_TEXTURE_COMPRESSED_IMAGE_SIZE_ARB 0x86A0 -#define GL_TEXTURE_COMPRESSED_ARB 0x86A1 -#define GL_NUM_COMPRESSED_TEXTURE_FORMATS_ARB 0x86A2 -#define GL_COMPRESSED_TEXTURE_FORMATS_ARB 0x86A3 -#endif - -#ifndef GL_ARB_texture_border_clamp -#define GL_CLAMP_TO_BORDER_ARB 0x812D -#endif - -#ifndef GL_ARB_point_parameters -#define GL_POINT_SIZE_MIN_ARB 0x8126 -#define GL_POINT_SIZE_MAX_ARB 0x8127 -#define GL_POINT_FADE_THRESHOLD_SIZE_ARB 0x8128 -#define GL_POINT_DISTANCE_ATTENUATION_ARB 0x8129 -#endif - -#ifndef GL_ARB_vertex_blend -#define GL_MAX_VERTEX_UNITS_ARB 0x86A4 -#define GL_ACTIVE_VERTEX_UNITS_ARB 0x86A5 -#define GL_WEIGHT_SUM_UNITY_ARB 0x86A6 -#define GL_VERTEX_BLEND_ARB 0x86A7 -#define GL_CURRENT_WEIGHT_ARB 0x86A8 -#define GL_WEIGHT_ARRAY_TYPE_ARB 0x86A9 -#define GL_WEIGHT_ARRAY_STRIDE_ARB 0x86AA -#define GL_WEIGHT_ARRAY_SIZE_ARB 0x86AB -#define GL_WEIGHT_ARRAY_POINTER_ARB 0x86AC -#define GL_WEIGHT_ARRAY_ARB 0x86AD -#define GL_MODELVIEW0_ARB 0x1700 -#define GL_MODELVIEW1_ARB 0x850A -#define GL_MODELVIEW2_ARB 0x8722 -#define GL_MODELVIEW3_ARB 0x8723 -#define GL_MODELVIEW4_ARB 0x8724 -#define GL_MODELVIEW5_ARB 0x8725 -#define GL_MODELVIEW6_ARB 0x8726 -#define GL_MODELVIEW7_ARB 0x8727 -#define GL_MODELVIEW8_ARB 0x8728 -#define GL_MODELVIEW9_ARB 0x8729 -#define GL_MODELVIEW10_ARB 0x872A -#define GL_MODELVIEW11_ARB 0x872B -#define GL_MODELVIEW12_ARB 0x872C -#define GL_MODELVIEW13_ARB 0x872D -#define GL_MODELVIEW14_ARB 0x872E -#define GL_MODELVIEW15_ARB 0x872F -#define GL_MODELVIEW16_ARB 0x8730 -#define GL_MODELVIEW17_ARB 0x8731 -#define GL_MODELVIEW18_ARB 0x8732 -#define GL_MODELVIEW19_ARB 0x8733 -#define GL_MODELVIEW20_ARB 0x8734 -#define GL_MODELVIEW21_ARB 0x8735 -#define GL_MODELVIEW22_ARB 0x8736 -#define GL_MODELVIEW23_ARB 0x8737 -#define GL_MODELVIEW24_ARB 0x8738 -#define GL_MODELVIEW25_ARB 0x8739 -#define GL_MODELVIEW26_ARB 0x873A -#define GL_MODELVIEW27_ARB 0x873B -#define GL_MODELVIEW28_ARB 0x873C -#define GL_MODELVIEW29_ARB 0x873D -#define GL_MODELVIEW30_ARB 0x873E -#define GL_MODELVIEW31_ARB 0x873F -#endif - -#ifndef GL_ARB_matrix_palette -#define GL_MATRIX_PALETTE_ARB 0x8840 -#define GL_MAX_MATRIX_PALETTE_STACK_DEPTH_ARB 0x8841 -#define GL_MAX_PALETTE_MATRICES_ARB 0x8842 -#define GL_CURRENT_PALETTE_MATRIX_ARB 0x8843 -#define GL_MATRIX_INDEX_ARRAY_ARB 0x8844 -#define GL_CURRENT_MATRIX_INDEX_ARB 0x8845 -#define GL_MATRIX_INDEX_ARRAY_SIZE_ARB 0x8846 -#define GL_MATRIX_INDEX_ARRAY_TYPE_ARB 0x8847 -#define GL_MATRIX_INDEX_ARRAY_STRIDE_ARB 0x8848 -#define GL_MATRIX_INDEX_ARRAY_POINTER_ARB 0x8849 -#endif - -#ifndef GL_ARB_texture_env_combine -#define GL_COMBINE_ARB 0x8570 -#define GL_COMBINE_RGB_ARB 0x8571 -#define GL_COMBINE_ALPHA_ARB 0x8572 -#define GL_SOURCE0_RGB_ARB 0x8580 -#define GL_SOURCE1_RGB_ARB 0x8581 -#define GL_SOURCE2_RGB_ARB 0x8582 -#define GL_SOURCE0_ALPHA_ARB 0x8588 -#define GL_SOURCE1_ALPHA_ARB 0x8589 -#define GL_SOURCE2_ALPHA_ARB 0x858A -#define GL_OPERAND0_RGB_ARB 0x8590 -#define GL_OPERAND1_RGB_ARB 0x8591 -#define GL_OPERAND2_RGB_ARB 0x8592 -#define GL_OPERAND0_ALPHA_ARB 0x8598 -#define GL_OPERAND1_ALPHA_ARB 0x8599 -#define GL_OPERAND2_ALPHA_ARB 0x859A -#define GL_RGB_SCALE_ARB 0x8573 -#define GL_ADD_SIGNED_ARB 0x8574 -#define GL_INTERPOLATE_ARB 0x8575 -#define GL_SUBTRACT_ARB 0x84E7 -#define GL_CONSTANT_ARB 0x8576 -#define GL_PRIMARY_COLOR_ARB 0x8577 -#define GL_PREVIOUS_ARB 0x8578 -#endif - -#ifndef GL_ARB_texture_env_crossbar -#endif - -#ifndef GL_ARB_texture_env_dot3 -#define GL_DOT3_RGB_ARB 0x86AE -#define GL_DOT3_RGBA_ARB 0x86AF -#endif - -#ifndef GL_ARB_texture_mirrored_repeat -#define GL_MIRRORED_REPEAT_ARB 0x8370 -#endif - -#ifndef GL_ARB_depth_texture -#define GL_DEPTH_COMPONENT16_ARB 0x81A5 -#define GL_DEPTH_COMPONENT24_ARB 0x81A6 -#define GL_DEPTH_COMPONENT32_ARB 0x81A7 -#define GL_TEXTURE_DEPTH_SIZE_ARB 0x884A -#define GL_DEPTH_TEXTURE_MODE_ARB 0x884B -#endif - -#ifndef GL_ARB_shadow -#define GL_TEXTURE_COMPARE_MODE_ARB 0x884C -#define GL_TEXTURE_COMPARE_FUNC_ARB 0x884D -#define GL_COMPARE_R_TO_TEXTURE_ARB 0x884E -#endif - -#ifndef GL_ARB_shadow_ambient -#define GL_TEXTURE_COMPARE_FAIL_VALUE_ARB 0x80BF -#endif - -#ifndef GL_ARB_window_pos -#endif - -#ifndef GL_ARB_vertex_program -#define GL_COLOR_SUM_ARB 0x8458 -#define GL_VERTEX_PROGRAM_ARB 0x8620 -#define GL_VERTEX_ATTRIB_ARRAY_ENABLED_ARB 0x8622 -#define GL_VERTEX_ATTRIB_ARRAY_SIZE_ARB 0x8623 -#define GL_VERTEX_ATTRIB_ARRAY_STRIDE_ARB 0x8624 -#define GL_VERTEX_ATTRIB_ARRAY_TYPE_ARB 0x8625 -#define GL_CURRENT_VERTEX_ATTRIB_ARB 0x8626 -#define GL_PROGRAM_LENGTH_ARB 0x8627 -#define GL_PROGRAM_STRING_ARB 0x8628 -#define GL_MAX_PROGRAM_MATRIX_STACK_DEPTH_ARB 0x862E -#define GL_MAX_PROGRAM_MATRICES_ARB 0x862F -#define GL_CURRENT_MATRIX_STACK_DEPTH_ARB 0x8640 -#define GL_CURRENT_MATRIX_ARB 0x8641 -#define GL_VERTEX_PROGRAM_POINT_SIZE_ARB 0x8642 -#define GL_VERTEX_PROGRAM_TWO_SIDE_ARB 0x8643 -#define GL_VERTEX_ATTRIB_ARRAY_POINTER_ARB 0x8645 -#define GL_PROGRAM_ERROR_POSITION_ARB 0x864B -#define GL_PROGRAM_BINDING_ARB 0x8677 -#define GL_MAX_VERTEX_ATTRIBS_ARB 0x8869 -#define GL_VERTEX_ATTRIB_ARRAY_NORMALIZED_ARB 0x886A -#define GL_PROGRAM_ERROR_STRING_ARB 0x8874 -#define GL_PROGRAM_FORMAT_ASCII_ARB 0x8875 -#define GL_PROGRAM_FORMAT_ARB 0x8876 -#define GL_PROGRAM_INSTRUCTIONS_ARB 0x88A0 -#define GL_MAX_PROGRAM_INSTRUCTIONS_ARB 0x88A1 -#define GL_PROGRAM_NATIVE_INSTRUCTIONS_ARB 0x88A2 -#define GL_MAX_PROGRAM_NATIVE_INSTRUCTIONS_ARB 0x88A3 -#define GL_PROGRAM_TEMPORARIES_ARB 0x88A4 -#define GL_MAX_PROGRAM_TEMPORARIES_ARB 0x88A5 -#define GL_PROGRAM_NATIVE_TEMPORARIES_ARB 0x88A6 -#define GL_MAX_PROGRAM_NATIVE_TEMPORARIES_ARB 0x88A7 -#define GL_PROGRAM_PARAMETERS_ARB 0x88A8 -#define GL_MAX_PROGRAM_PARAMETERS_ARB 0x88A9 -#define GL_PROGRAM_NATIVE_PARAMETERS_ARB 0x88AA -#define GL_MAX_PROGRAM_NATIVE_PARAMETERS_ARB 0x88AB -#define GL_PROGRAM_ATTRIBS_ARB 0x88AC -#define GL_MAX_PROGRAM_ATTRIBS_ARB 0x88AD -#define GL_PROGRAM_NATIVE_ATTRIBS_ARB 0x88AE -#define GL_MAX_PROGRAM_NATIVE_ATTRIBS_ARB 0x88AF -#define GL_PROGRAM_ADDRESS_REGISTERS_ARB 0x88B0 -#define GL_MAX_PROGRAM_ADDRESS_REGISTERS_ARB 0x88B1 -#define GL_PROGRAM_NATIVE_ADDRESS_REGISTERS_ARB 0x88B2 -#define GL_MAX_PROGRAM_NATIVE_ADDRESS_REGISTERS_ARB 0x88B3 -#define GL_MAX_PROGRAM_LOCAL_PARAMETERS_ARB 0x88B4 -#define GL_MAX_PROGRAM_ENV_PARAMETERS_ARB 0x88B5 -#define GL_PROGRAM_UNDER_NATIVE_LIMITS_ARB 0x88B6 -#define GL_TRANSPOSE_CURRENT_MATRIX_ARB 0x88B7 -#define GL_MATRIX0_ARB 0x88C0 -#define GL_MATRIX1_ARB 0x88C1 -#define GL_MATRIX2_ARB 0x88C2 -#define GL_MATRIX3_ARB 0x88C3 -#define GL_MATRIX4_ARB 0x88C4 -#define GL_MATRIX5_ARB 0x88C5 -#define GL_MATRIX6_ARB 0x88C6 -#define GL_MATRIX7_ARB 0x88C7 -#define GL_MATRIX8_ARB 0x88C8 -#define GL_MATRIX9_ARB 0x88C9 -#define GL_MATRIX10_ARB 0x88CA -#define GL_MATRIX11_ARB 0x88CB -#define GL_MATRIX12_ARB 0x88CC -#define GL_MATRIX13_ARB 0x88CD -#define GL_MATRIX14_ARB 0x88CE -#define GL_MATRIX15_ARB 0x88CF -#define GL_MATRIX16_ARB 0x88D0 -#define GL_MATRIX17_ARB 0x88D1 -#define GL_MATRIX18_ARB 0x88D2 -#define GL_MATRIX19_ARB 0x88D3 -#define GL_MATRIX20_ARB 0x88D4 -#define GL_MATRIX21_ARB 0x88D5 -#define GL_MATRIX22_ARB 0x88D6 -#define GL_MATRIX23_ARB 0x88D7 -#define GL_MATRIX24_ARB 0x88D8 -#define GL_MATRIX25_ARB 0x88D9 -#define GL_MATRIX26_ARB 0x88DA -#define GL_MATRIX27_ARB 0x88DB -#define GL_MATRIX28_ARB 0x88DC -#define GL_MATRIX29_ARB 0x88DD -#define GL_MATRIX30_ARB 0x88DE -#define GL_MATRIX31_ARB 0x88DF -#endif - -#ifndef GL_ARB_fragment_program -#define GL_FRAGMENT_PROGRAM_ARB 0x8804 -#define GL_PROGRAM_ALU_INSTRUCTIONS_ARB 0x8805 -#define GL_PROGRAM_TEX_INSTRUCTIONS_ARB 0x8806 -#define GL_PROGRAM_TEX_INDIRECTIONS_ARB 0x8807 -#define GL_PROGRAM_NATIVE_ALU_INSTRUCTIONS_ARB 0x8808 -#define GL_PROGRAM_NATIVE_TEX_INSTRUCTIONS_ARB 0x8809 -#define GL_PROGRAM_NATIVE_TEX_INDIRECTIONS_ARB 0x880A -#define GL_MAX_PROGRAM_ALU_INSTRUCTIONS_ARB 0x880B -#define GL_MAX_PROGRAM_TEX_INSTRUCTIONS_ARB 0x880C -#define GL_MAX_PROGRAM_TEX_INDIRECTIONS_ARB 0x880D -#define GL_MAX_PROGRAM_NATIVE_ALU_INSTRUCTIONS_ARB 0x880E -#define GL_MAX_PROGRAM_NATIVE_TEX_INSTRUCTIONS_ARB 0x880F -#define GL_MAX_PROGRAM_NATIVE_TEX_INDIRECTIONS_ARB 0x8810 -#define GL_MAX_TEXTURE_COORDS_ARB 0x8871 -#define GL_MAX_TEXTURE_IMAGE_UNITS_ARB 0x8872 -#endif - -#ifndef GL_ARB_vertex_buffer_object -#define GL_BUFFER_SIZE_ARB 0x8764 -#define GL_BUFFER_USAGE_ARB 0x8765 -#define GL_ARRAY_BUFFER_ARB 0x8892 -#define GL_ELEMENT_ARRAY_BUFFER_ARB 0x8893 -#define GL_ARRAY_BUFFER_BINDING_ARB 0x8894 -#define GL_ELEMENT_ARRAY_BUFFER_BINDING_ARB 0x8895 -#define GL_VERTEX_ARRAY_BUFFER_BINDING_ARB 0x8896 -#define GL_NORMAL_ARRAY_BUFFER_BINDING_ARB 0x8897 -#define GL_COLOR_ARRAY_BUFFER_BINDING_ARB 0x8898 -#define GL_INDEX_ARRAY_BUFFER_BINDING_ARB 0x8899 -#define GL_TEXTURE_COORD_ARRAY_BUFFER_BINDING_ARB 0x889A -#define GL_EDGE_FLAG_ARRAY_BUFFER_BINDING_ARB 0x889B -#define GL_SECONDARY_COLOR_ARRAY_BUFFER_BINDING_ARB 0x889C -#define GL_FOG_COORDINATE_ARRAY_BUFFER_BINDING_ARB 0x889D -#define GL_WEIGHT_ARRAY_BUFFER_BINDING_ARB 0x889E -#define GL_VERTEX_ATTRIB_ARRAY_BUFFER_BINDING_ARB 0x889F -#define GL_READ_ONLY_ARB 0x88B8 -#define GL_WRITE_ONLY_ARB 0x88B9 -#define GL_READ_WRITE_ARB 0x88BA -#define GL_BUFFER_ACCESS_ARB 0x88BB -#define GL_BUFFER_MAPPED_ARB 0x88BC -#define GL_BUFFER_MAP_POINTER_ARB 0x88BD -#define GL_STREAM_DRAW_ARB 0x88E0 -#define GL_STREAM_READ_ARB 0x88E1 -#define GL_STREAM_COPY_ARB 0x88E2 -#define GL_STATIC_DRAW_ARB 0x88E4 -#define GL_STATIC_READ_ARB 0x88E5 -#define GL_STATIC_COPY_ARB 0x88E6 -#define GL_DYNAMIC_DRAW_ARB 0x88E8 -#define GL_DYNAMIC_READ_ARB 0x88E9 -#define GL_DYNAMIC_COPY_ARB 0x88EA -#endif - -#ifndef GL_ARB_occlusion_query -#define GL_QUERY_COUNTER_BITS_ARB 0x8864 -#define GL_CURRENT_QUERY_ARB 0x8865 -#define GL_QUERY_RESULT_ARB 0x8866 -#define GL_QUERY_RESULT_AVAILABLE_ARB 0x8867 -#define GL_SAMPLES_PASSED_ARB 0x8914 -#endif - -#ifndef GL_ARB_shader_objects -#define GL_PROGRAM_OBJECT_ARB 0x8B40 -#define GL_SHADER_OBJECT_ARB 0x8B48 -#define GL_OBJECT_TYPE_ARB 0x8B4E -#define GL_OBJECT_SUBTYPE_ARB 0x8B4F -#define GL_FLOAT_VEC2_ARB 0x8B50 -#define GL_FLOAT_VEC3_ARB 0x8B51 -#define GL_FLOAT_VEC4_ARB 0x8B52 -#define GL_INT_VEC2_ARB 0x8B53 -#define GL_INT_VEC3_ARB 0x8B54 -#define GL_INT_VEC4_ARB 0x8B55 -#define GL_BOOL_ARB 0x8B56 -#define GL_BOOL_VEC2_ARB 0x8B57 -#define GL_BOOL_VEC3_ARB 0x8B58 -#define GL_BOOL_VEC4_ARB 0x8B59 -#define GL_FLOAT_MAT2_ARB 0x8B5A -#define GL_FLOAT_MAT3_ARB 0x8B5B -#define GL_FLOAT_MAT4_ARB 0x8B5C -#define GL_SAMPLER_1D_ARB 0x8B5D -#define GL_SAMPLER_2D_ARB 0x8B5E -#define GL_SAMPLER_3D_ARB 0x8B5F -#define GL_SAMPLER_CUBE_ARB 0x8B60 -#define GL_SAMPLER_1D_SHADOW_ARB 0x8B61 -#define GL_SAMPLER_2D_SHADOW_ARB 0x8B62 -#define GL_SAMPLER_2D_RECT_ARB 0x8B63 -#define GL_SAMPLER_2D_RECT_SHADOW_ARB 0x8B64 -#define GL_OBJECT_DELETE_STATUS_ARB 0x8B80 -#define GL_OBJECT_COMPILE_STATUS_ARB 0x8B81 -#define GL_OBJECT_LINK_STATUS_ARB 0x8B82 -#define GL_OBJECT_VALIDATE_STATUS_ARB 0x8B83 -#define GL_OBJECT_INFO_LOG_LENGTH_ARB 0x8B84 -#define GL_OBJECT_ATTACHED_OBJECTS_ARB 0x8B85 -#define GL_OBJECT_ACTIVE_UNIFORMS_ARB 0x8B86 -#define GL_OBJECT_ACTIVE_UNIFORM_MAX_LENGTH_ARB 0x8B87 -#define GL_OBJECT_SHADER_SOURCE_LENGTH_ARB 0x8B88 -#endif - -#ifndef GL_ARB_vertex_shader -#define GL_VERTEX_SHADER_ARB 0x8B31 -#define GL_MAX_VERTEX_UNIFORM_COMPONENTS_ARB 0x8B4A -#define GL_MAX_VARYING_FLOATS_ARB 0x8B4B -#define GL_MAX_VERTEX_TEXTURE_IMAGE_UNITS_ARB 0x8B4C -#define GL_MAX_COMBINED_TEXTURE_IMAGE_UNITS_ARB 0x8B4D -#define GL_OBJECT_ACTIVE_ATTRIBUTES_ARB 0x8B89 -#define GL_OBJECT_ACTIVE_ATTRIBUTE_MAX_LENGTH_ARB 0x8B8A -#endif - -#ifndef GL_ARB_fragment_shader -#define GL_FRAGMENT_SHADER_ARB 0x8B30 -#define GL_MAX_FRAGMENT_UNIFORM_COMPONENTS_ARB 0x8B49 -#define GL_FRAGMENT_SHADER_DERIVATIVE_HINT_ARB 0x8B8B -#endif - -#ifndef GL_ARB_shading_language_100 -#define GL_SHADING_LANGUAGE_VERSION_ARB 0x8B8C -#endif - -#ifndef GL_ARB_texture_non_power_of_two -#endif - -#ifndef GL_ARB_point_sprite -#define GL_POINT_SPRITE_ARB 0x8861 -#define GL_COORD_REPLACE_ARB 0x8862 -#endif - -#ifndef GL_ARB_fragment_program_shadow -#endif - -#ifndef GL_ARB_draw_buffers -#define GL_MAX_DRAW_BUFFERS_ARB 0x8824 -#define GL_DRAW_BUFFER0_ARB 0x8825 -#define GL_DRAW_BUFFER1_ARB 0x8826 -#define GL_DRAW_BUFFER2_ARB 0x8827 -#define GL_DRAW_BUFFER3_ARB 0x8828 -#define GL_DRAW_BUFFER4_ARB 0x8829 -#define GL_DRAW_BUFFER5_ARB 0x882A -#define GL_DRAW_BUFFER6_ARB 0x882B -#define GL_DRAW_BUFFER7_ARB 0x882C -#define GL_DRAW_BUFFER8_ARB 0x882D -#define GL_DRAW_BUFFER9_ARB 0x882E -#define GL_DRAW_BUFFER10_ARB 0x882F -#define GL_DRAW_BUFFER11_ARB 0x8830 -#define GL_DRAW_BUFFER12_ARB 0x8831 -#define GL_DRAW_BUFFER13_ARB 0x8832 -#define GL_DRAW_BUFFER14_ARB 0x8833 -#define GL_DRAW_BUFFER15_ARB 0x8834 -#endif - -#ifndef GL_ARB_texture_rectangle -#define GL_TEXTURE_RECTANGLE_ARB 0x84F5 -#define GL_TEXTURE_BINDING_RECTANGLE_ARB 0x84F6 -#define GL_PROXY_TEXTURE_RECTANGLE_ARB 0x84F7 -#define GL_MAX_RECTANGLE_TEXTURE_SIZE_ARB 0x84F8 -#endif - -#ifndef GL_ARB_color_buffer_float -#define GL_RGBA_FLOAT_MODE_ARB 0x8820 -#define GL_CLAMP_VERTEX_COLOR_ARB 0x891A -#define GL_CLAMP_FRAGMENT_COLOR_ARB 0x891B -#define GL_CLAMP_READ_COLOR_ARB 0x891C -#define GL_FIXED_ONLY_ARB 0x891D -#endif - -#ifndef GL_ARB_half_float_pixel -#define GL_HALF_FLOAT_ARB 0x140B -#endif - -#ifndef GL_ARB_texture_float -#define GL_TEXTURE_RED_TYPE_ARB 0x8C10 -#define GL_TEXTURE_GREEN_TYPE_ARB 0x8C11 -#define GL_TEXTURE_BLUE_TYPE_ARB 0x8C12 -#define GL_TEXTURE_ALPHA_TYPE_ARB 0x8C13 -#define GL_TEXTURE_LUMINANCE_TYPE_ARB 0x8C14 -#define GL_TEXTURE_INTENSITY_TYPE_ARB 0x8C15 -#define GL_TEXTURE_DEPTH_TYPE_ARB 0x8C16 -#define GL_UNSIGNED_NORMALIZED_ARB 0x8C17 -#define GL_RGBA32F_ARB 0x8814 -#define GL_RGB32F_ARB 0x8815 -#define GL_ALPHA32F_ARB 0x8816 -#define GL_INTENSITY32F_ARB 0x8817 -#define GL_LUMINANCE32F_ARB 0x8818 -#define GL_LUMINANCE_ALPHA32F_ARB 0x8819 -#define GL_RGBA16F_ARB 0x881A -#define GL_RGB16F_ARB 0x881B -#define GL_ALPHA16F_ARB 0x881C -#define GL_INTENSITY16F_ARB 0x881D -#define GL_LUMINANCE16F_ARB 0x881E -#define GL_LUMINANCE_ALPHA16F_ARB 0x881F -#endif - -#ifndef GL_ARB_pixel_buffer_object -#define GL_PIXEL_PACK_BUFFER_ARB 0x88EB -#define GL_PIXEL_UNPACK_BUFFER_ARB 0x88EC -#define GL_PIXEL_PACK_BUFFER_BINDING_ARB 0x88ED -#define GL_PIXEL_UNPACK_BUFFER_BINDING_ARB 0x88EF -#endif - -#ifndef GL_EXT_abgr -#define GL_ABGR_EXT 0x8000 -#endif - -#ifndef GL_EXT_blend_color -#define GL_CONSTANT_COLOR_EXT 0x8001 -#define GL_ONE_MINUS_CONSTANT_COLOR_EXT 0x8002 -#define GL_CONSTANT_ALPHA_EXT 0x8003 -#define GL_ONE_MINUS_CONSTANT_ALPHA_EXT 0x8004 -#define GL_BLEND_COLOR_EXT 0x8005 -#endif - -#ifndef GL_EXT_polygon_offset -#define GL_POLYGON_OFFSET_EXT 0x8037 -#define GL_POLYGON_OFFSET_FACTOR_EXT 0x8038 -#define GL_POLYGON_OFFSET_BIAS_EXT 0x8039 -#endif - -#ifndef GL_EXT_texture -#define GL_ALPHA4_EXT 0x803B -#define GL_ALPHA8_EXT 0x803C -#define GL_ALPHA12_EXT 0x803D -#define GL_ALPHA16_EXT 0x803E -#define GL_LUMINANCE4_EXT 0x803F -#define GL_LUMINANCE8_EXT 0x8040 -#define GL_LUMINANCE12_EXT 0x8041 -#define GL_LUMINANCE16_EXT 0x8042 -#define GL_LUMINANCE4_ALPHA4_EXT 0x8043 -#define GL_LUMINANCE6_ALPHA2_EXT 0x8044 -#define GL_LUMINANCE8_ALPHA8_EXT 0x8045 -#define GL_LUMINANCE12_ALPHA4_EXT 0x8046 -#define GL_LUMINANCE12_ALPHA12_EXT 0x8047 -#define GL_LUMINANCE16_ALPHA16_EXT 0x8048 -#define GL_INTENSITY_EXT 0x8049 -#define GL_INTENSITY4_EXT 0x804A -#define GL_INTENSITY8_EXT 0x804B -#define GL_INTENSITY12_EXT 0x804C -#define GL_INTENSITY16_EXT 0x804D -#define GL_RGB2_EXT 0x804E -#define GL_RGB4_EXT 0x804F -#define GL_RGB5_EXT 0x8050 -#define GL_RGB8_EXT 0x8051 -#define GL_RGB10_EXT 0x8052 -#define GL_RGB12_EXT 0x8053 -#define GL_RGB16_EXT 0x8054 -#define GL_RGBA2_EXT 0x8055 -#define GL_RGBA4_EXT 0x8056 -#define GL_RGB5_A1_EXT 0x8057 -#define GL_RGBA8_EXT 0x8058 -#define GL_RGB10_A2_EXT 0x8059 -#define GL_RGBA12_EXT 0x805A -#define GL_RGBA16_EXT 0x805B -#define GL_TEXTURE_RED_SIZE_EXT 0x805C -#define GL_TEXTURE_GREEN_SIZE_EXT 0x805D -#define GL_TEXTURE_BLUE_SIZE_EXT 0x805E -#define GL_TEXTURE_ALPHA_SIZE_EXT 0x805F -#define GL_TEXTURE_LUMINANCE_SIZE_EXT 0x8060 -#define GL_TEXTURE_INTENSITY_SIZE_EXT 0x8061 -#define GL_REPLACE_EXT 0x8062 -#define GL_PROXY_TEXTURE_1D_EXT 0x8063 -#define GL_PROXY_TEXTURE_2D_EXT 0x8064 -#define GL_TEXTURE_TOO_LARGE_EXT 0x8065 -#endif - -#ifndef GL_EXT_texture3D -#define GL_PACK_SKIP_IMAGES_EXT 0x806B -#define GL_PACK_IMAGE_HEIGHT_EXT 0x806C -#define GL_UNPACK_SKIP_IMAGES_EXT 0x806D -#define GL_UNPACK_IMAGE_HEIGHT_EXT 0x806E -#define GL_TEXTURE_3D_EXT 0x806F -#define GL_PROXY_TEXTURE_3D_EXT 0x8070 -#define GL_TEXTURE_DEPTH_EXT 0x8071 -#define GL_TEXTURE_WRAP_R_EXT 0x8072 -#define GL_MAX_3D_TEXTURE_SIZE_EXT 0x8073 -#endif - -#ifndef GL_SGIS_texture_filter4 -#define GL_FILTER4_SGIS 0x8146 -#define GL_TEXTURE_FILTER4_SIZE_SGIS 0x8147 -#endif - -#ifndef GL_EXT_subtexture -#endif - -#ifndef GL_EXT_copy_texture -#endif - -#ifndef GL_EXT_histogram -#define GL_HISTOGRAM_EXT 0x8024 -#define GL_PROXY_HISTOGRAM_EXT 0x8025 -#define GL_HISTOGRAM_WIDTH_EXT 0x8026 -#define GL_HISTOGRAM_FORMAT_EXT 0x8027 -#define GL_HISTOGRAM_RED_SIZE_EXT 0x8028 -#define GL_HISTOGRAM_GREEN_SIZE_EXT 0x8029 -#define GL_HISTOGRAM_BLUE_SIZE_EXT 0x802A -#define GL_HISTOGRAM_ALPHA_SIZE_EXT 0x802B -#define GL_HISTOGRAM_LUMINANCE_SIZE_EXT 0x802C -#define GL_HISTOGRAM_SINK_EXT 0x802D -#define GL_MINMAX_EXT 0x802E -#define GL_MINMAX_FORMAT_EXT 0x802F -#define GL_MINMAX_SINK_EXT 0x8030 -#define GL_TABLE_TOO_LARGE_EXT 0x8031 -#endif - -#ifndef GL_EXT_convolution -#define GL_CONVOLUTION_1D_EXT 0x8010 -#define GL_CONVOLUTION_2D_EXT 0x8011 -#define GL_SEPARABLE_2D_EXT 0x8012 -#define GL_CONVOLUTION_BORDER_MODE_EXT 0x8013 -#define GL_CONVOLUTION_FILTER_SCALE_EXT 0x8014 -#define GL_CONVOLUTION_FILTER_BIAS_EXT 0x8015 -#define GL_REDUCE_EXT 0x8016 -#define GL_CONVOLUTION_FORMAT_EXT 0x8017 -#define GL_CONVOLUTION_WIDTH_EXT 0x8018 -#define GL_CONVOLUTION_HEIGHT_EXT 0x8019 -#define GL_MAX_CONVOLUTION_WIDTH_EXT 0x801A -#define GL_MAX_CONVOLUTION_HEIGHT_EXT 0x801B -#define GL_POST_CONVOLUTION_RED_SCALE_EXT 0x801C -#define GL_POST_CONVOLUTION_GREEN_SCALE_EXT 0x801D -#define GL_POST_CONVOLUTION_BLUE_SCALE_EXT 0x801E -#define GL_POST_CONVOLUTION_ALPHA_SCALE_EXT 0x801F -#define GL_POST_CONVOLUTION_RED_BIAS_EXT 0x8020 -#define GL_POST_CONVOLUTION_GREEN_BIAS_EXT 0x8021 -#define GL_POST_CONVOLUTION_BLUE_BIAS_EXT 0x8022 -#define GL_POST_CONVOLUTION_ALPHA_BIAS_EXT 0x8023 -#endif - -#ifndef GL_SGI_color_matrix -#define GL_COLOR_MATRIX_SGI 0x80B1 -#define GL_COLOR_MATRIX_STACK_DEPTH_SGI 0x80B2 -#define GL_MAX_COLOR_MATRIX_STACK_DEPTH_SGI 0x80B3 -#define GL_POST_COLOR_MATRIX_RED_SCALE_SGI 0x80B4 -#define GL_POST_COLOR_MATRIX_GREEN_SCALE_SGI 0x80B5 -#define GL_POST_COLOR_MATRIX_BLUE_SCALE_SGI 0x80B6 -#define GL_POST_COLOR_MATRIX_ALPHA_SCALE_SGI 0x80B7 -#define GL_POST_COLOR_MATRIX_RED_BIAS_SGI 0x80B8 -#define GL_POST_COLOR_MATRIX_GREEN_BIAS_SGI 0x80B9 -#define GL_POST_COLOR_MATRIX_BLUE_BIAS_SGI 0x80BA -#define GL_POST_COLOR_MATRIX_ALPHA_BIAS_SGI 0x80BB -#endif - -#ifndef GL_SGI_color_table -#define GL_COLOR_TABLE_SGI 0x80D0 -#define GL_POST_CONVOLUTION_COLOR_TABLE_SGI 0x80D1 -#define GL_POST_COLOR_MATRIX_COLOR_TABLE_SGI 0x80D2 -#define GL_PROXY_COLOR_TABLE_SGI 0x80D3 -#define GL_PROXY_POST_CONVOLUTION_COLOR_TABLE_SGI 0x80D4 -#define GL_PROXY_POST_COLOR_MATRIX_COLOR_TABLE_SGI 0x80D5 -#define GL_COLOR_TABLE_SCALE_SGI 0x80D6 -#define GL_COLOR_TABLE_BIAS_SGI 0x80D7 -#define GL_COLOR_TABLE_FORMAT_SGI 0x80D8 -#define GL_COLOR_TABLE_WIDTH_SGI 0x80D9 -#define GL_COLOR_TABLE_RED_SIZE_SGI 0x80DA -#define GL_COLOR_TABLE_GREEN_SIZE_SGI 0x80DB -#define GL_COLOR_TABLE_BLUE_SIZE_SGI 0x80DC -#define GL_COLOR_TABLE_ALPHA_SIZE_SGI 0x80DD -#define GL_COLOR_TABLE_LUMINANCE_SIZE_SGI 0x80DE -#define GL_COLOR_TABLE_INTENSITY_SIZE_SGI 0x80DF -#endif - -#ifndef GL_SGIS_pixel_texture -#define GL_PIXEL_TEXTURE_SGIS 0x8353 -#define GL_PIXEL_FRAGMENT_RGB_SOURCE_SGIS 0x8354 -#define GL_PIXEL_FRAGMENT_ALPHA_SOURCE_SGIS 0x8355 -#define GL_PIXEL_GROUP_COLOR_SGIS 0x8356 -#endif - -#ifndef GL_SGIX_pixel_texture -#define GL_PIXEL_TEX_GEN_SGIX 0x8139 -#define GL_PIXEL_TEX_GEN_MODE_SGIX 0x832B -#endif - -#ifndef GL_SGIS_texture4D -#define GL_PACK_SKIP_VOLUMES_SGIS 0x8130 -#define GL_PACK_IMAGE_DEPTH_SGIS 0x8131 -#define GL_UNPACK_SKIP_VOLUMES_SGIS 0x8132 -#define GL_UNPACK_IMAGE_DEPTH_SGIS 0x8133 -#define GL_TEXTURE_4D_SGIS 0x8134 -#define GL_PROXY_TEXTURE_4D_SGIS 0x8135 -#define GL_TEXTURE_4DSIZE_SGIS 0x8136 -#define GL_TEXTURE_WRAP_Q_SGIS 0x8137 -#define GL_MAX_4D_TEXTURE_SIZE_SGIS 0x8138 -#define GL_TEXTURE_4D_BINDING_SGIS 0x814F -#endif - -#ifndef GL_SGI_texture_color_table -#define GL_TEXTURE_COLOR_TABLE_SGI 0x80BC -#define GL_PROXY_TEXTURE_COLOR_TABLE_SGI 0x80BD -#endif - -#ifndef GL_EXT_cmyka -#define GL_CMYK_EXT 0x800C -#define GL_CMYKA_EXT 0x800D -#define GL_PACK_CMYK_HINT_EXT 0x800E -#define GL_UNPACK_CMYK_HINT_EXT 0x800F -#endif - -#ifndef GL_EXT_texture_object -#define GL_TEXTURE_PRIORITY_EXT 0x8066 -#define GL_TEXTURE_RESIDENT_EXT 0x8067 -#define GL_TEXTURE_1D_BINDING_EXT 0x8068 -#define GL_TEXTURE_2D_BINDING_EXT 0x8069 -#define GL_TEXTURE_3D_BINDING_EXT 0x806A -#endif - -#ifndef GL_SGIS_detail_texture -#define GL_DETAIL_TEXTURE_2D_SGIS 0x8095 -#define GL_DETAIL_TEXTURE_2D_BINDING_SGIS 0x8096 -#define GL_LINEAR_DETAIL_SGIS 0x8097 -#define GL_LINEAR_DETAIL_ALPHA_SGIS 0x8098 -#define GL_LINEAR_DETAIL_COLOR_SGIS 0x8099 -#define GL_DETAIL_TEXTURE_LEVEL_SGIS 0x809A -#define GL_DETAIL_TEXTURE_MODE_SGIS 0x809B -#define GL_DETAIL_TEXTURE_FUNC_POINTS_SGIS 0x809C -#endif - -#ifndef GL_SGIS_sharpen_texture -#define GL_LINEAR_SHARPEN_SGIS 0x80AD -#define GL_LINEAR_SHARPEN_ALPHA_SGIS 0x80AE -#define GL_LINEAR_SHARPEN_COLOR_SGIS 0x80AF -#define GL_SHARPEN_TEXTURE_FUNC_POINTS_SGIS 0x80B0 -#endif - -#ifndef GL_EXT_packed_pixels -#define GL_UNSIGNED_BYTE_3_3_2_EXT 0x8032 -#define GL_UNSIGNED_SHORT_4_4_4_4_EXT 0x8033 -#define GL_UNSIGNED_SHORT_5_5_5_1_EXT 0x8034 -#define GL_UNSIGNED_INT_8_8_8_8_EXT 0x8035 -#define GL_UNSIGNED_INT_10_10_10_2_EXT 0x8036 -#endif - -#ifndef GL_SGIS_texture_lod -#define GL_TEXTURE_MIN_LOD_SGIS 0x813A -#define GL_TEXTURE_MAX_LOD_SGIS 0x813B -#define GL_TEXTURE_BASE_LEVEL_SGIS 0x813C -#define GL_TEXTURE_MAX_LEVEL_SGIS 0x813D -#endif - -#ifndef GL_SGIS_multisample -#define GL_MULTISAMPLE_SGIS 0x809D -#define GL_SAMPLE_ALPHA_TO_MASK_SGIS 0x809E -#define GL_SAMPLE_ALPHA_TO_ONE_SGIS 0x809F -#define GL_SAMPLE_MASK_SGIS 0x80A0 -#define GL_1PASS_SGIS 0x80A1 -#define GL_2PASS_0_SGIS 0x80A2 -#define GL_2PASS_1_SGIS 0x80A3 -#define GL_4PASS_0_SGIS 0x80A4 -#define GL_4PASS_1_SGIS 0x80A5 -#define GL_4PASS_2_SGIS 0x80A6 -#define GL_4PASS_3_SGIS 0x80A7 -#define GL_SAMPLE_BUFFERS_SGIS 0x80A8 -#define GL_SAMPLES_SGIS 0x80A9 -#define GL_SAMPLE_MASK_VALUE_SGIS 0x80AA -#define GL_SAMPLE_MASK_INVERT_SGIS 0x80AB -#define GL_SAMPLE_PATTERN_SGIS 0x80AC -#endif - -#ifndef GL_EXT_rescale_normal -#define GL_RESCALE_NORMAL_EXT 0x803A -#endif - -#ifndef GL_EXT_vertex_array -#define GL_VERTEX_ARRAY_EXT 0x8074 -#define GL_NORMAL_ARRAY_EXT 0x8075 -#define GL_COLOR_ARRAY_EXT 0x8076 -#define GL_INDEX_ARRAY_EXT 0x8077 -#define GL_TEXTURE_COORD_ARRAY_EXT 0x8078 -#define GL_EDGE_FLAG_ARRAY_EXT 0x8079 -#define GL_VERTEX_ARRAY_SIZE_EXT 0x807A -#define GL_VERTEX_ARRAY_TYPE_EXT 0x807B -#define GL_VERTEX_ARRAY_STRIDE_EXT 0x807C -#define GL_VERTEX_ARRAY_COUNT_EXT 0x807D -#define GL_NORMAL_ARRAY_TYPE_EXT 0x807E -#define GL_NORMAL_ARRAY_STRIDE_EXT 0x807F -#define GL_NORMAL_ARRAY_COUNT_EXT 0x8080 -#define GL_COLOR_ARRAY_SIZE_EXT 0x8081 -#define GL_COLOR_ARRAY_TYPE_EXT 0x8082 -#define GL_COLOR_ARRAY_STRIDE_EXT 0x8083 -#define GL_COLOR_ARRAY_COUNT_EXT 0x8084 -#define GL_INDEX_ARRAY_TYPE_EXT 0x8085 -#define GL_INDEX_ARRAY_STRIDE_EXT 0x8086 -#define GL_INDEX_ARRAY_COUNT_EXT 0x8087 -#define GL_TEXTURE_COORD_ARRAY_SIZE_EXT 0x8088 -#define GL_TEXTURE_COORD_ARRAY_TYPE_EXT 0x8089 -#define GL_TEXTURE_COORD_ARRAY_STRIDE_EXT 0x808A -#define GL_TEXTURE_COORD_ARRAY_COUNT_EXT 0x808B -#define GL_EDGE_FLAG_ARRAY_STRIDE_EXT 0x808C -#define GL_EDGE_FLAG_ARRAY_COUNT_EXT 0x808D -#define GL_VERTEX_ARRAY_POINTER_EXT 0x808E -#define GL_NORMAL_ARRAY_POINTER_EXT 0x808F -#define GL_COLOR_ARRAY_POINTER_EXT 0x8090 -#define GL_INDEX_ARRAY_POINTER_EXT 0x8091 -#define GL_TEXTURE_COORD_ARRAY_POINTER_EXT 0x8092 -#define GL_EDGE_FLAG_ARRAY_POINTER_EXT 0x8093 -#endif - -#ifndef GL_EXT_misc_attribute -#endif - -#ifndef GL_SGIS_generate_mipmap -#define GL_GENERATE_MIPMAP_SGIS 0x8191 -#define GL_GENERATE_MIPMAP_HINT_SGIS 0x8192 -#endif - -#ifndef GL_SGIX_clipmap -#define GL_LINEAR_CLIPMAP_LINEAR_SGIX 0x8170 -#define GL_TEXTURE_CLIPMAP_CENTER_SGIX 0x8171 -#define GL_TEXTURE_CLIPMAP_FRAME_SGIX 0x8172 -#define GL_TEXTURE_CLIPMAP_OFFSET_SGIX 0x8173 -#define GL_TEXTURE_CLIPMAP_VIRTUAL_DEPTH_SGIX 0x8174 -#define GL_TEXTURE_CLIPMAP_LOD_OFFSET_SGIX 0x8175 -#define GL_TEXTURE_CLIPMAP_DEPTH_SGIX 0x8176 -#define GL_MAX_CLIPMAP_DEPTH_SGIX 0x8177 -#define GL_MAX_CLIPMAP_VIRTUAL_DEPTH_SGIX 0x8178 -#define GL_NEAREST_CLIPMAP_NEAREST_SGIX 0x844D -#define GL_NEAREST_CLIPMAP_LINEAR_SGIX 0x844E -#define GL_LINEAR_CLIPMAP_NEAREST_SGIX 0x844F -#endif - -#ifndef GL_SGIX_shadow -#define GL_TEXTURE_COMPARE_SGIX 0x819A -#define GL_TEXTURE_COMPARE_OPERATOR_SGIX 0x819B -#define GL_TEXTURE_LEQUAL_R_SGIX 0x819C -#define GL_TEXTURE_GEQUAL_R_SGIX 0x819D -#endif - -#ifndef GL_SGIS_texture_edge_clamp -#define GL_CLAMP_TO_EDGE_SGIS 0x812F -#endif - -#ifndef GL_SGIS_texture_border_clamp -#define GL_CLAMP_TO_BORDER_SGIS 0x812D -#endif - -#ifndef GL_EXT_blend_minmax -#define GL_FUNC_ADD_EXT 0x8006 -#define GL_MIN_EXT 0x8007 -#define GL_MAX_EXT 0x8008 -#define GL_BLEND_EQUATION_EXT 0x8009 -#endif - -#ifndef GL_EXT_blend_subtract -#define GL_FUNC_SUBTRACT_EXT 0x800A -#define GL_FUNC_REVERSE_SUBTRACT_EXT 0x800B -#endif - -#ifndef GL_EXT_blend_logic_op -#endif - -#ifndef GL_SGIX_interlace -#define GL_INTERLACE_SGIX 0x8094 -#endif - -#ifndef GL_SGIX_pixel_tiles -#define GL_PIXEL_TILE_BEST_ALIGNMENT_SGIX 0x813E -#define GL_PIXEL_TILE_CACHE_INCREMENT_SGIX 0x813F -#define GL_PIXEL_TILE_WIDTH_SGIX 0x8140 -#define GL_PIXEL_TILE_HEIGHT_SGIX 0x8141 -#define GL_PIXEL_TILE_GRID_WIDTH_SGIX 0x8142 -#define GL_PIXEL_TILE_GRID_HEIGHT_SGIX 0x8143 -#define GL_PIXEL_TILE_GRID_DEPTH_SGIX 0x8144 -#define GL_PIXEL_TILE_CACHE_SIZE_SGIX 0x8145 -#endif - -#ifndef GL_SGIS_texture_select -#define GL_DUAL_ALPHA4_SGIS 0x8110 -#define GL_DUAL_ALPHA8_SGIS 0x8111 -#define GL_DUAL_ALPHA12_SGIS 0x8112 -#define GL_DUAL_ALPHA16_SGIS 0x8113 -#define GL_DUAL_LUMINANCE4_SGIS 0x8114 -#define GL_DUAL_LUMINANCE8_SGIS 0x8115 -#define GL_DUAL_LUMINANCE12_SGIS 0x8116 -#define GL_DUAL_LUMINANCE16_SGIS 0x8117 -#define GL_DUAL_INTENSITY4_SGIS 0x8118 -#define GL_DUAL_INTENSITY8_SGIS 0x8119 -#define GL_DUAL_INTENSITY12_SGIS 0x811A -#define GL_DUAL_INTENSITY16_SGIS 0x811B -#define GL_DUAL_LUMINANCE_ALPHA4_SGIS 0x811C -#define GL_DUAL_LUMINANCE_ALPHA8_SGIS 0x811D -#define GL_QUAD_ALPHA4_SGIS 0x811E -#define GL_QUAD_ALPHA8_SGIS 0x811F -#define GL_QUAD_LUMINANCE4_SGIS 0x8120 -#define GL_QUAD_LUMINANCE8_SGIS 0x8121 -#define GL_QUAD_INTENSITY4_SGIS 0x8122 -#define GL_QUAD_INTENSITY8_SGIS 0x8123 -#define GL_DUAL_TEXTURE_SELECT_SGIS 0x8124 -#define GL_QUAD_TEXTURE_SELECT_SGIS 0x8125 -#endif - -#ifndef GL_SGIX_sprite -#define GL_SPRITE_SGIX 0x8148 -#define GL_SPRITE_MODE_SGIX 0x8149 -#define GL_SPRITE_AXIS_SGIX 0x814A -#define GL_SPRITE_TRANSLATION_SGIX 0x814B -#define GL_SPRITE_AXIAL_SGIX 0x814C -#define GL_SPRITE_OBJECT_ALIGNED_SGIX 0x814D -#define GL_SPRITE_EYE_ALIGNED_SGIX 0x814E -#endif - -#ifndef GL_SGIX_texture_multi_buffer -#define GL_TEXTURE_MULTI_BUFFER_HINT_SGIX 0x812E -#endif - -#ifndef GL_EXT_point_parameters -#define GL_POINT_SIZE_MIN_EXT 0x8126 -#define GL_POINT_SIZE_MAX_EXT 0x8127 -#define GL_POINT_FADE_THRESHOLD_SIZE_EXT 0x8128 -#define GL_DISTANCE_ATTENUATION_EXT 0x8129 -#endif - -#ifndef GL_SGIS_point_parameters -#define GL_POINT_SIZE_MIN_SGIS 0x8126 -#define GL_POINT_SIZE_MAX_SGIS 0x8127 -#define GL_POINT_FADE_THRESHOLD_SIZE_SGIS 0x8128 -#define GL_DISTANCE_ATTENUATION_SGIS 0x8129 -#endif - -#ifndef GL_SGIX_instruments -#define GL_INSTRUMENT_BUFFER_POINTER_SGIX 0x8180 -#define GL_INSTRUMENT_MEASUREMENTS_SGIX 0x8181 -#endif - -#ifndef GL_SGIX_texture_scale_bias -#define GL_POST_TEXTURE_FILTER_BIAS_SGIX 0x8179 -#define GL_POST_TEXTURE_FILTER_SCALE_SGIX 0x817A -#define GL_POST_TEXTURE_FILTER_BIAS_RANGE_SGIX 0x817B -#define GL_POST_TEXTURE_FILTER_SCALE_RANGE_SGIX 0x817C -#endif - -#ifndef GL_SGIX_framezoom -#define GL_FRAMEZOOM_SGIX 0x818B -#define GL_FRAMEZOOM_FACTOR_SGIX 0x818C -#define GL_MAX_FRAMEZOOM_FACTOR_SGIX 0x818D -#endif - -#ifndef GL_SGIX_tag_sample_buffer -#endif - -#ifndef GL_FfdMaskSGIX -#define GL_TEXTURE_DEFORMATION_BIT_SGIX 0x00000001 -#define GL_GEOMETRY_DEFORMATION_BIT_SGIX 0x00000002 -#endif - -#ifndef GL_SGIX_polynomial_ffd -#define GL_GEOMETRY_DEFORMATION_SGIX 0x8194 -#define GL_TEXTURE_DEFORMATION_SGIX 0x8195 -#define GL_DEFORMATIONS_MASK_SGIX 0x8196 -#define GL_MAX_DEFORMATION_ORDER_SGIX 0x8197 -#endif - -#ifndef GL_SGIX_reference_plane -#define GL_REFERENCE_PLANE_SGIX 0x817D -#define GL_REFERENCE_PLANE_EQUATION_SGIX 0x817E -#endif - -#ifndef GL_SGIX_flush_raster -#endif - -#ifndef GL_SGIX_depth_texture -#define GL_DEPTH_COMPONENT16_SGIX 0x81A5 -#define GL_DEPTH_COMPONENT24_SGIX 0x81A6 -#define GL_DEPTH_COMPONENT32_SGIX 0x81A7 -#endif - -#ifndef GL_SGIS_fog_function -#define GL_FOG_FUNC_SGIS 0x812A -#define GL_FOG_FUNC_POINTS_SGIS 0x812B -#define GL_MAX_FOG_FUNC_POINTS_SGIS 0x812C -#endif - -#ifndef GL_SGIX_fog_offset -#define GL_FOG_OFFSET_SGIX 0x8198 -#define GL_FOG_OFFSET_VALUE_SGIX 0x8199 -#endif - -#ifndef GL_HP_image_transform -#define GL_IMAGE_SCALE_X_HP 0x8155 -#define GL_IMAGE_SCALE_Y_HP 0x8156 -#define GL_IMAGE_TRANSLATE_X_HP 0x8157 -#define GL_IMAGE_TRANSLATE_Y_HP 0x8158 -#define GL_IMAGE_ROTATE_ANGLE_HP 0x8159 -#define GL_IMAGE_ROTATE_ORIGIN_X_HP 0x815A -#define GL_IMAGE_ROTATE_ORIGIN_Y_HP 0x815B -#define GL_IMAGE_MAG_FILTER_HP 0x815C -#define GL_IMAGE_MIN_FILTER_HP 0x815D -#define GL_IMAGE_CUBIC_WEIGHT_HP 0x815E -#define GL_CUBIC_HP 0x815F -#define GL_AVERAGE_HP 0x8160 -#define GL_IMAGE_TRANSFORM_2D_HP 0x8161 -#define GL_POST_IMAGE_TRANSFORM_COLOR_TABLE_HP 0x8162 -#define GL_PROXY_POST_IMAGE_TRANSFORM_COLOR_TABLE_HP 0x8163 -#endif - -#ifndef GL_HP_convolution_border_modes -#define GL_IGNORE_BORDER_HP 0x8150 -#define GL_CONSTANT_BORDER_HP 0x8151 -#define GL_REPLICATE_BORDER_HP 0x8153 -#define GL_CONVOLUTION_BORDER_COLOR_HP 0x8154 -#endif - -#ifndef GL_INGR_palette_buffer -#endif - -#ifndef GL_SGIX_texture_add_env -#define GL_TEXTURE_ENV_BIAS_SGIX 0x80BE -#endif - -#ifndef GL_EXT_color_subtable -#endif - -#ifndef GL_PGI_vertex_hints -#define GL_VERTEX_DATA_HINT_PGI 0x1A22A -#define GL_VERTEX_CONSISTENT_HINT_PGI 0x1A22B -#define GL_MATERIAL_SIDE_HINT_PGI 0x1A22C -#define GL_MAX_VERTEX_HINT_PGI 0x1A22D -#define GL_COLOR3_BIT_PGI 0x00010000 -#define GL_COLOR4_BIT_PGI 0x00020000 -#define GL_EDGEFLAG_BIT_PGI 0x00040000 -#define GL_INDEX_BIT_PGI 0x00080000 -#define GL_MAT_AMBIENT_BIT_PGI 0x00100000 -#define GL_MAT_AMBIENT_AND_DIFFUSE_BIT_PGI 0x00200000 -#define GL_MAT_DIFFUSE_BIT_PGI 0x00400000 -#define GL_MAT_EMISSION_BIT_PGI 0x00800000 -#define GL_MAT_COLOR_INDEXES_BIT_PGI 0x01000000 -#define GL_MAT_SHININESS_BIT_PGI 0x02000000 -#define GL_MAT_SPECULAR_BIT_PGI 0x04000000 -#define GL_NORMAL_BIT_PGI 0x08000000 -#define GL_TEXCOORD1_BIT_PGI 0x10000000 -#define GL_TEXCOORD2_BIT_PGI 0x20000000 -#define GL_TEXCOORD3_BIT_PGI 0x40000000 -#define GL_TEXCOORD4_BIT_PGI 0x80000000 -#define GL_VERTEX23_BIT_PGI 0x00000004 -#define GL_VERTEX4_BIT_PGI 0x00000008 -#endif - -#ifndef GL_PGI_misc_hints -#define GL_PREFER_DOUBLEBUFFER_HINT_PGI 0x1A1F8 -#define GL_CONSERVE_MEMORY_HINT_PGI 0x1A1FD -#define GL_RECLAIM_MEMORY_HINT_PGI 0x1A1FE -#define GL_NATIVE_GRAPHICS_HANDLE_PGI 0x1A202 -#define GL_NATIVE_GRAPHICS_BEGIN_HINT_PGI 0x1A203 -#define GL_NATIVE_GRAPHICS_END_HINT_PGI 0x1A204 -#define GL_ALWAYS_FAST_HINT_PGI 0x1A20C -#define GL_ALWAYS_SOFT_HINT_PGI 0x1A20D -#define GL_ALLOW_DRAW_OBJ_HINT_PGI 0x1A20E -#define GL_ALLOW_DRAW_WIN_HINT_PGI 0x1A20F -#define GL_ALLOW_DRAW_FRG_HINT_PGI 0x1A210 -#define GL_ALLOW_DRAW_MEM_HINT_PGI 0x1A211 -#define GL_STRICT_DEPTHFUNC_HINT_PGI 0x1A216 -#define GL_STRICT_LIGHTING_HINT_PGI 0x1A217 -#define GL_STRICT_SCISSOR_HINT_PGI 0x1A218 -#define GL_FULL_STIPPLE_HINT_PGI 0x1A219 -#define GL_CLIP_NEAR_HINT_PGI 0x1A220 -#define GL_CLIP_FAR_HINT_PGI 0x1A221 -#define GL_WIDE_LINE_HINT_PGI 0x1A222 -#define GL_BACK_NORMALS_HINT_PGI 0x1A223 -#endif - -#ifndef GL_EXT_paletted_texture -#define GL_COLOR_INDEX1_EXT 0x80E2 -#define GL_COLOR_INDEX2_EXT 0x80E3 -#define GL_COLOR_INDEX4_EXT 0x80E4 -#define GL_COLOR_INDEX8_EXT 0x80E5 -#define GL_COLOR_INDEX12_EXT 0x80E6 -#define GL_COLOR_INDEX16_EXT 0x80E7 -#define GL_TEXTURE_INDEX_SIZE_EXT 0x80ED -#endif - -#ifndef GL_EXT_clip_volume_hint -#define GL_CLIP_VOLUME_CLIPPING_HINT_EXT 0x80F0 -#endif - -#ifndef GL_SGIX_list_priority -#define GL_LIST_PRIORITY_SGIX 0x8182 -#endif - -#ifndef GL_SGIX_ir_instrument1 -#define GL_IR_INSTRUMENT1_SGIX 0x817F -#endif - -#ifndef GL_SGIX_calligraphic_fragment -#define GL_CALLIGRAPHIC_FRAGMENT_SGIX 0x8183 -#endif - -#ifndef GL_SGIX_texture_lod_bias -#define GL_TEXTURE_LOD_BIAS_S_SGIX 0x818E -#define GL_TEXTURE_LOD_BIAS_T_SGIX 0x818F -#define GL_TEXTURE_LOD_BIAS_R_SGIX 0x8190 -#endif - -#ifndef GL_SGIX_shadow_ambient -#define GL_SHADOW_AMBIENT_SGIX 0x80BF -#endif - -#ifndef GL_EXT_index_texture -#endif - -#ifndef GL_EXT_index_material -#define GL_INDEX_MATERIAL_EXT 0x81B8 -#define GL_INDEX_MATERIAL_PARAMETER_EXT 0x81B9 -#define GL_INDEX_MATERIAL_FACE_EXT 0x81BA -#endif - -#ifndef GL_EXT_index_func -#define GL_INDEX_TEST_EXT 0x81B5 -#define GL_INDEX_TEST_FUNC_EXT 0x81B6 -#define GL_INDEX_TEST_REF_EXT 0x81B7 -#endif - -#ifndef GL_EXT_index_array_formats -#define GL_IUI_V2F_EXT 0x81AD -#define GL_IUI_V3F_EXT 0x81AE -#define GL_IUI_N3F_V2F_EXT 0x81AF -#define GL_IUI_N3F_V3F_EXT 0x81B0 -#define GL_T2F_IUI_V2F_EXT 0x81B1 -#define GL_T2F_IUI_V3F_EXT 0x81B2 -#define GL_T2F_IUI_N3F_V2F_EXT 0x81B3 -#define GL_T2F_IUI_N3F_V3F_EXT 0x81B4 -#endif - -#ifndef GL_EXT_compiled_vertex_array -#define GL_ARRAY_ELEMENT_LOCK_FIRST_EXT 0x81A8 -#define GL_ARRAY_ELEMENT_LOCK_COUNT_EXT 0x81A9 -#endif - -#ifndef GL_EXT_cull_vertex -#define GL_CULL_VERTEX_EXT 0x81AA -#define GL_CULL_VERTEX_EYE_POSITION_EXT 0x81AB -#define GL_CULL_VERTEX_OBJECT_POSITION_EXT 0x81AC -#endif - -#ifndef GL_SGIX_ycrcb -#define GL_YCRCB_422_SGIX 0x81BB -#define GL_YCRCB_444_SGIX 0x81BC -#endif - -#ifndef GL_SGIX_fragment_lighting -#define GL_FRAGMENT_LIGHTING_SGIX 0x8400 -#define GL_FRAGMENT_COLOR_MATERIAL_SGIX 0x8401 -#define GL_FRAGMENT_COLOR_MATERIAL_FACE_SGIX 0x8402 -#define GL_FRAGMENT_COLOR_MATERIAL_PARAMETER_SGIX 0x8403 -#define GL_MAX_FRAGMENT_LIGHTS_SGIX 0x8404 -#define GL_MAX_ACTIVE_LIGHTS_SGIX 0x8405 -#define GL_CURRENT_RASTER_NORMAL_SGIX 0x8406 -#define GL_LIGHT_ENV_MODE_SGIX 0x8407 -#define GL_FRAGMENT_LIGHT_MODEL_LOCAL_VIEWER_SGIX 0x8408 -#define GL_FRAGMENT_LIGHT_MODEL_TWO_SIDE_SGIX 0x8409 -#define GL_FRAGMENT_LIGHT_MODEL_AMBIENT_SGIX 0x840A -#define GL_FRAGMENT_LIGHT_MODEL_NORMAL_INTERPOLATION_SGIX 0x840B -#define GL_FRAGMENT_LIGHT0_SGIX 0x840C -#define GL_FRAGMENT_LIGHT1_SGIX 0x840D -#define GL_FRAGMENT_LIGHT2_SGIX 0x840E -#define GL_FRAGMENT_LIGHT3_SGIX 0x840F -#define GL_FRAGMENT_LIGHT4_SGIX 0x8410 -#define GL_FRAGMENT_LIGHT5_SGIX 0x8411 -#define GL_FRAGMENT_LIGHT6_SGIX 0x8412 -#define GL_FRAGMENT_LIGHT7_SGIX 0x8413 -#endif - -#ifndef GL_IBM_rasterpos_clip -#define GL_RASTER_POSITION_UNCLIPPED_IBM 0x19262 -#endif - -#ifndef GL_HP_texture_lighting -#define GL_TEXTURE_LIGHTING_MODE_HP 0x8167 -#define GL_TEXTURE_POST_SPECULAR_HP 0x8168 -#define GL_TEXTURE_PRE_SPECULAR_HP 0x8169 -#endif - -#ifndef GL_EXT_draw_range_elements -#define GL_MAX_ELEMENTS_VERTICES_EXT 0x80E8 -#define GL_MAX_ELEMENTS_INDICES_EXT 0x80E9 -#endif - -#ifndef GL_WIN_phong_shading -#define GL_PHONG_WIN 0x80EA -#define GL_PHONG_HINT_WIN 0x80EB -#endif - -#ifndef GL_WIN_specular_fog -#define GL_FOG_SPECULAR_TEXTURE_WIN 0x80EC -#endif - -#ifndef GL_EXT_light_texture -#define GL_FRAGMENT_MATERIAL_EXT 0x8349 -#define GL_FRAGMENT_NORMAL_EXT 0x834A -#define GL_FRAGMENT_COLOR_EXT 0x834C -#define GL_ATTENUATION_EXT 0x834D -#define GL_SHADOW_ATTENUATION_EXT 0x834E -#define GL_TEXTURE_APPLICATION_MODE_EXT 0x834F -#define GL_TEXTURE_LIGHT_EXT 0x8350 -#define GL_TEXTURE_MATERIAL_FACE_EXT 0x8351 -#define GL_TEXTURE_MATERIAL_PARAMETER_EXT 0x8352 -/* reuse GL_FRAGMENT_DEPTH_EXT */ -#endif - -#ifndef GL_SGIX_blend_alpha_minmax -#define GL_ALPHA_MIN_SGIX 0x8320 -#define GL_ALPHA_MAX_SGIX 0x8321 -#endif - -#ifndef GL_SGIX_impact_pixel_texture -#define GL_PIXEL_TEX_GEN_Q_CEILING_SGIX 0x8184 -#define GL_PIXEL_TEX_GEN_Q_ROUND_SGIX 0x8185 -#define GL_PIXEL_TEX_GEN_Q_FLOOR_SGIX 0x8186 -#define GL_PIXEL_TEX_GEN_ALPHA_REPLACE_SGIX 0x8187 -#define GL_PIXEL_TEX_GEN_ALPHA_NO_REPLACE_SGIX 0x8188 -#define GL_PIXEL_TEX_GEN_ALPHA_LS_SGIX 0x8189 -#define GL_PIXEL_TEX_GEN_ALPHA_MS_SGIX 0x818A -#endif - -#ifndef GL_EXT_bgra -#define GL_BGR_EXT 0x80E0 -#define GL_BGRA_EXT 0x80E1 -#endif - -#ifndef GL_SGIX_async -#define GL_ASYNC_MARKER_SGIX 0x8329 -#endif - -#ifndef GL_SGIX_async_pixel -#define GL_ASYNC_TEX_IMAGE_SGIX 0x835C -#define GL_ASYNC_DRAW_PIXELS_SGIX 0x835D -#define GL_ASYNC_READ_PIXELS_SGIX 0x835E -#define GL_MAX_ASYNC_TEX_IMAGE_SGIX 0x835F -#define GL_MAX_ASYNC_DRAW_PIXELS_SGIX 0x8360 -#define GL_MAX_ASYNC_READ_PIXELS_SGIX 0x8361 -#endif - -#ifndef GL_SGIX_async_histogram -#define GL_ASYNC_HISTOGRAM_SGIX 0x832C -#define GL_MAX_ASYNC_HISTOGRAM_SGIX 0x832D -#endif - -#ifndef GL_INTEL_texture_scissor -#endif - -#ifndef GL_INTEL_parallel_arrays -#define GL_PARALLEL_ARRAYS_INTEL 0x83F4 -#define GL_VERTEX_ARRAY_PARALLEL_POINTERS_INTEL 0x83F5 -#define GL_NORMAL_ARRAY_PARALLEL_POINTERS_INTEL 0x83F6 -#define GL_COLOR_ARRAY_PARALLEL_POINTERS_INTEL 0x83F7 -#define GL_TEXTURE_COORD_ARRAY_PARALLEL_POINTERS_INTEL 0x83F8 -#endif - -#ifndef GL_HP_occlusion_test -#define GL_OCCLUSION_TEST_HP 0x8165 -#define GL_OCCLUSION_TEST_RESULT_HP 0x8166 -#endif - -#ifndef GL_EXT_pixel_transform -#define GL_PIXEL_TRANSFORM_2D_EXT 0x8330 -#define GL_PIXEL_MAG_FILTER_EXT 0x8331 -#define GL_PIXEL_MIN_FILTER_EXT 0x8332 -#define GL_PIXEL_CUBIC_WEIGHT_EXT 0x8333 -#define GL_CUBIC_EXT 0x8334 -#define GL_AVERAGE_EXT 0x8335 -#define GL_PIXEL_TRANSFORM_2D_STACK_DEPTH_EXT 0x8336 -#define GL_MAX_PIXEL_TRANSFORM_2D_STACK_DEPTH_EXT 0x8337 -#define GL_PIXEL_TRANSFORM_2D_MATRIX_EXT 0x8338 -#endif - -#ifndef GL_EXT_pixel_transform_color_table -#endif - -#ifndef GL_EXT_shared_texture_palette -#define GL_SHARED_TEXTURE_PALETTE_EXT 0x81FB -#endif - -#ifndef GL_EXT_separate_specular_color -#define GL_LIGHT_MODEL_COLOR_CONTROL_EXT 0x81F8 -#define GL_SINGLE_COLOR_EXT 0x81F9 -#define GL_SEPARATE_SPECULAR_COLOR_EXT 0x81FA -#endif - -#ifndef GL_EXT_secondary_color -#define GL_COLOR_SUM_EXT 0x8458 -#define GL_CURRENT_SECONDARY_COLOR_EXT 0x8459 -#define GL_SECONDARY_COLOR_ARRAY_SIZE_EXT 0x845A -#define GL_SECONDARY_COLOR_ARRAY_TYPE_EXT 0x845B -#define GL_SECONDARY_COLOR_ARRAY_STRIDE_EXT 0x845C -#define GL_SECONDARY_COLOR_ARRAY_POINTER_EXT 0x845D -#define GL_SECONDARY_COLOR_ARRAY_EXT 0x845E -#endif - -#ifndef GL_EXT_texture_perturb_normal -#define GL_PERTURB_EXT 0x85AE -#define GL_TEXTURE_NORMAL_EXT 0x85AF -#endif - -#ifndef GL_EXT_multi_draw_arrays -#endif - -#ifndef GL_EXT_fog_coord -#define GL_FOG_COORDINATE_SOURCE_EXT 0x8450 -#define GL_FOG_COORDINATE_EXT 0x8451 -#define GL_FRAGMENT_DEPTH_EXT 0x8452 -#define GL_CURRENT_FOG_COORDINATE_EXT 0x8453 -#define GL_FOG_COORDINATE_ARRAY_TYPE_EXT 0x8454 -#define GL_FOG_COORDINATE_ARRAY_STRIDE_EXT 0x8455 -#define GL_FOG_COORDINATE_ARRAY_POINTER_EXT 0x8456 -#define GL_FOG_COORDINATE_ARRAY_EXT 0x8457 -#endif - -#ifndef GL_REND_screen_coordinates -#define GL_SCREEN_COORDINATES_REND 0x8490 -#define GL_INVERTED_SCREEN_W_REND 0x8491 -#endif - -#ifndef GL_EXT_coordinate_frame -#define GL_TANGENT_ARRAY_EXT 0x8439 -#define GL_BINORMAL_ARRAY_EXT 0x843A -#define GL_CURRENT_TANGENT_EXT 0x843B -#define GL_CURRENT_BINORMAL_EXT 0x843C -#define GL_TANGENT_ARRAY_TYPE_EXT 0x843E -#define GL_TANGENT_ARRAY_STRIDE_EXT 0x843F -#define GL_BINORMAL_ARRAY_TYPE_EXT 0x8440 -#define GL_BINORMAL_ARRAY_STRIDE_EXT 0x8441 -#define GL_TANGENT_ARRAY_POINTER_EXT 0x8442 -#define GL_BINORMAL_ARRAY_POINTER_EXT 0x8443 -#define GL_MAP1_TANGENT_EXT 0x8444 -#define GL_MAP2_TANGENT_EXT 0x8445 -#define GL_MAP1_BINORMAL_EXT 0x8446 -#define GL_MAP2_BINORMAL_EXT 0x8447 -#endif - -#ifndef GL_EXT_texture_env_combine -#define GL_COMBINE_EXT 0x8570 -#define GL_COMBINE_RGB_EXT 0x8571 -#define GL_COMBINE_ALPHA_EXT 0x8572 -#define GL_RGB_SCALE_EXT 0x8573 -#define GL_ADD_SIGNED_EXT 0x8574 -#define GL_INTERPOLATE_EXT 0x8575 -#define GL_CONSTANT_EXT 0x8576 -#define GL_PRIMARY_COLOR_EXT 0x8577 -#define GL_PREVIOUS_EXT 0x8578 -#define GL_SOURCE0_RGB_EXT 0x8580 -#define GL_SOURCE1_RGB_EXT 0x8581 -#define GL_SOURCE2_RGB_EXT 0x8582 -#define GL_SOURCE0_ALPHA_EXT 0x8588 -#define GL_SOURCE1_ALPHA_EXT 0x8589 -#define GL_SOURCE2_ALPHA_EXT 0x858A -#define GL_OPERAND0_RGB_EXT 0x8590 -#define GL_OPERAND1_RGB_EXT 0x8591 -#define GL_OPERAND2_RGB_EXT 0x8592 -#define GL_OPERAND0_ALPHA_EXT 0x8598 -#define GL_OPERAND1_ALPHA_EXT 0x8599 -#define GL_OPERAND2_ALPHA_EXT 0x859A -#endif - -#ifndef GL_APPLE_specular_vector -#define GL_LIGHT_MODEL_SPECULAR_VECTOR_APPLE 0x85B0 -#endif - -#ifndef GL_APPLE_transform_hint -#define GL_TRANSFORM_HINT_APPLE 0x85B1 -#endif - -#ifndef GL_SGIX_fog_scale -#define GL_FOG_SCALE_SGIX 0x81FC -#define GL_FOG_SCALE_VALUE_SGIX 0x81FD -#endif - -#ifndef GL_SUNX_constant_data -#define GL_UNPACK_CONSTANT_DATA_SUNX 0x81D5 -#define GL_TEXTURE_CONSTANT_DATA_SUNX 0x81D6 -#endif - -#ifndef GL_SUN_global_alpha -#define GL_GLOBAL_ALPHA_SUN 0x81D9 -#define GL_GLOBAL_ALPHA_FACTOR_SUN 0x81DA -#endif - -#ifndef GL_SUN_triangle_list -#define GL_RESTART_SUN 0x0001 -#define GL_REPLACE_MIDDLE_SUN 0x0002 -#define GL_REPLACE_OLDEST_SUN 0x0003 -#define GL_TRIANGLE_LIST_SUN 0x81D7 -#define GL_REPLACEMENT_CODE_SUN 0x81D8 -#define GL_REPLACEMENT_CODE_ARRAY_SUN 0x85C0 -#define GL_REPLACEMENT_CODE_ARRAY_TYPE_SUN 0x85C1 -#define GL_REPLACEMENT_CODE_ARRAY_STRIDE_SUN 0x85C2 -#define GL_REPLACEMENT_CODE_ARRAY_POINTER_SUN 0x85C3 -#define GL_R1UI_V3F_SUN 0x85C4 -#define GL_R1UI_C4UB_V3F_SUN 0x85C5 -#define GL_R1UI_C3F_V3F_SUN 0x85C6 -#define GL_R1UI_N3F_V3F_SUN 0x85C7 -#define GL_R1UI_C4F_N3F_V3F_SUN 0x85C8 -#define GL_R1UI_T2F_V3F_SUN 0x85C9 -#define GL_R1UI_T2F_N3F_V3F_SUN 0x85CA -#define GL_R1UI_T2F_C4F_N3F_V3F_SUN 0x85CB -#endif - -#ifndef GL_SUN_vertex -#endif - -#ifndef GL_EXT_blend_func_separate -#define GL_BLEND_DST_RGB_EXT 0x80C8 -#define GL_BLEND_SRC_RGB_EXT 0x80C9 -#define GL_BLEND_DST_ALPHA_EXT 0x80CA -#define GL_BLEND_SRC_ALPHA_EXT 0x80CB -#endif - -#ifndef GL_INGR_color_clamp -#define GL_RED_MIN_CLAMP_INGR 0x8560 -#define GL_GREEN_MIN_CLAMP_INGR 0x8561 -#define GL_BLUE_MIN_CLAMP_INGR 0x8562 -#define GL_ALPHA_MIN_CLAMP_INGR 0x8563 -#define GL_RED_MAX_CLAMP_INGR 0x8564 -#define GL_GREEN_MAX_CLAMP_INGR 0x8565 -#define GL_BLUE_MAX_CLAMP_INGR 0x8566 -#define GL_ALPHA_MAX_CLAMP_INGR 0x8567 -#endif - -#ifndef GL_INGR_interlace_read -#define GL_INTERLACE_READ_INGR 0x8568 -#endif - -#ifndef GL_EXT_stencil_wrap -#define GL_INCR_WRAP_EXT 0x8507 -#define GL_DECR_WRAP_EXT 0x8508 -#endif - -#ifndef GL_EXT_422_pixels -#define GL_422_EXT 0x80CC -#define GL_422_REV_EXT 0x80CD -#define GL_422_AVERAGE_EXT 0x80CE -#define GL_422_REV_AVERAGE_EXT 0x80CF -#endif - -#ifndef GL_NV_texgen_reflection -#define GL_NORMAL_MAP_NV 0x8511 -#define GL_REFLECTION_MAP_NV 0x8512 -#endif - -#ifndef GL_EXT_texture_cube_map -#define GL_NORMAL_MAP_EXT 0x8511 -#define GL_REFLECTION_MAP_EXT 0x8512 -#define GL_TEXTURE_CUBE_MAP_EXT 0x8513 -#define GL_TEXTURE_BINDING_CUBE_MAP_EXT 0x8514 -#define GL_TEXTURE_CUBE_MAP_POSITIVE_X_EXT 0x8515 -#define GL_TEXTURE_CUBE_MAP_NEGATIVE_X_EXT 0x8516 -#define GL_TEXTURE_CUBE_MAP_POSITIVE_Y_EXT 0x8517 -#define GL_TEXTURE_CUBE_MAP_NEGATIVE_Y_EXT 0x8518 -#define GL_TEXTURE_CUBE_MAP_POSITIVE_Z_EXT 0x8519 -#define GL_TEXTURE_CUBE_MAP_NEGATIVE_Z_EXT 0x851A -#define GL_PROXY_TEXTURE_CUBE_MAP_EXT 0x851B -#define GL_MAX_CUBE_MAP_TEXTURE_SIZE_EXT 0x851C -#endif - -#ifndef GL_SUN_convolution_border_modes -#define GL_WRAP_BORDER_SUN 0x81D4 -#endif - -#ifndef GL_EXT_texture_env_add -#endif - -#ifndef GL_EXT_texture_lod_bias -#define GL_MAX_TEXTURE_LOD_BIAS_EXT 0x84FD -#define GL_TEXTURE_FILTER_CONTROL_EXT 0x8500 -#define GL_TEXTURE_LOD_BIAS_EXT 0x8501 -#endif - -#ifndef GL_EXT_texture_filter_anisotropic -#define GL_TEXTURE_MAX_ANISOTROPY_EXT 0x84FE -#define GL_MAX_TEXTURE_MAX_ANISOTROPY_EXT 0x84FF -#endif - -#ifndef GL_EXT_vertex_weighting -#define GL_MODELVIEW0_STACK_DEPTH_EXT GL_MODELVIEW_STACK_DEPTH -#define GL_MODELVIEW1_STACK_DEPTH_EXT 0x8502 -#define GL_MODELVIEW0_MATRIX_EXT GL_MODELVIEW_MATRIX -#define GL_MODELVIEW1_MATRIX_EXT 0x8506 -#define GL_VERTEX_WEIGHTING_EXT 0x8509 -#define GL_MODELVIEW0_EXT GL_MODELVIEW -#define GL_MODELVIEW1_EXT 0x850A -#define GL_CURRENT_VERTEX_WEIGHT_EXT 0x850B -#define GL_VERTEX_WEIGHT_ARRAY_EXT 0x850C -#define GL_VERTEX_WEIGHT_ARRAY_SIZE_EXT 0x850D -#define GL_VERTEX_WEIGHT_ARRAY_TYPE_EXT 0x850E -#define GL_VERTEX_WEIGHT_ARRAY_STRIDE_EXT 0x850F -#define GL_VERTEX_WEIGHT_ARRAY_POINTER_EXT 0x8510 -#endif - -#ifndef GL_NV_light_max_exponent -#define GL_MAX_SHININESS_NV 0x8504 -#define GL_MAX_SPOT_EXPONENT_NV 0x8505 -#endif - -#ifndef GL_NV_vertex_array_range -#define GL_VERTEX_ARRAY_RANGE_NV 0x851D -#define GL_VERTEX_ARRAY_RANGE_LENGTH_NV 0x851E -#define GL_VERTEX_ARRAY_RANGE_VALID_NV 0x851F -#define GL_MAX_VERTEX_ARRAY_RANGE_ELEMENT_NV 0x8520 -#define GL_VERTEX_ARRAY_RANGE_POINTER_NV 0x8521 -#endif - -#ifndef GL_NV_register_combiners -#define GL_REGISTER_COMBINERS_NV 0x8522 -#define GL_VARIABLE_A_NV 0x8523 -#define GL_VARIABLE_B_NV 0x8524 -#define GL_VARIABLE_C_NV 0x8525 -#define GL_VARIABLE_D_NV 0x8526 -#define GL_VARIABLE_E_NV 0x8527 -#define GL_VARIABLE_F_NV 0x8528 -#define GL_VARIABLE_G_NV 0x8529 -#define GL_CONSTANT_COLOR0_NV 0x852A -#define GL_CONSTANT_COLOR1_NV 0x852B -#define GL_PRIMARY_COLOR_NV 0x852C -#define GL_SECONDARY_COLOR_NV 0x852D -#define GL_SPARE0_NV 0x852E -#define GL_SPARE1_NV 0x852F -#define GL_DISCARD_NV 0x8530 -#define GL_E_TIMES_F_NV 0x8531 -#define GL_SPARE0_PLUS_SECONDARY_COLOR_NV 0x8532 -#define GL_UNSIGNED_IDENTITY_NV 0x8536 -#define GL_UNSIGNED_INVERT_NV 0x8537 -#define GL_EXPAND_NORMAL_NV 0x8538 -#define GL_EXPAND_NEGATE_NV 0x8539 -#define GL_HALF_BIAS_NORMAL_NV 0x853A -#define GL_HALF_BIAS_NEGATE_NV 0x853B -#define GL_SIGNED_IDENTITY_NV 0x853C -#define GL_SIGNED_NEGATE_NV 0x853D -#define GL_SCALE_BY_TWO_NV 0x853E -#define GL_SCALE_BY_FOUR_NV 0x853F -#define GL_SCALE_BY_ONE_HALF_NV 0x8540 -#define GL_BIAS_BY_NEGATIVE_ONE_HALF_NV 0x8541 -#define GL_COMBINER_INPUT_NV 0x8542 -#define GL_COMBINER_MAPPING_NV 0x8543 -#define GL_COMBINER_COMPONENT_USAGE_NV 0x8544 -#define GL_COMBINER_AB_DOT_PRODUCT_NV 0x8545 -#define GL_COMBINER_CD_DOT_PRODUCT_NV 0x8546 -#define GL_COMBINER_MUX_SUM_NV 0x8547 -#define GL_COMBINER_SCALE_NV 0x8548 -#define GL_COMBINER_BIAS_NV 0x8549 -#define GL_COMBINER_AB_OUTPUT_NV 0x854A -#define GL_COMBINER_CD_OUTPUT_NV 0x854B -#define GL_COMBINER_SUM_OUTPUT_NV 0x854C -#define GL_MAX_GENERAL_COMBINERS_NV 0x854D -#define GL_NUM_GENERAL_COMBINERS_NV 0x854E -#define GL_COLOR_SUM_CLAMP_NV 0x854F -#define GL_COMBINER0_NV 0x8550 -#define GL_COMBINER1_NV 0x8551 -#define GL_COMBINER2_NV 0x8552 -#define GL_COMBINER3_NV 0x8553 -#define GL_COMBINER4_NV 0x8554 -#define GL_COMBINER5_NV 0x8555 -#define GL_COMBINER6_NV 0x8556 -#define GL_COMBINER7_NV 0x8557 -/* reuse GL_TEXTURE0_ARB */ -/* reuse GL_TEXTURE1_ARB */ -/* reuse GL_ZERO */ -/* reuse GL_NONE */ -/* reuse GL_FOG */ -#endif - -#ifndef GL_NV_fog_distance -#define GL_FOG_DISTANCE_MODE_NV 0x855A -#define GL_EYE_RADIAL_NV 0x855B -#define GL_EYE_PLANE_ABSOLUTE_NV 0x855C -/* reuse GL_EYE_PLANE */ -#endif - -#ifndef GL_NV_texgen_emboss -#define GL_EMBOSS_LIGHT_NV 0x855D -#define GL_EMBOSS_CONSTANT_NV 0x855E -#define GL_EMBOSS_MAP_NV 0x855F -#endif - -#ifndef GL_NV_blend_square -#endif - -#ifndef GL_NV_texture_env_combine4 -#define GL_COMBINE4_NV 0x8503 -#define GL_SOURCE3_RGB_NV 0x8583 -#define GL_SOURCE3_ALPHA_NV 0x858B -#define GL_OPERAND3_RGB_NV 0x8593 -#define GL_OPERAND3_ALPHA_NV 0x859B -#endif - -#ifndef GL_MESA_resize_buffers -#endif - -#ifndef GL_MESA_window_pos -#endif - -#ifndef GL_EXT_texture_compression_s3tc -#define GL_COMPRESSED_RGB_S3TC_DXT1_EXT 0x83F0 -#define GL_COMPRESSED_RGBA_S3TC_DXT1_EXT 0x83F1 -#define GL_COMPRESSED_RGBA_S3TC_DXT3_EXT 0x83F2 -#define GL_COMPRESSED_RGBA_S3TC_DXT5_EXT 0x83F3 -#endif - -#ifndef GL_IBM_cull_vertex -#define GL_CULL_VERTEX_IBM 103050 -#endif - -#ifndef GL_IBM_multimode_draw_arrays -#endif - -#ifndef GL_IBM_vertex_array_lists -#define GL_VERTEX_ARRAY_LIST_IBM 103070 -#define GL_NORMAL_ARRAY_LIST_IBM 103071 -#define GL_COLOR_ARRAY_LIST_IBM 103072 -#define GL_INDEX_ARRAY_LIST_IBM 103073 -#define GL_TEXTURE_COORD_ARRAY_LIST_IBM 103074 -#define GL_EDGE_FLAG_ARRAY_LIST_IBM 103075 -#define GL_FOG_COORDINATE_ARRAY_LIST_IBM 103076 -#define GL_SECONDARY_COLOR_ARRAY_LIST_IBM 103077 -#define GL_VERTEX_ARRAY_LIST_STRIDE_IBM 103080 -#define GL_NORMAL_ARRAY_LIST_STRIDE_IBM 103081 -#define GL_COLOR_ARRAY_LIST_STRIDE_IBM 103082 -#define GL_INDEX_ARRAY_LIST_STRIDE_IBM 103083 -#define GL_TEXTURE_COORD_ARRAY_LIST_STRIDE_IBM 103084 -#define GL_EDGE_FLAG_ARRAY_LIST_STRIDE_IBM 103085 -#define GL_FOG_COORDINATE_ARRAY_LIST_STRIDE_IBM 103086 -#define GL_SECONDARY_COLOR_ARRAY_LIST_STRIDE_IBM 103087 -#endif - -#ifndef GL_SGIX_subsample -#define GL_PACK_SUBSAMPLE_RATE_SGIX 0x85A0 -#define GL_UNPACK_SUBSAMPLE_RATE_SGIX 0x85A1 -#define GL_PIXEL_SUBSAMPLE_4444_SGIX 0x85A2 -#define GL_PIXEL_SUBSAMPLE_2424_SGIX 0x85A3 -#define GL_PIXEL_SUBSAMPLE_4242_SGIX 0x85A4 -#endif - -#ifndef GL_SGIX_ycrcb_subsample -#endif - -#ifndef GL_SGIX_ycrcba -#define GL_YCRCB_SGIX 0x8318 -#define GL_YCRCBA_SGIX 0x8319 -#endif - -#ifndef GL_SGI_depth_pass_instrument -#define GL_DEPTH_PASS_INSTRUMENT_SGIX 0x8310 -#define GL_DEPTH_PASS_INSTRUMENT_COUNTERS_SGIX 0x8311 -#define GL_DEPTH_PASS_INSTRUMENT_MAX_SGIX 0x8312 -#endif - -#ifndef GL_3DFX_texture_compression_FXT1 -#define GL_COMPRESSED_RGB_FXT1_3DFX 0x86B0 -#define GL_COMPRESSED_RGBA_FXT1_3DFX 0x86B1 -#endif - -#ifndef GL_3DFX_multisample -#define GL_MULTISAMPLE_3DFX 0x86B2 -#define GL_SAMPLE_BUFFERS_3DFX 0x86B3 -#define GL_SAMPLES_3DFX 0x86B4 -#define GL_MULTISAMPLE_BIT_3DFX 0x20000000 -#endif - -#ifndef GL_3DFX_tbuffer -#endif - -#ifndef GL_EXT_multisample -#define GL_MULTISAMPLE_EXT 0x809D -#define GL_SAMPLE_ALPHA_TO_MASK_EXT 0x809E -#define GL_SAMPLE_ALPHA_TO_ONE_EXT 0x809F -#define GL_SAMPLE_MASK_EXT 0x80A0 -#define GL_1PASS_EXT 0x80A1 -#define GL_2PASS_0_EXT 0x80A2 -#define GL_2PASS_1_EXT 0x80A3 -#define GL_4PASS_0_EXT 0x80A4 -#define GL_4PASS_1_EXT 0x80A5 -#define GL_4PASS_2_EXT 0x80A6 -#define GL_4PASS_3_EXT 0x80A7 -#define GL_SAMPLE_BUFFERS_EXT 0x80A8 -#define GL_SAMPLES_EXT 0x80A9 -#define GL_SAMPLE_MASK_VALUE_EXT 0x80AA -#define GL_SAMPLE_MASK_INVERT_EXT 0x80AB -#define GL_SAMPLE_PATTERN_EXT 0x80AC -#define GL_MULTISAMPLE_BIT_EXT 0x20000000 -#endif - -#ifndef GL_SGIX_vertex_preclip -#define GL_VERTEX_PRECLIP_SGIX 0x83EE -#define GL_VERTEX_PRECLIP_HINT_SGIX 0x83EF -#endif - -#ifndef GL_SGIX_convolution_accuracy -#define GL_CONVOLUTION_HINT_SGIX 0x8316 -#endif - -#ifndef GL_SGIX_resample -#define GL_PACK_RESAMPLE_SGIX 0x842C -#define GL_UNPACK_RESAMPLE_SGIX 0x842D -#define GL_RESAMPLE_REPLICATE_SGIX 0x842E -#define GL_RESAMPLE_ZERO_FILL_SGIX 0x842F -#define GL_RESAMPLE_DECIMATE_SGIX 0x8430 -#endif - -#ifndef GL_SGIS_point_line_texgen -#define GL_EYE_DISTANCE_TO_POINT_SGIS 0x81F0 -#define GL_OBJECT_DISTANCE_TO_POINT_SGIS 0x81F1 -#define GL_EYE_DISTANCE_TO_LINE_SGIS 0x81F2 -#define GL_OBJECT_DISTANCE_TO_LINE_SGIS 0x81F3 -#define GL_EYE_POINT_SGIS 0x81F4 -#define GL_OBJECT_POINT_SGIS 0x81F5 -#define GL_EYE_LINE_SGIS 0x81F6 -#define GL_OBJECT_LINE_SGIS 0x81F7 -#endif - -#ifndef GL_SGIS_texture_color_mask -#define GL_TEXTURE_COLOR_WRITEMASK_SGIS 0x81EF -#endif - -#ifndef GL_EXT_texture_env_dot3 -#define GL_DOT3_RGB_EXT 0x8740 -#define GL_DOT3_RGBA_EXT 0x8741 -#endif - -#ifndef GL_ATI_texture_mirror_once -#define GL_MIRROR_CLAMP_ATI 0x8742 -#define GL_MIRROR_CLAMP_TO_EDGE_ATI 0x8743 -#endif - -#ifndef GL_NV_fence -#define GL_ALL_COMPLETED_NV 0x84F2 -#define GL_FENCE_STATUS_NV 0x84F3 -#define GL_FENCE_CONDITION_NV 0x84F4 -#endif - -#ifndef GL_IBM_texture_mirrored_repeat -#define GL_MIRRORED_REPEAT_IBM 0x8370 -#endif - -#ifndef GL_NV_evaluators -#define GL_EVAL_2D_NV 0x86C0 -#define GL_EVAL_TRIANGULAR_2D_NV 0x86C1 -#define GL_MAP_TESSELLATION_NV 0x86C2 -#define GL_MAP_ATTRIB_U_ORDER_NV 0x86C3 -#define GL_MAP_ATTRIB_V_ORDER_NV 0x86C4 -#define GL_EVAL_FRACTIONAL_TESSELLATION_NV 0x86C5 -#define GL_EVAL_VERTEX_ATTRIB0_NV 0x86C6 -#define GL_EVAL_VERTEX_ATTRIB1_NV 0x86C7 -#define GL_EVAL_VERTEX_ATTRIB2_NV 0x86C8 -#define GL_EVAL_VERTEX_ATTRIB3_NV 0x86C9 -#define GL_EVAL_VERTEX_ATTRIB4_NV 0x86CA -#define GL_EVAL_VERTEX_ATTRIB5_NV 0x86CB -#define GL_EVAL_VERTEX_ATTRIB6_NV 0x86CC -#define GL_EVAL_VERTEX_ATTRIB7_NV 0x86CD -#define GL_EVAL_VERTEX_ATTRIB8_NV 0x86CE -#define GL_EVAL_VERTEX_ATTRIB9_NV 0x86CF -#define GL_EVAL_VERTEX_ATTRIB10_NV 0x86D0 -#define GL_EVAL_VERTEX_ATTRIB11_NV 0x86D1 -#define GL_EVAL_VERTEX_ATTRIB12_NV 0x86D2 -#define GL_EVAL_VERTEX_ATTRIB13_NV 0x86D3 -#define GL_EVAL_VERTEX_ATTRIB14_NV 0x86D4 -#define GL_EVAL_VERTEX_ATTRIB15_NV 0x86D5 -#define GL_MAX_MAP_TESSELLATION_NV 0x86D6 -#define GL_MAX_RATIONAL_EVAL_ORDER_NV 0x86D7 -#endif - -#ifndef GL_NV_packed_depth_stencil -#define GL_DEPTH_STENCIL_NV 0x84F9 -#define GL_UNSIGNED_INT_24_8_NV 0x84FA -#endif - -#ifndef GL_NV_register_combiners2 -#define GL_PER_STAGE_CONSTANTS_NV 0x8535 -#endif - -#ifndef GL_NV_texture_compression_vtc -#endif - -#ifndef GL_NV_texture_rectangle -#define GL_TEXTURE_RECTANGLE_NV 0x84F5 -#define GL_TEXTURE_BINDING_RECTANGLE_NV 0x84F6 -#define GL_PROXY_TEXTURE_RECTANGLE_NV 0x84F7 -#define GL_MAX_RECTANGLE_TEXTURE_SIZE_NV 0x84F8 -#endif - -#ifndef GL_NV_texture_shader -#define GL_OFFSET_TEXTURE_RECTANGLE_NV 0x864C -#define GL_OFFSET_TEXTURE_RECTANGLE_SCALE_NV 0x864D -#define GL_DOT_PRODUCT_TEXTURE_RECTANGLE_NV 0x864E -#define GL_RGBA_UNSIGNED_DOT_PRODUCT_MAPPING_NV 0x86D9 -#define GL_UNSIGNED_INT_S8_S8_8_8_NV 0x86DA -#define GL_UNSIGNED_INT_8_8_S8_S8_REV_NV 0x86DB -#define GL_DSDT_MAG_INTENSITY_NV 0x86DC -#define GL_SHADER_CONSISTENT_NV 0x86DD -#define GL_TEXTURE_SHADER_NV 0x86DE -#define GL_SHADER_OPERATION_NV 0x86DF -#define GL_CULL_MODES_NV 0x86E0 -#define GL_OFFSET_TEXTURE_MATRIX_NV 0x86E1 -#define GL_OFFSET_TEXTURE_SCALE_NV 0x86E2 -#define GL_OFFSET_TEXTURE_BIAS_NV 0x86E3 -#define GL_OFFSET_TEXTURE_2D_MATRIX_NV GL_OFFSET_TEXTURE_MATRIX_NV -#define GL_OFFSET_TEXTURE_2D_SCALE_NV GL_OFFSET_TEXTURE_SCALE_NV -#define GL_OFFSET_TEXTURE_2D_BIAS_NV GL_OFFSET_TEXTURE_BIAS_NV -#define GL_PREVIOUS_TEXTURE_INPUT_NV 0x86E4 -#define GL_CONST_EYE_NV 0x86E5 -#define GL_PASS_THROUGH_NV 0x86E6 -#define GL_CULL_FRAGMENT_NV 0x86E7 -#define GL_OFFSET_TEXTURE_2D_NV 0x86E8 -#define GL_DEPENDENT_AR_TEXTURE_2D_NV 0x86E9 -#define GL_DEPENDENT_GB_TEXTURE_2D_NV 0x86EA -#define GL_DOT_PRODUCT_NV 0x86EC -#define GL_DOT_PRODUCT_DEPTH_REPLACE_NV 0x86ED -#define GL_DOT_PRODUCT_TEXTURE_2D_NV 0x86EE -#define GL_DOT_PRODUCT_TEXTURE_CUBE_MAP_NV 0x86F0 -#define GL_DOT_PRODUCT_DIFFUSE_CUBE_MAP_NV 0x86F1 -#define GL_DOT_PRODUCT_REFLECT_CUBE_MAP_NV 0x86F2 -#define GL_DOT_PRODUCT_CONST_EYE_REFLECT_CUBE_MAP_NV 0x86F3 -#define GL_HILO_NV 0x86F4 -#define GL_DSDT_NV 0x86F5 -#define GL_DSDT_MAG_NV 0x86F6 -#define GL_DSDT_MAG_VIB_NV 0x86F7 -#define GL_HILO16_NV 0x86F8 -#define GL_SIGNED_HILO_NV 0x86F9 -#define GL_SIGNED_HILO16_NV 0x86FA -#define GL_SIGNED_RGBA_NV 0x86FB -#define GL_SIGNED_RGBA8_NV 0x86FC -#define GL_SIGNED_RGB_NV 0x86FE -#define GL_SIGNED_RGB8_NV 0x86FF -#define GL_SIGNED_LUMINANCE_NV 0x8701 -#define GL_SIGNED_LUMINANCE8_NV 0x8702 -#define GL_SIGNED_LUMINANCE_ALPHA_NV 0x8703 -#define GL_SIGNED_LUMINANCE8_ALPHA8_NV 0x8704 -#define GL_SIGNED_ALPHA_NV 0x8705 -#define GL_SIGNED_ALPHA8_NV 0x8706 -#define GL_SIGNED_INTENSITY_NV 0x8707 -#define GL_SIGNED_INTENSITY8_NV 0x8708 -#define GL_DSDT8_NV 0x8709 -#define GL_DSDT8_MAG8_NV 0x870A -#define GL_DSDT8_MAG8_INTENSITY8_NV 0x870B -#define GL_SIGNED_RGB_UNSIGNED_ALPHA_NV 0x870C -#define GL_SIGNED_RGB8_UNSIGNED_ALPHA8_NV 0x870D -#define GL_HI_SCALE_NV 0x870E -#define GL_LO_SCALE_NV 0x870F -#define GL_DS_SCALE_NV 0x8710 -#define GL_DT_SCALE_NV 0x8711 -#define GL_MAGNITUDE_SCALE_NV 0x8712 -#define GL_VIBRANCE_SCALE_NV 0x8713 -#define GL_HI_BIAS_NV 0x8714 -#define GL_LO_BIAS_NV 0x8715 -#define GL_DS_BIAS_NV 0x8716 -#define GL_DT_BIAS_NV 0x8717 -#define GL_MAGNITUDE_BIAS_NV 0x8718 -#define GL_VIBRANCE_BIAS_NV 0x8719 -#define GL_TEXTURE_BORDER_VALUES_NV 0x871A -#define GL_TEXTURE_HI_SIZE_NV 0x871B -#define GL_TEXTURE_LO_SIZE_NV 0x871C -#define GL_TEXTURE_DS_SIZE_NV 0x871D -#define GL_TEXTURE_DT_SIZE_NV 0x871E -#define GL_TEXTURE_MAG_SIZE_NV 0x871F -#endif - -#ifndef GL_NV_texture_shader2 -#define GL_DOT_PRODUCT_TEXTURE_3D_NV 0x86EF -#endif - -#ifndef GL_NV_vertex_array_range2 -#define GL_VERTEX_ARRAY_RANGE_WITHOUT_FLUSH_NV 0x8533 -#endif - -#ifndef GL_NV_vertex_program -#define GL_VERTEX_PROGRAM_NV 0x8620 -#define GL_VERTEX_STATE_PROGRAM_NV 0x8621 -#define GL_ATTRIB_ARRAY_SIZE_NV 0x8623 -#define GL_ATTRIB_ARRAY_STRIDE_NV 0x8624 -#define GL_ATTRIB_ARRAY_TYPE_NV 0x8625 -#define GL_CURRENT_ATTRIB_NV 0x8626 -#define GL_PROGRAM_LENGTH_NV 0x8627 -#define GL_PROGRAM_STRING_NV 0x8628 -#define GL_MODELVIEW_PROJECTION_NV 0x8629 -#define GL_IDENTITY_NV 0x862A -#define GL_INVERSE_NV 0x862B -#define GL_TRANSPOSE_NV 0x862C -#define GL_INVERSE_TRANSPOSE_NV 0x862D -#define GL_MAX_TRACK_MATRIX_STACK_DEPTH_NV 0x862E -#define GL_MAX_TRACK_MATRICES_NV 0x862F -#define GL_MATRIX0_NV 0x8630 -#define GL_MATRIX1_NV 0x8631 -#define GL_MATRIX2_NV 0x8632 -#define GL_MATRIX3_NV 0x8633 -#define GL_MATRIX4_NV 0x8634 -#define GL_MATRIX5_NV 0x8635 -#define GL_MATRIX6_NV 0x8636 -#define GL_MATRIX7_NV 0x8637 -#define GL_CURRENT_MATRIX_STACK_DEPTH_NV 0x8640 -#define GL_CURRENT_MATRIX_NV 0x8641 -#define GL_VERTEX_PROGRAM_POINT_SIZE_NV 0x8642 -#define GL_VERTEX_PROGRAM_TWO_SIDE_NV 0x8643 -#define GL_PROGRAM_PARAMETER_NV 0x8644 -#define GL_ATTRIB_ARRAY_POINTER_NV 0x8645 -#define GL_PROGRAM_TARGET_NV 0x8646 -#define GL_PROGRAM_RESIDENT_NV 0x8647 -#define GL_TRACK_MATRIX_NV 0x8648 -#define GL_TRACK_MATRIX_TRANSFORM_NV 0x8649 -#define GL_VERTEX_PROGRAM_BINDING_NV 0x864A -#define GL_PROGRAM_ERROR_POSITION_NV 0x864B -#define GL_VERTEX_ATTRIB_ARRAY0_NV 0x8650 -#define GL_VERTEX_ATTRIB_ARRAY1_NV 0x8651 -#define GL_VERTEX_ATTRIB_ARRAY2_NV 0x8652 -#define GL_VERTEX_ATTRIB_ARRAY3_NV 0x8653 -#define GL_VERTEX_ATTRIB_ARRAY4_NV 0x8654 -#define GL_VERTEX_ATTRIB_ARRAY5_NV 0x8655 -#define GL_VERTEX_ATTRIB_ARRAY6_NV 0x8656 -#define GL_VERTEX_ATTRIB_ARRAY7_NV 0x8657 -#define GL_VERTEX_ATTRIB_ARRAY8_NV 0x8658 -#define GL_VERTEX_ATTRIB_ARRAY9_NV 0x8659 -#define GL_VERTEX_ATTRIB_ARRAY10_NV 0x865A -#define GL_VERTEX_ATTRIB_ARRAY11_NV 0x865B -#define GL_VERTEX_ATTRIB_ARRAY12_NV 0x865C -#define GL_VERTEX_ATTRIB_ARRAY13_NV 0x865D -#define GL_VERTEX_ATTRIB_ARRAY14_NV 0x865E -#define GL_VERTEX_ATTRIB_ARRAY15_NV 0x865F -#define GL_MAP1_VERTEX_ATTRIB0_4_NV 0x8660 -#define GL_MAP1_VERTEX_ATTRIB1_4_NV 0x8661 -#define GL_MAP1_VERTEX_ATTRIB2_4_NV 0x8662 -#define GL_MAP1_VERTEX_ATTRIB3_4_NV 0x8663 -#define GL_MAP1_VERTEX_ATTRIB4_4_NV 0x8664 -#define GL_MAP1_VERTEX_ATTRIB5_4_NV 0x8665 -#define GL_MAP1_VERTEX_ATTRIB6_4_NV 0x8666 -#define GL_MAP1_VERTEX_ATTRIB7_4_NV 0x8667 -#define GL_MAP1_VERTEX_ATTRIB8_4_NV 0x8668 -#define GL_MAP1_VERTEX_ATTRIB9_4_NV 0x8669 -#define GL_MAP1_VERTEX_ATTRIB10_4_NV 0x866A -#define GL_MAP1_VERTEX_ATTRIB11_4_NV 0x866B -#define GL_MAP1_VERTEX_ATTRIB12_4_NV 0x866C -#define GL_MAP1_VERTEX_ATTRIB13_4_NV 0x866D -#define GL_MAP1_VERTEX_ATTRIB14_4_NV 0x866E -#define GL_MAP1_VERTEX_ATTRIB15_4_NV 0x866F -#define GL_MAP2_VERTEX_ATTRIB0_4_NV 0x8670 -#define GL_MAP2_VERTEX_ATTRIB1_4_NV 0x8671 -#define GL_MAP2_VERTEX_ATTRIB2_4_NV 0x8672 -#define GL_MAP2_VERTEX_ATTRIB3_4_NV 0x8673 -#define GL_MAP2_VERTEX_ATTRIB4_4_NV 0x8674 -#define GL_MAP2_VERTEX_ATTRIB5_4_NV 0x8675 -#define GL_MAP2_VERTEX_ATTRIB6_4_NV 0x8676 -#define GL_MAP2_VERTEX_ATTRIB7_4_NV 0x8677 -#define GL_MAP2_VERTEX_ATTRIB8_4_NV 0x8678 -#define GL_MAP2_VERTEX_ATTRIB9_4_NV 0x8679 -#define GL_MAP2_VERTEX_ATTRIB10_4_NV 0x867A -#define GL_MAP2_VERTEX_ATTRIB11_4_NV 0x867B -#define GL_MAP2_VERTEX_ATTRIB12_4_NV 0x867C -#define GL_MAP2_VERTEX_ATTRIB13_4_NV 0x867D -#define GL_MAP2_VERTEX_ATTRIB14_4_NV 0x867E -#define GL_MAP2_VERTEX_ATTRIB15_4_NV 0x867F -#endif - -#ifndef GL_SGIX_texture_coordinate_clamp -#define GL_TEXTURE_MAX_CLAMP_S_SGIX 0x8369 -#define GL_TEXTURE_MAX_CLAMP_T_SGIX 0x836A -#define GL_TEXTURE_MAX_CLAMP_R_SGIX 0x836B -#endif - -#ifndef GL_SGIX_scalebias_hint -#define GL_SCALEBIAS_HINT_SGIX 0x8322 -#endif - -#ifndef GL_OML_interlace -#define GL_INTERLACE_OML 0x8980 -#define GL_INTERLACE_READ_OML 0x8981 -#endif - -#ifndef GL_OML_subsample -#define GL_FORMAT_SUBSAMPLE_24_24_OML 0x8982 -#define GL_FORMAT_SUBSAMPLE_244_244_OML 0x8983 -#endif - -#ifndef GL_OML_resample -#define GL_PACK_RESAMPLE_OML 0x8984 -#define GL_UNPACK_RESAMPLE_OML 0x8985 -#define GL_RESAMPLE_REPLICATE_OML 0x8986 -#define GL_RESAMPLE_ZERO_FILL_OML 0x8987 -#define GL_RESAMPLE_AVERAGE_OML 0x8988 -#define GL_RESAMPLE_DECIMATE_OML 0x8989 -#endif - -#ifndef GL_NV_copy_depth_to_color -#define GL_DEPTH_STENCIL_TO_RGBA_NV 0x886E -#define GL_DEPTH_STENCIL_TO_BGRA_NV 0x886F -#endif - -#ifndef GL_ATI_envmap_bumpmap -#define GL_BUMP_ROT_MATRIX_ATI 0x8775 -#define GL_BUMP_ROT_MATRIX_SIZE_ATI 0x8776 -#define GL_BUMP_NUM_TEX_UNITS_ATI 0x8777 -#define GL_BUMP_TEX_UNITS_ATI 0x8778 -#define GL_DUDV_ATI 0x8779 -#define GL_DU8DV8_ATI 0x877A -#define GL_BUMP_ENVMAP_ATI 0x877B -#define GL_BUMP_TARGET_ATI 0x877C -#endif - -#ifndef GL_ATI_fragment_shader -#define GL_FRAGMENT_SHADER_ATI 0x8920 -#define GL_REG_0_ATI 0x8921 -#define GL_REG_1_ATI 0x8922 -#define GL_REG_2_ATI 0x8923 -#define GL_REG_3_ATI 0x8924 -#define GL_REG_4_ATI 0x8925 -#define GL_REG_5_ATI 0x8926 -#define GL_REG_6_ATI 0x8927 -#define GL_REG_7_ATI 0x8928 -#define GL_REG_8_ATI 0x8929 -#define GL_REG_9_ATI 0x892A -#define GL_REG_10_ATI 0x892B -#define GL_REG_11_ATI 0x892C -#define GL_REG_12_ATI 0x892D -#define GL_REG_13_ATI 0x892E -#define GL_REG_14_ATI 0x892F -#define GL_REG_15_ATI 0x8930 -#define GL_REG_16_ATI 0x8931 -#define GL_REG_17_ATI 0x8932 -#define GL_REG_18_ATI 0x8933 -#define GL_REG_19_ATI 0x8934 -#define GL_REG_20_ATI 0x8935 -#define GL_REG_21_ATI 0x8936 -#define GL_REG_22_ATI 0x8937 -#define GL_REG_23_ATI 0x8938 -#define GL_REG_24_ATI 0x8939 -#define GL_REG_25_ATI 0x893A -#define GL_REG_26_ATI 0x893B -#define GL_REG_27_ATI 0x893C -#define GL_REG_28_ATI 0x893D -#define GL_REG_29_ATI 0x893E -#define GL_REG_30_ATI 0x893F -#define GL_REG_31_ATI 0x8940 -#define GL_CON_0_ATI 0x8941 -#define GL_CON_1_ATI 0x8942 -#define GL_CON_2_ATI 0x8943 -#define GL_CON_3_ATI 0x8944 -#define GL_CON_4_ATI 0x8945 -#define GL_CON_5_ATI 0x8946 -#define GL_CON_6_ATI 0x8947 -#define GL_CON_7_ATI 0x8948 -#define GL_CON_8_ATI 0x8949 -#define GL_CON_9_ATI 0x894A -#define GL_CON_10_ATI 0x894B -#define GL_CON_11_ATI 0x894C -#define GL_CON_12_ATI 0x894D -#define GL_CON_13_ATI 0x894E -#define GL_CON_14_ATI 0x894F -#define GL_CON_15_ATI 0x8950 -#define GL_CON_16_ATI 0x8951 -#define GL_CON_17_ATI 0x8952 -#define GL_CON_18_ATI 0x8953 -#define GL_CON_19_ATI 0x8954 -#define GL_CON_20_ATI 0x8955 -#define GL_CON_21_ATI 0x8956 -#define GL_CON_22_ATI 0x8957 -#define GL_CON_23_ATI 0x8958 -#define GL_CON_24_ATI 0x8959 -#define GL_CON_25_ATI 0x895A -#define GL_CON_26_ATI 0x895B -#define GL_CON_27_ATI 0x895C -#define GL_CON_28_ATI 0x895D -#define GL_CON_29_ATI 0x895E -#define GL_CON_30_ATI 0x895F -#define GL_CON_31_ATI 0x8960 -#define GL_MOV_ATI 0x8961 -#define GL_ADD_ATI 0x8963 -#define GL_MUL_ATI 0x8964 -#define GL_SUB_ATI 0x8965 -#define GL_DOT3_ATI 0x8966 -#define GL_DOT4_ATI 0x8967 -#define GL_MAD_ATI 0x8968 -#define GL_LERP_ATI 0x8969 -#define GL_CND_ATI 0x896A -#define GL_CND0_ATI 0x896B -#define GL_DOT2_ADD_ATI 0x896C -#define GL_SECONDARY_INTERPOLATOR_ATI 0x896D -#define GL_NUM_FRAGMENT_REGISTERS_ATI 0x896E -#define GL_NUM_FRAGMENT_CONSTANTS_ATI 0x896F -#define GL_NUM_PASSES_ATI 0x8970 -#define GL_NUM_INSTRUCTIONS_PER_PASS_ATI 0x8971 -#define GL_NUM_INSTRUCTIONS_TOTAL_ATI 0x8972 -#define GL_NUM_INPUT_INTERPOLATOR_COMPONENTS_ATI 0x8973 -#define GL_NUM_LOOPBACK_COMPONENTS_ATI 0x8974 -#define GL_COLOR_ALPHA_PAIRING_ATI 0x8975 -#define GL_SWIZZLE_STR_ATI 0x8976 -#define GL_SWIZZLE_STQ_ATI 0x8977 -#define GL_SWIZZLE_STR_DR_ATI 0x8978 -#define GL_SWIZZLE_STQ_DQ_ATI 0x8979 -#define GL_SWIZZLE_STRQ_ATI 0x897A -#define GL_SWIZZLE_STRQ_DQ_ATI 0x897B -#define GL_RED_BIT_ATI 0x00000001 -#define GL_GREEN_BIT_ATI 0x00000002 -#define GL_BLUE_BIT_ATI 0x00000004 -#define GL_2X_BIT_ATI 0x00000001 -#define GL_4X_BIT_ATI 0x00000002 -#define GL_8X_BIT_ATI 0x00000004 -#define GL_HALF_BIT_ATI 0x00000008 -#define GL_QUARTER_BIT_ATI 0x00000010 -#define GL_EIGHTH_BIT_ATI 0x00000020 -#define GL_SATURATE_BIT_ATI 0x00000040 -#define GL_COMP_BIT_ATI 0x00000002 -#define GL_NEGATE_BIT_ATI 0x00000004 -#define GL_BIAS_BIT_ATI 0x00000008 -#endif - -#ifndef GL_ATI_pn_triangles -#define GL_PN_TRIANGLES_ATI 0x87F0 -#define GL_MAX_PN_TRIANGLES_TESSELATION_LEVEL_ATI 0x87F1 -#define GL_PN_TRIANGLES_POINT_MODE_ATI 0x87F2 -#define GL_PN_TRIANGLES_NORMAL_MODE_ATI 0x87F3 -#define GL_PN_TRIANGLES_TESSELATION_LEVEL_ATI 0x87F4 -#define GL_PN_TRIANGLES_POINT_MODE_LINEAR_ATI 0x87F5 -#define GL_PN_TRIANGLES_POINT_MODE_CUBIC_ATI 0x87F6 -#define GL_PN_TRIANGLES_NORMAL_MODE_LINEAR_ATI 0x87F7 -#define GL_PN_TRIANGLES_NORMAL_MODE_QUADRATIC_ATI 0x87F8 -#endif - -#ifndef GL_ATI_vertex_array_object -#define GL_STATIC_ATI 0x8760 -#define GL_DYNAMIC_ATI 0x8761 -#define GL_PRESERVE_ATI 0x8762 -#define GL_DISCARD_ATI 0x8763 -#define GL_OBJECT_BUFFER_SIZE_ATI 0x8764 -#define GL_OBJECT_BUFFER_USAGE_ATI 0x8765 -#define GL_ARRAY_OBJECT_BUFFER_ATI 0x8766 -#define GL_ARRAY_OBJECT_OFFSET_ATI 0x8767 -#endif - -#ifndef GL_EXT_vertex_shader -#define GL_VERTEX_SHADER_EXT 0x8780 -#define GL_VERTEX_SHADER_BINDING_EXT 0x8781 -#define GL_OP_INDEX_EXT 0x8782 -#define GL_OP_NEGATE_EXT 0x8783 -#define GL_OP_DOT3_EXT 0x8784 -#define GL_OP_DOT4_EXT 0x8785 -#define GL_OP_MUL_EXT 0x8786 -#define GL_OP_ADD_EXT 0x8787 -#define GL_OP_MADD_EXT 0x8788 -#define GL_OP_FRAC_EXT 0x8789 -#define GL_OP_MAX_EXT 0x878A -#define GL_OP_MIN_EXT 0x878B -#define GL_OP_SET_GE_EXT 0x878C -#define GL_OP_SET_LT_EXT 0x878D -#define GL_OP_CLAMP_EXT 0x878E -#define GL_OP_FLOOR_EXT 0x878F -#define GL_OP_ROUND_EXT 0x8790 -#define GL_OP_EXP_BASE_2_EXT 0x8791 -#define GL_OP_LOG_BASE_2_EXT 0x8792 -#define GL_OP_POWER_EXT 0x8793 -#define GL_OP_RECIP_EXT 0x8794 -#define GL_OP_RECIP_SQRT_EXT 0x8795 -#define GL_OP_SUB_EXT 0x8796 -#define GL_OP_CROSS_PRODUCT_EXT 0x8797 -#define GL_OP_MULTIPLY_MATRIX_EXT 0x8798 -#define GL_OP_MOV_EXT 0x8799 -#define GL_OUTPUT_VERTEX_EXT 0x879A -#define GL_OUTPUT_COLOR0_EXT 0x879B -#define GL_OUTPUT_COLOR1_EXT 0x879C -#define GL_OUTPUT_TEXTURE_COORD0_EXT 0x879D -#define GL_OUTPUT_TEXTURE_COORD1_EXT 0x879E -#define GL_OUTPUT_TEXTURE_COORD2_EXT 0x879F -#define GL_OUTPUT_TEXTURE_COORD3_EXT 0x87A0 -#define GL_OUTPUT_TEXTURE_COORD4_EXT 0x87A1 -#define GL_OUTPUT_TEXTURE_COORD5_EXT 0x87A2 -#define GL_OUTPUT_TEXTURE_COORD6_EXT 0x87A3 -#define GL_OUTPUT_TEXTURE_COORD7_EXT 0x87A4 -#define GL_OUTPUT_TEXTURE_COORD8_EXT 0x87A5 -#define GL_OUTPUT_TEXTURE_COORD9_EXT 0x87A6 -#define GL_OUTPUT_TEXTURE_COORD10_EXT 0x87A7 -#define GL_OUTPUT_TEXTURE_COORD11_EXT 0x87A8 -#define GL_OUTPUT_TEXTURE_COORD12_EXT 0x87A9 -#define GL_OUTPUT_TEXTURE_COORD13_EXT 0x87AA -#define GL_OUTPUT_TEXTURE_COORD14_EXT 0x87AB -#define GL_OUTPUT_TEXTURE_COORD15_EXT 0x87AC -#define GL_OUTPUT_TEXTURE_COORD16_EXT 0x87AD -#define GL_OUTPUT_TEXTURE_COORD17_EXT 0x87AE -#define GL_OUTPUT_TEXTURE_COORD18_EXT 0x87AF -#define GL_OUTPUT_TEXTURE_COORD19_EXT 0x87B0 -#define GL_OUTPUT_TEXTURE_COORD20_EXT 0x87B1 -#define GL_OUTPUT_TEXTURE_COORD21_EXT 0x87B2 -#define GL_OUTPUT_TEXTURE_COORD22_EXT 0x87B3 -#define GL_OUTPUT_TEXTURE_COORD23_EXT 0x87B4 -#define GL_OUTPUT_TEXTURE_COORD24_EXT 0x87B5 -#define GL_OUTPUT_TEXTURE_COORD25_EXT 0x87B6 -#define GL_OUTPUT_TEXTURE_COORD26_EXT 0x87B7 -#define GL_OUTPUT_TEXTURE_COORD27_EXT 0x87B8 -#define GL_OUTPUT_TEXTURE_COORD28_EXT 0x87B9 -#define GL_OUTPUT_TEXTURE_COORD29_EXT 0x87BA -#define GL_OUTPUT_TEXTURE_COORD30_EXT 0x87BB -#define GL_OUTPUT_TEXTURE_COORD31_EXT 0x87BC -#define GL_OUTPUT_FOG_EXT 0x87BD -#define GL_SCALAR_EXT 0x87BE -#define GL_VECTOR_EXT 0x87BF -#define GL_MATRIX_EXT 0x87C0 -#define GL_VARIANT_EXT 0x87C1 -#define GL_INVARIANT_EXT 0x87C2 -#define GL_LOCAL_CONSTANT_EXT 0x87C3 -#define GL_LOCAL_EXT 0x87C4 -#define GL_MAX_VERTEX_SHADER_INSTRUCTIONS_EXT 0x87C5 -#define GL_MAX_VERTEX_SHADER_VARIANTS_EXT 0x87C6 -#define GL_MAX_VERTEX_SHADER_INVARIANTS_EXT 0x87C7 -#define GL_MAX_VERTEX_SHADER_LOCAL_CONSTANTS_EXT 0x87C8 -#define GL_MAX_VERTEX_SHADER_LOCALS_EXT 0x87C9 -#define GL_MAX_OPTIMIZED_VERTEX_SHADER_INSTRUCTIONS_EXT 0x87CA -#define GL_MAX_OPTIMIZED_VERTEX_SHADER_VARIANTS_EXT 0x87CB -#define GL_MAX_OPTIMIZED_VERTEX_SHADER_LOCAL_CONSTANTS_EXT 0x87CC -#define GL_MAX_OPTIMIZED_VERTEX_SHADER_INVARIANTS_EXT 0x87CD -#define GL_MAX_OPTIMIZED_VERTEX_SHADER_LOCALS_EXT 0x87CE -#define GL_VERTEX_SHADER_INSTRUCTIONS_EXT 0x87CF -#define GL_VERTEX_SHADER_VARIANTS_EXT 0x87D0 -#define GL_VERTEX_SHADER_INVARIANTS_EXT 0x87D1 -#define GL_VERTEX_SHADER_LOCAL_CONSTANTS_EXT 0x87D2 -#define GL_VERTEX_SHADER_LOCALS_EXT 0x87D3 -#define GL_VERTEX_SHADER_OPTIMIZED_EXT 0x87D4 -#define GL_X_EXT 0x87D5 -#define GL_Y_EXT 0x87D6 -#define GL_Z_EXT 0x87D7 -#define GL_W_EXT 0x87D8 -#define GL_NEGATIVE_X_EXT 0x87D9 -#define GL_NEGATIVE_Y_EXT 0x87DA -#define GL_NEGATIVE_Z_EXT 0x87DB -#define GL_NEGATIVE_W_EXT 0x87DC -#define GL_ZERO_EXT 0x87DD -#define GL_ONE_EXT 0x87DE -#define GL_NEGATIVE_ONE_EXT 0x87DF -#define GL_NORMALIZED_RANGE_EXT 0x87E0 -#define GL_FULL_RANGE_EXT 0x87E1 -#define GL_CURRENT_VERTEX_EXT 0x87E2 -#define GL_MVP_MATRIX_EXT 0x87E3 -#define GL_VARIANT_VALUE_EXT 0x87E4 -#define GL_VARIANT_DATATYPE_EXT 0x87E5 -#define GL_VARIANT_ARRAY_STRIDE_EXT 0x87E6 -#define GL_VARIANT_ARRAY_TYPE_EXT 0x87E7 -#define GL_VARIANT_ARRAY_EXT 0x87E8 -#define GL_VARIANT_ARRAY_POINTER_EXT 0x87E9 -#define GL_INVARIANT_VALUE_EXT 0x87EA -#define GL_INVARIANT_DATATYPE_EXT 0x87EB -#define GL_LOCAL_CONSTANT_VALUE_EXT 0x87EC -#define GL_LOCAL_CONSTANT_DATATYPE_EXT 0x87ED -#endif - -#ifndef GL_ATI_vertex_streams -#define GL_MAX_VERTEX_STREAMS_ATI 0x876B -#define GL_VERTEX_STREAM0_ATI 0x876C -#define GL_VERTEX_STREAM1_ATI 0x876D -#define GL_VERTEX_STREAM2_ATI 0x876E -#define GL_VERTEX_STREAM3_ATI 0x876F -#define GL_VERTEX_STREAM4_ATI 0x8770 -#define GL_VERTEX_STREAM5_ATI 0x8771 -#define GL_VERTEX_STREAM6_ATI 0x8772 -#define GL_VERTEX_STREAM7_ATI 0x8773 -#define GL_VERTEX_SOURCE_ATI 0x8774 -#endif - -#ifndef GL_ATI_element_array -#define GL_ELEMENT_ARRAY_ATI 0x8768 -#define GL_ELEMENT_ARRAY_TYPE_ATI 0x8769 -#define GL_ELEMENT_ARRAY_POINTER_ATI 0x876A -#endif - -#ifndef GL_SUN_mesh_array -#define GL_QUAD_MESH_SUN 0x8614 -#define GL_TRIANGLE_MESH_SUN 0x8615 -#endif - -#ifndef GL_SUN_slice_accum -#define GL_SLICE_ACCUM_SUN 0x85CC -#endif - -#ifndef GL_NV_multisample_filter_hint -#define GL_MULTISAMPLE_FILTER_HINT_NV 0x8534 -#endif - -#ifndef GL_NV_depth_clamp -#define GL_DEPTH_CLAMP_NV 0x864F -#endif - -#ifndef GL_NV_occlusion_query -#define GL_PIXEL_COUNTER_BITS_NV 0x8864 -#define GL_CURRENT_OCCLUSION_QUERY_ID_NV 0x8865 -#define GL_PIXEL_COUNT_NV 0x8866 -#define GL_PIXEL_COUNT_AVAILABLE_NV 0x8867 -#endif - -#ifndef GL_NV_point_sprite -#define GL_POINT_SPRITE_NV 0x8861 -#define GL_COORD_REPLACE_NV 0x8862 -#define GL_POINT_SPRITE_R_MODE_NV 0x8863 -#endif - -#ifndef GL_NV_texture_shader3 -#define GL_OFFSET_PROJECTIVE_TEXTURE_2D_NV 0x8850 -#define GL_OFFSET_PROJECTIVE_TEXTURE_2D_SCALE_NV 0x8851 -#define GL_OFFSET_PROJECTIVE_TEXTURE_RECTANGLE_NV 0x8852 -#define GL_OFFSET_PROJECTIVE_TEXTURE_RECTANGLE_SCALE_NV 0x8853 -#define GL_OFFSET_HILO_TEXTURE_2D_NV 0x8854 -#define GL_OFFSET_HILO_TEXTURE_RECTANGLE_NV 0x8855 -#define GL_OFFSET_HILO_PROJECTIVE_TEXTURE_2D_NV 0x8856 -#define GL_OFFSET_HILO_PROJECTIVE_TEXTURE_RECTANGLE_NV 0x8857 -#define GL_DEPENDENT_HILO_TEXTURE_2D_NV 0x8858 -#define GL_DEPENDENT_RGB_TEXTURE_3D_NV 0x8859 -#define GL_DEPENDENT_RGB_TEXTURE_CUBE_MAP_NV 0x885A -#define GL_DOT_PRODUCT_PASS_THROUGH_NV 0x885B -#define GL_DOT_PRODUCT_TEXTURE_1D_NV 0x885C -#define GL_DOT_PRODUCT_AFFINE_DEPTH_REPLACE_NV 0x885D -#define GL_HILO8_NV 0x885E -#define GL_SIGNED_HILO8_NV 0x885F -#define GL_FORCE_BLUE_TO_ONE_NV 0x8860 -#endif - -#ifndef GL_NV_vertex_program1_1 -#endif - -#ifndef GL_EXT_shadow_funcs -#endif - -#ifndef GL_EXT_stencil_two_side -#define GL_STENCIL_TEST_TWO_SIDE_EXT 0x8910 -#define GL_ACTIVE_STENCIL_FACE_EXT 0x8911 -#endif - -#ifndef GL_ATI_text_fragment_shader -#define GL_TEXT_FRAGMENT_SHADER_ATI 0x8200 -#endif - -#ifndef GL_APPLE_client_storage -#define GL_UNPACK_CLIENT_STORAGE_APPLE 0x85B2 -#endif - -#ifndef GL_APPLE_element_array -#define GL_ELEMENT_ARRAY_APPLE 0x8768 -#define GL_ELEMENT_ARRAY_TYPE_APPLE 0x8769 -#define GL_ELEMENT_ARRAY_POINTER_APPLE 0x876A -#endif - -#ifndef GL_APPLE_fence -#define GL_DRAW_PIXELS_APPLE 0x8A0A -#define GL_FENCE_APPLE 0x8A0B -#endif - -#ifndef GL_APPLE_vertex_array_object -#define GL_VERTEX_ARRAY_BINDING_APPLE 0x85B5 -#endif - -#ifndef GL_APPLE_vertex_array_range -#define GL_VERTEX_ARRAY_RANGE_APPLE 0x851D -#define GL_VERTEX_ARRAY_RANGE_LENGTH_APPLE 0x851E -#define GL_VERTEX_ARRAY_STORAGE_HINT_APPLE 0x851F -#define GL_VERTEX_ARRAY_RANGE_POINTER_APPLE 0x8521 -#define GL_STORAGE_CACHED_APPLE 0x85BE -#define GL_STORAGE_SHARED_APPLE 0x85BF -#endif - -#ifndef GL_APPLE_ycbcr_422 -#define GL_YCBCR_422_APPLE 0x85B9 -#define GL_UNSIGNED_SHORT_8_8_APPLE 0x85BA -#define GL_UNSIGNED_SHORT_8_8_REV_APPLE 0x85BB -#endif - -#ifndef GL_S3_s3tc -#define GL_RGB_S3TC 0x83A0 -#define GL_RGB4_S3TC 0x83A1 -#define GL_RGBA_S3TC 0x83A2 -#define GL_RGBA4_S3TC 0x83A3 -#endif - -#ifndef GL_ATI_draw_buffers -#define GL_MAX_DRAW_BUFFERS_ATI 0x8824 -#define GL_DRAW_BUFFER0_ATI 0x8825 -#define GL_DRAW_BUFFER1_ATI 0x8826 -#define GL_DRAW_BUFFER2_ATI 0x8827 -#define GL_DRAW_BUFFER3_ATI 0x8828 -#define GL_DRAW_BUFFER4_ATI 0x8829 -#define GL_DRAW_BUFFER5_ATI 0x882A -#define GL_DRAW_BUFFER6_ATI 0x882B -#define GL_DRAW_BUFFER7_ATI 0x882C -#define GL_DRAW_BUFFER8_ATI 0x882D -#define GL_DRAW_BUFFER9_ATI 0x882E -#define GL_DRAW_BUFFER10_ATI 0x882F -#define GL_DRAW_BUFFER11_ATI 0x8830 -#define GL_DRAW_BUFFER12_ATI 0x8831 -#define GL_DRAW_BUFFER13_ATI 0x8832 -#define GL_DRAW_BUFFER14_ATI 0x8833 -#define GL_DRAW_BUFFER15_ATI 0x8834 -#endif - -#ifndef GL_ATI_pixel_format_float -#define GL_TYPE_RGBA_FLOAT_ATI 0x8820 -#define GL_COLOR_CLEAR_UNCLAMPED_VALUE_ATI 0x8835 -#endif - -#ifndef GL_ATI_texture_env_combine3 -#define GL_MODULATE_ADD_ATI 0x8744 -#define GL_MODULATE_SIGNED_ADD_ATI 0x8745 -#define GL_MODULATE_SUBTRACT_ATI 0x8746 -#endif - -#ifndef GL_ATI_texture_float -#define GL_RGBA_FLOAT32_ATI 0x8814 -#define GL_RGB_FLOAT32_ATI 0x8815 -#define GL_ALPHA_FLOAT32_ATI 0x8816 -#define GL_INTENSITY_FLOAT32_ATI 0x8817 -#define GL_LUMINANCE_FLOAT32_ATI 0x8818 -#define GL_LUMINANCE_ALPHA_FLOAT32_ATI 0x8819 -#define GL_RGBA_FLOAT16_ATI 0x881A -#define GL_RGB_FLOAT16_ATI 0x881B -#define GL_ALPHA_FLOAT16_ATI 0x881C -#define GL_INTENSITY_FLOAT16_ATI 0x881D -#define GL_LUMINANCE_FLOAT16_ATI 0x881E -#define GL_LUMINANCE_ALPHA_FLOAT16_ATI 0x881F -#endif - -#ifndef GL_NV_float_buffer -#define GL_FLOAT_R_NV 0x8880 -#define GL_FLOAT_RG_NV 0x8881 -#define GL_FLOAT_RGB_NV 0x8882 -#define GL_FLOAT_RGBA_NV 0x8883 -#define GL_FLOAT_R16_NV 0x8884 -#define GL_FLOAT_R32_NV 0x8885 -#define GL_FLOAT_RG16_NV 0x8886 -#define GL_FLOAT_RG32_NV 0x8887 -#define GL_FLOAT_RGB16_NV 0x8888 -#define GL_FLOAT_RGB32_NV 0x8889 -#define GL_FLOAT_RGBA16_NV 0x888A -#define GL_FLOAT_RGBA32_NV 0x888B -#define GL_TEXTURE_FLOAT_COMPONENTS_NV 0x888C -#define GL_FLOAT_CLEAR_COLOR_VALUE_NV 0x888D -#define GL_FLOAT_RGBA_MODE_NV 0x888E -#endif - -#ifndef GL_NV_fragment_program -#define GL_MAX_FRAGMENT_PROGRAM_LOCAL_PARAMETERS_NV 0x8868 -#define GL_FRAGMENT_PROGRAM_NV 0x8870 -#define GL_MAX_TEXTURE_COORDS_NV 0x8871 -#define GL_MAX_TEXTURE_IMAGE_UNITS_NV 0x8872 -#define GL_FRAGMENT_PROGRAM_BINDING_NV 0x8873 -#define GL_PROGRAM_ERROR_STRING_NV 0x8874 -#endif - -#ifndef GL_NV_half_float -#define GL_HALF_FLOAT_NV 0x140B -#endif - -#ifndef GL_NV_pixel_data_range -#define GL_WRITE_PIXEL_DATA_RANGE_NV 0x8878 -#define GL_READ_PIXEL_DATA_RANGE_NV 0x8879 -#define GL_WRITE_PIXEL_DATA_RANGE_LENGTH_NV 0x887A -#define GL_READ_PIXEL_DATA_RANGE_LENGTH_NV 0x887B -#define GL_WRITE_PIXEL_DATA_RANGE_POINTER_NV 0x887C -#define GL_READ_PIXEL_DATA_RANGE_POINTER_NV 0x887D -#endif - -#ifndef GL_NV_primitive_restart -#define GL_PRIMITIVE_RESTART_NV 0x8558 -#define GL_PRIMITIVE_RESTART_INDEX_NV 0x8559 -#endif - -#ifndef GL_NV_texture_expand_normal -#define GL_TEXTURE_UNSIGNED_REMAP_MODE_NV 0x888F -#endif - -#ifndef GL_NV_vertex_program2 -#endif - -#ifndef GL_ATI_map_object_buffer -#endif - -#ifndef GL_ATI_separate_stencil -#define GL_STENCIL_BACK_FUNC_ATI 0x8800 -#define GL_STENCIL_BACK_FAIL_ATI 0x8801 -#define GL_STENCIL_BACK_PASS_DEPTH_FAIL_ATI 0x8802 -#define GL_STENCIL_BACK_PASS_DEPTH_PASS_ATI 0x8803 -#endif - -#ifndef GL_ATI_vertex_attrib_array_object -#endif - -#ifndef GL_OES_read_format -#define GL_IMPLEMENTATION_COLOR_READ_TYPE_OES 0x8B9A -#define GL_IMPLEMENTATION_COLOR_READ_FORMAT_OES 0x8B9B -#endif - -#ifndef GL_EXT_depth_bounds_test -#define GL_DEPTH_BOUNDS_TEST_EXT 0x8890 -#define GL_DEPTH_BOUNDS_EXT 0x8891 -#endif - -#ifndef GL_EXT_texture_mirror_clamp -#define GL_MIRROR_CLAMP_EXT 0x8742 -#define GL_MIRROR_CLAMP_TO_EDGE_EXT 0x8743 -#define GL_MIRROR_CLAMP_TO_BORDER_EXT 0x8912 -#endif - -#ifndef GL_EXT_blend_equation_separate -#define GL_BLEND_EQUATION_RGB_EXT GL_BLEND_EQUATION -#define GL_BLEND_EQUATION_ALPHA_EXT 0x883D -#endif - -#ifndef GL_MESA_pack_invert -#define GL_PACK_INVERT_MESA 0x8758 -#endif - -#ifndef GL_MESA_ycbcr_texture -#define GL_UNSIGNED_SHORT_8_8_MESA 0x85BA -#define GL_UNSIGNED_SHORT_8_8_REV_MESA 0x85BB -#define GL_YCBCR_MESA 0x8757 -#endif - -#ifndef GL_EXT_pixel_buffer_object -#define GL_PIXEL_PACK_BUFFER_EXT 0x88EB -#define GL_PIXEL_UNPACK_BUFFER_EXT 0x88EC -#define GL_PIXEL_PACK_BUFFER_BINDING_EXT 0x88ED -#define GL_PIXEL_UNPACK_BUFFER_BINDING_EXT 0x88EF -#endif - -#ifndef GL_NV_fragment_program_option -#endif - -#ifndef GL_NV_fragment_program2 -#define GL_MAX_PROGRAM_EXEC_INSTRUCTIONS_NV 0x88F4 -#define GL_MAX_PROGRAM_CALL_DEPTH_NV 0x88F5 -#define GL_MAX_PROGRAM_IF_DEPTH_NV 0x88F6 -#define GL_MAX_PROGRAM_LOOP_DEPTH_NV 0x88F7 -#define GL_MAX_PROGRAM_LOOP_COUNT_NV 0x88F8 -#endif - -#ifndef GL_NV_vertex_program2_option -/* reuse GL_MAX_PROGRAM_EXEC_INSTRUCTIONS_NV */ -/* reuse GL_MAX_PROGRAM_CALL_DEPTH_NV */ -#endif - -#ifndef GL_NV_vertex_program3 -/* reuse GL_MAX_VERTEX_TEXTURE_IMAGE_UNITS_ARB */ -#endif - -#ifndef GL_EXT_framebuffer_object -#define GL_INVALID_FRAMEBUFFER_OPERATION_EXT 0x0506 -#define GL_MAX_RENDERBUFFER_SIZE_EXT 0x84E8 -#define GL_FRAMEBUFFER_BINDING_EXT 0x8CA6 -#define GL_RENDERBUFFER_BINDING_EXT 0x8CA7 -#define GL_FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE_EXT 0x8CD0 -#define GL_FRAMEBUFFER_ATTACHMENT_OBJECT_NAME_EXT 0x8CD1 -#define GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_LEVEL_EXT 0x8CD2 -#define GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_CUBE_MAP_FACE_EXT 0x8CD3 -#define GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_3D_ZOFFSET_EXT 0x8CD4 -#define GL_FRAMEBUFFER_COMPLETE_EXT 0x8CD5 -#define GL_FRAMEBUFFER_INCOMPLETE_ATTACHMENT_EXT 0x8CD6 -#define GL_FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT_EXT 0x8CD7 -#define GL_FRAMEBUFFER_INCOMPLETE_DIMENSIONS_EXT 0x8CD9 -#define GL_FRAMEBUFFER_INCOMPLETE_FORMATS_EXT 0x8CDA -#define GL_FRAMEBUFFER_INCOMPLETE_DRAW_BUFFER_EXT 0x8CDB -#define GL_FRAMEBUFFER_INCOMPLETE_READ_BUFFER_EXT 0x8CDC -#define GL_FRAMEBUFFER_UNSUPPORTED_EXT 0x8CDD -#define GL_MAX_COLOR_ATTACHMENTS_EXT 0x8CDF -#define GL_COLOR_ATTACHMENT0_EXT 0x8CE0 -#define GL_COLOR_ATTACHMENT1_EXT 0x8CE1 -#define GL_COLOR_ATTACHMENT2_EXT 0x8CE2 -#define GL_COLOR_ATTACHMENT3_EXT 0x8CE3 -#define GL_COLOR_ATTACHMENT4_EXT 0x8CE4 -#define GL_COLOR_ATTACHMENT5_EXT 0x8CE5 -#define GL_COLOR_ATTACHMENT6_EXT 0x8CE6 -#define GL_COLOR_ATTACHMENT7_EXT 0x8CE7 -#define GL_COLOR_ATTACHMENT8_EXT 0x8CE8 -#define GL_COLOR_ATTACHMENT9_EXT 0x8CE9 -#define GL_COLOR_ATTACHMENT10_EXT 0x8CEA -#define GL_COLOR_ATTACHMENT11_EXT 0x8CEB -#define GL_COLOR_ATTACHMENT12_EXT 0x8CEC -#define GL_COLOR_ATTACHMENT13_EXT 0x8CED -#define GL_COLOR_ATTACHMENT14_EXT 0x8CEE -#define GL_COLOR_ATTACHMENT15_EXT 0x8CEF -#define GL_DEPTH_ATTACHMENT_EXT 0x8D00 -#define GL_STENCIL_ATTACHMENT_EXT 0x8D20 -#define GL_FRAMEBUFFER_EXT 0x8D40 -#define GL_RENDERBUFFER_EXT 0x8D41 -#define GL_RENDERBUFFER_WIDTH_EXT 0x8D42 -#define GL_RENDERBUFFER_HEIGHT_EXT 0x8D43 -#define GL_RENDERBUFFER_INTERNAL_FORMAT_EXT 0x8D44 -#define GL_STENCIL_INDEX1_EXT 0x8D46 -#define GL_STENCIL_INDEX4_EXT 0x8D47 -#define GL_STENCIL_INDEX8_EXT 0x8D48 -#define GL_STENCIL_INDEX16_EXT 0x8D49 -#define GL_RENDERBUFFER_RED_SIZE_EXT 0x8D50 -#define GL_RENDERBUFFER_GREEN_SIZE_EXT 0x8D51 -#define GL_RENDERBUFFER_BLUE_SIZE_EXT 0x8D52 -#define GL_RENDERBUFFER_ALPHA_SIZE_EXT 0x8D53 -#define GL_RENDERBUFFER_DEPTH_SIZE_EXT 0x8D54 -#define GL_RENDERBUFFER_STENCIL_SIZE_EXT 0x8D55 -#endif - -#ifndef GL_GREMEDY_string_marker -#endif - -#ifndef GL_EXT_packed_depth_stencil -#define GL_DEPTH_STENCIL_EXT 0x84F9 -#define GL_UNSIGNED_INT_24_8_EXT 0x84FA -#define GL_DEPTH24_STENCIL8_EXT 0x88F0 -#define GL_TEXTURE_STENCIL_SIZE_EXT 0x88F1 -#endif - -#ifndef GL_EXT_stencil_clear_tag -#define GL_STENCIL_TAG_BITS_EXT 0x88F2 -#define GL_STENCIL_CLEAR_TAG_VALUE_EXT 0x88F3 -#endif - -#ifndef GL_EXT_texture_sRGB -#define GL_SRGB_EXT 0x8C40 -#define GL_SRGB8_EXT 0x8C41 -#define GL_SRGB_ALPHA_EXT 0x8C42 -#define GL_SRGB8_ALPHA8_EXT 0x8C43 -#define GL_SLUMINANCE_ALPHA_EXT 0x8C44 -#define GL_SLUMINANCE8_ALPHA8_EXT 0x8C45 -#define GL_SLUMINANCE_EXT 0x8C46 -#define GL_SLUMINANCE8_EXT 0x8C47 -#define GL_COMPRESSED_SRGB_EXT 0x8C48 -#define GL_COMPRESSED_SRGB_ALPHA_EXT 0x8C49 -#define GL_COMPRESSED_SLUMINANCE_EXT 0x8C4A -#define GL_COMPRESSED_SLUMINANCE_ALPHA_EXT 0x8C4B -#define GL_COMPRESSED_SRGB_S3TC_DXT1_EXT 0x8C4C -#define GL_COMPRESSED_SRGB_ALPHA_S3TC_DXT1_EXT 0x8C4D -#define GL_COMPRESSED_SRGB_ALPHA_S3TC_DXT3_EXT 0x8C4E -#define GL_COMPRESSED_SRGB_ALPHA_S3TC_DXT5_EXT 0x8C4F -#endif - -#ifndef GL_EXT_framebuffer_blit -#define GL_READ_FRAMEBUFFER_EXT 0x8CA8 -#define GL_DRAW_FRAMEBUFFER_EXT 0x8CA9 -#define GL_READ_FRAMEBUFFER_BINDING_EXT GL_FRAMEBUFFER_BINDING_EXT -#define GL_DRAW_FRAMEBUFFER_BINDING_EXT 0x8CAA -#endif - -#ifndef GL_EXT_framebuffer_multisample -#define GL_RENDERBUFFER_SAMPLES_EXT 0x8CAB -#define GL_FRAMEBUFFER_INCOMPLETE_MULTISAMPLE_EXT 0x8D56 -#define GL_MAX_SAMPLES_EXT 0x8D57 -#endif - -#ifndef GL_MESAX_texture_stack -#define GL_TEXTURE_1D_STACK_MESAX 0x8759 -#define GL_TEXTURE_2D_STACK_MESAX 0x875A -#define GL_PROXY_TEXTURE_1D_STACK_MESAX 0x875B -#define GL_PROXY_TEXTURE_2D_STACK_MESAX 0x875C -#define GL_TEXTURE_1D_STACK_BINDING_MESAX 0x875D -#define GL_TEXTURE_2D_STACK_BINDING_MESAX 0x875E -#endif - -#ifndef GL_EXT_timer_query -#define GL_TIME_ELAPSED_EXT 0x88BF -#endif - -#ifndef GL_EXT_gpu_program_parameters -#endif - -#ifndef GL_APPLE_flush_buffer_range -#define GL_BUFFER_SERIALIZED_MODIFY_APPLE 0x8A12 -#define GL_BUFFER_FLUSHING_UNMAP_APPLE 0x8A13 -#endif - -#ifndef GL_NV_gpu_program4 -#define GL_MIN_PROGRAM_TEXEL_OFFSET_NV 0x8904 -#define GL_MAX_PROGRAM_TEXEL_OFFSET_NV 0x8905 -#define GL_PROGRAM_ATTRIB_COMPONENTS_NV 0x8906 -#define GL_PROGRAM_RESULT_COMPONENTS_NV 0x8907 -#define GL_MAX_PROGRAM_ATTRIB_COMPONENTS_NV 0x8908 -#define GL_MAX_PROGRAM_RESULT_COMPONENTS_NV 0x8909 -#define GL_MAX_PROGRAM_GENERIC_ATTRIBS_NV 0x8DA5 -#define GL_MAX_PROGRAM_GENERIC_RESULTS_NV 0x8DA6 -#endif - -#ifndef GL_NV_geometry_program4 -#define GL_LINES_ADJACENCY_EXT 0x000A -#define GL_LINE_STRIP_ADJACENCY_EXT 0x000B -#define GL_TRIANGLES_ADJACENCY_EXT 0x000C -#define GL_TRIANGLE_STRIP_ADJACENCY_EXT 0x000D -#define GL_GEOMETRY_PROGRAM_NV 0x8C26 -#define GL_MAX_PROGRAM_OUTPUT_VERTICES_NV 0x8C27 -#define GL_MAX_PROGRAM_TOTAL_OUTPUT_COMPONENTS_NV 0x8C28 -#define GL_GEOMETRY_VERTICES_OUT_EXT 0x8DDA -#define GL_GEOMETRY_INPUT_TYPE_EXT 0x8DDB -#define GL_GEOMETRY_OUTPUT_TYPE_EXT 0x8DDC -#define GL_MAX_GEOMETRY_TEXTURE_IMAGE_UNITS_EXT 0x8C29 -#define GL_FRAMEBUFFER_ATTACHMENT_LAYERED_EXT 0x8DA7 -#define GL_FRAMEBUFFER_INCOMPLETE_LAYER_TARGETS_EXT 0x8DA8 -#define GL_FRAMEBUFFER_INCOMPLETE_LAYER_COUNT_EXT 0x8DA9 -#define GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_LAYER_EXT 0x8CD4 -#define GL_PROGRAM_POINT_SIZE_EXT 0x8642 -#endif - -#ifndef GL_EXT_geometry_shader4 -#define GL_GEOMETRY_SHADER_EXT 0x8DD9 -/* reuse GL_GEOMETRY_VERTICES_OUT_EXT */ -/* reuse GL_GEOMETRY_INPUT_TYPE_EXT */ -/* reuse GL_GEOMETRY_OUTPUT_TYPE_EXT */ -/* reuse GL_MAX_GEOMETRY_TEXTURE_IMAGE_UNITS_EXT */ -#define GL_MAX_GEOMETRY_VARYING_COMPONENTS_EXT 0x8DDD -#define GL_MAX_VERTEX_VARYING_COMPONENTS_EXT 0x8DDE -#define GL_MAX_VARYING_COMPONENTS_EXT 0x8B4B -#define GL_MAX_GEOMETRY_UNIFORM_COMPONENTS_EXT 0x8DDF -#define GL_MAX_GEOMETRY_OUTPUT_VERTICES_EXT 0x8DE0 -#define GL_MAX_GEOMETRY_TOTAL_OUTPUT_COMPONENTS_EXT 0x8DE1 -/* reuse GL_LINES_ADJACENCY_EXT */ -/* reuse GL_LINE_STRIP_ADJACENCY_EXT */ -/* reuse GL_TRIANGLES_ADJACENCY_EXT */ -/* reuse GL_TRIANGLE_STRIP_ADJACENCY_EXT */ -/* reuse GL_FRAMEBUFFER_INCOMPLETE_LAYER_TARGETS_EXT */ -/* reuse GL_FRAMEBUFFER_INCOMPLETE_LAYER_COUNT_EXT */ -/* reuse GL_FRAMEBUFFER_ATTACHMENT_LAYERED_EXT */ -/* reuse GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_LAYER_EXT */ -/* reuse GL_PROGRAM_POINT_SIZE_EXT */ -#endif - -#ifndef GL_NV_vertex_program4 -#define GL_VERTEX_ATTRIB_ARRAY_INTEGER_NV 0x88FD -#endif - -#ifndef GL_EXT_gpu_shader4 -#define GL_SAMPLER_1D_ARRAY_EXT 0x8DC0 -#define GL_SAMPLER_2D_ARRAY_EXT 0x8DC1 -#define GL_SAMPLER_BUFFER_EXT 0x8DC2 -#define GL_SAMPLER_1D_ARRAY_SHADOW_EXT 0x8DC3 -#define GL_SAMPLER_2D_ARRAY_SHADOW_EXT 0x8DC4 -#define GL_SAMPLER_CUBE_SHADOW_EXT 0x8DC5 -#define GL_UNSIGNED_INT_VEC2_EXT 0x8DC6 -#define GL_UNSIGNED_INT_VEC3_EXT 0x8DC7 -#define GL_UNSIGNED_INT_VEC4_EXT 0x8DC8 -#define GL_INT_SAMPLER_1D_EXT 0x8DC9 -#define GL_INT_SAMPLER_2D_EXT 0x8DCA -#define GL_INT_SAMPLER_3D_EXT 0x8DCB -#define GL_INT_SAMPLER_CUBE_EXT 0x8DCC -#define GL_INT_SAMPLER_2D_RECT_EXT 0x8DCD -#define GL_INT_SAMPLER_1D_ARRAY_EXT 0x8DCE -#define GL_INT_SAMPLER_2D_ARRAY_EXT 0x8DCF -#define GL_INT_SAMPLER_BUFFER_EXT 0x8DD0 -#define GL_UNSIGNED_INT_SAMPLER_1D_EXT 0x8DD1 -#define GL_UNSIGNED_INT_SAMPLER_2D_EXT 0x8DD2 -#define GL_UNSIGNED_INT_SAMPLER_3D_EXT 0x8DD3 -#define GL_UNSIGNED_INT_SAMPLER_CUBE_EXT 0x8DD4 -#define GL_UNSIGNED_INT_SAMPLER_2D_RECT_EXT 0x8DD5 -#define GL_UNSIGNED_INT_SAMPLER_1D_ARRAY_EXT 0x8DD6 -#define GL_UNSIGNED_INT_SAMPLER_2D_ARRAY_EXT 0x8DD7 -#define GL_UNSIGNED_INT_SAMPLER_BUFFER_EXT 0x8DD8 -#endif - -#ifndef GL_EXT_draw_instanced -#endif - -#ifndef GL_EXT_packed_float -#define GL_R11F_G11F_B10F_EXT 0x8C3A -#define GL_UNSIGNED_INT_10F_11F_11F_REV_EXT 0x8C3B -#define GL_RGBA_SIGNED_COMPONENTS_EXT 0x8C3C -#endif - -#ifndef GL_EXT_texture_array -#define GL_TEXTURE_1D_ARRAY_EXT 0x8C18 -#define GL_PROXY_TEXTURE_1D_ARRAY_EXT 0x8C19 -#define GL_TEXTURE_2D_ARRAY_EXT 0x8C1A -#define GL_PROXY_TEXTURE_2D_ARRAY_EXT 0x8C1B -#define GL_TEXTURE_BINDING_1D_ARRAY_EXT 0x8C1C -#define GL_TEXTURE_BINDING_2D_ARRAY_EXT 0x8C1D -#define GL_MAX_ARRAY_TEXTURE_LAYERS_EXT 0x88FF -#define GL_COMPARE_REF_DEPTH_TO_TEXTURE_EXT 0x884E -/* reuse GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_LAYER_EXT */ -#endif - -#ifndef GL_EXT_texture_buffer_object -#define GL_TEXTURE_BUFFER_EXT 0x8C2A -#define GL_MAX_TEXTURE_BUFFER_SIZE_EXT 0x8C2B -#define GL_TEXTURE_BINDING_BUFFER_EXT 0x8C2C -#define GL_TEXTURE_BUFFER_DATA_STORE_BINDING_EXT 0x8C2D -#define GL_TEXTURE_BUFFER_FORMAT_EXT 0x8C2E -#endif - -#ifndef GL_EXT_texture_compression_latc -#define GL_COMPRESSED_LUMINANCE_LATC1_EXT 0x8C70 -#define GL_COMPRESSED_SIGNED_LUMINANCE_LATC1_EXT 0x8C71 -#define GL_COMPRESSED_LUMINANCE_ALPHA_LATC2_EXT 0x8C72 -#define GL_COMPRESSED_SIGNED_LUMINANCE_ALPHA_LATC2_EXT 0x8C73 -#endif - -#ifndef GL_EXT_texture_compression_rgtc -#define GL_COMPRESSED_RED_RGTC1_EXT 0x8DBB -#define GL_COMPRESSED_SIGNED_RED_RGTC1_EXT 0x8DBC -#define GL_COMPRESSED_RED_GREEN_RGTC2_EXT 0x8DBD -#define GL_COMPRESSED_SIGNED_RED_GREEN_RGTC2_EXT 0x8DBE -#endif - -#ifndef GL_EXT_texture_shared_exponent -#define GL_RGB9_E5_EXT 0x8C3D -#define GL_UNSIGNED_INT_5_9_9_9_REV_EXT 0x8C3E -#define GL_TEXTURE_SHARED_SIZE_EXT 0x8C3F -#endif - -#ifndef GL_NV_depth_buffer_float -#define GL_DEPTH_COMPONENT32F_NV 0x8DAB -#define GL_DEPTH32F_STENCIL8_NV 0x8DAC -#define GL_FLOAT_32_UNSIGNED_INT_24_8_REV_NV 0x8DAD -#define GL_DEPTH_BUFFER_FLOAT_MODE_NV 0x8DAF -#endif - -#ifndef GL_NV_fragment_program4 -#endif - -#ifndef GL_NV_framebuffer_multisample_coverage -#define GL_RENDERBUFFER_COVERAGE_SAMPLES_NV 0x8CAB -#define GL_RENDERBUFFER_COLOR_SAMPLES_NV 0x8E10 -#define GL_MAX_MULTISAMPLE_COVERAGE_MODES_NV 0x8E11 -#define GL_MULTISAMPLE_COVERAGE_MODES_NV 0x8E12 -#endif - -#ifndef GL_EXT_framebuffer_sRGB -#define GL_FRAMEBUFFER_SRGB_EXT 0x8DB9 -#define GL_FRAMEBUFFER_SRGB_CAPABLE_EXT 0x8DBA -#endif - -#ifndef GL_NV_geometry_shader4 -#endif - -#ifndef GL_NV_parameter_buffer_object -#define GL_MAX_PROGRAM_PARAMETER_BUFFER_BINDINGS_NV 0x8DA0 -#define GL_MAX_PROGRAM_PARAMETER_BUFFER_SIZE_NV 0x8DA1 -#define GL_VERTEX_PROGRAM_PARAMETER_BUFFER_NV 0x8DA2 -#define GL_GEOMETRY_PROGRAM_PARAMETER_BUFFER_NV 0x8DA3 -#define GL_FRAGMENT_PROGRAM_PARAMETER_BUFFER_NV 0x8DA4 -#endif - -#ifndef GL_EXT_draw_buffers2 -#endif - -#ifndef GL_NV_transform_feedback -#define GL_BACK_PRIMARY_COLOR_NV 0x8C77 -#define GL_BACK_SECONDARY_COLOR_NV 0x8C78 -#define GL_TEXTURE_COORD_NV 0x8C79 -#define GL_CLIP_DISTANCE_NV 0x8C7A -#define GL_VERTEX_ID_NV 0x8C7B -#define GL_PRIMITIVE_ID_NV 0x8C7C -#define GL_GENERIC_ATTRIB_NV 0x8C7D -#define GL_TRANSFORM_FEEDBACK_ATTRIBS_NV 0x8C7E -#define GL_TRANSFORM_FEEDBACK_BUFFER_MODE_NV 0x8C7F -#define GL_MAX_TRANSFORM_FEEDBACK_SEPARATE_COMPONENTS_NV 0x8C80 -#define GL_ACTIVE_VARYINGS_NV 0x8C81 -#define GL_ACTIVE_VARYING_MAX_LENGTH_NV 0x8C82 -#define GL_TRANSFORM_FEEDBACK_VARYINGS_NV 0x8C83 -#define GL_TRANSFORM_FEEDBACK_BUFFER_START_NV 0x8C84 -#define GL_TRANSFORM_FEEDBACK_BUFFER_SIZE_NV 0x8C85 -#define GL_TRANSFORM_FEEDBACK_RECORD_NV 0x8C86 -#define GL_PRIMITIVES_GENERATED_NV 0x8C87 -#define GL_TRANSFORM_FEEDBACK_PRIMITIVES_WRITTEN_NV 0x8C88 -#define GL_RASTERIZER_DISCARD_NV 0x8C89 -#define GL_MAX_TRANSFORM_FEEDBACK_INTERLEAVED_ATTRIBS_NV 0x8C8A -#define GL_MAX_TRANSFORM_FEEDBACK_SEPARATE_ATTRIBS_NV 0x8C8B -#define GL_INTERLEAVED_ATTRIBS_NV 0x8C8C -#define GL_SEPARATE_ATTRIBS_NV 0x8C8D -#define GL_TRANSFORM_FEEDBACK_BUFFER_NV 0x8C8E -#define GL_TRANSFORM_FEEDBACK_BUFFER_BINDING_NV 0x8C8F -#endif - -#ifndef GL_EXT_bindable_uniform -#define GL_MAX_VERTEX_BINDABLE_UNIFORMS_EXT 0x8DE2 -#define GL_MAX_FRAGMENT_BINDABLE_UNIFORMS_EXT 0x8DE3 -#define GL_MAX_GEOMETRY_BINDABLE_UNIFORMS_EXT 0x8DE4 -#define GL_MAX_BINDABLE_UNIFORM_SIZE_EXT 0x8DED -#define GL_UNIFORM_BUFFER_EXT 0x8DEE -#define GL_UNIFORM_BUFFER_BINDING_EXT 0x8DEF -#endif - -#ifndef GL_EXT_texture_integer -#define GL_RGBA32UI_EXT 0x8D70 -#define GL_RGB32UI_EXT 0x8D71 -#define GL_ALPHA32UI_EXT 0x8D72 -#define GL_INTENSITY32UI_EXT 0x8D73 -#define GL_LUMINANCE32UI_EXT 0x8D74 -#define GL_LUMINANCE_ALPHA32UI_EXT 0x8D75 -#define GL_RGBA16UI_EXT 0x8D76 -#define GL_RGB16UI_EXT 0x8D77 -#define GL_ALPHA16UI_EXT 0x8D78 -#define GL_INTENSITY16UI_EXT 0x8D79 -#define GL_LUMINANCE16UI_EXT 0x8D7A -#define GL_LUMINANCE_ALPHA16UI_EXT 0x8D7B -#define GL_RGBA8UI_EXT 0x8D7C -#define GL_RGB8UI_EXT 0x8D7D -#define GL_ALPHA8UI_EXT 0x8D7E -#define GL_INTENSITY8UI_EXT 0x8D7F -#define GL_LUMINANCE8UI_EXT 0x8D80 -#define GL_LUMINANCE_ALPHA8UI_EXT 0x8D81 -#define GL_RGBA32I_EXT 0x8D82 -#define GL_RGB32I_EXT 0x8D83 -#define GL_ALPHA32I_EXT 0x8D84 -#define GL_INTENSITY32I_EXT 0x8D85 -#define GL_LUMINANCE32I_EXT 0x8D86 -#define GL_LUMINANCE_ALPHA32I_EXT 0x8D87 -#define GL_RGBA16I_EXT 0x8D88 -#define GL_RGB16I_EXT 0x8D89 -#define GL_ALPHA16I_EXT 0x8D8A -#define GL_INTENSITY16I_EXT 0x8D8B -#define GL_LUMINANCE16I_EXT 0x8D8C -#define GL_LUMINANCE_ALPHA16I_EXT 0x8D8D -#define GL_RGBA8I_EXT 0x8D8E -#define GL_RGB8I_EXT 0x8D8F -#define GL_ALPHA8I_EXT 0x8D90 -#define GL_INTENSITY8I_EXT 0x8D91 -#define GL_LUMINANCE8I_EXT 0x8D92 -#define GL_LUMINANCE_ALPHA8I_EXT 0x8D93 -#define GL_RED_INTEGER_EXT 0x8D94 -#define GL_GREEN_INTEGER_EXT 0x8D95 -#define GL_BLUE_INTEGER_EXT 0x8D96 -#define GL_ALPHA_INTEGER_EXT 0x8D97 -#define GL_RGB_INTEGER_EXT 0x8D98 -#define GL_RGBA_INTEGER_EXT 0x8D99 -#define GL_BGR_INTEGER_EXT 0x8D9A -#define GL_BGRA_INTEGER_EXT 0x8D9B -#define GL_LUMINANCE_INTEGER_EXT 0x8D9C -#define GL_LUMINANCE_ALPHA_INTEGER_EXT 0x8D9D -#define GL_RGBA_INTEGER_MODE_EXT 0x8D9E -#endif - - -/*************************************************************/ - -#include -#ifndef GL_VERSION_2_0 -/* GL type for program/shader text */ -typedef char GLchar; /* native character */ -#endif - -#ifndef GL_VERSION_1_5 -/* GL types for handling large vertex buffer objects */ -typedef ptrdiff_t GLintptr; -typedef ptrdiff_t GLsizeiptr; -#endif - -#ifndef GL_ARB_vertex_buffer_object -/* GL types for handling large vertex buffer objects */ -typedef ptrdiff_t GLintptrARB; -typedef ptrdiff_t GLsizeiptrARB; -#endif - -#ifndef GL_ARB_shader_objects -/* GL types for handling shader object handles and program/shader text */ -typedef char GLcharARB; /* native character */ -typedef unsigned int GLhandleARB; /* shader object handle */ -#endif - -/* GL types for "half" precision (s10e5) float data in host memory */ -#ifndef GL_ARB_half_float_pixel -typedef unsigned short GLhalfARB; -#endif - -#ifndef GL_NV_half_float -typedef unsigned short GLhalfNV; -#endif - -#ifndef GLEXT_64_TYPES_DEFINED -/* This code block is duplicated in glext.h, so must be protected */ -#define GLEXT_64_TYPES_DEFINED -/* Define int32_t, int64_t, and uint64_t types for UST/MSC */ -/* (as used in the GL_EXT_timer_query extension). */ -#if defined(__STDC_VERSION__) && __STDC_VERSION__ >= 199901L -#include -#elif defined(__sun__) -#include -#if defined(__STDC__) -#if defined(__arch64__) -typedef long int int64_t; -typedef unsigned long int uint64_t; -#else -typedef long long int int64_t; -typedef unsigned long long int uint64_t; -#endif /* __arch64__ */ -#endif /* __STDC__ */ -#elif defined( __VMS ) -#include -#elif defined(__SCO__) || defined(__USLC__) -#include -#elif defined(__UNIXOS2__) || defined(__SOL64__) -typedef long int int32_t; -typedef long long int int64_t; -typedef unsigned long long int uint64_t; -#elif defined(_WIN32) && defined(__GNUC__) -#include -#elif defined(_WIN32) -typedef __int32 int32_t; -typedef __int64 int64_t; -typedef unsigned __int64 uint64_t; -#else -#include /* Fallback option */ -#endif -#endif - -#ifndef GL_EXT_timer_query -typedef int64_t GLint64EXT; -typedef uint64_t GLuint64EXT; -#endif - -#ifndef GL_VERSION_1_2 -#define GL_VERSION_1_2 1 -#ifdef GL_GLEXT_PROTOTYPES -GLAPI void APIENTRY glBlendColor (GLclampf, GLclampf, GLclampf, GLclampf); -GLAPI void APIENTRY glBlendEquation (GLenum); -GLAPI void APIENTRY glDrawRangeElements (GLenum, GLuint, GLuint, GLsizei, GLenum, const GLvoid *); -GLAPI void APIENTRY glColorTable (GLenum, GLenum, GLsizei, GLenum, GLenum, const GLvoid *); -GLAPI void APIENTRY glColorTableParameterfv (GLenum, GLenum, const GLfloat *); -GLAPI void APIENTRY glColorTableParameteriv (GLenum, GLenum, const GLint *); -GLAPI void APIENTRY glCopyColorTable (GLenum, GLenum, GLint, GLint, GLsizei); -GLAPI void APIENTRY glGetColorTable (GLenum, GLenum, GLenum, GLvoid *); -GLAPI void APIENTRY glGetColorTableParameterfv (GLenum, GLenum, GLfloat *); -GLAPI void APIENTRY glGetColorTableParameteriv (GLenum, GLenum, GLint *); -GLAPI void APIENTRY glColorSubTable (GLenum, GLsizei, GLsizei, GLenum, GLenum, const GLvoid *); -GLAPI void APIENTRY glCopyColorSubTable (GLenum, GLsizei, GLint, GLint, GLsizei); -GLAPI void APIENTRY glConvolutionFilter1D (GLenum, GLenum, GLsizei, GLenum, GLenum, const GLvoid *); -GLAPI void APIENTRY glConvolutionFilter2D (GLenum, GLenum, GLsizei, GLsizei, GLenum, GLenum, const GLvoid *); -GLAPI void APIENTRY glConvolutionParameterf (GLenum, GLenum, GLfloat); -GLAPI void APIENTRY glConvolutionParameterfv (GLenum, GLenum, const GLfloat *); -GLAPI void APIENTRY glConvolutionParameteri (GLenum, GLenum, GLint); -GLAPI void APIENTRY glConvolutionParameteriv (GLenum, GLenum, const GLint *); -GLAPI void APIENTRY glCopyConvolutionFilter1D (GLenum, GLenum, GLint, GLint, GLsizei); -GLAPI void APIENTRY glCopyConvolutionFilter2D (GLenum, GLenum, GLint, GLint, GLsizei, GLsizei); -GLAPI void APIENTRY glGetConvolutionFilter (GLenum, GLenum, GLenum, GLvoid *); -GLAPI void APIENTRY glGetConvolutionParameterfv (GLenum, GLenum, GLfloat *); -GLAPI void APIENTRY glGetConvolutionParameteriv (GLenum, GLenum, GLint *); -GLAPI void APIENTRY glGetSeparableFilter (GLenum, GLenum, GLenum, GLvoid *, GLvoid *, GLvoid *); -GLAPI void APIENTRY glSeparableFilter2D (GLenum, GLenum, GLsizei, GLsizei, GLenum, GLenum, const GLvoid *, const GLvoid *); -GLAPI void APIENTRY glGetHistogram (GLenum, GLboolean, GLenum, GLenum, GLvoid *); -GLAPI void APIENTRY glGetHistogramParameterfv (GLenum, GLenum, GLfloat *); -GLAPI void APIENTRY glGetHistogramParameteriv (GLenum, GLenum, GLint *); -GLAPI void APIENTRY glGetMinmax (GLenum, GLboolean, GLenum, GLenum, GLvoid *); -GLAPI void APIENTRY glGetMinmaxParameterfv (GLenum, GLenum, GLfloat *); -GLAPI void APIENTRY glGetMinmaxParameteriv (GLenum, GLenum, GLint *); -GLAPI void APIENTRY glHistogram (GLenum, GLsizei, GLenum, GLboolean); -GLAPI void APIENTRY glMinmax (GLenum, GLenum, GLboolean); -GLAPI void APIENTRY glResetHistogram (GLenum); -GLAPI void APIENTRY glResetMinmax (GLenum); -GLAPI void APIENTRY glTexImage3D (GLenum, GLint, GLint, GLsizei, GLsizei, GLsizei, GLint, GLenum, GLenum, const GLvoid *); -GLAPI void APIENTRY glTexSubImage3D (GLenum, GLint, GLint, GLint, GLint, GLsizei, GLsizei, GLsizei, GLenum, GLenum, const GLvoid *); -GLAPI void APIENTRY glCopyTexSubImage3D (GLenum, GLint, GLint, GLint, GLint, GLint, GLint, GLsizei, GLsizei); -#endif /* GL_GLEXT_PROTOTYPES */ -typedef void (APIENTRYP PFNGLBLENDCOLORPROC) (GLclampf red, GLclampf green, GLclampf blue, GLclampf alpha); -typedef void (APIENTRYP PFNGLBLENDEQUATIONPROC) (GLenum mode); -typedef void (APIENTRYP PFNGLDRAWRANGEELEMENTSPROC) (GLenum mode, GLuint start, GLuint end, GLsizei count, GLenum type, const GLvoid *indices); -typedef void (APIENTRYP PFNGLCOLORTABLEPROC) (GLenum target, GLenum internalformat, GLsizei width, GLenum format, GLenum type, const GLvoid *table); -typedef void (APIENTRYP PFNGLCOLORTABLEPARAMETERFVPROC) (GLenum target, GLenum pname, const GLfloat *params); -typedef void (APIENTRYP PFNGLCOLORTABLEPARAMETERIVPROC) (GLenum target, GLenum pname, const GLint *params); -typedef void (APIENTRYP PFNGLCOPYCOLORTABLEPROC) (GLenum target, GLenum internalformat, GLint x, GLint y, GLsizei width); -typedef void (APIENTRYP PFNGLGETCOLORTABLEPROC) (GLenum target, GLenum format, GLenum type, GLvoid *table); -typedef void (APIENTRYP PFNGLGETCOLORTABLEPARAMETERFVPROC) (GLenum target, GLenum pname, GLfloat *params); -typedef void (APIENTRYP PFNGLGETCOLORTABLEPARAMETERIVPROC) (GLenum target, GLenum pname, GLint *params); -typedef void (APIENTRYP PFNGLCOLORSUBTABLEPROC) (GLenum target, GLsizei start, GLsizei count, GLenum format, GLenum type, const GLvoid *data); -typedef void (APIENTRYP PFNGLCOPYCOLORSUBTABLEPROC) (GLenum target, GLsizei start, GLint x, GLint y, GLsizei width); -typedef void (APIENTRYP PFNGLCONVOLUTIONFILTER1DPROC) (GLenum target, GLenum internalformat, GLsizei width, GLenum format, GLenum type, const GLvoid *image); -typedef void (APIENTRYP PFNGLCONVOLUTIONFILTER2DPROC) (GLenum target, GLenum internalformat, GLsizei width, GLsizei height, GLenum format, GLenum type, const GLvoid *image); -typedef void (APIENTRYP PFNGLCONVOLUTIONPARAMETERFPROC) (GLenum target, GLenum pname, GLfloat params); -typedef void (APIENTRYP PFNGLCONVOLUTIONPARAMETERFVPROC) (GLenum target, GLenum pname, const GLfloat *params); -typedef void (APIENTRYP PFNGLCONVOLUTIONPARAMETERIPROC) (GLenum target, GLenum pname, GLint params); -typedef void (APIENTRYP PFNGLCONVOLUTIONPARAMETERIVPROC) (GLenum target, GLenum pname, const GLint *params); -typedef void (APIENTRYP PFNGLCOPYCONVOLUTIONFILTER1DPROC) (GLenum target, GLenum internalformat, GLint x, GLint y, GLsizei width); -typedef void (APIENTRYP PFNGLCOPYCONVOLUTIONFILTER2DPROC) (GLenum target, GLenum internalformat, GLint x, GLint y, GLsizei width, GLsizei height); -typedef void (APIENTRYP PFNGLGETCONVOLUTIONFILTERPROC) (GLenum target, GLenum format, GLenum type, GLvoid *image); -typedef void (APIENTRYP PFNGLGETCONVOLUTIONPARAMETERFVPROC) (GLenum target, GLenum pname, GLfloat *params); -typedef void (APIENTRYP PFNGLGETCONVOLUTIONPARAMETERIVPROC) (GLenum target, GLenum pname, GLint *params); -typedef void (APIENTRYP PFNGLGETSEPARABLEFILTERPROC) (GLenum target, GLenum format, GLenum type, GLvoid *row, GLvoid *column, GLvoid *span); -typedef void (APIENTRYP PFNGLSEPARABLEFILTER2DPROC) (GLenum target, GLenum internalformat, GLsizei width, GLsizei height, GLenum format, GLenum type, const GLvoid *row, const GLvoid *column); -typedef void (APIENTRYP PFNGLGETHISTOGRAMPROC) (GLenum target, GLboolean reset, GLenum format, GLenum type, GLvoid *values); -typedef void (APIENTRYP PFNGLGETHISTOGRAMPARAMETERFVPROC) (GLenum target, GLenum pname, GLfloat *params); -typedef void (APIENTRYP PFNGLGETHISTOGRAMPARAMETERIVPROC) (GLenum target, GLenum pname, GLint *params); -typedef void (APIENTRYP PFNGLGETMINMAXPROC) (GLenum target, GLboolean reset, GLenum format, GLenum type, GLvoid *values); -typedef void (APIENTRYP PFNGLGETMINMAXPARAMETERFVPROC) (GLenum target, GLenum pname, GLfloat *params); -typedef void (APIENTRYP PFNGLGETMINMAXPARAMETERIVPROC) (GLenum target, GLenum pname, GLint *params); -typedef void (APIENTRYP PFNGLHISTOGRAMPROC) (GLenum target, GLsizei width, GLenum internalformat, GLboolean sink); -typedef void (APIENTRYP PFNGLMINMAXPROC) (GLenum target, GLenum internalformat, GLboolean sink); -typedef void (APIENTRYP PFNGLRESETHISTOGRAMPROC) (GLenum target); -typedef void (APIENTRYP PFNGLRESETMINMAXPROC) (GLenum target); -typedef void (APIENTRYP PFNGLTEXIMAGE3DPROC) (GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLenum format, GLenum type, const GLvoid *pixels); -typedef void (APIENTRYP PFNGLTEXSUBIMAGE3DPROC) (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, const GLvoid *pixels); -typedef void (APIENTRYP PFNGLCOPYTEXSUBIMAGE3DPROC) (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLint x, GLint y, GLsizei width, GLsizei height); -#endif - -#ifndef GL_VERSION_1_3 -#define GL_VERSION_1_3 1 -#ifdef GL_GLEXT_PROTOTYPES -GLAPI void APIENTRY glActiveTexture (GLenum); -GLAPI void APIENTRY glClientActiveTexture (GLenum); -GLAPI void APIENTRY glMultiTexCoord1d (GLenum, GLdouble); -GLAPI void APIENTRY glMultiTexCoord1dv (GLenum, const GLdouble *); -GLAPI void APIENTRY glMultiTexCoord1f (GLenum, GLfloat); -GLAPI void APIENTRY glMultiTexCoord1fv (GLenum, const GLfloat *); -GLAPI void APIENTRY glMultiTexCoord1i (GLenum, GLint); -GLAPI void APIENTRY glMultiTexCoord1iv (GLenum, const GLint *); -GLAPI void APIENTRY glMultiTexCoord1s (GLenum, GLshort); -GLAPI void APIENTRY glMultiTexCoord1sv (GLenum, const GLshort *); -GLAPI void APIENTRY glMultiTexCoord2d (GLenum, GLdouble, GLdouble); -GLAPI void APIENTRY glMultiTexCoord2dv (GLenum, const GLdouble *); -GLAPI void APIENTRY glMultiTexCoord2f (GLenum, GLfloat, GLfloat); -GLAPI void APIENTRY glMultiTexCoord2fv (GLenum, const GLfloat *); -GLAPI void APIENTRY glMultiTexCoord2i (GLenum, GLint, GLint); -GLAPI void APIENTRY glMultiTexCoord2iv (GLenum, const GLint *); -GLAPI void APIENTRY glMultiTexCoord2s (GLenum, GLshort, GLshort); -GLAPI void APIENTRY glMultiTexCoord2sv (GLenum, const GLshort *); -GLAPI void APIENTRY glMultiTexCoord3d (GLenum, GLdouble, GLdouble, GLdouble); -GLAPI void APIENTRY glMultiTexCoord3dv (GLenum, const GLdouble *); -GLAPI void APIENTRY glMultiTexCoord3f (GLenum, GLfloat, GLfloat, GLfloat); -GLAPI void APIENTRY glMultiTexCoord3fv (GLenum, const GLfloat *); -GLAPI void APIENTRY glMultiTexCoord3i (GLenum, GLint, GLint, GLint); -GLAPI void APIENTRY glMultiTexCoord3iv (GLenum, const GLint *); -GLAPI void APIENTRY glMultiTexCoord3s (GLenum, GLshort, GLshort, GLshort); -GLAPI void APIENTRY glMultiTexCoord3sv (GLenum, const GLshort *); -GLAPI void APIENTRY glMultiTexCoord4d (GLenum, GLdouble, GLdouble, GLdouble, GLdouble); -GLAPI void APIENTRY glMultiTexCoord4dv (GLenum, const GLdouble *); -GLAPI void APIENTRY glMultiTexCoord4f (GLenum, GLfloat, GLfloat, GLfloat, GLfloat); -GLAPI void APIENTRY glMultiTexCoord4fv (GLenum, const GLfloat *); -GLAPI void APIENTRY glMultiTexCoord4i (GLenum, GLint, GLint, GLint, GLint); -GLAPI void APIENTRY glMultiTexCoord4iv (GLenum, const GLint *); -GLAPI void APIENTRY glMultiTexCoord4s (GLenum, GLshort, GLshort, GLshort, GLshort); -GLAPI void APIENTRY glMultiTexCoord4sv (GLenum, const GLshort *); -GLAPI void APIENTRY glLoadTransposeMatrixf (const GLfloat *); -GLAPI void APIENTRY glLoadTransposeMatrixd (const GLdouble *); -GLAPI void APIENTRY glMultTransposeMatrixf (const GLfloat *); -GLAPI void APIENTRY glMultTransposeMatrixd (const GLdouble *); -GLAPI void APIENTRY glSampleCoverage (GLclampf, GLboolean); -GLAPI void APIENTRY glCompressedTexImage3D (GLenum, GLint, GLenum, GLsizei, GLsizei, GLsizei, GLint, GLsizei, const GLvoid *); -GLAPI void APIENTRY glCompressedTexImage2D (GLenum, GLint, GLenum, GLsizei, GLsizei, GLint, GLsizei, const GLvoid *); -GLAPI void APIENTRY glCompressedTexImage1D (GLenum, GLint, GLenum, GLsizei, GLint, GLsizei, const GLvoid *); -GLAPI void APIENTRY glCompressedTexSubImage3D (GLenum, GLint, GLint, GLint, GLint, GLsizei, GLsizei, GLsizei, GLenum, GLsizei, const GLvoid *); -GLAPI void APIENTRY glCompressedTexSubImage2D (GLenum, GLint, GLint, GLint, GLsizei, GLsizei, GLenum, GLsizei, const GLvoid *); -GLAPI void APIENTRY glCompressedTexSubImage1D (GLenum, GLint, GLint, GLsizei, GLenum, GLsizei, const GLvoid *); -GLAPI void APIENTRY glGetCompressedTexImage (GLenum, GLint, GLvoid *); -#endif /* GL_GLEXT_PROTOTYPES */ -typedef void (APIENTRYP PFNGLACTIVETEXTUREPROC) (GLenum texture); -typedef void (APIENTRYP PFNGLCLIENTACTIVETEXTUREPROC) (GLenum texture); -typedef void (APIENTRYP PFNGLMULTITEXCOORD1DPROC) (GLenum target, GLdouble s); -typedef void (APIENTRYP PFNGLMULTITEXCOORD1DVPROC) (GLenum target, const GLdouble *v); -typedef void (APIENTRYP PFNGLMULTITEXCOORD1FPROC) (GLenum target, GLfloat s); -typedef void (APIENTRYP PFNGLMULTITEXCOORD1FVPROC) (GLenum target, const GLfloat *v); -typedef void (APIENTRYP PFNGLMULTITEXCOORD1IPROC) (GLenum target, GLint s); -typedef void (APIENTRYP PFNGLMULTITEXCOORD1IVPROC) (GLenum target, const GLint *v); -typedef void (APIENTRYP PFNGLMULTITEXCOORD1SPROC) (GLenum target, GLshort s); -typedef void (APIENTRYP PFNGLMULTITEXCOORD1SVPROC) (GLenum target, const GLshort *v); -typedef void (APIENTRYP PFNGLMULTITEXCOORD2DPROC) (GLenum target, GLdouble s, GLdouble t); -typedef void (APIENTRYP PFNGLMULTITEXCOORD2DVPROC) (GLenum target, const GLdouble *v); -typedef void (APIENTRYP PFNGLMULTITEXCOORD2FPROC) (GLenum target, GLfloat s, GLfloat t); -typedef void (APIENTRYP PFNGLMULTITEXCOORD2FVPROC) (GLenum target, const GLfloat *v); -typedef void (APIENTRYP PFNGLMULTITEXCOORD2IPROC) (GLenum target, GLint s, GLint t); -typedef void (APIENTRYP PFNGLMULTITEXCOORD2IVPROC) (GLenum target, const GLint *v); -typedef void (APIENTRYP PFNGLMULTITEXCOORD2SPROC) (GLenum target, GLshort s, GLshort t); -typedef void (APIENTRYP PFNGLMULTITEXCOORD2SVPROC) (GLenum target, const GLshort *v); -typedef void (APIENTRYP PFNGLMULTITEXCOORD3DPROC) (GLenum target, GLdouble s, GLdouble t, GLdouble r); -typedef void (APIENTRYP PFNGLMULTITEXCOORD3DVPROC) (GLenum target, const GLdouble *v); -typedef void (APIENTRYP PFNGLMULTITEXCOORD3FPROC) (GLenum target, GLfloat s, GLfloat t, GLfloat r); -typedef void (APIENTRYP PFNGLMULTITEXCOORD3FVPROC) (GLenum target, const GLfloat *v); -typedef void (APIENTRYP PFNGLMULTITEXCOORD3IPROC) (GLenum target, GLint s, GLint t, GLint r); -typedef void (APIENTRYP PFNGLMULTITEXCOORD3IVPROC) (GLenum target, const GLint *v); -typedef void (APIENTRYP PFNGLMULTITEXCOORD3SPROC) (GLenum target, GLshort s, GLshort t, GLshort r); -typedef void (APIENTRYP PFNGLMULTITEXCOORD3SVPROC) (GLenum target, const GLshort *v); -typedef void (APIENTRYP PFNGLMULTITEXCOORD4DPROC) (GLenum target, GLdouble s, GLdouble t, GLdouble r, GLdouble q); -typedef void (APIENTRYP PFNGLMULTITEXCOORD4DVPROC) (GLenum target, const GLdouble *v); -typedef void (APIENTRYP PFNGLMULTITEXCOORD4FPROC) (GLenum target, GLfloat s, GLfloat t, GLfloat r, GLfloat q); -typedef void (APIENTRYP PFNGLMULTITEXCOORD4FVPROC) (GLenum target, const GLfloat *v); -typedef void (APIENTRYP PFNGLMULTITEXCOORD4IPROC) (GLenum target, GLint s, GLint t, GLint r, GLint q); -typedef void (APIENTRYP PFNGLMULTITEXCOORD4IVPROC) (GLenum target, const GLint *v); -typedef void (APIENTRYP PFNGLMULTITEXCOORD4SPROC) (GLenum target, GLshort s, GLshort t, GLshort r, GLshort q); -typedef void (APIENTRYP PFNGLMULTITEXCOORD4SVPROC) (GLenum target, const GLshort *v); -typedef void (APIENTRYP PFNGLLOADTRANSPOSEMATRIXFPROC) (const GLfloat *m); -typedef void (APIENTRYP PFNGLLOADTRANSPOSEMATRIXDPROC) (const GLdouble *m); -typedef void (APIENTRYP PFNGLMULTTRANSPOSEMATRIXFPROC) (const GLfloat *m); -typedef void (APIENTRYP PFNGLMULTTRANSPOSEMATRIXDPROC) (const GLdouble *m); -typedef void (APIENTRYP PFNGLSAMPLECOVERAGEPROC) (GLclampf value, GLboolean invert); -typedef void (APIENTRYP PFNGLCOMPRESSEDTEXIMAGE3DPROC) (GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLsizei imageSize, const GLvoid *data); -typedef void (APIENTRYP PFNGLCOMPRESSEDTEXIMAGE2DPROC) (GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLint border, GLsizei imageSize, const GLvoid *data); -typedef void (APIENTRYP PFNGLCOMPRESSEDTEXIMAGE1DPROC) (GLenum target, GLint level, GLenum internalformat, GLsizei width, GLint border, GLsizei imageSize, const GLvoid *data); -typedef void (APIENTRYP PFNGLCOMPRESSEDTEXSUBIMAGE3DPROC) (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLsizei imageSize, const GLvoid *data); -typedef void (APIENTRYP PFNGLCOMPRESSEDTEXSUBIMAGE2DPROC) (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLsizei imageSize, const GLvoid *data); -typedef void (APIENTRYP PFNGLCOMPRESSEDTEXSUBIMAGE1DPROC) (GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLsizei imageSize, const GLvoid *data); -typedef void (APIENTRYP PFNGLGETCOMPRESSEDTEXIMAGEPROC) (GLenum target, GLint level, GLvoid *img); -#endif - -#ifndef GL_VERSION_1_4 -#define GL_VERSION_1_4 1 -#ifdef GL_GLEXT_PROTOTYPES -GLAPI void APIENTRY glBlendFuncSeparate (GLenum, GLenum, GLenum, GLenum); -GLAPI void APIENTRY glFogCoordf (GLfloat); -GLAPI void APIENTRY glFogCoordfv (const GLfloat *); -GLAPI void APIENTRY glFogCoordd (GLdouble); -GLAPI void APIENTRY glFogCoorddv (const GLdouble *); -GLAPI void APIENTRY glFogCoordPointer (GLenum, GLsizei, const GLvoid *); -GLAPI void APIENTRY glMultiDrawArrays (GLenum, GLint *, GLsizei *, GLsizei); -GLAPI void APIENTRY glMultiDrawElements (GLenum, const GLsizei *, GLenum, const GLvoid* *, GLsizei); -GLAPI void APIENTRY glPointParameterf (GLenum, GLfloat); -GLAPI void APIENTRY glPointParameterfv (GLenum, const GLfloat *); -GLAPI void APIENTRY glPointParameteri (GLenum, GLint); -GLAPI void APIENTRY glPointParameteriv (GLenum, const GLint *); -GLAPI void APIENTRY glSecondaryColor3b (GLbyte, GLbyte, GLbyte); -GLAPI void APIENTRY glSecondaryColor3bv (const GLbyte *); -GLAPI void APIENTRY glSecondaryColor3d (GLdouble, GLdouble, GLdouble); -GLAPI void APIENTRY glSecondaryColor3dv (const GLdouble *); -GLAPI void APIENTRY glSecondaryColor3f (GLfloat, GLfloat, GLfloat); -GLAPI void APIENTRY glSecondaryColor3fv (const GLfloat *); -GLAPI void APIENTRY glSecondaryColor3i (GLint, GLint, GLint); -GLAPI void APIENTRY glSecondaryColor3iv (const GLint *); -GLAPI void APIENTRY glSecondaryColor3s (GLshort, GLshort, GLshort); -GLAPI void APIENTRY glSecondaryColor3sv (const GLshort *); -GLAPI void APIENTRY glSecondaryColor3ub (GLubyte, GLubyte, GLubyte); -GLAPI void APIENTRY glSecondaryColor3ubv (const GLubyte *); -GLAPI void APIENTRY glSecondaryColor3ui (GLuint, GLuint, GLuint); -GLAPI void APIENTRY glSecondaryColor3uiv (const GLuint *); -GLAPI void APIENTRY glSecondaryColor3us (GLushort, GLushort, GLushort); -GLAPI void APIENTRY glSecondaryColor3usv (const GLushort *); -GLAPI void APIENTRY glSecondaryColorPointer (GLint, GLenum, GLsizei, const GLvoid *); -GLAPI void APIENTRY glWindowPos2d (GLdouble, GLdouble); -GLAPI void APIENTRY glWindowPos2dv (const GLdouble *); -GLAPI void APIENTRY glWindowPos2f (GLfloat, GLfloat); -GLAPI void APIENTRY glWindowPos2fv (const GLfloat *); -GLAPI void APIENTRY glWindowPos2i (GLint, GLint); -GLAPI void APIENTRY glWindowPos2iv (const GLint *); -GLAPI void APIENTRY glWindowPos2s (GLshort, GLshort); -GLAPI void APIENTRY glWindowPos2sv (const GLshort *); -GLAPI void APIENTRY glWindowPos3d (GLdouble, GLdouble, GLdouble); -GLAPI void APIENTRY glWindowPos3dv (const GLdouble *); -GLAPI void APIENTRY glWindowPos3f (GLfloat, GLfloat, GLfloat); -GLAPI void APIENTRY glWindowPos3fv (const GLfloat *); -GLAPI void APIENTRY glWindowPos3i (GLint, GLint, GLint); -GLAPI void APIENTRY glWindowPos3iv (const GLint *); -GLAPI void APIENTRY glWindowPos3s (GLshort, GLshort, GLshort); -GLAPI void APIENTRY glWindowPos3sv (const GLshort *); -#endif /* GL_GLEXT_PROTOTYPES */ -typedef void (APIENTRYP PFNGLBLENDFUNCSEPARATEPROC) (GLenum sfactorRGB, GLenum dfactorRGB, GLenum sfactorAlpha, GLenum dfactorAlpha); -typedef void (APIENTRYP PFNGLFOGCOORDFPROC) (GLfloat coord); -typedef void (APIENTRYP PFNGLFOGCOORDFVPROC) (const GLfloat *coord); -typedef void (APIENTRYP PFNGLFOGCOORDDPROC) (GLdouble coord); -typedef void (APIENTRYP PFNGLFOGCOORDDVPROC) (const GLdouble *coord); -typedef void (APIENTRYP PFNGLFOGCOORDPOINTERPROC) (GLenum type, GLsizei stride, const GLvoid *pointer); -typedef void (APIENTRYP PFNGLMULTIDRAWARRAYSPROC) (GLenum mode, GLint *first, GLsizei *count, GLsizei primcount); -typedef void (APIENTRYP PFNGLMULTIDRAWELEMENTSPROC) (GLenum mode, const GLsizei *count, GLenum type, const GLvoid* *indices, GLsizei primcount); -typedef void (APIENTRYP PFNGLPOINTPARAMETERFPROC) (GLenum pname, GLfloat param); -typedef void (APIENTRYP PFNGLPOINTPARAMETERFVPROC) (GLenum pname, const GLfloat *params); -typedef void (APIENTRYP PFNGLPOINTPARAMETERIPROC) (GLenum pname, GLint param); -typedef void (APIENTRYP PFNGLPOINTPARAMETERIVPROC) (GLenum pname, const GLint *params); -typedef void (APIENTRYP PFNGLSECONDARYCOLOR3BPROC) (GLbyte red, GLbyte green, GLbyte blue); -typedef void (APIENTRYP PFNGLSECONDARYCOLOR3BVPROC) (const GLbyte *v); -typedef void (APIENTRYP PFNGLSECONDARYCOLOR3DPROC) (GLdouble red, GLdouble green, GLdouble blue); -typedef void (APIENTRYP PFNGLSECONDARYCOLOR3DVPROC) (const GLdouble *v); -typedef void (APIENTRYP PFNGLSECONDARYCOLOR3FPROC) (GLfloat red, GLfloat green, GLfloat blue); -typedef void (APIENTRYP PFNGLSECONDARYCOLOR3FVPROC) (const GLfloat *v); -typedef void (APIENTRYP PFNGLSECONDARYCOLOR3IPROC) (GLint red, GLint green, GLint blue); -typedef void (APIENTRYP PFNGLSECONDARYCOLOR3IVPROC) (const GLint *v); -typedef void (APIENTRYP PFNGLSECONDARYCOLOR3SPROC) (GLshort red, GLshort green, GLshort blue); -typedef void (APIENTRYP PFNGLSECONDARYCOLOR3SVPROC) (const GLshort *v); -typedef void (APIENTRYP PFNGLSECONDARYCOLOR3UBPROC) (GLubyte red, GLubyte green, GLubyte blue); -typedef void (APIENTRYP PFNGLSECONDARYCOLOR3UBVPROC) (const GLubyte *v); -typedef void (APIENTRYP PFNGLSECONDARYCOLOR3UIPROC) (GLuint red, GLuint green, GLuint blue); -typedef void (APIENTRYP PFNGLSECONDARYCOLOR3UIVPROC) (const GLuint *v); -typedef void (APIENTRYP PFNGLSECONDARYCOLOR3USPROC) (GLushort red, GLushort green, GLushort blue); -typedef void (APIENTRYP PFNGLSECONDARYCOLOR3USVPROC) (const GLushort *v); -typedef void (APIENTRYP PFNGLSECONDARYCOLORPOINTERPROC) (GLint size, GLenum type, GLsizei stride, const GLvoid *pointer); -typedef void (APIENTRYP PFNGLWINDOWPOS2DPROC) (GLdouble x, GLdouble y); -typedef void (APIENTRYP PFNGLWINDOWPOS2DVPROC) (const GLdouble *v); -typedef void (APIENTRYP PFNGLWINDOWPOS2FPROC) (GLfloat x, GLfloat y); -typedef void (APIENTRYP PFNGLWINDOWPOS2FVPROC) (const GLfloat *v); -typedef void (APIENTRYP PFNGLWINDOWPOS2IPROC) (GLint x, GLint y); -typedef void (APIENTRYP PFNGLWINDOWPOS2IVPROC) (const GLint *v); -typedef void (APIENTRYP PFNGLWINDOWPOS2SPROC) (GLshort x, GLshort y); -typedef void (APIENTRYP PFNGLWINDOWPOS2SVPROC) (const GLshort *v); -typedef void (APIENTRYP PFNGLWINDOWPOS3DPROC) (GLdouble x, GLdouble y, GLdouble z); -typedef void (APIENTRYP PFNGLWINDOWPOS3DVPROC) (const GLdouble *v); -typedef void (APIENTRYP PFNGLWINDOWPOS3FPROC) (GLfloat x, GLfloat y, GLfloat z); -typedef void (APIENTRYP PFNGLWINDOWPOS3FVPROC) (const GLfloat *v); -typedef void (APIENTRYP PFNGLWINDOWPOS3IPROC) (GLint x, GLint y, GLint z); -typedef void (APIENTRYP PFNGLWINDOWPOS3IVPROC) (const GLint *v); -typedef void (APIENTRYP PFNGLWINDOWPOS3SPROC) (GLshort x, GLshort y, GLshort z); -typedef void (APIENTRYP PFNGLWINDOWPOS3SVPROC) (const GLshort *v); -#endif - -#ifndef GL_VERSION_1_5 -#define GL_VERSION_1_5 1 -#ifdef GL_GLEXT_PROTOTYPES -GLAPI void APIENTRY glGenQueries (GLsizei, GLuint *); -GLAPI void APIENTRY glDeleteQueries (GLsizei, const GLuint *); -GLAPI GLboolean APIENTRY glIsQuery (GLuint); -GLAPI void APIENTRY glBeginQuery (GLenum, GLuint); -GLAPI void APIENTRY glEndQuery (GLenum); -GLAPI void APIENTRY glGetQueryiv (GLenum, GLenum, GLint *); -GLAPI void APIENTRY glGetQueryObjectiv (GLuint, GLenum, GLint *); -GLAPI void APIENTRY glGetQueryObjectuiv (GLuint, GLenum, GLuint *); -GLAPI void APIENTRY glBindBuffer (GLenum, GLuint); -GLAPI void APIENTRY glDeleteBuffers (GLsizei, const GLuint *); -GLAPI void APIENTRY glGenBuffers (GLsizei, GLuint *); -GLAPI GLboolean APIENTRY glIsBuffer (GLuint); -GLAPI void APIENTRY glBufferData (GLenum, GLsizeiptr, const GLvoid *, GLenum); -GLAPI void APIENTRY glBufferSubData (GLenum, GLintptr, GLsizeiptr, const GLvoid *); -GLAPI void APIENTRY glGetBufferSubData (GLenum, GLintptr, GLsizeiptr, GLvoid *); -GLAPI GLvoid* APIENTRY glMapBuffer (GLenum, GLenum); -GLAPI GLboolean APIENTRY glUnmapBuffer (GLenum); -GLAPI void APIENTRY glGetBufferParameteriv (GLenum, GLenum, GLint *); -GLAPI void APIENTRY glGetBufferPointerv (GLenum, GLenum, GLvoid* *); -#endif /* GL_GLEXT_PROTOTYPES */ -typedef void (APIENTRYP PFNGLGENQUERIESPROC) (GLsizei n, GLuint *ids); -typedef void (APIENTRYP PFNGLDELETEQUERIESPROC) (GLsizei n, const GLuint *ids); -typedef GLboolean (APIENTRYP PFNGLISQUERYPROC) (GLuint id); -typedef void (APIENTRYP PFNGLBEGINQUERYPROC) (GLenum target, GLuint id); -typedef void (APIENTRYP PFNGLENDQUERYPROC) (GLenum target); -typedef void (APIENTRYP PFNGLGETQUERYIVPROC) (GLenum target, GLenum pname, GLint *params); -typedef void (APIENTRYP PFNGLGETQUERYOBJECTIVPROC) (GLuint id, GLenum pname, GLint *params); -typedef void (APIENTRYP PFNGLGETQUERYOBJECTUIVPROC) (GLuint id, GLenum pname, GLuint *params); -typedef void (APIENTRYP PFNGLBINDBUFFERPROC) (GLenum target, GLuint buffer); -typedef void (APIENTRYP PFNGLDELETEBUFFERSPROC) (GLsizei n, const GLuint *buffers); -typedef void (APIENTRYP PFNGLGENBUFFERSPROC) (GLsizei n, GLuint *buffers); -typedef GLboolean (APIENTRYP PFNGLISBUFFERPROC) (GLuint buffer); -typedef void (APIENTRYP PFNGLBUFFERDATAPROC) (GLenum target, GLsizeiptr size, const GLvoid *data, GLenum usage); -typedef void (APIENTRYP PFNGLBUFFERSUBDATAPROC) (GLenum target, GLintptr offset, GLsizeiptr size, const GLvoid *data); -typedef void (APIENTRYP PFNGLGETBUFFERSUBDATAPROC) (GLenum target, GLintptr offset, GLsizeiptr size, GLvoid *data); -typedef GLvoid* (APIENTRYP PFNGLMAPBUFFERPROC) (GLenum target, GLenum access); -typedef GLboolean (APIENTRYP PFNGLUNMAPBUFFERPROC) (GLenum target); -typedef void (APIENTRYP PFNGLGETBUFFERPARAMETERIVPROC) (GLenum target, GLenum pname, GLint *params); -typedef void (APIENTRYP PFNGLGETBUFFERPOINTERVPROC) (GLenum target, GLenum pname, GLvoid* *params); -#endif - -#ifndef GL_VERSION_2_0 -#define GL_VERSION_2_0 1 -#ifdef GL_GLEXT_PROTOTYPES -GLAPI void APIENTRY glBlendEquationSeparate (GLenum, GLenum); -GLAPI void APIENTRY glDrawBuffers (GLsizei, const GLenum *); -GLAPI void APIENTRY glStencilOpSeparate (GLenum, GLenum, GLenum, GLenum); -GLAPI void APIENTRY glStencilFuncSeparate (GLenum, GLenum, GLint, GLuint); -GLAPI void APIENTRY glStencilMaskSeparate (GLenum, GLuint); -GLAPI void APIENTRY glAttachShader (GLuint, GLuint); -GLAPI void APIENTRY glBindAttribLocation (GLuint, GLuint, const GLchar *); -GLAPI void APIENTRY glCompileShader (GLuint); -GLAPI GLuint APIENTRY glCreateProgram (void); -GLAPI GLuint APIENTRY glCreateShader (GLenum); -GLAPI void APIENTRY glDeleteProgram (GLuint); -GLAPI void APIENTRY glDeleteShader (GLuint); -GLAPI void APIENTRY glDetachShader (GLuint, GLuint); -GLAPI void APIENTRY glDisableVertexAttribArray (GLuint); -GLAPI void APIENTRY glEnableVertexAttribArray (GLuint); -GLAPI void APIENTRY glGetActiveAttrib (GLuint, GLuint, GLsizei, GLsizei *, GLint *, GLenum *, GLchar *); -GLAPI void APIENTRY glGetActiveUniform (GLuint, GLuint, GLsizei, GLsizei *, GLint *, GLenum *, GLchar *); -GLAPI void APIENTRY glGetAttachedShaders (GLuint, GLsizei, GLsizei *, GLuint *); -GLAPI GLint APIENTRY glGetAttribLocation (GLuint, const GLchar *); -GLAPI void APIENTRY glGetProgramiv (GLuint, GLenum, GLint *); -GLAPI void APIENTRY glGetProgramInfoLog (GLuint, GLsizei, GLsizei *, GLchar *); -GLAPI void APIENTRY glGetShaderiv (GLuint, GLenum, GLint *); -GLAPI void APIENTRY glGetShaderInfoLog (GLuint, GLsizei, GLsizei *, GLchar *); -GLAPI void APIENTRY glGetShaderSource (GLuint, GLsizei, GLsizei *, GLchar *); -GLAPI GLint APIENTRY glGetUniformLocation (GLuint, const GLchar *); -GLAPI void APIENTRY glGetUniformfv (GLuint, GLint, GLfloat *); -GLAPI void APIENTRY glGetUniformiv (GLuint, GLint, GLint *); -GLAPI void APIENTRY glGetVertexAttribdv (GLuint, GLenum, GLdouble *); -GLAPI void APIENTRY glGetVertexAttribfv (GLuint, GLenum, GLfloat *); -GLAPI void APIENTRY glGetVertexAttribiv (GLuint, GLenum, GLint *); -GLAPI void APIENTRY glGetVertexAttribPointerv (GLuint, GLenum, GLvoid* *); -GLAPI GLboolean APIENTRY glIsProgram (GLuint); -GLAPI GLboolean APIENTRY glIsShader (GLuint); -GLAPI void APIENTRY glLinkProgram (GLuint); -GLAPI void APIENTRY glShaderSource (GLuint, GLsizei, const GLchar* *, const GLint *); -GLAPI void APIENTRY glUseProgram (GLuint); -GLAPI void APIENTRY glUniform1f (GLint, GLfloat); -GLAPI void APIENTRY glUniform2f (GLint, GLfloat, GLfloat); -GLAPI void APIENTRY glUniform3f (GLint, GLfloat, GLfloat, GLfloat); -GLAPI void APIENTRY glUniform4f (GLint, GLfloat, GLfloat, GLfloat, GLfloat); -GLAPI void APIENTRY glUniform1i (GLint, GLint); -GLAPI void APIENTRY glUniform2i (GLint, GLint, GLint); -GLAPI void APIENTRY glUniform3i (GLint, GLint, GLint, GLint); -GLAPI void APIENTRY glUniform4i (GLint, GLint, GLint, GLint, GLint); -GLAPI void APIENTRY glUniform1fv (GLint, GLsizei, const GLfloat *); -GLAPI void APIENTRY glUniform2fv (GLint, GLsizei, const GLfloat *); -GLAPI void APIENTRY glUniform3fv (GLint, GLsizei, const GLfloat *); -GLAPI void APIENTRY glUniform4fv (GLint, GLsizei, const GLfloat *); -GLAPI void APIENTRY glUniform1iv (GLint, GLsizei, const GLint *); -GLAPI void APIENTRY glUniform2iv (GLint, GLsizei, const GLint *); -GLAPI void APIENTRY glUniform3iv (GLint, GLsizei, const GLint *); -GLAPI void APIENTRY glUniform4iv (GLint, GLsizei, const GLint *); -GLAPI void APIENTRY glUniformMatrix2fv (GLint, GLsizei, GLboolean, const GLfloat *); -GLAPI void APIENTRY glUniformMatrix3fv (GLint, GLsizei, GLboolean, const GLfloat *); -GLAPI void APIENTRY glUniformMatrix4fv (GLint, GLsizei, GLboolean, const GLfloat *); -GLAPI void APIENTRY glValidateProgram (GLuint); -GLAPI void APIENTRY glVertexAttrib1d (GLuint, GLdouble); -GLAPI void APIENTRY glVertexAttrib1dv (GLuint, const GLdouble *); -GLAPI void APIENTRY glVertexAttrib1f (GLuint, GLfloat); -GLAPI void APIENTRY glVertexAttrib1fv (GLuint, const GLfloat *); -GLAPI void APIENTRY glVertexAttrib1s (GLuint, GLshort); -GLAPI void APIENTRY glVertexAttrib1sv (GLuint, const GLshort *); -GLAPI void APIENTRY glVertexAttrib2d (GLuint, GLdouble, GLdouble); -GLAPI void APIENTRY glVertexAttrib2dv (GLuint, const GLdouble *); -GLAPI void APIENTRY glVertexAttrib2f (GLuint, GLfloat, GLfloat); -GLAPI void APIENTRY glVertexAttrib2fv (GLuint, const GLfloat *); -GLAPI void APIENTRY glVertexAttrib2s (GLuint, GLshort, GLshort); -GLAPI void APIENTRY glVertexAttrib2sv (GLuint, const GLshort *); -GLAPI void APIENTRY glVertexAttrib3d (GLuint, GLdouble, GLdouble, GLdouble); -GLAPI void APIENTRY glVertexAttrib3dv (GLuint, const GLdouble *); -GLAPI void APIENTRY glVertexAttrib3f (GLuint, GLfloat, GLfloat, GLfloat); -GLAPI void APIENTRY glVertexAttrib3fv (GLuint, const GLfloat *); -GLAPI void APIENTRY glVertexAttrib3s (GLuint, GLshort, GLshort, GLshort); -GLAPI void APIENTRY glVertexAttrib3sv (GLuint, const GLshort *); -GLAPI void APIENTRY glVertexAttrib4Nbv (GLuint, const GLbyte *); -GLAPI void APIENTRY glVertexAttrib4Niv (GLuint, const GLint *); -GLAPI void APIENTRY glVertexAttrib4Nsv (GLuint, const GLshort *); -GLAPI void APIENTRY glVertexAttrib4Nub (GLuint, GLubyte, GLubyte, GLubyte, GLubyte); -GLAPI void APIENTRY glVertexAttrib4Nubv (GLuint, const GLubyte *); -GLAPI void APIENTRY glVertexAttrib4Nuiv (GLuint, const GLuint *); -GLAPI void APIENTRY glVertexAttrib4Nusv (GLuint, const GLushort *); -GLAPI void APIENTRY glVertexAttrib4bv (GLuint, const GLbyte *); -GLAPI void APIENTRY glVertexAttrib4d (GLuint, GLdouble, GLdouble, GLdouble, GLdouble); -GLAPI void APIENTRY glVertexAttrib4dv (GLuint, const GLdouble *); -GLAPI void APIENTRY glVertexAttrib4f (GLuint, GLfloat, GLfloat, GLfloat, GLfloat); -GLAPI void APIENTRY glVertexAttrib4fv (GLuint, const GLfloat *); -GLAPI void APIENTRY glVertexAttrib4iv (GLuint, const GLint *); -GLAPI void APIENTRY glVertexAttrib4s (GLuint, GLshort, GLshort, GLshort, GLshort); -GLAPI void APIENTRY glVertexAttrib4sv (GLuint, const GLshort *); -GLAPI void APIENTRY glVertexAttrib4ubv (GLuint, const GLubyte *); -GLAPI void APIENTRY glVertexAttrib4uiv (GLuint, const GLuint *); -GLAPI void APIENTRY glVertexAttrib4usv (GLuint, const GLushort *); -GLAPI void APIENTRY glVertexAttribPointer (GLuint, GLint, GLenum, GLboolean, GLsizei, const GLvoid *); -#endif /* GL_GLEXT_PROTOTYPES */ -typedef void (APIENTRYP PFNGLBLENDEQUATIONSEPARATEPROC) (GLenum modeRGB, GLenum modeAlpha); -typedef void (APIENTRYP PFNGLDRAWBUFFERSPROC) (GLsizei n, const GLenum *bufs); -typedef void (APIENTRYP PFNGLSTENCILOPSEPARATEPROC) (GLenum face, GLenum sfail, GLenum dpfail, GLenum dppass); -typedef void (APIENTRYP PFNGLSTENCILFUNCSEPARATEPROC) (GLenum frontfunc, GLenum backfunc, GLint ref, GLuint mask); -typedef void (APIENTRYP PFNGLSTENCILMASKSEPARATEPROC) (GLenum face, GLuint mask); -typedef void (APIENTRYP PFNGLATTACHSHADERPROC) (GLuint program, GLuint shader); -typedef void (APIENTRYP PFNGLBINDATTRIBLOCATIONPROC) (GLuint program, GLuint index, const GLchar *name); -typedef void (APIENTRYP PFNGLCOMPILESHADERPROC) (GLuint shader); -typedef GLuint (APIENTRYP PFNGLCREATEPROGRAMPROC) (void); -typedef GLuint (APIENTRYP PFNGLCREATESHADERPROC) (GLenum type); -typedef void (APIENTRYP PFNGLDELETEPROGRAMPROC) (GLuint program); -typedef void (APIENTRYP PFNGLDELETESHADERPROC) (GLuint shader); -typedef void (APIENTRYP PFNGLDETACHSHADERPROC) (GLuint program, GLuint shader); -typedef void (APIENTRYP PFNGLDISABLEVERTEXATTRIBARRAYPROC) (GLuint index); -typedef void (APIENTRYP PFNGLENABLEVERTEXATTRIBARRAYPROC) (GLuint index); -typedef void (APIENTRYP PFNGLGETACTIVEATTRIBPROC) (GLuint program, GLuint index, GLsizei bufSize, GLsizei *length, GLint *size, GLenum *type, GLchar *name); -typedef void (APIENTRYP PFNGLGETACTIVEUNIFORMPROC) (GLuint program, GLuint index, GLsizei bufSize, GLsizei *length, GLint *size, GLenum *type, GLchar *name); -typedef void (APIENTRYP PFNGLGETATTACHEDSHADERSPROC) (GLuint program, GLsizei maxCount, GLsizei *count, GLuint *obj); -typedef GLint (APIENTRYP PFNGLGETATTRIBLOCATIONPROC) (GLuint program, const GLchar *name); -typedef void (APIENTRYP PFNGLGETPROGRAMIVPROC) (GLuint program, GLenum pname, GLint *params); -typedef void (APIENTRYP PFNGLGETPROGRAMINFOLOGPROC) (GLuint program, GLsizei bufSize, GLsizei *length, GLchar *infoLog); -typedef void (APIENTRYP PFNGLGETSHADERIVPROC) (GLuint shader, GLenum pname, GLint *params); -typedef void (APIENTRYP PFNGLGETSHADERINFOLOGPROC) (GLuint shader, GLsizei bufSize, GLsizei *length, GLchar *infoLog); -typedef void (APIENTRYP PFNGLGETSHADERSOURCEPROC) (GLuint shader, GLsizei bufSize, GLsizei *length, GLchar *source); -typedef GLint (APIENTRYP PFNGLGETUNIFORMLOCATIONPROC) (GLuint program, const GLchar *name); -typedef void (APIENTRYP PFNGLGETUNIFORMFVPROC) (GLuint program, GLint location, GLfloat *params); -typedef void (APIENTRYP PFNGLGETUNIFORMIVPROC) (GLuint program, GLint location, GLint *params); -typedef void (APIENTRYP PFNGLGETVERTEXATTRIBDVPROC) (GLuint index, GLenum pname, GLdouble *params); -typedef void (APIENTRYP PFNGLGETVERTEXATTRIBFVPROC) (GLuint index, GLenum pname, GLfloat *params); -typedef void (APIENTRYP PFNGLGETVERTEXATTRIBIVPROC) (GLuint index, GLenum pname, GLint *params); -typedef void (APIENTRYP PFNGLGETVERTEXATTRIBPOINTERVPROC) (GLuint index, GLenum pname, GLvoid* *pointer); -typedef GLboolean (APIENTRYP PFNGLISPROGRAMPROC) (GLuint program); -typedef GLboolean (APIENTRYP PFNGLISSHADERPROC) (GLuint shader); -typedef void (APIENTRYP PFNGLLINKPROGRAMPROC) (GLuint program); -typedef void (APIENTRYP PFNGLSHADERSOURCEPROC) (GLuint shader, GLsizei count, const GLchar* *string, const GLint *length); -typedef void (APIENTRYP PFNGLUSEPROGRAMPROC) (GLuint program); -typedef void (APIENTRYP PFNGLUNIFORM1FPROC) (GLint location, GLfloat v0); -typedef void (APIENTRYP PFNGLUNIFORM2FPROC) (GLint location, GLfloat v0, GLfloat v1); -typedef void (APIENTRYP PFNGLUNIFORM3FPROC) (GLint location, GLfloat v0, GLfloat v1, GLfloat v2); -typedef void (APIENTRYP PFNGLUNIFORM4FPROC) (GLint location, GLfloat v0, GLfloat v1, GLfloat v2, GLfloat v3); -typedef void (APIENTRYP PFNGLUNIFORM1IPROC) (GLint location, GLint v0); -typedef void (APIENTRYP PFNGLUNIFORM2IPROC) (GLint location, GLint v0, GLint v1); -typedef void (APIENTRYP PFNGLUNIFORM3IPROC) (GLint location, GLint v0, GLint v1, GLint v2); -typedef void (APIENTRYP PFNGLUNIFORM4IPROC) (GLint location, GLint v0, GLint v1, GLint v2, GLint v3); -typedef void (APIENTRYP PFNGLUNIFORM1FVPROC) (GLint location, GLsizei count, const GLfloat *value); -typedef void (APIENTRYP PFNGLUNIFORM2FVPROC) (GLint location, GLsizei count, const GLfloat *value); -typedef void (APIENTRYP PFNGLUNIFORM3FVPROC) (GLint location, GLsizei count, const GLfloat *value); -typedef void (APIENTRYP PFNGLUNIFORM4FVPROC) (GLint location, GLsizei count, const GLfloat *value); -typedef void (APIENTRYP PFNGLUNIFORM1IVPROC) (GLint location, GLsizei count, const GLint *value); -typedef void (APIENTRYP PFNGLUNIFORM2IVPROC) (GLint location, GLsizei count, const GLint *value); -typedef void (APIENTRYP PFNGLUNIFORM3IVPROC) (GLint location, GLsizei count, const GLint *value); -typedef void (APIENTRYP PFNGLUNIFORM4IVPROC) (GLint location, GLsizei count, const GLint *value); -typedef void (APIENTRYP PFNGLUNIFORMMATRIX2FVPROC) (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); -typedef void (APIENTRYP PFNGLUNIFORMMATRIX3FVPROC) (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); -typedef void (APIENTRYP PFNGLUNIFORMMATRIX4FVPROC) (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); -typedef void (APIENTRYP PFNGLVALIDATEPROGRAMPROC) (GLuint program); -typedef void (APIENTRYP PFNGLVERTEXATTRIB1DPROC) (GLuint index, GLdouble x); -typedef void (APIENTRYP PFNGLVERTEXATTRIB1DVPROC) (GLuint index, const GLdouble *v); -typedef void (APIENTRYP PFNGLVERTEXATTRIB1FPROC) (GLuint index, GLfloat x); -typedef void (APIENTRYP PFNGLVERTEXATTRIB1FVPROC) (GLuint index, const GLfloat *v); -typedef void (APIENTRYP PFNGLVERTEXATTRIB1SPROC) (GLuint index, GLshort x); -typedef void (APIENTRYP PFNGLVERTEXATTRIB1SVPROC) (GLuint index, const GLshort *v); -typedef void (APIENTRYP PFNGLVERTEXATTRIB2DPROC) (GLuint index, GLdouble x, GLdouble y); -typedef void (APIENTRYP PFNGLVERTEXATTRIB2DVPROC) (GLuint index, const GLdouble *v); -typedef void (APIENTRYP PFNGLVERTEXATTRIB2FPROC) (GLuint index, GLfloat x, GLfloat y); -typedef void (APIENTRYP PFNGLVERTEXATTRIB2FVPROC) (GLuint index, const GLfloat *v); -typedef void (APIENTRYP PFNGLVERTEXATTRIB2SPROC) (GLuint index, GLshort x, GLshort y); -typedef void (APIENTRYP PFNGLVERTEXATTRIB2SVPROC) (GLuint index, const GLshort *v); -typedef void (APIENTRYP PFNGLVERTEXATTRIB3DPROC) (GLuint index, GLdouble x, GLdouble y, GLdouble z); -typedef void (APIENTRYP PFNGLVERTEXATTRIB3DVPROC) (GLuint index, const GLdouble *v); -typedef void (APIENTRYP PFNGLVERTEXATTRIB3FPROC) (GLuint index, GLfloat x, GLfloat y, GLfloat z); -typedef void (APIENTRYP PFNGLVERTEXATTRIB3FVPROC) (GLuint index, const GLfloat *v); -typedef void (APIENTRYP PFNGLVERTEXATTRIB3SPROC) (GLuint index, GLshort x, GLshort y, GLshort z); -typedef void (APIENTRYP PFNGLVERTEXATTRIB3SVPROC) (GLuint index, const GLshort *v); -typedef void (APIENTRYP PFNGLVERTEXATTRIB4NBVPROC) (GLuint index, const GLbyte *v); -typedef void (APIENTRYP PFNGLVERTEXATTRIB4NIVPROC) (GLuint index, const GLint *v); -typedef void (APIENTRYP PFNGLVERTEXATTRIB4NSVPROC) (GLuint index, const GLshort *v); -typedef void (APIENTRYP PFNGLVERTEXATTRIB4NUBPROC) (GLuint index, GLubyte x, GLubyte y, GLubyte z, GLubyte w); -typedef void (APIENTRYP PFNGLVERTEXATTRIB4NUBVPROC) (GLuint index, const GLubyte *v); -typedef void (APIENTRYP PFNGLVERTEXATTRIB4NUIVPROC) (GLuint index, const GLuint *v); -typedef void (APIENTRYP PFNGLVERTEXATTRIB4NUSVPROC) (GLuint index, const GLushort *v); -typedef void (APIENTRYP PFNGLVERTEXATTRIB4BVPROC) (GLuint index, const GLbyte *v); -typedef void (APIENTRYP PFNGLVERTEXATTRIB4DPROC) (GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w); -typedef void (APIENTRYP PFNGLVERTEXATTRIB4DVPROC) (GLuint index, const GLdouble *v); -typedef void (APIENTRYP PFNGLVERTEXATTRIB4FPROC) (GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w); -typedef void (APIENTRYP PFNGLVERTEXATTRIB4FVPROC) (GLuint index, const GLfloat *v); -typedef void (APIENTRYP PFNGLVERTEXATTRIB4IVPROC) (GLuint index, const GLint *v); -typedef void (APIENTRYP PFNGLVERTEXATTRIB4SPROC) (GLuint index, GLshort x, GLshort y, GLshort z, GLshort w); -typedef void (APIENTRYP PFNGLVERTEXATTRIB4SVPROC) (GLuint index, const GLshort *v); -typedef void (APIENTRYP PFNGLVERTEXATTRIB4UBVPROC) (GLuint index, const GLubyte *v); -typedef void (APIENTRYP PFNGLVERTEXATTRIB4UIVPROC) (GLuint index, const GLuint *v); -typedef void (APIENTRYP PFNGLVERTEXATTRIB4USVPROC) (GLuint index, const GLushort *v); -typedef void (APIENTRYP PFNGLVERTEXATTRIBPOINTERPROC) (GLuint index, GLint size, GLenum type, GLboolean normalized, GLsizei stride, const GLvoid *pointer); -#endif - -#ifndef GL_VERSION_2_1 -#define GL_VERSION_2_1 1 -#ifdef GL_GLEXT_PROTOTYPES -GLAPI void APIENTRY glUniformMatrix2x3fv (GLint, GLsizei, GLboolean, const GLfloat *); -GLAPI void APIENTRY glUniformMatrix3x2fv (GLint, GLsizei, GLboolean, const GLfloat *); -GLAPI void APIENTRY glUniformMatrix2x4fv (GLint, GLsizei, GLboolean, const GLfloat *); -GLAPI void APIENTRY glUniformMatrix4x2fv (GLint, GLsizei, GLboolean, const GLfloat *); -GLAPI void APIENTRY glUniformMatrix3x4fv (GLint, GLsizei, GLboolean, const GLfloat *); -GLAPI void APIENTRY glUniformMatrix4x3fv (GLint, GLsizei, GLboolean, const GLfloat *); -#endif /* GL_GLEXT_PROTOTYPES */ -typedef void (APIENTRYP PFNGLUNIFORMMATRIX2X3FVPROC) (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); -typedef void (APIENTRYP PFNGLUNIFORMMATRIX3X2FVPROC) (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); -typedef void (APIENTRYP PFNGLUNIFORMMATRIX2X4FVPROC) (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); -typedef void (APIENTRYP PFNGLUNIFORMMATRIX4X2FVPROC) (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); -typedef void (APIENTRYP PFNGLUNIFORMMATRIX3X4FVPROC) (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); -typedef void (APIENTRYP PFNGLUNIFORMMATRIX4X3FVPROC) (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); -#endif - -#ifndef GL_ARB_multitexture -#define GL_ARB_multitexture 1 -#ifdef GL_GLEXT_PROTOTYPES -GLAPI void APIENTRY glActiveTextureARB (GLenum); -GLAPI void APIENTRY glClientActiveTextureARB (GLenum); -GLAPI void APIENTRY glMultiTexCoord1dARB (GLenum, GLdouble); -GLAPI void APIENTRY glMultiTexCoord1dvARB (GLenum, const GLdouble *); -GLAPI void APIENTRY glMultiTexCoord1fARB (GLenum, GLfloat); -GLAPI void APIENTRY glMultiTexCoord1fvARB (GLenum, const GLfloat *); -GLAPI void APIENTRY glMultiTexCoord1iARB (GLenum, GLint); -GLAPI void APIENTRY glMultiTexCoord1ivARB (GLenum, const GLint *); -GLAPI void APIENTRY glMultiTexCoord1sARB (GLenum, GLshort); -GLAPI void APIENTRY glMultiTexCoord1svARB (GLenum, const GLshort *); -GLAPI void APIENTRY glMultiTexCoord2dARB (GLenum, GLdouble, GLdouble); -GLAPI void APIENTRY glMultiTexCoord2dvARB (GLenum, const GLdouble *); -GLAPI void APIENTRY glMultiTexCoord2fARB (GLenum, GLfloat, GLfloat); -GLAPI void APIENTRY glMultiTexCoord2fvARB (GLenum, const GLfloat *); -GLAPI void APIENTRY glMultiTexCoord2iARB (GLenum, GLint, GLint); -GLAPI void APIENTRY glMultiTexCoord2ivARB (GLenum, const GLint *); -GLAPI void APIENTRY glMultiTexCoord2sARB (GLenum, GLshort, GLshort); -GLAPI void APIENTRY glMultiTexCoord2svARB (GLenum, const GLshort *); -GLAPI void APIENTRY glMultiTexCoord3dARB (GLenum, GLdouble, GLdouble, GLdouble); -GLAPI void APIENTRY glMultiTexCoord3dvARB (GLenum, const GLdouble *); -GLAPI void APIENTRY glMultiTexCoord3fARB (GLenum, GLfloat, GLfloat, GLfloat); -GLAPI void APIENTRY glMultiTexCoord3fvARB (GLenum, const GLfloat *); -GLAPI void APIENTRY glMultiTexCoord3iARB (GLenum, GLint, GLint, GLint); -GLAPI void APIENTRY glMultiTexCoord3ivARB (GLenum, const GLint *); -GLAPI void APIENTRY glMultiTexCoord3sARB (GLenum, GLshort, GLshort, GLshort); -GLAPI void APIENTRY glMultiTexCoord3svARB (GLenum, const GLshort *); -GLAPI void APIENTRY glMultiTexCoord4dARB (GLenum, GLdouble, GLdouble, GLdouble, GLdouble); -GLAPI void APIENTRY glMultiTexCoord4dvARB (GLenum, const GLdouble *); -GLAPI void APIENTRY glMultiTexCoord4fARB (GLenum, GLfloat, GLfloat, GLfloat, GLfloat); -GLAPI void APIENTRY glMultiTexCoord4fvARB (GLenum, const GLfloat *); -GLAPI void APIENTRY glMultiTexCoord4iARB (GLenum, GLint, GLint, GLint, GLint); -GLAPI void APIENTRY glMultiTexCoord4ivARB (GLenum, const GLint *); -GLAPI void APIENTRY glMultiTexCoord4sARB (GLenum, GLshort, GLshort, GLshort, GLshort); -GLAPI void APIENTRY glMultiTexCoord4svARB (GLenum, const GLshort *); -#endif /* GL_GLEXT_PROTOTYPES */ -typedef void (APIENTRYP PFNGLACTIVETEXTUREARBPROC) (GLenum texture); -typedef void (APIENTRYP PFNGLCLIENTACTIVETEXTUREARBPROC) (GLenum texture); -typedef void (APIENTRYP PFNGLMULTITEXCOORD1DARBPROC) (GLenum target, GLdouble s); -typedef void (APIENTRYP PFNGLMULTITEXCOORD1DVARBPROC) (GLenum target, const GLdouble *v); -typedef void (APIENTRYP PFNGLMULTITEXCOORD1FARBPROC) (GLenum target, GLfloat s); -typedef void (APIENTRYP PFNGLMULTITEXCOORD1FVARBPROC) (GLenum target, const GLfloat *v); -typedef void (APIENTRYP PFNGLMULTITEXCOORD1IARBPROC) (GLenum target, GLint s); -typedef void (APIENTRYP PFNGLMULTITEXCOORD1IVARBPROC) (GLenum target, const GLint *v); -typedef void (APIENTRYP PFNGLMULTITEXCOORD1SARBPROC) (GLenum target, GLshort s); -typedef void (APIENTRYP PFNGLMULTITEXCOORD1SVARBPROC) (GLenum target, const GLshort *v); -typedef void (APIENTRYP PFNGLMULTITEXCOORD2DARBPROC) (GLenum target, GLdouble s, GLdouble t); -typedef void (APIENTRYP PFNGLMULTITEXCOORD2DVARBPROC) (GLenum target, const GLdouble *v); -typedef void (APIENTRYP PFNGLMULTITEXCOORD2FARBPROC) (GLenum target, GLfloat s, GLfloat t); -typedef void (APIENTRYP PFNGLMULTITEXCOORD2FVARBPROC) (GLenum target, const GLfloat *v); -typedef void (APIENTRYP PFNGLMULTITEXCOORD2IARBPROC) (GLenum target, GLint s, GLint t); -typedef void (APIENTRYP PFNGLMULTITEXCOORD2IVARBPROC) (GLenum target, const GLint *v); -typedef void (APIENTRYP PFNGLMULTITEXCOORD2SARBPROC) (GLenum target, GLshort s, GLshort t); -typedef void (APIENTRYP PFNGLMULTITEXCOORD2SVARBPROC) (GLenum target, const GLshort *v); -typedef void (APIENTRYP PFNGLMULTITEXCOORD3DARBPROC) (GLenum target, GLdouble s, GLdouble t, GLdouble r); -typedef void (APIENTRYP PFNGLMULTITEXCOORD3DVARBPROC) (GLenum target, const GLdouble *v); -typedef void (APIENTRYP PFNGLMULTITEXCOORD3FARBPROC) (GLenum target, GLfloat s, GLfloat t, GLfloat r); -typedef void (APIENTRYP PFNGLMULTITEXCOORD3FVARBPROC) (GLenum target, const GLfloat *v); -typedef void (APIENTRYP PFNGLMULTITEXCOORD3IARBPROC) (GLenum target, GLint s, GLint t, GLint r); -typedef void (APIENTRYP PFNGLMULTITEXCOORD3IVARBPROC) (GLenum target, const GLint *v); -typedef void (APIENTRYP PFNGLMULTITEXCOORD3SARBPROC) (GLenum target, GLshort s, GLshort t, GLshort r); -typedef void (APIENTRYP PFNGLMULTITEXCOORD3SVARBPROC) (GLenum target, const GLshort *v); -typedef void (APIENTRYP PFNGLMULTITEXCOORD4DARBPROC) (GLenum target, GLdouble s, GLdouble t, GLdouble r, GLdouble q); -typedef void (APIENTRYP PFNGLMULTITEXCOORD4DVARBPROC) (GLenum target, const GLdouble *v); -typedef void (APIENTRYP PFNGLMULTITEXCOORD4FARBPROC) (GLenum target, GLfloat s, GLfloat t, GLfloat r, GLfloat q); -typedef void (APIENTRYP PFNGLMULTITEXCOORD4FVARBPROC) (GLenum target, const GLfloat *v); -typedef void (APIENTRYP PFNGLMULTITEXCOORD4IARBPROC) (GLenum target, GLint s, GLint t, GLint r, GLint q); -typedef void (APIENTRYP PFNGLMULTITEXCOORD4IVARBPROC) (GLenum target, const GLint *v); -typedef void (APIENTRYP PFNGLMULTITEXCOORD4SARBPROC) (GLenum target, GLshort s, GLshort t, GLshort r, GLshort q); -typedef void (APIENTRYP PFNGLMULTITEXCOORD4SVARBPROC) (GLenum target, const GLshort *v); -#endif - -#ifndef GL_ARB_transpose_matrix -#define GL_ARB_transpose_matrix 1 -#ifdef GL_GLEXT_PROTOTYPES -GLAPI void APIENTRY glLoadTransposeMatrixfARB (const GLfloat *); -GLAPI void APIENTRY glLoadTransposeMatrixdARB (const GLdouble *); -GLAPI void APIENTRY glMultTransposeMatrixfARB (const GLfloat *); -GLAPI void APIENTRY glMultTransposeMatrixdARB (const GLdouble *); -#endif /* GL_GLEXT_PROTOTYPES */ -typedef void (APIENTRYP PFNGLLOADTRANSPOSEMATRIXFARBPROC) (const GLfloat *m); -typedef void (APIENTRYP PFNGLLOADTRANSPOSEMATRIXDARBPROC) (const GLdouble *m); -typedef void (APIENTRYP PFNGLMULTTRANSPOSEMATRIXFARBPROC) (const GLfloat *m); -typedef void (APIENTRYP PFNGLMULTTRANSPOSEMATRIXDARBPROC) (const GLdouble *m); -#endif - -#ifndef GL_ARB_multisample -#define GL_ARB_multisample 1 -#ifdef GL_GLEXT_PROTOTYPES -GLAPI void APIENTRY glSampleCoverageARB (GLclampf, GLboolean); -#endif /* GL_GLEXT_PROTOTYPES */ -typedef void (APIENTRYP PFNGLSAMPLECOVERAGEARBPROC) (GLclampf value, GLboolean invert); -#endif - -#ifndef GL_ARB_texture_env_add -#define GL_ARB_texture_env_add 1 -#endif - -#ifndef GL_ARB_texture_cube_map -#define GL_ARB_texture_cube_map 1 -#endif - -#ifndef GL_ARB_texture_compression -#define GL_ARB_texture_compression 1 -#ifdef GL_GLEXT_PROTOTYPES -GLAPI void APIENTRY glCompressedTexImage3DARB (GLenum, GLint, GLenum, GLsizei, GLsizei, GLsizei, GLint, GLsizei, const GLvoid *); -GLAPI void APIENTRY glCompressedTexImage2DARB (GLenum, GLint, GLenum, GLsizei, GLsizei, GLint, GLsizei, const GLvoid *); -GLAPI void APIENTRY glCompressedTexImage1DARB (GLenum, GLint, GLenum, GLsizei, GLint, GLsizei, const GLvoid *); -GLAPI void APIENTRY glCompressedTexSubImage3DARB (GLenum, GLint, GLint, GLint, GLint, GLsizei, GLsizei, GLsizei, GLenum, GLsizei, const GLvoid *); -GLAPI void APIENTRY glCompressedTexSubImage2DARB (GLenum, GLint, GLint, GLint, GLsizei, GLsizei, GLenum, GLsizei, const GLvoid *); -GLAPI void APIENTRY glCompressedTexSubImage1DARB (GLenum, GLint, GLint, GLsizei, GLenum, GLsizei, const GLvoid *); -GLAPI void APIENTRY glGetCompressedTexImageARB (GLenum, GLint, GLvoid *); -#endif /* GL_GLEXT_PROTOTYPES */ -typedef void (APIENTRYP PFNGLCOMPRESSEDTEXIMAGE3DARBPROC) (GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLsizei imageSize, const GLvoid *data); -typedef void (APIENTRYP PFNGLCOMPRESSEDTEXIMAGE2DARBPROC) (GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLint border, GLsizei imageSize, const GLvoid *data); -typedef void (APIENTRYP PFNGLCOMPRESSEDTEXIMAGE1DARBPROC) (GLenum target, GLint level, GLenum internalformat, GLsizei width, GLint border, GLsizei imageSize, const GLvoid *data); -typedef void (APIENTRYP PFNGLCOMPRESSEDTEXSUBIMAGE3DARBPROC) (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLsizei imageSize, const GLvoid *data); -typedef void (APIENTRYP PFNGLCOMPRESSEDTEXSUBIMAGE2DARBPROC) (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLsizei imageSize, const GLvoid *data); -typedef void (APIENTRYP PFNGLCOMPRESSEDTEXSUBIMAGE1DARBPROC) (GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLsizei imageSize, const GLvoid *data); -typedef void (APIENTRYP PFNGLGETCOMPRESSEDTEXIMAGEARBPROC) (GLenum target, GLint level, GLvoid *img); -#endif - -#ifndef GL_ARB_texture_border_clamp -#define GL_ARB_texture_border_clamp 1 -#endif - -#ifndef GL_ARB_point_parameters -#define GL_ARB_point_parameters 1 -#ifdef GL_GLEXT_PROTOTYPES -GLAPI void APIENTRY glPointParameterfARB (GLenum, GLfloat); -GLAPI void APIENTRY glPointParameterfvARB (GLenum, const GLfloat *); -#endif /* GL_GLEXT_PROTOTYPES */ -typedef void (APIENTRYP PFNGLPOINTPARAMETERFARBPROC) (GLenum pname, GLfloat param); -typedef void (APIENTRYP PFNGLPOINTPARAMETERFVARBPROC) (GLenum pname, const GLfloat *params); -#endif - -#ifndef GL_ARB_vertex_blend -#define GL_ARB_vertex_blend 1 -#ifdef GL_GLEXT_PROTOTYPES -GLAPI void APIENTRY glWeightbvARB (GLint, const GLbyte *); -GLAPI void APIENTRY glWeightsvARB (GLint, const GLshort *); -GLAPI void APIENTRY glWeightivARB (GLint, const GLint *); -GLAPI void APIENTRY glWeightfvARB (GLint, const GLfloat *); -GLAPI void APIENTRY glWeightdvARB (GLint, const GLdouble *); -GLAPI void APIENTRY glWeightubvARB (GLint, const GLubyte *); -GLAPI void APIENTRY glWeightusvARB (GLint, const GLushort *); -GLAPI void APIENTRY glWeightuivARB (GLint, const GLuint *); -GLAPI void APIENTRY glWeightPointerARB (GLint, GLenum, GLsizei, const GLvoid *); -GLAPI void APIENTRY glVertexBlendARB (GLint); -#endif /* GL_GLEXT_PROTOTYPES */ -typedef void (APIENTRYP PFNGLWEIGHTBVARBPROC) (GLint size, const GLbyte *weights); -typedef void (APIENTRYP PFNGLWEIGHTSVARBPROC) (GLint size, const GLshort *weights); -typedef void (APIENTRYP PFNGLWEIGHTIVARBPROC) (GLint size, const GLint *weights); -typedef void (APIENTRYP PFNGLWEIGHTFVARBPROC) (GLint size, const GLfloat *weights); -typedef void (APIENTRYP PFNGLWEIGHTDVARBPROC) (GLint size, const GLdouble *weights); -typedef void (APIENTRYP PFNGLWEIGHTUBVARBPROC) (GLint size, const GLubyte *weights); -typedef void (APIENTRYP PFNGLWEIGHTUSVARBPROC) (GLint size, const GLushort *weights); -typedef void (APIENTRYP PFNGLWEIGHTUIVARBPROC) (GLint size, const GLuint *weights); -typedef void (APIENTRYP PFNGLWEIGHTPOINTERARBPROC) (GLint size, GLenum type, GLsizei stride, const GLvoid *pointer); -typedef void (APIENTRYP PFNGLVERTEXBLENDARBPROC) (GLint count); -#endif - -#ifndef GL_ARB_matrix_palette -#define GL_ARB_matrix_palette 1 -#ifdef GL_GLEXT_PROTOTYPES -GLAPI void APIENTRY glCurrentPaletteMatrixARB (GLint); -GLAPI void APIENTRY glMatrixIndexubvARB (GLint, const GLubyte *); -GLAPI void APIENTRY glMatrixIndexusvARB (GLint, const GLushort *); -GLAPI void APIENTRY glMatrixIndexuivARB (GLint, const GLuint *); -GLAPI void APIENTRY glMatrixIndexPointerARB (GLint, GLenum, GLsizei, const GLvoid *); -#endif /* GL_GLEXT_PROTOTYPES */ -typedef void (APIENTRYP PFNGLCURRENTPALETTEMATRIXARBPROC) (GLint index); -typedef void (APIENTRYP PFNGLMATRIXINDEXUBVARBPROC) (GLint size, const GLubyte *indices); -typedef void (APIENTRYP PFNGLMATRIXINDEXUSVARBPROC) (GLint size, const GLushort *indices); -typedef void (APIENTRYP PFNGLMATRIXINDEXUIVARBPROC) (GLint size, const GLuint *indices); -typedef void (APIENTRYP PFNGLMATRIXINDEXPOINTERARBPROC) (GLint size, GLenum type, GLsizei stride, const GLvoid *pointer); -#endif - -#ifndef GL_ARB_texture_env_combine -#define GL_ARB_texture_env_combine 1 -#endif - -#ifndef GL_ARB_texture_env_crossbar -#define GL_ARB_texture_env_crossbar 1 -#endif - -#ifndef GL_ARB_texture_env_dot3 -#define GL_ARB_texture_env_dot3 1 -#endif - -#ifndef GL_ARB_texture_mirrored_repeat -#define GL_ARB_texture_mirrored_repeat 1 -#endif - -#ifndef GL_ARB_depth_texture -#define GL_ARB_depth_texture 1 -#endif - -#ifndef GL_ARB_shadow -#define GL_ARB_shadow 1 -#endif - -#ifndef GL_ARB_shadow_ambient -#define GL_ARB_shadow_ambient 1 -#endif - -#ifndef GL_ARB_window_pos -#define GL_ARB_window_pos 1 -#ifdef GL_GLEXT_PROTOTYPES -GLAPI void APIENTRY glWindowPos2dARB (GLdouble, GLdouble); -GLAPI void APIENTRY glWindowPos2dvARB (const GLdouble *); -GLAPI void APIENTRY glWindowPos2fARB (GLfloat, GLfloat); -GLAPI void APIENTRY glWindowPos2fvARB (const GLfloat *); -GLAPI void APIENTRY glWindowPos2iARB (GLint, GLint); -GLAPI void APIENTRY glWindowPos2ivARB (const GLint *); -GLAPI void APIENTRY glWindowPos2sARB (GLshort, GLshort); -GLAPI void APIENTRY glWindowPos2svARB (const GLshort *); -GLAPI void APIENTRY glWindowPos3dARB (GLdouble, GLdouble, GLdouble); -GLAPI void APIENTRY glWindowPos3dvARB (const GLdouble *); -GLAPI void APIENTRY glWindowPos3fARB (GLfloat, GLfloat, GLfloat); -GLAPI void APIENTRY glWindowPos3fvARB (const GLfloat *); -GLAPI void APIENTRY glWindowPos3iARB (GLint, GLint, GLint); -GLAPI void APIENTRY glWindowPos3ivARB (const GLint *); -GLAPI void APIENTRY glWindowPos3sARB (GLshort, GLshort, GLshort); -GLAPI void APIENTRY glWindowPos3svARB (const GLshort *); -#endif /* GL_GLEXT_PROTOTYPES */ -typedef void (APIENTRYP PFNGLWINDOWPOS2DARBPROC) (GLdouble x, GLdouble y); -typedef void (APIENTRYP PFNGLWINDOWPOS2DVARBPROC) (const GLdouble *v); -typedef void (APIENTRYP PFNGLWINDOWPOS2FARBPROC) (GLfloat x, GLfloat y); -typedef void (APIENTRYP PFNGLWINDOWPOS2FVARBPROC) (const GLfloat *v); -typedef void (APIENTRYP PFNGLWINDOWPOS2IARBPROC) (GLint x, GLint y); -typedef void (APIENTRYP PFNGLWINDOWPOS2IVARBPROC) (const GLint *v); -typedef void (APIENTRYP PFNGLWINDOWPOS2SARBPROC) (GLshort x, GLshort y); -typedef void (APIENTRYP PFNGLWINDOWPOS2SVARBPROC) (const GLshort *v); -typedef void (APIENTRYP PFNGLWINDOWPOS3DARBPROC) (GLdouble x, GLdouble y, GLdouble z); -typedef void (APIENTRYP PFNGLWINDOWPOS3DVARBPROC) (const GLdouble *v); -typedef void (APIENTRYP PFNGLWINDOWPOS3FARBPROC) (GLfloat x, GLfloat y, GLfloat z); -typedef void (APIENTRYP PFNGLWINDOWPOS3FVARBPROC) (const GLfloat *v); -typedef void (APIENTRYP PFNGLWINDOWPOS3IARBPROC) (GLint x, GLint y, GLint z); -typedef void (APIENTRYP PFNGLWINDOWPOS3IVARBPROC) (const GLint *v); -typedef void (APIENTRYP PFNGLWINDOWPOS3SARBPROC) (GLshort x, GLshort y, GLshort z); -typedef void (APIENTRYP PFNGLWINDOWPOS3SVARBPROC) (const GLshort *v); -#endif - -#ifndef GL_ARB_vertex_program -#define GL_ARB_vertex_program 1 -#ifdef GL_GLEXT_PROTOTYPES -GLAPI void APIENTRY glVertexAttrib1dARB (GLuint, GLdouble); -GLAPI void APIENTRY glVertexAttrib1dvARB (GLuint, const GLdouble *); -GLAPI void APIENTRY glVertexAttrib1fARB (GLuint, GLfloat); -GLAPI void APIENTRY glVertexAttrib1fvARB (GLuint, const GLfloat *); -GLAPI void APIENTRY glVertexAttrib1sARB (GLuint, GLshort); -GLAPI void APIENTRY glVertexAttrib1svARB (GLuint, const GLshort *); -GLAPI void APIENTRY glVertexAttrib2dARB (GLuint, GLdouble, GLdouble); -GLAPI void APIENTRY glVertexAttrib2dvARB (GLuint, const GLdouble *); -GLAPI void APIENTRY glVertexAttrib2fARB (GLuint, GLfloat, GLfloat); -GLAPI void APIENTRY glVertexAttrib2fvARB (GLuint, const GLfloat *); -GLAPI void APIENTRY glVertexAttrib2sARB (GLuint, GLshort, GLshort); -GLAPI void APIENTRY glVertexAttrib2svARB (GLuint, const GLshort *); -GLAPI void APIENTRY glVertexAttrib3dARB (GLuint, GLdouble, GLdouble, GLdouble); -GLAPI void APIENTRY glVertexAttrib3dvARB (GLuint, const GLdouble *); -GLAPI void APIENTRY glVertexAttrib3fARB (GLuint, GLfloat, GLfloat, GLfloat); -GLAPI void APIENTRY glVertexAttrib3fvARB (GLuint, const GLfloat *); -GLAPI void APIENTRY glVertexAttrib3sARB (GLuint, GLshort, GLshort, GLshort); -GLAPI void APIENTRY glVertexAttrib3svARB (GLuint, const GLshort *); -GLAPI void APIENTRY glVertexAttrib4NbvARB (GLuint, const GLbyte *); -GLAPI void APIENTRY glVertexAttrib4NivARB (GLuint, const GLint *); -GLAPI void APIENTRY glVertexAttrib4NsvARB (GLuint, const GLshort *); -GLAPI void APIENTRY glVertexAttrib4NubARB (GLuint, GLubyte, GLubyte, GLubyte, GLubyte); -GLAPI void APIENTRY glVertexAttrib4NubvARB (GLuint, const GLubyte *); -GLAPI void APIENTRY glVertexAttrib4NuivARB (GLuint, const GLuint *); -GLAPI void APIENTRY glVertexAttrib4NusvARB (GLuint, const GLushort *); -GLAPI void APIENTRY glVertexAttrib4bvARB (GLuint, const GLbyte *); -GLAPI void APIENTRY glVertexAttrib4dARB (GLuint, GLdouble, GLdouble, GLdouble, GLdouble); -GLAPI void APIENTRY glVertexAttrib4dvARB (GLuint, const GLdouble *); -GLAPI void APIENTRY glVertexAttrib4fARB (GLuint, GLfloat, GLfloat, GLfloat, GLfloat); -GLAPI void APIENTRY glVertexAttrib4fvARB (GLuint, const GLfloat *); -GLAPI void APIENTRY glVertexAttrib4ivARB (GLuint, const GLint *); -GLAPI void APIENTRY glVertexAttrib4sARB (GLuint, GLshort, GLshort, GLshort, GLshort); -GLAPI void APIENTRY glVertexAttrib4svARB (GLuint, const GLshort *); -GLAPI void APIENTRY glVertexAttrib4ubvARB (GLuint, const GLubyte *); -GLAPI void APIENTRY glVertexAttrib4uivARB (GLuint, const GLuint *); -GLAPI void APIENTRY glVertexAttrib4usvARB (GLuint, const GLushort *); -GLAPI void APIENTRY glVertexAttribPointerARB (GLuint, GLint, GLenum, GLboolean, GLsizei, const GLvoid *); -GLAPI void APIENTRY glEnableVertexAttribArrayARB (GLuint); -GLAPI void APIENTRY glDisableVertexAttribArrayARB (GLuint); -GLAPI void APIENTRY glProgramStringARB (GLenum, GLenum, GLsizei, const GLvoid *); -GLAPI void APIENTRY glBindProgramARB (GLenum, GLuint); -GLAPI void APIENTRY glDeleteProgramsARB (GLsizei, const GLuint *); -GLAPI void APIENTRY glGenProgramsARB (GLsizei, GLuint *); -GLAPI void APIENTRY glProgramEnvParameter4dARB (GLenum, GLuint, GLdouble, GLdouble, GLdouble, GLdouble); -GLAPI void APIENTRY glProgramEnvParameter4dvARB (GLenum, GLuint, const GLdouble *); -GLAPI void APIENTRY glProgramEnvParameter4fARB (GLenum, GLuint, GLfloat, GLfloat, GLfloat, GLfloat); -GLAPI void APIENTRY glProgramEnvParameter4fvARB (GLenum, GLuint, const GLfloat *); -GLAPI void APIENTRY glProgramLocalParameter4dARB (GLenum, GLuint, GLdouble, GLdouble, GLdouble, GLdouble); -GLAPI void APIENTRY glProgramLocalParameter4dvARB (GLenum, GLuint, const GLdouble *); -GLAPI void APIENTRY glProgramLocalParameter4fARB (GLenum, GLuint, GLfloat, GLfloat, GLfloat, GLfloat); -GLAPI void APIENTRY glProgramLocalParameter4fvARB (GLenum, GLuint, const GLfloat *); -GLAPI void APIENTRY glGetProgramEnvParameterdvARB (GLenum, GLuint, GLdouble *); -GLAPI void APIENTRY glGetProgramEnvParameterfvARB (GLenum, GLuint, GLfloat *); -GLAPI void APIENTRY glGetProgramLocalParameterdvARB (GLenum, GLuint, GLdouble *); -GLAPI void APIENTRY glGetProgramLocalParameterfvARB (GLenum, GLuint, GLfloat *); -GLAPI void APIENTRY glGetProgramivARB (GLenum, GLenum, GLint *); -GLAPI void APIENTRY glGetProgramStringARB (GLenum, GLenum, GLvoid *); -GLAPI void APIENTRY glGetVertexAttribdvARB (GLuint, GLenum, GLdouble *); -GLAPI void APIENTRY glGetVertexAttribfvARB (GLuint, GLenum, GLfloat *); -GLAPI void APIENTRY glGetVertexAttribivARB (GLuint, GLenum, GLint *); -GLAPI void APIENTRY glGetVertexAttribPointervARB (GLuint, GLenum, GLvoid* *); -GLAPI GLboolean APIENTRY glIsProgramARB (GLuint); -#endif /* GL_GLEXT_PROTOTYPES */ -typedef void (APIENTRYP PFNGLVERTEXATTRIB1DARBPROC) (GLuint index, GLdouble x); -typedef void (APIENTRYP PFNGLVERTEXATTRIB1DVARBPROC) (GLuint index, const GLdouble *v); -typedef void (APIENTRYP PFNGLVERTEXATTRIB1FARBPROC) (GLuint index, GLfloat x); -typedef void (APIENTRYP PFNGLVERTEXATTRIB1FVARBPROC) (GLuint index, const GLfloat *v); -typedef void (APIENTRYP PFNGLVERTEXATTRIB1SARBPROC) (GLuint index, GLshort x); -typedef void (APIENTRYP PFNGLVERTEXATTRIB1SVARBPROC) (GLuint index, const GLshort *v); -typedef void (APIENTRYP PFNGLVERTEXATTRIB2DARBPROC) (GLuint index, GLdouble x, GLdouble y); -typedef void (APIENTRYP PFNGLVERTEXATTRIB2DVARBPROC) (GLuint index, const GLdouble *v); -typedef void (APIENTRYP PFNGLVERTEXATTRIB2FARBPROC) (GLuint index, GLfloat x, GLfloat y); -typedef void (APIENTRYP PFNGLVERTEXATTRIB2FVARBPROC) (GLuint index, const GLfloat *v); -typedef void (APIENTRYP PFNGLVERTEXATTRIB2SARBPROC) (GLuint index, GLshort x, GLshort y); -typedef void (APIENTRYP PFNGLVERTEXATTRIB2SVARBPROC) (GLuint index, const GLshort *v); -typedef void (APIENTRYP PFNGLVERTEXATTRIB3DARBPROC) (GLuint index, GLdouble x, GLdouble y, GLdouble z); -typedef void (APIENTRYP PFNGLVERTEXATTRIB3DVARBPROC) (GLuint index, const GLdouble *v); -typedef void (APIENTRYP PFNGLVERTEXATTRIB3FARBPROC) (GLuint index, GLfloat x, GLfloat y, GLfloat z); -typedef void (APIENTRYP PFNGLVERTEXATTRIB3FVARBPROC) (GLuint index, const GLfloat *v); -typedef void (APIENTRYP PFNGLVERTEXATTRIB3SARBPROC) (GLuint index, GLshort x, GLshort y, GLshort z); -typedef void (APIENTRYP PFNGLVERTEXATTRIB3SVARBPROC) (GLuint index, const GLshort *v); -typedef void (APIENTRYP PFNGLVERTEXATTRIB4NBVARBPROC) (GLuint index, const GLbyte *v); -typedef void (APIENTRYP PFNGLVERTEXATTRIB4NIVARBPROC) (GLuint index, const GLint *v); -typedef void (APIENTRYP PFNGLVERTEXATTRIB4NSVARBPROC) (GLuint index, const GLshort *v); -typedef void (APIENTRYP PFNGLVERTEXATTRIB4NUBARBPROC) (GLuint index, GLubyte x, GLubyte y, GLubyte z, GLubyte w); -typedef void (APIENTRYP PFNGLVERTEXATTRIB4NUBVARBPROC) (GLuint index, const GLubyte *v); -typedef void (APIENTRYP PFNGLVERTEXATTRIB4NUIVARBPROC) (GLuint index, const GLuint *v); -typedef void (APIENTRYP PFNGLVERTEXATTRIB4NUSVARBPROC) (GLuint index, const GLushort *v); -typedef void (APIENTRYP PFNGLVERTEXATTRIB4BVARBPROC) (GLuint index, const GLbyte *v); -typedef void (APIENTRYP PFNGLVERTEXATTRIB4DARBPROC) (GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w); -typedef void (APIENTRYP PFNGLVERTEXATTRIB4DVARBPROC) (GLuint index, const GLdouble *v); -typedef void (APIENTRYP PFNGLVERTEXATTRIB4FARBPROC) (GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w); -typedef void (APIENTRYP PFNGLVERTEXATTRIB4FVARBPROC) (GLuint index, const GLfloat *v); -typedef void (APIENTRYP PFNGLVERTEXATTRIB4IVARBPROC) (GLuint index, const GLint *v); -typedef void (APIENTRYP PFNGLVERTEXATTRIB4SARBPROC) (GLuint index, GLshort x, GLshort y, GLshort z, GLshort w); -typedef void (APIENTRYP PFNGLVERTEXATTRIB4SVARBPROC) (GLuint index, const GLshort *v); -typedef void (APIENTRYP PFNGLVERTEXATTRIB4UBVARBPROC) (GLuint index, const GLubyte *v); -typedef void (APIENTRYP PFNGLVERTEXATTRIB4UIVARBPROC) (GLuint index, const GLuint *v); -typedef void (APIENTRYP PFNGLVERTEXATTRIB4USVARBPROC) (GLuint index, const GLushort *v); -typedef void (APIENTRYP PFNGLVERTEXATTRIBPOINTERARBPROC) (GLuint index, GLint size, GLenum type, GLboolean normalized, GLsizei stride, const GLvoid *pointer); -typedef void (APIENTRYP PFNGLENABLEVERTEXATTRIBARRAYARBPROC) (GLuint index); -typedef void (APIENTRYP PFNGLDISABLEVERTEXATTRIBARRAYARBPROC) (GLuint index); -typedef void (APIENTRYP PFNGLPROGRAMSTRINGARBPROC) (GLenum target, GLenum format, GLsizei len, const GLvoid *string); -typedef void (APIENTRYP PFNGLBINDPROGRAMARBPROC) (GLenum target, GLuint program); -typedef void (APIENTRYP PFNGLDELETEPROGRAMSARBPROC) (GLsizei n, const GLuint *programs); -typedef void (APIENTRYP PFNGLGENPROGRAMSARBPROC) (GLsizei n, GLuint *programs); -typedef void (APIENTRYP PFNGLPROGRAMENVPARAMETER4DARBPROC) (GLenum target, GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w); -typedef void (APIENTRYP PFNGLPROGRAMENVPARAMETER4DVARBPROC) (GLenum target, GLuint index, const GLdouble *params); -typedef void (APIENTRYP PFNGLPROGRAMENVPARAMETER4FARBPROC) (GLenum target, GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w); -typedef void (APIENTRYP PFNGLPROGRAMENVPARAMETER4FVARBPROC) (GLenum target, GLuint index, const GLfloat *params); -typedef void (APIENTRYP PFNGLPROGRAMLOCALPARAMETER4DARBPROC) (GLenum target, GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w); -typedef void (APIENTRYP PFNGLPROGRAMLOCALPARAMETER4DVARBPROC) (GLenum target, GLuint index, const GLdouble *params); -typedef void (APIENTRYP PFNGLPROGRAMLOCALPARAMETER4FARBPROC) (GLenum target, GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w); -typedef void (APIENTRYP PFNGLPROGRAMLOCALPARAMETER4FVARBPROC) (GLenum target, GLuint index, const GLfloat *params); -typedef void (APIENTRYP PFNGLGETPROGRAMENVPARAMETERDVARBPROC) (GLenum target, GLuint index, GLdouble *params); -typedef void (APIENTRYP PFNGLGETPROGRAMENVPARAMETERFVARBPROC) (GLenum target, GLuint index, GLfloat *params); -typedef void (APIENTRYP PFNGLGETPROGRAMLOCALPARAMETERDVARBPROC) (GLenum target, GLuint index, GLdouble *params); -typedef void (APIENTRYP PFNGLGETPROGRAMLOCALPARAMETERFVARBPROC) (GLenum target, GLuint index, GLfloat *params); -typedef void (APIENTRYP PFNGLGETPROGRAMIVARBPROC) (GLenum target, GLenum pname, GLint *params); -typedef void (APIENTRYP PFNGLGETPROGRAMSTRINGARBPROC) (GLenum target, GLenum pname, GLvoid *string); -typedef void (APIENTRYP PFNGLGETVERTEXATTRIBDVARBPROC) (GLuint index, GLenum pname, GLdouble *params); -typedef void (APIENTRYP PFNGLGETVERTEXATTRIBFVARBPROC) (GLuint index, GLenum pname, GLfloat *params); -typedef void (APIENTRYP PFNGLGETVERTEXATTRIBIVARBPROC) (GLuint index, GLenum pname, GLint *params); -typedef void (APIENTRYP PFNGLGETVERTEXATTRIBPOINTERVARBPROC) (GLuint index, GLenum pname, GLvoid* *pointer); -typedef GLboolean (APIENTRYP PFNGLISPROGRAMARBPROC) (GLuint program); -#endif - -#ifndef GL_ARB_fragment_program -#define GL_ARB_fragment_program 1 -/* All ARB_fragment_program entry points are shared with ARB_vertex_program. */ -#endif - -#ifndef GL_ARB_vertex_buffer_object -#define GL_ARB_vertex_buffer_object 1 -#ifdef GL_GLEXT_PROTOTYPES -GLAPI void APIENTRY glBindBufferARB (GLenum, GLuint); -GLAPI void APIENTRY glDeleteBuffersARB (GLsizei, const GLuint *); -GLAPI void APIENTRY glGenBuffersARB (GLsizei, GLuint *); -GLAPI GLboolean APIENTRY glIsBufferARB (GLuint); -GLAPI void APIENTRY glBufferDataARB (GLenum, GLsizeiptrARB, const GLvoid *, GLenum); -GLAPI void APIENTRY glBufferSubDataARB (GLenum, GLintptrARB, GLsizeiptrARB, const GLvoid *); -GLAPI void APIENTRY glGetBufferSubDataARB (GLenum, GLintptrARB, GLsizeiptrARB, GLvoid *); -GLAPI GLvoid* APIENTRY glMapBufferARB (GLenum, GLenum); -GLAPI GLboolean APIENTRY glUnmapBufferARB (GLenum); -GLAPI void APIENTRY glGetBufferParameterivARB (GLenum, GLenum, GLint *); -GLAPI void APIENTRY glGetBufferPointervARB (GLenum, GLenum, GLvoid* *); -#endif /* GL_GLEXT_PROTOTYPES */ -typedef void (APIENTRYP PFNGLBINDBUFFERARBPROC) (GLenum target, GLuint buffer); -typedef void (APIENTRYP PFNGLDELETEBUFFERSARBPROC) (GLsizei n, const GLuint *buffers); -typedef void (APIENTRYP PFNGLGENBUFFERSARBPROC) (GLsizei n, GLuint *buffers); -typedef GLboolean (APIENTRYP PFNGLISBUFFERARBPROC) (GLuint buffer); -typedef void (APIENTRYP PFNGLBUFFERDATAARBPROC) (GLenum target, GLsizeiptrARB size, const GLvoid *data, GLenum usage); -typedef void (APIENTRYP PFNGLBUFFERSUBDATAARBPROC) (GLenum target, GLintptrARB offset, GLsizeiptrARB size, const GLvoid *data); -typedef void (APIENTRYP PFNGLGETBUFFERSUBDATAARBPROC) (GLenum target, GLintptrARB offset, GLsizeiptrARB size, GLvoid *data); -typedef GLvoid* (APIENTRYP PFNGLMAPBUFFERARBPROC) (GLenum target, GLenum access); -typedef GLboolean (APIENTRYP PFNGLUNMAPBUFFERARBPROC) (GLenum target); -typedef void (APIENTRYP PFNGLGETBUFFERPARAMETERIVARBPROC) (GLenum target, GLenum pname, GLint *params); -typedef void (APIENTRYP PFNGLGETBUFFERPOINTERVARBPROC) (GLenum target, GLenum pname, GLvoid* *params); -#endif - -#ifndef GL_ARB_occlusion_query -#define GL_ARB_occlusion_query 1 -#ifdef GL_GLEXT_PROTOTYPES -GLAPI void APIENTRY glGenQueriesARB (GLsizei, GLuint *); -GLAPI void APIENTRY glDeleteQueriesARB (GLsizei, const GLuint *); -GLAPI GLboolean APIENTRY glIsQueryARB (GLuint); -GLAPI void APIENTRY glBeginQueryARB (GLenum, GLuint); -GLAPI void APIENTRY glEndQueryARB (GLenum); -GLAPI void APIENTRY glGetQueryivARB (GLenum, GLenum, GLint *); -GLAPI void APIENTRY glGetQueryObjectivARB (GLuint, GLenum, GLint *); -GLAPI void APIENTRY glGetQueryObjectuivARB (GLuint, GLenum, GLuint *); -#endif /* GL_GLEXT_PROTOTYPES */ -typedef void (APIENTRYP PFNGLGENQUERIESARBPROC) (GLsizei n, GLuint *ids); -typedef void (APIENTRYP PFNGLDELETEQUERIESARBPROC) (GLsizei n, const GLuint *ids); -typedef GLboolean (APIENTRYP PFNGLISQUERYARBPROC) (GLuint id); -typedef void (APIENTRYP PFNGLBEGINQUERYARBPROC) (GLenum target, GLuint id); -typedef void (APIENTRYP PFNGLENDQUERYARBPROC) (GLenum target); -typedef void (APIENTRYP PFNGLGETQUERYIVARBPROC) (GLenum target, GLenum pname, GLint *params); -typedef void (APIENTRYP PFNGLGETQUERYOBJECTIVARBPROC) (GLuint id, GLenum pname, GLint *params); -typedef void (APIENTRYP PFNGLGETQUERYOBJECTUIVARBPROC) (GLuint id, GLenum pname, GLuint *params); -#endif - -#ifndef GL_ARB_shader_objects -#define GL_ARB_shader_objects 1 -#ifdef GL_GLEXT_PROTOTYPES -GLAPI void APIENTRY glDeleteObjectARB (GLhandleARB); -GLAPI GLhandleARB APIENTRY glGetHandleARB (GLenum); -GLAPI void APIENTRY glDetachObjectARB (GLhandleARB, GLhandleARB); -GLAPI GLhandleARB APIENTRY glCreateShaderObjectARB (GLenum); -GLAPI void APIENTRY glShaderSourceARB (GLhandleARB, GLsizei, const GLcharARB* *, const GLint *); -GLAPI void APIENTRY glCompileShaderARB (GLhandleARB); -GLAPI GLhandleARB APIENTRY glCreateProgramObjectARB (void); -GLAPI void APIENTRY glAttachObjectARB (GLhandleARB, GLhandleARB); -GLAPI void APIENTRY glLinkProgramARB (GLhandleARB); -GLAPI void APIENTRY glUseProgramObjectARB (GLhandleARB); -GLAPI void APIENTRY glValidateProgramARB (GLhandleARB); -GLAPI void APIENTRY glUniform1fARB (GLint, GLfloat); -GLAPI void APIENTRY glUniform2fARB (GLint, GLfloat, GLfloat); -GLAPI void APIENTRY glUniform3fARB (GLint, GLfloat, GLfloat, GLfloat); -GLAPI void APIENTRY glUniform4fARB (GLint, GLfloat, GLfloat, GLfloat, GLfloat); -GLAPI void APIENTRY glUniform1iARB (GLint, GLint); -GLAPI void APIENTRY glUniform2iARB (GLint, GLint, GLint); -GLAPI void APIENTRY glUniform3iARB (GLint, GLint, GLint, GLint); -GLAPI void APIENTRY glUniform4iARB (GLint, GLint, GLint, GLint, GLint); -GLAPI void APIENTRY glUniform1fvARB (GLint, GLsizei, const GLfloat *); -GLAPI void APIENTRY glUniform2fvARB (GLint, GLsizei, const GLfloat *); -GLAPI void APIENTRY glUniform3fvARB (GLint, GLsizei, const GLfloat *); -GLAPI void APIENTRY glUniform4fvARB (GLint, GLsizei, const GLfloat *); -GLAPI void APIENTRY glUniform1ivARB (GLint, GLsizei, const GLint *); -GLAPI void APIENTRY glUniform2ivARB (GLint, GLsizei, const GLint *); -GLAPI void APIENTRY glUniform3ivARB (GLint, GLsizei, const GLint *); -GLAPI void APIENTRY glUniform4ivARB (GLint, GLsizei, const GLint *); -GLAPI void APIENTRY glUniformMatrix2fvARB (GLint, GLsizei, GLboolean, const GLfloat *); -GLAPI void APIENTRY glUniformMatrix3fvARB (GLint, GLsizei, GLboolean, const GLfloat *); -GLAPI void APIENTRY glUniformMatrix4fvARB (GLint, GLsizei, GLboolean, const GLfloat *); -GLAPI void APIENTRY glGetObjectParameterfvARB (GLhandleARB, GLenum, GLfloat *); -GLAPI void APIENTRY glGetObjectParameterivARB (GLhandleARB, GLenum, GLint *); -GLAPI void APIENTRY glGetInfoLogARB (GLhandleARB, GLsizei, GLsizei *, GLcharARB *); -GLAPI void APIENTRY glGetAttachedObjectsARB (GLhandleARB, GLsizei, GLsizei *, GLhandleARB *); -GLAPI GLint APIENTRY glGetUniformLocationARB (GLhandleARB, const GLcharARB *); -GLAPI void APIENTRY glGetActiveUniformARB (GLhandleARB, GLuint, GLsizei, GLsizei *, GLint *, GLenum *, GLcharARB *); -GLAPI void APIENTRY glGetUniformfvARB (GLhandleARB, GLint, GLfloat *); -GLAPI void APIENTRY glGetUniformivARB (GLhandleARB, GLint, GLint *); -GLAPI void APIENTRY glGetShaderSourceARB (GLhandleARB, GLsizei, GLsizei *, GLcharARB *); -#endif /* GL_GLEXT_PROTOTYPES */ -typedef void (APIENTRYP PFNGLDELETEOBJECTARBPROC) (GLhandleARB obj); -typedef GLhandleARB (APIENTRYP PFNGLGETHANDLEARBPROC) (GLenum pname); -typedef void (APIENTRYP PFNGLDETACHOBJECTARBPROC) (GLhandleARB containerObj, GLhandleARB attachedObj); -typedef GLhandleARB (APIENTRYP PFNGLCREATESHADEROBJECTARBPROC) (GLenum shaderType); -typedef void (APIENTRYP PFNGLSHADERSOURCEARBPROC) (GLhandleARB shaderObj, GLsizei count, const GLcharARB* *string, const GLint *length); -typedef void (APIENTRYP PFNGLCOMPILESHADERARBPROC) (GLhandleARB shaderObj); -typedef GLhandleARB (APIENTRYP PFNGLCREATEPROGRAMOBJECTARBPROC) (void); -typedef void (APIENTRYP PFNGLATTACHOBJECTARBPROC) (GLhandleARB containerObj, GLhandleARB obj); -typedef void (APIENTRYP PFNGLLINKPROGRAMARBPROC) (GLhandleARB programObj); -typedef void (APIENTRYP PFNGLUSEPROGRAMOBJECTARBPROC) (GLhandleARB programObj); -typedef void (APIENTRYP PFNGLVALIDATEPROGRAMARBPROC) (GLhandleARB programObj); -typedef void (APIENTRYP PFNGLUNIFORM1FARBPROC) (GLint location, GLfloat v0); -typedef void (APIENTRYP PFNGLUNIFORM2FARBPROC) (GLint location, GLfloat v0, GLfloat v1); -typedef void (APIENTRYP PFNGLUNIFORM3FARBPROC) (GLint location, GLfloat v0, GLfloat v1, GLfloat v2); -typedef void (APIENTRYP PFNGLUNIFORM4FARBPROC) (GLint location, GLfloat v0, GLfloat v1, GLfloat v2, GLfloat v3); -typedef void (APIENTRYP PFNGLUNIFORM1IARBPROC) (GLint location, GLint v0); -typedef void (APIENTRYP PFNGLUNIFORM2IARBPROC) (GLint location, GLint v0, GLint v1); -typedef void (APIENTRYP PFNGLUNIFORM3IARBPROC) (GLint location, GLint v0, GLint v1, GLint v2); -typedef void (APIENTRYP PFNGLUNIFORM4IARBPROC) (GLint location, GLint v0, GLint v1, GLint v2, GLint v3); -typedef void (APIENTRYP PFNGLUNIFORM1FVARBPROC) (GLint location, GLsizei count, const GLfloat *value); -typedef void (APIENTRYP PFNGLUNIFORM2FVARBPROC) (GLint location, GLsizei count, const GLfloat *value); -typedef void (APIENTRYP PFNGLUNIFORM3FVARBPROC) (GLint location, GLsizei count, const GLfloat *value); -typedef void (APIENTRYP PFNGLUNIFORM4FVARBPROC) (GLint location, GLsizei count, const GLfloat *value); -typedef void (APIENTRYP PFNGLUNIFORM1IVARBPROC) (GLint location, GLsizei count, const GLint *value); -typedef void (APIENTRYP PFNGLUNIFORM2IVARBPROC) (GLint location, GLsizei count, const GLint *value); -typedef void (APIENTRYP PFNGLUNIFORM3IVARBPROC) (GLint location, GLsizei count, const GLint *value); -typedef void (APIENTRYP PFNGLUNIFORM4IVARBPROC) (GLint location, GLsizei count, const GLint *value); -typedef void (APIENTRYP PFNGLUNIFORMMATRIX2FVARBPROC) (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); -typedef void (APIENTRYP PFNGLUNIFORMMATRIX3FVARBPROC) (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); -typedef void (APIENTRYP PFNGLUNIFORMMATRIX4FVARBPROC) (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); -typedef void (APIENTRYP PFNGLGETOBJECTPARAMETERFVARBPROC) (GLhandleARB obj, GLenum pname, GLfloat *params); -typedef void (APIENTRYP PFNGLGETOBJECTPARAMETERIVARBPROC) (GLhandleARB obj, GLenum pname, GLint *params); -typedef void (APIENTRYP PFNGLGETINFOLOGARBPROC) (GLhandleARB obj, GLsizei maxLength, GLsizei *length, GLcharARB *infoLog); -typedef void (APIENTRYP PFNGLGETATTACHEDOBJECTSARBPROC) (GLhandleARB containerObj, GLsizei maxCount, GLsizei *count, GLhandleARB *obj); -typedef GLint (APIENTRYP PFNGLGETUNIFORMLOCATIONARBPROC) (GLhandleARB programObj, const GLcharARB *name); -typedef void (APIENTRYP PFNGLGETACTIVEUNIFORMARBPROC) (GLhandleARB programObj, GLuint index, GLsizei maxLength, GLsizei *length, GLint *size, GLenum *type, GLcharARB *name); -typedef void (APIENTRYP PFNGLGETUNIFORMFVARBPROC) (GLhandleARB programObj, GLint location, GLfloat *params); -typedef void (APIENTRYP PFNGLGETUNIFORMIVARBPROC) (GLhandleARB programObj, GLint location, GLint *params); -typedef void (APIENTRYP PFNGLGETSHADERSOURCEARBPROC) (GLhandleARB obj, GLsizei maxLength, GLsizei *length, GLcharARB *source); -#endif - -#ifndef GL_ARB_vertex_shader -#define GL_ARB_vertex_shader 1 -#ifdef GL_GLEXT_PROTOTYPES -GLAPI void APIENTRY glBindAttribLocationARB (GLhandleARB, GLuint, const GLcharARB *); -GLAPI void APIENTRY glGetActiveAttribARB (GLhandleARB, GLuint, GLsizei, GLsizei *, GLint *, GLenum *, GLcharARB *); -GLAPI GLint APIENTRY glGetAttribLocationARB (GLhandleARB, const GLcharARB *); -#endif /* GL_GLEXT_PROTOTYPES */ -typedef void (APIENTRYP PFNGLBINDATTRIBLOCATIONARBPROC) (GLhandleARB programObj, GLuint index, const GLcharARB *name); -typedef void (APIENTRYP PFNGLGETACTIVEATTRIBARBPROC) (GLhandleARB programObj, GLuint index, GLsizei maxLength, GLsizei *length, GLint *size, GLenum *type, GLcharARB *name); -typedef GLint (APIENTRYP PFNGLGETATTRIBLOCATIONARBPROC) (GLhandleARB programObj, const GLcharARB *name); -#endif - -#ifndef GL_ARB_fragment_shader -#define GL_ARB_fragment_shader 1 -#endif - -#ifndef GL_ARB_shading_language_100 -#define GL_ARB_shading_language_100 1 -#endif - -#ifndef GL_ARB_texture_non_power_of_two -#define GL_ARB_texture_non_power_of_two 1 -#endif - -#ifndef GL_ARB_point_sprite -#define GL_ARB_point_sprite 1 -#endif - -#ifndef GL_ARB_fragment_program_shadow -#define GL_ARB_fragment_program_shadow 1 -#endif - -#ifndef GL_ARB_draw_buffers -#define GL_ARB_draw_buffers 1 -#ifdef GL_GLEXT_PROTOTYPES -GLAPI void APIENTRY glDrawBuffersARB (GLsizei, const GLenum *); -#endif /* GL_GLEXT_PROTOTYPES */ -typedef void (APIENTRYP PFNGLDRAWBUFFERSARBPROC) (GLsizei n, const GLenum *bufs); -#endif - -#ifndef GL_ARB_texture_rectangle -#define GL_ARB_texture_rectangle 1 -#endif - -#ifndef GL_ARB_color_buffer_float -#define GL_ARB_color_buffer_float 1 -#ifdef GL_GLEXT_PROTOTYPES -GLAPI void APIENTRY glClampColorARB (GLenum, GLenum); -#endif /* GL_GLEXT_PROTOTYPES */ -typedef void (APIENTRYP PFNGLCLAMPCOLORARBPROC) (GLenum target, GLenum clamp); -#endif - -#ifndef GL_ARB_half_float_pixel -#define GL_ARB_half_float_pixel 1 -#endif - -#ifndef GL_ARB_texture_float -#define GL_ARB_texture_float 1 -#endif - -#ifndef GL_ARB_pixel_buffer_object -#define GL_ARB_pixel_buffer_object 1 -#endif - -#ifndef GL_EXT_abgr -#define GL_EXT_abgr 1 -#endif - -#ifndef GL_EXT_blend_color -#define GL_EXT_blend_color 1 -#ifdef GL_GLEXT_PROTOTYPES -GLAPI void APIENTRY glBlendColorEXT (GLclampf, GLclampf, GLclampf, GLclampf); -#endif /* GL_GLEXT_PROTOTYPES */ -typedef void (APIENTRYP PFNGLBLENDCOLOREXTPROC) (GLclampf red, GLclampf green, GLclampf blue, GLclampf alpha); -#endif - -#ifndef GL_EXT_polygon_offset -#define GL_EXT_polygon_offset 1 -#ifdef GL_GLEXT_PROTOTYPES -GLAPI void APIENTRY glPolygonOffsetEXT (GLfloat, GLfloat); -#endif /* GL_GLEXT_PROTOTYPES */ -typedef void (APIENTRYP PFNGLPOLYGONOFFSETEXTPROC) (GLfloat factor, GLfloat bias); -#endif - -#ifndef GL_EXT_texture -#define GL_EXT_texture 1 -#endif - -#ifndef GL_EXT_texture3D -#define GL_EXT_texture3D 1 -#ifdef GL_GLEXT_PROTOTYPES -GLAPI void APIENTRY glTexImage3DEXT (GLenum, GLint, GLenum, GLsizei, GLsizei, GLsizei, GLint, GLenum, GLenum, const GLvoid *); -GLAPI void APIENTRY glTexSubImage3DEXT (GLenum, GLint, GLint, GLint, GLint, GLsizei, GLsizei, GLsizei, GLenum, GLenum, const GLvoid *); -#endif /* GL_GLEXT_PROTOTYPES */ -typedef void (APIENTRYP PFNGLTEXIMAGE3DEXTPROC) (GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLenum format, GLenum type, const GLvoid *pixels); -typedef void (APIENTRYP PFNGLTEXSUBIMAGE3DEXTPROC) (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, const GLvoid *pixels); -#endif - -#ifndef GL_SGIS_texture_filter4 -#define GL_SGIS_texture_filter4 1 -#ifdef GL_GLEXT_PROTOTYPES -GLAPI void APIENTRY glGetTexFilterFuncSGIS (GLenum, GLenum, GLfloat *); -GLAPI void APIENTRY glTexFilterFuncSGIS (GLenum, GLenum, GLsizei, const GLfloat *); -#endif /* GL_GLEXT_PROTOTYPES */ -typedef void (APIENTRYP PFNGLGETTEXFILTERFUNCSGISPROC) (GLenum target, GLenum filter, GLfloat *weights); -typedef void (APIENTRYP PFNGLTEXFILTERFUNCSGISPROC) (GLenum target, GLenum filter, GLsizei n, const GLfloat *weights); -#endif - -#ifndef GL_EXT_subtexture -#define GL_EXT_subtexture 1 -#ifdef GL_GLEXT_PROTOTYPES -GLAPI void APIENTRY glTexSubImage1DEXT (GLenum, GLint, GLint, GLsizei, GLenum, GLenum, const GLvoid *); -GLAPI void APIENTRY glTexSubImage2DEXT (GLenum, GLint, GLint, GLint, GLsizei, GLsizei, GLenum, GLenum, const GLvoid *); -#endif /* GL_GLEXT_PROTOTYPES */ -typedef void (APIENTRYP PFNGLTEXSUBIMAGE1DEXTPROC) (GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLenum type, const GLvoid *pixels); -typedef void (APIENTRYP PFNGLTEXSUBIMAGE2DEXTPROC) (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLenum type, const GLvoid *pixels); -#endif - -#ifndef GL_EXT_copy_texture -#define GL_EXT_copy_texture 1 -#ifdef GL_GLEXT_PROTOTYPES -GLAPI void APIENTRY glCopyTexImage1DEXT (GLenum, GLint, GLenum, GLint, GLint, GLsizei, GLint); -GLAPI void APIENTRY glCopyTexImage2DEXT (GLenum, GLint, GLenum, GLint, GLint, GLsizei, GLsizei, GLint); -GLAPI void APIENTRY glCopyTexSubImage1DEXT (GLenum, GLint, GLint, GLint, GLint, GLsizei); -GLAPI void APIENTRY glCopyTexSubImage2DEXT (GLenum, GLint, GLint, GLint, GLint, GLint, GLsizei, GLsizei); -GLAPI void APIENTRY glCopyTexSubImage3DEXT (GLenum, GLint, GLint, GLint, GLint, GLint, GLint, GLsizei, GLsizei); -#endif /* GL_GLEXT_PROTOTYPES */ -typedef void (APIENTRYP PFNGLCOPYTEXIMAGE1DEXTPROC) (GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLint border); -typedef void (APIENTRYP PFNGLCOPYTEXIMAGE2DEXTPROC) (GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLsizei height, GLint border); -typedef void (APIENTRYP PFNGLCOPYTEXSUBIMAGE1DEXTPROC) (GLenum target, GLint level, GLint xoffset, GLint x, GLint y, GLsizei width); -typedef void (APIENTRYP PFNGLCOPYTEXSUBIMAGE2DEXTPROC) (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint x, GLint y, GLsizei width, GLsizei height); -typedef void (APIENTRYP PFNGLCOPYTEXSUBIMAGE3DEXTPROC) (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLint x, GLint y, GLsizei width, GLsizei height); -#endif - -#ifndef GL_EXT_histogram -#define GL_EXT_histogram 1 -#ifdef GL_GLEXT_PROTOTYPES -GLAPI void APIENTRY glGetHistogramEXT (GLenum, GLboolean, GLenum, GLenum, GLvoid *); -GLAPI void APIENTRY glGetHistogramParameterfvEXT (GLenum, GLenum, GLfloat *); -GLAPI void APIENTRY glGetHistogramParameterivEXT (GLenum, GLenum, GLint *); -GLAPI void APIENTRY glGetMinmaxEXT (GLenum, GLboolean, GLenum, GLenum, GLvoid *); -GLAPI void APIENTRY glGetMinmaxParameterfvEXT (GLenum, GLenum, GLfloat *); -GLAPI void APIENTRY glGetMinmaxParameterivEXT (GLenum, GLenum, GLint *); -GLAPI void APIENTRY glHistogramEXT (GLenum, GLsizei, GLenum, GLboolean); -GLAPI void APIENTRY glMinmaxEXT (GLenum, GLenum, GLboolean); -GLAPI void APIENTRY glResetHistogramEXT (GLenum); -GLAPI void APIENTRY glResetMinmaxEXT (GLenum); -#endif /* GL_GLEXT_PROTOTYPES */ -typedef void (APIENTRYP PFNGLGETHISTOGRAMEXTPROC) (GLenum target, GLboolean reset, GLenum format, GLenum type, GLvoid *values); -typedef void (APIENTRYP PFNGLGETHISTOGRAMPARAMETERFVEXTPROC) (GLenum target, GLenum pname, GLfloat *params); -typedef void (APIENTRYP PFNGLGETHISTOGRAMPARAMETERIVEXTPROC) (GLenum target, GLenum pname, GLint *params); -typedef void (APIENTRYP PFNGLGETMINMAXEXTPROC) (GLenum target, GLboolean reset, GLenum format, GLenum type, GLvoid *values); -typedef void (APIENTRYP PFNGLGETMINMAXPARAMETERFVEXTPROC) (GLenum target, GLenum pname, GLfloat *params); -typedef void (APIENTRYP PFNGLGETMINMAXPARAMETERIVEXTPROC) (GLenum target, GLenum pname, GLint *params); -typedef void (APIENTRYP PFNGLHISTOGRAMEXTPROC) (GLenum target, GLsizei width, GLenum internalformat, GLboolean sink); -typedef void (APIENTRYP PFNGLMINMAXEXTPROC) (GLenum target, GLenum internalformat, GLboolean sink); -typedef void (APIENTRYP PFNGLRESETHISTOGRAMEXTPROC) (GLenum target); -typedef void (APIENTRYP PFNGLRESETMINMAXEXTPROC) (GLenum target); -#endif - -#ifndef GL_EXT_convolution -#define GL_EXT_convolution 1 -#ifdef GL_GLEXT_PROTOTYPES -GLAPI void APIENTRY glConvolutionFilter1DEXT (GLenum, GLenum, GLsizei, GLenum, GLenum, const GLvoid *); -GLAPI void APIENTRY glConvolutionFilter2DEXT (GLenum, GLenum, GLsizei, GLsizei, GLenum, GLenum, const GLvoid *); -GLAPI void APIENTRY glConvolutionParameterfEXT (GLenum, GLenum, GLfloat); -GLAPI void APIENTRY glConvolutionParameterfvEXT (GLenum, GLenum, const GLfloat *); -GLAPI void APIENTRY glConvolutionParameteriEXT (GLenum, GLenum, GLint); -GLAPI void APIENTRY glConvolutionParameterivEXT (GLenum, GLenum, const GLint *); -GLAPI void APIENTRY glCopyConvolutionFilter1DEXT (GLenum, GLenum, GLint, GLint, GLsizei); -GLAPI void APIENTRY glCopyConvolutionFilter2DEXT (GLenum, GLenum, GLint, GLint, GLsizei, GLsizei); -GLAPI void APIENTRY glGetConvolutionFilterEXT (GLenum, GLenum, GLenum, GLvoid *); -GLAPI void APIENTRY glGetConvolutionParameterfvEXT (GLenum, GLenum, GLfloat *); -GLAPI void APIENTRY glGetConvolutionParameterivEXT (GLenum, GLenum, GLint *); -GLAPI void APIENTRY glGetSeparableFilterEXT (GLenum, GLenum, GLenum, GLvoid *, GLvoid *, GLvoid *); -GLAPI void APIENTRY glSeparableFilter2DEXT (GLenum, GLenum, GLsizei, GLsizei, GLenum, GLenum, const GLvoid *, const GLvoid *); -#endif /* GL_GLEXT_PROTOTYPES */ -typedef void (APIENTRYP PFNGLCONVOLUTIONFILTER1DEXTPROC) (GLenum target, GLenum internalformat, GLsizei width, GLenum format, GLenum type, const GLvoid *image); -typedef void (APIENTRYP PFNGLCONVOLUTIONFILTER2DEXTPROC) (GLenum target, GLenum internalformat, GLsizei width, GLsizei height, GLenum format, GLenum type, const GLvoid *image); -typedef void (APIENTRYP PFNGLCONVOLUTIONPARAMETERFEXTPROC) (GLenum target, GLenum pname, GLfloat params); -typedef void (APIENTRYP PFNGLCONVOLUTIONPARAMETERFVEXTPROC) (GLenum target, GLenum pname, const GLfloat *params); -typedef void (APIENTRYP PFNGLCONVOLUTIONPARAMETERIEXTPROC) (GLenum target, GLenum pname, GLint params); -typedef void (APIENTRYP PFNGLCONVOLUTIONPARAMETERIVEXTPROC) (GLenum target, GLenum pname, const GLint *params); -typedef void (APIENTRYP PFNGLCOPYCONVOLUTIONFILTER1DEXTPROC) (GLenum target, GLenum internalformat, GLint x, GLint y, GLsizei width); -typedef void (APIENTRYP PFNGLCOPYCONVOLUTIONFILTER2DEXTPROC) (GLenum target, GLenum internalformat, GLint x, GLint y, GLsizei width, GLsizei height); -typedef void (APIENTRYP PFNGLGETCONVOLUTIONFILTEREXTPROC) (GLenum target, GLenum format, GLenum type, GLvoid *image); -typedef void (APIENTRYP PFNGLGETCONVOLUTIONPARAMETERFVEXTPROC) (GLenum target, GLenum pname, GLfloat *params); -typedef void (APIENTRYP PFNGLGETCONVOLUTIONPARAMETERIVEXTPROC) (GLenum target, GLenum pname, GLint *params); -typedef void (APIENTRYP PFNGLGETSEPARABLEFILTEREXTPROC) (GLenum target, GLenum format, GLenum type, GLvoid *row, GLvoid *column, GLvoid *span); -typedef void (APIENTRYP PFNGLSEPARABLEFILTER2DEXTPROC) (GLenum target, GLenum internalformat, GLsizei width, GLsizei height, GLenum format, GLenum type, const GLvoid *row, const GLvoid *column); -#endif - -#ifndef GL_SGI_color_matrix -#define GL_SGI_color_matrix 1 -#endif - -#ifndef GL_SGI_color_table -#define GL_SGI_color_table 1 -#ifdef GL_GLEXT_PROTOTYPES -GLAPI void APIENTRY glColorTableSGI (GLenum, GLenum, GLsizei, GLenum, GLenum, const GLvoid *); -GLAPI void APIENTRY glColorTableParameterfvSGI (GLenum, GLenum, const GLfloat *); -GLAPI void APIENTRY glColorTableParameterivSGI (GLenum, GLenum, const GLint *); -GLAPI void APIENTRY glCopyColorTableSGI (GLenum, GLenum, GLint, GLint, GLsizei); -GLAPI void APIENTRY glGetColorTableSGI (GLenum, GLenum, GLenum, GLvoid *); -GLAPI void APIENTRY glGetColorTableParameterfvSGI (GLenum, GLenum, GLfloat *); -GLAPI void APIENTRY glGetColorTableParameterivSGI (GLenum, GLenum, GLint *); -#endif /* GL_GLEXT_PROTOTYPES */ -typedef void (APIENTRYP PFNGLCOLORTABLESGIPROC) (GLenum target, GLenum internalformat, GLsizei width, GLenum format, GLenum type, const GLvoid *table); -typedef void (APIENTRYP PFNGLCOLORTABLEPARAMETERFVSGIPROC) (GLenum target, GLenum pname, const GLfloat *params); -typedef void (APIENTRYP PFNGLCOLORTABLEPARAMETERIVSGIPROC) (GLenum target, GLenum pname, const GLint *params); -typedef void (APIENTRYP PFNGLCOPYCOLORTABLESGIPROC) (GLenum target, GLenum internalformat, GLint x, GLint y, GLsizei width); -typedef void (APIENTRYP PFNGLGETCOLORTABLESGIPROC) (GLenum target, GLenum format, GLenum type, GLvoid *table); -typedef void (APIENTRYP PFNGLGETCOLORTABLEPARAMETERFVSGIPROC) (GLenum target, GLenum pname, GLfloat *params); -typedef void (APIENTRYP PFNGLGETCOLORTABLEPARAMETERIVSGIPROC) (GLenum target, GLenum pname, GLint *params); -#endif - -#ifndef GL_SGIX_pixel_texture -#define GL_SGIX_pixel_texture 1 -#ifdef GL_GLEXT_PROTOTYPES -GLAPI void APIENTRY glPixelTexGenSGIX (GLenum); -#endif /* GL_GLEXT_PROTOTYPES */ -typedef void (APIENTRYP PFNGLPIXELTEXGENSGIXPROC) (GLenum mode); -#endif - -#ifndef GL_SGIS_pixel_texture -#define GL_SGIS_pixel_texture 1 -#ifdef GL_GLEXT_PROTOTYPES -GLAPI void APIENTRY glPixelTexGenParameteriSGIS (GLenum, GLint); -GLAPI void APIENTRY glPixelTexGenParameterivSGIS (GLenum, const GLint *); -GLAPI void APIENTRY glPixelTexGenParameterfSGIS (GLenum, GLfloat); -GLAPI void APIENTRY glPixelTexGenParameterfvSGIS (GLenum, const GLfloat *); -GLAPI void APIENTRY glGetPixelTexGenParameterivSGIS (GLenum, GLint *); -GLAPI void APIENTRY glGetPixelTexGenParameterfvSGIS (GLenum, GLfloat *); -#endif /* GL_GLEXT_PROTOTYPES */ -typedef void (APIENTRYP PFNGLPIXELTEXGENPARAMETERISGISPROC) (GLenum pname, GLint param); -typedef void (APIENTRYP PFNGLPIXELTEXGENPARAMETERIVSGISPROC) (GLenum pname, const GLint *params); -typedef void (APIENTRYP PFNGLPIXELTEXGENPARAMETERFSGISPROC) (GLenum pname, GLfloat param); -typedef void (APIENTRYP PFNGLPIXELTEXGENPARAMETERFVSGISPROC) (GLenum pname, const GLfloat *params); -typedef void (APIENTRYP PFNGLGETPIXELTEXGENPARAMETERIVSGISPROC) (GLenum pname, GLint *params); -typedef void (APIENTRYP PFNGLGETPIXELTEXGENPARAMETERFVSGISPROC) (GLenum pname, GLfloat *params); -#endif - -#ifndef GL_SGIS_texture4D -#define GL_SGIS_texture4D 1 -#ifdef GL_GLEXT_PROTOTYPES -GLAPI void APIENTRY glTexImage4DSGIS (GLenum, GLint, GLenum, GLsizei, GLsizei, GLsizei, GLsizei, GLint, GLenum, GLenum, const GLvoid *); -GLAPI void APIENTRY glTexSubImage4DSGIS (GLenum, GLint, GLint, GLint, GLint, GLint, GLsizei, GLsizei, GLsizei, GLsizei, GLenum, GLenum, const GLvoid *); -#endif /* GL_GLEXT_PROTOTYPES */ -typedef void (APIENTRYP PFNGLTEXIMAGE4DSGISPROC) (GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLsizei size4d, GLint border, GLenum format, GLenum type, const GLvoid *pixels); -typedef void (APIENTRYP PFNGLTEXSUBIMAGE4DSGISPROC) (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLint woffset, GLsizei width, GLsizei height, GLsizei depth, GLsizei size4d, GLenum format, GLenum type, const GLvoid *pixels); -#endif - -#ifndef GL_SGI_texture_color_table -#define GL_SGI_texture_color_table 1 -#endif - -#ifndef GL_EXT_cmyka -#define GL_EXT_cmyka 1 -#endif - -#ifndef GL_EXT_texture_object -#define GL_EXT_texture_object 1 -#ifdef GL_GLEXT_PROTOTYPES -GLAPI GLboolean APIENTRY glAreTexturesResidentEXT (GLsizei, const GLuint *, GLboolean *); -GLAPI void APIENTRY glBindTextureEXT (GLenum, GLuint); -GLAPI void APIENTRY glDeleteTexturesEXT (GLsizei, const GLuint *); -GLAPI void APIENTRY glGenTexturesEXT (GLsizei, GLuint *); -GLAPI GLboolean APIENTRY glIsTextureEXT (GLuint); -GLAPI void APIENTRY glPrioritizeTexturesEXT (GLsizei, const GLuint *, const GLclampf *); -#endif /* GL_GLEXT_PROTOTYPES */ -typedef GLboolean (APIENTRYP PFNGLARETEXTURESRESIDENTEXTPROC) (GLsizei n, const GLuint *textures, GLboolean *residences); -typedef void (APIENTRYP PFNGLBINDTEXTUREEXTPROC) (GLenum target, GLuint texture); -typedef void (APIENTRYP PFNGLDELETETEXTURESEXTPROC) (GLsizei n, const GLuint *textures); -typedef void (APIENTRYP PFNGLGENTEXTURESEXTPROC) (GLsizei n, GLuint *textures); -typedef GLboolean (APIENTRYP PFNGLISTEXTUREEXTPROC) (GLuint texture); -typedef void (APIENTRYP PFNGLPRIORITIZETEXTURESEXTPROC) (GLsizei n, const GLuint *textures, const GLclampf *priorities); -#endif - -#ifndef GL_SGIS_detail_texture -#define GL_SGIS_detail_texture 1 -#ifdef GL_GLEXT_PROTOTYPES -GLAPI void APIENTRY glDetailTexFuncSGIS (GLenum, GLsizei, const GLfloat *); -GLAPI void APIENTRY glGetDetailTexFuncSGIS (GLenum, GLfloat *); -#endif /* GL_GLEXT_PROTOTYPES */ -typedef void (APIENTRYP PFNGLDETAILTEXFUNCSGISPROC) (GLenum target, GLsizei n, const GLfloat *points); -typedef void (APIENTRYP PFNGLGETDETAILTEXFUNCSGISPROC) (GLenum target, GLfloat *points); -#endif - -#ifndef GL_SGIS_sharpen_texture -#define GL_SGIS_sharpen_texture 1 -#ifdef GL_GLEXT_PROTOTYPES -GLAPI void APIENTRY glSharpenTexFuncSGIS (GLenum, GLsizei, const GLfloat *); -GLAPI void APIENTRY glGetSharpenTexFuncSGIS (GLenum, GLfloat *); -#endif /* GL_GLEXT_PROTOTYPES */ -typedef void (APIENTRYP PFNGLSHARPENTEXFUNCSGISPROC) (GLenum target, GLsizei n, const GLfloat *points); -typedef void (APIENTRYP PFNGLGETSHARPENTEXFUNCSGISPROC) (GLenum target, GLfloat *points); -#endif - -#ifndef GL_EXT_packed_pixels -#define GL_EXT_packed_pixels 1 -#endif - -#ifndef GL_SGIS_texture_lod -#define GL_SGIS_texture_lod 1 -#endif - -#ifndef GL_SGIS_multisample -#define GL_SGIS_multisample 1 -#ifdef GL_GLEXT_PROTOTYPES -GLAPI void APIENTRY glSampleMaskSGIS (GLclampf, GLboolean); -GLAPI void APIENTRY glSamplePatternSGIS (GLenum); -#endif /* GL_GLEXT_PROTOTYPES */ -typedef void (APIENTRYP PFNGLSAMPLEMASKSGISPROC) (GLclampf value, GLboolean invert); -typedef void (APIENTRYP PFNGLSAMPLEPATTERNSGISPROC) (GLenum pattern); -#endif - -#ifndef GL_EXT_rescale_normal -#define GL_EXT_rescale_normal 1 -#endif - -#ifndef GL_EXT_vertex_array -#define GL_EXT_vertex_array 1 -#ifdef GL_GLEXT_PROTOTYPES -GLAPI void APIENTRY glArrayElementEXT (GLint); -GLAPI void APIENTRY glColorPointerEXT (GLint, GLenum, GLsizei, GLsizei, const GLvoid *); -GLAPI void APIENTRY glDrawArraysEXT (GLenum, GLint, GLsizei); -GLAPI void APIENTRY glEdgeFlagPointerEXT (GLsizei, GLsizei, const GLboolean *); -GLAPI void APIENTRY glGetPointervEXT (GLenum, GLvoid* *); -GLAPI void APIENTRY glIndexPointerEXT (GLenum, GLsizei, GLsizei, const GLvoid *); -GLAPI void APIENTRY glNormalPointerEXT (GLenum, GLsizei, GLsizei, const GLvoid *); -GLAPI void APIENTRY glTexCoordPointerEXT (GLint, GLenum, GLsizei, GLsizei, const GLvoid *); -GLAPI void APIENTRY glVertexPointerEXT (GLint, GLenum, GLsizei, GLsizei, const GLvoid *); -#endif /* GL_GLEXT_PROTOTYPES */ -typedef void (APIENTRYP PFNGLARRAYELEMENTEXTPROC) (GLint i); -typedef void (APIENTRYP PFNGLCOLORPOINTEREXTPROC) (GLint size, GLenum type, GLsizei stride, GLsizei count, const GLvoid *pointer); -typedef void (APIENTRYP PFNGLDRAWARRAYSEXTPROC) (GLenum mode, GLint first, GLsizei count); -typedef void (APIENTRYP PFNGLEDGEFLAGPOINTEREXTPROC) (GLsizei stride, GLsizei count, const GLboolean *pointer); -typedef void (APIENTRYP PFNGLGETPOINTERVEXTPROC) (GLenum pname, GLvoid* *params); -typedef void (APIENTRYP PFNGLINDEXPOINTEREXTPROC) (GLenum type, GLsizei stride, GLsizei count, const GLvoid *pointer); -typedef void (APIENTRYP PFNGLNORMALPOINTEREXTPROC) (GLenum type, GLsizei stride, GLsizei count, const GLvoid *pointer); -typedef void (APIENTRYP PFNGLTEXCOORDPOINTEREXTPROC) (GLint size, GLenum type, GLsizei stride, GLsizei count, const GLvoid *pointer); -typedef void (APIENTRYP PFNGLVERTEXPOINTEREXTPROC) (GLint size, GLenum type, GLsizei stride, GLsizei count, const GLvoid *pointer); -#endif - -#ifndef GL_EXT_misc_attribute -#define GL_EXT_misc_attribute 1 -#endif - -#ifndef GL_SGIS_generate_mipmap -#define GL_SGIS_generate_mipmap 1 -#endif - -#ifndef GL_SGIX_clipmap -#define GL_SGIX_clipmap 1 -#endif - -#ifndef GL_SGIX_shadow -#define GL_SGIX_shadow 1 -#endif - -#ifndef GL_SGIS_texture_edge_clamp -#define GL_SGIS_texture_edge_clamp 1 -#endif - -#ifndef GL_SGIS_texture_border_clamp -#define GL_SGIS_texture_border_clamp 1 -#endif - -#ifndef GL_EXT_blend_minmax -#define GL_EXT_blend_minmax 1 -#ifdef GL_GLEXT_PROTOTYPES -GLAPI void APIENTRY glBlendEquationEXT (GLenum); -#endif /* GL_GLEXT_PROTOTYPES */ -typedef void (APIENTRYP PFNGLBLENDEQUATIONEXTPROC) (GLenum mode); -#endif - -#ifndef GL_EXT_blend_subtract -#define GL_EXT_blend_subtract 1 -#endif - -#ifndef GL_EXT_blend_logic_op -#define GL_EXT_blend_logic_op 1 -#endif - -#ifndef GL_SGIX_interlace -#define GL_SGIX_interlace 1 -#endif - -#ifndef GL_SGIX_pixel_tiles -#define GL_SGIX_pixel_tiles 1 -#endif - -#ifndef GL_SGIX_texture_select -#define GL_SGIX_texture_select 1 -#endif - -#ifndef GL_SGIX_sprite -#define GL_SGIX_sprite 1 -#ifdef GL_GLEXT_PROTOTYPES -GLAPI void APIENTRY glSpriteParameterfSGIX (GLenum, GLfloat); -GLAPI void APIENTRY glSpriteParameterfvSGIX (GLenum, const GLfloat *); -GLAPI void APIENTRY glSpriteParameteriSGIX (GLenum, GLint); -GLAPI void APIENTRY glSpriteParameterivSGIX (GLenum, const GLint *); -#endif /* GL_GLEXT_PROTOTYPES */ -typedef void (APIENTRYP PFNGLSPRITEPARAMETERFSGIXPROC) (GLenum pname, GLfloat param); -typedef void (APIENTRYP PFNGLSPRITEPARAMETERFVSGIXPROC) (GLenum pname, const GLfloat *params); -typedef void (APIENTRYP PFNGLSPRITEPARAMETERISGIXPROC) (GLenum pname, GLint param); -typedef void (APIENTRYP PFNGLSPRITEPARAMETERIVSGIXPROC) (GLenum pname, const GLint *params); -#endif - -#ifndef GL_SGIX_texture_multi_buffer -#define GL_SGIX_texture_multi_buffer 1 -#endif - -#ifndef GL_EXT_point_parameters -#define GL_EXT_point_parameters 1 -#ifdef GL_GLEXT_PROTOTYPES -GLAPI void APIENTRY glPointParameterfEXT (GLenum, GLfloat); -GLAPI void APIENTRY glPointParameterfvEXT (GLenum, const GLfloat *); -#endif /* GL_GLEXT_PROTOTYPES */ -typedef void (APIENTRYP PFNGLPOINTPARAMETERFEXTPROC) (GLenum pname, GLfloat param); -typedef void (APIENTRYP PFNGLPOINTPARAMETERFVEXTPROC) (GLenum pname, const GLfloat *params); -#endif - -#ifndef GL_SGIS_point_parameters -#define GL_SGIS_point_parameters 1 -#ifdef GL_GLEXT_PROTOTYPES -GLAPI void APIENTRY glPointParameterfSGIS (GLenum, GLfloat); -GLAPI void APIENTRY glPointParameterfvSGIS (GLenum, const GLfloat *); -#endif /* GL_GLEXT_PROTOTYPES */ -typedef void (APIENTRYP PFNGLPOINTPARAMETERFSGISPROC) (GLenum pname, GLfloat param); -typedef void (APIENTRYP PFNGLPOINTPARAMETERFVSGISPROC) (GLenum pname, const GLfloat *params); -#endif - -#ifndef GL_SGIX_instruments -#define GL_SGIX_instruments 1 -#ifdef GL_GLEXT_PROTOTYPES -GLAPI GLint APIENTRY glGetInstrumentsSGIX (void); -GLAPI void APIENTRY glInstrumentsBufferSGIX (GLsizei, GLint *); -GLAPI GLint APIENTRY glPollInstrumentsSGIX (GLint *); -GLAPI void APIENTRY glReadInstrumentsSGIX (GLint); -GLAPI void APIENTRY glStartInstrumentsSGIX (void); -GLAPI void APIENTRY glStopInstrumentsSGIX (GLint); -#endif /* GL_GLEXT_PROTOTYPES */ -typedef GLint (APIENTRYP PFNGLGETINSTRUMENTSSGIXPROC) (void); -typedef void (APIENTRYP PFNGLINSTRUMENTSBUFFERSGIXPROC) (GLsizei size, GLint *buffer); -typedef GLint (APIENTRYP PFNGLPOLLINSTRUMENTSSGIXPROC) (GLint *marker_p); -typedef void (APIENTRYP PFNGLREADINSTRUMENTSSGIXPROC) (GLint marker); -typedef void (APIENTRYP PFNGLSTARTINSTRUMENTSSGIXPROC) (void); -typedef void (APIENTRYP PFNGLSTOPINSTRUMENTSSGIXPROC) (GLint marker); -#endif - -#ifndef GL_SGIX_texture_scale_bias -#define GL_SGIX_texture_scale_bias 1 -#endif - -#ifndef GL_SGIX_framezoom -#define GL_SGIX_framezoom 1 -#ifdef GL_GLEXT_PROTOTYPES -GLAPI void APIENTRY glFrameZoomSGIX (GLint); -#endif /* GL_GLEXT_PROTOTYPES */ -typedef void (APIENTRYP PFNGLFRAMEZOOMSGIXPROC) (GLint factor); -#endif - -#ifndef GL_SGIX_tag_sample_buffer -#define GL_SGIX_tag_sample_buffer 1 -#ifdef GL_GLEXT_PROTOTYPES -GLAPI void APIENTRY glTagSampleBufferSGIX (void); -#endif /* GL_GLEXT_PROTOTYPES */ -typedef void (APIENTRYP PFNGLTAGSAMPLEBUFFERSGIXPROC) (void); -#endif - -#ifndef GL_SGIX_polynomial_ffd -#define GL_SGIX_polynomial_ffd 1 -#ifdef GL_GLEXT_PROTOTYPES -GLAPI void APIENTRY glDeformationMap3dSGIX (GLenum, GLdouble, GLdouble, GLint, GLint, GLdouble, GLdouble, GLint, GLint, GLdouble, GLdouble, GLint, GLint, const GLdouble *); -GLAPI void APIENTRY glDeformationMap3fSGIX (GLenum, GLfloat, GLfloat, GLint, GLint, GLfloat, GLfloat, GLint, GLint, GLfloat, GLfloat, GLint, GLint, const GLfloat *); -GLAPI void APIENTRY glDeformSGIX (GLbitfield); -GLAPI void APIENTRY glLoadIdentityDeformationMapSGIX (GLbitfield); -#endif /* GL_GLEXT_PROTOTYPES */ -typedef void (APIENTRYP PFNGLDEFORMATIONMAP3DSGIXPROC) (GLenum target, GLdouble u1, GLdouble u2, GLint ustride, GLint uorder, GLdouble v1, GLdouble v2, GLint vstride, GLint vorder, GLdouble w1, GLdouble w2, GLint wstride, GLint worder, const GLdouble *points); -typedef void (APIENTRYP PFNGLDEFORMATIONMAP3FSGIXPROC) (GLenum target, GLfloat u1, GLfloat u2, GLint ustride, GLint uorder, GLfloat v1, GLfloat v2, GLint vstride, GLint vorder, GLfloat w1, GLfloat w2, GLint wstride, GLint worder, const GLfloat *points); -typedef void (APIENTRYP PFNGLDEFORMSGIXPROC) (GLbitfield mask); -typedef void (APIENTRYP PFNGLLOADIDENTITYDEFORMATIONMAPSGIXPROC) (GLbitfield mask); -#endif - -#ifndef GL_SGIX_reference_plane -#define GL_SGIX_reference_plane 1 -#ifdef GL_GLEXT_PROTOTYPES -GLAPI void APIENTRY glReferencePlaneSGIX (const GLdouble *); -#endif /* GL_GLEXT_PROTOTYPES */ -typedef void (APIENTRYP PFNGLREFERENCEPLANESGIXPROC) (const GLdouble *equation); -#endif - -#ifndef GL_SGIX_flush_raster -#define GL_SGIX_flush_raster 1 -#ifdef GL_GLEXT_PROTOTYPES -GLAPI void APIENTRY glFlushRasterSGIX (void); -#endif /* GL_GLEXT_PROTOTYPES */ -typedef void (APIENTRYP PFNGLFLUSHRASTERSGIXPROC) (void); -#endif - -#ifndef GL_SGIX_depth_texture -#define GL_SGIX_depth_texture 1 -#endif - -#ifndef GL_SGIS_fog_function -#define GL_SGIS_fog_function 1 -#ifdef GL_GLEXT_PROTOTYPES -GLAPI void APIENTRY glFogFuncSGIS (GLsizei, const GLfloat *); -GLAPI void APIENTRY glGetFogFuncSGIS (GLfloat *); -#endif /* GL_GLEXT_PROTOTYPES */ -typedef void (APIENTRYP PFNGLFOGFUNCSGISPROC) (GLsizei n, const GLfloat *points); -typedef void (APIENTRYP PFNGLGETFOGFUNCSGISPROC) (GLfloat *points); -#endif - -#ifndef GL_SGIX_fog_offset -#define GL_SGIX_fog_offset 1 -#endif - -#ifndef GL_HP_image_transform -#define GL_HP_image_transform 1 -#ifdef GL_GLEXT_PROTOTYPES -GLAPI void APIENTRY glImageTransformParameteriHP (GLenum, GLenum, GLint); -GLAPI void APIENTRY glImageTransformParameterfHP (GLenum, GLenum, GLfloat); -GLAPI void APIENTRY glImageTransformParameterivHP (GLenum, GLenum, const GLint *); -GLAPI void APIENTRY glImageTransformParameterfvHP (GLenum, GLenum, const GLfloat *); -GLAPI void APIENTRY glGetImageTransformParameterivHP (GLenum, GLenum, GLint *); -GLAPI void APIENTRY glGetImageTransformParameterfvHP (GLenum, GLenum, GLfloat *); -#endif /* GL_GLEXT_PROTOTYPES */ -typedef void (APIENTRYP PFNGLIMAGETRANSFORMPARAMETERIHPPROC) (GLenum target, GLenum pname, GLint param); -typedef void (APIENTRYP PFNGLIMAGETRANSFORMPARAMETERFHPPROC) (GLenum target, GLenum pname, GLfloat param); -typedef void (APIENTRYP PFNGLIMAGETRANSFORMPARAMETERIVHPPROC) (GLenum target, GLenum pname, const GLint *params); -typedef void (APIENTRYP PFNGLIMAGETRANSFORMPARAMETERFVHPPROC) (GLenum target, GLenum pname, const GLfloat *params); -typedef void (APIENTRYP PFNGLGETIMAGETRANSFORMPARAMETERIVHPPROC) (GLenum target, GLenum pname, GLint *params); -typedef void (APIENTRYP PFNGLGETIMAGETRANSFORMPARAMETERFVHPPROC) (GLenum target, GLenum pname, GLfloat *params); -#endif - -#ifndef GL_HP_convolution_border_modes -#define GL_HP_convolution_border_modes 1 -#endif - -#ifndef GL_SGIX_texture_add_env -#define GL_SGIX_texture_add_env 1 -#endif - -#ifndef GL_EXT_color_subtable -#define GL_EXT_color_subtable 1 -#ifdef GL_GLEXT_PROTOTYPES -GLAPI void APIENTRY glColorSubTableEXT (GLenum, GLsizei, GLsizei, GLenum, GLenum, const GLvoid *); -GLAPI void APIENTRY glCopyColorSubTableEXT (GLenum, GLsizei, GLint, GLint, GLsizei); -#endif /* GL_GLEXT_PROTOTYPES */ -typedef void (APIENTRYP PFNGLCOLORSUBTABLEEXTPROC) (GLenum target, GLsizei start, GLsizei count, GLenum format, GLenum type, const GLvoid *data); -typedef void (APIENTRYP PFNGLCOPYCOLORSUBTABLEEXTPROC) (GLenum target, GLsizei start, GLint x, GLint y, GLsizei width); -#endif - -#ifndef GL_PGI_vertex_hints -#define GL_PGI_vertex_hints 1 -#endif - -#ifndef GL_PGI_misc_hints -#define GL_PGI_misc_hints 1 -#ifdef GL_GLEXT_PROTOTYPES -GLAPI void APIENTRY glHintPGI (GLenum, GLint); -#endif /* GL_GLEXT_PROTOTYPES */ -typedef void (APIENTRYP PFNGLHINTPGIPROC) (GLenum target, GLint mode); -#endif - -#ifndef GL_EXT_paletted_texture -#define GL_EXT_paletted_texture 1 -#ifdef GL_GLEXT_PROTOTYPES -GLAPI void APIENTRY glColorTableEXT (GLenum, GLenum, GLsizei, GLenum, GLenum, const GLvoid *); -GLAPI void APIENTRY glGetColorTableEXT (GLenum, GLenum, GLenum, GLvoid *); -GLAPI void APIENTRY glGetColorTableParameterivEXT (GLenum, GLenum, GLint *); -GLAPI void APIENTRY glGetColorTableParameterfvEXT (GLenum, GLenum, GLfloat *); -#endif /* GL_GLEXT_PROTOTYPES */ -typedef void (APIENTRYP PFNGLCOLORTABLEEXTPROC) (GLenum target, GLenum internalFormat, GLsizei width, GLenum format, GLenum type, const GLvoid *table); -typedef void (APIENTRYP PFNGLGETCOLORTABLEEXTPROC) (GLenum target, GLenum format, GLenum type, GLvoid *data); -typedef void (APIENTRYP PFNGLGETCOLORTABLEPARAMETERIVEXTPROC) (GLenum target, GLenum pname, GLint *params); -typedef void (APIENTRYP PFNGLGETCOLORTABLEPARAMETERFVEXTPROC) (GLenum target, GLenum pname, GLfloat *params); -#endif - -#ifndef GL_EXT_clip_volume_hint -#define GL_EXT_clip_volume_hint 1 -#endif - -#ifndef GL_SGIX_list_priority -#define GL_SGIX_list_priority 1 -#ifdef GL_GLEXT_PROTOTYPES -GLAPI void APIENTRY glGetListParameterfvSGIX (GLuint, GLenum, GLfloat *); -GLAPI void APIENTRY glGetListParameterivSGIX (GLuint, GLenum, GLint *); -GLAPI void APIENTRY glListParameterfSGIX (GLuint, GLenum, GLfloat); -GLAPI void APIENTRY glListParameterfvSGIX (GLuint, GLenum, const GLfloat *); -GLAPI void APIENTRY glListParameteriSGIX (GLuint, GLenum, GLint); -GLAPI void APIENTRY glListParameterivSGIX (GLuint, GLenum, const GLint *); -#endif /* GL_GLEXT_PROTOTYPES */ -typedef void (APIENTRYP PFNGLGETLISTPARAMETERFVSGIXPROC) (GLuint list, GLenum pname, GLfloat *params); -typedef void (APIENTRYP PFNGLGETLISTPARAMETERIVSGIXPROC) (GLuint list, GLenum pname, GLint *params); -typedef void (APIENTRYP PFNGLLISTPARAMETERFSGIXPROC) (GLuint list, GLenum pname, GLfloat param); -typedef void (APIENTRYP PFNGLLISTPARAMETERFVSGIXPROC) (GLuint list, GLenum pname, const GLfloat *params); -typedef void (APIENTRYP PFNGLLISTPARAMETERISGIXPROC) (GLuint list, GLenum pname, GLint param); -typedef void (APIENTRYP PFNGLLISTPARAMETERIVSGIXPROC) (GLuint list, GLenum pname, const GLint *params); -#endif - -#ifndef GL_SGIX_ir_instrument1 -#define GL_SGIX_ir_instrument1 1 -#endif - -#ifndef GL_SGIX_calligraphic_fragment -#define GL_SGIX_calligraphic_fragment 1 -#endif - -#ifndef GL_SGIX_texture_lod_bias -#define GL_SGIX_texture_lod_bias 1 -#endif - -#ifndef GL_SGIX_shadow_ambient -#define GL_SGIX_shadow_ambient 1 -#endif - -#ifndef GL_EXT_index_texture -#define GL_EXT_index_texture 1 -#endif - -#ifndef GL_EXT_index_material -#define GL_EXT_index_material 1 -#ifdef GL_GLEXT_PROTOTYPES -GLAPI void APIENTRY glIndexMaterialEXT (GLenum, GLenum); -#endif /* GL_GLEXT_PROTOTYPES */ -typedef void (APIENTRYP PFNGLINDEXMATERIALEXTPROC) (GLenum face, GLenum mode); -#endif - -#ifndef GL_EXT_index_func -#define GL_EXT_index_func 1 -#ifdef GL_GLEXT_PROTOTYPES -GLAPI void APIENTRY glIndexFuncEXT (GLenum, GLclampf); -#endif /* GL_GLEXT_PROTOTYPES */ -typedef void (APIENTRYP PFNGLINDEXFUNCEXTPROC) (GLenum func, GLclampf ref); -#endif - -#ifndef GL_EXT_index_array_formats -#define GL_EXT_index_array_formats 1 -#endif - -#ifndef GL_EXT_compiled_vertex_array -#define GL_EXT_compiled_vertex_array 1 -#ifdef GL_GLEXT_PROTOTYPES -GLAPI void APIENTRY glLockArraysEXT (GLint, GLsizei); -GLAPI void APIENTRY glUnlockArraysEXT (void); -#endif /* GL_GLEXT_PROTOTYPES */ -typedef void (APIENTRYP PFNGLLOCKARRAYSEXTPROC) (GLint first, GLsizei count); -typedef void (APIENTRYP PFNGLUNLOCKARRAYSEXTPROC) (void); -#endif - -#ifndef GL_EXT_cull_vertex -#define GL_EXT_cull_vertex 1 -#ifdef GL_GLEXT_PROTOTYPES -GLAPI void APIENTRY glCullParameterdvEXT (GLenum, GLdouble *); -GLAPI void APIENTRY glCullParameterfvEXT (GLenum, GLfloat *); -#endif /* GL_GLEXT_PROTOTYPES */ -typedef void (APIENTRYP PFNGLCULLPARAMETERDVEXTPROC) (GLenum pname, GLdouble *params); -typedef void (APIENTRYP PFNGLCULLPARAMETERFVEXTPROC) (GLenum pname, GLfloat *params); -#endif - -#ifndef GL_SGIX_ycrcb -#define GL_SGIX_ycrcb 1 -#endif - -#ifndef GL_SGIX_fragment_lighting -#define GL_SGIX_fragment_lighting 1 -#ifdef GL_GLEXT_PROTOTYPES -GLAPI void APIENTRY glFragmentColorMaterialSGIX (GLenum, GLenum); -GLAPI void APIENTRY glFragmentLightfSGIX (GLenum, GLenum, GLfloat); -GLAPI void APIENTRY glFragmentLightfvSGIX (GLenum, GLenum, const GLfloat *); -GLAPI void APIENTRY glFragmentLightiSGIX (GLenum, GLenum, GLint); -GLAPI void APIENTRY glFragmentLightivSGIX (GLenum, GLenum, const GLint *); -GLAPI void APIENTRY glFragmentLightModelfSGIX (GLenum, GLfloat); -GLAPI void APIENTRY glFragmentLightModelfvSGIX (GLenum, const GLfloat *); -GLAPI void APIENTRY glFragmentLightModeliSGIX (GLenum, GLint); -GLAPI void APIENTRY glFragmentLightModelivSGIX (GLenum, const GLint *); -GLAPI void APIENTRY glFragmentMaterialfSGIX (GLenum, GLenum, GLfloat); -GLAPI void APIENTRY glFragmentMaterialfvSGIX (GLenum, GLenum, const GLfloat *); -GLAPI void APIENTRY glFragmentMaterialiSGIX (GLenum, GLenum, GLint); -GLAPI void APIENTRY glFragmentMaterialivSGIX (GLenum, GLenum, const GLint *); -GLAPI void APIENTRY glGetFragmentLightfvSGIX (GLenum, GLenum, GLfloat *); -GLAPI void APIENTRY glGetFragmentLightivSGIX (GLenum, GLenum, GLint *); -GLAPI void APIENTRY glGetFragmentMaterialfvSGIX (GLenum, GLenum, GLfloat *); -GLAPI void APIENTRY glGetFragmentMaterialivSGIX (GLenum, GLenum, GLint *); -GLAPI void APIENTRY glLightEnviSGIX (GLenum, GLint); -#endif /* GL_GLEXT_PROTOTYPES */ -typedef void (APIENTRYP PFNGLFRAGMENTCOLORMATERIALSGIXPROC) (GLenum face, GLenum mode); -typedef void (APIENTRYP PFNGLFRAGMENTLIGHTFSGIXPROC) (GLenum light, GLenum pname, GLfloat param); -typedef void (APIENTRYP PFNGLFRAGMENTLIGHTFVSGIXPROC) (GLenum light, GLenum pname, const GLfloat *params); -typedef void (APIENTRYP PFNGLFRAGMENTLIGHTISGIXPROC) (GLenum light, GLenum pname, GLint param); -typedef void (APIENTRYP PFNGLFRAGMENTLIGHTIVSGIXPROC) (GLenum light, GLenum pname, const GLint *params); -typedef void (APIENTRYP PFNGLFRAGMENTLIGHTMODELFSGIXPROC) (GLenum pname, GLfloat param); -typedef void (APIENTRYP PFNGLFRAGMENTLIGHTMODELFVSGIXPROC) (GLenum pname, const GLfloat *params); -typedef void (APIENTRYP PFNGLFRAGMENTLIGHTMODELISGIXPROC) (GLenum pname, GLint param); -typedef void (APIENTRYP PFNGLFRAGMENTLIGHTMODELIVSGIXPROC) (GLenum pname, const GLint *params); -typedef void (APIENTRYP PFNGLFRAGMENTMATERIALFSGIXPROC) (GLenum face, GLenum pname, GLfloat param); -typedef void (APIENTRYP PFNGLFRAGMENTMATERIALFVSGIXPROC) (GLenum face, GLenum pname, const GLfloat *params); -typedef void (APIENTRYP PFNGLFRAGMENTMATERIALISGIXPROC) (GLenum face, GLenum pname, GLint param); -typedef void (APIENTRYP PFNGLFRAGMENTMATERIALIVSGIXPROC) (GLenum face, GLenum pname, const GLint *params); -typedef void (APIENTRYP PFNGLGETFRAGMENTLIGHTFVSGIXPROC) (GLenum light, GLenum pname, GLfloat *params); -typedef void (APIENTRYP PFNGLGETFRAGMENTLIGHTIVSGIXPROC) (GLenum light, GLenum pname, GLint *params); -typedef void (APIENTRYP PFNGLGETFRAGMENTMATERIALFVSGIXPROC) (GLenum face, GLenum pname, GLfloat *params); -typedef void (APIENTRYP PFNGLGETFRAGMENTMATERIALIVSGIXPROC) (GLenum face, GLenum pname, GLint *params); -typedef void (APIENTRYP PFNGLLIGHTENVISGIXPROC) (GLenum pname, GLint param); -#endif - -#ifndef GL_IBM_rasterpos_clip -#define GL_IBM_rasterpos_clip 1 -#endif - -#ifndef GL_HP_texture_lighting -#define GL_HP_texture_lighting 1 -#endif - -#ifndef GL_EXT_draw_range_elements -#define GL_EXT_draw_range_elements 1 -#ifdef GL_GLEXT_PROTOTYPES -GLAPI void APIENTRY glDrawRangeElementsEXT (GLenum, GLuint, GLuint, GLsizei, GLenum, const GLvoid *); -#endif /* GL_GLEXT_PROTOTYPES */ -typedef void (APIENTRYP PFNGLDRAWRANGEELEMENTSEXTPROC) (GLenum mode, GLuint start, GLuint end, GLsizei count, GLenum type, const GLvoid *indices); -#endif - -#ifndef GL_WIN_phong_shading -#define GL_WIN_phong_shading 1 -#endif - -#ifndef GL_WIN_specular_fog -#define GL_WIN_specular_fog 1 -#endif - -#ifndef GL_EXT_light_texture -#define GL_EXT_light_texture 1 -#ifdef GL_GLEXT_PROTOTYPES -GLAPI void APIENTRY glApplyTextureEXT (GLenum); -GLAPI void APIENTRY glTextureLightEXT (GLenum); -GLAPI void APIENTRY glTextureMaterialEXT (GLenum, GLenum); -#endif /* GL_GLEXT_PROTOTYPES */ -typedef void (APIENTRYP PFNGLAPPLYTEXTUREEXTPROC) (GLenum mode); -typedef void (APIENTRYP PFNGLTEXTURELIGHTEXTPROC) (GLenum pname); -typedef void (APIENTRYP PFNGLTEXTUREMATERIALEXTPROC) (GLenum face, GLenum mode); -#endif - -#ifndef GL_SGIX_blend_alpha_minmax -#define GL_SGIX_blend_alpha_minmax 1 -#endif - -#ifndef GL_EXT_bgra -#define GL_EXT_bgra 1 -#endif - -#ifndef GL_SGIX_async -#define GL_SGIX_async 1 -#ifdef GL_GLEXT_PROTOTYPES -GLAPI void APIENTRY glAsyncMarkerSGIX (GLuint); -GLAPI GLint APIENTRY glFinishAsyncSGIX (GLuint *); -GLAPI GLint APIENTRY glPollAsyncSGIX (GLuint *); -GLAPI GLuint APIENTRY glGenAsyncMarkersSGIX (GLsizei); -GLAPI void APIENTRY glDeleteAsyncMarkersSGIX (GLuint, GLsizei); -GLAPI GLboolean APIENTRY glIsAsyncMarkerSGIX (GLuint); -#endif /* GL_GLEXT_PROTOTYPES */ -typedef void (APIENTRYP PFNGLASYNCMARKERSGIXPROC) (GLuint marker); -typedef GLint (APIENTRYP PFNGLFINISHASYNCSGIXPROC) (GLuint *markerp); -typedef GLint (APIENTRYP PFNGLPOLLASYNCSGIXPROC) (GLuint *markerp); -typedef GLuint (APIENTRYP PFNGLGENASYNCMARKERSSGIXPROC) (GLsizei range); -typedef void (APIENTRYP PFNGLDELETEASYNCMARKERSSGIXPROC) (GLuint marker, GLsizei range); -typedef GLboolean (APIENTRYP PFNGLISASYNCMARKERSGIXPROC) (GLuint marker); -#endif - -#ifndef GL_SGIX_async_pixel -#define GL_SGIX_async_pixel 1 -#endif - -#ifndef GL_SGIX_async_histogram -#define GL_SGIX_async_histogram 1 -#endif - -#ifndef GL_INTEL_parallel_arrays -#define GL_INTEL_parallel_arrays 1 -#ifdef GL_GLEXT_PROTOTYPES -GLAPI void APIENTRY glVertexPointervINTEL (GLint, GLenum, const GLvoid* *); -GLAPI void APIENTRY glNormalPointervINTEL (GLenum, const GLvoid* *); -GLAPI void APIENTRY glColorPointervINTEL (GLint, GLenum, const GLvoid* *); -GLAPI void APIENTRY glTexCoordPointervINTEL (GLint, GLenum, const GLvoid* *); -#endif /* GL_GLEXT_PROTOTYPES */ -typedef void (APIENTRYP PFNGLVERTEXPOINTERVINTELPROC) (GLint size, GLenum type, const GLvoid* *pointer); -typedef void (APIENTRYP PFNGLNORMALPOINTERVINTELPROC) (GLenum type, const GLvoid* *pointer); -typedef void (APIENTRYP PFNGLCOLORPOINTERVINTELPROC) (GLint size, GLenum type, const GLvoid* *pointer); -typedef void (APIENTRYP PFNGLTEXCOORDPOINTERVINTELPROC) (GLint size, GLenum type, const GLvoid* *pointer); -#endif - -#ifndef GL_HP_occlusion_test -#define GL_HP_occlusion_test 1 -#endif - -#ifndef GL_EXT_pixel_transform -#define GL_EXT_pixel_transform 1 -#ifdef GL_GLEXT_PROTOTYPES -GLAPI void APIENTRY glPixelTransformParameteriEXT (GLenum, GLenum, GLint); -GLAPI void APIENTRY glPixelTransformParameterfEXT (GLenum, GLenum, GLfloat); -GLAPI void APIENTRY glPixelTransformParameterivEXT (GLenum, GLenum, const GLint *); -GLAPI void APIENTRY glPixelTransformParameterfvEXT (GLenum, GLenum, const GLfloat *); -#endif /* GL_GLEXT_PROTOTYPES */ -typedef void (APIENTRYP PFNGLPIXELTRANSFORMPARAMETERIEXTPROC) (GLenum target, GLenum pname, GLint param); -typedef void (APIENTRYP PFNGLPIXELTRANSFORMPARAMETERFEXTPROC) (GLenum target, GLenum pname, GLfloat param); -typedef void (APIENTRYP PFNGLPIXELTRANSFORMPARAMETERIVEXTPROC) (GLenum target, GLenum pname, const GLint *params); -typedef void (APIENTRYP PFNGLPIXELTRANSFORMPARAMETERFVEXTPROC) (GLenum target, GLenum pname, const GLfloat *params); -#endif - -#ifndef GL_EXT_pixel_transform_color_table -#define GL_EXT_pixel_transform_color_table 1 -#endif - -#ifndef GL_EXT_shared_texture_palette -#define GL_EXT_shared_texture_palette 1 -#endif - -#ifndef GL_EXT_separate_specular_color -#define GL_EXT_separate_specular_color 1 -#endif - -#ifndef GL_EXT_secondary_color -#define GL_EXT_secondary_color 1 -#ifdef GL_GLEXT_PROTOTYPES -GLAPI void APIENTRY glSecondaryColor3bEXT (GLbyte, GLbyte, GLbyte); -GLAPI void APIENTRY glSecondaryColor3bvEXT (const GLbyte *); -GLAPI void APIENTRY glSecondaryColor3dEXT (GLdouble, GLdouble, GLdouble); -GLAPI void APIENTRY glSecondaryColor3dvEXT (const GLdouble *); -GLAPI void APIENTRY glSecondaryColor3fEXT (GLfloat, GLfloat, GLfloat); -GLAPI void APIENTRY glSecondaryColor3fvEXT (const GLfloat *); -GLAPI void APIENTRY glSecondaryColor3iEXT (GLint, GLint, GLint); -GLAPI void APIENTRY glSecondaryColor3ivEXT (const GLint *); -GLAPI void APIENTRY glSecondaryColor3sEXT (GLshort, GLshort, GLshort); -GLAPI void APIENTRY glSecondaryColor3svEXT (const GLshort *); -GLAPI void APIENTRY glSecondaryColor3ubEXT (GLubyte, GLubyte, GLubyte); -GLAPI void APIENTRY glSecondaryColor3ubvEXT (const GLubyte *); -GLAPI void APIENTRY glSecondaryColor3uiEXT (GLuint, GLuint, GLuint); -GLAPI void APIENTRY glSecondaryColor3uivEXT (const GLuint *); -GLAPI void APIENTRY glSecondaryColor3usEXT (GLushort, GLushort, GLushort); -GLAPI void APIENTRY glSecondaryColor3usvEXT (const GLushort *); -GLAPI void APIENTRY glSecondaryColorPointerEXT (GLint, GLenum, GLsizei, const GLvoid *); -#endif /* GL_GLEXT_PROTOTYPES */ -typedef void (APIENTRYP PFNGLSECONDARYCOLOR3BEXTPROC) (GLbyte red, GLbyte green, GLbyte blue); -typedef void (APIENTRYP PFNGLSECONDARYCOLOR3BVEXTPROC) (const GLbyte *v); -typedef void (APIENTRYP PFNGLSECONDARYCOLOR3DEXTPROC) (GLdouble red, GLdouble green, GLdouble blue); -typedef void (APIENTRYP PFNGLSECONDARYCOLOR3DVEXTPROC) (const GLdouble *v); -typedef void (APIENTRYP PFNGLSECONDARYCOLOR3FEXTPROC) (GLfloat red, GLfloat green, GLfloat blue); -typedef void (APIENTRYP PFNGLSECONDARYCOLOR3FVEXTPROC) (const GLfloat *v); -typedef void (APIENTRYP PFNGLSECONDARYCOLOR3IEXTPROC) (GLint red, GLint green, GLint blue); -typedef void (APIENTRYP PFNGLSECONDARYCOLOR3IVEXTPROC) (const GLint *v); -typedef void (APIENTRYP PFNGLSECONDARYCOLOR3SEXTPROC) (GLshort red, GLshort green, GLshort blue); -typedef void (APIENTRYP PFNGLSECONDARYCOLOR3SVEXTPROC) (const GLshort *v); -typedef void (APIENTRYP PFNGLSECONDARYCOLOR3UBEXTPROC) (GLubyte red, GLubyte green, GLubyte blue); -typedef void (APIENTRYP PFNGLSECONDARYCOLOR3UBVEXTPROC) (const GLubyte *v); -typedef void (APIENTRYP PFNGLSECONDARYCOLOR3UIEXTPROC) (GLuint red, GLuint green, GLuint blue); -typedef void (APIENTRYP PFNGLSECONDARYCOLOR3UIVEXTPROC) (const GLuint *v); -typedef void (APIENTRYP PFNGLSECONDARYCOLOR3USEXTPROC) (GLushort red, GLushort green, GLushort blue); -typedef void (APIENTRYP PFNGLSECONDARYCOLOR3USVEXTPROC) (const GLushort *v); -typedef void (APIENTRYP PFNGLSECONDARYCOLORPOINTEREXTPROC) (GLint size, GLenum type, GLsizei stride, const GLvoid *pointer); -#endif - -#ifndef GL_EXT_texture_perturb_normal -#define GL_EXT_texture_perturb_normal 1 -#ifdef GL_GLEXT_PROTOTYPES -GLAPI void APIENTRY glTextureNormalEXT (GLenum); -#endif /* GL_GLEXT_PROTOTYPES */ -typedef void (APIENTRYP PFNGLTEXTURENORMALEXTPROC) (GLenum mode); -#endif - -#ifndef GL_EXT_multi_draw_arrays -#define GL_EXT_multi_draw_arrays 1 -#ifdef GL_GLEXT_PROTOTYPES -GLAPI void APIENTRY glMultiDrawArraysEXT (GLenum, GLint *, GLsizei *, GLsizei); -GLAPI void APIENTRY glMultiDrawElementsEXT (GLenum, const GLsizei *, GLenum, const GLvoid* *, GLsizei); -#endif /* GL_GLEXT_PROTOTYPES */ -typedef void (APIENTRYP PFNGLMULTIDRAWARRAYSEXTPROC) (GLenum mode, GLint *first, GLsizei *count, GLsizei primcount); -typedef void (APIENTRYP PFNGLMULTIDRAWELEMENTSEXTPROC) (GLenum mode, const GLsizei *count, GLenum type, const GLvoid* *indices, GLsizei primcount); -#endif - -#ifndef GL_EXT_fog_coord -#define GL_EXT_fog_coord 1 -#ifdef GL_GLEXT_PROTOTYPES -GLAPI void APIENTRY glFogCoordfEXT (GLfloat); -GLAPI void APIENTRY glFogCoordfvEXT (const GLfloat *); -GLAPI void APIENTRY glFogCoorddEXT (GLdouble); -GLAPI void APIENTRY glFogCoorddvEXT (const GLdouble *); -GLAPI void APIENTRY glFogCoordPointerEXT (GLenum, GLsizei, const GLvoid *); -#endif /* GL_GLEXT_PROTOTYPES */ -typedef void (APIENTRYP PFNGLFOGCOORDFEXTPROC) (GLfloat coord); -typedef void (APIENTRYP PFNGLFOGCOORDFVEXTPROC) (const GLfloat *coord); -typedef void (APIENTRYP PFNGLFOGCOORDDEXTPROC) (GLdouble coord); -typedef void (APIENTRYP PFNGLFOGCOORDDVEXTPROC) (const GLdouble *coord); -typedef void (APIENTRYP PFNGLFOGCOORDPOINTEREXTPROC) (GLenum type, GLsizei stride, const GLvoid *pointer); -#endif - -#ifndef GL_REND_screen_coordinates -#define GL_REND_screen_coordinates 1 -#endif - -#ifndef GL_EXT_coordinate_frame -#define GL_EXT_coordinate_frame 1 -#ifdef GL_GLEXT_PROTOTYPES -GLAPI void APIENTRY glTangent3bEXT (GLbyte, GLbyte, GLbyte); -GLAPI void APIENTRY glTangent3bvEXT (const GLbyte *); -GLAPI void APIENTRY glTangent3dEXT (GLdouble, GLdouble, GLdouble); -GLAPI void APIENTRY glTangent3dvEXT (const GLdouble *); -GLAPI void APIENTRY glTangent3fEXT (GLfloat, GLfloat, GLfloat); -GLAPI void APIENTRY glTangent3fvEXT (const GLfloat *); -GLAPI void APIENTRY glTangent3iEXT (GLint, GLint, GLint); -GLAPI void APIENTRY glTangent3ivEXT (const GLint *); -GLAPI void APIENTRY glTangent3sEXT (GLshort, GLshort, GLshort); -GLAPI void APIENTRY glTangent3svEXT (const GLshort *); -GLAPI void APIENTRY glBinormal3bEXT (GLbyte, GLbyte, GLbyte); -GLAPI void APIENTRY glBinormal3bvEXT (const GLbyte *); -GLAPI void APIENTRY glBinormal3dEXT (GLdouble, GLdouble, GLdouble); -GLAPI void APIENTRY glBinormal3dvEXT (const GLdouble *); -GLAPI void APIENTRY glBinormal3fEXT (GLfloat, GLfloat, GLfloat); -GLAPI void APIENTRY glBinormal3fvEXT (const GLfloat *); -GLAPI void APIENTRY glBinormal3iEXT (GLint, GLint, GLint); -GLAPI void APIENTRY glBinormal3ivEXT (const GLint *); -GLAPI void APIENTRY glBinormal3sEXT (GLshort, GLshort, GLshort); -GLAPI void APIENTRY glBinormal3svEXT (const GLshort *); -GLAPI void APIENTRY glTangentPointerEXT (GLenum, GLsizei, const GLvoid *); -GLAPI void APIENTRY glBinormalPointerEXT (GLenum, GLsizei, const GLvoid *); -#endif /* GL_GLEXT_PROTOTYPES */ -typedef void (APIENTRYP PFNGLTANGENT3BEXTPROC) (GLbyte tx, GLbyte ty, GLbyte tz); -typedef void (APIENTRYP PFNGLTANGENT3BVEXTPROC) (const GLbyte *v); -typedef void (APIENTRYP PFNGLTANGENT3DEXTPROC) (GLdouble tx, GLdouble ty, GLdouble tz); -typedef void (APIENTRYP PFNGLTANGENT3DVEXTPROC) (const GLdouble *v); -typedef void (APIENTRYP PFNGLTANGENT3FEXTPROC) (GLfloat tx, GLfloat ty, GLfloat tz); -typedef void (APIENTRYP PFNGLTANGENT3FVEXTPROC) (const GLfloat *v); -typedef void (APIENTRYP PFNGLTANGENT3IEXTPROC) (GLint tx, GLint ty, GLint tz); -typedef void (APIENTRYP PFNGLTANGENT3IVEXTPROC) (const GLint *v); -typedef void (APIENTRYP PFNGLTANGENT3SEXTPROC) (GLshort tx, GLshort ty, GLshort tz); -typedef void (APIENTRYP PFNGLTANGENT3SVEXTPROC) (const GLshort *v); -typedef void (APIENTRYP PFNGLBINORMAL3BEXTPROC) (GLbyte bx, GLbyte by, GLbyte bz); -typedef void (APIENTRYP PFNGLBINORMAL3BVEXTPROC) (const GLbyte *v); -typedef void (APIENTRYP PFNGLBINORMAL3DEXTPROC) (GLdouble bx, GLdouble by, GLdouble bz); -typedef void (APIENTRYP PFNGLBINORMAL3DVEXTPROC) (const GLdouble *v); -typedef void (APIENTRYP PFNGLBINORMAL3FEXTPROC) (GLfloat bx, GLfloat by, GLfloat bz); -typedef void (APIENTRYP PFNGLBINORMAL3FVEXTPROC) (const GLfloat *v); -typedef void (APIENTRYP PFNGLBINORMAL3IEXTPROC) (GLint bx, GLint by, GLint bz); -typedef void (APIENTRYP PFNGLBINORMAL3IVEXTPROC) (const GLint *v); -typedef void (APIENTRYP PFNGLBINORMAL3SEXTPROC) (GLshort bx, GLshort by, GLshort bz); -typedef void (APIENTRYP PFNGLBINORMAL3SVEXTPROC) (const GLshort *v); -typedef void (APIENTRYP PFNGLTANGENTPOINTEREXTPROC) (GLenum type, GLsizei stride, const GLvoid *pointer); -typedef void (APIENTRYP PFNGLBINORMALPOINTEREXTPROC) (GLenum type, GLsizei stride, const GLvoid *pointer); -#endif - -#ifndef GL_EXT_texture_env_combine -#define GL_EXT_texture_env_combine 1 -#endif - -#ifndef GL_APPLE_specular_vector -#define GL_APPLE_specular_vector 1 -#endif - -#ifndef GL_APPLE_transform_hint -#define GL_APPLE_transform_hint 1 -#endif - -#ifndef GL_SGIX_fog_scale -#define GL_SGIX_fog_scale 1 -#endif - -#ifndef GL_SUNX_constant_data -#define GL_SUNX_constant_data 1 -#ifdef GL_GLEXT_PROTOTYPES -GLAPI void APIENTRY glFinishTextureSUNX (void); -#endif /* GL_GLEXT_PROTOTYPES */ -typedef void (APIENTRYP PFNGLFINISHTEXTURESUNXPROC) (void); -#endif - -#ifndef GL_SUN_global_alpha -#define GL_SUN_global_alpha 1 -#ifdef GL_GLEXT_PROTOTYPES -GLAPI void APIENTRY glGlobalAlphaFactorbSUN (GLbyte); -GLAPI void APIENTRY glGlobalAlphaFactorsSUN (GLshort); -GLAPI void APIENTRY glGlobalAlphaFactoriSUN (GLint); -GLAPI void APIENTRY glGlobalAlphaFactorfSUN (GLfloat); -GLAPI void APIENTRY glGlobalAlphaFactordSUN (GLdouble); -GLAPI void APIENTRY glGlobalAlphaFactorubSUN (GLubyte); -GLAPI void APIENTRY glGlobalAlphaFactorusSUN (GLushort); -GLAPI void APIENTRY glGlobalAlphaFactoruiSUN (GLuint); -#endif /* GL_GLEXT_PROTOTYPES */ -typedef void (APIENTRYP PFNGLGLOBALALPHAFACTORBSUNPROC) (GLbyte factor); -typedef void (APIENTRYP PFNGLGLOBALALPHAFACTORSSUNPROC) (GLshort factor); -typedef void (APIENTRYP PFNGLGLOBALALPHAFACTORISUNPROC) (GLint factor); -typedef void (APIENTRYP PFNGLGLOBALALPHAFACTORFSUNPROC) (GLfloat factor); -typedef void (APIENTRYP PFNGLGLOBALALPHAFACTORDSUNPROC) (GLdouble factor); -typedef void (APIENTRYP PFNGLGLOBALALPHAFACTORUBSUNPROC) (GLubyte factor); -typedef void (APIENTRYP PFNGLGLOBALALPHAFACTORUSSUNPROC) (GLushort factor); -typedef void (APIENTRYP PFNGLGLOBALALPHAFACTORUISUNPROC) (GLuint factor); -#endif - -#ifndef GL_SUN_triangle_list -#define GL_SUN_triangle_list 1 -#ifdef GL_GLEXT_PROTOTYPES -GLAPI void APIENTRY glReplacementCodeuiSUN (GLuint); -GLAPI void APIENTRY glReplacementCodeusSUN (GLushort); -GLAPI void APIENTRY glReplacementCodeubSUN (GLubyte); -GLAPI void APIENTRY glReplacementCodeuivSUN (const GLuint *); -GLAPI void APIENTRY glReplacementCodeusvSUN (const GLushort *); -GLAPI void APIENTRY glReplacementCodeubvSUN (const GLubyte *); -GLAPI void APIENTRY glReplacementCodePointerSUN (GLenum, GLsizei, const GLvoid* *); -#endif /* GL_GLEXT_PROTOTYPES */ -typedef void (APIENTRYP PFNGLREPLACEMENTCODEUISUNPROC) (GLuint code); -typedef void (APIENTRYP PFNGLREPLACEMENTCODEUSSUNPROC) (GLushort code); -typedef void (APIENTRYP PFNGLREPLACEMENTCODEUBSUNPROC) (GLubyte code); -typedef void (APIENTRYP PFNGLREPLACEMENTCODEUIVSUNPROC) (const GLuint *code); -typedef void (APIENTRYP PFNGLREPLACEMENTCODEUSVSUNPROC) (const GLushort *code); -typedef void (APIENTRYP PFNGLREPLACEMENTCODEUBVSUNPROC) (const GLubyte *code); -typedef void (APIENTRYP PFNGLREPLACEMENTCODEPOINTERSUNPROC) (GLenum type, GLsizei stride, const GLvoid* *pointer); -#endif - -#ifndef GL_SUN_vertex -#define GL_SUN_vertex 1 -#ifdef GL_GLEXT_PROTOTYPES -GLAPI void APIENTRY glColor4ubVertex2fSUN (GLubyte, GLubyte, GLubyte, GLubyte, GLfloat, GLfloat); -GLAPI void APIENTRY glColor4ubVertex2fvSUN (const GLubyte *, const GLfloat *); -GLAPI void APIENTRY glColor4ubVertex3fSUN (GLubyte, GLubyte, GLubyte, GLubyte, GLfloat, GLfloat, GLfloat); -GLAPI void APIENTRY glColor4ubVertex3fvSUN (const GLubyte *, const GLfloat *); -GLAPI void APIENTRY glColor3fVertex3fSUN (GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat); -GLAPI void APIENTRY glColor3fVertex3fvSUN (const GLfloat *, const GLfloat *); -GLAPI void APIENTRY glNormal3fVertex3fSUN (GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat); -GLAPI void APIENTRY glNormal3fVertex3fvSUN (const GLfloat *, const GLfloat *); -GLAPI void APIENTRY glColor4fNormal3fVertex3fSUN (GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat); -GLAPI void APIENTRY glColor4fNormal3fVertex3fvSUN (const GLfloat *, const GLfloat *, const GLfloat *); -GLAPI void APIENTRY glTexCoord2fVertex3fSUN (GLfloat, GLfloat, GLfloat, GLfloat, GLfloat); -GLAPI void APIENTRY glTexCoord2fVertex3fvSUN (const GLfloat *, const GLfloat *); -GLAPI void APIENTRY glTexCoord4fVertex4fSUN (GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat); -GLAPI void APIENTRY glTexCoord4fVertex4fvSUN (const GLfloat *, const GLfloat *); -GLAPI void APIENTRY glTexCoord2fColor4ubVertex3fSUN (GLfloat, GLfloat, GLubyte, GLubyte, GLubyte, GLubyte, GLfloat, GLfloat, GLfloat); -GLAPI void APIENTRY glTexCoord2fColor4ubVertex3fvSUN (const GLfloat *, const GLubyte *, const GLfloat *); -GLAPI void APIENTRY glTexCoord2fColor3fVertex3fSUN (GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat); -GLAPI void APIENTRY glTexCoord2fColor3fVertex3fvSUN (const GLfloat *, const GLfloat *, const GLfloat *); -GLAPI void APIENTRY glTexCoord2fNormal3fVertex3fSUN (GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat); -GLAPI void APIENTRY glTexCoord2fNormal3fVertex3fvSUN (const GLfloat *, const GLfloat *, const GLfloat *); -GLAPI void APIENTRY glTexCoord2fColor4fNormal3fVertex3fSUN (GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat); -GLAPI void APIENTRY glTexCoord2fColor4fNormal3fVertex3fvSUN (const GLfloat *, const GLfloat *, const GLfloat *, const GLfloat *); -GLAPI void APIENTRY glTexCoord4fColor4fNormal3fVertex4fSUN (GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat); -GLAPI void APIENTRY glTexCoord4fColor4fNormal3fVertex4fvSUN (const GLfloat *, const GLfloat *, const GLfloat *, const GLfloat *); -GLAPI void APIENTRY glReplacementCodeuiVertex3fSUN (GLuint, GLfloat, GLfloat, GLfloat); -GLAPI void APIENTRY glReplacementCodeuiVertex3fvSUN (const GLuint *, const GLfloat *); -GLAPI void APIENTRY glReplacementCodeuiColor4ubVertex3fSUN (GLuint, GLubyte, GLubyte, GLubyte, GLubyte, GLfloat, GLfloat, GLfloat); -GLAPI void APIENTRY glReplacementCodeuiColor4ubVertex3fvSUN (const GLuint *, const GLubyte *, const GLfloat *); -GLAPI void APIENTRY glReplacementCodeuiColor3fVertex3fSUN (GLuint, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat); -GLAPI void APIENTRY glReplacementCodeuiColor3fVertex3fvSUN (const GLuint *, const GLfloat *, const GLfloat *); -GLAPI void APIENTRY glReplacementCodeuiNormal3fVertex3fSUN (GLuint, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat); -GLAPI void APIENTRY glReplacementCodeuiNormal3fVertex3fvSUN (const GLuint *, const GLfloat *, const GLfloat *); -GLAPI void APIENTRY glReplacementCodeuiColor4fNormal3fVertex3fSUN (GLuint, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat); -GLAPI void APIENTRY glReplacementCodeuiColor4fNormal3fVertex3fvSUN (const GLuint *, const GLfloat *, const GLfloat *, const GLfloat *); -GLAPI void APIENTRY glReplacementCodeuiTexCoord2fVertex3fSUN (GLuint, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat); -GLAPI void APIENTRY glReplacementCodeuiTexCoord2fVertex3fvSUN (const GLuint *, const GLfloat *, const GLfloat *); -GLAPI void APIENTRY glReplacementCodeuiTexCoord2fNormal3fVertex3fSUN (GLuint, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat); -GLAPI void APIENTRY glReplacementCodeuiTexCoord2fNormal3fVertex3fvSUN (const GLuint *, const GLfloat *, const GLfloat *, const GLfloat *); -GLAPI void APIENTRY glReplacementCodeuiTexCoord2fColor4fNormal3fVertex3fSUN (GLuint, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat); -GLAPI void APIENTRY glReplacementCodeuiTexCoord2fColor4fNormal3fVertex3fvSUN (const GLuint *, const GLfloat *, const GLfloat *, const GLfloat *, const GLfloat *); -#endif /* GL_GLEXT_PROTOTYPES */ -typedef void (APIENTRYP PFNGLCOLOR4UBVERTEX2FSUNPROC) (GLubyte r, GLubyte g, GLubyte b, GLubyte a, GLfloat x, GLfloat y); -typedef void (APIENTRYP PFNGLCOLOR4UBVERTEX2FVSUNPROC) (const GLubyte *c, const GLfloat *v); -typedef void (APIENTRYP PFNGLCOLOR4UBVERTEX3FSUNPROC) (GLubyte r, GLubyte g, GLubyte b, GLubyte a, GLfloat x, GLfloat y, GLfloat z); -typedef void (APIENTRYP PFNGLCOLOR4UBVERTEX3FVSUNPROC) (const GLubyte *c, const GLfloat *v); -typedef void (APIENTRYP PFNGLCOLOR3FVERTEX3FSUNPROC) (GLfloat r, GLfloat g, GLfloat b, GLfloat x, GLfloat y, GLfloat z); -typedef void (APIENTRYP PFNGLCOLOR3FVERTEX3FVSUNPROC) (const GLfloat *c, const GLfloat *v); -typedef void (APIENTRYP PFNGLNORMAL3FVERTEX3FSUNPROC) (GLfloat nx, GLfloat ny, GLfloat nz, GLfloat x, GLfloat y, GLfloat z); -typedef void (APIENTRYP PFNGLNORMAL3FVERTEX3FVSUNPROC) (const GLfloat *n, const GLfloat *v); -typedef void (APIENTRYP PFNGLCOLOR4FNORMAL3FVERTEX3FSUNPROC) (GLfloat r, GLfloat g, GLfloat b, GLfloat a, GLfloat nx, GLfloat ny, GLfloat nz, GLfloat x, GLfloat y, GLfloat z); -typedef void (APIENTRYP PFNGLCOLOR4FNORMAL3FVERTEX3FVSUNPROC) (const GLfloat *c, const GLfloat *n, const GLfloat *v); -typedef void (APIENTRYP PFNGLTEXCOORD2FVERTEX3FSUNPROC) (GLfloat s, GLfloat t, GLfloat x, GLfloat y, GLfloat z); -typedef void (APIENTRYP PFNGLTEXCOORD2FVERTEX3FVSUNPROC) (const GLfloat *tc, const GLfloat *v); -typedef void (APIENTRYP PFNGLTEXCOORD4FVERTEX4FSUNPROC) (GLfloat s, GLfloat t, GLfloat p, GLfloat q, GLfloat x, GLfloat y, GLfloat z, GLfloat w); -typedef void (APIENTRYP PFNGLTEXCOORD4FVERTEX4FVSUNPROC) (const GLfloat *tc, const GLfloat *v); -typedef void (APIENTRYP PFNGLTEXCOORD2FCOLOR4UBVERTEX3FSUNPROC) (GLfloat s, GLfloat t, GLubyte r, GLubyte g, GLubyte b, GLubyte a, GLfloat x, GLfloat y, GLfloat z); -typedef void (APIENTRYP PFNGLTEXCOORD2FCOLOR4UBVERTEX3FVSUNPROC) (const GLfloat *tc, const GLubyte *c, const GLfloat *v); -typedef void (APIENTRYP PFNGLTEXCOORD2FCOLOR3FVERTEX3FSUNPROC) (GLfloat s, GLfloat t, GLfloat r, GLfloat g, GLfloat b, GLfloat x, GLfloat y, GLfloat z); -typedef void (APIENTRYP PFNGLTEXCOORD2FCOLOR3FVERTEX3FVSUNPROC) (const GLfloat *tc, const GLfloat *c, const GLfloat *v); -typedef void (APIENTRYP PFNGLTEXCOORD2FNORMAL3FVERTEX3FSUNPROC) (GLfloat s, GLfloat t, GLfloat nx, GLfloat ny, GLfloat nz, GLfloat x, GLfloat y, GLfloat z); -typedef void (APIENTRYP PFNGLTEXCOORD2FNORMAL3FVERTEX3FVSUNPROC) (const GLfloat *tc, const GLfloat *n, const GLfloat *v); -typedef void (APIENTRYP PFNGLTEXCOORD2FCOLOR4FNORMAL3FVERTEX3FSUNPROC) (GLfloat s, GLfloat t, GLfloat r, GLfloat g, GLfloat b, GLfloat a, GLfloat nx, GLfloat ny, GLfloat nz, GLfloat x, GLfloat y, GLfloat z); -typedef void (APIENTRYP PFNGLTEXCOORD2FCOLOR4FNORMAL3FVERTEX3FVSUNPROC) (const GLfloat *tc, const GLfloat *c, const GLfloat *n, const GLfloat *v); -typedef void (APIENTRYP PFNGLTEXCOORD4FCOLOR4FNORMAL3FVERTEX4FSUNPROC) (GLfloat s, GLfloat t, GLfloat p, GLfloat q, GLfloat r, GLfloat g, GLfloat b, GLfloat a, GLfloat nx, GLfloat ny, GLfloat nz, GLfloat x, GLfloat y, GLfloat z, GLfloat w); -typedef void (APIENTRYP PFNGLTEXCOORD4FCOLOR4FNORMAL3FVERTEX4FVSUNPROC) (const GLfloat *tc, const GLfloat *c, const GLfloat *n, const GLfloat *v); -typedef void (APIENTRYP PFNGLREPLACEMENTCODEUIVERTEX3FSUNPROC) (GLuint rc, GLfloat x, GLfloat y, GLfloat z); -typedef void (APIENTRYP PFNGLREPLACEMENTCODEUIVERTEX3FVSUNPROC) (const GLuint *rc, const GLfloat *v); -typedef void (APIENTRYP PFNGLREPLACEMENTCODEUICOLOR4UBVERTEX3FSUNPROC) (GLuint rc, GLubyte r, GLubyte g, GLubyte b, GLubyte a, GLfloat x, GLfloat y, GLfloat z); -typedef void (APIENTRYP PFNGLREPLACEMENTCODEUICOLOR4UBVERTEX3FVSUNPROC) (const GLuint *rc, const GLubyte *c, const GLfloat *v); -typedef void (APIENTRYP PFNGLREPLACEMENTCODEUICOLOR3FVERTEX3FSUNPROC) (GLuint rc, GLfloat r, GLfloat g, GLfloat b, GLfloat x, GLfloat y, GLfloat z); -typedef void (APIENTRYP PFNGLREPLACEMENTCODEUICOLOR3FVERTEX3FVSUNPROC) (const GLuint *rc, const GLfloat *c, const GLfloat *v); -typedef void (APIENTRYP PFNGLREPLACEMENTCODEUINORMAL3FVERTEX3FSUNPROC) (GLuint rc, GLfloat nx, GLfloat ny, GLfloat nz, GLfloat x, GLfloat y, GLfloat z); -typedef void (APIENTRYP PFNGLREPLACEMENTCODEUINORMAL3FVERTEX3FVSUNPROC) (const GLuint *rc, const GLfloat *n, const GLfloat *v); -typedef void (APIENTRYP PFNGLREPLACEMENTCODEUICOLOR4FNORMAL3FVERTEX3FSUNPROC) (GLuint rc, GLfloat r, GLfloat g, GLfloat b, GLfloat a, GLfloat nx, GLfloat ny, GLfloat nz, GLfloat x, GLfloat y, GLfloat z); -typedef void (APIENTRYP PFNGLREPLACEMENTCODEUICOLOR4FNORMAL3FVERTEX3FVSUNPROC) (const GLuint *rc, const GLfloat *c, const GLfloat *n, const GLfloat *v); -typedef void (APIENTRYP PFNGLREPLACEMENTCODEUITEXCOORD2FVERTEX3FSUNPROC) (GLuint rc, GLfloat s, GLfloat t, GLfloat x, GLfloat y, GLfloat z); -typedef void (APIENTRYP PFNGLREPLACEMENTCODEUITEXCOORD2FVERTEX3FVSUNPROC) (const GLuint *rc, const GLfloat *tc, const GLfloat *v); -typedef void (APIENTRYP PFNGLREPLACEMENTCODEUITEXCOORD2FNORMAL3FVERTEX3FSUNPROC) (GLuint rc, GLfloat s, GLfloat t, GLfloat nx, GLfloat ny, GLfloat nz, GLfloat x, GLfloat y, GLfloat z); -typedef void (APIENTRYP PFNGLREPLACEMENTCODEUITEXCOORD2FNORMAL3FVERTEX3FVSUNPROC) (const GLuint *rc, const GLfloat *tc, const GLfloat *n, const GLfloat *v); -typedef void (APIENTRYP PFNGLREPLACEMENTCODEUITEXCOORD2FCOLOR4FNORMAL3FVERTEX3FSUNPROC) (GLuint rc, GLfloat s, GLfloat t, GLfloat r, GLfloat g, GLfloat b, GLfloat a, GLfloat nx, GLfloat ny, GLfloat nz, GLfloat x, GLfloat y, GLfloat z); -typedef void (APIENTRYP PFNGLREPLACEMENTCODEUITEXCOORD2FCOLOR4FNORMAL3FVERTEX3FVSUNPROC) (const GLuint *rc, const GLfloat *tc, const GLfloat *c, const GLfloat *n, const GLfloat *v); -#endif - -#ifndef GL_EXT_blend_func_separate -#define GL_EXT_blend_func_separate 1 -#ifdef GL_GLEXT_PROTOTYPES -GLAPI void APIENTRY glBlendFuncSeparateEXT (GLenum, GLenum, GLenum, GLenum); -#endif /* GL_GLEXT_PROTOTYPES */ -typedef void (APIENTRYP PFNGLBLENDFUNCSEPARATEEXTPROC) (GLenum sfactorRGB, GLenum dfactorRGB, GLenum sfactorAlpha, GLenum dfactorAlpha); -#endif - -#ifndef GL_INGR_blend_func_separate -#define GL_INGR_blend_func_separate 1 -#ifdef GL_GLEXT_PROTOTYPES -GLAPI void APIENTRY glBlendFuncSeparateINGR (GLenum, GLenum, GLenum, GLenum); -#endif /* GL_GLEXT_PROTOTYPES */ -typedef void (APIENTRYP PFNGLBLENDFUNCSEPARATEINGRPROC) (GLenum sfactorRGB, GLenum dfactorRGB, GLenum sfactorAlpha, GLenum dfactorAlpha); -#endif - -#ifndef GL_INGR_color_clamp -#define GL_INGR_color_clamp 1 -#endif - -#ifndef GL_INGR_interlace_read -#define GL_INGR_interlace_read 1 -#endif - -#ifndef GL_EXT_stencil_wrap -#define GL_EXT_stencil_wrap 1 -#endif - -#ifndef GL_EXT_422_pixels -#define GL_EXT_422_pixels 1 -#endif - -#ifndef GL_NV_texgen_reflection -#define GL_NV_texgen_reflection 1 -#endif - -#ifndef GL_SUN_convolution_border_modes -#define GL_SUN_convolution_border_modes 1 -#endif - -#ifndef GL_EXT_texture_env_add -#define GL_EXT_texture_env_add 1 -#endif - -#ifndef GL_EXT_texture_lod_bias -#define GL_EXT_texture_lod_bias 1 -#endif - -#ifndef GL_EXT_texture_filter_anisotropic -#define GL_EXT_texture_filter_anisotropic 1 -#endif - -#ifndef GL_EXT_vertex_weighting -#define GL_EXT_vertex_weighting 1 -#ifdef GL_GLEXT_PROTOTYPES -GLAPI void APIENTRY glVertexWeightfEXT (GLfloat); -GLAPI void APIENTRY glVertexWeightfvEXT (const GLfloat *); -GLAPI void APIENTRY glVertexWeightPointerEXT (GLsizei, GLenum, GLsizei, const GLvoid *); -#endif /* GL_GLEXT_PROTOTYPES */ -typedef void (APIENTRYP PFNGLVERTEXWEIGHTFEXTPROC) (GLfloat weight); -typedef void (APIENTRYP PFNGLVERTEXWEIGHTFVEXTPROC) (const GLfloat *weight); -typedef void (APIENTRYP PFNGLVERTEXWEIGHTPOINTEREXTPROC) (GLsizei size, GLenum type, GLsizei stride, const GLvoid *pointer); -#endif - -#ifndef GL_NV_light_max_exponent -#define GL_NV_light_max_exponent 1 -#endif - -#ifndef GL_NV_vertex_array_range -#define GL_NV_vertex_array_range 1 -#ifdef GL_GLEXT_PROTOTYPES -GLAPI void APIENTRY glFlushVertexArrayRangeNV (void); -GLAPI void APIENTRY glVertexArrayRangeNV (GLsizei, const GLvoid *); -#endif /* GL_GLEXT_PROTOTYPES */ -typedef void (APIENTRYP PFNGLFLUSHVERTEXARRAYRANGENVPROC) (void); -typedef void (APIENTRYP PFNGLVERTEXARRAYRANGENVPROC) (GLsizei length, const GLvoid *pointer); -#endif - -#ifndef GL_NV_register_combiners -#define GL_NV_register_combiners 1 -#ifdef GL_GLEXT_PROTOTYPES -GLAPI void APIENTRY glCombinerParameterfvNV (GLenum, const GLfloat *); -GLAPI void APIENTRY glCombinerParameterfNV (GLenum, GLfloat); -GLAPI void APIENTRY glCombinerParameterivNV (GLenum, const GLint *); -GLAPI void APIENTRY glCombinerParameteriNV (GLenum, GLint); -GLAPI void APIENTRY glCombinerInputNV (GLenum, GLenum, GLenum, GLenum, GLenum, GLenum); -GLAPI void APIENTRY glCombinerOutputNV (GLenum, GLenum, GLenum, GLenum, GLenum, GLenum, GLenum, GLboolean, GLboolean, GLboolean); -GLAPI void APIENTRY glFinalCombinerInputNV (GLenum, GLenum, GLenum, GLenum); -GLAPI void APIENTRY glGetCombinerInputParameterfvNV (GLenum, GLenum, GLenum, GLenum, GLfloat *); -GLAPI void APIENTRY glGetCombinerInputParameterivNV (GLenum, GLenum, GLenum, GLenum, GLint *); -GLAPI void APIENTRY glGetCombinerOutputParameterfvNV (GLenum, GLenum, GLenum, GLfloat *); -GLAPI void APIENTRY glGetCombinerOutputParameterivNV (GLenum, GLenum, GLenum, GLint *); -GLAPI void APIENTRY glGetFinalCombinerInputParameterfvNV (GLenum, GLenum, GLfloat *); -GLAPI void APIENTRY glGetFinalCombinerInputParameterivNV (GLenum, GLenum, GLint *); -#endif /* GL_GLEXT_PROTOTYPES */ -typedef void (APIENTRYP PFNGLCOMBINERPARAMETERFVNVPROC) (GLenum pname, const GLfloat *params); -typedef void (APIENTRYP PFNGLCOMBINERPARAMETERFNVPROC) (GLenum pname, GLfloat param); -typedef void (APIENTRYP PFNGLCOMBINERPARAMETERIVNVPROC) (GLenum pname, const GLint *params); -typedef void (APIENTRYP PFNGLCOMBINERPARAMETERINVPROC) (GLenum pname, GLint param); -typedef void (APIENTRYP PFNGLCOMBINERINPUTNVPROC) (GLenum stage, GLenum portion, GLenum variable, GLenum input, GLenum mapping, GLenum componentUsage); -typedef void (APIENTRYP PFNGLCOMBINEROUTPUTNVPROC) (GLenum stage, GLenum portion, GLenum abOutput, GLenum cdOutput, GLenum sumOutput, GLenum scale, GLenum bias, GLboolean abDotProduct, GLboolean cdDotProduct, GLboolean muxSum); -typedef void (APIENTRYP PFNGLFINALCOMBINERINPUTNVPROC) (GLenum variable, GLenum input, GLenum mapping, GLenum componentUsage); -typedef void (APIENTRYP PFNGLGETCOMBINERINPUTPARAMETERFVNVPROC) (GLenum stage, GLenum portion, GLenum variable, GLenum pname, GLfloat *params); -typedef void (APIENTRYP PFNGLGETCOMBINERINPUTPARAMETERIVNVPROC) (GLenum stage, GLenum portion, GLenum variable, GLenum pname, GLint *params); -typedef void (APIENTRYP PFNGLGETCOMBINEROUTPUTPARAMETERFVNVPROC) (GLenum stage, GLenum portion, GLenum pname, GLfloat *params); -typedef void (APIENTRYP PFNGLGETCOMBINEROUTPUTPARAMETERIVNVPROC) (GLenum stage, GLenum portion, GLenum pname, GLint *params); -typedef void (APIENTRYP PFNGLGETFINALCOMBINERINPUTPARAMETERFVNVPROC) (GLenum variable, GLenum pname, GLfloat *params); -typedef void (APIENTRYP PFNGLGETFINALCOMBINERINPUTPARAMETERIVNVPROC) (GLenum variable, GLenum pname, GLint *params); -#endif - -#ifndef GL_NV_fog_distance -#define GL_NV_fog_distance 1 -#endif - -#ifndef GL_NV_texgen_emboss -#define GL_NV_texgen_emboss 1 -#endif - -#ifndef GL_NV_blend_square -#define GL_NV_blend_square 1 -#endif - -#ifndef GL_NV_texture_env_combine4 -#define GL_NV_texture_env_combine4 1 -#endif - -#ifndef GL_MESA_resize_buffers -#define GL_MESA_resize_buffers 1 -#ifdef GL_GLEXT_PROTOTYPES -GLAPI void APIENTRY glResizeBuffersMESA (void); -#endif /* GL_GLEXT_PROTOTYPES */ -typedef void (APIENTRYP PFNGLRESIZEBUFFERSMESAPROC) (void); -#endif - -#ifndef GL_MESA_window_pos -#define GL_MESA_window_pos 1 -#ifdef GL_GLEXT_PROTOTYPES -GLAPI void APIENTRY glWindowPos2dMESA (GLdouble, GLdouble); -GLAPI void APIENTRY glWindowPos2dvMESA (const GLdouble *); -GLAPI void APIENTRY glWindowPos2fMESA (GLfloat, GLfloat); -GLAPI void APIENTRY glWindowPos2fvMESA (const GLfloat *); -GLAPI void APIENTRY glWindowPos2iMESA (GLint, GLint); -GLAPI void APIENTRY glWindowPos2ivMESA (const GLint *); -GLAPI void APIENTRY glWindowPos2sMESA (GLshort, GLshort); -GLAPI void APIENTRY glWindowPos2svMESA (const GLshort *); -GLAPI void APIENTRY glWindowPos3dMESA (GLdouble, GLdouble, GLdouble); -GLAPI void APIENTRY glWindowPos3dvMESA (const GLdouble *); -GLAPI void APIENTRY glWindowPos3fMESA (GLfloat, GLfloat, GLfloat); -GLAPI void APIENTRY glWindowPos3fvMESA (const GLfloat *); -GLAPI void APIENTRY glWindowPos3iMESA (GLint, GLint, GLint); -GLAPI void APIENTRY glWindowPos3ivMESA (const GLint *); -GLAPI void APIENTRY glWindowPos3sMESA (GLshort, GLshort, GLshort); -GLAPI void APIENTRY glWindowPos3svMESA (const GLshort *); -GLAPI void APIENTRY glWindowPos4dMESA (GLdouble, GLdouble, GLdouble, GLdouble); -GLAPI void APIENTRY glWindowPos4dvMESA (const GLdouble *); -GLAPI void APIENTRY glWindowPos4fMESA (GLfloat, GLfloat, GLfloat, GLfloat); -GLAPI void APIENTRY glWindowPos4fvMESA (const GLfloat *); -GLAPI void APIENTRY glWindowPos4iMESA (GLint, GLint, GLint, GLint); -GLAPI void APIENTRY glWindowPos4ivMESA (const GLint *); -GLAPI void APIENTRY glWindowPos4sMESA (GLshort, GLshort, GLshort, GLshort); -GLAPI void APIENTRY glWindowPos4svMESA (const GLshort *); -#endif /* GL_GLEXT_PROTOTYPES */ -typedef void (APIENTRYP PFNGLWINDOWPOS2DMESAPROC) (GLdouble x, GLdouble y); -typedef void (APIENTRYP PFNGLWINDOWPOS2DVMESAPROC) (const GLdouble *v); -typedef void (APIENTRYP PFNGLWINDOWPOS2FMESAPROC) (GLfloat x, GLfloat y); -typedef void (APIENTRYP PFNGLWINDOWPOS2FVMESAPROC) (const GLfloat *v); -typedef void (APIENTRYP PFNGLWINDOWPOS2IMESAPROC) (GLint x, GLint y); -typedef void (APIENTRYP PFNGLWINDOWPOS2IVMESAPROC) (const GLint *v); -typedef void (APIENTRYP PFNGLWINDOWPOS2SMESAPROC) (GLshort x, GLshort y); -typedef void (APIENTRYP PFNGLWINDOWPOS2SVMESAPROC) (const GLshort *v); -typedef void (APIENTRYP PFNGLWINDOWPOS3DMESAPROC) (GLdouble x, GLdouble y, GLdouble z); -typedef void (APIENTRYP PFNGLWINDOWPOS3DVMESAPROC) (const GLdouble *v); -typedef void (APIENTRYP PFNGLWINDOWPOS3FMESAPROC) (GLfloat x, GLfloat y, GLfloat z); -typedef void (APIENTRYP PFNGLWINDOWPOS3FVMESAPROC) (const GLfloat *v); -typedef void (APIENTRYP PFNGLWINDOWPOS3IMESAPROC) (GLint x, GLint y, GLint z); -typedef void (APIENTRYP PFNGLWINDOWPOS3IVMESAPROC) (const GLint *v); -typedef void (APIENTRYP PFNGLWINDOWPOS3SMESAPROC) (GLshort x, GLshort y, GLshort z); -typedef void (APIENTRYP PFNGLWINDOWPOS3SVMESAPROC) (const GLshort *v); -typedef void (APIENTRYP PFNGLWINDOWPOS4DMESAPROC) (GLdouble x, GLdouble y, GLdouble z, GLdouble w); -typedef void (APIENTRYP PFNGLWINDOWPOS4DVMESAPROC) (const GLdouble *v); -typedef void (APIENTRYP PFNGLWINDOWPOS4FMESAPROC) (GLfloat x, GLfloat y, GLfloat z, GLfloat w); -typedef void (APIENTRYP PFNGLWINDOWPOS4FVMESAPROC) (const GLfloat *v); -typedef void (APIENTRYP PFNGLWINDOWPOS4IMESAPROC) (GLint x, GLint y, GLint z, GLint w); -typedef void (APIENTRYP PFNGLWINDOWPOS4IVMESAPROC) (const GLint *v); -typedef void (APIENTRYP PFNGLWINDOWPOS4SMESAPROC) (GLshort x, GLshort y, GLshort z, GLshort w); -typedef void (APIENTRYP PFNGLWINDOWPOS4SVMESAPROC) (const GLshort *v); -#endif - -#ifndef GL_IBM_cull_vertex -#define GL_IBM_cull_vertex 1 -#endif - -#ifndef GL_IBM_multimode_draw_arrays -#define GL_IBM_multimode_draw_arrays 1 -#ifdef GL_GLEXT_PROTOTYPES -GLAPI void APIENTRY glMultiModeDrawArraysIBM (const GLenum *, const GLint *, const GLsizei *, GLsizei, GLint); -GLAPI void APIENTRY glMultiModeDrawElementsIBM (const GLenum *, const GLsizei *, GLenum, const GLvoid* const *, GLsizei, GLint); -#endif /* GL_GLEXT_PROTOTYPES */ -typedef void (APIENTRYP PFNGLMULTIMODEDRAWARRAYSIBMPROC) (const GLenum *mode, const GLint *first, const GLsizei *count, GLsizei primcount, GLint modestride); -typedef void (APIENTRYP PFNGLMULTIMODEDRAWELEMENTSIBMPROC) (const GLenum *mode, const GLsizei *count, GLenum type, const GLvoid* const *indices, GLsizei primcount, GLint modestride); -#endif - -#ifndef GL_IBM_vertex_array_lists -#define GL_IBM_vertex_array_lists 1 -#ifdef GL_GLEXT_PROTOTYPES -GLAPI void APIENTRY glColorPointerListIBM (GLint, GLenum, GLint, const GLvoid* *, GLint); -GLAPI void APIENTRY glSecondaryColorPointerListIBM (GLint, GLenum, GLint, const GLvoid* *, GLint); -GLAPI void APIENTRY glEdgeFlagPointerListIBM (GLint, const GLboolean* *, GLint); -GLAPI void APIENTRY glFogCoordPointerListIBM (GLenum, GLint, const GLvoid* *, GLint); -GLAPI void APIENTRY glIndexPointerListIBM (GLenum, GLint, const GLvoid* *, GLint); -GLAPI void APIENTRY glNormalPointerListIBM (GLenum, GLint, const GLvoid* *, GLint); -GLAPI void APIENTRY glTexCoordPointerListIBM (GLint, GLenum, GLint, const GLvoid* *, GLint); -GLAPI void APIENTRY glVertexPointerListIBM (GLint, GLenum, GLint, const GLvoid* *, GLint); -#endif /* GL_GLEXT_PROTOTYPES */ -typedef void (APIENTRYP PFNGLCOLORPOINTERLISTIBMPROC) (GLint size, GLenum type, GLint stride, const GLvoid* *pointer, GLint ptrstride); -typedef void (APIENTRYP PFNGLSECONDARYCOLORPOINTERLISTIBMPROC) (GLint size, GLenum type, GLint stride, const GLvoid* *pointer, GLint ptrstride); -typedef void (APIENTRYP PFNGLEDGEFLAGPOINTERLISTIBMPROC) (GLint stride, const GLboolean* *pointer, GLint ptrstride); -typedef void (APIENTRYP PFNGLFOGCOORDPOINTERLISTIBMPROC) (GLenum type, GLint stride, const GLvoid* *pointer, GLint ptrstride); -typedef void (APIENTRYP PFNGLINDEXPOINTERLISTIBMPROC) (GLenum type, GLint stride, const GLvoid* *pointer, GLint ptrstride); -typedef void (APIENTRYP PFNGLNORMALPOINTERLISTIBMPROC) (GLenum type, GLint stride, const GLvoid* *pointer, GLint ptrstride); -typedef void (APIENTRYP PFNGLTEXCOORDPOINTERLISTIBMPROC) (GLint size, GLenum type, GLint stride, const GLvoid* *pointer, GLint ptrstride); -typedef void (APIENTRYP PFNGLVERTEXPOINTERLISTIBMPROC) (GLint size, GLenum type, GLint stride, const GLvoid* *pointer, GLint ptrstride); -#endif - -#ifndef GL_SGIX_subsample -#define GL_SGIX_subsample 1 -#endif - -#ifndef GL_SGIX_ycrcba -#define GL_SGIX_ycrcba 1 -#endif - -#ifndef GL_SGIX_ycrcb_subsample -#define GL_SGIX_ycrcb_subsample 1 -#endif - -#ifndef GL_SGIX_depth_pass_instrument -#define GL_SGIX_depth_pass_instrument 1 -#endif - -#ifndef GL_3DFX_texture_compression_FXT1 -#define GL_3DFX_texture_compression_FXT1 1 -#endif - -#ifndef GL_3DFX_multisample -#define GL_3DFX_multisample 1 -#endif - -#ifndef GL_3DFX_tbuffer -#define GL_3DFX_tbuffer 1 -#ifdef GL_GLEXT_PROTOTYPES -GLAPI void APIENTRY glTbufferMask3DFX (GLuint); -#endif /* GL_GLEXT_PROTOTYPES */ -typedef void (APIENTRYP PFNGLTBUFFERMASK3DFXPROC) (GLuint mask); -#endif - -#ifndef GL_EXT_multisample -#define GL_EXT_multisample 1 -#ifdef GL_GLEXT_PROTOTYPES -GLAPI void APIENTRY glSampleMaskEXT (GLclampf, GLboolean); -GLAPI void APIENTRY glSamplePatternEXT (GLenum); -#endif /* GL_GLEXT_PROTOTYPES */ -typedef void (APIENTRYP PFNGLSAMPLEMASKEXTPROC) (GLclampf value, GLboolean invert); -typedef void (APIENTRYP PFNGLSAMPLEPATTERNEXTPROC) (GLenum pattern); -#endif - -#ifndef GL_SGIX_vertex_preclip -#define GL_SGIX_vertex_preclip 1 -#endif - -#ifndef GL_SGIX_convolution_accuracy -#define GL_SGIX_convolution_accuracy 1 -#endif - -#ifndef GL_SGIX_resample -#define GL_SGIX_resample 1 -#endif - -#ifndef GL_SGIS_point_line_texgen -#define GL_SGIS_point_line_texgen 1 -#endif - -#ifndef GL_SGIS_texture_color_mask -#define GL_SGIS_texture_color_mask 1 -#ifdef GL_GLEXT_PROTOTYPES -GLAPI void APIENTRY glTextureColorMaskSGIS (GLboolean, GLboolean, GLboolean, GLboolean); -#endif /* GL_GLEXT_PROTOTYPES */ -typedef void (APIENTRYP PFNGLTEXTURECOLORMASKSGISPROC) (GLboolean red, GLboolean green, GLboolean blue, GLboolean alpha); -#endif - -#ifndef GL_SGIX_igloo_interface -#define GL_SGIX_igloo_interface 1 -#ifdef GL_GLEXT_PROTOTYPES -GLAPI void APIENTRY glIglooInterfaceSGIX (GLenum, const GLvoid *); -#endif /* GL_GLEXT_PROTOTYPES */ -typedef void (APIENTRYP PFNGLIGLOOINTERFACESGIXPROC) (GLenum pname, const GLvoid *params); -#endif - -#ifndef GL_EXT_texture_env_dot3 -#define GL_EXT_texture_env_dot3 1 -#endif - -#ifndef GL_ATI_texture_mirror_once -#define GL_ATI_texture_mirror_once 1 -#endif - -#ifndef GL_NV_fence -#define GL_NV_fence 1 -#ifdef GL_GLEXT_PROTOTYPES -GLAPI void APIENTRY glDeleteFencesNV (GLsizei, const GLuint *); -GLAPI void APIENTRY glGenFencesNV (GLsizei, GLuint *); -GLAPI GLboolean APIENTRY glIsFenceNV (GLuint); -GLAPI GLboolean APIENTRY glTestFenceNV (GLuint); -GLAPI void APIENTRY glGetFenceivNV (GLuint, GLenum, GLint *); -GLAPI void APIENTRY glFinishFenceNV (GLuint); -GLAPI void APIENTRY glSetFenceNV (GLuint, GLenum); -#endif /* GL_GLEXT_PROTOTYPES */ -typedef void (APIENTRYP PFNGLDELETEFENCESNVPROC) (GLsizei n, const GLuint *fences); -typedef void (APIENTRYP PFNGLGENFENCESNVPROC) (GLsizei n, GLuint *fences); -typedef GLboolean (APIENTRYP PFNGLISFENCENVPROC) (GLuint fence); -typedef GLboolean (APIENTRYP PFNGLTESTFENCENVPROC) (GLuint fence); -typedef void (APIENTRYP PFNGLGETFENCEIVNVPROC) (GLuint fence, GLenum pname, GLint *params); -typedef void (APIENTRYP PFNGLFINISHFENCENVPROC) (GLuint fence); -typedef void (APIENTRYP PFNGLSETFENCENVPROC) (GLuint fence, GLenum condition); -#endif - -#ifndef GL_NV_evaluators -#define GL_NV_evaluators 1 -#ifdef GL_GLEXT_PROTOTYPES -GLAPI void APIENTRY glMapControlPointsNV (GLenum, GLuint, GLenum, GLsizei, GLsizei, GLint, GLint, GLboolean, const GLvoid *); -GLAPI void APIENTRY glMapParameterivNV (GLenum, GLenum, const GLint *); -GLAPI void APIENTRY glMapParameterfvNV (GLenum, GLenum, const GLfloat *); -GLAPI void APIENTRY glGetMapControlPointsNV (GLenum, GLuint, GLenum, GLsizei, GLsizei, GLboolean, GLvoid *); -GLAPI void APIENTRY glGetMapParameterivNV (GLenum, GLenum, GLint *); -GLAPI void APIENTRY glGetMapParameterfvNV (GLenum, GLenum, GLfloat *); -GLAPI void APIENTRY glGetMapAttribParameterivNV (GLenum, GLuint, GLenum, GLint *); -GLAPI void APIENTRY glGetMapAttribParameterfvNV (GLenum, GLuint, GLenum, GLfloat *); -GLAPI void APIENTRY glEvalMapsNV (GLenum, GLenum); -#endif /* GL_GLEXT_PROTOTYPES */ -typedef void (APIENTRYP PFNGLMAPCONTROLPOINTSNVPROC) (GLenum target, GLuint index, GLenum type, GLsizei ustride, GLsizei vstride, GLint uorder, GLint vorder, GLboolean packed, const GLvoid *points); -typedef void (APIENTRYP PFNGLMAPPARAMETERIVNVPROC) (GLenum target, GLenum pname, const GLint *params); -typedef void (APIENTRYP PFNGLMAPPARAMETERFVNVPROC) (GLenum target, GLenum pname, const GLfloat *params); -typedef void (APIENTRYP PFNGLGETMAPCONTROLPOINTSNVPROC) (GLenum target, GLuint index, GLenum type, GLsizei ustride, GLsizei vstride, GLboolean packed, GLvoid *points); -typedef void (APIENTRYP PFNGLGETMAPPARAMETERIVNVPROC) (GLenum target, GLenum pname, GLint *params); -typedef void (APIENTRYP PFNGLGETMAPPARAMETERFVNVPROC) (GLenum target, GLenum pname, GLfloat *params); -typedef void (APIENTRYP PFNGLGETMAPATTRIBPARAMETERIVNVPROC) (GLenum target, GLuint index, GLenum pname, GLint *params); -typedef void (APIENTRYP PFNGLGETMAPATTRIBPARAMETERFVNVPROC) (GLenum target, GLuint index, GLenum pname, GLfloat *params); -typedef void (APIENTRYP PFNGLEVALMAPSNVPROC) (GLenum target, GLenum mode); -#endif - -#ifndef GL_NV_packed_depth_stencil -#define GL_NV_packed_depth_stencil 1 -#endif - -#ifndef GL_NV_register_combiners2 -#define GL_NV_register_combiners2 1 -#ifdef GL_GLEXT_PROTOTYPES -GLAPI void APIENTRY glCombinerStageParameterfvNV (GLenum, GLenum, const GLfloat *); -GLAPI void APIENTRY glGetCombinerStageParameterfvNV (GLenum, GLenum, GLfloat *); -#endif /* GL_GLEXT_PROTOTYPES */ -typedef void (APIENTRYP PFNGLCOMBINERSTAGEPARAMETERFVNVPROC) (GLenum stage, GLenum pname, const GLfloat *params); -typedef void (APIENTRYP PFNGLGETCOMBINERSTAGEPARAMETERFVNVPROC) (GLenum stage, GLenum pname, GLfloat *params); -#endif - -#ifndef GL_NV_texture_compression_vtc -#define GL_NV_texture_compression_vtc 1 -#endif - -#ifndef GL_NV_texture_rectangle -#define GL_NV_texture_rectangle 1 -#endif - -#ifndef GL_NV_texture_shader -#define GL_NV_texture_shader 1 -#endif - -#ifndef GL_NV_texture_shader2 -#define GL_NV_texture_shader2 1 -#endif - -#ifndef GL_NV_vertex_array_range2 -#define GL_NV_vertex_array_range2 1 -#endif - -#ifndef GL_NV_vertex_program -#define GL_NV_vertex_program 1 -#ifdef GL_GLEXT_PROTOTYPES -GLAPI GLboolean APIENTRY glAreProgramsResidentNV (GLsizei, const GLuint *, GLboolean *); -GLAPI void APIENTRY glBindProgramNV (GLenum, GLuint); -GLAPI void APIENTRY glDeleteProgramsNV (GLsizei, const GLuint *); -GLAPI void APIENTRY glExecuteProgramNV (GLenum, GLuint, const GLfloat *); -GLAPI void APIENTRY glGenProgramsNV (GLsizei, GLuint *); -GLAPI void APIENTRY glGetProgramParameterdvNV (GLenum, GLuint, GLenum, GLdouble *); -GLAPI void APIENTRY glGetProgramParameterfvNV (GLenum, GLuint, GLenum, GLfloat *); -GLAPI void APIENTRY glGetProgramivNV (GLuint, GLenum, GLint *); -GLAPI void APIENTRY glGetProgramStringNV (GLuint, GLenum, GLubyte *); -GLAPI void APIENTRY glGetTrackMatrixivNV (GLenum, GLuint, GLenum, GLint *); -GLAPI void APIENTRY glGetVertexAttribdvNV (GLuint, GLenum, GLdouble *); -GLAPI void APIENTRY glGetVertexAttribfvNV (GLuint, GLenum, GLfloat *); -GLAPI void APIENTRY glGetVertexAttribivNV (GLuint, GLenum, GLint *); -GLAPI void APIENTRY glGetVertexAttribPointervNV (GLuint, GLenum, GLvoid* *); -GLAPI GLboolean APIENTRY glIsProgramNV (GLuint); -GLAPI void APIENTRY glLoadProgramNV (GLenum, GLuint, GLsizei, const GLubyte *); -GLAPI void APIENTRY glProgramParameter4dNV (GLenum, GLuint, GLdouble, GLdouble, GLdouble, GLdouble); -GLAPI void APIENTRY glProgramParameter4dvNV (GLenum, GLuint, const GLdouble *); -GLAPI void APIENTRY glProgramParameter4fNV (GLenum, GLuint, GLfloat, GLfloat, GLfloat, GLfloat); -GLAPI void APIENTRY glProgramParameter4fvNV (GLenum, GLuint, const GLfloat *); -GLAPI void APIENTRY glProgramParameters4dvNV (GLenum, GLuint, GLuint, const GLdouble *); -GLAPI void APIENTRY glProgramParameters4fvNV (GLenum, GLuint, GLuint, const GLfloat *); -GLAPI void APIENTRY glRequestResidentProgramsNV (GLsizei, const GLuint *); -GLAPI void APIENTRY glTrackMatrixNV (GLenum, GLuint, GLenum, GLenum); -GLAPI void APIENTRY glVertexAttribPointerNV (GLuint, GLint, GLenum, GLsizei, const GLvoid *); -GLAPI void APIENTRY glVertexAttrib1dNV (GLuint, GLdouble); -GLAPI void APIENTRY glVertexAttrib1dvNV (GLuint, const GLdouble *); -GLAPI void APIENTRY glVertexAttrib1fNV (GLuint, GLfloat); -GLAPI void APIENTRY glVertexAttrib1fvNV (GLuint, const GLfloat *); -GLAPI void APIENTRY glVertexAttrib1sNV (GLuint, GLshort); -GLAPI void APIENTRY glVertexAttrib1svNV (GLuint, const GLshort *); -GLAPI void APIENTRY glVertexAttrib2dNV (GLuint, GLdouble, GLdouble); -GLAPI void APIENTRY glVertexAttrib2dvNV (GLuint, const GLdouble *); -GLAPI void APIENTRY glVertexAttrib2fNV (GLuint, GLfloat, GLfloat); -GLAPI void APIENTRY glVertexAttrib2fvNV (GLuint, const GLfloat *); -GLAPI void APIENTRY glVertexAttrib2sNV (GLuint, GLshort, GLshort); -GLAPI void APIENTRY glVertexAttrib2svNV (GLuint, const GLshort *); -GLAPI void APIENTRY glVertexAttrib3dNV (GLuint, GLdouble, GLdouble, GLdouble); -GLAPI void APIENTRY glVertexAttrib3dvNV (GLuint, const GLdouble *); -GLAPI void APIENTRY glVertexAttrib3fNV (GLuint, GLfloat, GLfloat, GLfloat); -GLAPI void APIENTRY glVertexAttrib3fvNV (GLuint, const GLfloat *); -GLAPI void APIENTRY glVertexAttrib3sNV (GLuint, GLshort, GLshort, GLshort); -GLAPI void APIENTRY glVertexAttrib3svNV (GLuint, const GLshort *); -GLAPI void APIENTRY glVertexAttrib4dNV (GLuint, GLdouble, GLdouble, GLdouble, GLdouble); -GLAPI void APIENTRY glVertexAttrib4dvNV (GLuint, const GLdouble *); -GLAPI void APIENTRY glVertexAttrib4fNV (GLuint, GLfloat, GLfloat, GLfloat, GLfloat); -GLAPI void APIENTRY glVertexAttrib4fvNV (GLuint, const GLfloat *); -GLAPI void APIENTRY glVertexAttrib4sNV (GLuint, GLshort, GLshort, GLshort, GLshort); -GLAPI void APIENTRY glVertexAttrib4svNV (GLuint, const GLshort *); -GLAPI void APIENTRY glVertexAttrib4ubNV (GLuint, GLubyte, GLubyte, GLubyte, GLubyte); -GLAPI void APIENTRY glVertexAttrib4ubvNV (GLuint, const GLubyte *); -GLAPI void APIENTRY glVertexAttribs1dvNV (GLuint, GLsizei, const GLdouble *); -GLAPI void APIENTRY glVertexAttribs1fvNV (GLuint, GLsizei, const GLfloat *); -GLAPI void APIENTRY glVertexAttribs1svNV (GLuint, GLsizei, const GLshort *); -GLAPI void APIENTRY glVertexAttribs2dvNV (GLuint, GLsizei, const GLdouble *); -GLAPI void APIENTRY glVertexAttribs2fvNV (GLuint, GLsizei, const GLfloat *); -GLAPI void APIENTRY glVertexAttribs2svNV (GLuint, GLsizei, const GLshort *); -GLAPI void APIENTRY glVertexAttribs3dvNV (GLuint, GLsizei, const GLdouble *); -GLAPI void APIENTRY glVertexAttribs3fvNV (GLuint, GLsizei, const GLfloat *); -GLAPI void APIENTRY glVertexAttribs3svNV (GLuint, GLsizei, const GLshort *); -GLAPI void APIENTRY glVertexAttribs4dvNV (GLuint, GLsizei, const GLdouble *); -GLAPI void APIENTRY glVertexAttribs4fvNV (GLuint, GLsizei, const GLfloat *); -GLAPI void APIENTRY glVertexAttribs4svNV (GLuint, GLsizei, const GLshort *); -GLAPI void APIENTRY glVertexAttribs4ubvNV (GLuint, GLsizei, const GLubyte *); -#endif /* GL_GLEXT_PROTOTYPES */ -typedef GLboolean (APIENTRYP PFNGLAREPROGRAMSRESIDENTNVPROC) (GLsizei n, const GLuint *programs, GLboolean *residences); -typedef void (APIENTRYP PFNGLBINDPROGRAMNVPROC) (GLenum target, GLuint id); -typedef void (APIENTRYP PFNGLDELETEPROGRAMSNVPROC) (GLsizei n, const GLuint *programs); -typedef void (APIENTRYP PFNGLEXECUTEPROGRAMNVPROC) (GLenum target, GLuint id, const GLfloat *params); -typedef void (APIENTRYP PFNGLGENPROGRAMSNVPROC) (GLsizei n, GLuint *programs); -typedef void (APIENTRYP PFNGLGETPROGRAMPARAMETERDVNVPROC) (GLenum target, GLuint index, GLenum pname, GLdouble *params); -typedef void (APIENTRYP PFNGLGETPROGRAMPARAMETERFVNVPROC) (GLenum target, GLuint index, GLenum pname, GLfloat *params); -typedef void (APIENTRYP PFNGLGETPROGRAMIVNVPROC) (GLuint id, GLenum pname, GLint *params); -typedef void (APIENTRYP PFNGLGETPROGRAMSTRINGNVPROC) (GLuint id, GLenum pname, GLubyte *program); -typedef void (APIENTRYP PFNGLGETTRACKMATRIXIVNVPROC) (GLenum target, GLuint address, GLenum pname, GLint *params); -typedef void (APIENTRYP PFNGLGETVERTEXATTRIBDVNVPROC) (GLuint index, GLenum pname, GLdouble *params); -typedef void (APIENTRYP PFNGLGETVERTEXATTRIBFVNVPROC) (GLuint index, GLenum pname, GLfloat *params); -typedef void (APIENTRYP PFNGLGETVERTEXATTRIBIVNVPROC) (GLuint index, GLenum pname, GLint *params); -typedef void (APIENTRYP PFNGLGETVERTEXATTRIBPOINTERVNVPROC) (GLuint index, GLenum pname, GLvoid* *pointer); -typedef GLboolean (APIENTRYP PFNGLISPROGRAMNVPROC) (GLuint id); -typedef void (APIENTRYP PFNGLLOADPROGRAMNVPROC) (GLenum target, GLuint id, GLsizei len, const GLubyte *program); -typedef void (APIENTRYP PFNGLPROGRAMPARAMETER4DNVPROC) (GLenum target, GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w); -typedef void (APIENTRYP PFNGLPROGRAMPARAMETER4DVNVPROC) (GLenum target, GLuint index, const GLdouble *v); -typedef void (APIENTRYP PFNGLPROGRAMPARAMETER4FNVPROC) (GLenum target, GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w); -typedef void (APIENTRYP PFNGLPROGRAMPARAMETER4FVNVPROC) (GLenum target, GLuint index, const GLfloat *v); -typedef void (APIENTRYP PFNGLPROGRAMPARAMETERS4DVNVPROC) (GLenum target, GLuint index, GLuint count, const GLdouble *v); -typedef void (APIENTRYP PFNGLPROGRAMPARAMETERS4FVNVPROC) (GLenum target, GLuint index, GLuint count, const GLfloat *v); -typedef void (APIENTRYP PFNGLREQUESTRESIDENTPROGRAMSNVPROC) (GLsizei n, const GLuint *programs); -typedef void (APIENTRYP PFNGLTRACKMATRIXNVPROC) (GLenum target, GLuint address, GLenum matrix, GLenum transform); -typedef void (APIENTRYP PFNGLVERTEXATTRIBPOINTERNVPROC) (GLuint index, GLint fsize, GLenum type, GLsizei stride, const GLvoid *pointer); -typedef void (APIENTRYP PFNGLVERTEXATTRIB1DNVPROC) (GLuint index, GLdouble x); -typedef void (APIENTRYP PFNGLVERTEXATTRIB1DVNVPROC) (GLuint index, const GLdouble *v); -typedef void (APIENTRYP PFNGLVERTEXATTRIB1FNVPROC) (GLuint index, GLfloat x); -typedef void (APIENTRYP PFNGLVERTEXATTRIB1FVNVPROC) (GLuint index, const GLfloat *v); -typedef void (APIENTRYP PFNGLVERTEXATTRIB1SNVPROC) (GLuint index, GLshort x); -typedef void (APIENTRYP PFNGLVERTEXATTRIB1SVNVPROC) (GLuint index, const GLshort *v); -typedef void (APIENTRYP PFNGLVERTEXATTRIB2DNVPROC) (GLuint index, GLdouble x, GLdouble y); -typedef void (APIENTRYP PFNGLVERTEXATTRIB2DVNVPROC) (GLuint index, const GLdouble *v); -typedef void (APIENTRYP PFNGLVERTEXATTRIB2FNVPROC) (GLuint index, GLfloat x, GLfloat y); -typedef void (APIENTRYP PFNGLVERTEXATTRIB2FVNVPROC) (GLuint index, const GLfloat *v); -typedef void (APIENTRYP PFNGLVERTEXATTRIB2SNVPROC) (GLuint index, GLshort x, GLshort y); -typedef void (APIENTRYP PFNGLVERTEXATTRIB2SVNVPROC) (GLuint index, const GLshort *v); -typedef void (APIENTRYP PFNGLVERTEXATTRIB3DNVPROC) (GLuint index, GLdouble x, GLdouble y, GLdouble z); -typedef void (APIENTRYP PFNGLVERTEXATTRIB3DVNVPROC) (GLuint index, const GLdouble *v); -typedef void (APIENTRYP PFNGLVERTEXATTRIB3FNVPROC) (GLuint index, GLfloat x, GLfloat y, GLfloat z); -typedef void (APIENTRYP PFNGLVERTEXATTRIB3FVNVPROC) (GLuint index, const GLfloat *v); -typedef void (APIENTRYP PFNGLVERTEXATTRIB3SNVPROC) (GLuint index, GLshort x, GLshort y, GLshort z); -typedef void (APIENTRYP PFNGLVERTEXATTRIB3SVNVPROC) (GLuint index, const GLshort *v); -typedef void (APIENTRYP PFNGLVERTEXATTRIB4DNVPROC) (GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w); -typedef void (APIENTRYP PFNGLVERTEXATTRIB4DVNVPROC) (GLuint index, const GLdouble *v); -typedef void (APIENTRYP PFNGLVERTEXATTRIB4FNVPROC) (GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w); -typedef void (APIENTRYP PFNGLVERTEXATTRIB4FVNVPROC) (GLuint index, const GLfloat *v); -typedef void (APIENTRYP PFNGLVERTEXATTRIB4SNVPROC) (GLuint index, GLshort x, GLshort y, GLshort z, GLshort w); -typedef void (APIENTRYP PFNGLVERTEXATTRIB4SVNVPROC) (GLuint index, const GLshort *v); -typedef void (APIENTRYP PFNGLVERTEXATTRIB4UBNVPROC) (GLuint index, GLubyte x, GLubyte y, GLubyte z, GLubyte w); -typedef void (APIENTRYP PFNGLVERTEXATTRIB4UBVNVPROC) (GLuint index, const GLubyte *v); -typedef void (APIENTRYP PFNGLVERTEXATTRIBS1DVNVPROC) (GLuint index, GLsizei count, const GLdouble *v); -typedef void (APIENTRYP PFNGLVERTEXATTRIBS1FVNVPROC) (GLuint index, GLsizei count, const GLfloat *v); -typedef void (APIENTRYP PFNGLVERTEXATTRIBS1SVNVPROC) (GLuint index, GLsizei count, const GLshort *v); -typedef void (APIENTRYP PFNGLVERTEXATTRIBS2DVNVPROC) (GLuint index, GLsizei count, const GLdouble *v); -typedef void (APIENTRYP PFNGLVERTEXATTRIBS2FVNVPROC) (GLuint index, GLsizei count, const GLfloat *v); -typedef void (APIENTRYP PFNGLVERTEXATTRIBS2SVNVPROC) (GLuint index, GLsizei count, const GLshort *v); -typedef void (APIENTRYP PFNGLVERTEXATTRIBS3DVNVPROC) (GLuint index, GLsizei count, const GLdouble *v); -typedef void (APIENTRYP PFNGLVERTEXATTRIBS3FVNVPROC) (GLuint index, GLsizei count, const GLfloat *v); -typedef void (APIENTRYP PFNGLVERTEXATTRIBS3SVNVPROC) (GLuint index, GLsizei count, const GLshort *v); -typedef void (APIENTRYP PFNGLVERTEXATTRIBS4DVNVPROC) (GLuint index, GLsizei count, const GLdouble *v); -typedef void (APIENTRYP PFNGLVERTEXATTRIBS4FVNVPROC) (GLuint index, GLsizei count, const GLfloat *v); -typedef void (APIENTRYP PFNGLVERTEXATTRIBS4SVNVPROC) (GLuint index, GLsizei count, const GLshort *v); -typedef void (APIENTRYP PFNGLVERTEXATTRIBS4UBVNVPROC) (GLuint index, GLsizei count, const GLubyte *v); -#endif - -#ifndef GL_SGIX_texture_coordinate_clamp -#define GL_SGIX_texture_coordinate_clamp 1 -#endif - -#ifndef GL_SGIX_scalebias_hint -#define GL_SGIX_scalebias_hint 1 -#endif - -#ifndef GL_OML_interlace -#define GL_OML_interlace 1 -#endif - -#ifndef GL_OML_subsample -#define GL_OML_subsample 1 -#endif - -#ifndef GL_OML_resample -#define GL_OML_resample 1 -#endif - -#ifndef GL_NV_copy_depth_to_color -#define GL_NV_copy_depth_to_color 1 -#endif - -#ifndef GL_ATI_envmap_bumpmap -#define GL_ATI_envmap_bumpmap 1 -#ifdef GL_GLEXT_PROTOTYPES -GLAPI void APIENTRY glTexBumpParameterivATI (GLenum, const GLint *); -GLAPI void APIENTRY glTexBumpParameterfvATI (GLenum, const GLfloat *); -GLAPI void APIENTRY glGetTexBumpParameterivATI (GLenum, GLint *); -GLAPI void APIENTRY glGetTexBumpParameterfvATI (GLenum, GLfloat *); -#endif /* GL_GLEXT_PROTOTYPES */ -typedef void (APIENTRYP PFNGLTEXBUMPPARAMETERIVATIPROC) (GLenum pname, const GLint *param); -typedef void (APIENTRYP PFNGLTEXBUMPPARAMETERFVATIPROC) (GLenum pname, const GLfloat *param); -typedef void (APIENTRYP PFNGLGETTEXBUMPPARAMETERIVATIPROC) (GLenum pname, GLint *param); -typedef void (APIENTRYP PFNGLGETTEXBUMPPARAMETERFVATIPROC) (GLenum pname, GLfloat *param); -#endif - -#ifndef GL_ATI_fragment_shader -#define GL_ATI_fragment_shader 1 -#ifdef GL_GLEXT_PROTOTYPES -GLAPI GLuint APIENTRY glGenFragmentShadersATI (GLuint); -GLAPI void APIENTRY glBindFragmentShaderATI (GLuint); -GLAPI void APIENTRY glDeleteFragmentShaderATI (GLuint); -GLAPI void APIENTRY glBeginFragmentShaderATI (void); -GLAPI void APIENTRY glEndFragmentShaderATI (void); -GLAPI void APIENTRY glPassTexCoordATI (GLuint, GLuint, GLenum); -GLAPI void APIENTRY glSampleMapATI (GLuint, GLuint, GLenum); -GLAPI void APIENTRY glColorFragmentOp1ATI (GLenum, GLuint, GLuint, GLuint, GLuint, GLuint, GLuint); -GLAPI void APIENTRY glColorFragmentOp2ATI (GLenum, GLuint, GLuint, GLuint, GLuint, GLuint, GLuint, GLuint, GLuint, GLuint); -GLAPI void APIENTRY glColorFragmentOp3ATI (GLenum, GLuint, GLuint, GLuint, GLuint, GLuint, GLuint, GLuint, GLuint, GLuint, GLuint, GLuint, GLuint); -GLAPI void APIENTRY glAlphaFragmentOp1ATI (GLenum, GLuint, GLuint, GLuint, GLuint, GLuint); -GLAPI void APIENTRY glAlphaFragmentOp2ATI (GLenum, GLuint, GLuint, GLuint, GLuint, GLuint, GLuint, GLuint, GLuint); -GLAPI void APIENTRY glAlphaFragmentOp3ATI (GLenum, GLuint, GLuint, GLuint, GLuint, GLuint, GLuint, GLuint, GLuint, GLuint, GLuint, GLuint); -GLAPI void APIENTRY glSetFragmentShaderConstantATI (GLuint, const GLfloat *); -#endif /* GL_GLEXT_PROTOTYPES */ -typedef GLuint (APIENTRYP PFNGLGENFRAGMENTSHADERSATIPROC) (GLuint range); -typedef void (APIENTRYP PFNGLBINDFRAGMENTSHADERATIPROC) (GLuint id); -typedef void (APIENTRYP PFNGLDELETEFRAGMENTSHADERATIPROC) (GLuint id); -typedef void (APIENTRYP PFNGLBEGINFRAGMENTSHADERATIPROC) (void); -typedef void (APIENTRYP PFNGLENDFRAGMENTSHADERATIPROC) (void); -typedef void (APIENTRYP PFNGLPASSTEXCOORDATIPROC) (GLuint dst, GLuint coord, GLenum swizzle); -typedef void (APIENTRYP PFNGLSAMPLEMAPATIPROC) (GLuint dst, GLuint interp, GLenum swizzle); -typedef void (APIENTRYP PFNGLCOLORFRAGMENTOP1ATIPROC) (GLenum op, GLuint dst, GLuint dstMask, GLuint dstMod, GLuint arg1, GLuint arg1Rep, GLuint arg1Mod); -typedef void (APIENTRYP PFNGLCOLORFRAGMENTOP2ATIPROC) (GLenum op, GLuint dst, GLuint dstMask, GLuint dstMod, GLuint arg1, GLuint arg1Rep, GLuint arg1Mod, GLuint arg2, GLuint arg2Rep, GLuint arg2Mod); -typedef void (APIENTRYP PFNGLCOLORFRAGMENTOP3ATIPROC) (GLenum op, GLuint dst, GLuint dstMask, GLuint dstMod, GLuint arg1, GLuint arg1Rep, GLuint arg1Mod, GLuint arg2, GLuint arg2Rep, GLuint arg2Mod, GLuint arg3, GLuint arg3Rep, GLuint arg3Mod); -typedef void (APIENTRYP PFNGLALPHAFRAGMENTOP1ATIPROC) (GLenum op, GLuint dst, GLuint dstMod, GLuint arg1, GLuint arg1Rep, GLuint arg1Mod); -typedef void (APIENTRYP PFNGLALPHAFRAGMENTOP2ATIPROC) (GLenum op, GLuint dst, GLuint dstMod, GLuint arg1, GLuint arg1Rep, GLuint arg1Mod, GLuint arg2, GLuint arg2Rep, GLuint arg2Mod); -typedef void (APIENTRYP PFNGLALPHAFRAGMENTOP3ATIPROC) (GLenum op, GLuint dst, GLuint dstMod, GLuint arg1, GLuint arg1Rep, GLuint arg1Mod, GLuint arg2, GLuint arg2Rep, GLuint arg2Mod, GLuint arg3, GLuint arg3Rep, GLuint arg3Mod); -typedef void (APIENTRYP PFNGLSETFRAGMENTSHADERCONSTANTATIPROC) (GLuint dst, const GLfloat *value); -#endif - -#ifndef GL_ATI_pn_triangles -#define GL_ATI_pn_triangles 1 -#ifdef GL_GLEXT_PROTOTYPES -GLAPI void APIENTRY glPNTrianglesiATI (GLenum, GLint); -GLAPI void APIENTRY glPNTrianglesfATI (GLenum, GLfloat); -#endif /* GL_GLEXT_PROTOTYPES */ -typedef void (APIENTRYP PFNGLPNTRIANGLESIATIPROC) (GLenum pname, GLint param); -typedef void (APIENTRYP PFNGLPNTRIANGLESFATIPROC) (GLenum pname, GLfloat param); -#endif - -#ifndef GL_ATI_vertex_array_object -#define GL_ATI_vertex_array_object 1 -#ifdef GL_GLEXT_PROTOTYPES -GLAPI GLuint APIENTRY glNewObjectBufferATI (GLsizei, const GLvoid *, GLenum); -GLAPI GLboolean APIENTRY glIsObjectBufferATI (GLuint); -GLAPI void APIENTRY glUpdateObjectBufferATI (GLuint, GLuint, GLsizei, const GLvoid *, GLenum); -GLAPI void APIENTRY glGetObjectBufferfvATI (GLuint, GLenum, GLfloat *); -GLAPI void APIENTRY glGetObjectBufferivATI (GLuint, GLenum, GLint *); -GLAPI void APIENTRY glFreeObjectBufferATI (GLuint); -GLAPI void APIENTRY glArrayObjectATI (GLenum, GLint, GLenum, GLsizei, GLuint, GLuint); -GLAPI void APIENTRY glGetArrayObjectfvATI (GLenum, GLenum, GLfloat *); -GLAPI void APIENTRY glGetArrayObjectivATI (GLenum, GLenum, GLint *); -GLAPI void APIENTRY glVariantArrayObjectATI (GLuint, GLenum, GLsizei, GLuint, GLuint); -GLAPI void APIENTRY glGetVariantArrayObjectfvATI (GLuint, GLenum, GLfloat *); -GLAPI void APIENTRY glGetVariantArrayObjectivATI (GLuint, GLenum, GLint *); -#endif /* GL_GLEXT_PROTOTYPES */ -typedef GLuint (APIENTRYP PFNGLNEWOBJECTBUFFERATIPROC) (GLsizei size, const GLvoid *pointer, GLenum usage); -typedef GLboolean (APIENTRYP PFNGLISOBJECTBUFFERATIPROC) (GLuint buffer); -typedef void (APIENTRYP PFNGLUPDATEOBJECTBUFFERATIPROC) (GLuint buffer, GLuint offset, GLsizei size, const GLvoid *pointer, GLenum preserve); -typedef void (APIENTRYP PFNGLGETOBJECTBUFFERFVATIPROC) (GLuint buffer, GLenum pname, GLfloat *params); -typedef void (APIENTRYP PFNGLGETOBJECTBUFFERIVATIPROC) (GLuint buffer, GLenum pname, GLint *params); -typedef void (APIENTRYP PFNGLFREEOBJECTBUFFERATIPROC) (GLuint buffer); -typedef void (APIENTRYP PFNGLARRAYOBJECTATIPROC) (GLenum array, GLint size, GLenum type, GLsizei stride, GLuint buffer, GLuint offset); -typedef void (APIENTRYP PFNGLGETARRAYOBJECTFVATIPROC) (GLenum array, GLenum pname, GLfloat *params); -typedef void (APIENTRYP PFNGLGETARRAYOBJECTIVATIPROC) (GLenum array, GLenum pname, GLint *params); -typedef void (APIENTRYP PFNGLVARIANTARRAYOBJECTATIPROC) (GLuint id, GLenum type, GLsizei stride, GLuint buffer, GLuint offset); -typedef void (APIENTRYP PFNGLGETVARIANTARRAYOBJECTFVATIPROC) (GLuint id, GLenum pname, GLfloat *params); -typedef void (APIENTRYP PFNGLGETVARIANTARRAYOBJECTIVATIPROC) (GLuint id, GLenum pname, GLint *params); -#endif - -#ifndef GL_EXT_vertex_shader -#define GL_EXT_vertex_shader 1 -#ifdef GL_GLEXT_PROTOTYPES -GLAPI void APIENTRY glBeginVertexShaderEXT (void); -GLAPI void APIENTRY glEndVertexShaderEXT (void); -GLAPI void APIENTRY glBindVertexShaderEXT (GLuint); -GLAPI GLuint APIENTRY glGenVertexShadersEXT (GLuint); -GLAPI void APIENTRY glDeleteVertexShaderEXT (GLuint); -GLAPI void APIENTRY glShaderOp1EXT (GLenum, GLuint, GLuint); -GLAPI void APIENTRY glShaderOp2EXT (GLenum, GLuint, GLuint, GLuint); -GLAPI void APIENTRY glShaderOp3EXT (GLenum, GLuint, GLuint, GLuint, GLuint); -GLAPI void APIENTRY glSwizzleEXT (GLuint, GLuint, GLenum, GLenum, GLenum, GLenum); -GLAPI void APIENTRY glWriteMaskEXT (GLuint, GLuint, GLenum, GLenum, GLenum, GLenum); -GLAPI void APIENTRY glInsertComponentEXT (GLuint, GLuint, GLuint); -GLAPI void APIENTRY glExtractComponentEXT (GLuint, GLuint, GLuint); -GLAPI GLuint APIENTRY glGenSymbolsEXT (GLenum, GLenum, GLenum, GLuint); -GLAPI void APIENTRY glSetInvariantEXT (GLuint, GLenum, const GLvoid *); -GLAPI void APIENTRY glSetLocalConstantEXT (GLuint, GLenum, const GLvoid *); -GLAPI void APIENTRY glVariantbvEXT (GLuint, const GLbyte *); -GLAPI void APIENTRY glVariantsvEXT (GLuint, const GLshort *); -GLAPI void APIENTRY glVariantivEXT (GLuint, const GLint *); -GLAPI void APIENTRY glVariantfvEXT (GLuint, const GLfloat *); -GLAPI void APIENTRY glVariantdvEXT (GLuint, const GLdouble *); -GLAPI void APIENTRY glVariantubvEXT (GLuint, const GLubyte *); -GLAPI void APIENTRY glVariantusvEXT (GLuint, const GLushort *); -GLAPI void APIENTRY glVariantuivEXT (GLuint, const GLuint *); -GLAPI void APIENTRY glVariantPointerEXT (GLuint, GLenum, GLuint, const GLvoid *); -GLAPI void APIENTRY glEnableVariantClientStateEXT (GLuint); -GLAPI void APIENTRY glDisableVariantClientStateEXT (GLuint); -GLAPI GLuint APIENTRY glBindLightParameterEXT (GLenum, GLenum); -GLAPI GLuint APIENTRY glBindMaterialParameterEXT (GLenum, GLenum); -GLAPI GLuint APIENTRY glBindTexGenParameterEXT (GLenum, GLenum, GLenum); -GLAPI GLuint APIENTRY glBindTextureUnitParameterEXT (GLenum, GLenum); -GLAPI GLuint APIENTRY glBindParameterEXT (GLenum); -GLAPI GLboolean APIENTRY glIsVariantEnabledEXT (GLuint, GLenum); -GLAPI void APIENTRY glGetVariantBooleanvEXT (GLuint, GLenum, GLboolean *); -GLAPI void APIENTRY glGetVariantIntegervEXT (GLuint, GLenum, GLint *); -GLAPI void APIENTRY glGetVariantFloatvEXT (GLuint, GLenum, GLfloat *); -GLAPI void APIENTRY glGetVariantPointervEXT (GLuint, GLenum, GLvoid* *); -GLAPI void APIENTRY glGetInvariantBooleanvEXT (GLuint, GLenum, GLboolean *); -GLAPI void APIENTRY glGetInvariantIntegervEXT (GLuint, GLenum, GLint *); -GLAPI void APIENTRY glGetInvariantFloatvEXT (GLuint, GLenum, GLfloat *); -GLAPI void APIENTRY glGetLocalConstantBooleanvEXT (GLuint, GLenum, GLboolean *); -GLAPI void APIENTRY glGetLocalConstantIntegervEXT (GLuint, GLenum, GLint *); -GLAPI void APIENTRY glGetLocalConstantFloatvEXT (GLuint, GLenum, GLfloat *); -#endif /* GL_GLEXT_PROTOTYPES */ -typedef void (APIENTRYP PFNGLBEGINVERTEXSHADEREXTPROC) (void); -typedef void (APIENTRYP PFNGLENDVERTEXSHADEREXTPROC) (void); -typedef void (APIENTRYP PFNGLBINDVERTEXSHADEREXTPROC) (GLuint id); -typedef GLuint (APIENTRYP PFNGLGENVERTEXSHADERSEXTPROC) (GLuint range); -typedef void (APIENTRYP PFNGLDELETEVERTEXSHADEREXTPROC) (GLuint id); -typedef void (APIENTRYP PFNGLSHADEROP1EXTPROC) (GLenum op, GLuint res, GLuint arg1); -typedef void (APIENTRYP PFNGLSHADEROP2EXTPROC) (GLenum op, GLuint res, GLuint arg1, GLuint arg2); -typedef void (APIENTRYP PFNGLSHADEROP3EXTPROC) (GLenum op, GLuint res, GLuint arg1, GLuint arg2, GLuint arg3); -typedef void (APIENTRYP PFNGLSWIZZLEEXTPROC) (GLuint res, GLuint in, GLenum outX, GLenum outY, GLenum outZ, GLenum outW); -typedef void (APIENTRYP PFNGLWRITEMASKEXTPROC) (GLuint res, GLuint in, GLenum outX, GLenum outY, GLenum outZ, GLenum outW); -typedef void (APIENTRYP PFNGLINSERTCOMPONENTEXTPROC) (GLuint res, GLuint src, GLuint num); -typedef void (APIENTRYP PFNGLEXTRACTCOMPONENTEXTPROC) (GLuint res, GLuint src, GLuint num); -typedef GLuint (APIENTRYP PFNGLGENSYMBOLSEXTPROC) (GLenum datatype, GLenum storagetype, GLenum range, GLuint components); -typedef void (APIENTRYP PFNGLSETINVARIANTEXTPROC) (GLuint id, GLenum type, const GLvoid *addr); -typedef void (APIENTRYP PFNGLSETLOCALCONSTANTEXTPROC) (GLuint id, GLenum type, const GLvoid *addr); -typedef void (APIENTRYP PFNGLVARIANTBVEXTPROC) (GLuint id, const GLbyte *addr); -typedef void (APIENTRYP PFNGLVARIANTSVEXTPROC) (GLuint id, const GLshort *addr); -typedef void (APIENTRYP PFNGLVARIANTIVEXTPROC) (GLuint id, const GLint *addr); -typedef void (APIENTRYP PFNGLVARIANTFVEXTPROC) (GLuint id, const GLfloat *addr); -typedef void (APIENTRYP PFNGLVARIANTDVEXTPROC) (GLuint id, const GLdouble *addr); -typedef void (APIENTRYP PFNGLVARIANTUBVEXTPROC) (GLuint id, const GLubyte *addr); -typedef void (APIENTRYP PFNGLVARIANTUSVEXTPROC) (GLuint id, const GLushort *addr); -typedef void (APIENTRYP PFNGLVARIANTUIVEXTPROC) (GLuint id, const GLuint *addr); -typedef void (APIENTRYP PFNGLVARIANTPOINTEREXTPROC) (GLuint id, GLenum type, GLuint stride, const GLvoid *addr); -typedef void (APIENTRYP PFNGLENABLEVARIANTCLIENTSTATEEXTPROC) (GLuint id); -typedef void (APIENTRYP PFNGLDISABLEVARIANTCLIENTSTATEEXTPROC) (GLuint id); -typedef GLuint (APIENTRYP PFNGLBINDLIGHTPARAMETEREXTPROC) (GLenum light, GLenum value); -typedef GLuint (APIENTRYP PFNGLBINDMATERIALPARAMETEREXTPROC) (GLenum face, GLenum value); -typedef GLuint (APIENTRYP PFNGLBINDTEXGENPARAMETEREXTPROC) (GLenum unit, GLenum coord, GLenum value); -typedef GLuint (APIENTRYP PFNGLBINDTEXTUREUNITPARAMETEREXTPROC) (GLenum unit, GLenum value); -typedef GLuint (APIENTRYP PFNGLBINDPARAMETEREXTPROC) (GLenum value); -typedef GLboolean (APIENTRYP PFNGLISVARIANTENABLEDEXTPROC) (GLuint id, GLenum cap); -typedef void (APIENTRYP PFNGLGETVARIANTBOOLEANVEXTPROC) (GLuint id, GLenum value, GLboolean *data); -typedef void (APIENTRYP PFNGLGETVARIANTINTEGERVEXTPROC) (GLuint id, GLenum value, GLint *data); -typedef void (APIENTRYP PFNGLGETVARIANTFLOATVEXTPROC) (GLuint id, GLenum value, GLfloat *data); -typedef void (APIENTRYP PFNGLGETVARIANTPOINTERVEXTPROC) (GLuint id, GLenum value, GLvoid* *data); -typedef void (APIENTRYP PFNGLGETINVARIANTBOOLEANVEXTPROC) (GLuint id, GLenum value, GLboolean *data); -typedef void (APIENTRYP PFNGLGETINVARIANTINTEGERVEXTPROC) (GLuint id, GLenum value, GLint *data); -typedef void (APIENTRYP PFNGLGETINVARIANTFLOATVEXTPROC) (GLuint id, GLenum value, GLfloat *data); -typedef void (APIENTRYP PFNGLGETLOCALCONSTANTBOOLEANVEXTPROC) (GLuint id, GLenum value, GLboolean *data); -typedef void (APIENTRYP PFNGLGETLOCALCONSTANTINTEGERVEXTPROC) (GLuint id, GLenum value, GLint *data); -typedef void (APIENTRYP PFNGLGETLOCALCONSTANTFLOATVEXTPROC) (GLuint id, GLenum value, GLfloat *data); -#endif - -#ifndef GL_ATI_vertex_streams -#define GL_ATI_vertex_streams 1 -#ifdef GL_GLEXT_PROTOTYPES -GLAPI void APIENTRY glVertexStream1sATI (GLenum, GLshort); -GLAPI void APIENTRY glVertexStream1svATI (GLenum, const GLshort *); -GLAPI void APIENTRY glVertexStream1iATI (GLenum, GLint); -GLAPI void APIENTRY glVertexStream1ivATI (GLenum, const GLint *); -GLAPI void APIENTRY glVertexStream1fATI (GLenum, GLfloat); -GLAPI void APIENTRY glVertexStream1fvATI (GLenum, const GLfloat *); -GLAPI void APIENTRY glVertexStream1dATI (GLenum, GLdouble); -GLAPI void APIENTRY glVertexStream1dvATI (GLenum, const GLdouble *); -GLAPI void APIENTRY glVertexStream2sATI (GLenum, GLshort, GLshort); -GLAPI void APIENTRY glVertexStream2svATI (GLenum, const GLshort *); -GLAPI void APIENTRY glVertexStream2iATI (GLenum, GLint, GLint); -GLAPI void APIENTRY glVertexStream2ivATI (GLenum, const GLint *); -GLAPI void APIENTRY glVertexStream2fATI (GLenum, GLfloat, GLfloat); -GLAPI void APIENTRY glVertexStream2fvATI (GLenum, const GLfloat *); -GLAPI void APIENTRY glVertexStream2dATI (GLenum, GLdouble, GLdouble); -GLAPI void APIENTRY glVertexStream2dvATI (GLenum, const GLdouble *); -GLAPI void APIENTRY glVertexStream3sATI (GLenum, GLshort, GLshort, GLshort); -GLAPI void APIENTRY glVertexStream3svATI (GLenum, const GLshort *); -GLAPI void APIENTRY glVertexStream3iATI (GLenum, GLint, GLint, GLint); -GLAPI void APIENTRY glVertexStream3ivATI (GLenum, const GLint *); -GLAPI void APIENTRY glVertexStream3fATI (GLenum, GLfloat, GLfloat, GLfloat); -GLAPI void APIENTRY glVertexStream3fvATI (GLenum, const GLfloat *); -GLAPI void APIENTRY glVertexStream3dATI (GLenum, GLdouble, GLdouble, GLdouble); -GLAPI void APIENTRY glVertexStream3dvATI (GLenum, const GLdouble *); -GLAPI void APIENTRY glVertexStream4sATI (GLenum, GLshort, GLshort, GLshort, GLshort); -GLAPI void APIENTRY glVertexStream4svATI (GLenum, const GLshort *); -GLAPI void APIENTRY glVertexStream4iATI (GLenum, GLint, GLint, GLint, GLint); -GLAPI void APIENTRY glVertexStream4ivATI (GLenum, const GLint *); -GLAPI void APIENTRY glVertexStream4fATI (GLenum, GLfloat, GLfloat, GLfloat, GLfloat); -GLAPI void APIENTRY glVertexStream4fvATI (GLenum, const GLfloat *); -GLAPI void APIENTRY glVertexStream4dATI (GLenum, GLdouble, GLdouble, GLdouble, GLdouble); -GLAPI void APIENTRY glVertexStream4dvATI (GLenum, const GLdouble *); -GLAPI void APIENTRY glNormalStream3bATI (GLenum, GLbyte, GLbyte, GLbyte); -GLAPI void APIENTRY glNormalStream3bvATI (GLenum, const GLbyte *); -GLAPI void APIENTRY glNormalStream3sATI (GLenum, GLshort, GLshort, GLshort); -GLAPI void APIENTRY glNormalStream3svATI (GLenum, const GLshort *); -GLAPI void APIENTRY glNormalStream3iATI (GLenum, GLint, GLint, GLint); -GLAPI void APIENTRY glNormalStream3ivATI (GLenum, const GLint *); -GLAPI void APIENTRY glNormalStream3fATI (GLenum, GLfloat, GLfloat, GLfloat); -GLAPI void APIENTRY glNormalStream3fvATI (GLenum, const GLfloat *); -GLAPI void APIENTRY glNormalStream3dATI (GLenum, GLdouble, GLdouble, GLdouble); -GLAPI void APIENTRY glNormalStream3dvATI (GLenum, const GLdouble *); -GLAPI void APIENTRY glClientActiveVertexStreamATI (GLenum); -GLAPI void APIENTRY glVertexBlendEnviATI (GLenum, GLint); -GLAPI void APIENTRY glVertexBlendEnvfATI (GLenum, GLfloat); -#endif /* GL_GLEXT_PROTOTYPES */ -typedef void (APIENTRYP PFNGLVERTEXSTREAM1SATIPROC) (GLenum stream, GLshort x); -typedef void (APIENTRYP PFNGLVERTEXSTREAM1SVATIPROC) (GLenum stream, const GLshort *coords); -typedef void (APIENTRYP PFNGLVERTEXSTREAM1IATIPROC) (GLenum stream, GLint x); -typedef void (APIENTRYP PFNGLVERTEXSTREAM1IVATIPROC) (GLenum stream, const GLint *coords); -typedef void (APIENTRYP PFNGLVERTEXSTREAM1FATIPROC) (GLenum stream, GLfloat x); -typedef void (APIENTRYP PFNGLVERTEXSTREAM1FVATIPROC) (GLenum stream, const GLfloat *coords); -typedef void (APIENTRYP PFNGLVERTEXSTREAM1DATIPROC) (GLenum stream, GLdouble x); -typedef void (APIENTRYP PFNGLVERTEXSTREAM1DVATIPROC) (GLenum stream, const GLdouble *coords); -typedef void (APIENTRYP PFNGLVERTEXSTREAM2SATIPROC) (GLenum stream, GLshort x, GLshort y); -typedef void (APIENTRYP PFNGLVERTEXSTREAM2SVATIPROC) (GLenum stream, const GLshort *coords); -typedef void (APIENTRYP PFNGLVERTEXSTREAM2IATIPROC) (GLenum stream, GLint x, GLint y); -typedef void (APIENTRYP PFNGLVERTEXSTREAM2IVATIPROC) (GLenum stream, const GLint *coords); -typedef void (APIENTRYP PFNGLVERTEXSTREAM2FATIPROC) (GLenum stream, GLfloat x, GLfloat y); -typedef void (APIENTRYP PFNGLVERTEXSTREAM2FVATIPROC) (GLenum stream, const GLfloat *coords); -typedef void (APIENTRYP PFNGLVERTEXSTREAM2DATIPROC) (GLenum stream, GLdouble x, GLdouble y); -typedef void (APIENTRYP PFNGLVERTEXSTREAM2DVATIPROC) (GLenum stream, const GLdouble *coords); -typedef void (APIENTRYP PFNGLVERTEXSTREAM3SATIPROC) (GLenum stream, GLshort x, GLshort y, GLshort z); -typedef void (APIENTRYP PFNGLVERTEXSTREAM3SVATIPROC) (GLenum stream, const GLshort *coords); -typedef void (APIENTRYP PFNGLVERTEXSTREAM3IATIPROC) (GLenum stream, GLint x, GLint y, GLint z); -typedef void (APIENTRYP PFNGLVERTEXSTREAM3IVATIPROC) (GLenum stream, const GLint *coords); -typedef void (APIENTRYP PFNGLVERTEXSTREAM3FATIPROC) (GLenum stream, GLfloat x, GLfloat y, GLfloat z); -typedef void (APIENTRYP PFNGLVERTEXSTREAM3FVATIPROC) (GLenum stream, const GLfloat *coords); -typedef void (APIENTRYP PFNGLVERTEXSTREAM3DATIPROC) (GLenum stream, GLdouble x, GLdouble y, GLdouble z); -typedef void (APIENTRYP PFNGLVERTEXSTREAM3DVATIPROC) (GLenum stream, const GLdouble *coords); -typedef void (APIENTRYP PFNGLVERTEXSTREAM4SATIPROC) (GLenum stream, GLshort x, GLshort y, GLshort z, GLshort w); -typedef void (APIENTRYP PFNGLVERTEXSTREAM4SVATIPROC) (GLenum stream, const GLshort *coords); -typedef void (APIENTRYP PFNGLVERTEXSTREAM4IATIPROC) (GLenum stream, GLint x, GLint y, GLint z, GLint w); -typedef void (APIENTRYP PFNGLVERTEXSTREAM4IVATIPROC) (GLenum stream, const GLint *coords); -typedef void (APIENTRYP PFNGLVERTEXSTREAM4FATIPROC) (GLenum stream, GLfloat x, GLfloat y, GLfloat z, GLfloat w); -typedef void (APIENTRYP PFNGLVERTEXSTREAM4FVATIPROC) (GLenum stream, const GLfloat *coords); -typedef void (APIENTRYP PFNGLVERTEXSTREAM4DATIPROC) (GLenum stream, GLdouble x, GLdouble y, GLdouble z, GLdouble w); -typedef void (APIENTRYP PFNGLVERTEXSTREAM4DVATIPROC) (GLenum stream, const GLdouble *coords); -typedef void (APIENTRYP PFNGLNORMALSTREAM3BATIPROC) (GLenum stream, GLbyte nx, GLbyte ny, GLbyte nz); -typedef void (APIENTRYP PFNGLNORMALSTREAM3BVATIPROC) (GLenum stream, const GLbyte *coords); -typedef void (APIENTRYP PFNGLNORMALSTREAM3SATIPROC) (GLenum stream, GLshort nx, GLshort ny, GLshort nz); -typedef void (APIENTRYP PFNGLNORMALSTREAM3SVATIPROC) (GLenum stream, const GLshort *coords); -typedef void (APIENTRYP PFNGLNORMALSTREAM3IATIPROC) (GLenum stream, GLint nx, GLint ny, GLint nz); -typedef void (APIENTRYP PFNGLNORMALSTREAM3IVATIPROC) (GLenum stream, const GLint *coords); -typedef void (APIENTRYP PFNGLNORMALSTREAM3FATIPROC) (GLenum stream, GLfloat nx, GLfloat ny, GLfloat nz); -typedef void (APIENTRYP PFNGLNORMALSTREAM3FVATIPROC) (GLenum stream, const GLfloat *coords); -typedef void (APIENTRYP PFNGLNORMALSTREAM3DATIPROC) (GLenum stream, GLdouble nx, GLdouble ny, GLdouble nz); -typedef void (APIENTRYP PFNGLNORMALSTREAM3DVATIPROC) (GLenum stream, const GLdouble *coords); -typedef void (APIENTRYP PFNGLCLIENTACTIVEVERTEXSTREAMATIPROC) (GLenum stream); -typedef void (APIENTRYP PFNGLVERTEXBLENDENVIATIPROC) (GLenum pname, GLint param); -typedef void (APIENTRYP PFNGLVERTEXBLENDENVFATIPROC) (GLenum pname, GLfloat param); -#endif - -#ifndef GL_ATI_element_array -#define GL_ATI_element_array 1 -#ifdef GL_GLEXT_PROTOTYPES -GLAPI void APIENTRY glElementPointerATI (GLenum, const GLvoid *); -GLAPI void APIENTRY glDrawElementArrayATI (GLenum, GLsizei); -GLAPI void APIENTRY glDrawRangeElementArrayATI (GLenum, GLuint, GLuint, GLsizei); -#endif /* GL_GLEXT_PROTOTYPES */ -typedef void (APIENTRYP PFNGLELEMENTPOINTERATIPROC) (GLenum type, const GLvoid *pointer); -typedef void (APIENTRYP PFNGLDRAWELEMENTARRAYATIPROC) (GLenum mode, GLsizei count); -typedef void (APIENTRYP PFNGLDRAWRANGEELEMENTARRAYATIPROC) (GLenum mode, GLuint start, GLuint end, GLsizei count); -#endif - -#ifndef GL_SUN_mesh_array -#define GL_SUN_mesh_array 1 -#ifdef GL_GLEXT_PROTOTYPES -GLAPI void APIENTRY glDrawMeshArraysSUN (GLenum, GLint, GLsizei, GLsizei); -#endif /* GL_GLEXT_PROTOTYPES */ -typedef void (APIENTRYP PFNGLDRAWMESHARRAYSSUNPROC) (GLenum mode, GLint first, GLsizei count, GLsizei width); -#endif - -#ifndef GL_SUN_slice_accum -#define GL_SUN_slice_accum 1 -#endif - -#ifndef GL_NV_multisample_filter_hint -#define GL_NV_multisample_filter_hint 1 -#endif - -#ifndef GL_NV_depth_clamp -#define GL_NV_depth_clamp 1 -#endif - -#ifndef GL_NV_occlusion_query -#define GL_NV_occlusion_query 1 -#ifdef GL_GLEXT_PROTOTYPES -GLAPI void APIENTRY glGenOcclusionQueriesNV (GLsizei, GLuint *); -GLAPI void APIENTRY glDeleteOcclusionQueriesNV (GLsizei, const GLuint *); -GLAPI GLboolean APIENTRY glIsOcclusionQueryNV (GLuint); -GLAPI void APIENTRY glBeginOcclusionQueryNV (GLuint); -GLAPI void APIENTRY glEndOcclusionQueryNV (void); -GLAPI void APIENTRY glGetOcclusionQueryivNV (GLuint, GLenum, GLint *); -GLAPI void APIENTRY glGetOcclusionQueryuivNV (GLuint, GLenum, GLuint *); -#endif /* GL_GLEXT_PROTOTYPES */ -typedef void (APIENTRYP PFNGLGENOCCLUSIONQUERIESNVPROC) (GLsizei n, GLuint *ids); -typedef void (APIENTRYP PFNGLDELETEOCCLUSIONQUERIESNVPROC) (GLsizei n, const GLuint *ids); -typedef GLboolean (APIENTRYP PFNGLISOCCLUSIONQUERYNVPROC) (GLuint id); -typedef void (APIENTRYP PFNGLBEGINOCCLUSIONQUERYNVPROC) (GLuint id); -typedef void (APIENTRYP PFNGLENDOCCLUSIONQUERYNVPROC) (void); -typedef void (APIENTRYP PFNGLGETOCCLUSIONQUERYIVNVPROC) (GLuint id, GLenum pname, GLint *params); -typedef void (APIENTRYP PFNGLGETOCCLUSIONQUERYUIVNVPROC) (GLuint id, GLenum pname, GLuint *params); -#endif - -#ifndef GL_NV_point_sprite -#define GL_NV_point_sprite 1 -#ifdef GL_GLEXT_PROTOTYPES -GLAPI void APIENTRY glPointParameteriNV (GLenum, GLint); -GLAPI void APIENTRY glPointParameterivNV (GLenum, const GLint *); -#endif /* GL_GLEXT_PROTOTYPES */ -typedef void (APIENTRYP PFNGLPOINTPARAMETERINVPROC) (GLenum pname, GLint param); -typedef void (APIENTRYP PFNGLPOINTPARAMETERIVNVPROC) (GLenum pname, const GLint *params); -#endif - -#ifndef GL_NV_texture_shader3 -#define GL_NV_texture_shader3 1 -#endif - -#ifndef GL_NV_vertex_program1_1 -#define GL_NV_vertex_program1_1 1 -#endif - -#ifndef GL_EXT_shadow_funcs -#define GL_EXT_shadow_funcs 1 -#endif - -#ifndef GL_EXT_stencil_two_side -#define GL_EXT_stencil_two_side 1 -#ifdef GL_GLEXT_PROTOTYPES -GLAPI void APIENTRY glActiveStencilFaceEXT (GLenum); -#endif /* GL_GLEXT_PROTOTYPES */ -typedef void (APIENTRYP PFNGLACTIVESTENCILFACEEXTPROC) (GLenum face); -#endif - -#ifndef GL_ATI_text_fragment_shader -#define GL_ATI_text_fragment_shader 1 -#endif - -#ifndef GL_APPLE_client_storage -#define GL_APPLE_client_storage 1 -#endif - -#ifndef GL_APPLE_element_array -#define GL_APPLE_element_array 1 -#ifdef GL_GLEXT_PROTOTYPES -GLAPI void APIENTRY glElementPointerAPPLE (GLenum, const GLvoid *); -GLAPI void APIENTRY glDrawElementArrayAPPLE (GLenum, GLint, GLsizei); -GLAPI void APIENTRY glDrawRangeElementArrayAPPLE (GLenum, GLuint, GLuint, GLint, GLsizei); -GLAPI void APIENTRY glMultiDrawElementArrayAPPLE (GLenum, const GLint *, const GLsizei *, GLsizei); -GLAPI void APIENTRY glMultiDrawRangeElementArrayAPPLE (GLenum, GLuint, GLuint, const GLint *, const GLsizei *, GLsizei); -#endif /* GL_GLEXT_PROTOTYPES */ -typedef void (APIENTRYP PFNGLELEMENTPOINTERAPPLEPROC) (GLenum type, const GLvoid *pointer); -typedef void (APIENTRYP PFNGLDRAWELEMENTARRAYAPPLEPROC) (GLenum mode, GLint first, GLsizei count); -typedef void (APIENTRYP PFNGLDRAWRANGEELEMENTARRAYAPPLEPROC) (GLenum mode, GLuint start, GLuint end, GLint first, GLsizei count); -typedef void (APIENTRYP PFNGLMULTIDRAWELEMENTARRAYAPPLEPROC) (GLenum mode, const GLint *first, const GLsizei *count, GLsizei primcount); -typedef void (APIENTRYP PFNGLMULTIDRAWRANGEELEMENTARRAYAPPLEPROC) (GLenum mode, GLuint start, GLuint end, const GLint *first, const GLsizei *count, GLsizei primcount); -#endif - -#ifndef GL_APPLE_fence -#define GL_APPLE_fence 1 -#ifdef GL_GLEXT_PROTOTYPES -GLAPI void APIENTRY glGenFencesAPPLE (GLsizei, GLuint *); -GLAPI void APIENTRY glDeleteFencesAPPLE (GLsizei, const GLuint *); -GLAPI void APIENTRY glSetFenceAPPLE (GLuint); -GLAPI GLboolean APIENTRY glIsFenceAPPLE (GLuint); -GLAPI GLboolean APIENTRY glTestFenceAPPLE (GLuint); -GLAPI void APIENTRY glFinishFenceAPPLE (GLuint); -GLAPI GLboolean APIENTRY glTestObjectAPPLE (GLenum, GLuint); -GLAPI void APIENTRY glFinishObjectAPPLE (GLenum, GLint); -#endif /* GL_GLEXT_PROTOTYPES */ -typedef void (APIENTRYP PFNGLGENFENCESAPPLEPROC) (GLsizei n, GLuint *fences); -typedef void (APIENTRYP PFNGLDELETEFENCESAPPLEPROC) (GLsizei n, const GLuint *fences); -typedef void (APIENTRYP PFNGLSETFENCEAPPLEPROC) (GLuint fence); -typedef GLboolean (APIENTRYP PFNGLISFENCEAPPLEPROC) (GLuint fence); -typedef GLboolean (APIENTRYP PFNGLTESTFENCEAPPLEPROC) (GLuint fence); -typedef void (APIENTRYP PFNGLFINISHFENCEAPPLEPROC) (GLuint fence); -typedef GLboolean (APIENTRYP PFNGLTESTOBJECTAPPLEPROC) (GLenum object, GLuint name); -typedef void (APIENTRYP PFNGLFINISHOBJECTAPPLEPROC) (GLenum object, GLint name); -#endif - -#ifndef GL_APPLE_vertex_array_object -#define GL_APPLE_vertex_array_object 1 -#ifdef GL_GLEXT_PROTOTYPES -GLAPI void APIENTRY glBindVertexArrayAPPLE (GLuint); -GLAPI void APIENTRY glDeleteVertexArraysAPPLE (GLsizei, const GLuint *); -GLAPI void APIENTRY glGenVertexArraysAPPLE (GLsizei, GLuint *); -GLAPI GLboolean APIENTRY glIsVertexArrayAPPLE (GLuint); -#endif /* GL_GLEXT_PROTOTYPES */ -typedef void (APIENTRYP PFNGLBINDVERTEXARRAYAPPLEPROC) (GLuint array); -typedef void (APIENTRYP PFNGLDELETEVERTEXARRAYSAPPLEPROC) (GLsizei n, const GLuint *arrays); -typedef void (APIENTRYP PFNGLGENVERTEXARRAYSAPPLEPROC) (GLsizei n, GLuint *arrays); -typedef GLboolean (APIENTRYP PFNGLISVERTEXARRAYAPPLEPROC) (GLuint array); -#endif - -#ifndef GL_APPLE_vertex_array_range -#define GL_APPLE_vertex_array_range 1 -#ifdef GL_GLEXT_PROTOTYPES -GLAPI void APIENTRY glVertexArrayRangeAPPLE (GLsizei, GLvoid *); -GLAPI void APIENTRY glFlushVertexArrayRangeAPPLE (GLsizei, GLvoid *); -GLAPI void APIENTRY glVertexArrayParameteriAPPLE (GLenum, GLint); -#endif /* GL_GLEXT_PROTOTYPES */ -typedef void (APIENTRYP PFNGLVERTEXARRAYRANGEAPPLEPROC) (GLsizei length, GLvoid *pointer); -typedef void (APIENTRYP PFNGLFLUSHVERTEXARRAYRANGEAPPLEPROC) (GLsizei length, GLvoid *pointer); -typedef void (APIENTRYP PFNGLVERTEXARRAYPARAMETERIAPPLEPROC) (GLenum pname, GLint param); -#endif - -#ifndef GL_APPLE_ycbcr_422 -#define GL_APPLE_ycbcr_422 1 -#endif - -#ifndef GL_S3_s3tc -#define GL_S3_s3tc 1 -#endif - -#ifndef GL_ATI_draw_buffers -#define GL_ATI_draw_buffers 1 -#ifdef GL_GLEXT_PROTOTYPES -GLAPI void APIENTRY glDrawBuffersATI (GLsizei, const GLenum *); -#endif /* GL_GLEXT_PROTOTYPES */ -typedef void (APIENTRYP PFNGLDRAWBUFFERSATIPROC) (GLsizei n, const GLenum *bufs); -#endif - -#ifndef GL_ATI_pixel_format_float -#define GL_ATI_pixel_format_float 1 -/* This is really a WGL extension, but defines some associated GL enums. - * ATI does not export "GL_ATI_pixel_format_float" in the GL_EXTENSIONS string. - */ -#endif - -#ifndef GL_ATI_texture_env_combine3 -#define GL_ATI_texture_env_combine3 1 -#endif - -#ifndef GL_ATI_texture_float -#define GL_ATI_texture_float 1 -#endif - -#ifndef GL_NV_float_buffer -#define GL_NV_float_buffer 1 -#endif - -#ifndef GL_NV_fragment_program -#define GL_NV_fragment_program 1 -/* Some NV_fragment_program entry points are shared with ARB_vertex_program. */ -#ifdef GL_GLEXT_PROTOTYPES -GLAPI void APIENTRY glProgramNamedParameter4fNV (GLuint, GLsizei, const GLubyte *, GLfloat, GLfloat, GLfloat, GLfloat); -GLAPI void APIENTRY glProgramNamedParameter4dNV (GLuint, GLsizei, const GLubyte *, GLdouble, GLdouble, GLdouble, GLdouble); -GLAPI void APIENTRY glProgramNamedParameter4fvNV (GLuint, GLsizei, const GLubyte *, const GLfloat *); -GLAPI void APIENTRY glProgramNamedParameter4dvNV (GLuint, GLsizei, const GLubyte *, const GLdouble *); -GLAPI void APIENTRY glGetProgramNamedParameterfvNV (GLuint, GLsizei, const GLubyte *, GLfloat *); -GLAPI void APIENTRY glGetProgramNamedParameterdvNV (GLuint, GLsizei, const GLubyte *, GLdouble *); -#endif /* GL_GLEXT_PROTOTYPES */ -typedef void (APIENTRYP PFNGLPROGRAMNAMEDPARAMETER4FNVPROC) (GLuint id, GLsizei len, const GLubyte *name, GLfloat x, GLfloat y, GLfloat z, GLfloat w); -typedef void (APIENTRYP PFNGLPROGRAMNAMEDPARAMETER4DNVPROC) (GLuint id, GLsizei len, const GLubyte *name, GLdouble x, GLdouble y, GLdouble z, GLdouble w); -typedef void (APIENTRYP PFNGLPROGRAMNAMEDPARAMETER4FVNVPROC) (GLuint id, GLsizei len, const GLubyte *name, const GLfloat *v); -typedef void (APIENTRYP PFNGLPROGRAMNAMEDPARAMETER4DVNVPROC) (GLuint id, GLsizei len, const GLubyte *name, const GLdouble *v); -typedef void (APIENTRYP PFNGLGETPROGRAMNAMEDPARAMETERFVNVPROC) (GLuint id, GLsizei len, const GLubyte *name, GLfloat *params); -typedef void (APIENTRYP PFNGLGETPROGRAMNAMEDPARAMETERDVNVPROC) (GLuint id, GLsizei len, const GLubyte *name, GLdouble *params); -#endif - -#ifndef GL_NV_half_float -#define GL_NV_half_float 1 -#ifdef GL_GLEXT_PROTOTYPES -GLAPI void APIENTRY glVertex2hNV (GLhalfNV, GLhalfNV); -GLAPI void APIENTRY glVertex2hvNV (const GLhalfNV *); -GLAPI void APIENTRY glVertex3hNV (GLhalfNV, GLhalfNV, GLhalfNV); -GLAPI void APIENTRY glVertex3hvNV (const GLhalfNV *); -GLAPI void APIENTRY glVertex4hNV (GLhalfNV, GLhalfNV, GLhalfNV, GLhalfNV); -GLAPI void APIENTRY glVertex4hvNV (const GLhalfNV *); -GLAPI void APIENTRY glNormal3hNV (GLhalfNV, GLhalfNV, GLhalfNV); -GLAPI void APIENTRY glNormal3hvNV (const GLhalfNV *); -GLAPI void APIENTRY glColor3hNV (GLhalfNV, GLhalfNV, GLhalfNV); -GLAPI void APIENTRY glColor3hvNV (const GLhalfNV *); -GLAPI void APIENTRY glColor4hNV (GLhalfNV, GLhalfNV, GLhalfNV, GLhalfNV); -GLAPI void APIENTRY glColor4hvNV (const GLhalfNV *); -GLAPI void APIENTRY glTexCoord1hNV (GLhalfNV); -GLAPI void APIENTRY glTexCoord1hvNV (const GLhalfNV *); -GLAPI void APIENTRY glTexCoord2hNV (GLhalfNV, GLhalfNV); -GLAPI void APIENTRY glTexCoord2hvNV (const GLhalfNV *); -GLAPI void APIENTRY glTexCoord3hNV (GLhalfNV, GLhalfNV, GLhalfNV); -GLAPI void APIENTRY glTexCoord3hvNV (const GLhalfNV *); -GLAPI void APIENTRY glTexCoord4hNV (GLhalfNV, GLhalfNV, GLhalfNV, GLhalfNV); -GLAPI void APIENTRY glTexCoord4hvNV (const GLhalfNV *); -GLAPI void APIENTRY glMultiTexCoord1hNV (GLenum, GLhalfNV); -GLAPI void APIENTRY glMultiTexCoord1hvNV (GLenum, const GLhalfNV *); -GLAPI void APIENTRY glMultiTexCoord2hNV (GLenum, GLhalfNV, GLhalfNV); -GLAPI void APIENTRY glMultiTexCoord2hvNV (GLenum, const GLhalfNV *); -GLAPI void APIENTRY glMultiTexCoord3hNV (GLenum, GLhalfNV, GLhalfNV, GLhalfNV); -GLAPI void APIENTRY glMultiTexCoord3hvNV (GLenum, const GLhalfNV *); -GLAPI void APIENTRY glMultiTexCoord4hNV (GLenum, GLhalfNV, GLhalfNV, GLhalfNV, GLhalfNV); -GLAPI void APIENTRY glMultiTexCoord4hvNV (GLenum, const GLhalfNV *); -GLAPI void APIENTRY glFogCoordhNV (GLhalfNV); -GLAPI void APIENTRY glFogCoordhvNV (const GLhalfNV *); -GLAPI void APIENTRY glSecondaryColor3hNV (GLhalfNV, GLhalfNV, GLhalfNV); -GLAPI void APIENTRY glSecondaryColor3hvNV (const GLhalfNV *); -GLAPI void APIENTRY glVertexWeighthNV (GLhalfNV); -GLAPI void APIENTRY glVertexWeighthvNV (const GLhalfNV *); -GLAPI void APIENTRY glVertexAttrib1hNV (GLuint, GLhalfNV); -GLAPI void APIENTRY glVertexAttrib1hvNV (GLuint, const GLhalfNV *); -GLAPI void APIENTRY glVertexAttrib2hNV (GLuint, GLhalfNV, GLhalfNV); -GLAPI void APIENTRY glVertexAttrib2hvNV (GLuint, const GLhalfNV *); -GLAPI void APIENTRY glVertexAttrib3hNV (GLuint, GLhalfNV, GLhalfNV, GLhalfNV); -GLAPI void APIENTRY glVertexAttrib3hvNV (GLuint, const GLhalfNV *); -GLAPI void APIENTRY glVertexAttrib4hNV (GLuint, GLhalfNV, GLhalfNV, GLhalfNV, GLhalfNV); -GLAPI void APIENTRY glVertexAttrib4hvNV (GLuint, const GLhalfNV *); -GLAPI void APIENTRY glVertexAttribs1hvNV (GLuint, GLsizei, const GLhalfNV *); -GLAPI void APIENTRY glVertexAttribs2hvNV (GLuint, GLsizei, const GLhalfNV *); -GLAPI void APIENTRY glVertexAttribs3hvNV (GLuint, GLsizei, const GLhalfNV *); -GLAPI void APIENTRY glVertexAttribs4hvNV (GLuint, GLsizei, const GLhalfNV *); -#endif /* GL_GLEXT_PROTOTYPES */ -typedef void (APIENTRYP PFNGLVERTEX2HNVPROC) (GLhalfNV x, GLhalfNV y); -typedef void (APIENTRYP PFNGLVERTEX2HVNVPROC) (const GLhalfNV *v); -typedef void (APIENTRYP PFNGLVERTEX3HNVPROC) (GLhalfNV x, GLhalfNV y, GLhalfNV z); -typedef void (APIENTRYP PFNGLVERTEX3HVNVPROC) (const GLhalfNV *v); -typedef void (APIENTRYP PFNGLVERTEX4HNVPROC) (GLhalfNV x, GLhalfNV y, GLhalfNV z, GLhalfNV w); -typedef void (APIENTRYP PFNGLVERTEX4HVNVPROC) (const GLhalfNV *v); -typedef void (APIENTRYP PFNGLNORMAL3HNVPROC) (GLhalfNV nx, GLhalfNV ny, GLhalfNV nz); -typedef void (APIENTRYP PFNGLNORMAL3HVNVPROC) (const GLhalfNV *v); -typedef void (APIENTRYP PFNGLCOLOR3HNVPROC) (GLhalfNV red, GLhalfNV green, GLhalfNV blue); -typedef void (APIENTRYP PFNGLCOLOR3HVNVPROC) (const GLhalfNV *v); -typedef void (APIENTRYP PFNGLCOLOR4HNVPROC) (GLhalfNV red, GLhalfNV green, GLhalfNV blue, GLhalfNV alpha); -typedef void (APIENTRYP PFNGLCOLOR4HVNVPROC) (const GLhalfNV *v); -typedef void (APIENTRYP PFNGLTEXCOORD1HNVPROC) (GLhalfNV s); -typedef void (APIENTRYP PFNGLTEXCOORD1HVNVPROC) (const GLhalfNV *v); -typedef void (APIENTRYP PFNGLTEXCOORD2HNVPROC) (GLhalfNV s, GLhalfNV t); -typedef void (APIENTRYP PFNGLTEXCOORD2HVNVPROC) (const GLhalfNV *v); -typedef void (APIENTRYP PFNGLTEXCOORD3HNVPROC) (GLhalfNV s, GLhalfNV t, GLhalfNV r); -typedef void (APIENTRYP PFNGLTEXCOORD3HVNVPROC) (const GLhalfNV *v); -typedef void (APIENTRYP PFNGLTEXCOORD4HNVPROC) (GLhalfNV s, GLhalfNV t, GLhalfNV r, GLhalfNV q); -typedef void (APIENTRYP PFNGLTEXCOORD4HVNVPROC) (const GLhalfNV *v); -typedef void (APIENTRYP PFNGLMULTITEXCOORD1HNVPROC) (GLenum target, GLhalfNV s); -typedef void (APIENTRYP PFNGLMULTITEXCOORD1HVNVPROC) (GLenum target, const GLhalfNV *v); -typedef void (APIENTRYP PFNGLMULTITEXCOORD2HNVPROC) (GLenum target, GLhalfNV s, GLhalfNV t); -typedef void (APIENTRYP PFNGLMULTITEXCOORD2HVNVPROC) (GLenum target, const GLhalfNV *v); -typedef void (APIENTRYP PFNGLMULTITEXCOORD3HNVPROC) (GLenum target, GLhalfNV s, GLhalfNV t, GLhalfNV r); -typedef void (APIENTRYP PFNGLMULTITEXCOORD3HVNVPROC) (GLenum target, const GLhalfNV *v); -typedef void (APIENTRYP PFNGLMULTITEXCOORD4HNVPROC) (GLenum target, GLhalfNV s, GLhalfNV t, GLhalfNV r, GLhalfNV q); -typedef void (APIENTRYP PFNGLMULTITEXCOORD4HVNVPROC) (GLenum target, const GLhalfNV *v); -typedef void (APIENTRYP PFNGLFOGCOORDHNVPROC) (GLhalfNV fog); -typedef void (APIENTRYP PFNGLFOGCOORDHVNVPROC) (const GLhalfNV *fog); -typedef void (APIENTRYP PFNGLSECONDARYCOLOR3HNVPROC) (GLhalfNV red, GLhalfNV green, GLhalfNV blue); -typedef void (APIENTRYP PFNGLSECONDARYCOLOR3HVNVPROC) (const GLhalfNV *v); -typedef void (APIENTRYP PFNGLVERTEXWEIGHTHNVPROC) (GLhalfNV weight); -typedef void (APIENTRYP PFNGLVERTEXWEIGHTHVNVPROC) (const GLhalfNV *weight); -typedef void (APIENTRYP PFNGLVERTEXATTRIB1HNVPROC) (GLuint index, GLhalfNV x); -typedef void (APIENTRYP PFNGLVERTEXATTRIB1HVNVPROC) (GLuint index, const GLhalfNV *v); -typedef void (APIENTRYP PFNGLVERTEXATTRIB2HNVPROC) (GLuint index, GLhalfNV x, GLhalfNV y); -typedef void (APIENTRYP PFNGLVERTEXATTRIB2HVNVPROC) (GLuint index, const GLhalfNV *v); -typedef void (APIENTRYP PFNGLVERTEXATTRIB3HNVPROC) (GLuint index, GLhalfNV x, GLhalfNV y, GLhalfNV z); -typedef void (APIENTRYP PFNGLVERTEXATTRIB3HVNVPROC) (GLuint index, const GLhalfNV *v); -typedef void (APIENTRYP PFNGLVERTEXATTRIB4HNVPROC) (GLuint index, GLhalfNV x, GLhalfNV y, GLhalfNV z, GLhalfNV w); -typedef void (APIENTRYP PFNGLVERTEXATTRIB4HVNVPROC) (GLuint index, const GLhalfNV *v); -typedef void (APIENTRYP PFNGLVERTEXATTRIBS1HVNVPROC) (GLuint index, GLsizei n, const GLhalfNV *v); -typedef void (APIENTRYP PFNGLVERTEXATTRIBS2HVNVPROC) (GLuint index, GLsizei n, const GLhalfNV *v); -typedef void (APIENTRYP PFNGLVERTEXATTRIBS3HVNVPROC) (GLuint index, GLsizei n, const GLhalfNV *v); -typedef void (APIENTRYP PFNGLVERTEXATTRIBS4HVNVPROC) (GLuint index, GLsizei n, const GLhalfNV *v); -#endif - -#ifndef GL_NV_pixel_data_range -#define GL_NV_pixel_data_range 1 -#ifdef GL_GLEXT_PROTOTYPES -GLAPI void APIENTRY glPixelDataRangeNV (GLenum, GLsizei, GLvoid *); -GLAPI void APIENTRY glFlushPixelDataRangeNV (GLenum); -#endif /* GL_GLEXT_PROTOTYPES */ -typedef void (APIENTRYP PFNGLPIXELDATARANGENVPROC) (GLenum target, GLsizei length, GLvoid *pointer); -typedef void (APIENTRYP PFNGLFLUSHPIXELDATARANGENVPROC) (GLenum target); -#endif - -#ifndef GL_NV_primitive_restart -#define GL_NV_primitive_restart 1 -#ifdef GL_GLEXT_PROTOTYPES -GLAPI void APIENTRY glPrimitiveRestartNV (void); -GLAPI void APIENTRY glPrimitiveRestartIndexNV (GLuint); -#endif /* GL_GLEXT_PROTOTYPES */ -typedef void (APIENTRYP PFNGLPRIMITIVERESTARTNVPROC) (void); -typedef void (APIENTRYP PFNGLPRIMITIVERESTARTINDEXNVPROC) (GLuint index); -#endif - -#ifndef GL_NV_texture_expand_normal -#define GL_NV_texture_expand_normal 1 -#endif - -#ifndef GL_NV_vertex_program2 -#define GL_NV_vertex_program2 1 -#endif - -#ifndef GL_ATI_map_object_buffer -#define GL_ATI_map_object_buffer 1 -#ifdef GL_GLEXT_PROTOTYPES -GLAPI GLvoid* APIENTRY glMapObjectBufferATI (GLuint); -GLAPI void APIENTRY glUnmapObjectBufferATI (GLuint); -#endif /* GL_GLEXT_PROTOTYPES */ -typedef GLvoid* (APIENTRYP PFNGLMAPOBJECTBUFFERATIPROC) (GLuint buffer); -typedef void (APIENTRYP PFNGLUNMAPOBJECTBUFFERATIPROC) (GLuint buffer); -#endif - -#ifndef GL_ATI_separate_stencil -#define GL_ATI_separate_stencil 1 -#ifdef GL_GLEXT_PROTOTYPES -GLAPI void APIENTRY glStencilOpSeparateATI (GLenum, GLenum, GLenum, GLenum); -GLAPI void APIENTRY glStencilFuncSeparateATI (GLenum, GLenum, GLint, GLuint); -#endif /* GL_GLEXT_PROTOTYPES */ -typedef void (APIENTRYP PFNGLSTENCILOPSEPARATEATIPROC) (GLenum face, GLenum sfail, GLenum dpfail, GLenum dppass); -typedef void (APIENTRYP PFNGLSTENCILFUNCSEPARATEATIPROC) (GLenum frontfunc, GLenum backfunc, GLint ref, GLuint mask); -#endif - -#ifndef GL_ATI_vertex_attrib_array_object -#define GL_ATI_vertex_attrib_array_object 1 -#ifdef GL_GLEXT_PROTOTYPES -GLAPI void APIENTRY glVertexAttribArrayObjectATI (GLuint, GLint, GLenum, GLboolean, GLsizei, GLuint, GLuint); -GLAPI void APIENTRY glGetVertexAttribArrayObjectfvATI (GLuint, GLenum, GLfloat *); -GLAPI void APIENTRY glGetVertexAttribArrayObjectivATI (GLuint, GLenum, GLint *); -#endif /* GL_GLEXT_PROTOTYPES */ -typedef void (APIENTRYP PFNGLVERTEXATTRIBARRAYOBJECTATIPROC) (GLuint index, GLint size, GLenum type, GLboolean normalized, GLsizei stride, GLuint buffer, GLuint offset); -typedef void (APIENTRYP PFNGLGETVERTEXATTRIBARRAYOBJECTFVATIPROC) (GLuint index, GLenum pname, GLfloat *params); -typedef void (APIENTRYP PFNGLGETVERTEXATTRIBARRAYOBJECTIVATIPROC) (GLuint index, GLenum pname, GLint *params); -#endif - -#ifndef GL_OES_read_format -#define GL_OES_read_format 1 -#endif - -#ifndef GL_EXT_depth_bounds_test -#define GL_EXT_depth_bounds_test 1 -#ifdef GL_GLEXT_PROTOTYPES -GLAPI void APIENTRY glDepthBoundsEXT (GLclampd, GLclampd); -#endif /* GL_GLEXT_PROTOTYPES */ -typedef void (APIENTRYP PFNGLDEPTHBOUNDSEXTPROC) (GLclampd zmin, GLclampd zmax); -#endif - -#ifndef GL_EXT_texture_mirror_clamp -#define GL_EXT_texture_mirror_clamp 1 -#endif - -#ifndef GL_EXT_blend_equation_separate -#define GL_EXT_blend_equation_separate 1 -#ifdef GL_GLEXT_PROTOTYPES -GLAPI void APIENTRY glBlendEquationSeparateEXT (GLenum, GLenum); -#endif /* GL_GLEXT_PROTOTYPES */ -typedef void (APIENTRYP PFNGLBLENDEQUATIONSEPARATEEXTPROC) (GLenum modeRGB, GLenum modeAlpha); -#endif - -#ifndef GL_MESA_pack_invert -#define GL_MESA_pack_invert 1 -#endif - -#ifndef GL_MESA_ycbcr_texture -#define GL_MESA_ycbcr_texture 1 -#endif - -#ifndef GL_EXT_pixel_buffer_object -#define GL_EXT_pixel_buffer_object 1 -#endif - -#ifndef GL_NV_fragment_program_option -#define GL_NV_fragment_program_option 1 -#endif - -#ifndef GL_NV_fragment_program2 -#define GL_NV_fragment_program2 1 -#endif - -#ifndef GL_NV_vertex_program2_option -#define GL_NV_vertex_program2_option 1 -#endif - -#ifndef GL_NV_vertex_program3 -#define GL_NV_vertex_program3 1 -#endif - -#ifndef GL_EXT_framebuffer_object -#define GL_EXT_framebuffer_object 1 -#ifdef GL_GLEXT_PROTOTYPES -GLAPI GLboolean APIENTRY glIsRenderbufferEXT (GLuint); -GLAPI void APIENTRY glBindRenderbufferEXT (GLenum, GLuint); -GLAPI void APIENTRY glDeleteRenderbuffersEXT (GLsizei, const GLuint *); -GLAPI void APIENTRY glGenRenderbuffersEXT (GLsizei, GLuint *); -GLAPI void APIENTRY glRenderbufferStorageEXT (GLenum, GLenum, GLsizei, GLsizei); -GLAPI void APIENTRY glGetRenderbufferParameterivEXT (GLenum, GLenum, GLint *); -GLAPI GLboolean APIENTRY glIsFramebufferEXT (GLuint); -GLAPI void APIENTRY glBindFramebufferEXT (GLenum, GLuint); -GLAPI void APIENTRY glDeleteFramebuffersEXT (GLsizei, const GLuint *); -GLAPI void APIENTRY glGenFramebuffersEXT (GLsizei, GLuint *); -GLAPI GLenum APIENTRY glCheckFramebufferStatusEXT (GLenum); -GLAPI void APIENTRY glFramebufferTexture1DEXT (GLenum, GLenum, GLenum, GLuint, GLint); -GLAPI void APIENTRY glFramebufferTexture2DEXT (GLenum, GLenum, GLenum, GLuint, GLint); -GLAPI void APIENTRY glFramebufferTexture3DEXT (GLenum, GLenum, GLenum, GLuint, GLint, GLint); -GLAPI void APIENTRY glFramebufferRenderbufferEXT (GLenum, GLenum, GLenum, GLuint); -GLAPI void APIENTRY glGetFramebufferAttachmentParameterivEXT (GLenum, GLenum, GLenum, GLint *); -GLAPI void APIENTRY glGenerateMipmapEXT (GLenum); -#endif /* GL_GLEXT_PROTOTYPES */ -typedef GLboolean (APIENTRYP PFNGLISRENDERBUFFEREXTPROC) (GLuint renderbuffer); -typedef void (APIENTRYP PFNGLBINDRENDERBUFFEREXTPROC) (GLenum target, GLuint renderbuffer); -typedef void (APIENTRYP PFNGLDELETERENDERBUFFERSEXTPROC) (GLsizei n, const GLuint *renderbuffers); -typedef void (APIENTRYP PFNGLGENRENDERBUFFERSEXTPROC) (GLsizei n, GLuint *renderbuffers); -typedef void (APIENTRYP PFNGLRENDERBUFFERSTORAGEEXTPROC) (GLenum target, GLenum internalformat, GLsizei width, GLsizei height); -typedef void (APIENTRYP PFNGLGETRENDERBUFFERPARAMETERIVEXTPROC) (GLenum target, GLenum pname, GLint *params); -typedef GLboolean (APIENTRYP PFNGLISFRAMEBUFFEREXTPROC) (GLuint framebuffer); -typedef void (APIENTRYP PFNGLBINDFRAMEBUFFEREXTPROC) (GLenum target, GLuint framebuffer); -typedef void (APIENTRYP PFNGLDELETEFRAMEBUFFERSEXTPROC) (GLsizei n, const GLuint *framebuffers); -typedef void (APIENTRYP PFNGLGENFRAMEBUFFERSEXTPROC) (GLsizei n, GLuint *framebuffers); -typedef GLenum (APIENTRYP PFNGLCHECKFRAMEBUFFERSTATUSEXTPROC) (GLenum target); -typedef void (APIENTRYP PFNGLFRAMEBUFFERTEXTURE1DEXTPROC) (GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level); -typedef void (APIENTRYP PFNGLFRAMEBUFFERTEXTURE2DEXTPROC) (GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level); -typedef void (APIENTRYP PFNGLFRAMEBUFFERTEXTURE3DEXTPROC) (GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level, GLint zoffset); -typedef void (APIENTRYP PFNGLFRAMEBUFFERRENDERBUFFEREXTPROC) (GLenum target, GLenum attachment, GLenum renderbuffertarget, GLuint renderbuffer); -typedef void (APIENTRYP PFNGLGETFRAMEBUFFERATTACHMENTPARAMETERIVEXTPROC) (GLenum target, GLenum attachment, GLenum pname, GLint *params); -typedef void (APIENTRYP PFNGLGENERATEMIPMAPEXTPROC) (GLenum target); -#endif - -#ifndef GL_GREMEDY_string_marker -#define GL_GREMEDY_string_marker 1 -#ifdef GL_GLEXT_PROTOTYPES -GLAPI void APIENTRY glStringMarkerGREMEDY (GLsizei, const GLvoid *); -#endif /* GL_GLEXT_PROTOTYPES */ -typedef void (APIENTRYP PFNGLSTRINGMARKERGREMEDYPROC) (GLsizei len, const GLvoid *string); -#endif - -#ifndef GL_EXT_packed_depth_stencil -#define GL_EXT_packed_depth_stencil 1 -#endif - -#ifndef GL_EXT_stencil_clear_tag -#define GL_EXT_stencil_clear_tag 1 -#ifdef GL_GLEXT_PROTOTYPES -GLAPI void APIENTRY glStencilClearTagEXT (GLsizei, GLuint); -#endif /* GL_GLEXT_PROTOTYPES */ -typedef void (APIENTRYP PFNGLSTENCILCLEARTAGEXTPROC) (GLsizei stencilTagBits, GLuint stencilClearTag); -#endif - -#ifndef GL_EXT_texture_sRGB -#define GL_EXT_texture_sRGB 1 -#endif - -#ifndef GL_EXT_framebuffer_blit -#define GL_EXT_framebuffer_blit 1 -#ifdef GL_GLEXT_PROTOTYPES -GLAPI void APIENTRY glBlitFramebufferEXT (GLint, GLint, GLint, GLint, GLint, GLint, GLint, GLint, GLbitfield, GLenum); -#endif /* GL_GLEXT_PROTOTYPES */ -typedef void (APIENTRYP PFNGLBLITFRAMEBUFFEREXTPROC) (GLint srcX0, GLint srcY0, GLint srcX1, GLint srcY1, GLint dstX0, GLint dstY0, GLint dstX1, GLint dstY1, GLbitfield mask, GLenum filter); -#endif - -#ifndef GL_EXT_framebuffer_multisample -#define GL_EXT_framebuffer_multisample 1 -#ifdef GL_GLEXT_PROTOTYPES -GLAPI void APIENTRY glRenderbufferStorageMultisampleEXT (GLenum, GLsizei, GLenum, GLsizei, GLsizei); -#endif /* GL_GLEXT_PROTOTYPES */ -typedef void (APIENTRYP PFNGLRENDERBUFFERSTORAGEMULTISAMPLEEXTPROC) (GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height); -#endif - -#ifndef GL_MESAX_texture_stack -#define GL_MESAX_texture_stack 1 -#endif - -#ifndef GL_EXT_timer_query -#define GL_EXT_timer_query 1 -#ifdef GL_GLEXT_PROTOTYPES -GLAPI void APIENTRY glGetQueryObjecti64vEXT (GLuint, GLenum, GLint64EXT *); -GLAPI void APIENTRY glGetQueryObjectui64vEXT (GLuint, GLenum, GLuint64EXT *); -#endif /* GL_GLEXT_PROTOTYPES */ -typedef void (APIENTRYP PFNGLGETQUERYOBJECTI64VEXTPROC) (GLuint id, GLenum pname, GLint64EXT *params); -typedef void (APIENTRYP PFNGLGETQUERYOBJECTUI64VEXTPROC) (GLuint id, GLenum pname, GLuint64EXT *params); -#endif - -#ifndef GL_EXT_gpu_program_parameters -#define GL_EXT_gpu_program_parameters 1 -#ifdef GL_GLEXT_PROTOTYPES -GLAPI void APIENTRY glProgramEnvParameters4fvEXT (GLenum, GLuint, GLsizei, const GLfloat *); -GLAPI void APIENTRY glProgramLocalParameters4fvEXT (GLenum, GLuint, GLsizei, const GLfloat *); -#endif /* GL_GLEXT_PROTOTYPES */ -typedef void (APIENTRYP PFNGLPROGRAMENVPARAMETERS4FVEXTPROC) (GLenum target, GLuint index, GLsizei count, const GLfloat *params); -typedef void (APIENTRYP PFNGLPROGRAMLOCALPARAMETERS4FVEXTPROC) (GLenum target, GLuint index, GLsizei count, const GLfloat *params); -#endif - -#ifndef GL_APPLE_flush_buffer_range -#define GL_APPLE_flush_buffer_range 1 -#ifdef GL_GLEXT_PROTOTYPES -GLAPI void APIENTRY glBufferParameteriAPPLE (GLenum, GLenum, GLint); -GLAPI void APIENTRY glFlushMappedBufferRangeAPPLE (GLenum, GLintptr, GLsizeiptr); -#endif /* GL_GLEXT_PROTOTYPES */ -typedef void (APIENTRYP PFNGLBUFFERPARAMETERIAPPLEPROC) (GLenum target, GLenum pname, GLint param); -typedef void (APIENTRYP PFNGLFLUSHMAPPEDBUFFERRANGEAPPLEPROC) (GLenum target, GLintptr offset, GLsizeiptr size); -#endif - -#ifndef GL_NV_gpu_program4 -#define GL_NV_gpu_program4 1 -#ifdef GL_GLEXT_PROTOTYPES -GLAPI void APIENTRY glProgramLocalParameterI4iNV (GLenum, GLuint, GLint, GLint, GLint, GLint); -GLAPI void APIENTRY glProgramLocalParameterI4ivNV (GLenum, GLuint, const GLint *); -GLAPI void APIENTRY glProgramLocalParametersI4ivNV (GLenum, GLuint, GLsizei, const GLint *); -GLAPI void APIENTRY glProgramLocalParameterI4uiNV (GLenum, GLuint, GLuint, GLuint, GLuint, GLuint); -GLAPI void APIENTRY glProgramLocalParameterI4uivNV (GLenum, GLuint, const GLuint *); -GLAPI void APIENTRY glProgramLocalParametersI4uivNV (GLenum, GLuint, GLsizei, const GLuint *); -GLAPI void APIENTRY glProgramEnvParameterI4iNV (GLenum, GLuint, GLint, GLint, GLint, GLint); -GLAPI void APIENTRY glProgramEnvParameterI4ivNV (GLenum, GLuint, const GLint *); -GLAPI void APIENTRY glProgramEnvParametersI4ivNV (GLenum, GLuint, GLsizei, const GLint *); -GLAPI void APIENTRY glProgramEnvParameterI4uiNV (GLenum, GLuint, GLuint, GLuint, GLuint, GLuint); -GLAPI void APIENTRY glProgramEnvParameterI4uivNV (GLenum, GLuint, const GLuint *); -GLAPI void APIENTRY glProgramEnvParametersI4uivNV (GLenum, GLuint, GLsizei, const GLuint *); -GLAPI void APIENTRY glGetProgramLocalParameterIivNV (GLenum, GLuint, GLint *); -GLAPI void APIENTRY glGetProgramLocalParameterIuivNV (GLenum, GLuint, GLuint *); -GLAPI void APIENTRY glGetProgramEnvParameterIivNV (GLenum, GLuint, GLint *); -GLAPI void APIENTRY glGetProgramEnvParameterIuivNV (GLenum, GLuint, GLuint *); -#endif /* GL_GLEXT_PROTOTYPES */ -typedef void (APIENTRYP PFNGLPROGRAMLOCALPARAMETERI4INVPROC) (GLenum target, GLuint index, GLint x, GLint y, GLint z, GLint w); -typedef void (APIENTRYP PFNGLPROGRAMLOCALPARAMETERI4IVNVPROC) (GLenum target, GLuint index, const GLint *params); -typedef void (APIENTRYP PFNGLPROGRAMLOCALPARAMETERSI4IVNVPROC) (GLenum target, GLuint index, GLsizei count, const GLint *params); -typedef void (APIENTRYP PFNGLPROGRAMLOCALPARAMETERI4UINVPROC) (GLenum target, GLuint index, GLuint x, GLuint y, GLuint z, GLuint w); -typedef void (APIENTRYP PFNGLPROGRAMLOCALPARAMETERI4UIVNVPROC) (GLenum target, GLuint index, const GLuint *params); -typedef void (APIENTRYP PFNGLPROGRAMLOCALPARAMETERSI4UIVNVPROC) (GLenum target, GLuint index, GLsizei count, const GLuint *params); -typedef void (APIENTRYP PFNGLPROGRAMENVPARAMETERI4INVPROC) (GLenum target, GLuint index, GLint x, GLint y, GLint z, GLint w); -typedef void (APIENTRYP PFNGLPROGRAMENVPARAMETERI4IVNVPROC) (GLenum target, GLuint index, const GLint *params); -typedef void (APIENTRYP PFNGLPROGRAMENVPARAMETERSI4IVNVPROC) (GLenum target, GLuint index, GLsizei count, const GLint *params); -typedef void (APIENTRYP PFNGLPROGRAMENVPARAMETERI4UINVPROC) (GLenum target, GLuint index, GLuint x, GLuint y, GLuint z, GLuint w); -typedef void (APIENTRYP PFNGLPROGRAMENVPARAMETERI4UIVNVPROC) (GLenum target, GLuint index, const GLuint *params); -typedef void (APIENTRYP PFNGLPROGRAMENVPARAMETERSI4UIVNVPROC) (GLenum target, GLuint index, GLsizei count, const GLuint *params); -typedef void (APIENTRYP PFNGLGETPROGRAMLOCALPARAMETERIIVNVPROC) (GLenum target, GLuint index, GLint *params); -typedef void (APIENTRYP PFNGLGETPROGRAMLOCALPARAMETERIUIVNVPROC) (GLenum target, GLuint index, GLuint *params); -typedef void (APIENTRYP PFNGLGETPROGRAMENVPARAMETERIIVNVPROC) (GLenum target, GLuint index, GLint *params); -typedef void (APIENTRYP PFNGLGETPROGRAMENVPARAMETERIUIVNVPROC) (GLenum target, GLuint index, GLuint *params); -#endif - -#ifndef GL_NV_geometry_program4 -#define GL_NV_geometry_program4 1 -#ifdef GL_GLEXT_PROTOTYPES -GLAPI void APIENTRY glProgramVertexLimitNV (GLenum, GLint); -GLAPI void APIENTRY glFramebufferTextureEXT (GLenum, GLenum, GLuint, GLint); -GLAPI void APIENTRY glFramebufferTextureLayerEXT (GLenum, GLenum, GLuint, GLint, GLint); -GLAPI void APIENTRY glFramebufferTextureFaceEXT (GLenum, GLenum, GLuint, GLint, GLenum); -#endif /* GL_GLEXT_PROTOTYPES */ -typedef void (APIENTRYP PFNGLPROGRAMVERTEXLIMITNVPROC) (GLenum target, GLint limit); -typedef void (APIENTRYP PFNGLFRAMEBUFFERTEXTUREEXTPROC) (GLenum target, GLenum attachment, GLuint texture, GLint level); -typedef void (APIENTRYP PFNGLFRAMEBUFFERTEXTURELAYEREXTPROC) (GLenum target, GLenum attachment, GLuint texture, GLint level, GLint layer); -typedef void (APIENTRYP PFNGLFRAMEBUFFERTEXTUREFACEEXTPROC) (GLenum target, GLenum attachment, GLuint texture, GLint level, GLenum face); -#endif - -#ifndef GL_EXT_geometry_shader4 -#define GL_EXT_geometry_shader4 1 -#ifdef GL_GLEXT_PROTOTYPES -GLAPI void APIENTRY glProgramParameteriEXT (GLuint, GLenum, GLint); -#endif /* GL_GLEXT_PROTOTYPES */ -typedef void (APIENTRYP PFNGLPROGRAMPARAMETERIEXTPROC) (GLuint program, GLenum pname, GLint value); -#endif - -#ifndef GL_NV_vertex_program4 -#define GL_NV_vertex_program4 1 -#ifdef GL_GLEXT_PROTOTYPES -GLAPI void APIENTRY glVertexAttribI1iEXT (GLuint, GLint); -GLAPI void APIENTRY glVertexAttribI2iEXT (GLuint, GLint, GLint); -GLAPI void APIENTRY glVertexAttribI3iEXT (GLuint, GLint, GLint, GLint); -GLAPI void APIENTRY glVertexAttribI4iEXT (GLuint, GLint, GLint, GLint, GLint); -GLAPI void APIENTRY glVertexAttribI1uiEXT (GLuint, GLuint); -GLAPI void APIENTRY glVertexAttribI2uiEXT (GLuint, GLuint, GLuint); -GLAPI void APIENTRY glVertexAttribI3uiEXT (GLuint, GLuint, GLuint, GLuint); -GLAPI void APIENTRY glVertexAttribI4uiEXT (GLuint, GLuint, GLuint, GLuint, GLuint); -GLAPI void APIENTRY glVertexAttribI1ivEXT (GLuint, const GLint *); -GLAPI void APIENTRY glVertexAttribI2ivEXT (GLuint, const GLint *); -GLAPI void APIENTRY glVertexAttribI3ivEXT (GLuint, const GLint *); -GLAPI void APIENTRY glVertexAttribI4ivEXT (GLuint, const GLint *); -GLAPI void APIENTRY glVertexAttribI1uivEXT (GLuint, const GLuint *); -GLAPI void APIENTRY glVertexAttribI2uivEXT (GLuint, const GLuint *); -GLAPI void APIENTRY glVertexAttribI3uivEXT (GLuint, const GLuint *); -GLAPI void APIENTRY glVertexAttribI4uivEXT (GLuint, const GLuint *); -GLAPI void APIENTRY glVertexAttribI4bvEXT (GLuint, const GLbyte *); -GLAPI void APIENTRY glVertexAttribI4svEXT (GLuint, const GLshort *); -GLAPI void APIENTRY glVertexAttribI4ubvEXT (GLuint, const GLubyte *); -GLAPI void APIENTRY glVertexAttribI4usvEXT (GLuint, const GLushort *); -GLAPI void APIENTRY glVertexAttribIPointerEXT (GLuint, GLint, GLenum, GLsizei, const GLvoid *); -GLAPI void APIENTRY glGetVertexAttribIivEXT (GLuint, GLenum, GLint *); -GLAPI void APIENTRY glGetVertexAttribIuivEXT (GLuint, GLenum, GLuint *); -#endif /* GL_GLEXT_PROTOTYPES */ -typedef void (APIENTRYP PFNGLVERTEXATTRIBI1IEXTPROC) (GLuint index, GLint x); -typedef void (APIENTRYP PFNGLVERTEXATTRIBI2IEXTPROC) (GLuint index, GLint x, GLint y); -typedef void (APIENTRYP PFNGLVERTEXATTRIBI3IEXTPROC) (GLuint index, GLint x, GLint y, GLint z); -typedef void (APIENTRYP PFNGLVERTEXATTRIBI4IEXTPROC) (GLuint index, GLint x, GLint y, GLint z, GLint w); -typedef void (APIENTRYP PFNGLVERTEXATTRIBI1UIEXTPROC) (GLuint index, GLuint x); -typedef void (APIENTRYP PFNGLVERTEXATTRIBI2UIEXTPROC) (GLuint index, GLuint x, GLuint y); -typedef void (APIENTRYP PFNGLVERTEXATTRIBI3UIEXTPROC) (GLuint index, GLuint x, GLuint y, GLuint z); -typedef void (APIENTRYP PFNGLVERTEXATTRIBI4UIEXTPROC) (GLuint index, GLuint x, GLuint y, GLuint z, GLuint w); -typedef void (APIENTRYP PFNGLVERTEXATTRIBI1IVEXTPROC) (GLuint index, const GLint *v); -typedef void (APIENTRYP PFNGLVERTEXATTRIBI2IVEXTPROC) (GLuint index, const GLint *v); -typedef void (APIENTRYP PFNGLVERTEXATTRIBI3IVEXTPROC) (GLuint index, const GLint *v); -typedef void (APIENTRYP PFNGLVERTEXATTRIBI4IVEXTPROC) (GLuint index, const GLint *v); -typedef void (APIENTRYP PFNGLVERTEXATTRIBI1UIVEXTPROC) (GLuint index, const GLuint *v); -typedef void (APIENTRYP PFNGLVERTEXATTRIBI2UIVEXTPROC) (GLuint index, const GLuint *v); -typedef void (APIENTRYP PFNGLVERTEXATTRIBI3UIVEXTPROC) (GLuint index, const GLuint *v); -typedef void (APIENTRYP PFNGLVERTEXATTRIBI4UIVEXTPROC) (GLuint index, const GLuint *v); -typedef void (APIENTRYP PFNGLVERTEXATTRIBI4BVEXTPROC) (GLuint index, const GLbyte *v); -typedef void (APIENTRYP PFNGLVERTEXATTRIBI4SVEXTPROC) (GLuint index, const GLshort *v); -typedef void (APIENTRYP PFNGLVERTEXATTRIBI4UBVEXTPROC) (GLuint index, const GLubyte *v); -typedef void (APIENTRYP PFNGLVERTEXATTRIBI4USVEXTPROC) (GLuint index, const GLushort *v); -typedef void (APIENTRYP PFNGLVERTEXATTRIBIPOINTEREXTPROC) (GLuint index, GLint size, GLenum type, GLsizei stride, const GLvoid *pointer); -typedef void (APIENTRYP PFNGLGETVERTEXATTRIBIIVEXTPROC) (GLuint index, GLenum pname, GLint *params); -typedef void (APIENTRYP PFNGLGETVERTEXATTRIBIUIVEXTPROC) (GLuint index, GLenum pname, GLuint *params); -#endif - -#ifndef GL_EXT_gpu_shader4 -#define GL_EXT_gpu_shader4 1 -#ifdef GL_GLEXT_PROTOTYPES -GLAPI void APIENTRY glGetUniformuivEXT (GLuint, GLint, GLuint *); -GLAPI void APIENTRY glBindFragDataLocationEXT (GLuint, GLuint, const GLchar *); -GLAPI GLint APIENTRY glGetFragDataLocationEXT (GLuint, const GLchar *); -GLAPI void APIENTRY glUniform1uiEXT (GLint, GLuint); -GLAPI void APIENTRY glUniform2uiEXT (GLint, GLuint, GLuint); -GLAPI void APIENTRY glUniform3uiEXT (GLint, GLuint, GLuint, GLuint); -GLAPI void APIENTRY glUniform4uiEXT (GLint, GLuint, GLuint, GLuint, GLuint); -GLAPI void APIENTRY glUniform1uivEXT (GLint, GLsizei, const GLuint *); -GLAPI void APIENTRY glUniform2uivEXT (GLint, GLsizei, const GLuint *); -GLAPI void APIENTRY glUniform3uivEXT (GLint, GLsizei, const GLuint *); -GLAPI void APIENTRY glUniform4uivEXT (GLint, GLsizei, const GLuint *); -#endif /* GL_GLEXT_PROTOTYPES */ -typedef void (APIENTRYP PFNGLGETUNIFORMUIVEXTPROC) (GLuint program, GLint location, GLuint *params); -typedef void (APIENTRYP PFNGLBINDFRAGDATALOCATIONEXTPROC) (GLuint program, GLuint color, const GLchar *name); -typedef GLint (APIENTRYP PFNGLGETFRAGDATALOCATIONEXTPROC) (GLuint program, const GLchar *name); -typedef void (APIENTRYP PFNGLUNIFORM1UIEXTPROC) (GLint location, GLuint v0); -typedef void (APIENTRYP PFNGLUNIFORM2UIEXTPROC) (GLint location, GLuint v0, GLuint v1); -typedef void (APIENTRYP PFNGLUNIFORM3UIEXTPROC) (GLint location, GLuint v0, GLuint v1, GLuint v2); -typedef void (APIENTRYP PFNGLUNIFORM4UIEXTPROC) (GLint location, GLuint v0, GLuint v1, GLuint v2, GLuint v3); -typedef void (APIENTRYP PFNGLUNIFORM1UIVEXTPROC) (GLint location, GLsizei count, const GLuint *value); -typedef void (APIENTRYP PFNGLUNIFORM2UIVEXTPROC) (GLint location, GLsizei count, const GLuint *value); -typedef void (APIENTRYP PFNGLUNIFORM3UIVEXTPROC) (GLint location, GLsizei count, const GLuint *value); -typedef void (APIENTRYP PFNGLUNIFORM4UIVEXTPROC) (GLint location, GLsizei count, const GLuint *value); -#endif - -#ifndef GL_EXT_draw_instanced -#define GL_EXT_draw_instanced 1 -#ifdef GL_GLEXT_PROTOTYPES -GLAPI void APIENTRY glDrawArraysInstancedEXT (GLenum, GLint, GLsizei, GLsizei); -GLAPI void APIENTRY glDrawElementsInstancedEXT (GLenum, GLsizei, GLenum, const GLvoid *, GLsizei); -#endif /* GL_GLEXT_PROTOTYPES */ -typedef void (APIENTRYP PFNGLDRAWARRAYSINSTANCEDEXTPROC) (GLenum mode, GLint start, GLsizei count, GLsizei primcount); -typedef void (APIENTRYP PFNGLDRAWELEMENTSINSTANCEDEXTPROC) (GLenum mode, GLsizei count, GLenum type, const GLvoid *indices, GLsizei primcount); -#endif - -#ifndef GL_EXT_packed_float -#define GL_EXT_packed_float 1 -#endif - -#ifndef GL_EXT_texture_array -#define GL_EXT_texture_array 1 -#endif - -#ifndef GL_EXT_texture_buffer_object -#define GL_EXT_texture_buffer_object 1 -#ifdef GL_GLEXT_PROTOTYPES -GLAPI void APIENTRY glTexBufferEXT (GLenum, GLenum, GLuint); -#endif /* GL_GLEXT_PROTOTYPES */ -typedef void (APIENTRYP PFNGLTEXBUFFEREXTPROC) (GLenum target, GLenum internalformat, GLuint buffer); -#endif - -#ifndef GL_EXT_texture_compression_latc -#define GL_EXT_texture_compression_latc 1 -#endif - -#ifndef GL_EXT_texture_compression_rgtc -#define GL_EXT_texture_compression_rgtc 1 -#endif - -#ifndef GL_EXT_texture_shared_exponent -#define GL_EXT_texture_shared_exponent 1 -#endif - -#ifndef GL_NV_depth_buffer_float -#define GL_NV_depth_buffer_float 1 -#ifdef GL_GLEXT_PROTOTYPES -GLAPI void APIENTRY glDepthRangedNV (GLdouble, GLdouble); -GLAPI void APIENTRY glClearDepthdNV (GLdouble); -GLAPI void APIENTRY glDepthBoundsdNV (GLdouble, GLdouble); -#endif /* GL_GLEXT_PROTOTYPES */ -typedef void (APIENTRYP PFNGLDEPTHRANGEDNVPROC) (GLdouble zNear, GLdouble zFar); -typedef void (APIENTRYP PFNGLCLEARDEPTHDNVPROC) (GLdouble depth); -typedef void (APIENTRYP PFNGLDEPTHBOUNDSDNVPROC) (GLdouble zmin, GLdouble zmax); -#endif - -#ifndef GL_NV_fragment_program4 -#define GL_NV_fragment_program4 1 -#endif - -#ifndef GL_NV_framebuffer_multisample_coverage -#define GL_NV_framebuffer_multisample_coverage 1 -#ifdef GL_GLEXT_PROTOTYPES -GLAPI void APIENTRY glRenderbufferStorageMultisampleCoverageNV (GLenum, GLsizei, GLsizei, GLenum, GLsizei, GLsizei); -#endif /* GL_GLEXT_PROTOTYPES */ -typedef void (APIENTRYP PFNGLRENDERBUFFERSTORAGEMULTISAMPLECOVERAGENVPROC) (GLenum target, GLsizei coverageSamples, GLsizei colorSamples, GLenum internalformat, GLsizei width, GLsizei height); -#endif - -#ifndef GL_EXT_framebuffer_sRGB -#define GL_EXT_framebuffer_sRGB 1 -#endif - -#ifndef GL_NV_geometry_shader4 -#define GL_NV_geometry_shader4 1 -#endif - -#ifndef GL_NV_parameter_buffer_object -#define GL_NV_parameter_buffer_object 1 -#ifdef GL_GLEXT_PROTOTYPES -GLAPI void APIENTRY glProgramBufferParametersfvNV (GLenum, GLuint, GLuint, GLsizei, const GLfloat *); -GLAPI void APIENTRY glProgramBufferParametersIivNV (GLenum, GLuint, GLuint, GLsizei, const GLint *); -GLAPI void APIENTRY glProgramBufferParametersIuivNV (GLenum, GLuint, GLuint, GLsizei, const GLuint *); -#endif /* GL_GLEXT_PROTOTYPES */ -typedef void (APIENTRYP PFNGLPROGRAMBUFFERPARAMETERSFVNVPROC) (GLenum target, GLuint buffer, GLuint index, GLsizei count, const GLfloat *params); -typedef void (APIENTRYP PFNGLPROGRAMBUFFERPARAMETERSIIVNVPROC) (GLenum target, GLuint buffer, GLuint index, GLsizei count, const GLint *params); -typedef void (APIENTRYP PFNGLPROGRAMBUFFERPARAMETERSIUIVNVPROC) (GLenum target, GLuint buffer, GLuint index, GLsizei count, const GLuint *params); -#endif - -#ifndef GL_EXT_draw_buffers2 -#define GL_EXT_draw_buffers2 1 -#ifdef GL_GLEXT_PROTOTYPES -GLAPI void APIENTRY glColorMaskIndexedEXT (GLuint, GLboolean, GLboolean, GLboolean, GLboolean); -GLAPI void APIENTRY glGetBooleanIndexedvEXT (GLenum, GLuint, GLboolean *); -GLAPI void APIENTRY glGetIntegerIndexedvEXT (GLenum, GLuint, GLint *); -GLAPI void APIENTRY glEnableIndexedEXT (GLenum, GLuint); -GLAPI void APIENTRY glDisableIndexedEXT (GLenum, GLuint); -GLAPI GLboolean APIENTRY glIsEnabledIndexedEXT (GLenum, GLuint); -#endif /* GL_GLEXT_PROTOTYPES */ -typedef void (APIENTRYP PFNGLCOLORMASKINDEXEDEXTPROC) (GLuint index, GLboolean r, GLboolean g, GLboolean b, GLboolean a); -typedef void (APIENTRYP PFNGLGETBOOLEANINDEXEDVEXTPROC) (GLenum target, GLuint index, GLboolean *data); -typedef void (APIENTRYP PFNGLGETINTEGERINDEXEDVEXTPROC) (GLenum target, GLuint index, GLint *data); -typedef void (APIENTRYP PFNGLENABLEINDEXEDEXTPROC) (GLenum target, GLuint index); -typedef void (APIENTRYP PFNGLDISABLEINDEXEDEXTPROC) (GLenum target, GLuint index); -typedef GLboolean (APIENTRYP PFNGLISENABLEDINDEXEDEXTPROC) (GLenum target, GLuint index); -#endif - -#ifndef GL_NV_transform_feedback -#define GL_NV_transform_feedback 1 -#ifdef GL_GLEXT_PROTOTYPES -GLAPI void APIENTRY glBeginTransformFeedbackNV (GLenum); -GLAPI void APIENTRY glEndTransformFeedbackNV (void); -GLAPI void APIENTRY glTransformFeedbackAttribsNV (GLuint, const GLint *, GLenum); -GLAPI void APIENTRY glBindBufferRangeNV (GLenum, GLuint, GLuint, GLintptr, GLsizeiptr); -GLAPI void APIENTRY glBindBufferOffsetNV (GLenum, GLuint, GLuint, GLintptr); -GLAPI void APIENTRY glBindBufferBaseNV (GLenum, GLuint, GLuint); -GLAPI void APIENTRY glTransformFeedbackVaryingsNV (GLuint, GLsizei, const GLint *, GLenum); -GLAPI void APIENTRY glActiveVaryingNV (GLuint, const GLchar *); -GLAPI GLint APIENTRY glGetVaryingLocationNV (GLuint, const GLchar *); -GLAPI void APIENTRY glGetActiveVaryingNV (GLuint, GLuint, GLsizei, GLsizei *, GLsizei *, GLenum *, GLchar *); -GLAPI void APIENTRY glGetTransformFeedbackVaryingNV (GLuint, GLuint, GLint *); -#endif /* GL_GLEXT_PROTOTYPES */ -typedef void (APIENTRYP PFNGLBEGINTRANSFORMFEEDBACKNVPROC) (GLenum primitiveMode); -typedef void (APIENTRYP PFNGLENDTRANSFORMFEEDBACKNVPROC) (void); -typedef void (APIENTRYP PFNGLTRANSFORMFEEDBACKATTRIBSNVPROC) (GLuint count, const GLint *attribs, GLenum bufferMode); -typedef void (APIENTRYP PFNGLBINDBUFFERRANGENVPROC) (GLenum target, GLuint index, GLuint buffer, GLintptr offset, GLsizeiptr size); -typedef void (APIENTRYP PFNGLBINDBUFFEROFFSETNVPROC) (GLenum target, GLuint index, GLuint buffer, GLintptr offset); -typedef void (APIENTRYP PFNGLBINDBUFFERBASENVPROC) (GLenum target, GLuint index, GLuint buffer); -typedef void (APIENTRYP PFNGLTRANSFORMFEEDBACKVARYINGSNVPROC) (GLuint program, GLsizei count, const GLint *locations, GLenum bufferMode); -typedef void (APIENTRYP PFNGLACTIVEVARYINGNVPROC) (GLuint program, const GLchar *name); -typedef GLint (APIENTRYP PFNGLGETVARYINGLOCATIONNVPROC) (GLuint program, const GLchar *name); -typedef void (APIENTRYP PFNGLGETACTIVEVARYINGNVPROC) (GLuint program, GLuint index, GLsizei bufSize, GLsizei *length, GLsizei *size, GLenum *type, GLchar *name); -typedef void (APIENTRYP PFNGLGETTRANSFORMFEEDBACKVARYINGNVPROC) (GLuint program, GLuint index, GLint *location); -#endif - -#ifndef GL_EXT_bindable_uniform -#define GL_EXT_bindable_uniform 1 -#ifdef GL_GLEXT_PROTOTYPES -GLAPI void APIENTRY glUniformBufferEXT (GLuint, GLint, GLuint); -GLAPI GLint APIENTRY glGetUniformBufferSizeEXT (GLuint, GLint); -GLAPI GLintptr APIENTRY glGetUniformOffsetEXT (GLuint, GLint); -#endif /* GL_GLEXT_PROTOTYPES */ -typedef void (APIENTRYP PFNGLUNIFORMBUFFEREXTPROC) (GLuint program, GLint location, GLuint buffer); -typedef GLint (APIENTRYP PFNGLGETUNIFORMBUFFERSIZEEXTPROC) (GLuint program, GLint location); -typedef GLintptr (APIENTRYP PFNGLGETUNIFORMOFFSETEXTPROC) (GLuint program, GLint location); -#endif - -#ifndef GL_EXT_texture_integer -#define GL_EXT_texture_integer 1 -#ifdef GL_GLEXT_PROTOTYPES -GLAPI void APIENTRY glTexParameterIivEXT (GLenum, GLenum, const GLint *); -GLAPI void APIENTRY glTexParameterIuivEXT (GLenum, GLenum, const GLuint *); -GLAPI void APIENTRY glGetTexParameterIivEXT (GLenum, GLenum, GLint *); -GLAPI void APIENTRY glGetTexParameterIuivEXT (GLenum, GLenum, GLuint *); -GLAPI void APIENTRY glClearColorIiEXT (GLint, GLint, GLint, GLint); -GLAPI void APIENTRY glClearColorIuiEXT (GLuint, GLuint, GLuint, GLuint); -#endif /* GL_GLEXT_PROTOTYPES */ -typedef void (APIENTRYP PFNGLTEXPARAMETERIIVEXTPROC) (GLenum target, GLenum pname, const GLint *params); -typedef void (APIENTRYP PFNGLTEXPARAMETERIUIVEXTPROC) (GLenum target, GLenum pname, const GLuint *params); -typedef void (APIENTRYP PFNGLGETTEXPARAMETERIIVEXTPROC) (GLenum target, GLenum pname, GLint *params); -typedef void (APIENTRYP PFNGLGETTEXPARAMETERIUIVEXTPROC) (GLenum target, GLenum pname, GLuint *params); -typedef void (APIENTRYP PFNGLCLEARCOLORIIEXTPROC) (GLint red, GLint green, GLint blue, GLint alpha); -typedef void (APIENTRYP PFNGLCLEARCOLORIUIEXTPROC) (GLuint red, GLuint green, GLuint blue, GLuint alpha); -#endif - - -#ifdef __cplusplus -} -#endif - -#endif diff --git a/include/GL/glu.h b/include/GL/glu.h deleted file mode 100644 index 7db4b70..0000000 --- a/include/GL/glu.h +++ /dev/null @@ -1,348 +0,0 @@ -/* -** License Applicability. Except to the extent portions of this file are -** made subject to an alternative license as permitted in the SGI Free -** Software License B, Version 1.1 (the "License"), the contents of this -** file are subject only to the provisions of the License. You may not use -** this file except in compliance with the License. You may obtain a copy -** of the License at Silicon Graphics, Inc., attn: Legal Services, 1600 -** Amphitheatre Parkway, Mountain View, CA 94043-1351, or at: -** -** http://oss.sgi.com/projects/FreeB -** -** Note that, as provided in the License, the Software is distributed on an -** "AS IS" basis, with ALL EXPRESS AND IMPLIED WARRANTIES AND CONDITIONS -** DISCLAIMED, INCLUDING, WITHOUT LIMITATION, ANY IMPLIED WARRANTIES AND -** CONDITIONS OF MERCHANTABILITY, SATISFACTORY QUALITY, FITNESS FOR A -** PARTICULAR PURPOSE, AND NON-INFRINGEMENT. -** -** Original Code. The Original Code is: OpenGL Sample Implementation, -** Version 1.2.1, released January 26, 2000, developed by Silicon Graphics, -** Inc. The Original Code is Copyright (c) 1991-2000 Silicon Graphics, Inc. -** Copyright in any portions created by third parties is as indicated -** elsewhere herein. All Rights Reserved. -** -** Additional Notice Provisions: This software was created using the -** OpenGL(R) version 1.2.1 Sample Implementation published by SGI, but has -** not been independently verified as being compliant with the OpenGL(R) -** version 1.2.1 Specification. -*/ - -#ifndef __glu_h__ -#define __glu_h__ - -#if defined(USE_MGL_NAMESPACE) -#include "glu_mangle.h" -#endif - -#include - -#ifndef GLAPIENTRY -#define GLAPIENTRY -#endif - -#ifndef GLAPIENTRYP -#define GLAPIENTRYP GLAPIENTRY * -#endif - -#if (defined(_MSC_VER) || defined(__MINGW32__)) && defined(BUILD_GLU32) -# undef GLAPI -# define GLAPI __declspec(dllexport) -#elif (defined(_MSC_VER) || defined(__MINGW32__)) && defined(_DLL) -/* tag specifying we're building for DLL runtime support */ -# undef GLAPI -# define GLAPI __declspec(dllimport) -#elif !defined(GLAPI) -/* for use with static link lib build of Win32 edition only */ -# define GLAPI extern -#endif /* _STATIC_MESA support */ - -#ifdef __cplusplus -extern "C" { -#endif - -/*************************************************************/ - -/* Extensions */ -#define GLU_EXT_object_space_tess 1 -#define GLU_EXT_nurbs_tessellator 1 - -/* Boolean */ -#define GLU_FALSE 0 -#define GLU_TRUE 1 - -/* Version */ -#define GLU_VERSION_1_1 1 -#define GLU_VERSION_1_2 1 -#define GLU_VERSION_1_3 1 - -/* StringName */ -#define GLU_VERSION 100800 -#define GLU_EXTENSIONS 100801 - -/* ErrorCode */ -#define GLU_INVALID_ENUM 100900 -#define GLU_INVALID_VALUE 100901 -#define GLU_OUT_OF_MEMORY 100902 -#define GLU_INCOMPATIBLE_GL_VERSION 100903 -#define GLU_INVALID_OPERATION 100904 - -/* NurbsDisplay */ -/* GLU_FILL */ -#define GLU_OUTLINE_POLYGON 100240 -#define GLU_OUTLINE_PATCH 100241 - -/* NurbsCallback */ -#define GLU_NURBS_ERROR 100103 -#define GLU_ERROR 100103 -#define GLU_NURBS_BEGIN 100164 -#define GLU_NURBS_BEGIN_EXT 100164 -#define GLU_NURBS_VERTEX 100165 -#define GLU_NURBS_VERTEX_EXT 100165 -#define GLU_NURBS_NORMAL 100166 -#define GLU_NURBS_NORMAL_EXT 100166 -#define GLU_NURBS_COLOR 100167 -#define GLU_NURBS_COLOR_EXT 100167 -#define GLU_NURBS_TEXTURE_COORD 100168 -#define GLU_NURBS_TEX_COORD_EXT 100168 -#define GLU_NURBS_END 100169 -#define GLU_NURBS_END_EXT 100169 -#define GLU_NURBS_BEGIN_DATA 100170 -#define GLU_NURBS_BEGIN_DATA_EXT 100170 -#define GLU_NURBS_VERTEX_DATA 100171 -#define GLU_NURBS_VERTEX_DATA_EXT 100171 -#define GLU_NURBS_NORMAL_DATA 100172 -#define GLU_NURBS_NORMAL_DATA_EXT 100172 -#define GLU_NURBS_COLOR_DATA 100173 -#define GLU_NURBS_COLOR_DATA_EXT 100173 -#define GLU_NURBS_TEXTURE_COORD_DATA 100174 -#define GLU_NURBS_TEX_COORD_DATA_EXT 100174 -#define GLU_NURBS_END_DATA 100175 -#define GLU_NURBS_END_DATA_EXT 100175 - -/* NurbsError */ -#define GLU_NURBS_ERROR1 100251 -#define GLU_NURBS_ERROR2 100252 -#define GLU_NURBS_ERROR3 100253 -#define GLU_NURBS_ERROR4 100254 -#define GLU_NURBS_ERROR5 100255 -#define GLU_NURBS_ERROR6 100256 -#define GLU_NURBS_ERROR7 100257 -#define GLU_NURBS_ERROR8 100258 -#define GLU_NURBS_ERROR9 100259 -#define GLU_NURBS_ERROR10 100260 -#define GLU_NURBS_ERROR11 100261 -#define GLU_NURBS_ERROR12 100262 -#define GLU_NURBS_ERROR13 100263 -#define GLU_NURBS_ERROR14 100264 -#define GLU_NURBS_ERROR15 100265 -#define GLU_NURBS_ERROR16 100266 -#define GLU_NURBS_ERROR17 100267 -#define GLU_NURBS_ERROR18 100268 -#define GLU_NURBS_ERROR19 100269 -#define GLU_NURBS_ERROR20 100270 -#define GLU_NURBS_ERROR21 100271 -#define GLU_NURBS_ERROR22 100272 -#define GLU_NURBS_ERROR23 100273 -#define GLU_NURBS_ERROR24 100274 -#define GLU_NURBS_ERROR25 100275 -#define GLU_NURBS_ERROR26 100276 -#define GLU_NURBS_ERROR27 100277 -#define GLU_NURBS_ERROR28 100278 -#define GLU_NURBS_ERROR29 100279 -#define GLU_NURBS_ERROR30 100280 -#define GLU_NURBS_ERROR31 100281 -#define GLU_NURBS_ERROR32 100282 -#define GLU_NURBS_ERROR33 100283 -#define GLU_NURBS_ERROR34 100284 -#define GLU_NURBS_ERROR35 100285 -#define GLU_NURBS_ERROR36 100286 -#define GLU_NURBS_ERROR37 100287 - -/* NurbsProperty */ -#define GLU_AUTO_LOAD_MATRIX 100200 -#define GLU_CULLING 100201 -#define GLU_SAMPLING_TOLERANCE 100203 -#define GLU_DISPLAY_MODE 100204 -#define GLU_PARAMETRIC_TOLERANCE 100202 -#define GLU_SAMPLING_METHOD 100205 -#define GLU_U_STEP 100206 -#define GLU_V_STEP 100207 -#define GLU_NURBS_MODE 100160 -#define GLU_NURBS_MODE_EXT 100160 -#define GLU_NURBS_TESSELLATOR 100161 -#define GLU_NURBS_TESSELLATOR_EXT 100161 -#define GLU_NURBS_RENDERER 100162 -#define GLU_NURBS_RENDERER_EXT 100162 - -/* NurbsSampling */ -#define GLU_OBJECT_PARAMETRIC_ERROR 100208 -#define GLU_OBJECT_PARAMETRIC_ERROR_EXT 100208 -#define GLU_OBJECT_PATH_LENGTH 100209 -#define GLU_OBJECT_PATH_LENGTH_EXT 100209 -#define GLU_PATH_LENGTH 100215 -#define GLU_PARAMETRIC_ERROR 100216 -#define GLU_DOMAIN_DISTANCE 100217 - -/* NurbsTrim */ -#define GLU_MAP1_TRIM_2 100210 -#define GLU_MAP1_TRIM_3 100211 - -/* QuadricDrawStyle */ -#define GLU_POINT 100010 -#define GLU_LINE 100011 -#define GLU_FILL 100012 -#define GLU_SILHOUETTE 100013 - -/* QuadricCallback */ -/* GLU_ERROR */ - -/* QuadricNormal */ -#define GLU_SMOOTH 100000 -#define GLU_FLAT 100001 -#define GLU_NONE 100002 - -/* QuadricOrientation */ -#define GLU_OUTSIDE 100020 -#define GLU_INSIDE 100021 - -/* TessCallback */ -#define GLU_TESS_BEGIN 100100 -#define GLU_BEGIN 100100 -#define GLU_TESS_VERTEX 100101 -#define GLU_VERTEX 100101 -#define GLU_TESS_END 100102 -#define GLU_END 100102 -#define GLU_TESS_ERROR 100103 -#define GLU_TESS_EDGE_FLAG 100104 -#define GLU_EDGE_FLAG 100104 -#define GLU_TESS_COMBINE 100105 -#define GLU_TESS_BEGIN_DATA 100106 -#define GLU_TESS_VERTEX_DATA 100107 -#define GLU_TESS_END_DATA 100108 -#define GLU_TESS_ERROR_DATA 100109 -#define GLU_TESS_EDGE_FLAG_DATA 100110 -#define GLU_TESS_COMBINE_DATA 100111 - -/* TessContour */ -#define GLU_CW 100120 -#define GLU_CCW 100121 -#define GLU_INTERIOR 100122 -#define GLU_EXTERIOR 100123 -#define GLU_UNKNOWN 100124 - -/* TessProperty */ -#define GLU_TESS_WINDING_RULE 100140 -#define GLU_TESS_BOUNDARY_ONLY 100141 -#define GLU_TESS_TOLERANCE 100142 - -/* TessError */ -#define GLU_TESS_ERROR1 100151 -#define GLU_TESS_ERROR2 100152 -#define GLU_TESS_ERROR3 100153 -#define GLU_TESS_ERROR4 100154 -#define GLU_TESS_ERROR5 100155 -#define GLU_TESS_ERROR6 100156 -#define GLU_TESS_ERROR7 100157 -#define GLU_TESS_ERROR8 100158 -#define GLU_TESS_MISSING_BEGIN_POLYGON 100151 -#define GLU_TESS_MISSING_BEGIN_CONTOUR 100152 -#define GLU_TESS_MISSING_END_POLYGON 100153 -#define GLU_TESS_MISSING_END_CONTOUR 100154 -#define GLU_TESS_COORD_TOO_LARGE 100155 -#define GLU_TESS_NEED_COMBINE_CALLBACK 100156 - -/* TessWinding */ -#define GLU_TESS_WINDING_ODD 100130 -#define GLU_TESS_WINDING_NONZERO 100131 -#define GLU_TESS_WINDING_POSITIVE 100132 -#define GLU_TESS_WINDING_NEGATIVE 100133 -#define GLU_TESS_WINDING_ABS_GEQ_TWO 100134 - -/*************************************************************/ - - -#ifdef __cplusplus -class GLUnurbs; -class GLUquadric; -class GLUtesselator; -#else -typedef struct GLUnurbs GLUnurbs; -typedef struct GLUquadric GLUquadric; -typedef struct GLUtesselator GLUtesselator; -#endif - -typedef GLUnurbs GLUnurbsObj; -typedef GLUquadric GLUquadricObj; -typedef GLUtesselator GLUtesselatorObj; -typedef GLUtesselator GLUtriangulatorObj; - -#define GLU_TESS_MAX_COORD 1.0e150 - -/* Internal convenience typedefs */ -typedef void (GLAPIENTRYP _GLUfuncptr)(); - -GLAPI void GLAPIENTRY gluBeginCurve (GLUnurbs* nurb); -GLAPI void GLAPIENTRY gluBeginPolygon (GLUtesselator* tess); -GLAPI void GLAPIENTRY gluBeginSurface (GLUnurbs* nurb); -GLAPI void GLAPIENTRY gluBeginTrim (GLUnurbs* nurb); -GLAPI GLint GLAPIENTRY gluBuild1DMipmapLevels (GLenum target, GLint internalFormat, GLsizei width, GLenum format, GLenum type, GLint level, GLint base, GLint max, const void *data); -GLAPI GLint GLAPIENTRY gluBuild1DMipmaps (GLenum target, GLint internalFormat, GLsizei width, GLenum format, GLenum type, const void *data); -GLAPI GLint GLAPIENTRY gluBuild2DMipmapLevels (GLenum target, GLint internalFormat, GLsizei width, GLsizei height, GLenum format, GLenum type, GLint level, GLint base, GLint max, const void *data); -GLAPI GLint GLAPIENTRY gluBuild2DMipmaps (GLenum target, GLint internalFormat, GLsizei width, GLsizei height, GLenum format, GLenum type, const void *data); -GLAPI GLint GLAPIENTRY gluBuild3DMipmapLevels (GLenum target, GLint internalFormat, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, GLint level, GLint base, GLint max, const void *data); -GLAPI GLint GLAPIENTRY gluBuild3DMipmaps (GLenum target, GLint internalFormat, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, const void *data); -GLAPI GLboolean GLAPIENTRY gluCheckExtension (const GLubyte *extName, const GLubyte *extString); -GLAPI void GLAPIENTRY gluCylinder (GLUquadric* quad, GLdouble base, GLdouble top, GLdouble height, GLint slices, GLint stacks); -GLAPI void GLAPIENTRY gluDeleteNurbsRenderer (GLUnurbs* nurb); -GLAPI void GLAPIENTRY gluDeleteQuadric (GLUquadric* quad); -GLAPI void GLAPIENTRY gluDeleteTess (GLUtesselator* tess); -GLAPI void GLAPIENTRY gluDisk (GLUquadric* quad, GLdouble inner, GLdouble outer, GLint slices, GLint loops); -GLAPI void GLAPIENTRY gluEndCurve (GLUnurbs* nurb); -GLAPI void GLAPIENTRY gluEndPolygon (GLUtesselator* tess); -GLAPI void GLAPIENTRY gluEndSurface (GLUnurbs* nurb); -GLAPI void GLAPIENTRY gluEndTrim (GLUnurbs* nurb); -GLAPI const GLubyte * GLAPIENTRY gluErrorString (GLenum error); -GLAPI void GLAPIENTRY gluGetNurbsProperty (GLUnurbs* nurb, GLenum property, GLfloat* data); -GLAPI const GLubyte * GLAPIENTRY gluGetString (GLenum name); -GLAPI void GLAPIENTRY gluGetTessProperty (GLUtesselator* tess, GLenum which, GLdouble* data); -GLAPI void GLAPIENTRY gluLoadSamplingMatrices (GLUnurbs* nurb, const GLfloat *model, const GLfloat *perspective, const GLint *view); -GLAPI void GLAPIENTRY gluLookAt (GLdouble eyeX, GLdouble eyeY, GLdouble eyeZ, GLdouble centerX, GLdouble centerY, GLdouble centerZ, GLdouble upX, GLdouble upY, GLdouble upZ); -GLAPI GLUnurbs* GLAPIENTRY gluNewNurbsRenderer (void); -GLAPI GLUquadric* GLAPIENTRY gluNewQuadric (void); -GLAPI GLUtesselator* GLAPIENTRY gluNewTess (void); -GLAPI void GLAPIENTRY gluNextContour (GLUtesselator* tess, GLenum type); -GLAPI void GLAPIENTRY gluNurbsCallback (GLUnurbs* nurb, GLenum which, _GLUfuncptr CallBackFunc); -GLAPI void GLAPIENTRY gluNurbsCallbackData (GLUnurbs* nurb, GLvoid* userData); -GLAPI void GLAPIENTRY gluNurbsCallbackDataEXT (GLUnurbs* nurb, GLvoid* userData); -GLAPI void GLAPIENTRY gluNurbsCurve (GLUnurbs* nurb, GLint knotCount, GLfloat *knots, GLint stride, GLfloat *control, GLint order, GLenum type); -GLAPI void GLAPIENTRY gluNurbsProperty (GLUnurbs* nurb, GLenum property, GLfloat value); -GLAPI void GLAPIENTRY gluNurbsSurface (GLUnurbs* nurb, GLint sKnotCount, GLfloat* sKnots, GLint tKnotCount, GLfloat* tKnots, GLint sStride, GLint tStride, GLfloat* control, GLint sOrder, GLint tOrder, GLenum type); -GLAPI void GLAPIENTRY gluOrtho2D (GLdouble left, GLdouble right, GLdouble bottom, GLdouble top); -GLAPI void GLAPIENTRY gluPartialDisk (GLUquadric* quad, GLdouble inner, GLdouble outer, GLint slices, GLint loops, GLdouble start, GLdouble sweep); -GLAPI void GLAPIENTRY gluPerspective (GLdouble fovy, GLdouble aspect, GLdouble zNear, GLdouble zFar); -GLAPI void GLAPIENTRY gluPickMatrix (GLdouble x, GLdouble y, GLdouble delX, GLdouble delY, GLint *viewport); -GLAPI GLint GLAPIENTRY gluProject (GLdouble objX, GLdouble objY, GLdouble objZ, const GLdouble *model, const GLdouble *proj, const GLint *view, GLdouble* winX, GLdouble* winY, GLdouble* winZ); -GLAPI void GLAPIENTRY gluPwlCurve (GLUnurbs* nurb, GLint count, GLfloat* data, GLint stride, GLenum type); -GLAPI void GLAPIENTRY gluQuadricCallback (GLUquadric* quad, GLenum which, _GLUfuncptr CallBackFunc); -GLAPI void GLAPIENTRY gluQuadricDrawStyle (GLUquadric* quad, GLenum draw); -GLAPI void GLAPIENTRY gluQuadricNormals (GLUquadric* quad, GLenum normal); -GLAPI void GLAPIENTRY gluQuadricOrientation (GLUquadric* quad, GLenum orientation); -GLAPI void GLAPIENTRY gluQuadricTexture (GLUquadric* quad, GLboolean texture); -GLAPI GLint GLAPIENTRY gluScaleImage (GLenum format, GLsizei wIn, GLsizei hIn, GLenum typeIn, const void *dataIn, GLsizei wOut, GLsizei hOut, GLenum typeOut, GLvoid* dataOut); -GLAPI void GLAPIENTRY gluSphere (GLUquadric* quad, GLdouble radius, GLint slices, GLint stacks); -GLAPI void GLAPIENTRY gluTessBeginContour (GLUtesselator* tess); -GLAPI void GLAPIENTRY gluTessBeginPolygon (GLUtesselator* tess, GLvoid* data); -GLAPI void GLAPIENTRY gluTessCallback (GLUtesselator* tess, GLenum which, _GLUfuncptr CallBackFunc); -GLAPI void GLAPIENTRY gluTessEndContour (GLUtesselator* tess); -GLAPI void GLAPIENTRY gluTessEndPolygon (GLUtesselator* tess); -GLAPI void GLAPIENTRY gluTessNormal (GLUtesselator* tess, GLdouble valueX, GLdouble valueY, GLdouble valueZ); -GLAPI void GLAPIENTRY gluTessProperty (GLUtesselator* tess, GLenum which, GLdouble data); -GLAPI void GLAPIENTRY gluTessVertex (GLUtesselator* tess, GLdouble *location, GLvoid* data); -GLAPI GLint GLAPIENTRY gluUnProject (GLdouble winX, GLdouble winY, GLdouble winZ, const GLdouble *model, const GLdouble *proj, const GLint *view, GLdouble* objX, GLdouble* objY, GLdouble* objZ); -GLAPI GLint GLAPIENTRY gluUnProject4 (GLdouble winX, GLdouble winY, GLdouble winZ, GLdouble clipW, const GLdouble *model, const GLdouble *proj, const GLint *view, GLdouble nearVal, GLdouble farVal, GLdouble* objX, GLdouble* objY, GLdouble* objZ, GLdouble* objW); - -#ifdef __cplusplus -} -#endif - -#endif /* __glu_h__ */ diff --git a/manual/.gitignore b/manual/.gitignore new file mode 100644 index 0000000..d8f8d46 --- /dev/null +++ b/manual/.gitignore @@ -0,0 +1 @@ +docs diff --git a/manual/antora.yml b/manual/antora.yml new file mode 100644 index 0000000..f6bcf4e --- /dev/null +++ b/manual/antora.yml @@ -0,0 +1,3 @@ +name: celestial_navigation +title: Celestial Navigation +version: ~ diff --git a/manual/modules/ROOT/attachments/cel-nav-coordinates-time-and-the-sky-by-john-thorstensen.pdf b/manual/modules/ROOT/attachments/cel-nav-coordinates-time-and-the-sky-by-john-thorstensen.pdf new file mode 100644 index 0000000..3ed42ef Binary files /dev/null and b/manual/modules/ROOT/attachments/cel-nav-coordinates-time-and-the-sky-by-john-thorstensen.pdf differ diff --git a/manual/modules/ROOT/attachments/cel-nav-new_computational_methods_for_solving_problems_of_vessel_position.pdf b/manual/modules/ROOT/attachments/cel-nav-new_computational_methods_for_solving_problems_of_vessel_position.pdf new file mode 100644 index 0000000..48cf8de Binary files /dev/null and b/manual/modules/ROOT/attachments/cel-nav-new_computational_methods_for_solving_problems_of_vessel_position.pdf differ diff --git a/manual/modules/ROOT/attachments/cel_nav_VSOP87_theory_paper.pdf b/manual/modules/ROOT/attachments/cel_nav_VSOP87_theory_paper.pdf new file mode 100644 index 0000000..269e988 Binary files /dev/null and b/manual/modules/ROOT/attachments/cel_nav_VSOP87_theory_paper.pdf differ diff --git a/manual/modules/ROOT/attachments/cel_nav_determining_the_position_and_motion_of_a_vessel_fr.pdf b/manual/modules/ROOT/attachments/cel_nav_determining_the_position_and_motion_of_a_vessel_fr.pdf new file mode 100644 index 0000000..db19f90 Binary files /dev/null and b/manual/modules/ROOT/attachments/cel_nav_determining_the_position_and_motion_of_a_vessel_fr.pdf differ diff --git a/manual/modules/ROOT/attachments/cel_nav_direct_fix_v44n1-2.pdf b/manual/modules/ROOT/attachments/cel_nav_direct_fix_v44n1-2.pdf new file mode 100644 index 0000000..f7a537a Binary files /dev/null and b/manual/modules/ROOT/attachments/cel_nav_direct_fix_v44n1-2.pdf differ diff --git a/manual/modules/ROOT/attachments/cel_nav_generic_03_2012_06.pdf b/manual/modules/ROOT/attachments/cel_nav_generic_03_2012_06.pdf new file mode 100644 index 0000000..e4b1739 Binary files /dev/null and b/manual/modules/ROOT/attachments/cel_nav_generic_03_2012_06.pdf differ diff --git a/manual/modules/ROOT/attachments/cel_nav_new_computational_methods_04_2014_01_2_.pdf b/manual/modules/ROOT/attachments/cel_nav_new_computational_methods_04_2014_01_2_.pdf new file mode 100644 index 0000000..eab0d4b Binary files /dev/null and b/manual/modules/ROOT/attachments/cel_nav_new_computational_methods_04_2014_01_2_.pdf differ diff --git a/manual/modules/ROOT/attachments/cel_nav_use_of_rotation_matrices_to_plot_a_circle_of_equal_altitude.pdf b/manual/modules/ROOT/attachments/cel_nav_use_of_rotation_matrices_to_plot_a_circle_of_equal_altitude.pdf new file mode 100644 index 0000000..66138fa Binary files /dev/null and b/manual/modules/ROOT/attachments/cel_nav_use_of_rotation_matrices_to_plot_a_circle_of_equal_altitude.pdf differ diff --git a/manual/modules/ROOT/attachments/cel_nav_vectorial_Equation_COP.en.pdf b/manual/modules/ROOT/attachments/cel_nav_vectorial_Equation_COP.en.pdf new file mode 100644 index 0000000..c02706d Binary files /dev/null and b/manual/modules/ROOT/attachments/cel_nav_vectorial_Equation_COP.en.pdf differ diff --git a/manual/modules/ROOT/attachments/my_astro_sight_2017.txt.doc b/manual/modules/ROOT/attachments/my_astro_sight_2017.txt.doc new file mode 100644 index 0000000..fffda93 --- /dev/null +++ b/manual/modules/ROOT/attachments/my_astro_sight_2017.txt.doc @@ -0,0 +1,19 @@ +Data entered: +============= +Astro01: Sun LL, 2.07.2017 09:33:32 UT, 39°48.8', index error -1.5', Height of eye 2.0m | 27°42,1'N 017°54,8'W +Astro02: Sun LL, 2.07.2017 15:36:20 UT, 58°03.2', index error -1.5', Height of eye 2.0m | 27°05,1'N 018°12,5'W +Astro03: Sun LL, 2.07.2017 18:44:55 UT, 16°45.0', index error -1.5', Height of eye 2.0m | 26°50,5'N 018°14,0'W +Astro04: Mer Pass, 3.07.2017 13:19:52 UT, 86°49.9', index error -1.5', Height of eye 2.0m | 25°51,9'N 018°41,2'W +Astro05: Sun LL, 3.07.2017 16:24:04 UT, 47°54.0', index error -1.5', Height of eye 2.0m | 25°39,9'N 018°50,5'W +Astro06: Sun LL, 3.07.2017 18:42:34 UT, 17°30.0', index error -1.5', Height of eye 2.0m | 25°32,0'N 018°57,6'W +Astro07: Sun LL, 4.07.2017 10:29:48 UT, 50°02.8', index error -1.5', Height of eye 2.0m | 24°42,7'N 019°58,0'W +Astro08: Mer Pass, 4.07.2017 13:25:10 UT, 88°10.0', index error -1.5', Height of eye 2.0m | 24°27,6'N 020°07,6'W +Astro09: Sun LL, 4.07.2017 18:11:11 UT, 25°11.8', index error -1.5', Height of eye 2.0m | 24°01,7'N 020°25,1'W +Astro10: Sun LL, 5.07.2017 10:10:16 UT, 43°49.8', index error -1.5', Height of eye 2.0m | 22°40,6'N 021°31,5'W +Astro11: Sun LL, 5.07.2017 14:09:27 UT, 80°56.2', index error -1.5', Height of eye 2.0m | 22°14,5'N 021°38,4'W +Astro12: Sun LL, 6.07.2017 12:20:22 UT, 72°00.2', index error -1.5', Height of eye 2.0m | 20°33,0'N 022°53,4'W +Astro13: Mer Pass, 6.07.2017 13:37:00 UT, 87°40.0', index error -1.5', Height of eye 2.0m | 20°29,0'N 023°00,0'W +Astro14: Moon UL, 6.07.2017 19:49:38 UT, 19°50.3', index error -1.5', Height of eye 2.0m | 19°56,0'N 023°09,9'W +Astro15: Vega, 6.07.2017 20:55:33 UT, 32°34.0', index error -1.5', Height of eye 2.0m | 19°49,6'N 023°11,0'W +Astro16: Sun LL, 7.07.2017 10:54:01 UT, 51°03.2', index error -1.5', Height of eye 2.0m | 18°25,5'N 023°32,2'W +Astro17: Mer Pass, 7.07.2017 13:38:30 UT, 85°27.0', index error -1.5', Height of eye 2.0m | 18°10,7'N 023°37,0'W \ No newline at end of file diff --git a/manual/modules/ROOT/attachments/my_astro_sights.xml.doc b/manual/modules/ROOT/attachments/my_astro_sights.xml.doc new file mode 100644 index 0000000..d3d7cbe --- /dev/null +++ b/manual/modules/ROOT/attachments/my_astro_sights.xml.doc @@ -0,0 +1,21 @@ + + + + + + + + + + + + + + + + + + + + + diff --git a/manual/modules/ROOT/attachments/nautical_almanac_alt_reduction.pdf b/manual/modules/ROOT/attachments/nautical_almanac_alt_reduction.pdf new file mode 100644 index 0000000..0316cc9 Binary files /dev/null and b/manual/modules/ROOT/attachments/nautical_almanac_alt_reduction.pdf differ diff --git a/manual/modules/ROOT/attachments/sights.xml.doc b/manual/modules/ROOT/attachments/sights.xml.doc new file mode 100644 index 0000000..42fdfe5 --- /dev/null +++ b/manual/modules/ROOT/attachments/sights.xml.doc @@ -0,0 +1,12 @@ + + + + + + + + + + + + diff --git a/manual/modules/ROOT/attachments/sights.xml.rick2.doc b/manual/modules/ROOT/attachments/sights.xml.rick2.doc new file mode 100644 index 0000000..1da73af --- /dev/null +++ b/manual/modules/ROOT/attachments/sights.xml.rick2.doc @@ -0,0 +1,13 @@ + + + + + + + + + + + + + diff --git a/manual/modules/ROOT/attachments/textbook_data.pdf b/manual/modules/ROOT/attachments/textbook_data.pdf new file mode 100644 index 0000000..daaa442 Binary files /dev/null and b/manual/modules/ROOT/attachments/textbook_data.pdf differ diff --git a/manual/modules/ROOT/attachments/track_with_astro.zip b/manual/modules/ROOT/attachments/track_with_astro.zip new file mode 100644 index 0000000..820ce87 Binary files /dev/null and b/manual/modules/ROOT/attachments/track_with_astro.zip differ diff --git a/manual/modules/ROOT/images/astro_capture_all_17_sights.jpg b/manual/modules/ROOT/images/astro_capture_all_17_sights.jpg new file mode 100644 index 0000000..0caea44 Binary files /dev/null and b/manual/modules/ROOT/images/astro_capture_all_17_sights.jpg differ diff --git a/manual/modules/ROOT/images/cel-nav-accuracy.jpg b/manual/modules/ROOT/images/cel-nav-accuracy.jpg new file mode 100644 index 0000000..03a0304 Binary files /dev/null and b/manual/modules/ROOT/images/cel-nav-accuracy.jpg differ diff --git a/manual/modules/ROOT/images/cn-03-time.jpg b/manual/modules/ROOT/images/cn-03-time.jpg new file mode 100644 index 0000000..e2fdb88 Binary files /dev/null and b/manual/modules/ROOT/images/cn-03-time.jpg differ diff --git a/manual/modules/ROOT/images/cn-04-drshift.jpg b/manual/modules/ROOT/images/cn-04-drshift.jpg new file mode 100644 index 0000000..a320c17 Binary files /dev/null and b/manual/modules/ROOT/images/cn-04-drshift.jpg differ diff --git a/manual/modules/ROOT/images/cn-05-config.jpg b/manual/modules/ROOT/images/cn-05-config.jpg new file mode 100644 index 0000000..c1c7717 Binary files /dev/null and b/manual/modules/ROOT/images/cn-05-config.jpg differ diff --git a/manual/modules/ROOT/images/cn-06-parameters.jpg b/manual/modules/ROOT/images/cn-06-parameters.jpg new file mode 100644 index 0000000..286eef4 Binary files /dev/null and b/manual/modules/ROOT/images/cn-06-parameters.jpg differ diff --git a/manual/modules/ROOT/images/cn-07-sight-sun.jpg b/manual/modules/ROOT/images/cn-07-sight-sun.jpg new file mode 100644 index 0000000..8277efe Binary files /dev/null and b/manual/modules/ROOT/images/cn-07-sight-sun.jpg differ diff --git a/manual/modules/ROOT/images/cn-08-sight-arcturus.jpg b/manual/modules/ROOT/images/cn-08-sight-arcturus.jpg new file mode 100644 index 0000000..8cc3a6b Binary files /dev/null and b/manual/modules/ROOT/images/cn-08-sight-arcturus.jpg differ diff --git a/manual/modules/ROOT/images/cn-09-sight-arturus-entered.jpg b/manual/modules/ROOT/images/cn-09-sight-arturus-entered.jpg new file mode 100644 index 0000000..66a7e57 Binary files /dev/null and b/manual/modules/ROOT/images/cn-09-sight-arturus-entered.jpg differ diff --git a/manual/modules/ROOT/images/cn-10-sight-arcturus-calc.jpg b/manual/modules/ROOT/images/cn-10-sight-arcturus-calc.jpg new file mode 100644 index 0000000..a9c2fd3 Binary files /dev/null and b/manual/modules/ROOT/images/cn-10-sight-arcturus-calc.jpg differ diff --git a/manual/modules/ROOT/images/cn-11-sight-kochab.jpg b/manual/modules/ROOT/images/cn-11-sight-kochab.jpg new file mode 100644 index 0000000..cbe9b42 Binary files /dev/null and b/manual/modules/ROOT/images/cn-11-sight-kochab.jpg differ diff --git a/manual/modules/ROOT/images/cn-12-sight-kochab-calc.jpg b/manual/modules/ROOT/images/cn-12-sight-kochab-calc.jpg new file mode 100644 index 0000000..aa01e7b Binary files /dev/null and b/manual/modules/ROOT/images/cn-12-sight-kochab-calc.jpg differ diff --git a/manual/modules/ROOT/images/cn-13-fix1-42nm.jpg b/manual/modules/ROOT/images/cn-13-fix1-42nm.jpg new file mode 100644 index 0000000..02482ed Binary files /dev/null and b/manual/modules/ROOT/images/cn-13-fix1-42nm.jpg differ diff --git a/manual/modules/ROOT/images/cn-14-sight-alkaid.jpg b/manual/modules/ROOT/images/cn-14-sight-alkaid.jpg new file mode 100644 index 0000000..bf3555e Binary files /dev/null and b/manual/modules/ROOT/images/cn-14-sight-alkaid.jpg differ diff --git a/manual/modules/ROOT/images/cn-15-fix2-32nm.jpg b/manual/modules/ROOT/images/cn-15-fix2-32nm.jpg new file mode 100644 index 0000000..22b1c7b Binary files /dev/null and b/manual/modules/ROOT/images/cn-15-fix2-32nm.jpg differ diff --git a/manual/modules/ROOT/images/cn-16-fix3-8nm-sun-off.jpg b/manual/modules/ROOT/images/cn-16-fix3-8nm-sun-off.jpg new file mode 100644 index 0000000..a509793 Binary files /dev/null and b/manual/modules/ROOT/images/cn-16-fix3-8nm-sun-off.jpg differ diff --git a/manual/modules/ROOT/images/fix_42-21.1_-71-6.1.jpg b/manual/modules/ROOT/images/fix_42-21.1_-71-6.1.jpg new file mode 100644 index 0000000..3cd6379 Binary files /dev/null and b/manual/modules/ROOT/images/fix_42-21.1_-71-6.1.jpg differ diff --git a/manual/modules/ROOT/images/four-circles-of-position.png b/manual/modules/ROOT/images/four-circles-of-position.png new file mode 100644 index 0000000..53406a9 Binary files /dev/null and b/manual/modules/ROOT/images/four-circles-of-position.png differ diff --git a/manual/modules/ROOT/images/four-sights-entered.png b/manual/modules/ROOT/images/four-sights-entered.png new file mode 100644 index 0000000..aa9ba6b Binary files /dev/null and b/manual/modules/ROOT/images/four-sights-entered.png differ diff --git a/manual/modules/ROOT/images/my_astro_sight_2017.txt.doc b/manual/modules/ROOT/images/my_astro_sight_2017.txt.doc new file mode 100644 index 0000000..fffda93 --- /dev/null +++ b/manual/modules/ROOT/images/my_astro_sight_2017.txt.doc @@ -0,0 +1,19 @@ +Data entered: +============= +Astro01: Sun LL, 2.07.2017 09:33:32 UT, 39°48.8', index error -1.5', Height of eye 2.0m | 27°42,1'N 017°54,8'W +Astro02: Sun LL, 2.07.2017 15:36:20 UT, 58°03.2', index error -1.5', Height of eye 2.0m | 27°05,1'N 018°12,5'W +Astro03: Sun LL, 2.07.2017 18:44:55 UT, 16°45.0', index error -1.5', Height of eye 2.0m | 26°50,5'N 018°14,0'W +Astro04: Mer Pass, 3.07.2017 13:19:52 UT, 86°49.9', index error -1.5', Height of eye 2.0m | 25°51,9'N 018°41,2'W +Astro05: Sun LL, 3.07.2017 16:24:04 UT, 47°54.0', index error -1.5', Height of eye 2.0m | 25°39,9'N 018°50,5'W +Astro06: Sun LL, 3.07.2017 18:42:34 UT, 17°30.0', index error -1.5', Height of eye 2.0m | 25°32,0'N 018°57,6'W +Astro07: Sun LL, 4.07.2017 10:29:48 UT, 50°02.8', index error -1.5', Height of eye 2.0m | 24°42,7'N 019°58,0'W +Astro08: Mer Pass, 4.07.2017 13:25:10 UT, 88°10.0', index error -1.5', Height of eye 2.0m | 24°27,6'N 020°07,6'W +Astro09: Sun LL, 4.07.2017 18:11:11 UT, 25°11.8', index error -1.5', Height of eye 2.0m | 24°01,7'N 020°25,1'W +Astro10: Sun LL, 5.07.2017 10:10:16 UT, 43°49.8', index error -1.5', Height of eye 2.0m | 22°40,6'N 021°31,5'W +Astro11: Sun LL, 5.07.2017 14:09:27 UT, 80°56.2', index error -1.5', Height of eye 2.0m | 22°14,5'N 021°38,4'W +Astro12: Sun LL, 6.07.2017 12:20:22 UT, 72°00.2', index error -1.5', Height of eye 2.0m | 20°33,0'N 022°53,4'W +Astro13: Mer Pass, 6.07.2017 13:37:00 UT, 87°40.0', index error -1.5', Height of eye 2.0m | 20°29,0'N 023°00,0'W +Astro14: Moon UL, 6.07.2017 19:49:38 UT, 19°50.3', index error -1.5', Height of eye 2.0m | 19°56,0'N 023°09,9'W +Astro15: Vega, 6.07.2017 20:55:33 UT, 32°34.0', index error -1.5', Height of eye 2.0m | 19°49,6'N 023°11,0'W +Astro16: Sun LL, 7.07.2017 10:54:01 UT, 51°03.2', index error -1.5', Height of eye 2.0m | 18°25,5'N 023°32,2'W +Astro17: Mer Pass, 7.07.2017 13:38:30 UT, 85°27.0', index error -1.5', Height of eye 2.0m | 18°10,7'N 023°37,0'W \ No newline at end of file diff --git a/manual/modules/ROOT/images/my_astro_sights.xml.doc b/manual/modules/ROOT/images/my_astro_sights.xml.doc new file mode 100644 index 0000000..d3d7cbe --- /dev/null +++ b/manual/modules/ROOT/images/my_astro_sights.xml.doc @@ -0,0 +1,21 @@ + + + + + + + + + + + + + + + + + + + + + diff --git a/manual/modules/ROOT/images/sight-1-degrees-minutes-uncertainty.png b/manual/modules/ROOT/images/sight-1-degrees-minutes-uncertainty.png new file mode 100644 index 0000000..b1f45cf Binary files /dev/null and b/manual/modules/ROOT/images/sight-1-degrees-minutes-uncertainty.png differ diff --git a/manual/modules/ROOT/images/sight-2-date-time-certainty-shift.png b/manual/modules/ROOT/images/sight-2-date-time-certainty-shift.png new file mode 100644 index 0000000..230fb41 Binary files /dev/null and b/manual/modules/ROOT/images/sight-2-date-time-certainty-shift.png differ diff --git a/manual/modules/ROOT/images/sight-3-configuration.png b/manual/modules/ROOT/images/sight-3-configuration.png new file mode 100644 index 0000000..5f1ad20 Binary files /dev/null and b/manual/modules/ROOT/images/sight-3-configuration.png differ diff --git a/manual/modules/ROOT/images/sight-4-parameters.png b/manual/modules/ROOT/images/sight-4-parameters.png new file mode 100644 index 0000000..a0eeb64 Binary files /dev/null and b/manual/modules/ROOT/images/sight-4-parameters.png differ diff --git a/manual/modules/ROOT/images/sight-5-calculations.jpg b/manual/modules/ROOT/images/sight-5-calculations.jpg new file mode 100644 index 0000000..c73f381 Binary files /dev/null and b/manual/modules/ROOT/images/sight-5-calculations.jpg differ diff --git a/manual/modules/ROOT/images/sights-dr-shift.png b/manual/modules/ROOT/images/sights-dr-shift.png new file mode 100644 index 0000000..0d5e3db Binary files /dev/null and b/manual/modules/ROOT/images/sights-dr-shift.png differ diff --git a/manual/modules/ROOT/pages/index.adoc b/manual/modules/ROOT/pages/index.adoc new file mode 100644 index 0000000..c745543 --- /dev/null +++ b/manual/modules/ROOT/pages/index.adoc @@ -0,0 +1,871 @@ += Celestial Navigation + +== Record Sextant Sights and show Circles of Position to obtain a Fix + +Celestial navigation support makes it possible to establish your +position when other means are not available. Also, users may find this +plugin, which is still under development, useful for cross checking +their position fixes obtained in other ways, or to to better visualize a +celestial fix. You find the forum thread here: + +== Links + +* Github Source: https://github.com/seandepagnier/celestial_navigation_pi +* Github Maintenance Source: https://github.com/rgleason/celestial_navigation_pi +* Plugin Download, Install and Enable: xref:opencpn-plugins:misc:plugin-install.adoc[Instructions] +* Forum: http://www.cruisersforum.com/forums/f134/celestial-navigation-plugin-redux-98748.html[Celestial Navigation Plugin Redux] + +* Legacy Package Releases: https://github.com/rgleason/celestial_navigation_pi/releases[Github Windows Releases] +* Legacy Downloads: https://opencpn.org/OpenCPN/plugins/celestialnav.html + + +image::four-circles-of-position.png["4 Circles of Position",width=550,link="_images/four-circles-of-position.png"] + +== Types of Observations + +Three types of observations are supported: + +=== Altitude (sextant measurement) + +Measure the angle between the horizon and a heavenly body, and enter the required data in the plugin. +Each measurement results in a Circle of Position on the sphere (COP, or Circle of Equal Altitude). Two or more observations result in intersecting COP's from which a position fix can be obtained. + +=== Azimuth (compass measurement) + +Measure the azimuth (bearing) of a heavenly body. This method is hopelessly inaccurate, especially on a +small boat in high seas. However, it is interesting for demonstration purposes, and possibly - with accurate digital compasses - it may be a viable navigation method in the future. + +=== Lunar distance (sextant measurement) + +Measure the angle between two heavenly bodies. The computer then attempts to determine clock error from this measurement, and the system time may be corrected. + +== Process + +=== 1. Obtaining Sights with Sextant + +Standard practice in navy and merchant navy with regard to celestial +positioning is as follows (assuming no artificial horizon is available +on the sextant): + +. During morning nautical twilight (about 15 minutes): if possible take 6 star/planet observations. +. In the morning at about 09:00LT: take a Sun's observation (later to be shifted to noon-time). +. At local noon: take a Sun's observation (traditionally only direct latitude calculation from sun at meridian passage). Construct a fix for noon from both sun observations. +. During evening nautical twilight (about 15 minutes): if possible take 6 star/planet observations. +. Use the Moon for an observation in above practice when situation permits. + +Many books have been written about the art and science of celestial +positioning (xref:#_resources[Resources below]). + +Document containing the test data used for the example below: link:{attachmentsdir}/textbook_data.pdf[Example Worksheet PDF] (4 star observations). + +=== 2. Sight Properties - Sight Tab - Enter Star Data + +Enter Type (Altitude, Azimuth, Lunar), Celestial Body, Limb, Measurement +and Degrees of Certainty. Degrees of Certainty is the accuracy the +navigator assumes for the observation. A larger value results in a +larger line width for the Circle of Position on the chart. + +image::sight-1-degrees-minutes-uncertainty.png["Sight 1 Degrees Minutes Uncertainty",width=400,link="_images/sight-1-degrees-minutes-uncertainty.png"] + +=== 3. Sight Properties - Date and Time Tab + +Enter Date (based on GMT/UT) and Time in GMT/UT, Certainty and Shift. +Note that entering a shift removes the calculated numerical fix. This is +due to the computation method used, which presently does not allow to +shift COP's. However, a position fix can be established by visually +observing the COP's (which are graphically shifted) on the chart. + +The date and time is populated using current computer time and time zone +(verify your computer's time), to match the Greenwich UTC Date & Time. +Times for sights are entered in UTC. Sights are likely taken +extemporaneously with time details, unique exact time for each sight +must be entered separately, overriding the computer time & date. + +image::sight-2-date-time-certainty-shift.png["sight 2 date time certainty shift",width=550,link="_images/sight-2-date-time-certainty-shift.png"] + +=== 4. DR Shift - Distance and Bearing + +image::sights-dr-shift.png["Sights DR Shift Distance and Bearing",width=550,link="_images/sights-dr-shift.png"] + +When a DR Shift with values > 0 is entered the Circle of Position will +shift accordingly, the “Fix” button will not compute and the Fix must be +done manually. + +The DR Shift is used to “advance” a sight to the time of last sight in a +“group of sights” which have been taken at different times (usually 1-5 +minutes apart), so that the fix can e more accurately determined. + +. The navigator first measures the range and bearing of the sight that +is to be “advanced” to the last sight of the group. +. These values are then entered into DR Shift and the program simply +adjusts the Circle of Position to the time of the last sight of the +group. +. The actual “Fix” must be done by manual inspection and dropping a +waypoint at the selected location and labeling it “Fix” with the date +and time labeled. + +Please see David Burch's xref:#_videos_methodology_with_celestial_navigation_pi[Videos: Methodology_with_Celestial_Navigation_pi] below for a much clearer explanation. + +=== 5. Sight Properties - Config Tab - Display Characteristics + +Enter Transparency and Color you wish to use for the COP. + +image::sight-3-configuration.png["Sight 3 Configuration",width=550,link="_images/sight-3-configuration.png"] + +=== 6. Sight Properties - Parameters Tab + +Enter Eye Height, Temperature, Pressure and Index Error. + +image::sight-4-parameters.png["Sight 4 Parameters",width=550,link="_images/sight-4-parameters.png"] + +=== 7. Sight Properties - Calculations Tab + +Showing the input figures and some calculated results for the +observation. Together with the calculated numerical position fix showed +in the main window of the plugin, this can be used for comparison with +results that are obtained by other calculation methods (traditional +manual method using logarithms, traditional or direct computation +methods as mentioned in Nautical Almanac, shortened methods using e.g. + +* https://msi.nga.mil/Publications/SRTMar[Site Reduction Tables for Marine Navigation - US Pub. 229] +* https://thenauticalalmanac.com/Pub229Vol2.pdf[Sight Reduction Tables US Pub No. 229 or Ho 229 - The Nautical Almanac] +* http://thenauticalalmanac.com/[US Pub. 249 or Ho 249 Epoch 2020 - The Nautical Almanac] + +image::sight-5-calculations.jpg["sight-5-calculations",width=550,link="_images/sight-5-calculations.jpg"] + +=== 8. Celestial Navigation Sights - Circles of Position and Sights + +A Circle of Position (COP) indicates all the positions on earth where a +navigator may observe the same altitude of a heavenly body at a certain +time. Using traditional methods, only the part of a COP the navigator is +interested in is used, and replaced by a tangent line (LOP). + +image::four-circles-of-position.png["four-circles-of-position',width=550,link="_images/four-circles-of-position.png"] + +=== 9. Four Circles of Position (showing DR position as MOB and fix as Waypoint) + +The MOB icon shows the initial DR position entered. The red circle +indicates the intersection of the crossing red lines, the calculated +position fix. Hover cursor over the crossing, right click and place a +mark. If required, visually adjust this to get best latitude and +longitude of the fix. In Sight Properties - Sight Tab, Degrees Certainty +was set to 0.05. + +image::four-sights-entered.png["four-sights-entered",width=550,link="_images/four-sights-entered.png"] + +== Videos: Methodology with Celestial_Navigation_Pi + +Videos by David Burch, Starpath Navigation https://www.starpath.com/index.htm + +This computer assisted process is a little different than traditional +techniques because Circles of Position are calculated using the Simbad +database for stars and lunar and the sight circles and intersections are +neatly represented in the standard Opencpn interface. David Burch +(Starpath.com) has completed a number of very informative videos for +Celestial_Navigation_pi. Let him step you through the process visually, +and you will learn the differences from traditional calculations as +well. His videos: + +https://www.youtube.com/watch?v=S-HzQBA7Ya4[Video: OpenCPN Cel Nav Plugin Part 1] + +.. Working with two “Altitude” sights. +.. Getting a “running fix”, entering parameters. +.. Plot two positions, and “advance” earlier sight by determining distance and bearing to last sight. +.. Determine the “Fix”. + +https://www.youtube.com/watch?v=uejmHlpnXKU[Video: OpenCPN Cel Nav Plugin Part 2] + +.. Multiple sights taken at different times +.. Advancing multiple sights to the last sight, using DR offsets. +.. Evaluate sights using fit slope method to eliminate bad sights. + +https://www.youtube.com/watch?v=nNILOsxVP7M[Video: OpenCPN Cel Nav Plugin Part 3] + +.. Use of Azimuth +.. Use of Transparency. + +https://www.youtube.com/watch?v=PZRctmBrT8o[Video: OpenCPN Cel Nav Plugin Part 4] + +.. Find function computes height and bearing of any celestial body from a known position and time. +.. Comparison with USNO data shows the azimuth values (Zn) computed with Find are accurate to within 0.1º, whereas the Hc values are off as much as 15’ or so as these were only intended for finding the body in the sky. +.. Review of WMM plugin as a way to get accurate variation needed for +the compass check. + +https://www.youtube.com/watch?v=H5e95h0FxGI[Video: Basic Opencpn] + +https://opencpn-manuals.github.io/plugins/odraw/0.1/index.html[Ocpn_Draw_pi] + +== Other informative Videos by David Burch + +* http://davidburchnavigation.blogspot.com/2013/10/checking-your-compass-with-sun.html[Checking your Compass with the Sun] +* http://davidburchnavigation.blogspot.com/2018/09/[Solar Index Correction Method for Sextant Sights] +* http://davidburchnavigation.blogspot.com/2017/10/analysis-of-celestial-navigation-sight.html[Analysis of Celestial Navigation Sight Session] +* https://www.youtube.com/watch?v=AYnhesJKzaU[Video: Sight Reductions by Calculator, Part 1, Find Hc] +* https://www.youtube.com/watch?v=AYnhesJKzaU[Video: Sight Reduction by Calculatior, Part 2. Find Z] +* https://www.youtube.com/watch?v=ei2c3589wxY[Video: Ways to get accurate GMT (UTC) - 3 Ways] +* https://www.youtube.com/results?search_query=David+Burch+opencpn[Videos: Other OpenCPN Videos] + +== General Traditional Theory + +A general, but very clear text on celestial positioning is available on Henning Umland's celnav.de website: https://www.celnav.de/page2.htm[Hennig Umland on Celestial Positioning PDF] . Many thanks to Henning Umland for this concise text. Naturally, the information provided by the Nautical Almanac and Bowditch is of interest, see below xref:#_celestial_navigation_links[Celestial Navigation Links]. + +=== Plugin Computation Methods + +The plugin is still under development and the computation methods used +are innovative and based on vector, matrix and least squares methods. +The author, Sean d'Epagnier, uses this innovative method to directly +calculate a fix position. Only he knows the background and details. + +General information on direct computation methods can be found on pages +277 to 285 of the Nautical Almanac 1994 xref:#_celestial_navigation_links[(See Celestial Navigation Links below)] and in the following articles: + +* link:{attachmentsdir}/cel_nav_new_computational_methods_04_2014_01_2_.pdf[New Computational Methods for Solving Problems of the Astronomical Vessel Position (pdf 1.7mb)] +* link:{attachmentsdir}/cel_nav_direct_fix_v44n1-2.pdf[The Direct Fix of Latitude and Longitude from two observed Altitudes (pdf 1mb)] +* link:{attachmentsdir}/cel_nav_generic_03_2012_06.pdf[Generic Algorithm for Solving Celestial Navigation Problems (pdf 435kb)] + +Presently, the plugin is not capable of advancing COP's to a common +time. When a shift is entered, the calculated numerical position on the +main window disappears. In this case, the fix can only be established by +visual examination of the graphics on the screen (also see above) xref:#_3_sight_properties_date_and_time_tab[3. Sight +Properties - Date and Time Tab] and xref:#_9_four_circles_of_position_showing_dr_position_as_mob_and_fix_as_waypoint[9. Four Circles of Position]. + +== Accuracy of Astronomical Data + +* Website Under revision: aa.usno.navy.mil/data/docs/celnavtable.php[Celestial Navigation Data for Assumed Position and Time- Navy] +* From http://www.clearskyinstitute.com/[Clear Sky Institute] refer to their github repository https://github.com/XEphem/XEphem[Astronomical Software Ephemeris] +* https://www.usno.navy.mil/USNO[The United States Naval Observatory (USNO)] + +=== Comparison of Plugin Astronomical Data and Nautical Almanac Data + +The data and formulae contained in the Nautical Almanac form a standard +in itself. The plugin utilizes astronomical data from VOP87d (for the +planets and indirectly for the sun), ELP2000/82 (for the moon) and +contains Right Ascension (RA; star's SHA = 360° - star's RA) and +Declination (Dec) data for the selected stars. + +During development of the plugin, the calculated (intermediate) +correction values for dip, refraction, horizontal parallax, parallax in +altitude and semi diameter, as well as the calculated position fix, +should be compared to values that result from other computation methods. + +The astronomical data used in the plugin is more accurate than data +taken from the Nautical Almanac. However, for navigation purposes the +differences are generally not important. With regard to altitude +reductions, so far test data indicates that the differences found in +calculated observed altitude (Ho) are small. Measurement and reading +errors made by the navigator will be larger. Using the present version, +calculated fix positions can still differ from those calculated with +traditional methods. + +=== Accuracy of Plugin Astronomical Data + +The plugin astronomical data are from Jean Meeus' Astronomical Algorithms https://en.wikipedia.org/wiki/Jean_Meeus[Wikipedia] and https://sourceforge.net/projects/astroalgorithms/[Sourceforge]. + +* Planetary positions are based upon a truncated version of link:{attachmentsdir}/cel_nav_VSOP87_theory_paper.pdf[Bretagnon and Francou's VSOP87 Theory (pdf)] also see https://en.wikipedia.org/wiki/VSOP_(planets)[Wikipedia VSOP87] . The estimated maximum error in the heliocentric longitude is several arc-seconds. Geocentric positions are accurate to within a few arc-seconds. +* Lunar positions are calculated using a truncated version of the https://ui.adsabs.harvard.edu/search/q=The%20lunar%20ephemeris%20ELP%202000&sort=date%20desc%2C%20bibcode%20desc&p_=0[Lunar Ephemeris ELP 2000 - Lunar Theory ELP-2000/82 of Chapront-Touzé and Chapront] also see https://en.wikipedia.org/wiki/Ephemeride_Lunaire_Parisienne[Wikipedia - Ephemeride_Lunaire_Parisienne]. The estimated maximum error in the geocentric longitude is about 10 arc-seconds. +* Note this repository https://github.com/variar/elp2000-82b[github.com/variar/elp2000-82b]. (The plugin code does not necessarily use this github repository.) + +=== Accuracy of Data in the Printed Nautical Almanac + +The largest error that can occur in GHA and declination of any body +other than the Sun or Moon is less than 0.2'; it may reach 0.25' for the +Sun and 0.3' for that of the Moon. In practice it may be expected that +only one third of the values of GHA and declination will have errors +larger than 0.05', and less than one tenth will have errors larger than +0.1'. + +The errors in the altitude corrections are nominally in the same order +(_but the actual values of dip and refraction at low altitudes may +differ considerably in extreme atmospheric conditions_). + +Depending on the type of sextant, the reading accuracy of the sextant +can be 0.2', 0.1' or 10“. Measurement and reading errors made by the +navigator will be larger. + +=== Online source of Celestial Navigation Data + +This page allows you to obtain all the astronomical information +necessary to plot navigational lines of position from observations of +the altitudes of celestial bodies. Simply fill in the form below and +click on the “Get data” button at the end of the form. + +A table of data will be provided giving both almanac data and altitude +corrections for each celestial body that is above the horizon at the +place and time that you specify. Sea-level observations are assumed. +Very useful for study, testing and comparisons. + +* https://www.usno.navy.mil/USNO/astronomical-applications[Celestial Navigation Data for Assumed Position and Time -usno.navy.mil] also temporary https://www.usno.navy.mil/USNO/astronomical-applications/data-services/cel-nav-data + +== Calculation & Accuracy: Plugin Improvements + +by *_Povl Abrahamsen_*, 2/26/2017 + +image::cel-nav-accuracy.jpg["cel-nav-accuracy",width=500,link="_images/cel-nav-accuracy.jpg"] + +While the existing plugin worked well with sun, moon, and planet sights, +it was not treating stars correctly. This update adds corrections for star sights. + +. It uses updated star positions from the http://simbad.u-strasbg.fr/simbad/[SIMBAD Astronomical Database]. +. Positions are corrected for proper motion and parallax. +. Positions are corrected for frame bias, precession, and nutation. + +See: + +. https://github.com/seandepagnier/celestial_navigation_pi/pull/9[Github Pull Request #9] +. http://www.cruisersforum.com/forums/f134/celestial-navigation-plugin-redux-98748-28.html#post2330218[Cruiser Forum Post #377] +. http://www.cruisersforum.com/forums/f134/celestial-navigation-plugin-redux-98748-27.html#post2334429[Cruiser Forum Post #383] + +New files: + +* transform_star.cpp has been written by me, using equations from the https://www.usno.navy.mil/USNO/astronomical-applications/publications/Circular_179.pdf[US Naval Observatory Circular No. 179] + +* epv00.cpp comes from the SOFA library http://www.iausofa.org/, with a wrapper function written by Povl Abrahamsen. + +Also we would like to acknowledge the use of the SOFA function and library. +See xref:#_article_earth_rotation_and_equatorial_coordinates[Article: Earth Rotation and Equatorial Coordinates] below for general information about the error. + +== Summary of Accuracy + +We believe the current values should be usable for navigation - +certainly within the accuracy that can be expected for a human holding a +sextant on a vessel at sea. But clearly there are still some minor +corrections required to get the exact same values as the USNO. + +== Abbreviations + +Some abbreviations of terms are given in the list hereunder. Not all of +these abbreviations conform to a standard. + +*AP*- Assumed Position- where you are _or think you are_ based on +Latitude and Longitude. + +*COP*- Circle of Position (Circle of Equal Altitude) + +*Dec*- Declination- the angle in degrees of a celestial body above or +below the celestial equator. It's analogous to latitude on earth. + +*DR*- Dead Reckoning Position (from _Deduced Reckoning)_ + +*HA*- Hour Angle + +*GP*- Geographical Position of a heavenly body. It has two components; +declination and GHA. _Dec,_ or declination, mentioned above, is +analogous to latitude on earth. In Western longitudes a heavenly body's +GHA equals the longitude of the GP. In Eastern longitudes the GP equals +360° _minus_ GHA. If at a given point in time you were at the GP of a +celestial body it would be directly over your head- your zenith. + +*GMT/UT*- Greenwich Mean Time and Universal Time. For celestial +navigation work all observations are recorded in time and date based on +Greenwich, England. GMT is also known as “UT”. + +*GHA*- _Greenwich Hour Angle_- the angular distance in degrees between +Greenwich (0°) and a celestial object. GHA is always measured West of +Greenwich. + +*LHA*- _Local Hour Angle_- the horizontal angular distance in degrees +between the Ap (Assumed position) and a celestial object. It is always +measured West from the Ap. to the celestial object. + +*LOP*- Line of Position + +*MPP*- Most Probable Position + +*RA*- Right Ascension (star's SHA = 360^o^ _minus_ the star's RA) + +*SHA*- Sidereal Hour Angle + +*D-R-I-P-S* + +* *Dip* of the Horizon (function of eye height) +* *R*- Refraction (function of Ha, temperature and pressure) +* *IE*- Index Error (= or _minus_ Index Error of sextant) +* *PA*- Parallax in Altitude (function of HP and Ha) +* *SD*- Semi-Diameter. One half of the angular width of the Sun or Moon. + +*HP*- Horizontal Parallax + +*Hs*- Sextant Altitude- the initial, uncorrected, sextant measurement +from the horizon to a celestial body. Also known as _Height of sextant._ + +*Ha*- Apparent Altitude= Hs _minus_ Dipor _minus_ IC (Index +Correction) Also known as _Apparent Height._ + +*Ho*- Observed Altitude- final corrected sextant angular measurement. +Also known as _Height observed._ + +*Hc*- Computed Altitude. Also known as _Height computed._ + +*Int*- Intercept (=Ho or _minus_ Hc) Always subtract the smaller +figure from the larger. + +*Z*- Azimuth. Horizontal angle in degrees between True North and the +celestial body. + +== Resources + +=== Article: Generic Algorithm for Solving Celestial Navigation Fix Problems + +by Ming-Cheng Tsou, Ph.D., National Kaohsiung Marine University, Taiwan +POLISH MARITIME RESEARCH 3(75) 2012 Vol 19; pp. 53-59 +10.2478/v10012-012-0031-5 + +* link:{attachmentsdir}/cel_nav_generic_03_2012_06.pdf[Generic Algorithm for Solving Celestial Navigation Fix Problems (pdf 436kb)] + +ABSTRACT +In this work, we employ a genetic algorithm, from the field of +artificial intelligence, due to its superior search ability that mimics +the natural process of biological evolution. Unique encodings and +genetic operators designed in this study, in combination with the fix +principle of celestial circles of equal altitude in celestial +navigation, allow the rapid and direct attainment of accurate optimum +vessel position. Test results indicate that this method has more +flexibility, and avoids tedious and complicated computation and +graphical procedures. + +=== Article: New Computational Methods for Solving Problems of the Astronomical Vessel Position + +by Tien-Pen Hsu (1), Chih-Li Chen (2) and Jiang-Ren Chang (3) + +{empty}(1) Institute of Civil Engineering, National Taiwan University +(2) Institute of Merchant Marine, National Taiwan Ocean University +(3) Institute of Systems Engineering and Naval Architecture, National +Taiwan Ocean University +THE JOURNAL OF NAVIGATION (2005), 58, 315–335. The Royal Institute of +Navigation, doi: 10.1017/S0373463305003188, Printed in the United +Kingdom + +* link:{attachmentsdir}/cel_nav_new_computational_methods_04_2014_01_2_.pdf[New Computational Methods for Solving Problems of the Astronomical Vessel Position 11 pages (pdf 1.7mb)] +* link:{attachmentsdir}/cel-nav-new_computational_methods_for_solving_problems_of_vessel_position.pdf[New Computational Methods for Solving Problems of Vessel Position.pdf - 22 pages (pdf 305kb)] + +ABSTRACT +In this paper, a simplified and direct computation method formulated by +the fixed coordinate system and relative meridian concept in conjunction +with vector algebra is developed to deal with the classical problems of +celestial navigation. It is found that the proposed approach, the +Simultaneous Equal-altitude Equation Method (SEEM), can directly +calculate the Astronomical Vessel Position (AVP) without an additional +graphical procedure. The SEEM is not only simpler than the matrix method +but is also more straightforward than the Spherical Triangle Method +(STM). Due to tedious computation procedures existing in the commonly +used methods for determining the AVP, a set of optimal computation +procedures for the STM is also suggested. In addition, aimed at +drawbacks of the intercept method, an improved approach with a new +computation procedure is also presented to plot the celestial line of +position without the intercept. The improved approach with iteration +scheme is used to solve the AVP and validate the SEEM successfully. +Methods of solving AVP problems are also discussed in detail. Finally, a +benchmark example is included to demonstrate these proposed methods. + +=== Article: The Direct Fix of Latitude and Longitude from Two Observed Altitudes + +by Stanley W. Gery +Neptune Power Squadron, Huntington, New York, Received April 1996, +Revised December 1996 + +* link:{attachmentsdir}/cel_nav_direct_fix_v44n1-2.pdf[Direct Fix of Latitude and Longitude from Two Observed Altitudes (pdf 1mb)] + +ABSTRACT +This work presents a direct method for obtaining the latitude and +longitude of an observer from the observed altitudes of two celestial +bodies. No assumed position or dead-reckoned position or plotting is +required. Starting with the Greenwich hour angles, declinations, and +observed altitudes of each pair, the latitude and longitude of the two +points from which the observations must have been made are directly +computed. The algorithm is presented in the paper, along with its +derivation. Two different, inexpensive, programmable pocket electronic +calculators were programmed to execute the algorithm, and they do it in +under 30 s. The algorithm was also programmed to run on a personal +computer to examine the effect of the precision of the calculations on +the error in the results. The findings show that the use of eight +decimal places in the trigonometric computations provides acceptable +results. + +=== Article: Use of Rotation Matrices to Plot a Circle of Equal Altitude + +by A. Ruiz +Industrial engineer, Navigational Algorithms +Journal of Maritime Research, Vol. VIII. No. 3, pp.51-58, 2011 + +* link:{attachmentsdir}/cel_nav_use_of_rotation_matrices_to_plot_a_circle_of_equal_altitude.pdf[Download Rotation Matrices to Plot a Circle of Equal Altitude (pdf 3mb)] + +ABSTRACT +A direct method for obtaining the points of a circle of equal altitude +using the vector analysis as an alternative to the spherical +trigonometry is presented, and a solution where celestial navigation and +Global Navigation Satellite Systems are complementary and coexist is +proposed. + +=== Article: Vector Solution for the Intersection of two Circles of Equal Altitude + +by Andrés Ruiz González Navigational Algorithms, San Sebastián website: +https://sites.google.com/site/navigationalalgorithms/Home/papersnavigation[Navigational Algorithms] + +* link:{attachmentsdir}/cel_nav_vectorial_Equation_COP.en.pdf[Vector Solution for the Intersection of two Circles of Equal Altitude - (pdf 70kb)] + +ABSTRACT +A direct method for obtaining the two possible positions derived from +two sights using the vector analysis instead the spherical trigonometry +is presented. The geometry of the circle of equal altitude and of the +two body fixes is analyzed, and then the vector equation for +simultaneous sights is constructed. Also the running fix problem is +treated. Finally the C++ source code for the algorithm is provided in an +easy implementation, susceptible for being translated to other common +programming language + +=== Article: Determining the Position and Motion of a Vessel from Celestial Observations + +by George H. Kaplan, U.S. Naval Observatory + +link:{attachmentsdir}/cel_nav_determining_the_position_and_motion_of_a_vessel_fr.pdf[Determine Position & Motion of a Vessel] + +https://gkaplan.us/content/nav_algorithms.html[George Kaplan's Website and other Celestial Navigation Algorithms] + +http://fer3.com/mystic2017/Kaplan-Current-Directions.pdf[Current Directions in Navigation Technology - 2017 Mystic Seaport] GPS Spoofing Issues, Response: Inertial Navigation and Celestial Navigation. eLoran under study. + +ABSTRACT +Although many mathematical approaches to the celestial fix problem have +been published, all of them fundamentally assume a stationary observer. +Since this situation seldom occurs in practice, methods have been +developed that effectively remove the observer's motion from the problem +before a fix is determined. As an alternative, this paper presents a +development of celestial navigation that incorporates a moving observer +as part of its basic construction. This development allows recovery of +the information on the vessel's course and speed contained in the +observations. Thus, it provides the means for determining, from a +suitable ensemble of celestial observations, the values of all four +parameters describing a vessel's rhumb-line track across the earth: +latitude and longitude at a specified time, course, and speed. In many +cases, this technique will result in better fixes than traditional +methods. + +=== Article: Earth Rotation and Equatorial Coordinates + +Rick Fisher August 2010 "www.cv.nrao.edu/~rfisher/Ephemerides/earth_rot.html" dead link +* https://en.wikipedia.org/wiki/Equatorial_coordinate_system[Wikipedia to replace above dead link] +* https://www.nasa.gov/feature/nasa-study-solves-two-mysteries-about-wobbling-earth/[Two mysteries about wobbling earth] + +Abstract +“By the standards of modern astrometry, the earth is quite a wobbly +platform from which to observe the sky. The earth's rotation rate is not +uniform, its axis of rotation is not fixed in space, and even its shape +and relative positions of its surface locations are not fixed. For the +purposes of pointing a telescope to one-arcsecond accuracy, we need not +worry about shape and surface feature changes, but changes in the +orientation of the earth's rotation axis are very important. ” + +Discusses small errors in measurements and standards due to +perturbations of the earth. 2/28/2017 + +=== Article:Coordinates, Time and the Sky + +Coordinate Systems for Direction +John Thorstensen, Department of Physics and Astronomy, Dartmouth +College, Hanover, NH 03755 + +* link:{attachmentsdir}/cel-nav-coordinates-time-and-the-sky-by-john-thorstensen.pdf[Coordinates, Time and the Sky] + +This subject is fundamental to anyone who looks at the heavens; it is +aesthetically and mathematically beautiful, and rich in history… + +=== Book: A Short Guide to Celestial Navigation + +Copyright © 1997-2011 Henning Umland; PDF file can be found on this page +on his web site: + +* https://www.celnav.de/page2.htm + +Permission is granted to copy, distribute and/or modify this document +under the terms of the GNU Free Documentation License, Version 1.3 or +any later version published by the Free Software Foundation; with no +Invariant Sections, no Front-Cover Texts and no Back-Cover Texts. A copy +of the license is included in the section entitled “GNU Free +Documentation License”. Revised March 15, 2019, First Published May 20th, 1997 + +=== Book: The Sextant Handbook + +Copyright © 1986, 1992 Bruce A. Bauer +International Marine +ISBN 0-07-005219-0 + +* https://www.amazon.com/The-Sextant-Handbook-Bruce-Bauer/dp/0070052190[Amazon +web site: The Sextant Handbook, Adjustment, Repair, Use and History - +2nd Edition] + +The Sextant Handbook is dedicated to the premise that electronic +navigation devices, while too convenient to disregard, are too +vulnerable to rely on exclusively. The book is designed to make beginner +and expert alike conversant with this most beautiful and and functional +of the navigator's tools. + +=== Blog: Most Likely Position from 3 LOPs + +by Richard E. Rice and David Burch + +* https://www.starpath.com/celestial/celestial_title.htm[Starpath Celestial Navigation Resources] +* http://davidburchnavigation.blogspot.com/2016/07/most-likely-position-from-3-lops.html[Blog: Most likely position from 3 LOPs] + +This is an update of work done originally in 2012. We have used it in +our classes but not published it. We revive it here with new examples +and free apps for computation and experimentation with the solution. +Details of the derivations are published in another format. The +derivation applies to n LOPs with random and systematic variances. This +example is three only, addressing the navigator's famous “cocked hat” +problem. + +=== Online: Vanderbuilt AstroNavigation Course - Free + +* https://my.vanderbilt.edu/astronav/ +* https://my.vanderbilt.edu/astronav/review/ + +This free and open to the public, online course is made possible by The +Blended & Online Learning Design (BOLD) Fellows Program and is hosted by +Vanderbilt University. The BOLD Fellows program allows graduate +student-faculty teams to create course materials in STEM subject areas +rooted in good course design principles which benefit from the online +content delivery. + +This course serves to address the lack of widely-available instruction +in astronavigation. Specifically targeted here are the steps of +performing a sight reduction to obtain a terrestrial position using this +technique. These steps are explicitly illustrated after a brief overview +provides a solid context for their relevance. Difficult concepts such as +plotting on a navigational chart and the complexities of using of +navigational publications should be better served through this online +content delivery. + +Content created by: David D. Caudel, PhD. Candidate, Physics, Vanderbilt +University + +=== Online: Stellarium Astronomy Software + +* https://stellarium-web.org[Stellarium - Excellent web browser & App] +* https://github.com/Stellarium[Github Repository] + +Stellarium is a free open source planetarium for your computer. It shows +a realistic sky in 3D, just like what you see with the naked eye, +binoculars or a telescope. It is being used in planetarium projectors. +Just set your coordinates and go. + +=== Online: Cook Navigation Spreadsheet Software + +* https://www.cooknavigation.com/ + +Shawn Cook has provided a comprehensive Spreadsheet for Calculations: + +* Perpetual almanac displays basic data necessary for celestial navigation +* Sky chart showing traditional navigation bodies above the horizon +* Option to show all 1,535 stars in the basic FK5 catalogue +* Printable list of celestial bodies above the horizon +* Data series calculator for comparison/analysis +* Rise, set, transit and nautical twilight calculator +* DR and sight reduction calculator +* Position log +* Great circle route calculator including internal database of 26,571 cities worldwide +* Internal delta-T values for dates between 500 BC and AD 2030 +* Custom delta-T value fields for dates outside the above range +* Only 3.7MB + +== Celestial Navigation links + +In addition to the xref:#_videos_methodology_with_celestial_navigation_pi[Celestial Navigation videos by David Burch] listed above, https://www.starpath.com[Starpath Navigation] has a treasure trove for learners: + +* https://www.starpath.com/catalog/books/1887.htm[Starpath Navigation: Book: Celestial Navigation 2nd Edition ..a best seller] +* https://www.starpilotllc.com[StarPilot Programs: Celestial Navigation and Piloting: PC, Iphone, Ipad, TI89T calculator] + +*Other Links* + +* https://sites.google.com/site/navigationalalgorithms[Navigational Algorithms] Andres Ruiz +* https://sites.google.com/site/navigationalalgorithms/Home/papersnavigation[Navigational Papers] Andres Ruiz +* xref:opencpn-plugins:misc:celestial-nav.adoc[Supplementary Software: Celestial Navigation] + +*Lessons and Courses* + +* https://www.starpath.com/catalog/courses/courses_index.htm[Starpath Navigation: Online Home Study: Celestial Navigation] +* http://reednavigation.com/[Reed Celestial Navigation Course] +* http://www.seasources.net/celestial_navigation.htm[Seasource.net Online Celestial Navigation Lessons] Free E-learning prepare to pass the U.S.Coast Guard examination on Celestial Navigation +* https://navigation-spreadsheets.com[Interactive Spreadsheets for Celestial Navigation] Practical and Convenient + +*Other Resources* + +* https://thenauticalalmanac.com[TheNauticalAlmanac.com ] An extensive source for celestial navigation. Nautical Almanac PDF'S and other tools. +* https://www.thenauticalalmanac.com/Pub.%20No.%20249.html[The Nautical Almanac - Pub. No. 249] Organized for individual latitudes- Volumes 1, 2, 3 Epoch 2020 +* https://thenauticalalmanac.com/Pub.%20No.%20229.html[The Nautical Almanac - Pub. No. 229] Organized for individual latitudes- Volumes 1 through 6 +* https://thenauticalalmanac.com/2017_Bowditch-_American_Practical_Navigator.html[The Nautical Almanac - 2017 Bowditch American Practical Navigator] Organized for easy Chapter download +* http://www.fer3.com/arc/navbooks2.html[Bowditch 1995] and other Bowditch, also historical, navigation books online +* https://friendsofthevigilance.org.uk/Astron/Astron.html[Astron] Find Celestial Bodies: Enter lat,lon,time and date and then go to Planner tab at the bottom you will get a list of the bodies, Hc and Zn. +* https://www.celnav.de/page4.htm[Good Celestial Navigation Links] Henning Umland's website +* http://www.ephemeris.com/ephemeris.php[Ephemerius Calculations] +* https://clockwk.com/apps/almanac/?OT=N&B=MS-p*&D=24_Aug_2021&Z=UT&hri=3&df=.m&Lat=&NS=N&Lon=&EW=W&sys=...[Reed Nautical Almanac Data] +* https://astronomy.swin.edu.au/cosmos/e/equatorial+coordinate+system[Equatorial Coordinate System - Cosmos] +* http://www.siranah.de/html/sail040a.htm[Erik's Nautical Web Pages] Good Cel Nav, Complete, Plane and Spherical Trigonometry +* http://www.backbearing.com/index.html[Backbearing Astronavigation] Good Cel Nav, almanac, sight reduction tables, spreadsheet +* Website under revision - aa.usno.navy.mil/data/docs/celnavtable.php [Celestial Navigation Data for Assumed Position and Time] + +*Vulnerability of GPS* + +* https://digitalcommons.odu.edu/ots_masters_projects/41/[Future of Celestial Navigation and the Ocean-Going Military Navigator Navigator by Michael Garvin, Old Dominion University 2010 (Pdf 270kb)] *_points out the vulnerability of GPS_* +* https://www.naval-technology.com/features/featurecelestial-navigation-ancient-craft-reinstated-as-cyber-warfare-looms-large-4809513/[Celestial navigation: navy resurrects ancient craft to thwart hackers 2016] April 2013, Dr Steve Bell, Head of the HM Nautical Almanac Office at the UK Hydrographic Office (UKHO), revealed that, according to a two-year government study, a 1.5 watt transmitter can render GPS unavailable for 30km. + +*GPS Anti Spoof* + +* http://reednavigation.com/GPSAntiSpoof/[Reed Navigation Anti Spoof Software] + +== Test Data: Examples + +* link:{attachmentsdir}/textbook_data.pdf[Example worksheet: textbook_data.pdf] Observation of 4 stars for fix calculation +* link:{attachmentsdir}/nautical_almanac_alt_reduction.pdf[Alternative worksheet: nautical_almanac_alt_reduction.pdf] Observation of Sun, Moon, Venus and Polaris for altitude reduction only +* link:{attachmentsdir}/sights.xml.doc[Sights.xml.doc file for test example] Please remove the ".doc" use to replace sites.xml in celestial_navigation_pi/data directory. +* http://www.mediafire.com/file/0c13tih7hm1pdhq/Celestial+Navigation+Example.zip[Celestial Navigation Example (download 633kb)] Problem, solution with Andres program, import GPX into Opencpn. by Andres Ruiz + +Many thanks to Sean who has advanced the work of others and NAV for his technical review of the plugin and his generous assistance in preparing this documentation. + +== Kubek's Sights to test Accuracy of the Plugin + +image::astro_capture_all_17_sights.jpg["astro capture all 17 sights",width=500,link="_images/astro_capture_all_17_sights.jpg"] + +Files to use: + +* link:{attachmentsdir}/my_astro_sights.xml.doc[Sights.xml File] +* link:{attachmentsdir}/my_astro_sight_2017.txt.doc[My Astro Sight 2017] +* link:{attachmentsdir}/track_with_astro.zip[Track with Sighting Waypoints] + +Please remove ”.doc“ and “my_astro_” from “my_astro_sights.xml” and place in your programdata/opencpn/plugins/celestial_navigation/ directory. Also please remove ”.doc“ from “my_astro_sight_2017.txt.doc”. + +=== Kubek's Notes + +*Mer Pass* is Meridian passages of the Sun (LL) or The Noon Sight (RYA Astronavigation Chapter 5). + +All my sights are NOT in the same time so you need to do “running fix”(maybe somebody can improve this plugin to have build in drawing “running fix”). For all 17 sights, I first calculated on paper during passage using Sight Reduction Tables Almanac for 2017 and to compere it, I do it again using Long Term Almanac 2000-2050 - Kolbe (which isgreat). Lastly I put my sight into plugin to check it and it looks OK. Same as my paper work (except Mer Pass). + +What I would like to see as an option to this plugin is *Meridian passage of the Sun*. I used those sight as Sun LL in the plugin but it is NOT as precise as could be (Astro17 - I have on the paper 18°10'N [on GPS it was 18°10,6'N] - plugin draw circle in 18°12.9'N - the reason is that time of the *Mer Pass* of the Sun is very difficult to measure precisely). + +== Testing of Celestial Navigation (Again) + +A Simplified Example + +The menu selection *Sight Highlighted > Edit > Sight > FIND* is used to help find the Altitude, Azimuth or the celestial bodies, and currently *_does not calculate any of the Parameter corrections_*. Indeed, these calculations would have to be the mathmatical reverse of those found in the file sightdialog.cpp (Lines 151-159) and would have to be done in reverse order. + +*_The reason this is important, is if you use this armchair method, the circles of position will not be exact, so your fix will not be as accurate as if you actually take a sight_*. + +We are going to use the all the same times and locations for the sights. Everything that can be set the same will be. + +=== Simplification: Parameters that are always the same: + +* Clock Offset =0 +* Time: Boston Time (UTC-5): Oct 10, 2017, 13:00 so UTC 10/10/17 18:00 +* DR Shift: Distance=0 Bearing=0 +* Parameters: Eye height=2.0 m Temp 10 c, Pressure=1010, Index Error 0 min +* Latitude: 42.35, Longitude to -71.1 + +=== What is different: + +Enter these stars and values Using “Find” and Altitude set for the Star and enter the Lat/Long above: + +* Star - Altitude Entered +* Alkaid 79.501993 +* Kochab 58.133196 +* Arcturus 66.507224 +* Sun 36.888867 + +I suppose I should go up to the rooftop to use my sextant and learn how to take sights again. But that is not the purpose here. We want to check Celestial_Navigation_pi. So this an armchair method that I think may be ok using the “Find” Button. (Short Answer: I think the problem was the default setting of “Clock Offset: -10000 seconds”! This should be set at default=0 IMHO) + +*Here is a sample test* + +* link:{attachmentsdir}/sights.xml.doc[sight.xml.doc] + +file that you can use if you would like. Remove the ”.doc“ please. You can rename your own sights.xml file for reuse later, and load this one….for Windows Users this file is in _C:\ProgramData\opencpn\plugins\celestial_navigation_. + +=== Process + +1. In OpenCPN with Celestial_Navigation_pi “Enabled”, first *Locate the Boat* + +2. The *Own Boat* location is used for the Sight > “Find” function. “*Find*” will be used to get '_altitude_' or '_azimuth_' for a given _celestial body_, at _the boat's location or a location you entered_ at a _UTC time_. + +3. Right Click, Drop a waypoint and then Right click on WP, pick Properties set lat 42.35 long -71.10 Boston,Ma + +4. Try to Right-click “*Move the boat*” to the exact location of the waypoint. (I would really appreciate a Right-click “Move to lat\long” feature. + +5. *Clock Offset* Button. Check that Clock Offset = “0” + +6. In Cel_Nav Pick “*New*“ + +image::cn-03-time.jpg["cn-03-time",width=500,link="_images/cn-03-time.jpg"] + +{empty}7. Time Tab: Boston Time (UTC-5): Oct 10, 2017, 13:00 so UTC 10/10/17 18:00 + +image::cn-04-drshift.jpg["cn-04-drshift",width=500,link="_images/cn-04-drshift.jpg"] + +{empty}8. DR Shift: Distance=0 Bearing=0 + +image::cn-05-config.jpg["cn-05-config",width=500,link="_images/cn-05-config.jpg"] + +{empty}9. Config; Set color wanted. + +image::cn-06-parameters.jpg["cn-06-parameters",width=500,link="_images/cn-06-parameters.jpg"] + +{empty}10. Parameters; Eye height=2.0 meters; Temp 10 c.; Pressure=1010; Index Error 0 min. Click Set as Defaults. + +image::cn-07-sight-sun.jpg["cn-07-sight-sun",width=500,link="_images/cn-07-sight-sun.jpg"] + +{empty}11. *Sight Tab*: Type=Altitude; *Celestial Body=Sun*; Limb=Lower; then pick “*Find*“ + +{empty}12. Make sure to change Latitude: 42.35, Longitude to -71.1 (Would very much like to Right Click > Move Boat Lat/Long!) + +{empty}13. Read Altitude of Sun on 10/10/17 UTC 1800 = 36.888867, Select “Done” + +{empty}14. Enter “*Degrees*” 36.888867, make the Minutes 0. Hit *OK*. + +image::cn-08-sight-arcturus.jpg["cn-08-sight-arcturus",width=500,link="_images/cn-08-sight-arcturus.jpg"] + +{empty}16. *Sight Tab*:Then enter another Type= Altitude *Celestial Body=Arcturus* Limb=Lower, check that the Time, DR Shift, Config are the same. Hit Find. + +{empty}17. Enter Lat=42.35 Long=-71.1 See Altitude of Arcturus UTC 10/10/17 18000 is 66.507224 Hit *Done*. + +image::cn-09-sight-arturus-entered.jpg["cn-09-sight-arturus-entered",width=500,link="_images/cn-09-sight-arturus-entered.jpg"] + +{empty}18. Enter Degrees=66.507224, make Minutes=0. Hit *OK*. + +image::cn-10-sight-arcturus-calc.jpg["cn-10-sight-arcturus-calc",width=500,link="_images/cn-10-sight-arcturus-calc.jpg"] + +{empty}15. Arcturus Calculation Page (Printable) + +{empty}19. Found _Clock Offset= -10000 or something_, set it at _0_ then screwed around for awhile checking other things. _Sights changed position, better…_ *This was definitely a problem from earlier!* + +image::cn-11-sight-kochab.jpg["cn-11-sight-kochab",width=500,link="_images/cn-11-sight-kochab.jpg"] + +{empty}20. *Sight Tab*:Then enter another Type= Altitude *Celestial Body=Kochab* Limb=Lower, check that the Time, DR Shift, Config are the same. Hit Find. + +{empty}21. Enter Lat=42.35 Long=-71.1 See Altitude of Kochab UTC 10/10/17 18000 is 58.133196 Hit *Done*. + +image::cn-12-sight-kochab-calc.jpg["cn-12-sight-kochab-calc",width=500,link="_images/cn-12-sight-kochab-calc.jpg"] + +{empty}22. Enter Degrees=58.133196, make Minutes=0. Hit *OK*. + +image::cn-13-fix1-42nm.jpg["cn-13-fix1-42nm",width=500,link="_images/cn-13-fix1-42nm.jpg"] + +{empty}23. *Fix* Then find Fix. The fix is 41 nm off. To many circles east to west. + +image::cn-14-sight-alkaid.jpg["cn-14-sight-alkaid",width=500,link="_images/cn-14-sight-alkaid.jpg"] + +{empty}24. *Sight Tab*:Pick “New” and set *Celestial Body=Alkiaid*. Check all Tabs set correctly. Pick “*Find*“ + +{empty}25. Enter Lat=42.35 Long=-71.1 See Altitude of Alkaid UTC 10/10/17 18000 is 79.501993 Hit *Done*. + +image::cn-15-fix2-32nm.jpg["cn-15-fix2-32nm",width=500,link="_images/cn-15-fix2-32nm.jpg"] + +{empty}26. *Fix* Hit Fix new red X draw and it is 31 nm away. Better. + +27 *Turn off the Sun* as it is the worst sighting compared to the other 3 by clicking on the “eye”. Better. + +image::cn-16-fix3-8nm-sun-off.jpg["cn-16-fix3-8nm-sun-off",width=500,link="_images/cn-16-fix3-8nm-sun-off.jpg"] + +{empty}28. *Fix* Hit Fix and new red X drawn and it is *8nm away*. + +image::fix_42-21.1_-71-6.1.jpg["fix_42-21.1_-71-6.1",width=500,link="_images/fix_42-21.1_-71-6.1.jpg"] + +link:{attachmentsdir}/sights.xml.rick2.doc[sights.xml.rick2.doc File] Please remove ".rick2.doc" for use. + +{empty}29. Later added more sights and selected the 4 best ones and hit *Fix* and got about .6nm away. + +NOTE: The altitude & azimuth given with the “FIND” button is without the Parameter's Tab corrections, so it will not be as accurate as an actual Sight. diff --git a/manual/site.yml b/manual/site.yml new file mode 100644 index 0000000..77c4e05 --- /dev/null +++ b/manual/site.yml @@ -0,0 +1,17 @@ +site: + title: Celestial_Navigation + url: https://nowhere.net + start_page: celestial_navigation:ROOT:index.adoc +content: + sources: + - url: .. + start_path: manual + branches: HEAD + edit_url: https://github.com/opencpn-manuals/celestial_navigation_pi/edit/master/{path} +ui: + bundle: + url: https://gitlab.com/leamas/antora-ui-default/-/raw/master/latest/ui-bundle.zip + snapshot: true +output: + dir: ./docs + clean: true \ No newline at end of file diff --git a/manual/ui-bundle.zip b/manual/ui-bundle.zip new file mode 100644 index 0000000..2639655 Binary files /dev/null and b/manual/ui-bundle.zip differ diff --git a/mingw/fedora/README.md b/mingw/fedora/README.md new file mode 100644 index 0000000..033fb59 --- /dev/null +++ b/mingw/fedora/README.md @@ -0,0 +1,21 @@ +What's here? +============ + +Tools to build a windows 32-bit executable using the mingw toolchain. + +How? +==== + $ sudo dnf copr enable /opencpn-mingw + $ sudo dnf builddep opencpn-deps.spec + $ cd ../.. + $ rm -rf build; mkdir build + $ cd build; + $ cmake -DCMAKE_TOOLCHAIN_FILE=../mingw/fedora/toolchain.cmake .. + $ make + $ make package + +Notes: +===== +The build requires updated packages, notably wx3GTK, available at +https://copr.fedorainfracloud.org/coprs/leamas/opencpn-mingw. +The copr enable command above sets up access to this repo. diff --git a/mingw/fedora/opencpn-deps.spec b/mingw/fedora/opencpn-deps.spec new file mode 100644 index 0000000..2c1892c --- /dev/null +++ b/mingw/fedora/opencpn-deps.spec @@ -0,0 +1,69 @@ +Name: opencpn-deps +Version: 0.1 +Release: 1%{?dist} +Summary: Empty package with opencpn build dependencies + +License: MIT +URL: https://github.com/leamas/opencpn + +BuildRequires: binutils +BuildRequires: cmake +BuildRequires: gettext +BuildRequires: git +BuildRequires: make +BuildRequires: mingw-binutils-generic +BuildRequires: mingw-filesystem-base +BuildRequires: mingw32-binutils +BuildRequires: mingw32-bzip2 +BuildRequires: mingw32-cairo +BuildRequires: mingw32-curl +BuildRequires: mingw32-expat +BuildRequires: mingw32-filesystem +BuildRequires: mingw32-fontconfig +BuildRequires: mingw32-freetype +BuildRequires: mingw32-gcc +BuildRequires: mingw32-gcc-c++ +BuildRequires: mingw32-cpp +BuildRequires: mingw32-gettext +BuildRequires: mingw32-headers +BuildRequires: mingw32-glib2 +BuildRequires: mingw32-gtk2 +BuildRequires: mingw32-libarchive +BuildRequires: mingw32-libffi +BuildRequires: mingw32-libpng +BuildRequires: mingw32-libtiff +BuildRequires: mingw32-libxml2 +BuildRequires: mingw32-nsiswrapper +BuildRequires: mingw32-openssl +BuildRequires: mingw32-pcre +BuildRequires: mingw32-pixman +BuildRequires: mingw32-sqlite +BuildRequires: mingw32-win-iconv +BuildRequires: mingw32-wxWidgets3 >= 3.0.2 +BuildRequires: mingw32-xz-libs +BuildRequires: p7zip +BuildRequires: wget + +%description + +Empty package used to catch build dependencies for opencpn using +the mingw tools to create a Windows 32-bit executable + +Use dnf builddep opencpn-deps.spec to install the dependencies. + +%prep + + +%build + + +%install + + +%files +%doc COPYING + + +%changelog +* Fri Mar 01 2019 Alec Leamas - 0.1-1 +- Initial release diff --git a/mingw/fedora/toolchain.cmake b/mingw/fedora/toolchain.cmake new file mode 100644 index 0000000..96e95bf --- /dev/null +++ b/mingw/fedora/toolchain.cmake @@ -0,0 +1,18 @@ +# the name of the target operating system +SET(CMAKE_SYSTEM_NAME Windows) + +# which compilers to use for C and C++ +SET(CMAKE_C_COMPILER i686-w64-mingw32-gcc) +SET(CMAKE_CXX_COMPILER i686-w64-mingw32-c++) +SET(CMAKE_RC_COMPILER i686-w64-mingw32-windres) + +# here is the target environment located +SET(CMAKE_FIND_ROOT_PATH + /usr/i686-w64-mingw32i;/usr/i686-w64-mingw32/sys-root/mingw) + +# adjust the default behaviour of the FIND_XXX() commands: +# search headers and libraries in the target environment, search +# programs in the host environment +set(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER) +set(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY) +set(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY) diff --git a/mingw/readme.txt b/mingw/readme.txt new file mode 100644 index 0000000..d612dc7 --- /dev/null +++ b/mingw/readme.txt @@ -0,0 +1,7 @@ +This directory structure is used by the mingw build process script file: +circleci-build-mingw.sh + +If new dependencies for the build need to be added then they should go in the file: +mingw/fedora/opencpn-deps.spec + +These dependencies can be subtally different from the other spec files being used diff --git a/msvc/win_deps.bat b/msvc/win_deps.bat new file mode 100644 index 0000000..67d2469 --- /dev/null +++ b/msvc/win_deps.bat @@ -0,0 +1,113 @@ +:: Install build dependencies. Requires a working choco installation, +:: see https://docs.chocolatey.org/en-us/choco/setup. +:: +:: Usage: +:: win_deps.bat [wx32] +:: +:: Arguments: +:: wx32: +:: If present install dependencies for building against +:: wxWidgets 3.2. If non-existing or anything but wx32 +:: build using 3.1 +:: Output: +:: cache\wx-config.bat: +:: Script which set wxWidgets_LIB_DIR and wxWidgets_ROOT_DIR +:: +:: Initial run will do choco installs requiring administrative +:: privileges. +:: +:: NOTE: at the very end, this script runs refreshenv. This clears the +:: process's PATH and replaces it with a fresh copy from the +:: registry. This means that any "set PATH=..." is lost for caller. + +:: Install the pathman tool: https://github.com/therootcompany/pathman +:: Fix PATH so it can be used in this script +:: + +@echo off +echo In win_deps + +setlocal enabledelayedexpansion + +if not exist %SCRIPTDIR%\..\cache ( mkdir %SCRIPTDIR%\..\cache ) +set "CONFIG_FILE=%SCRIPTDIR%\..\cache\wx-config.bat" +set EXTRA_PATH= + +git --version > nul 2>&1 +if errorlevel 1 ( + set "GIT_HOME=C:\Program Files\Git" + if not exist "!GIT_HOME!" choco install -y git +) +echo done git +:: Install choco cmake and add it's persistent user path element +:: +cmake --version > nul 2>&1 +if errorlevel 1 ( + set "CMAKE_HOME=C:\Program Files\CMake" + choco install -y --no-progress cmake + set "EXTRA_PATH=%CMAKE_HOME%\bin;%EXTRA_PATH%" +) + +:: Install choco poedit and add it's persistent user path element +:: +set "POEDIT_HOME=C:\Program Files (x86)\Poedit\GettextTools" +if not exist "%POEDIT_HOME%" (choco install -y poedit) +dir "%POEDIT_HOME%" +set "EXTRA_PATH=%POEDIT_HOME%\bin;%EXTRA_PATH%" + +:: Update required python stuff +:: +echo doing python +python --version > nul 2>&1 && python -m ensurepip > nul 2>&1 +if errorlevel 1 choco install -y python +python --version +python -m ensurepip +python -m pip install --upgrade pip +python -m pip install -q setuptools wheel +python -m pip install -q cloudsmith-cli +python -m pip install -q cryptography + +:: Install pre-compiled wxWidgets and other DLL; add required paths. +:: +set SCRIPTDIR=%~dp0 +if "%~1"=="wx32" ( + set "WXWIN=%SCRIPTDIR%..\cache\wxWidgets-3.2.1" + set "wxWidgets_ROOT_DIR=!WXWIN!" + set "wxWidgets_LIB_DIR=!WXWIN!\lib\vc14x_dll" + set "TARGET_TUPLE=msvc-wx32" +) else ( + set "WXWIN=%SCRIPTDIR%..\cache\wxWidgets-3.1.2" + set "wxWidgets_ROOT_DIR=!WXWIN!" + set "wxWidgets_LIB_DIR=!WXWIN!\lib\vc_dll" + set "TARGET_TUPLE=msvc" +) + +:: Add settings to CONFIG_FILE to allow them to be set in the calling batch file +echo set "EXTRA_PATH=%EXTRA_PATH%" > %CONFIG_FILE% +echo set "wxWidgets_ROOT_DIR=%wxWidgets_ROOT_DIR%" >> %CONFIG_FILE% +echo set "wxWidgets_LIB_DIR=%wxWidgets_LIB_DIR%" >> %CONFIG_FILE% +echo set "TARGET_TUPLE=%TARGET_TUPLE%" >> %CONFIG_FILE% + +if not exist "%WXWIN%" ( + wget --version > nul 2>&1 || choco install -y wget + if "%~1"=="wx32" ( + echo Downloading 3.2.1 + if not exist %SCRIPTDIR%..\cache\wxWidgets-3.2.1 ( + mkdir %SCRIPTDIR%..\cache\wxWidgets-3.2.1 + ) + set "GITHUB_DL=https://github.com/wxWidgets/wxWidgets/releases/download" + wget -nv !GITHUB_DL!/v3.2.1/wxMSW-3.2.1_vc14x_Dev.7z + 7z x -o%SCRIPTDIR%..\cache\wxWidgets-3.2.1 wxMSW-3.2.1_vc14x_Dev.7z + wget -nv !GITHUB_DL!/v3.2.1/wxWidgets-3.2.1-headers.7z + 7z x -o%SCRIPTDIR%..\cache\wxWidgets-3.2.1 wxWidgets-3.2.1-headers.7z + ) else ( + echo Downloading 3.1.2 + wget -O wxWidgets-3.1.2.7z -nv ^ + https://download.opencpn.org/s/E2p4nLDzeqx4SdX/download + 7z i > nul 2>&1 || choco install -y 7zip + 7z x wxWidgets-3.1.2.7z -o%WXWIN% + ) +) +dir cache +type "%CONFIG_FILE%" +refreshenv diff --git a/opencpn-libs b/opencpn-libs new file mode 160000 index 0000000..c1d8263 --- /dev/null +++ b/opencpn-libs @@ -0,0 +1 @@ +Subproject commit c1d82631756056437edc58235d9e1ff68b46ddf3 diff --git a/po/POTFILES.in b/po/POTFILES.in index 6adac6f..0b28065 100644 --- a/po/POTFILES.in +++ b/po/POTFILES.in @@ -1,12 +1,35 @@ +src/astrolabe/astrolabe.hpp +src/astrolabe/calendar.cpp +src/astrolabe/dicts.cpp +src/astrolabe/dynamical.cpp +src/astrolabe/elp2000.cpp +src/astrolabe/equinox.cpp +src/astrolabe/globals.cpp +src/astrolabe/nutation.cpp +src/astrolabe/riseset.cpp +src/astrolabe/sun.cpp +src/astrolabe/util.cpp +src/astrolabe/vsop87d.cpp +src/geomag/geomag.c src/CelestialNavigationDialog.cpp -src/CelestialNavigationDialog.h src/CelestialNavigationUI.cpp -src/CelestialNavigationUI.h +src/SightDialog.cpp +src/Sight.cpp +src/icons.cpp src/FindBodyDialog.cpp +src/FixDialog.cpp +src/ClockCorrectionDialog.cpp +src/geodesic.c +src/transform_star.cpp +src/epv00.cpp +src/celestial_navigation_pi.cpp +src/celestial_navigation_pi.h +src/CelestialNavigationDialog.h +src/CelestialNavigationUI.h +src/ClockCorrectionDialog.h src/FindBodyDialog.h -src/Sight.cpp +src/FixDialog.h +src/geodesic.h +src/icons.h src/Sight.h -src/SightDialog.cpp src/SightDialog.h -src/celestial_navigation_pi.cpp -src/celestial_navigation_pi.h diff --git a/po/POTFILES.in.test b/po/POTFILES.in.test new file mode 100644 index 0000000..0b28065 --- /dev/null +++ b/po/POTFILES.in.test @@ -0,0 +1,35 @@ +src/astrolabe/astrolabe.hpp +src/astrolabe/calendar.cpp +src/astrolabe/dicts.cpp +src/astrolabe/dynamical.cpp +src/astrolabe/elp2000.cpp +src/astrolabe/equinox.cpp +src/astrolabe/globals.cpp +src/astrolabe/nutation.cpp +src/astrolabe/riseset.cpp +src/astrolabe/sun.cpp +src/astrolabe/util.cpp +src/astrolabe/vsop87d.cpp +src/geomag/geomag.c +src/CelestialNavigationDialog.cpp +src/CelestialNavigationUI.cpp +src/SightDialog.cpp +src/Sight.cpp +src/icons.cpp +src/FindBodyDialog.cpp +src/FixDialog.cpp +src/ClockCorrectionDialog.cpp +src/geodesic.c +src/transform_star.cpp +src/epv00.cpp +src/celestial_navigation_pi.cpp +src/celestial_navigation_pi.h +src/CelestialNavigationDialog.h +src/CelestialNavigationUI.h +src/ClockCorrectionDialog.h +src/FindBodyDialog.h +src/FixDialog.h +src/geodesic.h +src/icons.h +src/Sight.h +src/SightDialog.h diff --git a/po/ar_SA.po b/po/ar_SA.po index 86d32e5..d5a177f 100644 --- a/po/ar_SA.po +++ b/po/ar_SA.po @@ -2,403 +2,467 @@ msgid "" msgstr "" "Project-Id-Version: opencpn\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-02-28 14:10-0300\n" -"PO-Revision-Date: 2018-03-03 08:22-0500\n" -"Last-Translator: nohal \n" +"POT-Creation-Date: 2021-10-27 22:15+0200\n" +"PO-Revision-Date: 2023-10-04 18:32\n" +"Last-Translator: \n" "Language-Team: Arabic\n" "Language: ar_SA\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=6; plural=(n==0 ? 0 : n==1 ? 1 : n==2 ? 2 : n%100>=3 && n%100<=10 ? 3 : n%100>=11 && n%100<=99 ? 4 : 5);\n" -"X-Generator: crowdin.com\n" "X-Crowdin-Project: opencpn\n" +"X-Crowdin-Project-ID: 49843\n" "X-Crowdin-Language: ar\n" "X-Crowdin-File: /plugins/celestial_navigation_pi/po/celestial_navigation_pi.pot\n" +"X-Crowdin-File-ID: 108\n" -#: src/CelestialNavigationDialog.cpp:123 src/CelestialNavigationUI.cpp:132 +#: src\CelestialNavigationDialog-2.3.5.1-no-android.cpp:149 +#: src\CelestialNavigationDialog-2.3.5.2-android.cpp:150 +#: src\CelestialNavigationDialog-partial-android.cpp:149 +#: src\CelestialNavigationDialog.cpp:150 src\CelestialNavigationUI.cpp:137 msgid "Type" msgstr "" -#: src/CelestialNavigationDialog.cpp:124 +#: src\CelestialNavigationDialog-2.3.5.1-no-android.cpp:150 +#: src\CelestialNavigationDialog-2.3.5.2-android.cpp:151 +#: src\CelestialNavigationDialog-partial-android.cpp:150 +#: src\CelestialNavigationDialog.cpp:151 msgid "Body" msgstr "" -#: src/CelestialNavigationDialog.cpp:125 -msgid "Time (UTC)" +#: src\CelestialNavigationDialog-2.3.5.1-no-android.cpp:151 +#: src\CelestialNavigationDialog-2.3.5.2-android.cpp:152 +#: src\CelestialNavigationDialog-partial-android.cpp:151 +#: src\CelestialNavigationDialog.cpp:152 src\CelestialNavigationUI.cpp:328 +msgid "Time (UT)" msgstr "" -#: src/CelestialNavigationDialog.cpp:126 src/CelestialNavigationUI.cpp:179 +#: src\CelestialNavigationDialog-2.3.5.1-no-android.cpp:152 +#: src\CelestialNavigationDialog-2.3.5.2-android.cpp:153 +#: src\CelestialNavigationDialog-partial-android.cpp:152 +#: src\CelestialNavigationDialog.cpp:153 src\CelestialNavigationUI.cpp:184 msgid "Measurement" msgstr "" -#: src/CelestialNavigationDialog.cpp:127 src/CelestialNavigationUI.cpp:376 +#: src\CelestialNavigationDialog-2.3.5.1-no-android.cpp:153 +#: src\CelestialNavigationDialog-2.3.5.2-android.cpp:154 +#: src\CelestialNavigationDialog-partial-android.cpp:153 +#: src\CelestialNavigationDialog.cpp:154 src\CelestialNavigationUI.cpp:381 msgid "Color" msgstr "" -#: src/CelestialNavigationDialog.cpp:193 -msgid "Failed to load file." +#: src\CelestialNavigationDialog-2.3.5.1-no-android.cpp:266 +#: src\CelestialNavigationDialog-2.3.5.2-android.cpp:272 +#: src\CelestialNavigationDialog-partial-android.cpp:266 +#: src\CelestialNavigationDialog.cpp:272 src\celestial_navigation_pi.cpp:177 +msgid "Failed to load file: " msgstr "" -#: src/CelestialNavigationDialog.cpp:198 +#: src\CelestialNavigationDialog-2.3.5.1-no-android.cpp:271 +#: src\CelestialNavigationDialog-2.3.5.2-android.cpp:277 +#: src\CelestialNavigationDialog-partial-android.cpp:271 +#: src\CelestialNavigationDialog.cpp:277 msgid "Invalid xml file" msgstr "" -#: src/CelestialNavigationDialog.cpp:250 +#: src\CelestialNavigationDialog-2.3.5.1-no-android.cpp:323 +#: src\CelestialNavigationDialog-2.3.5.2-android.cpp:329 +#: src\CelestialNavigationDialog-partial-android.cpp:323 +#: src\CelestialNavigationDialog.cpp:329 msgid "Unrecognized xml node" msgstr "" -#: src/CelestialNavigationDialog.cpp:260 -msgid "Weather Routing" +#: src\CelestialNavigationDialog-2.3.5.1-no-android.cpp:332 +#: src\CelestialNavigationDialog-2.3.5.1-no-android.cpp:392 +#: src\CelestialNavigationDialog-2.3.5.1-no-android.cpp:532 +#: src\CelestialNavigationDialog-2.3.5.2-android.cpp:338 +#: src\CelestialNavigationDialog-2.3.5.2-android.cpp:398 +#: src\CelestialNavigationDialog-2.3.5.2-android.cpp:538 +#: src\CelestialNavigationDialog-partial-android.cpp:332 +#: src\CelestialNavigationDialog-partial-android.cpp:392 +#: src\CelestialNavigationDialog-partial-android.cpp:532 +#: src\CelestialNavigationDialog.cpp:338 src\CelestialNavigationDialog.cpp:398 +#: src\CelestialNavigationDialog.cpp:538 src\Sight.cpp:1120 +#: src\Sight.cpp.bak:1121 src\celestial_navigation_pi.cpp:95 +#: src\celestial_navigation_pi.cpp:99 +msgid "Celestial Navigation" msgstr "" -#: src/CelestialNavigationDialog.cpp:320 +#: src\CelestialNavigationDialog-2.3.5.1-no-android.cpp:391 +#: src\CelestialNavigationDialog-2.3.5.2-android.cpp:397 +#: src\CelestialNavigationDialog-partial-android.cpp:391 +#: src\CelestialNavigationDialog.cpp:397 msgid "Failed to save xml file: " msgstr "" -#: src/CelestialNavigationDialog.cpp:321 src/CelestialNavigationDialog.cpp:466 -#: src/Sight.cpp:1099 src/celestial_navigation_pi.cpp:99 -#: src/celestial_navigation_pi.cpp:152 -msgid "Celestial Navigation" -msgstr "" - -#: src/CelestialNavigationDialog.cpp:351 +#: src\CelestialNavigationDialog-2.3.5.1-no-android.cpp:424 +#: src\CelestialNavigationDialog-2.3.5.2-android.cpp:430 +#: src\CelestialNavigationDialog-partial-android.cpp:424 +#: src\CelestialNavigationDialog.cpp:430 msgid "Time Correction" msgstr "" -#: src/CelestialNavigationDialog.cpp:409 +#: src\CelestialNavigationDialog-2.3.5.1-no-android.cpp:473 +#: src\CelestialNavigationDialog-2.3.5.2-android.cpp:479 +#: src\CelestialNavigationDialog-partial-android.cpp:473 +#: src\CelestialNavigationDialog.cpp:479 msgid "Sun" msgstr "" -#: src/CelestialNavigationDialog.cpp:465 +#: src\CelestialNavigationDialog-2.3.5.1-no-android.cpp:531 +#: src\CelestialNavigationDialog-2.3.5.2-android.cpp:537 +#: src\CelestialNavigationDialog-partial-android.cpp:531 +#: src\CelestialNavigationDialog.cpp:537 msgid "Are you sure you want to delete all sights?" msgstr "" -#: src/CelestialNavigationDialog.cpp:510 +#: src\CelestialNavigationDialog-2.3.5.1-no-android.cpp:582 +#: src\CelestialNavigationDialog-2.3.5.2-android.cpp:588 +#: src\CelestialNavigationDialog-partial-android.cpp:582 +#: src\CelestialNavigationDialog.cpp:588 msgid "Celestial_Navigation_Information.html" msgstr "" -#: src/CelestialNavigationDialog.cpp:516 -msgid "Show" +#: src\CelestialNavigationDialog-2.3.5.1-no-android.cpp:589 +#: src\CelestialNavigationDialog-2.3.5.2-android.cpp:595 +#: src\CelestialNavigationDialog-partial-android.cpp:589 +#: src\CelestialNavigationDialog.cpp:595 src\CelestialNavigationUI.cpp:55 +msgid "Hide" msgstr "" -#: src/CelestialNavigationDialog.cpp:516 src/CelestialNavigationUI.cpp:58 -msgid "Hide" +#: src\CelestialNavigationDialog-2.3.5.1-no-android.cpp:589 +#: src\CelestialNavigationDialog-2.3.5.2-android.cpp:595 +#: src\CelestialNavigationDialog-partial-android.cpp:589 +#: src\CelestialNavigationDialog.cpp:595 +msgid "Show" msgstr "" -#: src/CelestialNavigationUI.cpp:40 +#: src\CelestialNavigationUI.cpp:40 msgid "New" msgstr "" -#: src/CelestialNavigationUI.cpp:43 -msgid "Edit" +#: src\CelestialNavigationUI.cpp:43 src\CelestialNavigationUI.h:286 +msgid "Fix" msgstr "" -#: src/CelestialNavigationUI.cpp:46 -msgid "Delete" +#: src\CelestialNavigationUI.cpp:46 +msgid "Duplicate" msgstr "" -#: src/CelestialNavigationUI.cpp:49 -msgid "Delete All" +#: src\CelestialNavigationUI.cpp:49 +msgid "Clock Offset" msgstr "" -#: src/CelestialNavigationUI.cpp:52 src/CelestialNavigationUI.h:281 -msgid "Fix" +#: src\CelestialNavigationUI.cpp:52 +msgid "Edit" msgstr "" -#: src/CelestialNavigationUI.cpp:55 -msgid "Clock Offset" +#: src\CelestialNavigationUI.cpp:58 +msgid "Delete" msgstr "" -#: src/CelestialNavigationUI.cpp:61 +#: src\CelestialNavigationUI.cpp:61 msgid "Information" msgstr "" -#: src/CelestialNavigationUI.cpp:136 src/CelestialNavigationUI.cpp:667 -#: src/Sight.h:49 +#: src\CelestialNavigationUI.cpp:64 +msgid "Delete All" +msgstr "" + +#: src\CelestialNavigationUI.cpp:141 src\CelestialNavigationUI.cpp:674 +#: src\Sight.h:49 msgid "Altitude" msgstr "" -#: src/CelestialNavigationUI.cpp:136 src/CelestialNavigationUI.cpp:677 -#: src/Sight.h:49 +#: src\CelestialNavigationUI.cpp:141 src\CelestialNavigationUI.cpp:683 +#: src\Sight.h:49 msgid "Azimuth" msgstr "" -#: src/CelestialNavigationUI.cpp:136 src/Sight.h:49 +#: src\CelestialNavigationUI.cpp:141 src\Sight.h:49 msgid "Lunar" msgstr "" -#: src/CelestialNavigationUI.cpp:142 +#: src\CelestialNavigationUI.cpp:147 msgid "Magnetic Azimuth" msgstr "" -#: src/CelestialNavigationUI.cpp:145 +#: src\CelestialNavigationUI.cpp:150 msgid "Celestial Body" msgstr "" -#: src/CelestialNavigationUI.cpp:154 +#: src\CelestialNavigationUI.cpp:159 msgid "Find" msgstr "" -#: src/CelestialNavigationUI.cpp:157 +#: src\CelestialNavigationUI.cpp:162 msgid "Limb" msgstr "" -#: src/CelestialNavigationUI.cpp:161 -msgid "Lower" +#: src\CelestialNavigationUI.cpp:166 +msgid "Center" msgstr "" -#: src/CelestialNavigationUI.cpp:161 -msgid "Center" +#: src\CelestialNavigationUI.cpp:166 +msgid "Lower" msgstr "" -#: src/CelestialNavigationUI.cpp:161 +#: src\CelestialNavigationUI.cpp:166 msgid "Upper" msgstr "" -#: src/CelestialNavigationUI.cpp:186 src/CelestialNavigationUI.cpp:193 -#: src/CelestialNavigationUI.cpp:223 src/CelestialNavigationUI.cpp:230 +#: src\CelestialNavigationUI.cpp:191 src\CelestialNavigationUI.cpp:198 +#: src\CelestialNavigationUI.cpp:228 src\CelestialNavigationUI.cpp:235 msgid "0" msgstr "" -#: src/CelestialNavigationUI.cpp:189 src/CelestialNavigationUI.cpp:348 -#: src/CelestialNavigationUI.cpp:598 +#: src\CelestialNavigationUI.cpp:194 src\CelestialNavigationUI.cpp:353 +#: src\CelestialNavigationUI.cpp:605 msgid "Degrees" msgstr "" -#: src/CelestialNavigationUI.cpp:196 src/CelestialNavigationUI.cpp:278 -#: src/CelestialNavigationUI.cpp:439 +#: src\CelestialNavigationUI.cpp:201 src\CelestialNavigationUI.cpp:283 +#: src\CelestialNavigationUI.cpp:444 msgid "Minutes" msgstr "" -#: src/CelestialNavigationUI.cpp:200 +#: src\CelestialNavigationUI.cpp:205 msgid "10" msgstr "" -#: src/CelestialNavigationUI.cpp:203 +#: src\CelestialNavigationUI.cpp:208 msgid "Minutes Certainty" msgstr "" -#: src/CelestialNavigationUI.cpp:217 +#: src\CelestialNavigationUI.cpp:222 msgid "Lunar Altitude" msgstr "" -#: src/CelestialNavigationUI.cpp:226 +#: src\CelestialNavigationUI.cpp:231 msgid "Body Altitude" msgstr "" -#: src/CelestialNavigationUI.cpp:243 +#: src\CelestialNavigationUI.cpp:248 msgid "Sight" msgstr "" -#: src/CelestialNavigationUI.cpp:271 +#: src\CelestialNavigationUI.cpp:276 msgid "Hours" msgstr "" -#: src/CelestialNavigationUI.cpp:285 src/CelestialNavigationUI.cpp:303 -#: src/CelestialNavigationUI.cpp:860 +#: src\CelestialNavigationUI.cpp:290 src\CelestialNavigationUI.cpp:308 +#: src\CelestialNavigationUI.cpp:869 msgid "Seconds" msgstr "" -#: src/CelestialNavigationUI.cpp:293 +#: src\CelestialNavigationUI.cpp:298 msgid "Certainty" msgstr "" -#: src/CelestialNavigationUI.cpp:323 -msgid "Time" -msgstr "" - -#: src/CelestialNavigationUI.cpp:330 src/CelestialNavigationUI.cpp:580 +#: src\CelestialNavigationUI.cpp:335 src\CelestialNavigationUI.cpp:587 msgid "Distance" msgstr "" -#: src/CelestialNavigationUI.cpp:337 src/CelestialNavigationUI.cpp:587 +#: src\CelestialNavigationUI.cpp:342 src\CelestialNavigationUI.cpp:594 msgid "Nm" msgstr "" -#: src/CelestialNavigationUI.cpp:341 src/CelestialNavigationUI.cpp:591 +#: src\CelestialNavigationUI.cpp:346 src\CelestialNavigationUI.cpp:598 msgid "Bearing" msgstr "" -#: src/CelestialNavigationUI.cpp:352 src/CelestialNavigationUI.cpp:602 +#: src\CelestialNavigationUI.cpp:357 src\CelestialNavigationUI.cpp:609 msgid "Magnetic Bearing" msgstr "" -#: src/CelestialNavigationUI.cpp:359 +#: src\CelestialNavigationUI.cpp:364 msgid "DR Shift" msgstr "" -#: src/CelestialNavigationUI.cpp:366 +#: src\CelestialNavigationUI.cpp:371 msgid "Transparency" msgstr "" -#: src/CelestialNavigationUI.cpp:387 +#: src\CelestialNavigationUI.cpp:392 msgid "Config" msgstr "" -#: src/CelestialNavigationUI.cpp:399 +#: src\CelestialNavigationUI.cpp:404 msgid "Eye Height" msgstr "" -#: src/CelestialNavigationUI.cpp:403 +#: src\CelestialNavigationUI.cpp:408 msgid "2" msgstr "" -#: src/CelestialNavigationUI.cpp:406 +#: src\CelestialNavigationUI.cpp:411 msgid "Meters" msgstr "" -#: src/CelestialNavigationUI.cpp:410 +#: src\CelestialNavigationUI.cpp:415 msgid "Temperature" msgstr "" -#: src/CelestialNavigationUI.cpp:417 +#: src\CelestialNavigationUI.cpp:422 msgid "Celcius" msgstr "" -#: src/CelestialNavigationUI.cpp:421 +#: src\CelestialNavigationUI.cpp:426 msgid "Pressure" msgstr "" -#: src/CelestialNavigationUI.cpp:428 +#: src\CelestialNavigationUI.cpp:433 msgid "MilliBars" msgstr "" -#: src/CelestialNavigationUI.cpp:432 +#: src\CelestialNavigationUI.cpp:437 msgid "Index Error" msgstr "" -#: src/CelestialNavigationUI.cpp:446 +#: src\CelestialNavigationUI.cpp:451 msgid "Set As Defaults" msgstr "" -#: src/CelestialNavigationUI.cpp:453 +#: src\CelestialNavigationUI.cpp:458 msgid "Parameters" msgstr "" -#: src/CelestialNavigationUI.cpp:469 +#: src\CelestialNavigationUI.cpp:474 msgid "Calculations" msgstr "" -#: src/CelestialNavigationUI.cpp:571 +#: src\CelestialNavigationUI.cpp:578 msgid "Shift all visible Sights" msgstr "" -#: src/CelestialNavigationUI.cpp:649 src/CelestialNavigationUI.cpp:760 +#: src\CelestialNavigationUI.cpp:656 src\CelestialNavigationUI.cpp:769 msgid "Latitude" msgstr "" -#: src/CelestialNavigationUI.cpp:658 src/CelestialNavigationUI.cpp:768 +#: src\CelestialNavigationUI.cpp:665 src\CelestialNavigationUI.cpp:777 msgid "Longitude" msgstr "" -#: src/CelestialNavigationUI.cpp:669 src/CelestialNavigationUI.cpp:679 -msgid "MyLabel" +#: src\CelestialNavigationUI.cpp:691 +msgid "Boat Position" msgstr "" -#: src/CelestialNavigationUI.cpp:686 -msgid "Done" +#: src\CelestialNavigationUI.cpp:695 +msgid "Magnetic" msgstr "" -#: src/CelestialNavigationUI.cpp:689 -msgid "Magnetic" +#: src\CelestialNavigationUI.cpp:698 +msgid "Done" msgstr "" -#: src/CelestialNavigationUI.cpp:753 +#: src\CelestialNavigationUI.cpp:762 msgid "Fix From Visible Sights" msgstr "" -#: src/CelestialNavigationUI.cpp:764 +#: src\CelestialNavigationUI.cpp:773 msgid " N/A " msgstr "" -#: src/CelestialNavigationUI.cpp:772 +#: src\CelestialNavigationUI.cpp:781 msgid " N/A " msgstr "" -#: src/CelestialNavigationUI.cpp:776 +#: src\CelestialNavigationUI.cpp:785 msgid "Error" msgstr "" -#: src/CelestialNavigationUI.cpp:780 +#: src\CelestialNavigationUI.cpp:789 msgid " N/A " msgstr "" -#: src/CelestialNavigationUI.cpp:787 src/CelestialNavigationUI.cpp:794 +#: src\CelestialNavigationUI.cpp:796 src\CelestialNavigationUI.cpp:803 msgid "Initial" msgstr "" -#: src/CelestialNavigationUI.cpp:801 +#: src\CelestialNavigationUI.cpp:810 msgid "Alg" msgstr "" -#: src/CelestialNavigationUI.cpp:806 +#: src\CelestialNavigationUI.cpp:815 msgid "Plane" msgstr "" -#: src/CelestialNavigationUI.cpp:807 +#: src\CelestialNavigationUI.cpp:816 msgid "Sphere" msgstr "" -#: src/CelestialNavigationUI.cpp:808 +#: src\CelestialNavigationUI.cpp:817 msgid "Cone" msgstr "" -#: src/CelestialNavigationUI.cpp:809 +#: src\CelestialNavigationUI.cpp:818 msgid "Cone 2" msgstr "" -#: src/CelestialNavigationUI.cpp:813 +#: src\CelestialNavigationUI.cpp:822 msgid "Go" msgstr "" -#: src/CelestialNavigationUI.cpp:850 src/CelestialNavigationUI.h:303 +#: src\CelestialNavigationUI.cpp:859 src\CelestialNavigationUI.h:308 msgid "Clock Correction" msgstr "" -#: src/CelestialNavigationUI.h:78 +#: src\CelestialNavigationUI.h:82 msgid "Celestial Navigation Sights" msgstr "" -#: src/CelestialNavigationUI.h:169 +#: src\CelestialNavigationUI.h:173 msgid "Sight Properties" msgstr "" -#: src/CelestialNavigationUI.h:200 +#: src\CelestialNavigationUI.h:204 msgid "Dead Reckoning shift" msgstr "" -#: src/CelestialNavigationUI.h:227 +#: src\CelestialNavigationUI.h:232 msgid "Find Celestial Body" msgstr "" -#: src/Sight.cpp:160 +#: src\FixDialog.cpp:192 +msgid "Shifted sights are not used to compute a fix, determine fix visually instead.\n" +msgstr "" + +#: src\FixDialog.cpp:193 +msgid "Fix Position" +msgstr "" + +#: src\FixDialog.cpp:338 src\FixDialog.cpp:339 src\FixDialog.cpp:340 +msgid " N/A " +msgstr "" + +#: src\Sight.cpp:172 src\Sight.cpp.bak:173 msgid "Astrolab failed, data unavailable:\n" msgstr "" -#: src/Sight.cpp:161 +#: src\Sight.cpp:173 src\Sight.cpp.bak:174 msgid "\n" "Did you forget to install vsop87d.txt?\n" msgstr "" -#: src/Sight.cpp:162 +#: src\Sight.cpp:174 src\Sight.cpp.bak:175 msgid "The plugin will not work correctly" msgstr "" -#: src/Sight.cpp:163 +#: src\Sight.cpp:175 src\Sight.cpp.bak:176 msgid "Failure Alert" msgstr "" -#: src/Sight.cpp:474 +#: src\Sight.cpp:495 src\Sight.cpp.bak:496 #, c-format msgid "Applying clock correction of %d seconds\n\n" msgstr "" -#: src/Sight.cpp:536 +#: src\Sight.cpp:557 src\Sight.cpp.bak:558 msgid "Almanac Data For " msgstr "" -#: src/Sight.cpp:537 +#: src\Sight.cpp:558 src\Sight.cpp.bak:559 #, c-format msgid "\n" "Geographical Position (lat, lon) = %.4f %.4f\n" @@ -410,23 +474,27 @@ msgid "\n" "HP = %.1f'\n\n" msgstr "" -#: src/Sight.cpp:552 src/Sight.cpp:690 +#: src\Sight.cpp:573 src\Sight.cpp:711 src\Sight.cpp.bak:574 +#: src\Sight.cpp.bak:712 msgid "Formulas used to calculate sight\n\n" msgstr "" -#: src/Sight.cpp:556 src/Sight.cpp:694 +#: src\Sight.cpp:577 src\Sight.cpp:715 src\Sight.cpp.bak:578 +#: src\Sight.cpp.bak:716 #, c-format msgid "Index Error is %.4f degrees\n\n" msgstr "" -#: src/Sight.cpp:561 src/Sight.cpp:699 +#: src\Sight.cpp:582 src\Sight.cpp:720 src\Sight.cpp.bak:583 +#: src\Sight.cpp.bak:721 #, c-format msgid "Eye Height is %.4f meters\n" "Height Correction Degrees = 1.758*sqrt(%.4f) / 60.0\n" "Height Correction Degrees = %.4f\n" msgstr "" -#: src/Sight.cpp:568 +#: src\Sight.cpp:589 src\Sight.cpp:799 src\Sight.cpp.bak:590 +#: src\Sight.cpp.bak:800 #, c-format msgid "\n" "Apparent Altitude (Ha)\n" @@ -435,7 +503,8 @@ msgid "\n" "ApparentAltitude = %.4f\n" msgstr "" -#: src/Sight.cpp:586 src/Sight.cpp:789 +#: src\Sight.cpp:607 src\Sight.cpp:810 src\Sight.cpp.bak:608 +#: src\Sight.cpp.bak:811 #, c-format msgid "\n" "Refraction Correction\n" @@ -444,21 +513,24 @@ msgid "\n" "x = %.4f\n" msgstr "" -#: src/Sight.cpp:591 src/Sight.cpp:794 +#: src\Sight.cpp:612 src\Sight.cpp:815 src\Sight.cpp.bak:613 +#: src\Sight.cpp.bak:816 #, c-format msgid "RefractionCorrection = .267 * Pressure / (x*(Temperature + 273.15)) / 60.0\n" "RefractionCorrection = .267 * %.4f / (x*(%.4f + 273.15)) / 60.0\n" "RefractionCorrection = %.4f\n" msgstr "" -#: src/Sight.cpp:606 src/Sight.cpp:808 +#: src\Sight.cpp:627 src\Sight.cpp:829 src\Sight.cpp.bak:628 +#: src\Sight.cpp.bak:830 #, c-format msgid "\n" "Sun selected, Limb Correction\n" "ra = %.4f, lc = 0.266564/ra = %.4f\n" msgstr "" -#: src/Sight.cpp:616 src/Sight.cpp:732 +#: src\Sight.cpp:637 src\Sight.cpp:753 src\Sight.cpp.bak:638 +#: src\Sight.cpp.bak:754 #, c-format msgid "\n" "Moon selected, Limb Correction\n" @@ -467,21 +539,25 @@ msgid "\n" "lc = %.4f\n" msgstr "" -#: src/Sight.cpp:626 src/Sight.cpp:741 src/Sight.cpp:816 +#: src\Sight.cpp:647 src\Sight.cpp:762 src\Sight.cpp:837 src\Sight.cpp.bak:648 +#: src\Sight.cpp.bak:763 src\Sight.cpp.bak:838 msgid "Upper Limb" msgstr "" -#: src/Sight.cpp:629 src/Sight.cpp:744 src/Sight.cpp:819 +#: src\Sight.cpp:650 src\Sight.cpp:765 src\Sight.cpp:840 src\Sight.cpp.bak:651 +#: src\Sight.cpp.bak:766 src\Sight.cpp.bak:841 msgid "Lower Limb" msgstr "" -#: src/Sight.cpp:632 src/Sight.cpp:822 +#: src\Sight.cpp:653 src\Sight.cpp:843 src\Sight.cpp.bak:654 +#: src\Sight.cpp.bak:844 #, c-format msgid "\n" "LimbCorrection = %.4f\n" msgstr "" -#: src/Sight.cpp:636 src/Sight.cpp:826 +#: src\Sight.cpp:657 src\Sight.cpp:847 src\Sight.cpp.bak:658 +#: src\Sight.cpp.bak:848 #, c-format msgid "\n" "Corrected Altitude\n" @@ -490,28 +566,31 @@ msgid "\n" "CorrectedAltitude = %.4f\n" msgstr "" -#: src/Sight.cpp:650 src/Sight.cpp:840 +#: src\Sight.cpp:671 src\Sight.cpp:861 src\Sight.cpp.bak:672 +#: src\Sight.cpp.bak:862 #, c-format msgid "\n" "Sun selected, parallax correction\n" "rad = %.4f, HP = 0.002442/rad = %.4f\n" msgstr "" -#: src/Sight.cpp:659 src/Sight.cpp:764 +#: src\Sight.cpp:680 src\Sight.cpp:785 src\Sight.cpp.bak:681 +#: src\Sight.cpp.bak:786 #, c-format msgid "\n" "Moon selected, parallax correction\n" "HP = %.4f\n" msgstr "" -#: src/Sight.cpp:665 src/Sight.cpp:846 +#: src\Sight.cpp:686 src\Sight.cpp:867 src\Sight.cpp.bak:687 +#: src\Sight.cpp.bak:868 #, c-format msgid "ParallaxCorrection = -180/Pi * asin( sin(Pi/180 * HP ) * cos(Pi/180 * CorrectedAltitude))\n" "ParallaxCorrection = -180/Pi * asin( sin(Pi/180 * %.4f ) * cos(Pi/180 * %.4f))\n" "ParallaxCorrection = %.4f\n" msgstr "" -#: src/Sight.cpp:672 +#: src\Sight.cpp:693 src\Sight.cpp.bak:694 #, c-format msgid "\n" "Observed Altitude (Ho)\n" @@ -520,16 +599,16 @@ msgid "\n" "ObservedAltitude = %.4f\n" msgstr "" -#: src/Sight.cpp:706 +#: src\Sight.cpp:727 src\Sight.cpp.bak:728 #, c-format msgid "\n" "Apparent Moon Altitude (Ha)\n" "ApparentAltitudeMoon = MeasurementMoon - IndexCorrection - EyeHeightCorrection\n" -" ApparentAltitudeMoon = %.4f - %.4f - %.4f\n" +"ApparentAltitudeMoon = %.4f - %.4f - %.4f\n" "ApparentAltitudeMoon = %.4f\n" msgstr "" -#: src/Sight.cpp:717 +#: src\Sight.cpp:738 src\Sight.cpp.bak:739 #, c-format msgid "\n" "Refraction Correction\n" @@ -538,20 +617,21 @@ msgid "\n" "x = %.4f\n" msgstr "" -#: src/Sight.cpp:722 +#: src\Sight.cpp:743 src\Sight.cpp.bak:744 #, c-format msgid "RefractionCorrectionMoon = .267 * Pressure / (x*(Temperature + 273.15)) / 60.0\n" "RefractionCorrectionMoon = .267 * %.4f / (x*(%.4f + 273.15)) / 60.0\n" "RefractionCorrectionMoon = %.4f\n" msgstr "" -#: src/Sight.cpp:747 src/Sight.cpp:750 +#: src\Sight.cpp:768 src\Sight.cpp:771 src\Sight.cpp.bak:769 +#: src\Sight.cpp.bak:772 #, c-format msgid "\n" "LimbCorrectionMoon = %.4f\n" msgstr "" -#: src/Sight.cpp:753 +#: src\Sight.cpp:774 src\Sight.cpp.bak:775 #, c-format msgid "\n" "Corrected Altitude\n" @@ -560,107 +640,82 @@ msgid "\n" "CorrectedAltitudeMoon = %.4f\n" msgstr "" -#: src/Sight.cpp:768 +#: src\Sight.cpp:789 src\Sight.cpp.bak:790 #, c-format msgid "ParallaxCorrectionMoon = -180/Pi * asin( sin(Pi/180 * HP ) * cos(Pi/180 * CorrectedAltitude))\n" -" ParallaxCorrectionMoon = -180/Pi * asin( sin(Pi/180 * %.4f ) * cos(Pi/180 * %.4f))\n" +"ParallaxCorrectionMoon = -180/Pi * asin( sin(Pi/180 * %.4f ) * cos(Pi/180 * %.4f))\n" "ParallaxCorrectionMoon = %.4f\n" msgstr "" -#: src/Sight.cpp:778 -#, c-format -msgid "\n" -"Apparent Altitude (Ha)\n" -"ApparentAltitude = Measurement - IndexCorrection - EyeHeightCorrection\n" -" ApparentAltitude = %.4f - %.4f - %.4f\n" -"ApparentAltitude = %.4f\n" -msgstr "" - -#: src/Sight.cpp:857 +#: src\Sight.cpp:878 src\Sight.cpp.bak:879 #, c-format msgid "CorrectionsMoon = %.4f\n" "CorrectionsBody = %.4f\n" "Corrections = abs(CorrectionsMoon - CorrectionsBody) = %.4f\n" msgstr "" -#: src/Sight.cpp:863 +#: src\Sight.cpp:884 src\Sight.cpp.bak:885 #, c-format msgid "CorrectedMeasurement = Measurement - Corrections - IndexCorrection\n" "CorrectedMeasurement = %.4f - %.4f - %.4f\n" "CorrectedMeasurement = %.4f\n" msgstr "" -#: src/Sight.cpp:888 +#: src\Sight.cpp:909 src\Sight.cpp.bak:910 msgid "\n" "Calculated angle between Moon and " msgstr "" -#: src/Sight.cpp:890 +#: src\Sight.cpp:911 src\Sight.cpp.bak:912 #, c-format msgid "\n" "Error from measurement: %.4f" msgstr "" -#: src/Sight.cpp:894 +#: src\Sight.cpp:915 src\Sight.cpp.bak:916 msgid "\n" "Moon takes 28 days to orbit, one degree of error takes 6720 seconds" msgstr "" -#: src/Sight.cpp:895 +#: src\Sight.cpp:916 src\Sight.cpp.bak:917 #, c-format msgid "\n" "Time correction %.4f seconds" msgstr "" -#: src/Sight.cpp:1099 +#: src\Sight.cpp:1120 src\Sight.cpp.bak:1121 msgid "Building bearing Sight Positions" msgstr "" -#: src/SightDialog.cpp:172 +#: src\SightDialog.cpp:184 msgid "Measurement certainty likely set to small, sight may not appear " msgstr "" -#: src/SightDialog.cpp:173 src/SightDialog.cpp:256 +#: src\SightDialog.cpp:185 src\SightDialog.cpp:279 msgid "Warning" msgstr "" -#: src/SightDialog.cpp:255 +#: src\SightDialog.cpp:278 msgid "Lunar shot will be invalid taking distance from moon to itself" msgstr "" -#: src/celestial_navigation_pi.cpp:90 -msgid "Failed to load file:\n" -msgstr "" - -#: src/celestial_navigation_pi.cpp:91 -msgid "\n" -"Magnetic data will not be available for the celestial navigation plugin." -msgstr "" - -#: src/celestial_navigation_pi.cpp:92 -msgid "OpenCPN Alert" +#: src\celestial_navigation_pi.cpp:179 +msgid "open error" msgstr "" -#: src/celestial_navigation_pi.cpp:157 -msgid "Celestial Navigation PlugIn for OpenCPN" +#: src\celestial_navigation_pi.cpp:180 +msgid "corrupt record" msgstr "" -#: src/celestial_navigation_pi.cpp:162 -msgid "Celestial Navigation PlugIn for OpenCPN.\n" -"Implements nautical almanac for sun, moon, planets,\n" -"and various navigational stars.\n" -"Compute position fix from celestial measurements." +#: src\celestial_navigation_pi.cpp:181 +msgid "too many models" msgstr "" -#: src/FixDialog.cpp:189 -msgid "Shifted sights are not used to compute a fix, determine fix visually instead.\n" +#: src\celestial_navigation_pi.cpp:184 +msgid "Magnetic data will not be available for the celestial navigation plugin." msgstr "" -#: src/FixDialog.cpp:190 -msgid "Fix Position" -msgstr "" - -#: src/FixDialog.cpp:335 src/FixDialog.cpp:336 src/FixDialog.cpp:337 -msgid " N/A " +#: src\celestial_navigation_pi.cpp:185 +msgid "OpenCPN Alert" msgstr "" diff --git a/po/bg_BG.po b/po/bg_BG.po new file mode 100644 index 0000000..5eb962c --- /dev/null +++ b/po/bg_BG.po @@ -0,0 +1,721 @@ +msgid "" +msgstr "" +"Project-Id-Version: opencpn\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2021-10-27 22:15+0200\n" +"PO-Revision-Date: 2023-10-04 18:32\n" +"Last-Translator: \n" +"Language-Team: Bulgarian\n" +"Language: bg_BG\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" +"X-Crowdin-Project: opencpn\n" +"X-Crowdin-Project-ID: 49843\n" +"X-Crowdin-Language: bg\n" +"X-Crowdin-File: /plugins/celestial_navigation_pi/po/celestial_navigation_pi.pot\n" +"X-Crowdin-File-ID: 108\n" + +#: src\CelestialNavigationDialog-2.3.5.1-no-android.cpp:149 +#: src\CelestialNavigationDialog-2.3.5.2-android.cpp:150 +#: src\CelestialNavigationDialog-partial-android.cpp:149 +#: src\CelestialNavigationDialog.cpp:150 src\CelestialNavigationUI.cpp:137 +msgid "Type" +msgstr "" + +#: src\CelestialNavigationDialog-2.3.5.1-no-android.cpp:150 +#: src\CelestialNavigationDialog-2.3.5.2-android.cpp:151 +#: src\CelestialNavigationDialog-partial-android.cpp:150 +#: src\CelestialNavigationDialog.cpp:151 +msgid "Body" +msgstr "" + +#: src\CelestialNavigationDialog-2.3.5.1-no-android.cpp:151 +#: src\CelestialNavigationDialog-2.3.5.2-android.cpp:152 +#: src\CelestialNavigationDialog-partial-android.cpp:151 +#: src\CelestialNavigationDialog.cpp:152 src\CelestialNavigationUI.cpp:328 +msgid "Time (UT)" +msgstr "" + +#: src\CelestialNavigationDialog-2.3.5.1-no-android.cpp:152 +#: src\CelestialNavigationDialog-2.3.5.2-android.cpp:153 +#: src\CelestialNavigationDialog-partial-android.cpp:152 +#: src\CelestialNavigationDialog.cpp:153 src\CelestialNavigationUI.cpp:184 +msgid "Measurement" +msgstr "" + +#: src\CelestialNavigationDialog-2.3.5.1-no-android.cpp:153 +#: src\CelestialNavigationDialog-2.3.5.2-android.cpp:154 +#: src\CelestialNavigationDialog-partial-android.cpp:153 +#: src\CelestialNavigationDialog.cpp:154 src\CelestialNavigationUI.cpp:381 +msgid "Color" +msgstr "" + +#: src\CelestialNavigationDialog-2.3.5.1-no-android.cpp:266 +#: src\CelestialNavigationDialog-2.3.5.2-android.cpp:272 +#: src\CelestialNavigationDialog-partial-android.cpp:266 +#: src\CelestialNavigationDialog.cpp:272 src\celestial_navigation_pi.cpp:177 +msgid "Failed to load file: " +msgstr "" + +#: src\CelestialNavigationDialog-2.3.5.1-no-android.cpp:271 +#: src\CelestialNavigationDialog-2.3.5.2-android.cpp:277 +#: src\CelestialNavigationDialog-partial-android.cpp:271 +#: src\CelestialNavigationDialog.cpp:277 +msgid "Invalid xml file" +msgstr "" + +#: src\CelestialNavigationDialog-2.3.5.1-no-android.cpp:323 +#: src\CelestialNavigationDialog-2.3.5.2-android.cpp:329 +#: src\CelestialNavigationDialog-partial-android.cpp:323 +#: src\CelestialNavigationDialog.cpp:329 +msgid "Unrecognized xml node" +msgstr "" + +#: src\CelestialNavigationDialog-2.3.5.1-no-android.cpp:332 +#: src\CelestialNavigationDialog-2.3.5.1-no-android.cpp:392 +#: src\CelestialNavigationDialog-2.3.5.1-no-android.cpp:532 +#: src\CelestialNavigationDialog-2.3.5.2-android.cpp:338 +#: src\CelestialNavigationDialog-2.3.5.2-android.cpp:398 +#: src\CelestialNavigationDialog-2.3.5.2-android.cpp:538 +#: src\CelestialNavigationDialog-partial-android.cpp:332 +#: src\CelestialNavigationDialog-partial-android.cpp:392 +#: src\CelestialNavigationDialog-partial-android.cpp:532 +#: src\CelestialNavigationDialog.cpp:338 src\CelestialNavigationDialog.cpp:398 +#: src\CelestialNavigationDialog.cpp:538 src\Sight.cpp:1120 +#: src\Sight.cpp.bak:1121 src\celestial_navigation_pi.cpp:95 +#: src\celestial_navigation_pi.cpp:99 +msgid "Celestial Navigation" +msgstr "" + +#: src\CelestialNavigationDialog-2.3.5.1-no-android.cpp:391 +#: src\CelestialNavigationDialog-2.3.5.2-android.cpp:397 +#: src\CelestialNavigationDialog-partial-android.cpp:391 +#: src\CelestialNavigationDialog.cpp:397 +msgid "Failed to save xml file: " +msgstr "" + +#: src\CelestialNavigationDialog-2.3.5.1-no-android.cpp:424 +#: src\CelestialNavigationDialog-2.3.5.2-android.cpp:430 +#: src\CelestialNavigationDialog-partial-android.cpp:424 +#: src\CelestialNavigationDialog.cpp:430 +msgid "Time Correction" +msgstr "" + +#: src\CelestialNavigationDialog-2.3.5.1-no-android.cpp:473 +#: src\CelestialNavigationDialog-2.3.5.2-android.cpp:479 +#: src\CelestialNavigationDialog-partial-android.cpp:473 +#: src\CelestialNavigationDialog.cpp:479 +msgid "Sun" +msgstr "" + +#: src\CelestialNavigationDialog-2.3.5.1-no-android.cpp:531 +#: src\CelestialNavigationDialog-2.3.5.2-android.cpp:537 +#: src\CelestialNavigationDialog-partial-android.cpp:531 +#: src\CelestialNavigationDialog.cpp:537 +msgid "Are you sure you want to delete all sights?" +msgstr "" + +#: src\CelestialNavigationDialog-2.3.5.1-no-android.cpp:582 +#: src\CelestialNavigationDialog-2.3.5.2-android.cpp:588 +#: src\CelestialNavigationDialog-partial-android.cpp:582 +#: src\CelestialNavigationDialog.cpp:588 +msgid "Celestial_Navigation_Information.html" +msgstr "" + +#: src\CelestialNavigationDialog-2.3.5.1-no-android.cpp:589 +#: src\CelestialNavigationDialog-2.3.5.2-android.cpp:595 +#: src\CelestialNavigationDialog-partial-android.cpp:589 +#: src\CelestialNavigationDialog.cpp:595 src\CelestialNavigationUI.cpp:55 +msgid "Hide" +msgstr "" + +#: src\CelestialNavigationDialog-2.3.5.1-no-android.cpp:589 +#: src\CelestialNavigationDialog-2.3.5.2-android.cpp:595 +#: src\CelestialNavigationDialog-partial-android.cpp:589 +#: src\CelestialNavigationDialog.cpp:595 +msgid "Show" +msgstr "" + +#: src\CelestialNavigationUI.cpp:40 +msgid "New" +msgstr "" + +#: src\CelestialNavigationUI.cpp:43 src\CelestialNavigationUI.h:286 +msgid "Fix" +msgstr "" + +#: src\CelestialNavigationUI.cpp:46 +msgid "Duplicate" +msgstr "" + +#: src\CelestialNavigationUI.cpp:49 +msgid "Clock Offset" +msgstr "" + +#: src\CelestialNavigationUI.cpp:52 +msgid "Edit" +msgstr "" + +#: src\CelestialNavigationUI.cpp:58 +msgid "Delete" +msgstr "" + +#: src\CelestialNavigationUI.cpp:61 +msgid "Information" +msgstr "" + +#: src\CelestialNavigationUI.cpp:64 +msgid "Delete All" +msgstr "" + +#: src\CelestialNavigationUI.cpp:141 src\CelestialNavigationUI.cpp:674 +#: src\Sight.h:49 +msgid "Altitude" +msgstr "" + +#: src\CelestialNavigationUI.cpp:141 src\CelestialNavigationUI.cpp:683 +#: src\Sight.h:49 +msgid "Azimuth" +msgstr "" + +#: src\CelestialNavigationUI.cpp:141 src\Sight.h:49 +msgid "Lunar" +msgstr "" + +#: src\CelestialNavigationUI.cpp:147 +msgid "Magnetic Azimuth" +msgstr "" + +#: src\CelestialNavigationUI.cpp:150 +msgid "Celestial Body" +msgstr "" + +#: src\CelestialNavigationUI.cpp:159 +msgid "Find" +msgstr "" + +#: src\CelestialNavigationUI.cpp:162 +msgid "Limb" +msgstr "" + +#: src\CelestialNavigationUI.cpp:166 +msgid "Center" +msgstr "" + +#: src\CelestialNavigationUI.cpp:166 +msgid "Lower" +msgstr "" + +#: src\CelestialNavigationUI.cpp:166 +msgid "Upper" +msgstr "" + +#: src\CelestialNavigationUI.cpp:191 src\CelestialNavigationUI.cpp:198 +#: src\CelestialNavigationUI.cpp:228 src\CelestialNavigationUI.cpp:235 +msgid "0" +msgstr "" + +#: src\CelestialNavigationUI.cpp:194 src\CelestialNavigationUI.cpp:353 +#: src\CelestialNavigationUI.cpp:605 +msgid "Degrees" +msgstr "" + +#: src\CelestialNavigationUI.cpp:201 src\CelestialNavigationUI.cpp:283 +#: src\CelestialNavigationUI.cpp:444 +msgid "Minutes" +msgstr "" + +#: src\CelestialNavigationUI.cpp:205 +msgid "10" +msgstr "" + +#: src\CelestialNavigationUI.cpp:208 +msgid "Minutes Certainty" +msgstr "" + +#: src\CelestialNavigationUI.cpp:222 +msgid "Lunar Altitude" +msgstr "" + +#: src\CelestialNavigationUI.cpp:231 +msgid "Body Altitude" +msgstr "" + +#: src\CelestialNavigationUI.cpp:248 +msgid "Sight" +msgstr "" + +#: src\CelestialNavigationUI.cpp:276 +msgid "Hours" +msgstr "" + +#: src\CelestialNavigationUI.cpp:290 src\CelestialNavigationUI.cpp:308 +#: src\CelestialNavigationUI.cpp:869 +msgid "Seconds" +msgstr "" + +#: src\CelestialNavigationUI.cpp:298 +msgid "Certainty" +msgstr "" + +#: src\CelestialNavigationUI.cpp:335 src\CelestialNavigationUI.cpp:587 +msgid "Distance" +msgstr "" + +#: src\CelestialNavigationUI.cpp:342 src\CelestialNavigationUI.cpp:594 +msgid "Nm" +msgstr "" + +#: src\CelestialNavigationUI.cpp:346 src\CelestialNavigationUI.cpp:598 +msgid "Bearing" +msgstr "" + +#: src\CelestialNavigationUI.cpp:357 src\CelestialNavigationUI.cpp:609 +msgid "Magnetic Bearing" +msgstr "" + +#: src\CelestialNavigationUI.cpp:364 +msgid "DR Shift" +msgstr "" + +#: src\CelestialNavigationUI.cpp:371 +msgid "Transparency" +msgstr "" + +#: src\CelestialNavigationUI.cpp:392 +msgid "Config" +msgstr "" + +#: src\CelestialNavigationUI.cpp:404 +msgid "Eye Height" +msgstr "" + +#: src\CelestialNavigationUI.cpp:408 +msgid "2" +msgstr "" + +#: src\CelestialNavigationUI.cpp:411 +msgid "Meters" +msgstr "" + +#: src\CelestialNavigationUI.cpp:415 +msgid "Temperature" +msgstr "" + +#: src\CelestialNavigationUI.cpp:422 +msgid "Celcius" +msgstr "" + +#: src\CelestialNavigationUI.cpp:426 +msgid "Pressure" +msgstr "" + +#: src\CelestialNavigationUI.cpp:433 +msgid "MilliBars" +msgstr "" + +#: src\CelestialNavigationUI.cpp:437 +msgid "Index Error" +msgstr "" + +#: src\CelestialNavigationUI.cpp:451 +msgid "Set As Defaults" +msgstr "" + +#: src\CelestialNavigationUI.cpp:458 +msgid "Parameters" +msgstr "" + +#: src\CelestialNavigationUI.cpp:474 +msgid "Calculations" +msgstr "" + +#: src\CelestialNavigationUI.cpp:578 +msgid "Shift all visible Sights" +msgstr "" + +#: src\CelestialNavigationUI.cpp:656 src\CelestialNavigationUI.cpp:769 +msgid "Latitude" +msgstr "" + +#: src\CelestialNavigationUI.cpp:665 src\CelestialNavigationUI.cpp:777 +msgid "Longitude" +msgstr "" + +#: src\CelestialNavigationUI.cpp:691 +msgid "Boat Position" +msgstr "" + +#: src\CelestialNavigationUI.cpp:695 +msgid "Magnetic" +msgstr "" + +#: src\CelestialNavigationUI.cpp:698 +msgid "Done" +msgstr "" + +#: src\CelestialNavigationUI.cpp:762 +msgid "Fix From Visible Sights" +msgstr "" + +#: src\CelestialNavigationUI.cpp:773 +msgid " N/A " +msgstr "" + +#: src\CelestialNavigationUI.cpp:781 +msgid " N/A " +msgstr "" + +#: src\CelestialNavigationUI.cpp:785 +msgid "Error" +msgstr "" + +#: src\CelestialNavigationUI.cpp:789 +msgid " N/A " +msgstr "" + +#: src\CelestialNavigationUI.cpp:796 src\CelestialNavigationUI.cpp:803 +msgid "Initial" +msgstr "" + +#: src\CelestialNavigationUI.cpp:810 +msgid "Alg" +msgstr "" + +#: src\CelestialNavigationUI.cpp:815 +msgid "Plane" +msgstr "" + +#: src\CelestialNavigationUI.cpp:816 +msgid "Sphere" +msgstr "" + +#: src\CelestialNavigationUI.cpp:817 +msgid "Cone" +msgstr "" + +#: src\CelestialNavigationUI.cpp:818 +msgid "Cone 2" +msgstr "" + +#: src\CelestialNavigationUI.cpp:822 +msgid "Go" +msgstr "" + +#: src\CelestialNavigationUI.cpp:859 src\CelestialNavigationUI.h:308 +msgid "Clock Correction" +msgstr "" + +#: src\CelestialNavigationUI.h:82 +msgid "Celestial Navigation Sights" +msgstr "" + +#: src\CelestialNavigationUI.h:173 +msgid "Sight Properties" +msgstr "" + +#: src\CelestialNavigationUI.h:204 +msgid "Dead Reckoning shift" +msgstr "" + +#: src\CelestialNavigationUI.h:232 +msgid "Find Celestial Body" +msgstr "" + +#: src\FixDialog.cpp:192 +msgid "Shifted sights are not used to compute a fix, determine fix visually instead.\n" +msgstr "" + +#: src\FixDialog.cpp:193 +msgid "Fix Position" +msgstr "" + +#: src\FixDialog.cpp:338 src\FixDialog.cpp:339 src\FixDialog.cpp:340 +msgid " N/A " +msgstr "" + +#: src\Sight.cpp:172 src\Sight.cpp.bak:173 +msgid "Astrolab failed, data unavailable:\n" +msgstr "" + +#: src\Sight.cpp:173 src\Sight.cpp.bak:174 +msgid "\n" +"Did you forget to install vsop87d.txt?\n" +msgstr "" + +#: src\Sight.cpp:174 src\Sight.cpp.bak:175 +msgid "The plugin will not work correctly" +msgstr "" + +#: src\Sight.cpp:175 src\Sight.cpp.bak:176 +msgid "Failure Alert" +msgstr "" + +#: src\Sight.cpp:495 src\Sight.cpp.bak:496 +#, c-format +msgid "Applying clock correction of %d seconds\n\n" +msgstr "" + +#: src\Sight.cpp:557 src\Sight.cpp.bak:558 +msgid "Almanac Data For " +msgstr "" + +#: src\Sight.cpp:558 src\Sight.cpp.bak:559 +#, c-format +msgid "\n" +"Geographical Position (lat, lon) = %.4f %.4f\n" +"GHAAST = %.0f %.1f'\n" +"SHA = %.0f %.1f'\n" +"GHA = %.0f %.1f'\n" +"Dec = %c %.0f %.1f'\n" +"SD = %.1f'\n" +"HP = %.1f'\n\n" +msgstr "" + +#: src\Sight.cpp:573 src\Sight.cpp:711 src\Sight.cpp.bak:574 +#: src\Sight.cpp.bak:712 +msgid "Formulas used to calculate sight\n\n" +msgstr "" + +#: src\Sight.cpp:577 src\Sight.cpp:715 src\Sight.cpp.bak:578 +#: src\Sight.cpp.bak:716 +#, c-format +msgid "Index Error is %.4f degrees\n\n" +msgstr "" + +#: src\Sight.cpp:582 src\Sight.cpp:720 src\Sight.cpp.bak:583 +#: src\Sight.cpp.bak:721 +#, c-format +msgid "Eye Height is %.4f meters\n" +"Height Correction Degrees = 1.758*sqrt(%.4f) / 60.0\n" +"Height Correction Degrees = %.4f\n" +msgstr "" + +#: src\Sight.cpp:589 src\Sight.cpp:799 src\Sight.cpp.bak:590 +#: src\Sight.cpp.bak:800 +#, c-format +msgid "\n" +"Apparent Altitude (Ha)\n" +"ApparentAltitude = Measurement - IndexCorrection - EyeHeightCorrection\n" +"ApparentAltitude = %.4f - %.4f - %.4f\n" +"ApparentAltitude = %.4f\n" +msgstr "" + +#: src\Sight.cpp:607 src\Sight.cpp:810 src\Sight.cpp.bak:608 +#: src\Sight.cpp.bak:811 +#, c-format +msgid "\n" +"Refraction Correction\n" +"x = tan(Pi/180*ApparentAltitude + 4.848e-2*(Pi/180) / (tan(Pi/180*ApparentAltitude) + .028))\n" +"x = tan(Pi/180*%.4f + 4.848e-2*(Pi/180) / (tan(Pi/180*%.4f) + .028))\n" +"x = %.4f\n" +msgstr "" + +#: src\Sight.cpp:612 src\Sight.cpp:815 src\Sight.cpp.bak:613 +#: src\Sight.cpp.bak:816 +#, c-format +msgid "RefractionCorrection = .267 * Pressure / (x*(Temperature + 273.15)) / 60.0\n" +"RefractionCorrection = .267 * %.4f / (x*(%.4f + 273.15)) / 60.0\n" +"RefractionCorrection = %.4f\n" +msgstr "" + +#: src\Sight.cpp:627 src\Sight.cpp:829 src\Sight.cpp.bak:628 +#: src\Sight.cpp.bak:830 +#, c-format +msgid "\n" +"Sun selected, Limb Correction\n" +"ra = %.4f, lc = 0.266564/ra = %.4f\n" +msgstr "" + +#: src\Sight.cpp:637 src\Sight.cpp:753 src\Sight.cpp.bak:638 +#: src\Sight.cpp.bak:754 +#, c-format +msgid "\n" +"Moon selected, Limb Correction\n" +"SD = %.4f\n" +"lc = 180/Pi * asin(Pi/180*SD)\n" +"lc = %.4f\n" +msgstr "" + +#: src\Sight.cpp:647 src\Sight.cpp:762 src\Sight.cpp:837 src\Sight.cpp.bak:648 +#: src\Sight.cpp.bak:763 src\Sight.cpp.bak:838 +msgid "Upper Limb" +msgstr "" + +#: src\Sight.cpp:650 src\Sight.cpp:765 src\Sight.cpp:840 src\Sight.cpp.bak:651 +#: src\Sight.cpp.bak:766 src\Sight.cpp.bak:841 +msgid "Lower Limb" +msgstr "" + +#: src\Sight.cpp:653 src\Sight.cpp:843 src\Sight.cpp.bak:654 +#: src\Sight.cpp.bak:844 +#, c-format +msgid "\n" +"LimbCorrection = %.4f\n" +msgstr "" + +#: src\Sight.cpp:657 src\Sight.cpp:847 src\Sight.cpp.bak:658 +#: src\Sight.cpp.bak:848 +#, c-format +msgid "\n" +"Corrected Altitude\n" +"CorrectedAltitude = ApparentAltitude - RefractionCorrection - LimbCorrection\n" +"CorrectedAltitude = %.4f - %.4f - %.4f\n" +"CorrectedAltitude = %.4f\n" +msgstr "" + +#: src\Sight.cpp:671 src\Sight.cpp:861 src\Sight.cpp.bak:672 +#: src\Sight.cpp.bak:862 +#, c-format +msgid "\n" +"Sun selected, parallax correction\n" +"rad = %.4f, HP = 0.002442/rad = %.4f\n" +msgstr "" + +#: src\Sight.cpp:680 src\Sight.cpp:785 src\Sight.cpp.bak:681 +#: src\Sight.cpp.bak:786 +#, c-format +msgid "\n" +"Moon selected, parallax correction\n" +"HP = %.4f\n" +msgstr "" + +#: src\Sight.cpp:686 src\Sight.cpp:867 src\Sight.cpp.bak:687 +#: src\Sight.cpp.bak:868 +#, c-format +msgid "ParallaxCorrection = -180/Pi * asin( sin(Pi/180 * HP ) * cos(Pi/180 * CorrectedAltitude))\n" +"ParallaxCorrection = -180/Pi * asin( sin(Pi/180 * %.4f ) * cos(Pi/180 * %.4f))\n" +"ParallaxCorrection = %.4f\n" +msgstr "" + +#: src\Sight.cpp:693 src\Sight.cpp.bak:694 +#, c-format +msgid "\n" +"Observed Altitude (Ho)\n" +"ObservedAltitude = CorrectedAltitude - ParallaxCorrection\n" +"ObservedAltitude = %.4f - %.4f\n" +"ObservedAltitude = %.4f\n" +msgstr "" + +#: src\Sight.cpp:727 src\Sight.cpp.bak:728 +#, c-format +msgid "\n" +"Apparent Moon Altitude (Ha)\n" +"ApparentAltitudeMoon = MeasurementMoon - IndexCorrection - EyeHeightCorrection\n" +"ApparentAltitudeMoon = %.4f - %.4f - %.4f\n" +"ApparentAltitudeMoon = %.4f\n" +msgstr "" + +#: src\Sight.cpp:738 src\Sight.cpp.bak:739 +#, c-format +msgid "\n" +"Refraction Correction\n" +"x = tan(Pi/180*ApparentAltitudeMoon + 4.848e-2*(Pi/180) / (tan(Pi/180*ApparentAltitudeMoon) + .028))\n" +"x = tan(Pi/180*%.4f + 4.848e-2*(Pi/180) / (tan(Pi/180*%.4f) + .028))\n" +"x = %.4f\n" +msgstr "" + +#: src\Sight.cpp:743 src\Sight.cpp.bak:744 +#, c-format +msgid "RefractionCorrectionMoon = .267 * Pressure / (x*(Temperature + 273.15)) / 60.0\n" +"RefractionCorrectionMoon = .267 * %.4f / (x*(%.4f + 273.15)) / 60.0\n" +"RefractionCorrectionMoon = %.4f\n" +msgstr "" + +#: src\Sight.cpp:768 src\Sight.cpp:771 src\Sight.cpp.bak:769 +#: src\Sight.cpp.bak:772 +#, c-format +msgid "\n" +"LimbCorrectionMoon = %.4f\n" +msgstr "" + +#: src\Sight.cpp:774 src\Sight.cpp.bak:775 +#, c-format +msgid "\n" +"Corrected Altitude\n" +"CorrectedAltitudeMoon = ApparentAltitudeMoon - RefractionCorrectionMoon - LimbCorrectionMoon\n" +"CorrectedAltitudeMoon = %.4f - %.4f - %.4f\n" +"CorrectedAltitudeMoon = %.4f\n" +msgstr "" + +#: src\Sight.cpp:789 src\Sight.cpp.bak:790 +#, c-format +msgid "ParallaxCorrectionMoon = -180/Pi * asin( sin(Pi/180 * HP ) * cos(Pi/180 * CorrectedAltitude))\n" +"ParallaxCorrectionMoon = -180/Pi * asin( sin(Pi/180 * %.4f ) * cos(Pi/180 * %.4f))\n" +"ParallaxCorrectionMoon = %.4f\n" +msgstr "" + +#: src\Sight.cpp:878 src\Sight.cpp.bak:879 +#, c-format +msgid "CorrectionsMoon = %.4f\n" +"CorrectionsBody = %.4f\n" +"Corrections = abs(CorrectionsMoon - CorrectionsBody) = %.4f\n" +msgstr "" + +#: src\Sight.cpp:884 src\Sight.cpp.bak:885 +#, c-format +msgid "CorrectedMeasurement = Measurement - Corrections - IndexCorrection\n" +"CorrectedMeasurement = %.4f - %.4f - %.4f\n" +"CorrectedMeasurement = %.4f\n" +msgstr "" + +#: src\Sight.cpp:909 src\Sight.cpp.bak:910 +msgid "\n" +"Calculated angle between Moon and " +msgstr "" + +#: src\Sight.cpp:911 src\Sight.cpp.bak:912 +#, c-format +msgid "\n" +"Error from measurement: %.4f" +msgstr "" + +#: src\Sight.cpp:915 src\Sight.cpp.bak:916 +msgid "\n" +"Moon takes 28 days to orbit, one degree of error takes 6720 seconds" +msgstr "" + +#: src\Sight.cpp:916 src\Sight.cpp.bak:917 +#, c-format +msgid "\n" +"Time correction %.4f seconds" +msgstr "" + +#: src\Sight.cpp:1120 src\Sight.cpp.bak:1121 +msgid "Building bearing Sight Positions" +msgstr "" + +#: src\SightDialog.cpp:184 +msgid "Measurement certainty likely set to small, sight may not appear " +msgstr "" + +#: src\SightDialog.cpp:185 src\SightDialog.cpp:279 +msgid "Warning" +msgstr "" + +#: src\SightDialog.cpp:278 +msgid "Lunar shot will be invalid taking distance from moon to itself" +msgstr "" + +#: src\celestial_navigation_pi.cpp:179 +msgid "open error" +msgstr "" + +#: src\celestial_navigation_pi.cpp:180 +msgid "corrupt record" +msgstr "" + +#: src\celestial_navigation_pi.cpp:181 +msgid "too many models" +msgstr "" + +#: src\celestial_navigation_pi.cpp:184 +msgid "Magnetic data will not be available for the celestial navigation plugin." +msgstr "" + +#: src\celestial_navigation_pi.cpp:185 +msgid "OpenCPN Alert" +msgstr "" + diff --git a/po/ca_ES.po b/po/ca_ES.po index 7fb712c..8cc0902 100644 --- a/po/ca_ES.po +++ b/po/ca_ES.po @@ -2,404 +2,468 @@ msgid "" msgstr "" "Project-Id-Version: opencpn\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-02-28 14:10-0300\n" -"PO-Revision-Date: 2016-09-21 16:32-0400\n" -"Last-Translator: nohal \n" +"POT-Creation-Date: 2021-10-27 22:15+0200\n" +"PO-Revision-Date: 2023-10-04 18:32\n" +"Last-Translator: \n" "Language-Team: Catalan\n" "Language: ca_ES\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -"X-Generator: crowdin.com\n" "X-Crowdin-Project: opencpn\n" +"X-Crowdin-Project-ID: 49843\n" "X-Crowdin-Language: ca\n" "X-Crowdin-File: /plugins/celestial_navigation_pi/po/celestial_navigation_pi.pot\n" +"X-Crowdin-File-ID: 108\n" -#: src/CelestialNavigationDialog.cpp:123 src/CelestialNavigationUI.cpp:132 +#: src\CelestialNavigationDialog-2.3.5.1-no-android.cpp:149 +#: src\CelestialNavigationDialog-2.3.5.2-android.cpp:150 +#: src\CelestialNavigationDialog-partial-android.cpp:149 +#: src\CelestialNavigationDialog.cpp:150 src\CelestialNavigationUI.cpp:137 msgid "Type" msgstr "Tipus" -#: src/CelestialNavigationDialog.cpp:124 +#: src\CelestialNavigationDialog-2.3.5.1-no-android.cpp:150 +#: src\CelestialNavigationDialog-2.3.5.2-android.cpp:151 +#: src\CelestialNavigationDialog-partial-android.cpp:150 +#: src\CelestialNavigationDialog.cpp:151 msgid "Body" msgstr "Astre" -#: src/CelestialNavigationDialog.cpp:125 -msgid "Time (UTC)" -msgstr "Hora (UTC)" +#: src\CelestialNavigationDialog-2.3.5.1-no-android.cpp:151 +#: src\CelestialNavigationDialog-2.3.5.2-android.cpp:152 +#: src\CelestialNavigationDialog-partial-android.cpp:151 +#: src\CelestialNavigationDialog.cpp:152 src\CelestialNavigationUI.cpp:328 +msgid "Time (UT)" +msgstr "" -#: src/CelestialNavigationDialog.cpp:126 src/CelestialNavigationUI.cpp:179 +#: src\CelestialNavigationDialog-2.3.5.1-no-android.cpp:152 +#: src\CelestialNavigationDialog-2.3.5.2-android.cpp:153 +#: src\CelestialNavigationDialog-partial-android.cpp:152 +#: src\CelestialNavigationDialog.cpp:153 src\CelestialNavigationUI.cpp:184 msgid "Measurement" msgstr "Mesura" -#: src/CelestialNavigationDialog.cpp:127 src/CelestialNavigationUI.cpp:376 +#: src\CelestialNavigationDialog-2.3.5.1-no-android.cpp:153 +#: src\CelestialNavigationDialog-2.3.5.2-android.cpp:154 +#: src\CelestialNavigationDialog-partial-android.cpp:153 +#: src\CelestialNavigationDialog.cpp:154 src\CelestialNavigationUI.cpp:381 msgid "Color" msgstr "Color" -#: src/CelestialNavigationDialog.cpp:193 -msgid "Failed to load file." -msgstr "No s'ha pogut obrir el fitxer." +#: src\CelestialNavigationDialog-2.3.5.1-no-android.cpp:266 +#: src\CelestialNavigationDialog-2.3.5.2-android.cpp:272 +#: src\CelestialNavigationDialog-partial-android.cpp:266 +#: src\CelestialNavigationDialog.cpp:272 src\celestial_navigation_pi.cpp:177 +msgid "Failed to load file: " +msgstr "" -#: src/CelestialNavigationDialog.cpp:198 +#: src\CelestialNavigationDialog-2.3.5.1-no-android.cpp:271 +#: src\CelestialNavigationDialog-2.3.5.2-android.cpp:277 +#: src\CelestialNavigationDialog-partial-android.cpp:271 +#: src\CelestialNavigationDialog.cpp:277 msgid "Invalid xml file" msgstr "Fitxer xml no vàlid" -#: src/CelestialNavigationDialog.cpp:250 +#: src\CelestialNavigationDialog-2.3.5.1-no-android.cpp:323 +#: src\CelestialNavigationDialog-2.3.5.2-android.cpp:329 +#: src\CelestialNavigationDialog-partial-android.cpp:323 +#: src\CelestialNavigationDialog.cpp:329 msgid "Unrecognized xml node" msgstr "Node xml desconegut" -#: src/CelestialNavigationDialog.cpp:260 -msgid "Weather Routing" -msgstr "Weather Routing" +#: src\CelestialNavigationDialog-2.3.5.1-no-android.cpp:332 +#: src\CelestialNavigationDialog-2.3.5.1-no-android.cpp:392 +#: src\CelestialNavigationDialog-2.3.5.1-no-android.cpp:532 +#: src\CelestialNavigationDialog-2.3.5.2-android.cpp:338 +#: src\CelestialNavigationDialog-2.3.5.2-android.cpp:398 +#: src\CelestialNavigationDialog-2.3.5.2-android.cpp:538 +#: src\CelestialNavigationDialog-partial-android.cpp:332 +#: src\CelestialNavigationDialog-partial-android.cpp:392 +#: src\CelestialNavigationDialog-partial-android.cpp:532 +#: src\CelestialNavigationDialog.cpp:338 src\CelestialNavigationDialog.cpp:398 +#: src\CelestialNavigationDialog.cpp:538 src\Sight.cpp:1120 +#: src\Sight.cpp.bak:1121 src\celestial_navigation_pi.cpp:95 +#: src\celestial_navigation_pi.cpp:99 +msgid "Celestial Navigation" +msgstr "Navegació astronòmica" -#: src/CelestialNavigationDialog.cpp:320 +#: src\CelestialNavigationDialog-2.3.5.1-no-android.cpp:391 +#: src\CelestialNavigationDialog-2.3.5.2-android.cpp:397 +#: src\CelestialNavigationDialog-partial-android.cpp:391 +#: src\CelestialNavigationDialog.cpp:397 msgid "Failed to save xml file: " msgstr "Error al desar fitxer xml: " -#: src/CelestialNavigationDialog.cpp:321 src/CelestialNavigationDialog.cpp:466 -#: src/Sight.cpp:1099 src/celestial_navigation_pi.cpp:99 -#: src/celestial_navigation_pi.cpp:152 -msgid "Celestial Navigation" -msgstr "Navegació astronòmica" - -#: src/CelestialNavigationDialog.cpp:351 +#: src\CelestialNavigationDialog-2.3.5.1-no-android.cpp:424 +#: src\CelestialNavigationDialog-2.3.5.2-android.cpp:430 +#: src\CelestialNavigationDialog-partial-android.cpp:424 +#: src\CelestialNavigationDialog.cpp:430 msgid "Time Correction" msgstr "" -#: src/CelestialNavigationDialog.cpp:409 +#: src\CelestialNavigationDialog-2.3.5.1-no-android.cpp:473 +#: src\CelestialNavigationDialog-2.3.5.2-android.cpp:479 +#: src\CelestialNavigationDialog-partial-android.cpp:473 +#: src\CelestialNavigationDialog.cpp:479 msgid "Sun" msgstr "Sol" -#: src/CelestialNavigationDialog.cpp:465 +#: src\CelestialNavigationDialog-2.3.5.1-no-android.cpp:531 +#: src\CelestialNavigationDialog-2.3.5.2-android.cpp:537 +#: src\CelestialNavigationDialog-partial-android.cpp:531 +#: src\CelestialNavigationDialog.cpp:537 msgid "Are you sure you want to delete all sights?" msgstr "Estàs segur que vols esborrar totes les observacions?" -#: src/CelestialNavigationDialog.cpp:510 +#: src\CelestialNavigationDialog-2.3.5.1-no-android.cpp:582 +#: src\CelestialNavigationDialog-2.3.5.2-android.cpp:588 +#: src\CelestialNavigationDialog-partial-android.cpp:582 +#: src\CelestialNavigationDialog.cpp:588 msgid "Celestial_Navigation_Information.html" msgstr "Celestial_Navigation_Information.html" -#: src/CelestialNavigationDialog.cpp:516 -msgid "Show" +#: src\CelestialNavigationDialog-2.3.5.1-no-android.cpp:589 +#: src\CelestialNavigationDialog-2.3.5.2-android.cpp:595 +#: src\CelestialNavigationDialog-partial-android.cpp:589 +#: src\CelestialNavigationDialog.cpp:595 src\CelestialNavigationUI.cpp:55 +msgid "Hide" msgstr "" -#: src/CelestialNavigationDialog.cpp:516 src/CelestialNavigationUI.cpp:58 -msgid "Hide" +#: src\CelestialNavigationDialog-2.3.5.1-no-android.cpp:589 +#: src\CelestialNavigationDialog-2.3.5.2-android.cpp:595 +#: src\CelestialNavigationDialog-partial-android.cpp:589 +#: src\CelestialNavigationDialog.cpp:595 +msgid "Show" msgstr "" -#: src/CelestialNavigationUI.cpp:40 +#: src\CelestialNavigationUI.cpp:40 msgid "New" msgstr "Nou" -#: src/CelestialNavigationUI.cpp:43 -msgid "Edit" -msgstr "Editar" - -#: src/CelestialNavigationUI.cpp:46 -msgid "Delete" -msgstr "Esborrar" - -#: src/CelestialNavigationUI.cpp:49 -msgid "Delete All" -msgstr "Esborrar tot" - -#: src/CelestialNavigationUI.cpp:52 src/CelestialNavigationUI.h:281 +#: src\CelestialNavigationUI.cpp:43 src\CelestialNavigationUI.h:286 msgid "Fix" msgstr "" -#: src/CelestialNavigationUI.cpp:55 +#: src\CelestialNavigationUI.cpp:46 +msgid "Duplicate" +msgstr "" + +#: src\CelestialNavigationUI.cpp:49 msgid "Clock Offset" msgstr "" -#: src/CelestialNavigationUI.cpp:61 +#: src\CelestialNavigationUI.cpp:52 +msgid "Edit" +msgstr "Editar" + +#: src\CelestialNavigationUI.cpp:58 +msgid "Delete" +msgstr "Esborrar" + +#: src\CelestialNavigationUI.cpp:61 msgid "Information" msgstr "Informació" -#: src/CelestialNavigationUI.cpp:136 src/CelestialNavigationUI.cpp:667 -#: src/Sight.h:49 +#: src\CelestialNavigationUI.cpp:64 +msgid "Delete All" +msgstr "Esborrar tot" + +#: src\CelestialNavigationUI.cpp:141 src\CelestialNavigationUI.cpp:674 +#: src\Sight.h:49 msgid "Altitude" msgstr "Altura" -#: src/CelestialNavigationUI.cpp:136 src/CelestialNavigationUI.cpp:677 -#: src/Sight.h:49 +#: src\CelestialNavigationUI.cpp:141 src\CelestialNavigationUI.cpp:683 +#: src\Sight.h:49 msgid "Azimuth" msgstr "Azimut" -#: src/CelestialNavigationUI.cpp:136 src/Sight.h:49 +#: src\CelestialNavigationUI.cpp:141 src\Sight.h:49 msgid "Lunar" msgstr "" -#: src/CelestialNavigationUI.cpp:142 +#: src\CelestialNavigationUI.cpp:147 msgid "Magnetic Azimuth" msgstr "Azimut magnètic" -#: src/CelestialNavigationUI.cpp:145 +#: src\CelestialNavigationUI.cpp:150 msgid "Celestial Body" msgstr "Astre" -#: src/CelestialNavigationUI.cpp:154 +#: src\CelestialNavigationUI.cpp:159 msgid "Find" msgstr "Trobar" -#: src/CelestialNavigationUI.cpp:157 +#: src\CelestialNavigationUI.cpp:162 msgid "Limb" msgstr "Limbo" -#: src/CelestialNavigationUI.cpp:161 -msgid "Lower" -msgstr "Inferior" - -#: src/CelestialNavigationUI.cpp:161 +#: src\CelestialNavigationUI.cpp:166 msgid "Center" msgstr "Central" -#: src/CelestialNavigationUI.cpp:161 +#: src\CelestialNavigationUI.cpp:166 +msgid "Lower" +msgstr "Inferior" + +#: src\CelestialNavigationUI.cpp:166 msgid "Upper" msgstr "Superior" -#: src/CelestialNavigationUI.cpp:186 src/CelestialNavigationUI.cpp:193 -#: src/CelestialNavigationUI.cpp:223 src/CelestialNavigationUI.cpp:230 +#: src\CelestialNavigationUI.cpp:191 src\CelestialNavigationUI.cpp:198 +#: src\CelestialNavigationUI.cpp:228 src\CelestialNavigationUI.cpp:235 msgid "0" msgstr "0" -#: src/CelestialNavigationUI.cpp:189 src/CelestialNavigationUI.cpp:348 -#: src/CelestialNavigationUI.cpp:598 +#: src\CelestialNavigationUI.cpp:194 src\CelestialNavigationUI.cpp:353 +#: src\CelestialNavigationUI.cpp:605 msgid "Degrees" msgstr "Graus" -#: src/CelestialNavigationUI.cpp:196 src/CelestialNavigationUI.cpp:278 -#: src/CelestialNavigationUI.cpp:439 +#: src\CelestialNavigationUI.cpp:201 src\CelestialNavigationUI.cpp:283 +#: src\CelestialNavigationUI.cpp:444 msgid "Minutes" msgstr "Minuts" -#: src/CelestialNavigationUI.cpp:200 +#: src\CelestialNavigationUI.cpp:205 msgid "10" msgstr "" -#: src/CelestialNavigationUI.cpp:203 +#: src\CelestialNavigationUI.cpp:208 msgid "Minutes Certainty" msgstr "" -#: src/CelestialNavigationUI.cpp:217 +#: src\CelestialNavigationUI.cpp:222 msgid "Lunar Altitude" msgstr "" -#: src/CelestialNavigationUI.cpp:226 +#: src\CelestialNavigationUI.cpp:231 msgid "Body Altitude" msgstr "" -#: src/CelestialNavigationUI.cpp:243 +#: src\CelestialNavigationUI.cpp:248 msgid "Sight" msgstr "Observació" -#: src/CelestialNavigationUI.cpp:271 +#: src\CelestialNavigationUI.cpp:276 msgid "Hours" msgstr "Hores" -#: src/CelestialNavigationUI.cpp:285 src/CelestialNavigationUI.cpp:303 -#: src/CelestialNavigationUI.cpp:860 +#: src\CelestialNavigationUI.cpp:290 src\CelestialNavigationUI.cpp:308 +#: src\CelestialNavigationUI.cpp:869 msgid "Seconds" msgstr "Segons" -#: src/CelestialNavigationUI.cpp:293 +#: src\CelestialNavigationUI.cpp:298 msgid "Certainty" msgstr "Incertesa" -#: src/CelestialNavigationUI.cpp:323 -msgid "Time" -msgstr "" - -#: src/CelestialNavigationUI.cpp:330 src/CelestialNavigationUI.cpp:580 +#: src\CelestialNavigationUI.cpp:335 src\CelestialNavigationUI.cpp:587 msgid "Distance" msgstr "Distància" -#: src/CelestialNavigationUI.cpp:337 src/CelestialNavigationUI.cpp:587 +#: src\CelestialNavigationUI.cpp:342 src\CelestialNavigationUI.cpp:594 msgid "Nm" msgstr "Nm" -#: src/CelestialNavigationUI.cpp:341 src/CelestialNavigationUI.cpp:591 +#: src\CelestialNavigationUI.cpp:346 src\CelestialNavigationUI.cpp:598 msgid "Bearing" msgstr "Rumb" -#: src/CelestialNavigationUI.cpp:352 src/CelestialNavigationUI.cpp:602 +#: src\CelestialNavigationUI.cpp:357 src\CelestialNavigationUI.cpp:609 msgid "Magnetic Bearing" msgstr "Rumb magnètic" -#: src/CelestialNavigationUI.cpp:359 +#: src\CelestialNavigationUI.cpp:364 msgid "DR Shift" msgstr "" -#: src/CelestialNavigationUI.cpp:366 +#: src\CelestialNavigationUI.cpp:371 msgid "Transparency" msgstr "Transparència" -#: src/CelestialNavigationUI.cpp:387 +#: src\CelestialNavigationUI.cpp:392 msgid "Config" msgstr "Config" -#: src/CelestialNavigationUI.cpp:399 +#: src\CelestialNavigationUI.cpp:404 msgid "Eye Height" msgstr "Alçada de l'ull" -#: src/CelestialNavigationUI.cpp:403 +#: src\CelestialNavigationUI.cpp:408 msgid "2" msgstr "2" -#: src/CelestialNavigationUI.cpp:406 +#: src\CelestialNavigationUI.cpp:411 msgid "Meters" msgstr "Metres" -#: src/CelestialNavigationUI.cpp:410 +#: src\CelestialNavigationUI.cpp:415 msgid "Temperature" msgstr "Temperatura" -#: src/CelestialNavigationUI.cpp:417 +#: src\CelestialNavigationUI.cpp:422 msgid "Celcius" msgstr "Celcius" -#: src/CelestialNavigationUI.cpp:421 +#: src\CelestialNavigationUI.cpp:426 msgid "Pressure" msgstr "Pressió" -#: src/CelestialNavigationUI.cpp:428 +#: src\CelestialNavigationUI.cpp:433 msgid "MilliBars" msgstr "MiliBars" -#: src/CelestialNavigationUI.cpp:432 +#: src\CelestialNavigationUI.cpp:437 msgid "Index Error" msgstr "Error d'índex" -#: src/CelestialNavigationUI.cpp:446 +#: src\CelestialNavigationUI.cpp:451 msgid "Set As Defaults" msgstr "Posar per defecte" -#: src/CelestialNavigationUI.cpp:453 +#: src\CelestialNavigationUI.cpp:458 msgid "Parameters" msgstr "Paràmetres" -#: src/CelestialNavigationUI.cpp:469 +#: src\CelestialNavigationUI.cpp:474 msgid "Calculations" msgstr "Càlculs" -#: src/CelestialNavigationUI.cpp:571 +#: src\CelestialNavigationUI.cpp:578 msgid "Shift all visible Sights" msgstr "" -#: src/CelestialNavigationUI.cpp:649 src/CelestialNavigationUI.cpp:760 +#: src\CelestialNavigationUI.cpp:656 src\CelestialNavigationUI.cpp:769 msgid "Latitude" msgstr "Latitud" -#: src/CelestialNavigationUI.cpp:658 src/CelestialNavigationUI.cpp:768 +#: src\CelestialNavigationUI.cpp:665 src\CelestialNavigationUI.cpp:777 msgid "Longitude" msgstr "Longitud" -#: src/CelestialNavigationUI.cpp:669 src/CelestialNavigationUI.cpp:679 -msgid "MyLabel" -msgstr "MyLabel" - -#: src/CelestialNavigationUI.cpp:686 -msgid "Done" -msgstr "Fet" +#: src\CelestialNavigationUI.cpp:691 +msgid "Boat Position" +msgstr "" -#: src/CelestialNavigationUI.cpp:689 +#: src\CelestialNavigationUI.cpp:695 msgid "Magnetic" msgstr "Magnètic" -#: src/CelestialNavigationUI.cpp:753 +#: src\CelestialNavigationUI.cpp:698 +msgid "Done" +msgstr "Fet" + +#: src\CelestialNavigationUI.cpp:762 msgid "Fix From Visible Sights" msgstr "Solució per observacions visibles" -#: src/CelestialNavigationUI.cpp:764 +#: src\CelestialNavigationUI.cpp:773 msgid " N/A " msgstr " N/A " -#: src/CelestialNavigationUI.cpp:772 +#: src\CelestialNavigationUI.cpp:781 msgid " N/A " msgstr " N/A " -#: src/CelestialNavigationUI.cpp:776 +#: src\CelestialNavigationUI.cpp:785 msgid "Error" msgstr "Error" -#: src/CelestialNavigationUI.cpp:780 +#: src\CelestialNavigationUI.cpp:789 msgid " N/A " msgstr " N/A " -#: src/CelestialNavigationUI.cpp:787 src/CelestialNavigationUI.cpp:794 +#: src\CelestialNavigationUI.cpp:796 src\CelestialNavigationUI.cpp:803 msgid "Initial" msgstr "Inicial" -#: src/CelestialNavigationUI.cpp:801 +#: src\CelestialNavigationUI.cpp:810 msgid "Alg" msgstr "Alg" -#: src/CelestialNavigationUI.cpp:806 +#: src\CelestialNavigationUI.cpp:815 msgid "Plane" msgstr "Plana" -#: src/CelestialNavigationUI.cpp:807 +#: src\CelestialNavigationUI.cpp:816 msgid "Sphere" msgstr "Esfera" -#: src/CelestialNavigationUI.cpp:808 +#: src\CelestialNavigationUI.cpp:817 msgid "Cone" msgstr "Con" -#: src/CelestialNavigationUI.cpp:809 +#: src\CelestialNavigationUI.cpp:818 msgid "Cone 2" msgstr "Con 2" -#: src/CelestialNavigationUI.cpp:813 +#: src\CelestialNavigationUI.cpp:822 msgid "Go" msgstr "Calcular" -#: src/CelestialNavigationUI.cpp:850 src/CelestialNavigationUI.h:303 +#: src\CelestialNavigationUI.cpp:859 src\CelestialNavigationUI.h:308 msgid "Clock Correction" msgstr "" -#: src/CelestialNavigationUI.h:78 +#: src\CelestialNavigationUI.h:82 msgid "Celestial Navigation Sights" msgstr "Observacions de navegació astronòmica" -#: src/CelestialNavigationUI.h:169 +#: src\CelestialNavigationUI.h:173 msgid "Sight Properties" msgstr "Propietats d'observació" -#: src/CelestialNavigationUI.h:200 +#: src\CelestialNavigationUI.h:204 msgid "Dead Reckoning shift" msgstr "" -#: src/CelestialNavigationUI.h:227 +#: src\CelestialNavigationUI.h:232 msgid "Find Celestial Body" msgstr "Troba astre" -#: src/Sight.cpp:160 +#: src\FixDialog.cpp:192 +msgid "Shifted sights are not used to compute a fix, determine fix visually instead.\n" +msgstr "Les observacions traslladades no s'utilitzen per calcular una solució, determina-la visualment.\n" + +#: src\FixDialog.cpp:193 +msgid "Fix Position" +msgstr "Posició calculada" + +#: src\FixDialog.cpp:338 src\FixDialog.cpp:339 src\FixDialog.cpp:340 +msgid " N/A " +msgstr " N/A " + +#: src\Sight.cpp:172 src\Sight.cpp.bak:173 msgid "Astrolab failed, data unavailable:\n" msgstr "Astrolab ha fallat, dades no vàlides:\n" -#: src/Sight.cpp:161 +#: src\Sight.cpp:173 src\Sight.cpp.bak:174 msgid "\n" "Did you forget to install vsop87d.txt?\n" msgstr "\n" "Has oblidat d'instalar vsop87d.txt?\n" -#: src/Sight.cpp:162 +#: src\Sight.cpp:174 src\Sight.cpp.bak:175 msgid "The plugin will not work correctly" msgstr "El Connector no treballarà correctament" -#: src/Sight.cpp:163 +#: src\Sight.cpp:175 src\Sight.cpp.bak:176 msgid "Failure Alert" msgstr "Alerta per fallada" -#: src/Sight.cpp:474 +#: src\Sight.cpp:495 src\Sight.cpp.bak:496 #, c-format msgid "Applying clock correction of %d seconds\n\n" msgstr "" -#: src/Sight.cpp:536 +#: src\Sight.cpp:557 src\Sight.cpp.bak:558 msgid "Almanac Data For " msgstr "Dades de l'almanac per a " -#: src/Sight.cpp:537 +#: src\Sight.cpp:558 src\Sight.cpp.bak:559 #, c-format msgid "\n" "Geographical Position (lat, lon) = %.4f %.4f\n" @@ -418,16 +482,19 @@ msgstr "\n" "SD = %.1f'\n" "HP = %.1f'\n\n" -#: src/Sight.cpp:552 src/Sight.cpp:690 +#: src\Sight.cpp:573 src\Sight.cpp:711 src\Sight.cpp.bak:574 +#: src\Sight.cpp.bak:712 msgid "Formulas used to calculate sight\n\n" msgstr "Fòrmules utilitzades per calcular l'observació\n\n" -#: src/Sight.cpp:556 src/Sight.cpp:694 +#: src\Sight.cpp:577 src\Sight.cpp:715 src\Sight.cpp.bak:578 +#: src\Sight.cpp.bak:716 #, c-format msgid "Index Error is %.4f degrees\n\n" msgstr "Error de l'índex és %.4f graus\n\n" -#: src/Sight.cpp:561 src/Sight.cpp:699 +#: src\Sight.cpp:582 src\Sight.cpp:720 src\Sight.cpp.bak:583 +#: src\Sight.cpp.bak:721 #, c-format msgid "Eye Height is %.4f meters\n" "Height Correction Degrees = 1.758*sqrt(%.4f) / 60.0\n" @@ -436,7 +503,8 @@ msgstr "Alçada de l'ull és %.4f metres\n" "Graus correcció alçada = 1.758*sqrt(%.4f) / 60.0\n" "Graus correcció alçada = %.4f\n" -#: src/Sight.cpp:568 +#: src\Sight.cpp:589 src\Sight.cpp:799 src\Sight.cpp.bak:590 +#: src\Sight.cpp.bak:800 #, c-format msgid "\n" "Apparent Altitude (Ha)\n" @@ -449,7 +517,8 @@ msgstr "\n" "AltitudAparent = %.4f - %.4f - %.4f\n" "AltitudAparent = %.4f\n" -#: src/Sight.cpp:586 src/Sight.cpp:789 +#: src\Sight.cpp:607 src\Sight.cpp:810 src\Sight.cpp.bak:608 +#: src\Sight.cpp.bak:811 #, c-format msgid "\n" "Refraction Correction\n" @@ -462,7 +531,8 @@ msgstr "\n" "x = tan(Pi/180*%.4f + 4.848e-2*(Pi/180) / (tan(Pi/180*%.4f) + .028))\n" "x = %.4f\n" -#: src/Sight.cpp:591 src/Sight.cpp:794 +#: src\Sight.cpp:612 src\Sight.cpp:815 src\Sight.cpp.bak:613 +#: src\Sight.cpp.bak:816 #, c-format msgid "RefractionCorrection = .267 * Pressure / (x*(Temperature + 273.15)) / 60.0\n" "RefractionCorrection = .267 * %.4f / (x*(%.4f + 273.15)) / 60.0\n" @@ -471,7 +541,8 @@ msgstr "Correcció per Refracció = .267 * Pressió / (x*(Temperatura + 273.15)) "Correcció per Refracció = .267 * %.4f / (x*(%.4f + 273.15)) / 60.0\n" "Correcció per Refracció = %.4f\n" -#: src/Sight.cpp:606 src/Sight.cpp:808 +#: src\Sight.cpp:627 src\Sight.cpp:829 src\Sight.cpp.bak:628 +#: src\Sight.cpp.bak:830 #, c-format msgid "\n" "Sun selected, Limb Correction\n" @@ -480,7 +551,8 @@ msgstr "\n" "Sol sel·leccionat, Correcció per Limb\n" "ra = %.4f, lc = 0.266564/ra = %.4f\n" -#: src/Sight.cpp:616 src/Sight.cpp:732 +#: src\Sight.cpp:637 src\Sight.cpp:753 src\Sight.cpp.bak:638 +#: src\Sight.cpp.bak:754 #, c-format msgid "\n" "Moon selected, Limb Correction\n" @@ -493,22 +565,26 @@ msgstr "\n" "lc = 180/Pi * asin(Pi/180*SD)\n" "lc = %.4f\n" -#: src/Sight.cpp:626 src/Sight.cpp:741 src/Sight.cpp:816 +#: src\Sight.cpp:647 src\Sight.cpp:762 src\Sight.cpp:837 src\Sight.cpp.bak:648 +#: src\Sight.cpp.bak:763 src\Sight.cpp.bak:838 msgid "Upper Limb" msgstr "Limb superior" -#: src/Sight.cpp:629 src/Sight.cpp:744 src/Sight.cpp:819 +#: src\Sight.cpp:650 src\Sight.cpp:765 src\Sight.cpp:840 src\Sight.cpp.bak:651 +#: src\Sight.cpp.bak:766 src\Sight.cpp.bak:841 msgid "Lower Limb" msgstr "Limb inferior" -#: src/Sight.cpp:632 src/Sight.cpp:822 +#: src\Sight.cpp:653 src\Sight.cpp:843 src\Sight.cpp.bak:654 +#: src\Sight.cpp.bak:844 #, c-format msgid "\n" "LimbCorrection = %.4f\n" msgstr "\n" "Correcció per Limb = %.4f\n" -#: src/Sight.cpp:636 src/Sight.cpp:826 +#: src\Sight.cpp:657 src\Sight.cpp:847 src\Sight.cpp.bak:658 +#: src\Sight.cpp.bak:848 #, c-format msgid "\n" "Corrected Altitude\n" @@ -521,7 +597,8 @@ msgstr "\n" "Altura Corregida = %.4f - %.4f - %.4f\n" "Altura Corregida = %.4f\n" -#: src/Sight.cpp:650 src/Sight.cpp:840 +#: src\Sight.cpp:671 src\Sight.cpp:861 src\Sight.cpp.bak:672 +#: src\Sight.cpp.bak:862 #, c-format msgid "\n" "Sun selected, parallax correction\n" @@ -530,7 +607,8 @@ msgstr "\n" "Sol sel·leccionat, Correcció per paralatge\n" "rad = %.4f, HP = 0.002442/rad = %.4f\n" -#: src/Sight.cpp:659 src/Sight.cpp:764 +#: src\Sight.cpp:680 src\Sight.cpp:785 src\Sight.cpp.bak:681 +#: src\Sight.cpp.bak:786 #, c-format msgid "\n" "Moon selected, parallax correction\n" @@ -539,7 +617,8 @@ msgstr "\n" "Lluna sel·leccionada, Correcció per paralatge\n" "HP = %.4f\n" -#: src/Sight.cpp:665 src/Sight.cpp:846 +#: src\Sight.cpp:686 src\Sight.cpp:867 src\Sight.cpp.bak:687 +#: src\Sight.cpp.bak:868 #, c-format msgid "ParallaxCorrection = -180/Pi * asin( sin(Pi/180 * HP ) * cos(Pi/180 * CorrectedAltitude))\n" "ParallaxCorrection = -180/Pi * asin( sin(Pi/180 * %.4f ) * cos(Pi/180 * %.4f))\n" @@ -548,7 +627,7 @@ msgstr "Correcció per paralatge = -180/Pi * asin( sin(Pi/180 * HP ) * cos(Pi/18 "Correcció per paralatge = -180/Pi * asin( sin(Pi/180 * %.4f ) * cos(Pi/180 * %.4f))\n" "Correcció per paralatge = %.4f\n" -#: src/Sight.cpp:672 +#: src\Sight.cpp:693 src\Sight.cpp.bak:694 #, c-format msgid "\n" "Observed Altitude (Ho)\n" @@ -561,16 +640,16 @@ msgstr "\n" "Altura Observada = %.4f - %.4f\n" "Altura Observada = %.4f\n" -#: src/Sight.cpp:706 +#: src\Sight.cpp:727 src\Sight.cpp.bak:728 #, c-format msgid "\n" "Apparent Moon Altitude (Ha)\n" "ApparentAltitudeMoon = MeasurementMoon - IndexCorrection - EyeHeightCorrection\n" -" ApparentAltitudeMoon = %.4f - %.4f - %.4f\n" +"ApparentAltitudeMoon = %.4f - %.4f - %.4f\n" "ApparentAltitudeMoon = %.4f\n" msgstr "" -#: src/Sight.cpp:717 +#: src\Sight.cpp:738 src\Sight.cpp.bak:739 #, c-format msgid "\n" "Refraction Correction\n" @@ -579,20 +658,21 @@ msgid "\n" "x = %.4f\n" msgstr "" -#: src/Sight.cpp:722 +#: src\Sight.cpp:743 src\Sight.cpp.bak:744 #, c-format msgid "RefractionCorrectionMoon = .267 * Pressure / (x*(Temperature + 273.15)) / 60.0\n" "RefractionCorrectionMoon = .267 * %.4f / (x*(%.4f + 273.15)) / 60.0\n" "RefractionCorrectionMoon = %.4f\n" msgstr "" -#: src/Sight.cpp:747 src/Sight.cpp:750 +#: src\Sight.cpp:768 src\Sight.cpp:771 src\Sight.cpp.bak:769 +#: src\Sight.cpp.bak:772 #, c-format msgid "\n" "LimbCorrectionMoon = %.4f\n" msgstr "" -#: src/Sight.cpp:753 +#: src\Sight.cpp:774 src\Sight.cpp.bak:775 #, c-format msgid "\n" "Corrected Altitude\n" @@ -601,108 +681,82 @@ msgid "\n" "CorrectedAltitudeMoon = %.4f\n" msgstr "" -#: src/Sight.cpp:768 +#: src\Sight.cpp:789 src\Sight.cpp.bak:790 #, c-format msgid "ParallaxCorrectionMoon = -180/Pi * asin( sin(Pi/180 * HP ) * cos(Pi/180 * CorrectedAltitude))\n" -" ParallaxCorrectionMoon = -180/Pi * asin( sin(Pi/180 * %.4f ) * cos(Pi/180 * %.4f))\n" +"ParallaxCorrectionMoon = -180/Pi * asin( sin(Pi/180 * %.4f ) * cos(Pi/180 * %.4f))\n" "ParallaxCorrectionMoon = %.4f\n" msgstr "" -#: src/Sight.cpp:778 -#, c-format -msgid "\n" -"Apparent Altitude (Ha)\n" -"ApparentAltitude = Measurement - IndexCorrection - EyeHeightCorrection\n" -" ApparentAltitude = %.4f - %.4f - %.4f\n" -"ApparentAltitude = %.4f\n" -msgstr "" - -#: src/Sight.cpp:857 +#: src\Sight.cpp:878 src\Sight.cpp.bak:879 #, c-format msgid "CorrectionsMoon = %.4f\n" "CorrectionsBody = %.4f\n" "Corrections = abs(CorrectionsMoon - CorrectionsBody) = %.4f\n" msgstr "" -#: src/Sight.cpp:863 +#: src\Sight.cpp:884 src\Sight.cpp.bak:885 #, c-format msgid "CorrectedMeasurement = Measurement - Corrections - IndexCorrection\n" "CorrectedMeasurement = %.4f - %.4f - %.4f\n" "CorrectedMeasurement = %.4f\n" msgstr "" -#: src/Sight.cpp:888 +#: src\Sight.cpp:909 src\Sight.cpp.bak:910 msgid "\n" "Calculated angle between Moon and " msgstr "" -#: src/Sight.cpp:890 +#: src\Sight.cpp:911 src\Sight.cpp.bak:912 #, c-format msgid "\n" "Error from measurement: %.4f" msgstr "" -#: src/Sight.cpp:894 +#: src\Sight.cpp:915 src\Sight.cpp.bak:916 msgid "\n" "Moon takes 28 days to orbit, one degree of error takes 6720 seconds" msgstr "" -#: src/Sight.cpp:895 +#: src\Sight.cpp:916 src\Sight.cpp.bak:917 #, c-format msgid "\n" "Time correction %.4f seconds" msgstr "" -#: src/Sight.cpp:1099 +#: src\Sight.cpp:1120 src\Sight.cpp.bak:1121 msgid "Building bearing Sight Positions" msgstr "Resolent situació de les observacions" -#: src/SightDialog.cpp:172 +#: src\SightDialog.cpp:184 msgid "Measurement certainty likely set to small, sight may not appear " msgstr "S'ha establert una incertesa massa petita, l'observació pot no aparèixer " -#: src/SightDialog.cpp:173 src/SightDialog.cpp:256 +#: src\SightDialog.cpp:185 src\SightDialog.cpp:279 msgid "Warning" msgstr "Alerta" -#: src/SightDialog.cpp:255 +#: src\SightDialog.cpp:278 msgid "Lunar shot will be invalid taking distance from moon to itself" msgstr "" -#: src/celestial_navigation_pi.cpp:90 -msgid "Failed to load file:\n" -msgstr "No s'ha pogut carregar el fitxer:\n" - -#: src/celestial_navigation_pi.cpp:91 -msgid "\n" -"Magnetic data will not be available for the celestial navigation plugin." -msgstr "\n" -"Dadesde magnetisme no disponibles per aquest Connector ." - -#: src/celestial_navigation_pi.cpp:92 -msgid "OpenCPN Alert" -msgstr "Alerta OpenCPN" - -#: src/celestial_navigation_pi.cpp:157 -msgid "Celestial Navigation PlugIn for OpenCPN" -msgstr "Connector de navegació astronòmica per a OpenCPN" +#: src\celestial_navigation_pi.cpp:179 +msgid "open error" +msgstr "" -#: src/celestial_navigation_pi.cpp:162 -msgid "Celestial Navigation PlugIn for OpenCPN.\n" -"Implements nautical almanac for sun, moon, planets,\n" -"and various navigational stars.\n" -"Compute position fix from celestial measurements." +#: src\celestial_navigation_pi.cpp:180 +msgid "corrupt record" msgstr "" -#: src/FixDialog.cpp:189 -msgid "Shifted sights are not used to compute a fix, determine fix visually instead.\n" -msgstr "Les observacions traslladades no s'utilitzen per calcular una solució, determina-la visualment.\n" +#: src\celestial_navigation_pi.cpp:181 +msgid "too many models" +msgstr "" -#: src/FixDialog.cpp:190 -msgid "Fix Position" -msgstr "Posició calculada" +#: src\celestial_navigation_pi.cpp:184 +msgid "Magnetic data will not be available for the celestial navigation plugin." +msgstr "" -#: src/FixDialog.cpp:335 src/FixDialog.cpp:336 src/FixDialog.cpp:337 -msgid " N/A " -msgstr " N/A " +#: src\celestial_navigation_pi.cpp:185 +msgid "OpenCPN Alert" +msgstr "Alerta OpenCPN" diff --git a/po/celestial_navigation_pi.pot b/po/celestial_navigation_pi.pot index 4034a98..3729697 100644 --- a/po/celestial_navigation_pi.pot +++ b/po/celestial_navigation_pi.pot @@ -6,9 +6,9 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: celestial_navigation_pi .\n" +"Project-Id-Version: celestial_navigation_pi 2.3.5.2\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2017-10-11 09:16+0200\n" +"POT-Creation-Date: 2021-10-27 22:15+0200\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -17,388 +17,457 @@ msgstr "" "Content-Type: text/plain; charset=CHARSET\n" "Content-Transfer-Encoding: 8bit\n" -#: src/CelestialNavigationDialog.cpp:130 src/CelestialNavigationUI.cpp:137 +#: src\CelestialNavigationDialog-2.3.5.1-no-android.cpp:149 +#: src\CelestialNavigationDialog-2.3.5.2-android.cpp:150 +#: src\CelestialNavigationDialog-partial-android.cpp:149 +#: src\CelestialNavigationDialog.cpp:150 src\CelestialNavigationUI.cpp:137 msgid "Type" msgstr "" -#: src/CelestialNavigationDialog.cpp:131 +#: src\CelestialNavigationDialog-2.3.5.1-no-android.cpp:150 +#: src\CelestialNavigationDialog-2.3.5.2-android.cpp:151 +#: src\CelestialNavigationDialog-partial-android.cpp:150 +#: src\CelestialNavigationDialog.cpp:151 msgid "Body" msgstr "" -#: src/CelestialNavigationDialog.cpp:132 src/CelestialNavigationUI.cpp:328 +#: src\CelestialNavigationDialog-2.3.5.1-no-android.cpp:151 +#: src\CelestialNavigationDialog-2.3.5.2-android.cpp:152 +#: src\CelestialNavigationDialog-partial-android.cpp:151 +#: src\CelestialNavigationDialog.cpp:152 src\CelestialNavigationUI.cpp:328 msgid "Time (UT)" msgstr "" -#: src/CelestialNavigationDialog.cpp:133 src/CelestialNavigationUI.cpp:184 +#: src\CelestialNavigationDialog-2.3.5.1-no-android.cpp:152 +#: src\CelestialNavigationDialog-2.3.5.2-android.cpp:153 +#: src\CelestialNavigationDialog-partial-android.cpp:152 +#: src\CelestialNavigationDialog.cpp:153 src\CelestialNavigationUI.cpp:184 msgid "Measurement" msgstr "" -#: src/CelestialNavigationDialog.cpp:134 src/CelestialNavigationUI.cpp:381 +#: src\CelestialNavigationDialog-2.3.5.1-no-android.cpp:153 +#: src\CelestialNavigationDialog-2.3.5.2-android.cpp:154 +#: src\CelestialNavigationDialog-partial-android.cpp:153 +#: src\CelestialNavigationDialog.cpp:154 src\CelestialNavigationUI.cpp:381 msgid "Color" msgstr "" -#: src/CelestialNavigationDialog.cpp:203 src/celestial_navigation_pi.cpp:160 +#: src\CelestialNavigationDialog-2.3.5.1-no-android.cpp:266 +#: src\CelestialNavigationDialog-2.3.5.2-android.cpp:272 +#: src\CelestialNavigationDialog-partial-android.cpp:266 +#: src\CelestialNavigationDialog.cpp:272 src\celestial_navigation_pi.cpp:177 msgid "Failed to load file: " msgstr "" -#: src/CelestialNavigationDialog.cpp:208 +#: src\CelestialNavigationDialog-2.3.5.1-no-android.cpp:271 +#: src\CelestialNavigationDialog-2.3.5.2-android.cpp:277 +#: src\CelestialNavigationDialog-partial-android.cpp:271 +#: src\CelestialNavigationDialog.cpp:277 msgid "Invalid xml file" msgstr "" -#: src/CelestialNavigationDialog.cpp:260 +#: src\CelestialNavigationDialog-2.3.5.1-no-android.cpp:323 +#: src\CelestialNavigationDialog-2.3.5.2-android.cpp:329 +#: src\CelestialNavigationDialog-partial-android.cpp:323 +#: src\CelestialNavigationDialog.cpp:329 msgid "Unrecognized xml node" msgstr "" -#: src/CelestialNavigationDialog.cpp:269 src/CelestialNavigationDialog.cpp:329 -#: src/CelestialNavigationDialog.cpp:469 src/Sight.cpp:1108 -#: src/celestial_navigation_pi.cpp:83 src/celestial_navigation_pi.cpp:136 +#: src\CelestialNavigationDialog-2.3.5.1-no-android.cpp:332 +#: src\CelestialNavigationDialog-2.3.5.1-no-android.cpp:392 +#: src\CelestialNavigationDialog-2.3.5.1-no-android.cpp:532 +#: src\CelestialNavigationDialog-2.3.5.2-android.cpp:338 +#: src\CelestialNavigationDialog-2.3.5.2-android.cpp:398 +#: src\CelestialNavigationDialog-2.3.5.2-android.cpp:538 +#: src\CelestialNavigationDialog-partial-android.cpp:332 +#: src\CelestialNavigationDialog-partial-android.cpp:392 +#: src\CelestialNavigationDialog-partial-android.cpp:532 +#: src\CelestialNavigationDialog.cpp:338 src\CelestialNavigationDialog.cpp:398 +#: src\CelestialNavigationDialog.cpp:538 src\Sight.cpp:1120 +#: src\Sight.cpp.bak:1121 src\celestial_navigation_pi.cpp:95 +#: src\celestial_navigation_pi.cpp:99 msgid "Celestial Navigation" msgstr "" -#: src/CelestialNavigationDialog.cpp:328 +#: src\CelestialNavigationDialog-2.3.5.1-no-android.cpp:391 +#: src\CelestialNavigationDialog-2.3.5.2-android.cpp:397 +#: src\CelestialNavigationDialog-partial-android.cpp:391 +#: src\CelestialNavigationDialog.cpp:397 msgid "Failed to save xml file: " msgstr "" -#: src/CelestialNavigationDialog.cpp:361 +#: src\CelestialNavigationDialog-2.3.5.1-no-android.cpp:424 +#: src\CelestialNavigationDialog-2.3.5.2-android.cpp:430 +#: src\CelestialNavigationDialog-partial-android.cpp:424 +#: src\CelestialNavigationDialog.cpp:430 msgid "Time Correction" msgstr "" -#: src/CelestialNavigationDialog.cpp:410 +#: src\CelestialNavigationDialog-2.3.5.1-no-android.cpp:473 +#: src\CelestialNavigationDialog-2.3.5.2-android.cpp:479 +#: src\CelestialNavigationDialog-partial-android.cpp:473 +#: src\CelestialNavigationDialog.cpp:479 msgid "Sun" msgstr "" -#: src/CelestialNavigationDialog.cpp:468 +#: src\CelestialNavigationDialog-2.3.5.1-no-android.cpp:531 +#: src\CelestialNavigationDialog-2.3.5.2-android.cpp:537 +#: src\CelestialNavigationDialog-partial-android.cpp:531 +#: src\CelestialNavigationDialog.cpp:537 msgid "Are you sure you want to delete all sights?" msgstr "" -#: src/CelestialNavigationDialog.cpp:511 +#: src\CelestialNavigationDialog-2.3.5.1-no-android.cpp:582 +#: src\CelestialNavigationDialog-2.3.5.2-android.cpp:588 +#: src\CelestialNavigationDialog-partial-android.cpp:582 +#: src\CelestialNavigationDialog.cpp:588 msgid "Celestial_Navigation_Information.html" msgstr "" -#: src/CelestialNavigationDialog.cpp:517 -msgid "Show" +#: src\CelestialNavigationDialog-2.3.5.1-no-android.cpp:589 +#: src\CelestialNavigationDialog-2.3.5.2-android.cpp:595 +#: src\CelestialNavigationDialog-partial-android.cpp:589 +#: src\CelestialNavigationDialog.cpp:595 src\CelestialNavigationUI.cpp:55 +msgid "Hide" msgstr "" -#: src/CelestialNavigationDialog.cpp:517 src/CelestialNavigationUI.cpp:55 -msgid "Hide" +#: src\CelestialNavigationDialog-2.3.5.1-no-android.cpp:589 +#: src\CelestialNavigationDialog-2.3.5.2-android.cpp:595 +#: src\CelestialNavigationDialog-partial-android.cpp:589 +#: src\CelestialNavigationDialog.cpp:595 +msgid "Show" msgstr "" -#: src/CelestialNavigationUI.cpp:40 +#: src\CelestialNavigationUI.cpp:40 msgid "New" msgstr "" -#: src/CelestialNavigationUI.cpp:43 src/CelestialNavigationUI.h:283 +#: src\CelestialNavigationUI.cpp:43 src\CelestialNavigationUI.h:286 msgid "Fix" msgstr "" -#: src/CelestialNavigationUI.cpp:46 +#: src\CelestialNavigationUI.cpp:46 msgid "Duplicate" msgstr "" -#: src/CelestialNavigationUI.cpp:49 +#: src\CelestialNavigationUI.cpp:49 msgid "Clock Offset" msgstr "" -#: src/CelestialNavigationUI.cpp:52 +#: src\CelestialNavigationUI.cpp:52 msgid "Edit" msgstr "" -#: src/CelestialNavigationUI.cpp:58 +#: src\CelestialNavigationUI.cpp:58 msgid "Delete" msgstr "" -#: src/CelestialNavigationUI.cpp:61 +#: src\CelestialNavigationUI.cpp:61 msgid "Information" msgstr "" -#: src/CelestialNavigationUI.cpp:64 +#: src\CelestialNavigationUI.cpp:64 msgid "Delete All" msgstr "" -#: src/CelestialNavigationUI.cpp:141 src/CelestialNavigationUI.cpp:674 -#: src/Sight.h:49 +#: src\CelestialNavigationUI.cpp:141 src\CelestialNavigationUI.cpp:674 +#: src\Sight.h:49 msgid "Altitude" msgstr "" -#: src/CelestialNavigationUI.cpp:141 src/CelestialNavigationUI.cpp:684 -#: src/Sight.h:49 +#: src\CelestialNavigationUI.cpp:141 src\CelestialNavigationUI.cpp:683 +#: src\Sight.h:49 msgid "Azimuth" msgstr "" -#: src/CelestialNavigationUI.cpp:141 src/Sight.h:49 +#: src\CelestialNavigationUI.cpp:141 src\Sight.h:49 msgid "Lunar" msgstr "" -#: src/CelestialNavigationUI.cpp:147 +#: src\CelestialNavigationUI.cpp:147 msgid "Magnetic Azimuth" msgstr "" -#: src/CelestialNavigationUI.cpp:150 +#: src\CelestialNavigationUI.cpp:150 msgid "Celestial Body" msgstr "" -#: src/CelestialNavigationUI.cpp:159 +#: src\CelestialNavigationUI.cpp:159 msgid "Find" msgstr "" -#: src/CelestialNavigationUI.cpp:162 +#: src\CelestialNavigationUI.cpp:162 msgid "Limb" msgstr "" -#: src/CelestialNavigationUI.cpp:166 -msgid "Lower" +#: src\CelestialNavigationUI.cpp:166 +msgid "Center" msgstr "" -#: src/CelestialNavigationUI.cpp:166 -msgid "Center" +#: src\CelestialNavigationUI.cpp:166 +msgid "Lower" msgstr "" -#: src/CelestialNavigationUI.cpp:166 +#: src\CelestialNavigationUI.cpp:166 msgid "Upper" msgstr "" -#: src/CelestialNavigationUI.cpp:191 src/CelestialNavigationUI.cpp:198 -#: src/CelestialNavigationUI.cpp:228 src/CelestialNavigationUI.cpp:235 +#: src\CelestialNavigationUI.cpp:191 src\CelestialNavigationUI.cpp:198 +#: src\CelestialNavigationUI.cpp:228 src\CelestialNavigationUI.cpp:235 msgid "0" msgstr "" -#: src/CelestialNavigationUI.cpp:194 src/CelestialNavigationUI.cpp:353 -#: src/CelestialNavigationUI.cpp:605 +#: src\CelestialNavigationUI.cpp:194 src\CelestialNavigationUI.cpp:353 +#: src\CelestialNavigationUI.cpp:605 msgid "Degrees" msgstr "" -#: src/CelestialNavigationUI.cpp:201 src/CelestialNavigationUI.cpp:283 -#: src/CelestialNavigationUI.cpp:444 +#: src\CelestialNavigationUI.cpp:201 src\CelestialNavigationUI.cpp:283 +#: src\CelestialNavigationUI.cpp:444 msgid "Minutes" msgstr "" -#: src/CelestialNavigationUI.cpp:205 +#: src\CelestialNavigationUI.cpp:205 msgid "10" msgstr "" -#: src/CelestialNavigationUI.cpp:208 +#: src\CelestialNavigationUI.cpp:208 msgid "Minutes Certainty" msgstr "" -#: src/CelestialNavigationUI.cpp:222 +#: src\CelestialNavigationUI.cpp:222 msgid "Lunar Altitude" msgstr "" -#: src/CelestialNavigationUI.cpp:231 +#: src\CelestialNavigationUI.cpp:231 msgid "Body Altitude" msgstr "" -#: src/CelestialNavigationUI.cpp:248 +#: src\CelestialNavigationUI.cpp:248 msgid "Sight" msgstr "" -#: src/CelestialNavigationUI.cpp:276 +#: src\CelestialNavigationUI.cpp:276 msgid "Hours" msgstr "" -#: src/CelestialNavigationUI.cpp:290 src/CelestialNavigationUI.cpp:308 -#: src/CelestialNavigationUI.cpp:867 +#: src\CelestialNavigationUI.cpp:290 src\CelestialNavigationUI.cpp:308 +#: src\CelestialNavigationUI.cpp:869 msgid "Seconds" msgstr "" -#: src/CelestialNavigationUI.cpp:298 +#: src\CelestialNavigationUI.cpp:298 msgid "Certainty" msgstr "" -#: src/CelestialNavigationUI.cpp:335 src/CelestialNavigationUI.cpp:587 +#: src\CelestialNavigationUI.cpp:335 src\CelestialNavigationUI.cpp:587 msgid "Distance" msgstr "" -#: src/CelestialNavigationUI.cpp:342 src/CelestialNavigationUI.cpp:594 +#: src\CelestialNavigationUI.cpp:342 src\CelestialNavigationUI.cpp:594 msgid "Nm" msgstr "" -#: src/CelestialNavigationUI.cpp:346 src/CelestialNavigationUI.cpp:598 +#: src\CelestialNavigationUI.cpp:346 src\CelestialNavigationUI.cpp:598 msgid "Bearing" msgstr "" -#: src/CelestialNavigationUI.cpp:357 src/CelestialNavigationUI.cpp:609 +#: src\CelestialNavigationUI.cpp:357 src\CelestialNavigationUI.cpp:609 msgid "Magnetic Bearing" msgstr "" -#: src/CelestialNavigationUI.cpp:364 +#: src\CelestialNavigationUI.cpp:364 msgid "DR Shift" msgstr "" -#: src/CelestialNavigationUI.cpp:371 +#: src\CelestialNavigationUI.cpp:371 msgid "Transparency" msgstr "" -#: src/CelestialNavigationUI.cpp:392 +#: src\CelestialNavigationUI.cpp:392 msgid "Config" msgstr "" -#: src/CelestialNavigationUI.cpp:404 +#: src\CelestialNavigationUI.cpp:404 msgid "Eye Height" msgstr "" -#: src/CelestialNavigationUI.cpp:408 +#: src\CelestialNavigationUI.cpp:408 msgid "2" msgstr "" -#: src/CelestialNavigationUI.cpp:411 +#: src\CelestialNavigationUI.cpp:411 msgid "Meters" msgstr "" -#: src/CelestialNavigationUI.cpp:415 +#: src\CelestialNavigationUI.cpp:415 msgid "Temperature" msgstr "" -#: src/CelestialNavigationUI.cpp:422 +#: src\CelestialNavigationUI.cpp:422 msgid "Celcius" msgstr "" -#: src/CelestialNavigationUI.cpp:426 +#: src\CelestialNavigationUI.cpp:426 msgid "Pressure" msgstr "" -#: src/CelestialNavigationUI.cpp:433 +#: src\CelestialNavigationUI.cpp:433 msgid "MilliBars" msgstr "" -#: src/CelestialNavigationUI.cpp:437 +#: src\CelestialNavigationUI.cpp:437 msgid "Index Error" msgstr "" -#: src/CelestialNavigationUI.cpp:451 +#: src\CelestialNavigationUI.cpp:451 msgid "Set As Defaults" msgstr "" -#: src/CelestialNavigationUI.cpp:458 +#: src\CelestialNavigationUI.cpp:458 msgid "Parameters" msgstr "" -#: src/CelestialNavigationUI.cpp:474 +#: src\CelestialNavigationUI.cpp:474 msgid "Calculations" msgstr "" -#: src/CelestialNavigationUI.cpp:578 +#: src\CelestialNavigationUI.cpp:578 msgid "Shift all visible Sights" msgstr "" -#: src/CelestialNavigationUI.cpp:656 src/CelestialNavigationUI.cpp:767 +#: src\CelestialNavigationUI.cpp:656 src\CelestialNavigationUI.cpp:769 msgid "Latitude" msgstr "" -#: src/CelestialNavigationUI.cpp:665 src/CelestialNavigationUI.cpp:775 +#: src\CelestialNavigationUI.cpp:665 src\CelestialNavigationUI.cpp:777 msgid "Longitude" msgstr "" -#: src/CelestialNavigationUI.cpp:676 src/CelestialNavigationUI.cpp:686 -msgid "MyLabel" +#: src\CelestialNavigationUI.cpp:691 +msgid "Boat Position" msgstr "" -#: src/CelestialNavigationUI.cpp:693 -msgid "Done" +#: src\CelestialNavigationUI.cpp:695 +msgid "Magnetic" msgstr "" -#: src/CelestialNavigationUI.cpp:696 -msgid "Magnetic" +#: src\CelestialNavigationUI.cpp:698 +msgid "Done" msgstr "" -#: src/CelestialNavigationUI.cpp:760 +#: src\CelestialNavigationUI.cpp:762 msgid "Fix From Visible Sights" msgstr "" -#: src/CelestialNavigationUI.cpp:771 +#: src\CelestialNavigationUI.cpp:773 msgid " N/A " msgstr "" -#: src/CelestialNavigationUI.cpp:779 +#: src\CelestialNavigationUI.cpp:781 msgid " N/A " msgstr "" -#: src/CelestialNavigationUI.cpp:783 +#: src\CelestialNavigationUI.cpp:785 msgid "Error" msgstr "" -#: src/CelestialNavigationUI.cpp:787 +#: src\CelestialNavigationUI.cpp:789 msgid " N/A " msgstr "" -#: src/CelestialNavigationUI.cpp:794 src/CelestialNavigationUI.cpp:801 +#: src\CelestialNavigationUI.cpp:796 src\CelestialNavigationUI.cpp:803 msgid "Initial" msgstr "" -#: src/CelestialNavigationUI.cpp:808 +#: src\CelestialNavigationUI.cpp:810 msgid "Alg" msgstr "" -#: src/CelestialNavigationUI.cpp:813 +#: src\CelestialNavigationUI.cpp:815 msgid "Plane" msgstr "" -#: src/CelestialNavigationUI.cpp:814 +#: src\CelestialNavigationUI.cpp:816 msgid "Sphere" msgstr "" -#: src/CelestialNavigationUI.cpp:815 +#: src\CelestialNavigationUI.cpp:817 msgid "Cone" msgstr "" -#: src/CelestialNavigationUI.cpp:816 +#: src\CelestialNavigationUI.cpp:818 msgid "Cone 2" msgstr "" -#: src/CelestialNavigationUI.cpp:820 +#: src\CelestialNavigationUI.cpp:822 msgid "Go" msgstr "" -#: src/CelestialNavigationUI.cpp:857 src/CelestialNavigationUI.h:305 +#: src\CelestialNavigationUI.cpp:859 src\CelestialNavigationUI.h:308 msgid "Clock Correction" msgstr "" -#: src/CelestialNavigationUI.h:80 +#: src\CelestialNavigationUI.h:82 msgid "Celestial Navigation Sights" msgstr "" -#: src/CelestialNavigationUI.h:171 +#: src\CelestialNavigationUI.h:173 msgid "Sight Properties" msgstr "" -#: src/CelestialNavigationUI.h:202 +#: src\CelestialNavigationUI.h:204 msgid "Dead Reckoning shift" msgstr "" -#: src/CelestialNavigationUI.h:229 +#: src\CelestialNavigationUI.h:232 msgid "Find Celestial Body" msgstr "" -#: src/Sight.cpp:161 +#: src\FixDialog.cpp:192 +msgid "" +"Shifted sights are not used to compute a fix, determine fix visually " +"instead.\n" +msgstr "" + +#: src\FixDialog.cpp:193 +msgid "Fix Position" +msgstr "" + +#: src\FixDialog.cpp:338 src\FixDialog.cpp:339 src\FixDialog.cpp:340 +msgid " N/A " +msgstr "" + +#: src\Sight.cpp:172 src\Sight.cpp.bak:173 msgid "Astrolab failed, data unavailable:\n" msgstr "" -#: src/Sight.cpp:162 +#: src\Sight.cpp:173 src\Sight.cpp.bak:174 msgid "" "\n" "Did you forget to install vsop87d.txt?\n" msgstr "" -#: src/Sight.cpp:163 +#: src\Sight.cpp:174 src\Sight.cpp.bak:175 msgid "The plugin will not work correctly" msgstr "" -#: src/Sight.cpp:164 +#: src\Sight.cpp:175 src\Sight.cpp.bak:176 msgid "Failure Alert" msgstr "" -#: src/Sight.cpp:483 +#: src\Sight.cpp:495 src\Sight.cpp.bak:496 #, c-format msgid "" "Applying clock correction of %d seconds\n" "\n" msgstr "" -#: src/Sight.cpp:545 +#: src\Sight.cpp:557 src\Sight.cpp.bak:558 msgid "Almanac Data For " msgstr "" -#: src/Sight.cpp:546 +#: src\Sight.cpp:558 src\Sight.cpp.bak:559 #, c-format msgid "" "\n" @@ -412,20 +481,23 @@ msgid "" "\n" msgstr "" -#: src/Sight.cpp:561 src/Sight.cpp:699 +#: src\Sight.cpp:573 src\Sight.cpp:711 src\Sight.cpp.bak:574 +#: src\Sight.cpp.bak:712 msgid "" "Formulas used to calculate sight\n" "\n" msgstr "" -#: src/Sight.cpp:565 src/Sight.cpp:703 +#: src\Sight.cpp:577 src\Sight.cpp:715 src\Sight.cpp.bak:578 +#: src\Sight.cpp.bak:716 #, c-format msgid "" "Index Error is %.4f degrees\n" "\n" msgstr "" -#: src/Sight.cpp:570 src/Sight.cpp:708 +#: src\Sight.cpp:582 src\Sight.cpp:720 src\Sight.cpp.bak:583 +#: src\Sight.cpp.bak:721 #, c-format msgid "" "Eye Height is %.4f meters\n" @@ -433,7 +505,8 @@ msgid "" "Height Correction Degrees = %.4f\n" msgstr "" -#: src/Sight.cpp:577 src/Sight.cpp:787 +#: src\Sight.cpp:589 src\Sight.cpp:799 src\Sight.cpp.bak:590 +#: src\Sight.cpp.bak:800 #, c-format msgid "" "\n" @@ -443,7 +516,8 @@ msgid "" "ApparentAltitude = %.4f\n" msgstr "" -#: src/Sight.cpp:595 src/Sight.cpp:798 +#: src\Sight.cpp:607 src\Sight.cpp:810 src\Sight.cpp.bak:608 +#: src\Sight.cpp.bak:811 #, c-format msgid "" "\n" @@ -454,7 +528,8 @@ msgid "" "x = %.4f\n" msgstr "" -#: src/Sight.cpp:600 src/Sight.cpp:803 +#: src\Sight.cpp:612 src\Sight.cpp:815 src\Sight.cpp.bak:613 +#: src\Sight.cpp.bak:816 #, c-format msgid "" "RefractionCorrection = .267 * Pressure / (x*(Temperature + 273.15)) / 60.0\n" @@ -462,7 +537,8 @@ msgid "" "RefractionCorrection = %.4f\n" msgstr "" -#: src/Sight.cpp:615 src/Sight.cpp:817 +#: src\Sight.cpp:627 src\Sight.cpp:829 src\Sight.cpp.bak:628 +#: src\Sight.cpp.bak:830 #, c-format msgid "" "\n" @@ -470,7 +546,8 @@ msgid "" "ra = %.4f, lc = 0.266564/ra = %.4f\n" msgstr "" -#: src/Sight.cpp:625 src/Sight.cpp:741 +#: src\Sight.cpp:637 src\Sight.cpp:753 src\Sight.cpp.bak:638 +#: src\Sight.cpp.bak:754 #, c-format msgid "" "\n" @@ -480,33 +557,37 @@ msgid "" "lc = %.4f\n" msgstr "" -#: src/Sight.cpp:635 src/Sight.cpp:750 src/Sight.cpp:825 +#: src\Sight.cpp:647 src\Sight.cpp:762 src\Sight.cpp:837 src\Sight.cpp.bak:648 +#: src\Sight.cpp.bak:763 src\Sight.cpp.bak:838 msgid "Upper Limb" msgstr "" -#: src/Sight.cpp:638 src/Sight.cpp:753 src/Sight.cpp:828 +#: src\Sight.cpp:650 src\Sight.cpp:765 src\Sight.cpp:840 src\Sight.cpp.bak:651 +#: src\Sight.cpp.bak:766 src\Sight.cpp.bak:841 msgid "Lower Limb" msgstr "" -#: src/Sight.cpp:641 src/Sight.cpp:831 +#: src\Sight.cpp:653 src\Sight.cpp:843 src\Sight.cpp.bak:654 +#: src\Sight.cpp.bak:844 #, c-format msgid "" "\n" "LimbCorrection = %.4f\n" msgstr "" -#: src/Sight.cpp:645 src/Sight.cpp:835 +#: src\Sight.cpp:657 src\Sight.cpp:847 src\Sight.cpp.bak:658 +#: src\Sight.cpp.bak:848 #, c-format msgid "" "\n" "Corrected Altitude\n" -"CorrectedAltitude = ApparentAltitude - RefractionCorrection - " -"LimbCorrection\n" +"CorrectedAltitude = ApparentAltitude - RefractionCorrection - LimbCorrection\n" "CorrectedAltitude = %.4f - %.4f - %.4f\n" "CorrectedAltitude = %.4f\n" msgstr "" -#: src/Sight.cpp:659 src/Sight.cpp:849 +#: src\Sight.cpp:671 src\Sight.cpp:861 src\Sight.cpp.bak:672 +#: src\Sight.cpp.bak:862 #, c-format msgid "" "\n" @@ -514,7 +595,8 @@ msgid "" "rad = %.4f, HP = 0.002442/rad = %.4f\n" msgstr "" -#: src/Sight.cpp:668 src/Sight.cpp:773 +#: src\Sight.cpp:680 src\Sight.cpp:785 src\Sight.cpp.bak:681 +#: src\Sight.cpp.bak:786 #, c-format msgid "" "\n" @@ -522,7 +604,8 @@ msgid "" "HP = %.4f\n" msgstr "" -#: src/Sight.cpp:674 src/Sight.cpp:855 +#: src\Sight.cpp:686 src\Sight.cpp:867 src\Sight.cpp.bak:687 +#: src\Sight.cpp.bak:868 #, c-format msgid "" "ParallaxCorrection = -180/Pi * asin( sin(Pi/180 * HP ) * cos(Pi/180 * " @@ -532,7 +615,7 @@ msgid "" "ParallaxCorrection = %.4f\n" msgstr "" -#: src/Sight.cpp:681 +#: src\Sight.cpp:693 src\Sight.cpp.bak:694 #, c-format msgid "" "\n" @@ -542,7 +625,7 @@ msgid "" "ObservedAltitude = %.4f\n" msgstr "" -#: src/Sight.cpp:715 +#: src\Sight.cpp:727 src\Sight.cpp.bak:728 #, c-format msgid "" "\n" @@ -553,7 +636,7 @@ msgid "" "ApparentAltitudeMoon = %.4f\n" msgstr "" -#: src/Sight.cpp:726 +#: src\Sight.cpp:738 src\Sight.cpp.bak:739 #, c-format msgid "" "\n" @@ -564,7 +647,7 @@ msgid "" "x = %.4f\n" msgstr "" -#: src/Sight.cpp:731 +#: src\Sight.cpp:743 src\Sight.cpp.bak:744 #, c-format msgid "" "RefractionCorrectionMoon = .267 * Pressure / (x*(Temperature + 273.15)) / " @@ -573,14 +656,15 @@ msgid "" "RefractionCorrectionMoon = %.4f\n" msgstr "" -#: src/Sight.cpp:756 src/Sight.cpp:759 +#: src\Sight.cpp:768 src\Sight.cpp:771 src\Sight.cpp.bak:769 +#: src\Sight.cpp.bak:772 #, c-format msgid "" "\n" "LimbCorrectionMoon = %.4f\n" msgstr "" -#: src/Sight.cpp:762 +#: src\Sight.cpp:774 src\Sight.cpp.bak:775 #, c-format msgid "" "\n" @@ -591,7 +675,7 @@ msgid "" "CorrectedAltitudeMoon = %.4f\n" msgstr "" -#: src/Sight.cpp:777 +#: src\Sight.cpp:789 src\Sight.cpp.bak:790 #, c-format msgid "" "ParallaxCorrectionMoon = -180/Pi * asin( sin(Pi/180 * HP ) * cos(Pi/180 * " @@ -601,7 +685,7 @@ msgid "" "ParallaxCorrectionMoon = %.4f\n" msgstr "" -#: src/Sight.cpp:866 +#: src\Sight.cpp:878 src\Sight.cpp.bak:879 #, c-format msgid "" "CorrectionsMoon = %.4f\n" @@ -609,7 +693,7 @@ msgid "" "Corrections = abs(CorrectionsMoon - CorrectionsBody) = %.4f\n" msgstr "" -#: src/Sight.cpp:872 +#: src\Sight.cpp:884 src\Sight.cpp.bak:885 #, c-format msgid "" "CorrectedMeasurement = Measurement - Corrections - IndexCorrection\n" @@ -617,77 +701,64 @@ msgid "" "CorrectedMeasurement = %.4f\n" msgstr "" -#: src/Sight.cpp:897 +#: src\Sight.cpp:909 src\Sight.cpp.bak:910 msgid "" "\n" "Calculated angle between Moon and " msgstr "" -#: src/Sight.cpp:899 +#: src\Sight.cpp:911 src\Sight.cpp.bak:912 #, c-format msgid "" "\n" "Error from measurement: %.4f" msgstr "" -#: src/Sight.cpp:903 +#: src\Sight.cpp:915 src\Sight.cpp.bak:916 msgid "" "\n" "Moon takes 28 days to orbit, one degree of error takes 6720 seconds" msgstr "" -#: src/Sight.cpp:904 +#: src\Sight.cpp:916 src\Sight.cpp.bak:917 #, c-format msgid "" "\n" "Time correction %.4f seconds" msgstr "" -#: src/Sight.cpp:1108 +#: src\Sight.cpp:1120 src\Sight.cpp.bak:1121 msgid "Building bearing Sight Positions" msgstr "" -#: src/SightDialog.cpp:184 +#: src\SightDialog.cpp:184 msgid "Measurement certainty likely set to small, sight may not appear " msgstr "" -#: src/SightDialog.cpp:185 src/SightDialog.cpp:279 +#: src\SightDialog.cpp:185 src\SightDialog.cpp:279 msgid "Warning" msgstr "" -#: src/SightDialog.cpp:278 +#: src\SightDialog.cpp:278 msgid "Lunar shot will be invalid taking distance from moon to itself" msgstr "" -#: src/celestial_navigation_pi.cpp:141 -msgid "Celestial Navigation PlugIn for OpenCPN" -msgstr "" - -#: src/celestial_navigation_pi.cpp:146 -msgid "" -"Celestial Navigation PlugIn for OpenCPN.\n" -"Implements nautical almanac for sun, moon, planets,\n" -"and various navigational stars.\n" -"Compute position fix from celestial measurements." -msgstr "" - -#: src/celestial_navigation_pi.cpp:162 +#: src\celestial_navigation_pi.cpp:179 msgid "open error" msgstr "" -#: src/celestial_navigation_pi.cpp:163 +#: src\celestial_navigation_pi.cpp:180 msgid "corrupt record" msgstr "" -#: src/celestial_navigation_pi.cpp:164 +#: src\celestial_navigation_pi.cpp:181 msgid "too many models" msgstr "" -#: src/celestial_navigation_pi.cpp:167 -msgid "" -"Magnetic data will not be available for the celestial navigation plugin." +#: src\celestial_navigation_pi.cpp:184 +msgid "Magnetic data will not be available for the celestial navigation plugin." msgstr "" -#: src/celestial_navigation_pi.cpp:168 +#: src\celestial_navigation_pi.cpp:185 msgid "OpenCPN Alert" msgstr "" diff --git a/po/cs_CZ.po b/po/cs_CZ.po index e183b3e..9832ea2 100644 --- a/po/cs_CZ.po +++ b/po/cs_CZ.po @@ -2,403 +2,467 @@ msgid "" msgstr "" "Project-Id-Version: opencpn\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-02-28 14:10-0300\n" -"PO-Revision-Date: 2018-03-03 08:22-0500\n" -"Last-Translator: nohal \n" +"POT-Creation-Date: 2021-10-27 22:15+0200\n" +"PO-Revision-Date: 2023-10-04 18:32\n" +"Last-Translator: \n" "Language-Team: Czech\n" "Language: cs_CZ\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=4; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 3;\n" -"X-Generator: crowdin.com\n" "X-Crowdin-Project: opencpn\n" +"X-Crowdin-Project-ID: 49843\n" "X-Crowdin-Language: cs\n" "X-Crowdin-File: /plugins/celestial_navigation_pi/po/celestial_navigation_pi.pot\n" +"X-Crowdin-File-ID: 108\n" -#: src/CelestialNavigationDialog.cpp:123 src/CelestialNavigationUI.cpp:132 +#: src\CelestialNavigationDialog-2.3.5.1-no-android.cpp:149 +#: src\CelestialNavigationDialog-2.3.5.2-android.cpp:150 +#: src\CelestialNavigationDialog-partial-android.cpp:149 +#: src\CelestialNavigationDialog.cpp:150 src\CelestialNavigationUI.cpp:137 msgid "Type" msgstr "" -#: src/CelestialNavigationDialog.cpp:124 +#: src\CelestialNavigationDialog-2.3.5.1-no-android.cpp:150 +#: src\CelestialNavigationDialog-2.3.5.2-android.cpp:151 +#: src\CelestialNavigationDialog-partial-android.cpp:150 +#: src\CelestialNavigationDialog.cpp:151 msgid "Body" msgstr "" -#: src/CelestialNavigationDialog.cpp:125 -msgid "Time (UTC)" +#: src\CelestialNavigationDialog-2.3.5.1-no-android.cpp:151 +#: src\CelestialNavigationDialog-2.3.5.2-android.cpp:152 +#: src\CelestialNavigationDialog-partial-android.cpp:151 +#: src\CelestialNavigationDialog.cpp:152 src\CelestialNavigationUI.cpp:328 +msgid "Time (UT)" msgstr "" -#: src/CelestialNavigationDialog.cpp:126 src/CelestialNavigationUI.cpp:179 +#: src\CelestialNavigationDialog-2.3.5.1-no-android.cpp:152 +#: src\CelestialNavigationDialog-2.3.5.2-android.cpp:153 +#: src\CelestialNavigationDialog-partial-android.cpp:152 +#: src\CelestialNavigationDialog.cpp:153 src\CelestialNavigationUI.cpp:184 msgid "Measurement" msgstr "" -#: src/CelestialNavigationDialog.cpp:127 src/CelestialNavigationUI.cpp:376 +#: src\CelestialNavigationDialog-2.3.5.1-no-android.cpp:153 +#: src\CelestialNavigationDialog-2.3.5.2-android.cpp:154 +#: src\CelestialNavigationDialog-partial-android.cpp:153 +#: src\CelestialNavigationDialog.cpp:154 src\CelestialNavigationUI.cpp:381 msgid "Color" msgstr "" -#: src/CelestialNavigationDialog.cpp:193 -msgid "Failed to load file." +#: src\CelestialNavigationDialog-2.3.5.1-no-android.cpp:266 +#: src\CelestialNavigationDialog-2.3.5.2-android.cpp:272 +#: src\CelestialNavigationDialog-partial-android.cpp:266 +#: src\CelestialNavigationDialog.cpp:272 src\celestial_navigation_pi.cpp:177 +msgid "Failed to load file: " msgstr "" -#: src/CelestialNavigationDialog.cpp:198 +#: src\CelestialNavigationDialog-2.3.5.1-no-android.cpp:271 +#: src\CelestialNavigationDialog-2.3.5.2-android.cpp:277 +#: src\CelestialNavigationDialog-partial-android.cpp:271 +#: src\CelestialNavigationDialog.cpp:277 msgid "Invalid xml file" msgstr "" -#: src/CelestialNavigationDialog.cpp:250 +#: src\CelestialNavigationDialog-2.3.5.1-no-android.cpp:323 +#: src\CelestialNavigationDialog-2.3.5.2-android.cpp:329 +#: src\CelestialNavigationDialog-partial-android.cpp:323 +#: src\CelestialNavigationDialog.cpp:329 msgid "Unrecognized xml node" msgstr "" -#: src/CelestialNavigationDialog.cpp:260 -msgid "Weather Routing" +#: src\CelestialNavigationDialog-2.3.5.1-no-android.cpp:332 +#: src\CelestialNavigationDialog-2.3.5.1-no-android.cpp:392 +#: src\CelestialNavigationDialog-2.3.5.1-no-android.cpp:532 +#: src\CelestialNavigationDialog-2.3.5.2-android.cpp:338 +#: src\CelestialNavigationDialog-2.3.5.2-android.cpp:398 +#: src\CelestialNavigationDialog-2.3.5.2-android.cpp:538 +#: src\CelestialNavigationDialog-partial-android.cpp:332 +#: src\CelestialNavigationDialog-partial-android.cpp:392 +#: src\CelestialNavigationDialog-partial-android.cpp:532 +#: src\CelestialNavigationDialog.cpp:338 src\CelestialNavigationDialog.cpp:398 +#: src\CelestialNavigationDialog.cpp:538 src\Sight.cpp:1120 +#: src\Sight.cpp.bak:1121 src\celestial_navigation_pi.cpp:95 +#: src\celestial_navigation_pi.cpp:99 +msgid "Celestial Navigation" msgstr "" -#: src/CelestialNavigationDialog.cpp:320 +#: src\CelestialNavigationDialog-2.3.5.1-no-android.cpp:391 +#: src\CelestialNavigationDialog-2.3.5.2-android.cpp:397 +#: src\CelestialNavigationDialog-partial-android.cpp:391 +#: src\CelestialNavigationDialog.cpp:397 msgid "Failed to save xml file: " msgstr "" -#: src/CelestialNavigationDialog.cpp:321 src/CelestialNavigationDialog.cpp:466 -#: src/Sight.cpp:1099 src/celestial_navigation_pi.cpp:99 -#: src/celestial_navigation_pi.cpp:152 -msgid "Celestial Navigation" -msgstr "" - -#: src/CelestialNavigationDialog.cpp:351 +#: src\CelestialNavigationDialog-2.3.5.1-no-android.cpp:424 +#: src\CelestialNavigationDialog-2.3.5.2-android.cpp:430 +#: src\CelestialNavigationDialog-partial-android.cpp:424 +#: src\CelestialNavigationDialog.cpp:430 msgid "Time Correction" msgstr "" -#: src/CelestialNavigationDialog.cpp:409 +#: src\CelestialNavigationDialog-2.3.5.1-no-android.cpp:473 +#: src\CelestialNavigationDialog-2.3.5.2-android.cpp:479 +#: src\CelestialNavigationDialog-partial-android.cpp:473 +#: src\CelestialNavigationDialog.cpp:479 msgid "Sun" msgstr "" -#: src/CelestialNavigationDialog.cpp:465 +#: src\CelestialNavigationDialog-2.3.5.1-no-android.cpp:531 +#: src\CelestialNavigationDialog-2.3.5.2-android.cpp:537 +#: src\CelestialNavigationDialog-partial-android.cpp:531 +#: src\CelestialNavigationDialog.cpp:537 msgid "Are you sure you want to delete all sights?" msgstr "" -#: src/CelestialNavigationDialog.cpp:510 +#: src\CelestialNavigationDialog-2.3.5.1-no-android.cpp:582 +#: src\CelestialNavigationDialog-2.3.5.2-android.cpp:588 +#: src\CelestialNavigationDialog-partial-android.cpp:582 +#: src\CelestialNavigationDialog.cpp:588 msgid "Celestial_Navigation_Information.html" msgstr "" -#: src/CelestialNavigationDialog.cpp:516 -msgid "Show" +#: src\CelestialNavigationDialog-2.3.5.1-no-android.cpp:589 +#: src\CelestialNavigationDialog-2.3.5.2-android.cpp:595 +#: src\CelestialNavigationDialog-partial-android.cpp:589 +#: src\CelestialNavigationDialog.cpp:595 src\CelestialNavigationUI.cpp:55 +msgid "Hide" msgstr "" -#: src/CelestialNavigationDialog.cpp:516 src/CelestialNavigationUI.cpp:58 -msgid "Hide" +#: src\CelestialNavigationDialog-2.3.5.1-no-android.cpp:589 +#: src\CelestialNavigationDialog-2.3.5.2-android.cpp:595 +#: src\CelestialNavigationDialog-partial-android.cpp:589 +#: src\CelestialNavigationDialog.cpp:595 +msgid "Show" msgstr "" -#: src/CelestialNavigationUI.cpp:40 +#: src\CelestialNavigationUI.cpp:40 msgid "New" msgstr "" -#: src/CelestialNavigationUI.cpp:43 -msgid "Edit" +#: src\CelestialNavigationUI.cpp:43 src\CelestialNavigationUI.h:286 +msgid "Fix" msgstr "" -#: src/CelestialNavigationUI.cpp:46 -msgid "Delete" +#: src\CelestialNavigationUI.cpp:46 +msgid "Duplicate" msgstr "" -#: src/CelestialNavigationUI.cpp:49 -msgid "Delete All" +#: src\CelestialNavigationUI.cpp:49 +msgid "Clock Offset" msgstr "" -#: src/CelestialNavigationUI.cpp:52 src/CelestialNavigationUI.h:281 -msgid "Fix" +#: src\CelestialNavigationUI.cpp:52 +msgid "Edit" msgstr "" -#: src/CelestialNavigationUI.cpp:55 -msgid "Clock Offset" +#: src\CelestialNavigationUI.cpp:58 +msgid "Delete" msgstr "" -#: src/CelestialNavigationUI.cpp:61 +#: src\CelestialNavigationUI.cpp:61 msgid "Information" msgstr "" -#: src/CelestialNavigationUI.cpp:136 src/CelestialNavigationUI.cpp:667 -#: src/Sight.h:49 +#: src\CelestialNavigationUI.cpp:64 +msgid "Delete All" +msgstr "" + +#: src\CelestialNavigationUI.cpp:141 src\CelestialNavigationUI.cpp:674 +#: src\Sight.h:49 msgid "Altitude" msgstr "" -#: src/CelestialNavigationUI.cpp:136 src/CelestialNavigationUI.cpp:677 -#: src/Sight.h:49 +#: src\CelestialNavigationUI.cpp:141 src\CelestialNavigationUI.cpp:683 +#: src\Sight.h:49 msgid "Azimuth" msgstr "" -#: src/CelestialNavigationUI.cpp:136 src/Sight.h:49 +#: src\CelestialNavigationUI.cpp:141 src\Sight.h:49 msgid "Lunar" msgstr "" -#: src/CelestialNavigationUI.cpp:142 +#: src\CelestialNavigationUI.cpp:147 msgid "Magnetic Azimuth" msgstr "" -#: src/CelestialNavigationUI.cpp:145 +#: src\CelestialNavigationUI.cpp:150 msgid "Celestial Body" msgstr "" -#: src/CelestialNavigationUI.cpp:154 +#: src\CelestialNavigationUI.cpp:159 msgid "Find" msgstr "" -#: src/CelestialNavigationUI.cpp:157 +#: src\CelestialNavigationUI.cpp:162 msgid "Limb" msgstr "" -#: src/CelestialNavigationUI.cpp:161 -msgid "Lower" +#: src\CelestialNavigationUI.cpp:166 +msgid "Center" msgstr "" -#: src/CelestialNavigationUI.cpp:161 -msgid "Center" +#: src\CelestialNavigationUI.cpp:166 +msgid "Lower" msgstr "" -#: src/CelestialNavigationUI.cpp:161 +#: src\CelestialNavigationUI.cpp:166 msgid "Upper" msgstr "" -#: src/CelestialNavigationUI.cpp:186 src/CelestialNavigationUI.cpp:193 -#: src/CelestialNavigationUI.cpp:223 src/CelestialNavigationUI.cpp:230 +#: src\CelestialNavigationUI.cpp:191 src\CelestialNavigationUI.cpp:198 +#: src\CelestialNavigationUI.cpp:228 src\CelestialNavigationUI.cpp:235 msgid "0" msgstr "" -#: src/CelestialNavigationUI.cpp:189 src/CelestialNavigationUI.cpp:348 -#: src/CelestialNavigationUI.cpp:598 +#: src\CelestialNavigationUI.cpp:194 src\CelestialNavigationUI.cpp:353 +#: src\CelestialNavigationUI.cpp:605 msgid "Degrees" msgstr "" -#: src/CelestialNavigationUI.cpp:196 src/CelestialNavigationUI.cpp:278 -#: src/CelestialNavigationUI.cpp:439 +#: src\CelestialNavigationUI.cpp:201 src\CelestialNavigationUI.cpp:283 +#: src\CelestialNavigationUI.cpp:444 msgid "Minutes" msgstr "" -#: src/CelestialNavigationUI.cpp:200 +#: src\CelestialNavigationUI.cpp:205 msgid "10" msgstr "" -#: src/CelestialNavigationUI.cpp:203 +#: src\CelestialNavigationUI.cpp:208 msgid "Minutes Certainty" msgstr "" -#: src/CelestialNavigationUI.cpp:217 +#: src\CelestialNavigationUI.cpp:222 msgid "Lunar Altitude" msgstr "" -#: src/CelestialNavigationUI.cpp:226 +#: src\CelestialNavigationUI.cpp:231 msgid "Body Altitude" msgstr "" -#: src/CelestialNavigationUI.cpp:243 +#: src\CelestialNavigationUI.cpp:248 msgid "Sight" msgstr "" -#: src/CelestialNavigationUI.cpp:271 +#: src\CelestialNavigationUI.cpp:276 msgid "Hours" msgstr "" -#: src/CelestialNavigationUI.cpp:285 src/CelestialNavigationUI.cpp:303 -#: src/CelestialNavigationUI.cpp:860 +#: src\CelestialNavigationUI.cpp:290 src\CelestialNavigationUI.cpp:308 +#: src\CelestialNavigationUI.cpp:869 msgid "Seconds" msgstr "" -#: src/CelestialNavigationUI.cpp:293 +#: src\CelestialNavigationUI.cpp:298 msgid "Certainty" msgstr "" -#: src/CelestialNavigationUI.cpp:323 -msgid "Time" -msgstr "" - -#: src/CelestialNavigationUI.cpp:330 src/CelestialNavigationUI.cpp:580 +#: src\CelestialNavigationUI.cpp:335 src\CelestialNavigationUI.cpp:587 msgid "Distance" msgstr "" -#: src/CelestialNavigationUI.cpp:337 src/CelestialNavigationUI.cpp:587 +#: src\CelestialNavigationUI.cpp:342 src\CelestialNavigationUI.cpp:594 msgid "Nm" msgstr "" -#: src/CelestialNavigationUI.cpp:341 src/CelestialNavigationUI.cpp:591 +#: src\CelestialNavigationUI.cpp:346 src\CelestialNavigationUI.cpp:598 msgid "Bearing" msgstr "" -#: src/CelestialNavigationUI.cpp:352 src/CelestialNavigationUI.cpp:602 +#: src\CelestialNavigationUI.cpp:357 src\CelestialNavigationUI.cpp:609 msgid "Magnetic Bearing" msgstr "" -#: src/CelestialNavigationUI.cpp:359 +#: src\CelestialNavigationUI.cpp:364 msgid "DR Shift" msgstr "" -#: src/CelestialNavigationUI.cpp:366 +#: src\CelestialNavigationUI.cpp:371 msgid "Transparency" msgstr "" -#: src/CelestialNavigationUI.cpp:387 +#: src\CelestialNavigationUI.cpp:392 msgid "Config" msgstr "" -#: src/CelestialNavigationUI.cpp:399 +#: src\CelestialNavigationUI.cpp:404 msgid "Eye Height" msgstr "" -#: src/CelestialNavigationUI.cpp:403 +#: src\CelestialNavigationUI.cpp:408 msgid "2" msgstr "" -#: src/CelestialNavigationUI.cpp:406 +#: src\CelestialNavigationUI.cpp:411 msgid "Meters" msgstr "" -#: src/CelestialNavigationUI.cpp:410 +#: src\CelestialNavigationUI.cpp:415 msgid "Temperature" msgstr "" -#: src/CelestialNavigationUI.cpp:417 +#: src\CelestialNavigationUI.cpp:422 msgid "Celcius" msgstr "" -#: src/CelestialNavigationUI.cpp:421 +#: src\CelestialNavigationUI.cpp:426 msgid "Pressure" msgstr "" -#: src/CelestialNavigationUI.cpp:428 +#: src\CelestialNavigationUI.cpp:433 msgid "MilliBars" msgstr "" -#: src/CelestialNavigationUI.cpp:432 +#: src\CelestialNavigationUI.cpp:437 msgid "Index Error" msgstr "" -#: src/CelestialNavigationUI.cpp:446 +#: src\CelestialNavigationUI.cpp:451 msgid "Set As Defaults" msgstr "" -#: src/CelestialNavigationUI.cpp:453 +#: src\CelestialNavigationUI.cpp:458 msgid "Parameters" msgstr "" -#: src/CelestialNavigationUI.cpp:469 +#: src\CelestialNavigationUI.cpp:474 msgid "Calculations" msgstr "" -#: src/CelestialNavigationUI.cpp:571 +#: src\CelestialNavigationUI.cpp:578 msgid "Shift all visible Sights" msgstr "" -#: src/CelestialNavigationUI.cpp:649 src/CelestialNavigationUI.cpp:760 +#: src\CelestialNavigationUI.cpp:656 src\CelestialNavigationUI.cpp:769 msgid "Latitude" msgstr "" -#: src/CelestialNavigationUI.cpp:658 src/CelestialNavigationUI.cpp:768 +#: src\CelestialNavigationUI.cpp:665 src\CelestialNavigationUI.cpp:777 msgid "Longitude" msgstr "" -#: src/CelestialNavigationUI.cpp:669 src/CelestialNavigationUI.cpp:679 -msgid "MyLabel" +#: src\CelestialNavigationUI.cpp:691 +msgid "Boat Position" msgstr "" -#: src/CelestialNavigationUI.cpp:686 -msgid "Done" +#: src\CelestialNavigationUI.cpp:695 +msgid "Magnetic" msgstr "" -#: src/CelestialNavigationUI.cpp:689 -msgid "Magnetic" +#: src\CelestialNavigationUI.cpp:698 +msgid "Done" msgstr "" -#: src/CelestialNavigationUI.cpp:753 +#: src\CelestialNavigationUI.cpp:762 msgid "Fix From Visible Sights" msgstr "" -#: src/CelestialNavigationUI.cpp:764 +#: src\CelestialNavigationUI.cpp:773 msgid " N/A " msgstr "" -#: src/CelestialNavigationUI.cpp:772 +#: src\CelestialNavigationUI.cpp:781 msgid " N/A " msgstr "" -#: src/CelestialNavigationUI.cpp:776 +#: src\CelestialNavigationUI.cpp:785 msgid "Error" msgstr "" -#: src/CelestialNavigationUI.cpp:780 +#: src\CelestialNavigationUI.cpp:789 msgid " N/A " msgstr "" -#: src/CelestialNavigationUI.cpp:787 src/CelestialNavigationUI.cpp:794 +#: src\CelestialNavigationUI.cpp:796 src\CelestialNavigationUI.cpp:803 msgid "Initial" msgstr "" -#: src/CelestialNavigationUI.cpp:801 +#: src\CelestialNavigationUI.cpp:810 msgid "Alg" msgstr "" -#: src/CelestialNavigationUI.cpp:806 +#: src\CelestialNavigationUI.cpp:815 msgid "Plane" msgstr "" -#: src/CelestialNavigationUI.cpp:807 +#: src\CelestialNavigationUI.cpp:816 msgid "Sphere" msgstr "" -#: src/CelestialNavigationUI.cpp:808 +#: src\CelestialNavigationUI.cpp:817 msgid "Cone" msgstr "" -#: src/CelestialNavigationUI.cpp:809 +#: src\CelestialNavigationUI.cpp:818 msgid "Cone 2" msgstr "" -#: src/CelestialNavigationUI.cpp:813 +#: src\CelestialNavigationUI.cpp:822 msgid "Go" msgstr "" -#: src/CelestialNavigationUI.cpp:850 src/CelestialNavigationUI.h:303 +#: src\CelestialNavigationUI.cpp:859 src\CelestialNavigationUI.h:308 msgid "Clock Correction" msgstr "" -#: src/CelestialNavigationUI.h:78 +#: src\CelestialNavigationUI.h:82 msgid "Celestial Navigation Sights" msgstr "" -#: src/CelestialNavigationUI.h:169 +#: src\CelestialNavigationUI.h:173 msgid "Sight Properties" msgstr "" -#: src/CelestialNavigationUI.h:200 +#: src\CelestialNavigationUI.h:204 msgid "Dead Reckoning shift" msgstr "" -#: src/CelestialNavigationUI.h:227 +#: src\CelestialNavigationUI.h:232 msgid "Find Celestial Body" msgstr "" -#: src/Sight.cpp:160 +#: src\FixDialog.cpp:192 +msgid "Shifted sights are not used to compute a fix, determine fix visually instead.\n" +msgstr "" + +#: src\FixDialog.cpp:193 +msgid "Fix Position" +msgstr "" + +#: src\FixDialog.cpp:338 src\FixDialog.cpp:339 src\FixDialog.cpp:340 +msgid " N/A " +msgstr "" + +#: src\Sight.cpp:172 src\Sight.cpp.bak:173 msgid "Astrolab failed, data unavailable:\n" msgstr "" -#: src/Sight.cpp:161 +#: src\Sight.cpp:173 src\Sight.cpp.bak:174 msgid "\n" "Did you forget to install vsop87d.txt?\n" msgstr "" -#: src/Sight.cpp:162 +#: src\Sight.cpp:174 src\Sight.cpp.bak:175 msgid "The plugin will not work correctly" msgstr "" -#: src/Sight.cpp:163 +#: src\Sight.cpp:175 src\Sight.cpp.bak:176 msgid "Failure Alert" msgstr "" -#: src/Sight.cpp:474 +#: src\Sight.cpp:495 src\Sight.cpp.bak:496 #, c-format msgid "Applying clock correction of %d seconds\n\n" msgstr "" -#: src/Sight.cpp:536 +#: src\Sight.cpp:557 src\Sight.cpp.bak:558 msgid "Almanac Data For " msgstr "" -#: src/Sight.cpp:537 +#: src\Sight.cpp:558 src\Sight.cpp.bak:559 #, c-format msgid "\n" "Geographical Position (lat, lon) = %.4f %.4f\n" @@ -410,23 +474,27 @@ msgid "\n" "HP = %.1f'\n\n" msgstr "" -#: src/Sight.cpp:552 src/Sight.cpp:690 +#: src\Sight.cpp:573 src\Sight.cpp:711 src\Sight.cpp.bak:574 +#: src\Sight.cpp.bak:712 msgid "Formulas used to calculate sight\n\n" msgstr "" -#: src/Sight.cpp:556 src/Sight.cpp:694 +#: src\Sight.cpp:577 src\Sight.cpp:715 src\Sight.cpp.bak:578 +#: src\Sight.cpp.bak:716 #, c-format msgid "Index Error is %.4f degrees\n\n" msgstr "" -#: src/Sight.cpp:561 src/Sight.cpp:699 +#: src\Sight.cpp:582 src\Sight.cpp:720 src\Sight.cpp.bak:583 +#: src\Sight.cpp.bak:721 #, c-format msgid "Eye Height is %.4f meters\n" "Height Correction Degrees = 1.758*sqrt(%.4f) / 60.0\n" "Height Correction Degrees = %.4f\n" msgstr "" -#: src/Sight.cpp:568 +#: src\Sight.cpp:589 src\Sight.cpp:799 src\Sight.cpp.bak:590 +#: src\Sight.cpp.bak:800 #, c-format msgid "\n" "Apparent Altitude (Ha)\n" @@ -435,7 +503,8 @@ msgid "\n" "ApparentAltitude = %.4f\n" msgstr "" -#: src/Sight.cpp:586 src/Sight.cpp:789 +#: src\Sight.cpp:607 src\Sight.cpp:810 src\Sight.cpp.bak:608 +#: src\Sight.cpp.bak:811 #, c-format msgid "\n" "Refraction Correction\n" @@ -444,21 +513,24 @@ msgid "\n" "x = %.4f\n" msgstr "" -#: src/Sight.cpp:591 src/Sight.cpp:794 +#: src\Sight.cpp:612 src\Sight.cpp:815 src\Sight.cpp.bak:613 +#: src\Sight.cpp.bak:816 #, c-format msgid "RefractionCorrection = .267 * Pressure / (x*(Temperature + 273.15)) / 60.0\n" "RefractionCorrection = .267 * %.4f / (x*(%.4f + 273.15)) / 60.0\n" "RefractionCorrection = %.4f\n" msgstr "" -#: src/Sight.cpp:606 src/Sight.cpp:808 +#: src\Sight.cpp:627 src\Sight.cpp:829 src\Sight.cpp.bak:628 +#: src\Sight.cpp.bak:830 #, c-format msgid "\n" "Sun selected, Limb Correction\n" "ra = %.4f, lc = 0.266564/ra = %.4f\n" msgstr "" -#: src/Sight.cpp:616 src/Sight.cpp:732 +#: src\Sight.cpp:637 src\Sight.cpp:753 src\Sight.cpp.bak:638 +#: src\Sight.cpp.bak:754 #, c-format msgid "\n" "Moon selected, Limb Correction\n" @@ -467,21 +539,25 @@ msgid "\n" "lc = %.4f\n" msgstr "" -#: src/Sight.cpp:626 src/Sight.cpp:741 src/Sight.cpp:816 +#: src\Sight.cpp:647 src\Sight.cpp:762 src\Sight.cpp:837 src\Sight.cpp.bak:648 +#: src\Sight.cpp.bak:763 src\Sight.cpp.bak:838 msgid "Upper Limb" msgstr "" -#: src/Sight.cpp:629 src/Sight.cpp:744 src/Sight.cpp:819 +#: src\Sight.cpp:650 src\Sight.cpp:765 src\Sight.cpp:840 src\Sight.cpp.bak:651 +#: src\Sight.cpp.bak:766 src\Sight.cpp.bak:841 msgid "Lower Limb" msgstr "" -#: src/Sight.cpp:632 src/Sight.cpp:822 +#: src\Sight.cpp:653 src\Sight.cpp:843 src\Sight.cpp.bak:654 +#: src\Sight.cpp.bak:844 #, c-format msgid "\n" "LimbCorrection = %.4f\n" msgstr "" -#: src/Sight.cpp:636 src/Sight.cpp:826 +#: src\Sight.cpp:657 src\Sight.cpp:847 src\Sight.cpp.bak:658 +#: src\Sight.cpp.bak:848 #, c-format msgid "\n" "Corrected Altitude\n" @@ -490,28 +566,31 @@ msgid "\n" "CorrectedAltitude = %.4f\n" msgstr "" -#: src/Sight.cpp:650 src/Sight.cpp:840 +#: src\Sight.cpp:671 src\Sight.cpp:861 src\Sight.cpp.bak:672 +#: src\Sight.cpp.bak:862 #, c-format msgid "\n" "Sun selected, parallax correction\n" "rad = %.4f, HP = 0.002442/rad = %.4f\n" msgstr "" -#: src/Sight.cpp:659 src/Sight.cpp:764 +#: src\Sight.cpp:680 src\Sight.cpp:785 src\Sight.cpp.bak:681 +#: src\Sight.cpp.bak:786 #, c-format msgid "\n" "Moon selected, parallax correction\n" "HP = %.4f\n" msgstr "" -#: src/Sight.cpp:665 src/Sight.cpp:846 +#: src\Sight.cpp:686 src\Sight.cpp:867 src\Sight.cpp.bak:687 +#: src\Sight.cpp.bak:868 #, c-format msgid "ParallaxCorrection = -180/Pi * asin( sin(Pi/180 * HP ) * cos(Pi/180 * CorrectedAltitude))\n" "ParallaxCorrection = -180/Pi * asin( sin(Pi/180 * %.4f ) * cos(Pi/180 * %.4f))\n" "ParallaxCorrection = %.4f\n" msgstr "" -#: src/Sight.cpp:672 +#: src\Sight.cpp:693 src\Sight.cpp.bak:694 #, c-format msgid "\n" "Observed Altitude (Ho)\n" @@ -520,16 +599,16 @@ msgid "\n" "ObservedAltitude = %.4f\n" msgstr "" -#: src/Sight.cpp:706 +#: src\Sight.cpp:727 src\Sight.cpp.bak:728 #, c-format msgid "\n" "Apparent Moon Altitude (Ha)\n" "ApparentAltitudeMoon = MeasurementMoon - IndexCorrection - EyeHeightCorrection\n" -" ApparentAltitudeMoon = %.4f - %.4f - %.4f\n" +"ApparentAltitudeMoon = %.4f - %.4f - %.4f\n" "ApparentAltitudeMoon = %.4f\n" msgstr "" -#: src/Sight.cpp:717 +#: src\Sight.cpp:738 src\Sight.cpp.bak:739 #, c-format msgid "\n" "Refraction Correction\n" @@ -538,20 +617,21 @@ msgid "\n" "x = %.4f\n" msgstr "" -#: src/Sight.cpp:722 +#: src\Sight.cpp:743 src\Sight.cpp.bak:744 #, c-format msgid "RefractionCorrectionMoon = .267 * Pressure / (x*(Temperature + 273.15)) / 60.0\n" "RefractionCorrectionMoon = .267 * %.4f / (x*(%.4f + 273.15)) / 60.0\n" "RefractionCorrectionMoon = %.4f\n" msgstr "" -#: src/Sight.cpp:747 src/Sight.cpp:750 +#: src\Sight.cpp:768 src\Sight.cpp:771 src\Sight.cpp.bak:769 +#: src\Sight.cpp.bak:772 #, c-format msgid "\n" "LimbCorrectionMoon = %.4f\n" msgstr "" -#: src/Sight.cpp:753 +#: src\Sight.cpp:774 src\Sight.cpp.bak:775 #, c-format msgid "\n" "Corrected Altitude\n" @@ -560,107 +640,82 @@ msgid "\n" "CorrectedAltitudeMoon = %.4f\n" msgstr "" -#: src/Sight.cpp:768 +#: src\Sight.cpp:789 src\Sight.cpp.bak:790 #, c-format msgid "ParallaxCorrectionMoon = -180/Pi * asin( sin(Pi/180 * HP ) * cos(Pi/180 * CorrectedAltitude))\n" -" ParallaxCorrectionMoon = -180/Pi * asin( sin(Pi/180 * %.4f ) * cos(Pi/180 * %.4f))\n" +"ParallaxCorrectionMoon = -180/Pi * asin( sin(Pi/180 * %.4f ) * cos(Pi/180 * %.4f))\n" "ParallaxCorrectionMoon = %.4f\n" msgstr "" -#: src/Sight.cpp:778 -#, c-format -msgid "\n" -"Apparent Altitude (Ha)\n" -"ApparentAltitude = Measurement - IndexCorrection - EyeHeightCorrection\n" -" ApparentAltitude = %.4f - %.4f - %.4f\n" -"ApparentAltitude = %.4f\n" -msgstr "" - -#: src/Sight.cpp:857 +#: src\Sight.cpp:878 src\Sight.cpp.bak:879 #, c-format msgid "CorrectionsMoon = %.4f\n" "CorrectionsBody = %.4f\n" "Corrections = abs(CorrectionsMoon - CorrectionsBody) = %.4f\n" msgstr "" -#: src/Sight.cpp:863 +#: src\Sight.cpp:884 src\Sight.cpp.bak:885 #, c-format msgid "CorrectedMeasurement = Measurement - Corrections - IndexCorrection\n" "CorrectedMeasurement = %.4f - %.4f - %.4f\n" "CorrectedMeasurement = %.4f\n" msgstr "" -#: src/Sight.cpp:888 +#: src\Sight.cpp:909 src\Sight.cpp.bak:910 msgid "\n" "Calculated angle between Moon and " msgstr "" -#: src/Sight.cpp:890 +#: src\Sight.cpp:911 src\Sight.cpp.bak:912 #, c-format msgid "\n" "Error from measurement: %.4f" msgstr "" -#: src/Sight.cpp:894 +#: src\Sight.cpp:915 src\Sight.cpp.bak:916 msgid "\n" "Moon takes 28 days to orbit, one degree of error takes 6720 seconds" msgstr "" -#: src/Sight.cpp:895 +#: src\Sight.cpp:916 src\Sight.cpp.bak:917 #, c-format msgid "\n" "Time correction %.4f seconds" msgstr "" -#: src/Sight.cpp:1099 +#: src\Sight.cpp:1120 src\Sight.cpp.bak:1121 msgid "Building bearing Sight Positions" msgstr "" -#: src/SightDialog.cpp:172 +#: src\SightDialog.cpp:184 msgid "Measurement certainty likely set to small, sight may not appear " msgstr "" -#: src/SightDialog.cpp:173 src/SightDialog.cpp:256 +#: src\SightDialog.cpp:185 src\SightDialog.cpp:279 msgid "Warning" msgstr "" -#: src/SightDialog.cpp:255 +#: src\SightDialog.cpp:278 msgid "Lunar shot will be invalid taking distance from moon to itself" msgstr "" -#: src/celestial_navigation_pi.cpp:90 -msgid "Failed to load file:\n" -msgstr "" - -#: src/celestial_navigation_pi.cpp:91 -msgid "\n" -"Magnetic data will not be available for the celestial navigation plugin." -msgstr "" - -#: src/celestial_navigation_pi.cpp:92 -msgid "OpenCPN Alert" +#: src\celestial_navigation_pi.cpp:179 +msgid "open error" msgstr "" -#: src/celestial_navigation_pi.cpp:157 -msgid "Celestial Navigation PlugIn for OpenCPN" +#: src\celestial_navigation_pi.cpp:180 +msgid "corrupt record" msgstr "" -#: src/celestial_navigation_pi.cpp:162 -msgid "Celestial Navigation PlugIn for OpenCPN.\n" -"Implements nautical almanac for sun, moon, planets,\n" -"and various navigational stars.\n" -"Compute position fix from celestial measurements." +#: src\celestial_navigation_pi.cpp:181 +msgid "too many models" msgstr "" -#: src/FixDialog.cpp:189 -msgid "Shifted sights are not used to compute a fix, determine fix visually instead.\n" +#: src\celestial_navigation_pi.cpp:184 +msgid "Magnetic data will not be available for the celestial navigation plugin." msgstr "" -#: src/FixDialog.cpp:190 -msgid "Fix Position" -msgstr "" - -#: src/FixDialog.cpp:335 src/FixDialog.cpp:336 src/FixDialog.cpp:337 -msgid " N/A " +#: src\celestial_navigation_pi.cpp:185 +msgid "OpenCPN Alert" msgstr "" diff --git a/po/da_DK.po b/po/da_DK.po index d676a9b..d2423bf 100644 --- a/po/da_DK.po +++ b/po/da_DK.po @@ -2,404 +2,468 @@ msgid "" msgstr "" "Project-Id-Version: opencpn\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-02-28 14:10-0300\n" -"PO-Revision-Date: 2018-03-03 08:22-0500\n" -"Last-Translator: nohal \n" +"POT-Creation-Date: 2021-10-27 22:15+0200\n" +"PO-Revision-Date: 2023-10-04 18:32\n" +"Last-Translator: \n" "Language-Team: Danish\n" "Language: da_DK\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -"X-Generator: crowdin.com\n" "X-Crowdin-Project: opencpn\n" +"X-Crowdin-Project-ID: 49843\n" "X-Crowdin-Language: da\n" "X-Crowdin-File: /plugins/celestial_navigation_pi/po/celestial_navigation_pi.pot\n" +"X-Crowdin-File-ID: 108\n" -#: src/CelestialNavigationDialog.cpp:123 src/CelestialNavigationUI.cpp:132 +#: src\CelestialNavigationDialog-2.3.5.1-no-android.cpp:149 +#: src\CelestialNavigationDialog-2.3.5.2-android.cpp:150 +#: src\CelestialNavigationDialog-partial-android.cpp:149 +#: src\CelestialNavigationDialog.cpp:150 src\CelestialNavigationUI.cpp:137 msgid "Type" msgstr "Type" -#: src/CelestialNavigationDialog.cpp:124 +#: src\CelestialNavigationDialog-2.3.5.1-no-android.cpp:150 +#: src\CelestialNavigationDialog-2.3.5.2-android.cpp:151 +#: src\CelestialNavigationDialog-partial-android.cpp:150 +#: src\CelestialNavigationDialog.cpp:151 msgid "Body" msgstr "Brødtekst" -#: src/CelestialNavigationDialog.cpp:125 -msgid "Time (UTC)" -msgstr "Time (UTC)" +#: src\CelestialNavigationDialog-2.3.5.1-no-android.cpp:151 +#: src\CelestialNavigationDialog-2.3.5.2-android.cpp:152 +#: src\CelestialNavigationDialog-partial-android.cpp:151 +#: src\CelestialNavigationDialog.cpp:152 src\CelestialNavigationUI.cpp:328 +msgid "Time (UT)" +msgstr "" -#: src/CelestialNavigationDialog.cpp:126 src/CelestialNavigationUI.cpp:179 +#: src\CelestialNavigationDialog-2.3.5.1-no-android.cpp:152 +#: src\CelestialNavigationDialog-2.3.5.2-android.cpp:153 +#: src\CelestialNavigationDialog-partial-android.cpp:152 +#: src\CelestialNavigationDialog.cpp:153 src\CelestialNavigationUI.cpp:184 msgid "Measurement" msgstr "Måling" -#: src/CelestialNavigationDialog.cpp:127 src/CelestialNavigationUI.cpp:376 +#: src\CelestialNavigationDialog-2.3.5.1-no-android.cpp:153 +#: src\CelestialNavigationDialog-2.3.5.2-android.cpp:154 +#: src\CelestialNavigationDialog-partial-android.cpp:153 +#: src\CelestialNavigationDialog.cpp:154 src\CelestialNavigationUI.cpp:381 msgid "Color" msgstr "Farve" -#: src/CelestialNavigationDialog.cpp:193 -msgid "Failed to load file." -msgstr "Kunne ikke indlæse filen." +#: src\CelestialNavigationDialog-2.3.5.1-no-android.cpp:266 +#: src\CelestialNavigationDialog-2.3.5.2-android.cpp:272 +#: src\CelestialNavigationDialog-partial-android.cpp:266 +#: src\CelestialNavigationDialog.cpp:272 src\celestial_navigation_pi.cpp:177 +msgid "Failed to load file: " +msgstr "" -#: src/CelestialNavigationDialog.cpp:198 +#: src\CelestialNavigationDialog-2.3.5.1-no-android.cpp:271 +#: src\CelestialNavigationDialog-2.3.5.2-android.cpp:277 +#: src\CelestialNavigationDialog-partial-android.cpp:271 +#: src\CelestialNavigationDialog.cpp:277 msgid "Invalid xml file" msgstr "Ugyldig XML-fil" -#: src/CelestialNavigationDialog.cpp:250 +#: src\CelestialNavigationDialog-2.3.5.1-no-android.cpp:323 +#: src\CelestialNavigationDialog-2.3.5.2-android.cpp:329 +#: src\CelestialNavigationDialog-partial-android.cpp:323 +#: src\CelestialNavigationDialog.cpp:329 msgid "Unrecognized xml node" msgstr "Ukendt XML-node" -#: src/CelestialNavigationDialog.cpp:260 -msgid "Weather Routing" -msgstr "Vejr Routing" +#: src\CelestialNavigationDialog-2.3.5.1-no-android.cpp:332 +#: src\CelestialNavigationDialog-2.3.5.1-no-android.cpp:392 +#: src\CelestialNavigationDialog-2.3.5.1-no-android.cpp:532 +#: src\CelestialNavigationDialog-2.3.5.2-android.cpp:338 +#: src\CelestialNavigationDialog-2.3.5.2-android.cpp:398 +#: src\CelestialNavigationDialog-2.3.5.2-android.cpp:538 +#: src\CelestialNavigationDialog-partial-android.cpp:332 +#: src\CelestialNavigationDialog-partial-android.cpp:392 +#: src\CelestialNavigationDialog-partial-android.cpp:532 +#: src\CelestialNavigationDialog.cpp:338 src\CelestialNavigationDialog.cpp:398 +#: src\CelestialNavigationDialog.cpp:538 src\Sight.cpp:1120 +#: src\Sight.cpp.bak:1121 src\celestial_navigation_pi.cpp:95 +#: src\celestial_navigation_pi.cpp:99 +msgid "Celestial Navigation" +msgstr "Astronomisk Navigation" -#: src/CelestialNavigationDialog.cpp:320 +#: src\CelestialNavigationDialog-2.3.5.1-no-android.cpp:391 +#: src\CelestialNavigationDialog-2.3.5.2-android.cpp:397 +#: src\CelestialNavigationDialog-partial-android.cpp:391 +#: src\CelestialNavigationDialog.cpp:397 msgid "Failed to save xml file: " msgstr "Kunne ikke gemme XML-filen: " -#: src/CelestialNavigationDialog.cpp:321 src/CelestialNavigationDialog.cpp:466 -#: src/Sight.cpp:1099 src/celestial_navigation_pi.cpp:99 -#: src/celestial_navigation_pi.cpp:152 -msgid "Celestial Navigation" -msgstr "Astronomisk Navigation" - -#: src/CelestialNavigationDialog.cpp:351 +#: src\CelestialNavigationDialog-2.3.5.1-no-android.cpp:424 +#: src\CelestialNavigationDialog-2.3.5.2-android.cpp:430 +#: src\CelestialNavigationDialog-partial-android.cpp:424 +#: src\CelestialNavigationDialog.cpp:430 msgid "Time Correction" msgstr "" -#: src/CelestialNavigationDialog.cpp:409 +#: src\CelestialNavigationDialog-2.3.5.1-no-android.cpp:473 +#: src\CelestialNavigationDialog-2.3.5.2-android.cpp:479 +#: src\CelestialNavigationDialog-partial-android.cpp:473 +#: src\CelestialNavigationDialog.cpp:479 msgid "Sun" msgstr "Sol" -#: src/CelestialNavigationDialog.cpp:465 +#: src\CelestialNavigationDialog-2.3.5.1-no-android.cpp:531 +#: src\CelestialNavigationDialog-2.3.5.2-android.cpp:537 +#: src\CelestialNavigationDialog-partial-android.cpp:531 +#: src\CelestialNavigationDialog.cpp:537 msgid "Are you sure you want to delete all sights?" msgstr "Er du sikker på du vil slette alle observationer?" -#: src/CelestialNavigationDialog.cpp:510 +#: src\CelestialNavigationDialog-2.3.5.1-no-android.cpp:582 +#: src\CelestialNavigationDialog-2.3.5.2-android.cpp:588 +#: src\CelestialNavigationDialog-partial-android.cpp:582 +#: src\CelestialNavigationDialog.cpp:588 msgid "Celestial_Navigation_Information.html" msgstr "Celestial_Navigation_Information.html" -#: src/CelestialNavigationDialog.cpp:516 -msgid "Show" -msgstr "Vis" - -#: src/CelestialNavigationDialog.cpp:516 src/CelestialNavigationUI.cpp:58 +#: src\CelestialNavigationDialog-2.3.5.1-no-android.cpp:589 +#: src\CelestialNavigationDialog-2.3.5.2-android.cpp:595 +#: src\CelestialNavigationDialog-partial-android.cpp:589 +#: src\CelestialNavigationDialog.cpp:595 src\CelestialNavigationUI.cpp:55 msgid "Hide" msgstr "Skjul" -#: src/CelestialNavigationUI.cpp:40 +#: src\CelestialNavigationDialog-2.3.5.1-no-android.cpp:589 +#: src\CelestialNavigationDialog-2.3.5.2-android.cpp:595 +#: src\CelestialNavigationDialog-partial-android.cpp:589 +#: src\CelestialNavigationDialog.cpp:595 +msgid "Show" +msgstr "Vis" + +#: src\CelestialNavigationUI.cpp:40 msgid "New" msgstr "Ny" -#: src/CelestialNavigationUI.cpp:43 -msgid "Edit" -msgstr "Rediger" - -#: src/CelestialNavigationUI.cpp:46 -msgid "Delete" -msgstr "Slet" - -#: src/CelestialNavigationUI.cpp:49 -msgid "Delete All" -msgstr "Slet alt" - -#: src/CelestialNavigationUI.cpp:52 src/CelestialNavigationUI.h:281 +#: src\CelestialNavigationUI.cpp:43 src\CelestialNavigationUI.h:286 msgid "Fix" msgstr "" -#: src/CelestialNavigationUI.cpp:55 +#: src\CelestialNavigationUI.cpp:46 +msgid "Duplicate" +msgstr "" + +#: src\CelestialNavigationUI.cpp:49 msgid "Clock Offset" msgstr "" -#: src/CelestialNavigationUI.cpp:61 +#: src\CelestialNavigationUI.cpp:52 +msgid "Edit" +msgstr "Rediger" + +#: src\CelestialNavigationUI.cpp:58 +msgid "Delete" +msgstr "Slet" + +#: src\CelestialNavigationUI.cpp:61 msgid "Information" msgstr "Information" -#: src/CelestialNavigationUI.cpp:136 src/CelestialNavigationUI.cpp:667 -#: src/Sight.h:49 +#: src\CelestialNavigationUI.cpp:64 +msgid "Delete All" +msgstr "Slet alt" + +#: src\CelestialNavigationUI.cpp:141 src\CelestialNavigationUI.cpp:674 +#: src\Sight.h:49 msgid "Altitude" msgstr "Højde" -#: src/CelestialNavigationUI.cpp:136 src/CelestialNavigationUI.cpp:677 -#: src/Sight.h:49 +#: src\CelestialNavigationUI.cpp:141 src\CelestialNavigationUI.cpp:683 +#: src\Sight.h:49 msgid "Azimuth" msgstr "Azimuth" -#: src/CelestialNavigationUI.cpp:136 src/Sight.h:49 +#: src\CelestialNavigationUI.cpp:141 src\Sight.h:49 msgid "Lunar" msgstr "" -#: src/CelestialNavigationUI.cpp:142 +#: src\CelestialNavigationUI.cpp:147 msgid "Magnetic Azimuth" msgstr "Magnetisk azimut" -#: src/CelestialNavigationUI.cpp:145 +#: src\CelestialNavigationUI.cpp:150 msgid "Celestial Body" msgstr "Himmellegeme" -#: src/CelestialNavigationUI.cpp:154 +#: src\CelestialNavigationUI.cpp:159 msgid "Find" msgstr "Find" -#: src/CelestialNavigationUI.cpp:157 +#: src\CelestialNavigationUI.cpp:162 msgid "Limb" msgstr "Gradbue" -#: src/CelestialNavigationUI.cpp:161 -msgid "Lower" -msgstr "Nedre" - -#: src/CelestialNavigationUI.cpp:161 +#: src\CelestialNavigationUI.cpp:166 msgid "Center" msgstr "Center" -#: src/CelestialNavigationUI.cpp:161 +#: src\CelestialNavigationUI.cpp:166 +msgid "Lower" +msgstr "Nedre" + +#: src\CelestialNavigationUI.cpp:166 msgid "Upper" msgstr "Øvre" -#: src/CelestialNavigationUI.cpp:186 src/CelestialNavigationUI.cpp:193 -#: src/CelestialNavigationUI.cpp:223 src/CelestialNavigationUI.cpp:230 +#: src\CelestialNavigationUI.cpp:191 src\CelestialNavigationUI.cpp:198 +#: src\CelestialNavigationUI.cpp:228 src\CelestialNavigationUI.cpp:235 msgid "0" msgstr "0" -#: src/CelestialNavigationUI.cpp:189 src/CelestialNavigationUI.cpp:348 -#: src/CelestialNavigationUI.cpp:598 +#: src\CelestialNavigationUI.cpp:194 src\CelestialNavigationUI.cpp:353 +#: src\CelestialNavigationUI.cpp:605 msgid "Degrees" msgstr "Grader" -#: src/CelestialNavigationUI.cpp:196 src/CelestialNavigationUI.cpp:278 -#: src/CelestialNavigationUI.cpp:439 +#: src\CelestialNavigationUI.cpp:201 src\CelestialNavigationUI.cpp:283 +#: src\CelestialNavigationUI.cpp:444 msgid "Minutes" msgstr "Minutter" -#: src/CelestialNavigationUI.cpp:200 +#: src\CelestialNavigationUI.cpp:205 msgid "10" msgstr "" -#: src/CelestialNavigationUI.cpp:203 +#: src\CelestialNavigationUI.cpp:208 msgid "Minutes Certainty" msgstr "" -#: src/CelestialNavigationUI.cpp:217 +#: src\CelestialNavigationUI.cpp:222 msgid "Lunar Altitude" msgstr "" -#: src/CelestialNavigationUI.cpp:226 +#: src\CelestialNavigationUI.cpp:231 msgid "Body Altitude" msgstr "" -#: src/CelestialNavigationUI.cpp:243 +#: src\CelestialNavigationUI.cpp:248 msgid "Sight" msgstr "Observation" -#: src/CelestialNavigationUI.cpp:271 +#: src\CelestialNavigationUI.cpp:276 msgid "Hours" msgstr "timer" -#: src/CelestialNavigationUI.cpp:285 src/CelestialNavigationUI.cpp:303 -#: src/CelestialNavigationUI.cpp:860 +#: src\CelestialNavigationUI.cpp:290 src\CelestialNavigationUI.cpp:308 +#: src\CelestialNavigationUI.cpp:869 msgid "Seconds" msgstr "Sekunder" -#: src/CelestialNavigationUI.cpp:293 +#: src\CelestialNavigationUI.cpp:298 msgid "Certainty" msgstr "Sikkerhed" -#: src/CelestialNavigationUI.cpp:323 -msgid "Time" -msgstr "" - -#: src/CelestialNavigationUI.cpp:330 src/CelestialNavigationUI.cpp:580 +#: src\CelestialNavigationUI.cpp:335 src\CelestialNavigationUI.cpp:587 msgid "Distance" msgstr "Afstand" -#: src/CelestialNavigationUI.cpp:337 src/CelestialNavigationUI.cpp:587 +#: src\CelestialNavigationUI.cpp:342 src\CelestialNavigationUI.cpp:594 msgid "Nm" msgstr "Sømil" -#: src/CelestialNavigationUI.cpp:341 src/CelestialNavigationUI.cpp:591 +#: src\CelestialNavigationUI.cpp:346 src\CelestialNavigationUI.cpp:598 msgid "Bearing" msgstr "Kurs" -#: src/CelestialNavigationUI.cpp:352 src/CelestialNavigationUI.cpp:602 +#: src\CelestialNavigationUI.cpp:357 src\CelestialNavigationUI.cpp:609 msgid "Magnetic Bearing" msgstr "Magnetisk kurs" -#: src/CelestialNavigationUI.cpp:359 +#: src\CelestialNavigationUI.cpp:364 msgid "DR Shift" msgstr "" -#: src/CelestialNavigationUI.cpp:366 +#: src\CelestialNavigationUI.cpp:371 msgid "Transparency" msgstr "Gennemsigtighed" -#: src/CelestialNavigationUI.cpp:387 +#: src\CelestialNavigationUI.cpp:392 msgid "Config" msgstr "Config" -#: src/CelestialNavigationUI.cpp:399 +#: src\CelestialNavigationUI.cpp:404 msgid "Eye Height" msgstr "Øjenhøjde" -#: src/CelestialNavigationUI.cpp:403 +#: src\CelestialNavigationUI.cpp:408 msgid "2" msgstr "2" -#: src/CelestialNavigationUI.cpp:406 +#: src\CelestialNavigationUI.cpp:411 msgid "Meters" msgstr "Meter" -#: src/CelestialNavigationUI.cpp:410 +#: src\CelestialNavigationUI.cpp:415 msgid "Temperature" msgstr "Temperatur" -#: src/CelestialNavigationUI.cpp:417 +#: src\CelestialNavigationUI.cpp:422 msgid "Celcius" msgstr "Celcius" -#: src/CelestialNavigationUI.cpp:421 +#: src\CelestialNavigationUI.cpp:426 msgid "Pressure" msgstr "Tryk, mBar" -#: src/CelestialNavigationUI.cpp:428 +#: src\CelestialNavigationUI.cpp:433 msgid "MilliBars" msgstr "Millibar" -#: src/CelestialNavigationUI.cpp:432 +#: src\CelestialNavigationUI.cpp:437 msgid "Index Error" msgstr "Index fejl" -#: src/CelestialNavigationUI.cpp:446 +#: src\CelestialNavigationUI.cpp:451 msgid "Set As Defaults" msgstr "Sæt som standard" -#: src/CelestialNavigationUI.cpp:453 +#: src\CelestialNavigationUI.cpp:458 msgid "Parameters" msgstr "Parametre" -#: src/CelestialNavigationUI.cpp:469 +#: src\CelestialNavigationUI.cpp:474 msgid "Calculations" msgstr "Beregninger" -#: src/CelestialNavigationUI.cpp:571 +#: src\CelestialNavigationUI.cpp:578 msgid "Shift all visible Sights" msgstr "" -#: src/CelestialNavigationUI.cpp:649 src/CelestialNavigationUI.cpp:760 +#: src\CelestialNavigationUI.cpp:656 src\CelestialNavigationUI.cpp:769 msgid "Latitude" msgstr "Bredde" -#: src/CelestialNavigationUI.cpp:658 src/CelestialNavigationUI.cpp:768 +#: src\CelestialNavigationUI.cpp:665 src\CelestialNavigationUI.cpp:777 msgid "Longitude" msgstr "Længde" -#: src/CelestialNavigationUI.cpp:669 src/CelestialNavigationUI.cpp:679 -msgid "MyLabel" -msgstr "MyLabel" - -#: src/CelestialNavigationUI.cpp:686 -msgid "Done" -msgstr "Udført" +#: src\CelestialNavigationUI.cpp:691 +msgid "Boat Position" +msgstr "" -#: src/CelestialNavigationUI.cpp:689 +#: src\CelestialNavigationUI.cpp:695 msgid "Magnetic" msgstr "Magnetisk" -#: src/CelestialNavigationUI.cpp:753 +#: src\CelestialNavigationUI.cpp:698 +msgid "Done" +msgstr "Udført" + +#: src\CelestialNavigationUI.cpp:762 msgid "Fix From Visible Sights" msgstr "Fix fra synlige observationer" -#: src/CelestialNavigationUI.cpp:764 +#: src\CelestialNavigationUI.cpp:773 msgid " N/A " msgstr " Ikke tilgængelig " -#: src/CelestialNavigationUI.cpp:772 +#: src\CelestialNavigationUI.cpp:781 msgid " N/A " msgstr " Ikke tilgængelig " -#: src/CelestialNavigationUI.cpp:776 +#: src\CelestialNavigationUI.cpp:785 msgid "Error" msgstr "Fejl" -#: src/CelestialNavigationUI.cpp:780 +#: src\CelestialNavigationUI.cpp:789 msgid " N/A " msgstr " Ikke tilgængelig " -#: src/CelestialNavigationUI.cpp:787 src/CelestialNavigationUI.cpp:794 +#: src\CelestialNavigationUI.cpp:796 src\CelestialNavigationUI.cpp:803 msgid "Initial" msgstr "Oprindelig" -#: src/CelestialNavigationUI.cpp:801 +#: src\CelestialNavigationUI.cpp:810 msgid "Alg" msgstr "Alg" -#: src/CelestialNavigationUI.cpp:806 +#: src\CelestialNavigationUI.cpp:815 msgid "Plane" msgstr "Plane" -#: src/CelestialNavigationUI.cpp:807 +#: src\CelestialNavigationUI.cpp:816 msgid "Sphere" msgstr "Kugle" -#: src/CelestialNavigationUI.cpp:808 +#: src\CelestialNavigationUI.cpp:817 msgid "Cone" msgstr "Kegle" -#: src/CelestialNavigationUI.cpp:809 +#: src\CelestialNavigationUI.cpp:818 msgid "Cone 2" msgstr "Kegle 2" -#: src/CelestialNavigationUI.cpp:813 +#: src\CelestialNavigationUI.cpp:822 msgid "Go" msgstr "OK" -#: src/CelestialNavigationUI.cpp:850 src/CelestialNavigationUI.h:303 +#: src\CelestialNavigationUI.cpp:859 src\CelestialNavigationUI.h:308 msgid "Clock Correction" msgstr "" -#: src/CelestialNavigationUI.h:78 +#: src\CelestialNavigationUI.h:82 msgid "Celestial Navigation Sights" msgstr "Astronomisk Navigation Observationer" -#: src/CelestialNavigationUI.h:169 +#: src\CelestialNavigationUI.h:173 msgid "Sight Properties" msgstr "Egenskaber for observation" -#: src/CelestialNavigationUI.h:200 +#: src\CelestialNavigationUI.h:204 msgid "Dead Reckoning shift" msgstr "" -#: src/CelestialNavigationUI.h:227 +#: src\CelestialNavigationUI.h:232 msgid "Find Celestial Body" msgstr "Find himmellegeme" -#: src/Sight.cpp:160 +#: src\FixDialog.cpp:192 +msgid "Shifted sights are not used to compute a fix, determine fix visually instead.\n" +msgstr "Shifted observationer bruges ikke til at beregne et fix, bestem fix visuelt i stedet. \n" + +#: src\FixDialog.cpp:193 +msgid "Fix Position" +msgstr "Fix Position" + +#: src\FixDialog.cpp:338 src\FixDialog.cpp:339 src\FixDialog.cpp:340 +msgid " N/A " +msgstr " Ikke tilgængelig " + +#: src\Sight.cpp:172 src\Sight.cpp.bak:173 msgid "Astrolab failed, data unavailable:\n" msgstr "Astrolab mislykkedes, data utilgængelige: \n" -#: src/Sight.cpp:161 +#: src\Sight.cpp:173 src\Sight.cpp.bak:174 msgid "\n" "Did you forget to install vsop87d.txt?\n" msgstr "\n" "Glemte du at installere vsop87d.txt?\n" -#: src/Sight.cpp:162 +#: src\Sight.cpp:174 src\Sight.cpp.bak:175 msgid "The plugin will not work correctly" msgstr "Plugin virker ikke korrekt" -#: src/Sight.cpp:163 +#: src\Sight.cpp:175 src\Sight.cpp.bak:176 msgid "Failure Alert" msgstr "Alarm for mislykket funktion" -#: src/Sight.cpp:474 +#: src\Sight.cpp:495 src\Sight.cpp.bak:496 #, c-format msgid "Applying clock correction of %d seconds\n\n" msgstr "" -#: src/Sight.cpp:536 +#: src\Sight.cpp:557 src\Sight.cpp.bak:558 msgid "Almanac Data For " msgstr "Almanak Data For " -#: src/Sight.cpp:537 +#: src\Sight.cpp:558 src\Sight.cpp.bak:559 #, c-format msgid "\n" "Geographical Position (lat, lon) = %.4f %.4f\n" @@ -418,16 +482,19 @@ msgstr "\n" "SD = %.1f'\n" "HP = %.1f'\n\n" -#: src/Sight.cpp:552 src/Sight.cpp:690 +#: src\Sight.cpp:573 src\Sight.cpp:711 src\Sight.cpp.bak:574 +#: src\Sight.cpp.bak:712 msgid "Formulas used to calculate sight\n\n" msgstr "Formler, der bruges til at beregne observationer\n\n" -#: src/Sight.cpp:556 src/Sight.cpp:694 +#: src\Sight.cpp:577 src\Sight.cpp:715 src\Sight.cpp.bak:578 +#: src\Sight.cpp.bak:716 #, c-format msgid "Index Error is %.4f degrees\n\n" msgstr "Index fejl er %.4f grader\n\n" -#: src/Sight.cpp:561 src/Sight.cpp:699 +#: src\Sight.cpp:582 src\Sight.cpp:720 src\Sight.cpp.bak:583 +#: src\Sight.cpp.bak:721 #, c-format msgid "Eye Height is %.4f meters\n" "Height Correction Degrees = 1.758*sqrt(%.4f) / 60.0\n" @@ -436,7 +503,8 @@ msgstr "Øjenhøjde er %.4f meter\n" "Højdekorrektion grader = 1.758*sqrt(%.4f) / 60.0\n" "Højdekorrektion grader = %.4f\n" -#: src/Sight.cpp:568 +#: src\Sight.cpp:589 src\Sight.cpp:799 src\Sight.cpp.bak:590 +#: src\Sight.cpp.bak:800 #, c-format msgid "\n" "Apparent Altitude (Ha)\n" @@ -449,7 +517,8 @@ msgstr "\n" "Tilsyneladende højde = %.4f - %.4f - %.4f\n" "Tilsyneladende højde= %.4f\n" -#: src/Sight.cpp:586 src/Sight.cpp:789 +#: src\Sight.cpp:607 src\Sight.cpp:810 src\Sight.cpp.bak:608 +#: src\Sight.cpp.bak:811 #, c-format msgid "\n" "Refraction Correction\n" @@ -462,7 +531,8 @@ msgstr "\n" "x = tan (Pi/180 *%.4f + 4.848e-2*(Pi/180) / (tan(Pi/180*%.4f) +.028)) \n" "x = %.4f\n" -#: src/Sight.cpp:591 src/Sight.cpp:794 +#: src\Sight.cpp:612 src\Sight.cpp:815 src\Sight.cpp.bak:613 +#: src\Sight.cpp.bak:816 #, c-format msgid "RefractionCorrection = .267 * Pressure / (x*(Temperature + 273.15)) / 60.0\n" "RefractionCorrection = .267 * %.4f / (x*(%.4f + 273.15)) / 60.0\n" @@ -471,7 +541,8 @@ msgstr "Refraktionskorrektion =.267 * tryk / (x * (temperatur + 273.15)) / 60.0\ "Refraktionskorrektion =.267 * %.4f / (x * (%.4f + 273.15)) / 60.0\n" "Refraktionskorrektion = %.4f\n" -#: src/Sight.cpp:606 src/Sight.cpp:808 +#: src\Sight.cpp:627 src\Sight.cpp:829 src\Sight.cpp.bak:628 +#: src\Sight.cpp.bak:830 #, c-format msgid "\n" "Sun selected, Limb Correction\n" @@ -480,7 +551,8 @@ msgstr "\n" "Sol valgt, gradbue korrektion\n" "ra = %.4f, lc = 0.266564/ra = %.4f\n" -#: src/Sight.cpp:616 src/Sight.cpp:732 +#: src\Sight.cpp:637 src\Sight.cpp:753 src\Sight.cpp.bak:638 +#: src\Sight.cpp.bak:754 #, c-format msgid "\n" "Moon selected, Limb Correction\n" @@ -493,22 +565,26 @@ msgstr "\n" "lc = 180/Pi * asin (Pi/180 * SD) \n" "lc = %.4f\n" -#: src/Sight.cpp:626 src/Sight.cpp:741 src/Sight.cpp:816 +#: src\Sight.cpp:647 src\Sight.cpp:762 src\Sight.cpp:837 src\Sight.cpp.bak:648 +#: src\Sight.cpp.bak:763 src\Sight.cpp.bak:838 msgid "Upper Limb" msgstr "Øvre gradbue" -#: src/Sight.cpp:629 src/Sight.cpp:744 src/Sight.cpp:819 +#: src\Sight.cpp:650 src\Sight.cpp:765 src\Sight.cpp:840 src\Sight.cpp.bak:651 +#: src\Sight.cpp.bak:766 src\Sight.cpp.bak:841 msgid "Lower Limb" msgstr "Underste gradbue" -#: src/Sight.cpp:632 src/Sight.cpp:822 +#: src\Sight.cpp:653 src\Sight.cpp:843 src\Sight.cpp.bak:654 +#: src\Sight.cpp.bak:844 #, c-format msgid "\n" "LimbCorrection = %.4f\n" msgstr "\n" "Gradbue korrektion = %.4f\n" -#: src/Sight.cpp:636 src/Sight.cpp:826 +#: src\Sight.cpp:657 src\Sight.cpp:847 src\Sight.cpp.bak:658 +#: src\Sight.cpp.bak:848 #, c-format msgid "\n" "Corrected Altitude\n" @@ -521,7 +597,8 @@ msgstr "\n" "korrigeret højde = %.4f - %.4f - %.4f\n" "korrigeret højde = %.4f\n" -#: src/Sight.cpp:650 src/Sight.cpp:840 +#: src\Sight.cpp:671 src\Sight.cpp:861 src\Sight.cpp.bak:672 +#: src\Sight.cpp.bak:862 #, c-format msgid "\n" "Sun selected, parallax correction\n" @@ -530,7 +607,8 @@ msgstr "\n" "Sol valgt, parallakse korrektion\n" "rad = %.4f, HP = 0.002442/rad = %.4f\n" -#: src/Sight.cpp:659 src/Sight.cpp:764 +#: src\Sight.cpp:680 src\Sight.cpp:785 src\Sight.cpp.bak:681 +#: src\Sight.cpp.bak:786 #, c-format msgid "\n" "Moon selected, parallax correction\n" @@ -539,7 +617,8 @@ msgstr "\n" "Måne valgt, parallakse korrektion\n" "HP = %.4f\n" -#: src/Sight.cpp:665 src/Sight.cpp:846 +#: src\Sight.cpp:686 src\Sight.cpp:867 src\Sight.cpp.bak:687 +#: src\Sight.cpp.bak:868 #, c-format msgid "ParallaxCorrection = -180/Pi * asin( sin(Pi/180 * HP ) * cos(Pi/180 * CorrectedAltitude))\n" "ParallaxCorrection = -180/Pi * asin( sin(Pi/180 * %.4f ) * cos(Pi/180 * %.4f))\n" @@ -548,7 +627,7 @@ msgstr "Parallaksekorrection =-180/Pi * asin (synd (Pi/180 * HP) * cos (Pi/180 * "Parallaksekorrektion =-180/Pi * asin (synd (Pi/180 * %.4f) * cos (Pi/180 * %.4f)) \n" "Paralaksekorrektion = %.4f\n" -#: src/Sight.cpp:672 +#: src\Sight.cpp:693 src\Sight.cpp.bak:694 #, c-format msgid "\n" "Observed Altitude (Ho)\n" @@ -561,16 +640,16 @@ msgstr "\n" "Observet højde = %.4f - %.4f\n" "Observet højde = %.4f\n" -#: src/Sight.cpp:706 +#: src\Sight.cpp:727 src\Sight.cpp.bak:728 #, c-format msgid "\n" "Apparent Moon Altitude (Ha)\n" "ApparentAltitudeMoon = MeasurementMoon - IndexCorrection - EyeHeightCorrection\n" -" ApparentAltitudeMoon = %.4f - %.4f - %.4f\n" +"ApparentAltitudeMoon = %.4f - %.4f - %.4f\n" "ApparentAltitudeMoon = %.4f\n" msgstr "" -#: src/Sight.cpp:717 +#: src\Sight.cpp:738 src\Sight.cpp.bak:739 #, c-format msgid "\n" "Refraction Correction\n" @@ -579,20 +658,21 @@ msgid "\n" "x = %.4f\n" msgstr "" -#: src/Sight.cpp:722 +#: src\Sight.cpp:743 src\Sight.cpp.bak:744 #, c-format msgid "RefractionCorrectionMoon = .267 * Pressure / (x*(Temperature + 273.15)) / 60.0\n" "RefractionCorrectionMoon = .267 * %.4f / (x*(%.4f + 273.15)) / 60.0\n" "RefractionCorrectionMoon = %.4f\n" msgstr "" -#: src/Sight.cpp:747 src/Sight.cpp:750 +#: src\Sight.cpp:768 src\Sight.cpp:771 src\Sight.cpp.bak:769 +#: src\Sight.cpp.bak:772 #, c-format msgid "\n" "LimbCorrectionMoon = %.4f\n" msgstr "" -#: src/Sight.cpp:753 +#: src\Sight.cpp:774 src\Sight.cpp.bak:775 #, c-format msgid "\n" "Corrected Altitude\n" @@ -601,108 +681,82 @@ msgid "\n" "CorrectedAltitudeMoon = %.4f\n" msgstr "" -#: src/Sight.cpp:768 +#: src\Sight.cpp:789 src\Sight.cpp.bak:790 #, c-format msgid "ParallaxCorrectionMoon = -180/Pi * asin( sin(Pi/180 * HP ) * cos(Pi/180 * CorrectedAltitude))\n" -" ParallaxCorrectionMoon = -180/Pi * asin( sin(Pi/180 * %.4f ) * cos(Pi/180 * %.4f))\n" +"ParallaxCorrectionMoon = -180/Pi * asin( sin(Pi/180 * %.4f ) * cos(Pi/180 * %.4f))\n" "ParallaxCorrectionMoon = %.4f\n" msgstr "" -#: src/Sight.cpp:778 -#, c-format -msgid "\n" -"Apparent Altitude (Ha)\n" -"ApparentAltitude = Measurement - IndexCorrection - EyeHeightCorrection\n" -" ApparentAltitude = %.4f - %.4f - %.4f\n" -"ApparentAltitude = %.4f\n" -msgstr "" - -#: src/Sight.cpp:857 +#: src\Sight.cpp:878 src\Sight.cpp.bak:879 #, c-format msgid "CorrectionsMoon = %.4f\n" "CorrectionsBody = %.4f\n" "Corrections = abs(CorrectionsMoon - CorrectionsBody) = %.4f\n" msgstr "" -#: src/Sight.cpp:863 +#: src\Sight.cpp:884 src\Sight.cpp.bak:885 #, c-format msgid "CorrectedMeasurement = Measurement - Corrections - IndexCorrection\n" "CorrectedMeasurement = %.4f - %.4f - %.4f\n" "CorrectedMeasurement = %.4f\n" msgstr "" -#: src/Sight.cpp:888 +#: src\Sight.cpp:909 src\Sight.cpp.bak:910 msgid "\n" "Calculated angle between Moon and " msgstr "" -#: src/Sight.cpp:890 +#: src\Sight.cpp:911 src\Sight.cpp.bak:912 #, c-format msgid "\n" "Error from measurement: %.4f" msgstr "" -#: src/Sight.cpp:894 +#: src\Sight.cpp:915 src\Sight.cpp.bak:916 msgid "\n" "Moon takes 28 days to orbit, one degree of error takes 6720 seconds" msgstr "" -#: src/Sight.cpp:895 +#: src\Sight.cpp:916 src\Sight.cpp.bak:917 #, c-format msgid "\n" "Time correction %.4f seconds" msgstr "" -#: src/Sight.cpp:1099 +#: src\Sight.cpp:1120 src\Sight.cpp.bak:1121 msgid "Building bearing Sight Positions" msgstr "Building bearing Sight Positions" -#: src/SightDialog.cpp:172 +#: src\SightDialog.cpp:184 msgid "Measurement certainty likely set to small, sight may not appear " msgstr "Målings-sikkerhed sandsynligvis indstillet til lille, observation kan måske ikke vises " -#: src/SightDialog.cpp:173 src/SightDialog.cpp:256 +#: src\SightDialog.cpp:185 src\SightDialog.cpp:279 msgid "Warning" msgstr "Advarsel" -#: src/SightDialog.cpp:255 +#: src\SightDialog.cpp:278 msgid "Lunar shot will be invalid taking distance from moon to itself" msgstr "" -#: src/celestial_navigation_pi.cpp:90 -msgid "Failed to load file:\n" -msgstr "Kunne ikke indlæse file:\n" - -#: src/celestial_navigation_pi.cpp:91 -msgid "\n" -"Magnetic data will not be available for the celestial navigation plugin." -msgstr "\n" -"Magnetiske data er ikke tilgængelige for astronomisk navigation plugin." - -#: src/celestial_navigation_pi.cpp:92 -msgid "OpenCPN Alert" -msgstr "OpenCPN advarsel" - -#: src/celestial_navigation_pi.cpp:157 -msgid "Celestial Navigation PlugIn for OpenCPN" -msgstr "Astronomisk Navigation PlugIn for OpenCPN" +#: src\celestial_navigation_pi.cpp:179 +msgid "open error" +msgstr "" -#: src/celestial_navigation_pi.cpp:162 -msgid "Celestial Navigation PlugIn for OpenCPN.\n" -"Implements nautical almanac for sun, moon, planets,\n" -"and various navigational stars.\n" -"Compute position fix from celestial measurements." +#: src\celestial_navigation_pi.cpp:180 +msgid "corrupt record" msgstr "" -#: src/FixDialog.cpp:189 -msgid "Shifted sights are not used to compute a fix, determine fix visually instead.\n" -msgstr "Shifted observationer bruges ikke til at beregne et fix, bestem fix visuelt i stedet. \n" +#: src\celestial_navigation_pi.cpp:181 +msgid "too many models" +msgstr "" -#: src/FixDialog.cpp:190 -msgid "Fix Position" -msgstr "Fix Position" +#: src\celestial_navigation_pi.cpp:184 +msgid "Magnetic data will not be available for the celestial navigation plugin." +msgstr "" -#: src/FixDialog.cpp:335 src/FixDialog.cpp:336 src/FixDialog.cpp:337 -msgid " N/A " -msgstr " Ikke tilgængelig " +#: src\celestial_navigation_pi.cpp:185 +msgid "OpenCPN Alert" +msgstr "OpenCPN advarsel" diff --git a/po/de_DE.po b/po/de_DE.po index 289df99..48167e4 100644 --- a/po/de_DE.po +++ b/po/de_DE.po @@ -2,404 +2,468 @@ msgid "" msgstr "" "Project-Id-Version: opencpn\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-02-28 14:10-0300\n" -"PO-Revision-Date: 2018-03-03 08:23-0500\n" -"Last-Translator: nohal \n" +"POT-Creation-Date: 2021-10-27 22:15+0200\n" +"PO-Revision-Date: 2023-10-04 18:33\n" +"Last-Translator: \n" "Language-Team: German\n" "Language: de_DE\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -"X-Generator: crowdin.com\n" "X-Crowdin-Project: opencpn\n" +"X-Crowdin-Project-ID: 49843\n" "X-Crowdin-Language: de\n" "X-Crowdin-File: /plugins/celestial_navigation_pi/po/celestial_navigation_pi.pot\n" +"X-Crowdin-File-ID: 108\n" -#: src/CelestialNavigationDialog.cpp:123 src/CelestialNavigationUI.cpp:132 +#: src\CelestialNavigationDialog-2.3.5.1-no-android.cpp:149 +#: src\CelestialNavigationDialog-2.3.5.2-android.cpp:150 +#: src\CelestialNavigationDialog-partial-android.cpp:149 +#: src\CelestialNavigationDialog.cpp:150 src\CelestialNavigationUI.cpp:137 msgid "Type" msgstr "Typ" -#: src/CelestialNavigationDialog.cpp:124 +#: src\CelestialNavigationDialog-2.3.5.1-no-android.cpp:150 +#: src\CelestialNavigationDialog-2.3.5.2-android.cpp:151 +#: src\CelestialNavigationDialog-partial-android.cpp:150 +#: src\CelestialNavigationDialog.cpp:151 msgid "Body" msgstr "Hauptteil" -#: src/CelestialNavigationDialog.cpp:125 -msgid "Time (UTC)" -msgstr "Zeit (UTC)" +#: src\CelestialNavigationDialog-2.3.5.1-no-android.cpp:151 +#: src\CelestialNavigationDialog-2.3.5.2-android.cpp:152 +#: src\CelestialNavigationDialog-partial-android.cpp:151 +#: src\CelestialNavigationDialog.cpp:152 src\CelestialNavigationUI.cpp:328 +msgid "Time (UT)" +msgstr "" -#: src/CelestialNavigationDialog.cpp:126 src/CelestialNavigationUI.cpp:179 +#: src\CelestialNavigationDialog-2.3.5.1-no-android.cpp:152 +#: src\CelestialNavigationDialog-2.3.5.2-android.cpp:153 +#: src\CelestialNavigationDialog-partial-android.cpp:152 +#: src\CelestialNavigationDialog.cpp:153 src\CelestialNavigationUI.cpp:184 msgid "Measurement" msgstr "Messung" -#: src/CelestialNavigationDialog.cpp:127 src/CelestialNavigationUI.cpp:376 +#: src\CelestialNavigationDialog-2.3.5.1-no-android.cpp:153 +#: src\CelestialNavigationDialog-2.3.5.2-android.cpp:154 +#: src\CelestialNavigationDialog-partial-android.cpp:153 +#: src\CelestialNavigationDialog.cpp:154 src\CelestialNavigationUI.cpp:381 msgid "Color" msgstr "Farbe" -#: src/CelestialNavigationDialog.cpp:193 -msgid "Failed to load file." -msgstr "Datei konnte nicht geladen werden" +#: src\CelestialNavigationDialog-2.3.5.1-no-android.cpp:266 +#: src\CelestialNavigationDialog-2.3.5.2-android.cpp:272 +#: src\CelestialNavigationDialog-partial-android.cpp:266 +#: src\CelestialNavigationDialog.cpp:272 src\celestial_navigation_pi.cpp:177 +msgid "Failed to load file: " +msgstr "" -#: src/CelestialNavigationDialog.cpp:198 +#: src\CelestialNavigationDialog-2.3.5.1-no-android.cpp:271 +#: src\CelestialNavigationDialog-2.3.5.2-android.cpp:277 +#: src\CelestialNavigationDialog-partial-android.cpp:271 +#: src\CelestialNavigationDialog.cpp:277 msgid "Invalid xml file" msgstr "Ungültige XML-Datei" -#: src/CelestialNavigationDialog.cpp:250 +#: src\CelestialNavigationDialog-2.3.5.1-no-android.cpp:323 +#: src\CelestialNavigationDialog-2.3.5.2-android.cpp:329 +#: src\CelestialNavigationDialog-partial-android.cpp:323 +#: src\CelestialNavigationDialog.cpp:329 msgid "Unrecognized xml node" msgstr "Nicht erkannter XML Knoten" -#: src/CelestialNavigationDialog.cpp:260 -msgid "Weather Routing" -msgstr "Wetter-Routenplanung" +#: src\CelestialNavigationDialog-2.3.5.1-no-android.cpp:332 +#: src\CelestialNavigationDialog-2.3.5.1-no-android.cpp:392 +#: src\CelestialNavigationDialog-2.3.5.1-no-android.cpp:532 +#: src\CelestialNavigationDialog-2.3.5.2-android.cpp:338 +#: src\CelestialNavigationDialog-2.3.5.2-android.cpp:398 +#: src\CelestialNavigationDialog-2.3.5.2-android.cpp:538 +#: src\CelestialNavigationDialog-partial-android.cpp:332 +#: src\CelestialNavigationDialog-partial-android.cpp:392 +#: src\CelestialNavigationDialog-partial-android.cpp:532 +#: src\CelestialNavigationDialog.cpp:338 src\CelestialNavigationDialog.cpp:398 +#: src\CelestialNavigationDialog.cpp:538 src\Sight.cpp:1120 +#: src\Sight.cpp.bak:1121 src\celestial_navigation_pi.cpp:95 +#: src\celestial_navigation_pi.cpp:99 +msgid "Celestial Navigation" +msgstr "Astronom. Navigation" -#: src/CelestialNavigationDialog.cpp:320 +#: src\CelestialNavigationDialog-2.3.5.1-no-android.cpp:391 +#: src\CelestialNavigationDialog-2.3.5.2-android.cpp:397 +#: src\CelestialNavigationDialog-partial-android.cpp:391 +#: src\CelestialNavigationDialog.cpp:397 msgid "Failed to save xml file: " msgstr "XML-Datei konnte nicht gespeichert werden: " -#: src/CelestialNavigationDialog.cpp:321 src/CelestialNavigationDialog.cpp:466 -#: src/Sight.cpp:1099 src/celestial_navigation_pi.cpp:99 -#: src/celestial_navigation_pi.cpp:152 -msgid "Celestial Navigation" -msgstr "Astronom. Navigation" - -#: src/CelestialNavigationDialog.cpp:351 +#: src\CelestialNavigationDialog-2.3.5.1-no-android.cpp:424 +#: src\CelestialNavigationDialog-2.3.5.2-android.cpp:430 +#: src\CelestialNavigationDialog-partial-android.cpp:424 +#: src\CelestialNavigationDialog.cpp:430 msgid "Time Correction" msgstr "Zeitberichtigung" -#: src/CelestialNavigationDialog.cpp:409 +#: src\CelestialNavigationDialog-2.3.5.1-no-android.cpp:473 +#: src\CelestialNavigationDialog-2.3.5.2-android.cpp:479 +#: src\CelestialNavigationDialog-partial-android.cpp:473 +#: src\CelestialNavigationDialog.cpp:479 msgid "Sun" msgstr "Sonne" -#: src/CelestialNavigationDialog.cpp:465 +#: src\CelestialNavigationDialog-2.3.5.1-no-android.cpp:531 +#: src\CelestialNavigationDialog-2.3.5.2-android.cpp:537 +#: src\CelestialNavigationDialog-partial-android.cpp:531 +#: src\CelestialNavigationDialog.cpp:537 msgid "Are you sure you want to delete all sights?" msgstr "Sollen alle Sichten gelöscht werden?" -#: src/CelestialNavigationDialog.cpp:510 +#: src\CelestialNavigationDialog-2.3.5.1-no-android.cpp:582 +#: src\CelestialNavigationDialog-2.3.5.2-android.cpp:588 +#: src\CelestialNavigationDialog-partial-android.cpp:582 +#: src\CelestialNavigationDialog.cpp:588 msgid "Celestial_Navigation_Information.html" msgstr "Astronom. Navigation" -#: src/CelestialNavigationDialog.cpp:516 -msgid "Show" -msgstr "Anzeigen" - -#: src/CelestialNavigationDialog.cpp:516 src/CelestialNavigationUI.cpp:58 +#: src\CelestialNavigationDialog-2.3.5.1-no-android.cpp:589 +#: src\CelestialNavigationDialog-2.3.5.2-android.cpp:595 +#: src\CelestialNavigationDialog-partial-android.cpp:589 +#: src\CelestialNavigationDialog.cpp:595 src\CelestialNavigationUI.cpp:55 msgid "Hide" msgstr "Ausblenden" -#: src/CelestialNavigationUI.cpp:40 +#: src\CelestialNavigationDialog-2.3.5.1-no-android.cpp:589 +#: src\CelestialNavigationDialog-2.3.5.2-android.cpp:595 +#: src\CelestialNavigationDialog-partial-android.cpp:589 +#: src\CelestialNavigationDialog.cpp:595 +msgid "Show" +msgstr "Anzeigen" + +#: src\CelestialNavigationUI.cpp:40 msgid "New" msgstr "Neu" -#: src/CelestialNavigationUI.cpp:43 -msgid "Edit" -msgstr "Bearbeiten" - -#: src/CelestialNavigationUI.cpp:46 -msgid "Delete" -msgstr "Löschen" - -#: src/CelestialNavigationUI.cpp:49 -msgid "Delete All" -msgstr "Alles löschen" - -#: src/CelestialNavigationUI.cpp:52 src/CelestialNavigationUI.h:281 +#: src\CelestialNavigationUI.cpp:43 src\CelestialNavigationUI.h:286 msgid "Fix" msgstr "Fix" -#: src/CelestialNavigationUI.cpp:55 +#: src\CelestialNavigationUI.cpp:46 +msgid "Duplicate" +msgstr "" + +#: src\CelestialNavigationUI.cpp:49 msgid "Clock Offset" msgstr "Zeitverschiebung" -#: src/CelestialNavigationUI.cpp:61 +#: src\CelestialNavigationUI.cpp:52 +msgid "Edit" +msgstr "Bearbeiten" + +#: src\CelestialNavigationUI.cpp:58 +msgid "Delete" +msgstr "Löschen" + +#: src\CelestialNavigationUI.cpp:61 msgid "Information" msgstr "Information" -#: src/CelestialNavigationUI.cpp:136 src/CelestialNavigationUI.cpp:667 -#: src/Sight.h:49 +#: src\CelestialNavigationUI.cpp:64 +msgid "Delete All" +msgstr "Alles löschen" + +#: src\CelestialNavigationUI.cpp:141 src\CelestialNavigationUI.cpp:674 +#: src\Sight.h:49 msgid "Altitude" msgstr "Höhe" -#: src/CelestialNavigationUI.cpp:136 src/CelestialNavigationUI.cpp:677 -#: src/Sight.h:49 +#: src\CelestialNavigationUI.cpp:141 src\CelestialNavigationUI.cpp:683 +#: src\Sight.h:49 msgid "Azimuth" msgstr "Azimut" -#: src/CelestialNavigationUI.cpp:136 src/Sight.h:49 +#: src\CelestialNavigationUI.cpp:141 src\Sight.h:49 msgid "Lunar" -msgstr "" +msgstr "Mond" -#: src/CelestialNavigationUI.cpp:142 +#: src\CelestialNavigationUI.cpp:147 msgid "Magnetic Azimuth" msgstr "Azimuth" -#: src/CelestialNavigationUI.cpp:145 +#: src\CelestialNavigationUI.cpp:150 msgid "Celestial Body" msgstr "Astronomisch" -#: src/CelestialNavigationUI.cpp:154 +#: src\CelestialNavigationUI.cpp:159 msgid "Find" msgstr "Finden" -#: src/CelestialNavigationUI.cpp:157 +#: src\CelestialNavigationUI.cpp:162 msgid "Limb" msgstr "Kante" -#: src/CelestialNavigationUI.cpp:161 -msgid "Lower" -msgstr "Unterer Rand" - -#: src/CelestialNavigationUI.cpp:161 +#: src\CelestialNavigationUI.cpp:166 msgid "Center" msgstr "Mittelpunkt" -#: src/CelestialNavigationUI.cpp:161 +#: src\CelestialNavigationUI.cpp:166 +msgid "Lower" +msgstr "Unterer Rand" + +#: src\CelestialNavigationUI.cpp:166 msgid "Upper" msgstr "Oberer Rand" -#: src/CelestialNavigationUI.cpp:186 src/CelestialNavigationUI.cpp:193 -#: src/CelestialNavigationUI.cpp:223 src/CelestialNavigationUI.cpp:230 +#: src\CelestialNavigationUI.cpp:191 src\CelestialNavigationUI.cpp:198 +#: src\CelestialNavigationUI.cpp:228 src\CelestialNavigationUI.cpp:235 msgid "0" msgstr "0" -#: src/CelestialNavigationUI.cpp:189 src/CelestialNavigationUI.cpp:348 -#: src/CelestialNavigationUI.cpp:598 +#: src\CelestialNavigationUI.cpp:194 src\CelestialNavigationUI.cpp:353 +#: src\CelestialNavigationUI.cpp:605 msgid "Degrees" msgstr "Grad" -#: src/CelestialNavigationUI.cpp:196 src/CelestialNavigationUI.cpp:278 -#: src/CelestialNavigationUI.cpp:439 +#: src\CelestialNavigationUI.cpp:201 src\CelestialNavigationUI.cpp:283 +#: src\CelestialNavigationUI.cpp:444 msgid "Minutes" msgstr "Minuten" -#: src/CelestialNavigationUI.cpp:200 +#: src\CelestialNavigationUI.cpp:205 msgid "10" msgstr "10" -#: src/CelestialNavigationUI.cpp:203 +#: src\CelestialNavigationUI.cpp:208 msgid "Minutes Certainty" -msgstr "" +msgstr "Bestimmung Minuten" -#: src/CelestialNavigationUI.cpp:217 +#: src\CelestialNavigationUI.cpp:222 msgid "Lunar Altitude" msgstr "Mond-Höhe" -#: src/CelestialNavigationUI.cpp:226 +#: src\CelestialNavigationUI.cpp:231 msgid "Body Altitude" msgstr "Körpergröße" -#: src/CelestialNavigationUI.cpp:243 +#: src\CelestialNavigationUI.cpp:248 msgid "Sight" msgstr "Sichtung" -#: src/CelestialNavigationUI.cpp:271 +#: src\CelestialNavigationUI.cpp:276 msgid "Hours" msgstr "Stunden" -#: src/CelestialNavigationUI.cpp:285 src/CelestialNavigationUI.cpp:303 -#: src/CelestialNavigationUI.cpp:860 +#: src\CelestialNavigationUI.cpp:290 src\CelestialNavigationUI.cpp:308 +#: src\CelestialNavigationUI.cpp:869 msgid "Seconds" msgstr "Sekunden" -#: src/CelestialNavigationUI.cpp:293 +#: src\CelestialNavigationUI.cpp:298 msgid "Certainty" msgstr "Gewissheit" -#: src/CelestialNavigationUI.cpp:323 -msgid "Time" -msgstr "Zeit" - -#: src/CelestialNavigationUI.cpp:330 src/CelestialNavigationUI.cpp:580 +#: src\CelestialNavigationUI.cpp:335 src\CelestialNavigationUI.cpp:587 msgid "Distance" msgstr "Abstand" -#: src/CelestialNavigationUI.cpp:337 src/CelestialNavigationUI.cpp:587 +#: src\CelestialNavigationUI.cpp:342 src\CelestialNavigationUI.cpp:594 msgid "Nm" msgstr "sm" -#: src/CelestialNavigationUI.cpp:341 src/CelestialNavigationUI.cpp:591 +#: src\CelestialNavigationUI.cpp:346 src\CelestialNavigationUI.cpp:598 msgid "Bearing" msgstr "Peilung" -#: src/CelestialNavigationUI.cpp:352 src/CelestialNavigationUI.cpp:602 +#: src\CelestialNavigationUI.cpp:357 src\CelestialNavigationUI.cpp:609 msgid "Magnetic Bearing" msgstr "Magnetische Peilung" -#: src/CelestialNavigationUI.cpp:359 +#: src\CelestialNavigationUI.cpp:364 msgid "DR Shift" msgstr "Koppelnavigationsverschiebung" -#: src/CelestialNavigationUI.cpp:366 +#: src\CelestialNavigationUI.cpp:371 msgid "Transparency" msgstr "Transparenz" -#: src/CelestialNavigationUI.cpp:387 +#: src\CelestialNavigationUI.cpp:392 msgid "Config" msgstr "Einstellungen" -#: src/CelestialNavigationUI.cpp:399 +#: src\CelestialNavigationUI.cpp:404 msgid "Eye Height" msgstr "Augenhöhe" -#: src/CelestialNavigationUI.cpp:403 +#: src\CelestialNavigationUI.cpp:408 msgid "2" msgstr "2" -#: src/CelestialNavigationUI.cpp:406 +#: src\CelestialNavigationUI.cpp:411 msgid "Meters" msgstr "Meter" -#: src/CelestialNavigationUI.cpp:410 +#: src\CelestialNavigationUI.cpp:415 msgid "Temperature" msgstr "Temperatur" -#: src/CelestialNavigationUI.cpp:417 +#: src\CelestialNavigationUI.cpp:422 msgid "Celcius" msgstr "Celsius" -#: src/CelestialNavigationUI.cpp:421 +#: src\CelestialNavigationUI.cpp:426 msgid "Pressure" msgstr "Luftdruck" -#: src/CelestialNavigationUI.cpp:428 +#: src\CelestialNavigationUI.cpp:433 msgid "MilliBars" msgstr "Millibar" -#: src/CelestialNavigationUI.cpp:432 +#: src\CelestialNavigationUI.cpp:437 msgid "Index Error" msgstr "Index-Fehler" -#: src/CelestialNavigationUI.cpp:446 +#: src\CelestialNavigationUI.cpp:451 msgid "Set As Defaults" msgstr "Als Standard festlegen" -#: src/CelestialNavigationUI.cpp:453 +#: src\CelestialNavigationUI.cpp:458 msgid "Parameters" msgstr "Parameter" -#: src/CelestialNavigationUI.cpp:469 +#: src\CelestialNavigationUI.cpp:474 msgid "Calculations" msgstr "Berechnungen" -#: src/CelestialNavigationUI.cpp:571 +#: src\CelestialNavigationUI.cpp:578 msgid "Shift all visible Sights" msgstr "Alle sichtbaren Sehenswürdigkeiten verschieben" -#: src/CelestialNavigationUI.cpp:649 src/CelestialNavigationUI.cpp:760 +#: src\CelestialNavigationUI.cpp:656 src\CelestialNavigationUI.cpp:769 msgid "Latitude" msgstr "Höhe" -#: src/CelestialNavigationUI.cpp:658 src/CelestialNavigationUI.cpp:768 +#: src\CelestialNavigationUI.cpp:665 src\CelestialNavigationUI.cpp:777 msgid "Longitude" msgstr "Längengrad (Lon)" -#: src/CelestialNavigationUI.cpp:669 src/CelestialNavigationUI.cpp:679 -msgid "MyLabel" -msgstr "MyLabel" - -#: src/CelestialNavigationUI.cpp:686 -msgid "Done" -msgstr "Ausgeführt" +#: src\CelestialNavigationUI.cpp:691 +msgid "Boat Position" +msgstr "" -#: src/CelestialNavigationUI.cpp:689 +#: src\CelestialNavigationUI.cpp:695 msgid "Magnetic" msgstr "Magnetisch" -#: src/CelestialNavigationUI.cpp:753 +#: src\CelestialNavigationUI.cpp:698 +msgid "Done" +msgstr "Ausgeführt" + +#: src\CelestialNavigationUI.cpp:762 msgid "Fix From Visible Sights" msgstr "Fix über Sichtungen" -#: src/CelestialNavigationUI.cpp:764 +#: src\CelestialNavigationUI.cpp:773 msgid " N/A " msgstr " N/A " -#: src/CelestialNavigationUI.cpp:772 +#: src\CelestialNavigationUI.cpp:781 msgid " N/A " msgstr " N/A " -#: src/CelestialNavigationUI.cpp:776 +#: src\CelestialNavigationUI.cpp:785 msgid "Error" msgstr "Fehler" -#: src/CelestialNavigationUI.cpp:780 +#: src\CelestialNavigationUI.cpp:789 msgid " N/A " msgstr " N/A " -#: src/CelestialNavigationUI.cpp:787 src/CelestialNavigationUI.cpp:794 +#: src\CelestialNavigationUI.cpp:796 src\CelestialNavigationUI.cpp:803 msgid "Initial" msgstr "Start" -#: src/CelestialNavigationUI.cpp:801 +#: src\CelestialNavigationUI.cpp:810 msgid "Alg" msgstr "Alg" -#: src/CelestialNavigationUI.cpp:806 +#: src\CelestialNavigationUI.cpp:815 msgid "Plane" msgstr "Ebene" -#: src/CelestialNavigationUI.cpp:807 +#: src\CelestialNavigationUI.cpp:816 msgid "Sphere" msgstr "Kugel" -#: src/CelestialNavigationUI.cpp:808 +#: src\CelestialNavigationUI.cpp:817 msgid "Cone" msgstr "Kegel" -#: src/CelestialNavigationUI.cpp:809 +#: src\CelestialNavigationUI.cpp:818 msgid "Cone 2" msgstr "Kegel 2" -#: src/CelestialNavigationUI.cpp:813 +#: src\CelestialNavigationUI.cpp:822 msgid "Go" msgstr "Los" -#: src/CelestialNavigationUI.cpp:850 src/CelestialNavigationUI.h:303 +#: src\CelestialNavigationUI.cpp:859 src\CelestialNavigationUI.h:308 msgid "Clock Correction" msgstr "Uhrberichtigung" -#: src/CelestialNavigationUI.h:78 +#: src\CelestialNavigationUI.h:82 msgid "Celestial Navigation Sights" msgstr "Astronom. Navigation" -#: src/CelestialNavigationUI.h:169 +#: src\CelestialNavigationUI.h:173 msgid "Sight Properties" msgstr "Eigenschaft Sichtung" -#: src/CelestialNavigationUI.h:200 +#: src\CelestialNavigationUI.h:204 msgid "Dead Reckoning shift" msgstr "Koppelnavigation verschieben" -#: src/CelestialNavigationUI.h:227 +#: src\CelestialNavigationUI.h:232 msgid "Find Celestial Body" msgstr "Finde Himmelskörper" -#: src/Sight.cpp:160 +#: src\FixDialog.cpp:192 +msgid "Shifted sights are not used to compute a fix, determine fix visually instead.\n" +msgstr "Verschobene Sehenswürdigkeiten werden nicht dazu verwendet, um eine Positionsbestimmung zu berechnen, sondern um die Position visuell zu bestimmen.\n" + +#: src\FixDialog.cpp:193 +msgid "Fix Position" +msgstr "Position korrigieren" + +#: src\FixDialog.cpp:338 src\FixDialog.cpp:339 src\FixDialog.cpp:340 +msgid " N/A " +msgstr " N/V " + +#: src\Sight.cpp:172 src\Sight.cpp.bak:173 msgid "Astrolab failed, data unavailable:\n" msgstr "Astrolab fehlgeschlagen, Daten nicht verfügbar:\n" -#: src/Sight.cpp:161 +#: src\Sight.cpp:173 src\Sight.cpp.bak:174 msgid "\n" "Did you forget to install vsop87d.txt?\n" msgstr "\n" "Wurde Installation von vsop87d.txt vergessen?\n" -#: src/Sight.cpp:162 +#: src\Sight.cpp:174 src\Sight.cpp.bak:175 msgid "The plugin will not work correctly" msgstr "Das Plugin wird nicht korrekt arbeiten" -#: src/Sight.cpp:163 +#: src\Sight.cpp:175 src\Sight.cpp.bak:176 msgid "Failure Alert" msgstr "Fehler-Alarm" -#: src/Sight.cpp:474 +#: src\Sight.cpp:495 src\Sight.cpp.bak:496 #, c-format msgid "Applying clock correction of %d seconds\n\n" msgstr "Zeitkorrektur von %d Sekunden übernehmen\n\n" -#: src/Sight.cpp:536 +#: src\Sight.cpp:557 src\Sight.cpp.bak:558 msgid "Almanac Data For " msgstr "Almanach Daten für " -#: src/Sight.cpp:537 +#: src\Sight.cpp:558 src\Sight.cpp.bak:559 #, c-format msgid "\n" "Geographical Position (lat, lon) = %.4f %.4f\n" @@ -418,16 +482,19 @@ msgstr "\n" "SD = %.3f'\n" "HP = %.3f'\n\n" -#: src/Sight.cpp:552 src/Sight.cpp:690 +#: src\Sight.cpp:573 src\Sight.cpp:711 src\Sight.cpp.bak:574 +#: src\Sight.cpp.bak:712 msgid "Formulas used to calculate sight\n\n" msgstr "Verwendete Formeln zur Sicht-Berechnung\n\n" -#: src/Sight.cpp:556 src/Sight.cpp:694 +#: src\Sight.cpp:577 src\Sight.cpp:715 src\Sight.cpp.bak:578 +#: src\Sight.cpp.bak:716 #, c-format msgid "Index Error is %.4f degrees\n\n" msgstr "Index Fehler beträgt %.4f Grad\n\n" -#: src/Sight.cpp:561 src/Sight.cpp:699 +#: src\Sight.cpp:582 src\Sight.cpp:720 src\Sight.cpp.bak:583 +#: src\Sight.cpp.bak:721 #, c-format msgid "Eye Height is %.4f meters\n" "Height Correction Degrees = 1.758*sqrt(%.4f) / 60.0\n" @@ -436,7 +503,8 @@ msgstr "Augenhöhe ist %.3f Meter\n" "Höhenkorrektur Grad = 1.753*sqrt(%.3f) / 60.0\n" "Höhenkorrektur Grad = %.3f\n" -#: src/Sight.cpp:568 +#: src\Sight.cpp:589 src\Sight.cpp:799 src\Sight.cpp.bak:590 +#: src\Sight.cpp.bak:800 #, c-format msgid "\n" "Apparent Altitude (Ha)\n" @@ -449,7 +517,8 @@ msgstr "\n" "BeobachteteHöhe = %.4f - %.4f - %.4f\n" "BeobachteteHöhe = %.4f\n" -#: src/Sight.cpp:586 src/Sight.cpp:789 +#: src\Sight.cpp:607 src\Sight.cpp:810 src\Sight.cpp.bak:608 +#: src\Sight.cpp.bak:811 #, c-format msgid "\n" "Refraction Correction\n" @@ -462,7 +531,8 @@ msgstr "\n" "x = tan(Pi/180*%.4f + 4.848e-2*(Pi/180) / (tan(Pi/180*%.4f) + .028))\n" "x = %.4f\n" -#: src/Sight.cpp:591 src/Sight.cpp:794 +#: src\Sight.cpp:612 src\Sight.cpp:815 src\Sight.cpp.bak:613 +#: src\Sight.cpp.bak:816 #, c-format msgid "RefractionCorrection = .267 * Pressure / (x*(Temperature + 273.15)) / 60.0\n" "RefractionCorrection = .267 * %.4f / (x*(%.4f + 273.15)) / 60.0\n" @@ -471,7 +541,8 @@ msgstr "Brechungskorrektur = .267 * Druck / (x*(Temperatur + 273.15)) / 60.0\n" "Brechungskorrektur = .267 * %.4f / (x*(%.4f + 273.15)) / 60.0\n" "Brechungskorrektur = %.4f\n" -#: src/Sight.cpp:606 src/Sight.cpp:808 +#: src\Sight.cpp:627 src\Sight.cpp:829 src\Sight.cpp.bak:628 +#: src\Sight.cpp.bak:830 #, c-format msgid "\n" "Sun selected, Limb Correction\n" @@ -480,7 +551,8 @@ msgstr "\n" "Sonne gewählt, Rand Korrektur\n" "ra = %.4f, lc = 0.266564/ra = %.4f\n" -#: src/Sight.cpp:616 src/Sight.cpp:732 +#: src\Sight.cpp:637 src\Sight.cpp:753 src\Sight.cpp.bak:638 +#: src\Sight.cpp.bak:754 #, c-format msgid "\n" "Moon selected, Limb Correction\n" @@ -493,22 +565,26 @@ msgstr "\n" "lc = 180/Pi * asin(Pi/180*SD)\n" "lc = %.4f\n" -#: src/Sight.cpp:626 src/Sight.cpp:741 src/Sight.cpp:816 +#: src\Sight.cpp:647 src\Sight.cpp:762 src\Sight.cpp:837 src\Sight.cpp.bak:648 +#: src\Sight.cpp.bak:763 src\Sight.cpp.bak:838 msgid "Upper Limb" msgstr "Oberer Rand" -#: src/Sight.cpp:629 src/Sight.cpp:744 src/Sight.cpp:819 +#: src\Sight.cpp:650 src\Sight.cpp:765 src\Sight.cpp:840 src\Sight.cpp.bak:651 +#: src\Sight.cpp.bak:766 src\Sight.cpp.bak:841 msgid "Lower Limb" msgstr "Unterer Rand" -#: src/Sight.cpp:632 src/Sight.cpp:822 +#: src\Sight.cpp:653 src\Sight.cpp:843 src\Sight.cpp.bak:654 +#: src\Sight.cpp.bak:844 #, c-format msgid "\n" "LimbCorrection = %.4f\n" msgstr "\n" "RandKorrektur = %.4f\n" -#: src/Sight.cpp:636 src/Sight.cpp:826 +#: src\Sight.cpp:657 src\Sight.cpp:847 src\Sight.cpp.bak:658 +#: src\Sight.cpp.bak:848 #, c-format msgid "\n" "Corrected Altitude\n" @@ -521,7 +597,8 @@ msgstr "\n" "CorrectedAltitude = %.4f - %.4f - %.4f\n" "CorrectedAltitude = %.4f\n" -#: src/Sight.cpp:650 src/Sight.cpp:840 +#: src\Sight.cpp:671 src\Sight.cpp:861 src\Sight.cpp.bak:672 +#: src\Sight.cpp.bak:862 #, c-format msgid "\n" "Sun selected, parallax correction\n" @@ -530,7 +607,8 @@ msgstr "\n" "Sonne gewählt, Parallax Korrektur\n" "rad = %.3f, HP = 0.002442/rad = %.3f\n" -#: src/Sight.cpp:659 src/Sight.cpp:764 +#: src\Sight.cpp:680 src\Sight.cpp:785 src\Sight.cpp.bak:681 +#: src\Sight.cpp.bak:786 #, c-format msgid "\n" "Moon selected, parallax correction\n" @@ -539,7 +617,8 @@ msgstr "\n" "Mond gewählt, parallaxe Korrektur\n" "HP = %.3f\n" -#: src/Sight.cpp:665 src/Sight.cpp:846 +#: src\Sight.cpp:686 src\Sight.cpp:867 src\Sight.cpp.bak:687 +#: src\Sight.cpp.bak:868 #, c-format msgid "ParallaxCorrection = -180/Pi * asin( sin(Pi/180 * HP ) * cos(Pi/180 * CorrectedAltitude))\n" "ParallaxCorrection = -180/Pi * asin( sin(Pi/180 * %.4f ) * cos(Pi/180 * %.4f))\n" @@ -548,7 +627,7 @@ msgstr "ParallaxKorrektur = -180/Pi * asin( sin(Pi/180 * HP ) * cos(Pi/180 * Beo "ParallaxKorrektur = -180/Pi * asin( sin(Pi/180 * %.3f ) * cos(Pi/180 * %.3f))\n" "ParallaxKorrektur = %.5f\n" -#: src/Sight.cpp:672 +#: src\Sight.cpp:693 src\Sight.cpp.bak:694 #, c-format msgid "\n" "Observed Altitude (Ho)\n" @@ -561,20 +640,16 @@ msgstr "\n" "Korrigierte Höhe = %.3f - %.3f\n" "Korrigierte Höhe = %.5f\n" -#: src/Sight.cpp:706 +#: src\Sight.cpp:727 src\Sight.cpp.bak:728 #, c-format msgid "\n" "Apparent Moon Altitude (Ha)\n" "ApparentAltitudeMoon = MeasurementMoon - IndexCorrection - EyeHeightCorrection\n" -" ApparentAltitudeMoon = %.4f - %.4f - %.4f\n" +"ApparentAltitudeMoon = %.4f - %.4f - %.4f\n" "ApparentAltitudeMoon = %.4f\n" -msgstr "\n" -"Scheinbare Mondhöhe (Ha)\n" -"ApparentAltitudeMoon = MeasurementMoon - IndexKorrektur - EyeHeightCorrection\n" -"ScheinbareAltitudeMoon = %.4f - %.4f - %.4f\n" -"ScheinbareAltitudeMoon = %.4f\n" +msgstr "" -#: src/Sight.cpp:717 +#: src\Sight.cpp:738 src\Sight.cpp.bak:739 #, c-format msgid "\n" "Refraction Correction\n" @@ -583,20 +658,21 @@ msgid "\n" "x = %.4f\n" msgstr "" -#: src/Sight.cpp:722 +#: src\Sight.cpp:743 src\Sight.cpp.bak:744 #, c-format msgid "RefractionCorrectionMoon = .267 * Pressure / (x*(Temperature + 273.15)) / 60.0\n" "RefractionCorrectionMoon = .267 * %.4f / (x*(%.4f + 273.15)) / 60.0\n" "RefractionCorrectionMoon = %.4f\n" msgstr "" -#: src/Sight.cpp:747 src/Sight.cpp:750 +#: src\Sight.cpp:768 src\Sight.cpp:771 src\Sight.cpp.bak:769 +#: src\Sight.cpp.bak:772 #, c-format msgid "\n" "LimbCorrectionMoon = %.4f\n" msgstr "" -#: src/Sight.cpp:753 +#: src\Sight.cpp:774 src\Sight.cpp.bak:775 #, c-format msgid "\n" "Corrected Altitude\n" @@ -605,111 +681,86 @@ msgid "\n" "CorrectedAltitudeMoon = %.4f\n" msgstr "" -#: src/Sight.cpp:768 +#: src\Sight.cpp:789 src\Sight.cpp.bak:790 #, c-format msgid "ParallaxCorrectionMoon = -180/Pi * asin( sin(Pi/180 * HP ) * cos(Pi/180 * CorrectedAltitude))\n" -" ParallaxCorrectionMoon = -180/Pi * asin( sin(Pi/180 * %.4f ) * cos(Pi/180 * %.4f))\n" +"ParallaxCorrectionMoon = -180/Pi * asin( sin(Pi/180 * %.4f ) * cos(Pi/180 * %.4f))\n" "ParallaxCorrectionMoon = %.4f\n" msgstr "" -#: src/Sight.cpp:778 -#, c-format -msgid "\n" -"Apparent Altitude (Ha)\n" -"ApparentAltitude = Measurement - IndexCorrection - EyeHeightCorrection\n" -" ApparentAltitude = %.4f - %.4f - %.4f\n" -"ApparentAltitude = %.4f\n" -msgstr "" - -#: src/Sight.cpp:857 +#: src\Sight.cpp:878 src\Sight.cpp.bak:879 #, c-format msgid "CorrectionsMoon = %.4f\n" "CorrectionsBody = %.4f\n" "Corrections = abs(CorrectionsMoon - CorrectionsBody) = %.4f\n" msgstr "" -#: src/Sight.cpp:863 +#: src\Sight.cpp:884 src\Sight.cpp.bak:885 #, c-format msgid "CorrectedMeasurement = Measurement - Corrections - IndexCorrection\n" "CorrectedMeasurement = %.4f - %.4f - %.4f\n" "CorrectedMeasurement = %.4f\n" msgstr "" -#: src/Sight.cpp:888 +#: src\Sight.cpp:909 src\Sight.cpp.bak:910 msgid "\n" "Calculated angle between Moon and " msgstr "\n" "berechneter Winkel zwischen Mond und " -#: src/Sight.cpp:890 +#: src\Sight.cpp:911 src\Sight.cpp.bak:912 #, c-format msgid "\n" "Error from measurement: %.4f" -msgstr "" +msgstr "\n" +"Messfehler: %.4f" -#: src/Sight.cpp:894 +#: src\Sight.cpp:915 src\Sight.cpp.bak:916 msgid "\n" "Moon takes 28 days to orbit, one degree of error takes 6720 seconds" -msgstr "" +msgstr "\n" +"Der Mond benötigt für seine Umlaufbahn 28 Tage, ein Messfehler von einem Grad bedeutet 6720 Sekunden" -#: src/Sight.cpp:895 +#: src\Sight.cpp:916 src\Sight.cpp.bak:917 #, c-format msgid "\n" "Time correction %.4f seconds" -msgstr "" +msgstr "\n" +"Zeitkorrektur %.4f Sekunden" -#: src/Sight.cpp:1099 +#: src\Sight.cpp:1120 src\Sight.cpp.bak:1121 msgid "Building bearing Sight Positions" msgstr "Erzeuge Peilung Sicht Positionen" -#: src/SightDialog.cpp:172 +#: src\SightDialog.cpp:184 msgid "Measurement certainty likely set to small, sight may not appear " msgstr "Messung sicherlich zu niedrig, Sicht wird nicht erscheinen" -#: src/SightDialog.cpp:173 src/SightDialog.cpp:256 +#: src\SightDialog.cpp:185 src\SightDialog.cpp:279 msgid "Warning" msgstr "Warnung" -#: src/SightDialog.cpp:255 +#: src\SightDialog.cpp:278 msgid "Lunar shot will be invalid taking distance from moon to itself" msgstr "" -#: src/celestial_navigation_pi.cpp:90 -msgid "Failed to load file:\n" -msgstr "Fehler b. Laden von:\n" - -#: src/celestial_navigation_pi.cpp:91 -msgid "\n" -"Magnetic data will not be available for the celestial navigation plugin." -msgstr "\n" -"Magnetische Daten werden für das astronomische Navigations Plugin nicht verfügbar werden." - -#: src/celestial_navigation_pi.cpp:92 -msgid "OpenCPN Alert" -msgstr "OpenCPN Alarm" - -#: src/celestial_navigation_pi.cpp:157 -msgid "Celestial Navigation PlugIn for OpenCPN" -msgstr "Astronomisches Navigation PlugIn für OpenCPN" +#: src\celestial_navigation_pi.cpp:179 +msgid "open error" +msgstr "" -#: src/celestial_navigation_pi.cpp:162 -msgid "Celestial Navigation PlugIn for OpenCPN.\n" -"Implements nautical almanac for sun, moon, planets,\n" -"and various navigational stars.\n" -"Compute position fix from celestial measurements." -msgstr "Astronomisches Navigations PlugIn für OpenCPN. \n" -" Implementiert nautischen Almanach für Sonne, Mond, Planeten und verschiedene navigatorisch relevante Sterne. \n" -"Befähigt den Anwender zur Berechnung eines Positions-Fixes aus astronomischen Messungen." +#: src\celestial_navigation_pi.cpp:180 +msgid "corrupt record" +msgstr "" -#: src/FixDialog.cpp:189 -msgid "Shifted sights are not used to compute a fix, determine fix visually instead.\n" -msgstr "Verschobene Sehenswürdigkeiten werden nicht dazu verwendet, um eine Positionsbestimmung zu berechnen, sondern um die Position visuell zu bestimmen.\n" +#: src\celestial_navigation_pi.cpp:181 +msgid "too many models" +msgstr "" -#: src/FixDialog.cpp:190 -msgid "Fix Position" -msgstr "Position korrigieren" +#: src\celestial_navigation_pi.cpp:184 +msgid "Magnetic data will not be available for the celestial navigation plugin." +msgstr "" -#: src/FixDialog.cpp:335 src/FixDialog.cpp:336 src/FixDialog.cpp:337 -msgid " N/A " -msgstr " N/V " +#: src\celestial_navigation_pi.cpp:185 +msgid "OpenCPN Alert" +msgstr "OpenCPN Alarm" diff --git a/po/el_GR.po b/po/el_GR.po index fb3a59c..0327be5 100644 --- a/po/el_GR.po +++ b/po/el_GR.po @@ -2,404 +2,468 @@ msgid "" msgstr "" "Project-Id-Version: opencpn\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-02-28 14:10-0300\n" -"PO-Revision-Date: 2018-03-03 08:23-0500\n" -"Last-Translator: nohal \n" +"POT-Creation-Date: 2021-10-27 22:15+0200\n" +"PO-Revision-Date: 2023-10-04 18:33\n" +"Last-Translator: \n" "Language-Team: Greek\n" "Language: el_GR\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -"X-Generator: crowdin.com\n" "X-Crowdin-Project: opencpn\n" +"X-Crowdin-Project-ID: 49843\n" "X-Crowdin-Language: el\n" "X-Crowdin-File: /plugins/celestial_navigation_pi/po/celestial_navigation_pi.pot\n" +"X-Crowdin-File-ID: 108\n" -#: src/CelestialNavigationDialog.cpp:123 src/CelestialNavigationUI.cpp:132 +#: src\CelestialNavigationDialog-2.3.5.1-no-android.cpp:149 +#: src\CelestialNavigationDialog-2.3.5.2-android.cpp:150 +#: src\CelestialNavigationDialog-partial-android.cpp:149 +#: src\CelestialNavigationDialog.cpp:150 src\CelestialNavigationUI.cpp:137 msgid "Type" msgstr "Τύπος" -#: src/CelestialNavigationDialog.cpp:124 +#: src\CelestialNavigationDialog-2.3.5.1-no-android.cpp:150 +#: src\CelestialNavigationDialog-2.3.5.2-android.cpp:151 +#: src\CelestialNavigationDialog-partial-android.cpp:150 +#: src\CelestialNavigationDialog.cpp:151 msgid "Body" msgstr "Ουράνιο σώμα" -#: src/CelestialNavigationDialog.cpp:125 -msgid "Time (UTC)" +#: src\CelestialNavigationDialog-2.3.5.1-no-android.cpp:151 +#: src\CelestialNavigationDialog-2.3.5.2-android.cpp:152 +#: src\CelestialNavigationDialog-partial-android.cpp:151 +#: src\CelestialNavigationDialog.cpp:152 src\CelestialNavigationUI.cpp:328 +msgid "Time (UT)" msgstr "Ώρα (UTC)" -#: src/CelestialNavigationDialog.cpp:126 src/CelestialNavigationUI.cpp:179 +#: src\CelestialNavigationDialog-2.3.5.1-no-android.cpp:152 +#: src\CelestialNavigationDialog-2.3.5.2-android.cpp:153 +#: src\CelestialNavigationDialog-partial-android.cpp:152 +#: src\CelestialNavigationDialog.cpp:153 src\CelestialNavigationUI.cpp:184 msgid "Measurement" msgstr "Μέτρηση" -#: src/CelestialNavigationDialog.cpp:127 src/CelestialNavigationUI.cpp:376 +#: src\CelestialNavigationDialog-2.3.5.1-no-android.cpp:153 +#: src\CelestialNavigationDialog-2.3.5.2-android.cpp:154 +#: src\CelestialNavigationDialog-partial-android.cpp:153 +#: src\CelestialNavigationDialog.cpp:154 src\CelestialNavigationUI.cpp:381 msgid "Color" msgstr "Χρώμα" -#: src/CelestialNavigationDialog.cpp:193 -msgid "Failed to load file." -msgstr "Η φόρτωση του αρχείου απέτυχε." - -#: src/CelestialNavigationDialog.cpp:198 +#: src\CelestialNavigationDialog-2.3.5.1-no-android.cpp:266 +#: src\CelestialNavigationDialog-2.3.5.2-android.cpp:272 +#: src\CelestialNavigationDialog-partial-android.cpp:266 +#: src\CelestialNavigationDialog.cpp:272 src\celestial_navigation_pi.cpp:177 +msgid "Failed to load file: " +msgstr "Απέτυχε η φόρτωση του αρχείου: " + +#: src\CelestialNavigationDialog-2.3.5.1-no-android.cpp:271 +#: src\CelestialNavigationDialog-2.3.5.2-android.cpp:277 +#: src\CelestialNavigationDialog-partial-android.cpp:271 +#: src\CelestialNavigationDialog.cpp:277 msgid "Invalid xml file" msgstr "Μη έγκυρο αρχείο xml" -#: src/CelestialNavigationDialog.cpp:250 +#: src\CelestialNavigationDialog-2.3.5.1-no-android.cpp:323 +#: src\CelestialNavigationDialog-2.3.5.2-android.cpp:329 +#: src\CelestialNavigationDialog-partial-android.cpp:323 +#: src\CelestialNavigationDialog.cpp:329 msgid "Unrecognized xml node" msgstr "Άγνωστος κόμβος xml" -#: src/CelestialNavigationDialog.cpp:260 -msgid "Weather Routing" -msgstr "Δρομολόγιο βάσει του καιρού" +#: src\CelestialNavigationDialog-2.3.5.1-no-android.cpp:332 +#: src\CelestialNavigationDialog-2.3.5.1-no-android.cpp:392 +#: src\CelestialNavigationDialog-2.3.5.1-no-android.cpp:532 +#: src\CelestialNavigationDialog-2.3.5.2-android.cpp:338 +#: src\CelestialNavigationDialog-2.3.5.2-android.cpp:398 +#: src\CelestialNavigationDialog-2.3.5.2-android.cpp:538 +#: src\CelestialNavigationDialog-partial-android.cpp:332 +#: src\CelestialNavigationDialog-partial-android.cpp:392 +#: src\CelestialNavigationDialog-partial-android.cpp:532 +#: src\CelestialNavigationDialog.cpp:338 src\CelestialNavigationDialog.cpp:398 +#: src\CelestialNavigationDialog.cpp:538 src\Sight.cpp:1120 +#: src\Sight.cpp.bak:1121 src\celestial_navigation_pi.cpp:95 +#: src\celestial_navigation_pi.cpp:99 +msgid "Celestial Navigation" +msgstr "Αστρονομική ναυσιπλοΐα" -#: src/CelestialNavigationDialog.cpp:320 +#: src\CelestialNavigationDialog-2.3.5.1-no-android.cpp:391 +#: src\CelestialNavigationDialog-2.3.5.2-android.cpp:397 +#: src\CelestialNavigationDialog-partial-android.cpp:391 +#: src\CelestialNavigationDialog.cpp:397 msgid "Failed to save xml file: " msgstr "Απέτυχε η αποθήκευση του αρχείου xml: " -#: src/CelestialNavigationDialog.cpp:321 src/CelestialNavigationDialog.cpp:466 -#: src/Sight.cpp:1099 src/celestial_navigation_pi.cpp:99 -#: src/celestial_navigation_pi.cpp:152 -msgid "Celestial Navigation" -msgstr "Αστρονομική ναυσιπλοΐα" - -#: src/CelestialNavigationDialog.cpp:351 +#: src\CelestialNavigationDialog-2.3.5.1-no-android.cpp:424 +#: src\CelestialNavigationDialog-2.3.5.2-android.cpp:430 +#: src\CelestialNavigationDialog-partial-android.cpp:424 +#: src\CelestialNavigationDialog.cpp:430 msgid "Time Correction" msgstr "Διόρθωση ώρας" -#: src/CelestialNavigationDialog.cpp:409 +#: src\CelestialNavigationDialog-2.3.5.1-no-android.cpp:473 +#: src\CelestialNavigationDialog-2.3.5.2-android.cpp:479 +#: src\CelestialNavigationDialog-partial-android.cpp:473 +#: src\CelestialNavigationDialog.cpp:479 msgid "Sun" msgstr "Ήλιος" -#: src/CelestialNavigationDialog.cpp:465 +#: src\CelestialNavigationDialog-2.3.5.1-no-android.cpp:531 +#: src\CelestialNavigationDialog-2.3.5.2-android.cpp:537 +#: src\CelestialNavigationDialog-partial-android.cpp:531 +#: src\CelestialNavigationDialog.cpp:537 msgid "Are you sure you want to delete all sights?" msgstr "Σίγουρα θέλετε να διαγράψετε όλες τις θεάσεις;" -#: src/CelestialNavigationDialog.cpp:510 +#: src\CelestialNavigationDialog-2.3.5.1-no-android.cpp:582 +#: src\CelestialNavigationDialog-2.3.5.2-android.cpp:588 +#: src\CelestialNavigationDialog-partial-android.cpp:582 +#: src\CelestialNavigationDialog.cpp:588 msgid "Celestial_Navigation_Information.html" msgstr "Celestial_Navigation_Information.html" -#: src/CelestialNavigationDialog.cpp:516 -msgid "Show" -msgstr "Εμφάνιση" - -#: src/CelestialNavigationDialog.cpp:516 src/CelestialNavigationUI.cpp:58 +#: src\CelestialNavigationDialog-2.3.5.1-no-android.cpp:589 +#: src\CelestialNavigationDialog-2.3.5.2-android.cpp:595 +#: src\CelestialNavigationDialog-partial-android.cpp:589 +#: src\CelestialNavigationDialog.cpp:595 src\CelestialNavigationUI.cpp:55 msgid "Hide" msgstr "Απόκρυψη" -#: src/CelestialNavigationUI.cpp:40 +#: src\CelestialNavigationDialog-2.3.5.1-no-android.cpp:589 +#: src\CelestialNavigationDialog-2.3.5.2-android.cpp:595 +#: src\CelestialNavigationDialog-partial-android.cpp:589 +#: src\CelestialNavigationDialog.cpp:595 +msgid "Show" +msgstr "Εμφάνιση" + +#: src\CelestialNavigationUI.cpp:40 msgid "New" msgstr "Νέο" -#: src/CelestialNavigationUI.cpp:43 -msgid "Edit" -msgstr "Επεξεργασία" - -#: src/CelestialNavigationUI.cpp:46 -msgid "Delete" -msgstr "Διαγραφή" - -#: src/CelestialNavigationUI.cpp:49 -msgid "Delete All" -msgstr "Διαγραφή όλων" - -#: src/CelestialNavigationUI.cpp:52 src/CelestialNavigationUI.h:281 +#: src\CelestialNavigationUI.cpp:43 src\CelestialNavigationUI.h:286 msgid "Fix" msgstr "Θέση" -#: src/CelestialNavigationUI.cpp:55 +#: src\CelestialNavigationUI.cpp:46 +msgid "Duplicate" +msgstr "Αντιγραφή" + +#: src\CelestialNavigationUI.cpp:49 msgid "Clock Offset" msgstr "Όφσετ ώρας" -#: src/CelestialNavigationUI.cpp:61 +#: src\CelestialNavigationUI.cpp:52 +msgid "Edit" +msgstr "Επεξεργασία" + +#: src\CelestialNavigationUI.cpp:58 +msgid "Delete" +msgstr "Διαγραφή" + +#: src\CelestialNavigationUI.cpp:61 msgid "Information" msgstr "Πληροφορίες" -#: src/CelestialNavigationUI.cpp:136 src/CelestialNavigationUI.cpp:667 -#: src/Sight.h:49 +#: src\CelestialNavigationUI.cpp:64 +msgid "Delete All" +msgstr "Διαγραφή όλων" + +#: src\CelestialNavigationUI.cpp:141 src\CelestialNavigationUI.cpp:674 +#: src\Sight.h:49 msgid "Altitude" msgstr "Υψόμετρο" -#: src/CelestialNavigationUI.cpp:136 src/CelestialNavigationUI.cpp:677 -#: src/Sight.h:49 +#: src\CelestialNavigationUI.cpp:141 src\CelestialNavigationUI.cpp:683 +#: src\Sight.h:49 msgid "Azimuth" msgstr "Αζιμούθιο" -#: src/CelestialNavigationUI.cpp:136 src/Sight.h:49 +#: src\CelestialNavigationUI.cpp:141 src\Sight.h:49 msgid "Lunar" msgstr "Σεληνιακή" -#: src/CelestialNavigationUI.cpp:142 +#: src\CelestialNavigationUI.cpp:147 msgid "Magnetic Azimuth" msgstr "Μαγνητικό αζιμούθιο" -#: src/CelestialNavigationUI.cpp:145 +#: src\CelestialNavigationUI.cpp:150 msgid "Celestial Body" msgstr "Ουράνιο σώμα" -#: src/CelestialNavigationUI.cpp:154 +#: src\CelestialNavigationUI.cpp:159 msgid "Find" msgstr "Αναζήτηση" -#: src/CelestialNavigationUI.cpp:157 +#: src\CelestialNavigationUI.cpp:162 msgid "Limb" msgstr "Μέλος" -#: src/CelestialNavigationUI.cpp:161 -msgid "Lower" -msgstr "Κατώτερο" - -#: src/CelestialNavigationUI.cpp:161 +#: src\CelestialNavigationUI.cpp:166 msgid "Center" msgstr "Κέντρο" -#: src/CelestialNavigationUI.cpp:161 +#: src\CelestialNavigationUI.cpp:166 +msgid "Lower" +msgstr "Κατώτερο" + +#: src\CelestialNavigationUI.cpp:166 msgid "Upper" msgstr "Ανώτερο" -#: src/CelestialNavigationUI.cpp:186 src/CelestialNavigationUI.cpp:193 -#: src/CelestialNavigationUI.cpp:223 src/CelestialNavigationUI.cpp:230 +#: src\CelestialNavigationUI.cpp:191 src\CelestialNavigationUI.cpp:198 +#: src\CelestialNavigationUI.cpp:228 src\CelestialNavigationUI.cpp:235 msgid "0" msgstr "0" -#: src/CelestialNavigationUI.cpp:189 src/CelestialNavigationUI.cpp:348 -#: src/CelestialNavigationUI.cpp:598 +#: src\CelestialNavigationUI.cpp:194 src\CelestialNavigationUI.cpp:353 +#: src\CelestialNavigationUI.cpp:605 msgid "Degrees" msgstr "Μοίρες" -#: src/CelestialNavigationUI.cpp:196 src/CelestialNavigationUI.cpp:278 -#: src/CelestialNavigationUI.cpp:439 +#: src\CelestialNavigationUI.cpp:201 src\CelestialNavigationUI.cpp:283 +#: src\CelestialNavigationUI.cpp:444 msgid "Minutes" msgstr "Λεπτά" -#: src/CelestialNavigationUI.cpp:200 +#: src\CelestialNavigationUI.cpp:205 msgid "10" msgstr "10" -#: src/CelestialNavigationUI.cpp:203 +#: src\CelestialNavigationUI.cpp:208 msgid "Minutes Certainty" msgstr "Ακρίβεια (±λεπτά)" -#: src/CelestialNavigationUI.cpp:217 +#: src\CelestialNavigationUI.cpp:222 msgid "Lunar Altitude" msgstr "Ύψος σελήνης" -#: src/CelestialNavigationUI.cpp:226 +#: src\CelestialNavigationUI.cpp:231 msgid "Body Altitude" msgstr "Ύψος σώματος" -#: src/CelestialNavigationUI.cpp:243 +#: src\CelestialNavigationUI.cpp:248 msgid "Sight" msgstr "Θέαση" -#: src/CelestialNavigationUI.cpp:271 +#: src\CelestialNavigationUI.cpp:276 msgid "Hours" msgstr "Ώρες" -#: src/CelestialNavigationUI.cpp:285 src/CelestialNavigationUI.cpp:303 -#: src/CelestialNavigationUI.cpp:860 +#: src\CelestialNavigationUI.cpp:290 src\CelestialNavigationUI.cpp:308 +#: src\CelestialNavigationUI.cpp:869 msgid "Seconds" msgstr "Δευτερόλεπτα" -#: src/CelestialNavigationUI.cpp:293 +#: src\CelestialNavigationUI.cpp:298 msgid "Certainty" msgstr "Ακρίβεια" -#: src/CelestialNavigationUI.cpp:323 -msgid "Time" -msgstr "Χρόνος" - -#: src/CelestialNavigationUI.cpp:330 src/CelestialNavigationUI.cpp:580 +#: src\CelestialNavigationUI.cpp:335 src\CelestialNavigationUI.cpp:587 msgid "Distance" msgstr "Απόσταση" -#: src/CelestialNavigationUI.cpp:337 src/CelestialNavigationUI.cpp:587 +#: src\CelestialNavigationUI.cpp:342 src\CelestialNavigationUI.cpp:594 msgid "Nm" msgstr "ν.μ." -#: src/CelestialNavigationUI.cpp:341 src/CelestialNavigationUI.cpp:591 +#: src\CelestialNavigationUI.cpp:346 src\CelestialNavigationUI.cpp:598 msgid "Bearing" msgstr "Κατεύθυνση" -#: src/CelestialNavigationUI.cpp:352 src/CelestialNavigationUI.cpp:602 +#: src\CelestialNavigationUI.cpp:357 src\CelestialNavigationUI.cpp:609 msgid "Magnetic Bearing" msgstr "Μαγνητική κατεύθυνση" -#: src/CelestialNavigationUI.cpp:359 +#: src\CelestialNavigationUI.cpp:364 msgid "DR Shift" msgstr "Μετατόπιση DR" -#: src/CelestialNavigationUI.cpp:366 +#: src\CelestialNavigationUI.cpp:371 msgid "Transparency" msgstr "Διαφάνεια" -#: src/CelestialNavigationUI.cpp:387 +#: src\CelestialNavigationUI.cpp:392 msgid "Config" msgstr "Διαμόρφωση" -#: src/CelestialNavigationUI.cpp:399 +#: src\CelestialNavigationUI.cpp:404 msgid "Eye Height" msgstr "Ύψος ματιού" -#: src/CelestialNavigationUI.cpp:403 +#: src\CelestialNavigationUI.cpp:408 msgid "2" msgstr "2" -#: src/CelestialNavigationUI.cpp:406 +#: src\CelestialNavigationUI.cpp:411 msgid "Meters" msgstr "μέτρα" -#: src/CelestialNavigationUI.cpp:410 +#: src\CelestialNavigationUI.cpp:415 msgid "Temperature" msgstr "Θερμοκρασία" -#: src/CelestialNavigationUI.cpp:417 +#: src\CelestialNavigationUI.cpp:422 msgid "Celcius" msgstr "Κελσίου" -#: src/CelestialNavigationUI.cpp:421 +#: src\CelestialNavigationUI.cpp:426 msgid "Pressure" msgstr "Πίεση" -#: src/CelestialNavigationUI.cpp:428 +#: src\CelestialNavigationUI.cpp:433 msgid "MilliBars" msgstr "μιλιμπαρ" -#: src/CelestialNavigationUI.cpp:432 +#: src\CelestialNavigationUI.cpp:437 msgid "Index Error" msgstr "Λάθος δείκτη εξάντα" -#: src/CelestialNavigationUI.cpp:446 +#: src\CelestialNavigationUI.cpp:451 msgid "Set As Defaults" msgstr "Ορισμός ως προεπιλογή" -#: src/CelestialNavigationUI.cpp:453 +#: src\CelestialNavigationUI.cpp:458 msgid "Parameters" msgstr "Παράμετροι" -#: src/CelestialNavigationUI.cpp:469 +#: src\CelestialNavigationUI.cpp:474 msgid "Calculations" msgstr "Υπολογισμοί" -#: src/CelestialNavigationUI.cpp:571 +#: src\CelestialNavigationUI.cpp:578 msgid "Shift all visible Sights" msgstr "Μετατόπιση όλων των ορατών θεάσεων" -#: src/CelestialNavigationUI.cpp:649 src/CelestialNavigationUI.cpp:760 +#: src\CelestialNavigationUI.cpp:656 src\CelestialNavigationUI.cpp:769 msgid "Latitude" msgstr "Γεωγραφικό πλάτος" -#: src/CelestialNavigationUI.cpp:658 src/CelestialNavigationUI.cpp:768 +#: src\CelestialNavigationUI.cpp:665 src\CelestialNavigationUI.cpp:777 msgid "Longitude" msgstr "Γεωγραφικό μήκος" -#: src/CelestialNavigationUI.cpp:669 src/CelestialNavigationUI.cpp:679 -msgid "MyLabel" -msgstr "MyLabel" +#: src\CelestialNavigationUI.cpp:691 +msgid "Boat Position" +msgstr "Θέση πλοίου" -#: src/CelestialNavigationUI.cpp:686 -msgid "Done" -msgstr "Έγινε" - -#: src/CelestialNavigationUI.cpp:689 +#: src\CelestialNavigationUI.cpp:695 msgid "Magnetic" msgstr "Μαγνητική" -#: src/CelestialNavigationUI.cpp:753 +#: src\CelestialNavigationUI.cpp:698 +msgid "Done" +msgstr "Έγινε" + +#: src\CelestialNavigationUI.cpp:762 msgid "Fix From Visible Sights" msgstr "Καθορισμός από θεάσεις" -#: src/CelestialNavigationUI.cpp:764 +#: src\CelestialNavigationUI.cpp:773 msgid " N/A " msgstr " Δ/Υ " -#: src/CelestialNavigationUI.cpp:772 +#: src\CelestialNavigationUI.cpp:781 msgid " N/A " msgstr " Δ/Υ " -#: src/CelestialNavigationUI.cpp:776 +#: src\CelestialNavigationUI.cpp:785 msgid "Error" msgstr "Σφάλμα" -#: src/CelestialNavigationUI.cpp:780 +#: src\CelestialNavigationUI.cpp:789 msgid " N/A " msgstr " Δ/Υ " -#: src/CelestialNavigationUI.cpp:787 src/CelestialNavigationUI.cpp:794 +#: src\CelestialNavigationUI.cpp:796 src\CelestialNavigationUI.cpp:803 msgid "Initial" msgstr "Αρχική" -#: src/CelestialNavigationUI.cpp:801 +#: src\CelestialNavigationUI.cpp:810 msgid "Alg" msgstr "Αλγ." -#: src/CelestialNavigationUI.cpp:806 +#: src\CelestialNavigationUI.cpp:815 msgid "Plane" msgstr "Επίπεδο" -#: src/CelestialNavigationUI.cpp:807 +#: src\CelestialNavigationUI.cpp:816 msgid "Sphere" msgstr "Σφαίρα" -#: src/CelestialNavigationUI.cpp:808 +#: src\CelestialNavigationUI.cpp:817 msgid "Cone" msgstr "Κώνος" -#: src/CelestialNavigationUI.cpp:809 +#: src\CelestialNavigationUI.cpp:818 msgid "Cone 2" msgstr "Κώνος 2" -#: src/CelestialNavigationUI.cpp:813 +#: src\CelestialNavigationUI.cpp:822 msgid "Go" msgstr "Εμπρός" -#: src/CelestialNavigationUI.cpp:850 src/CelestialNavigationUI.h:303 +#: src\CelestialNavigationUI.cpp:859 src\CelestialNavigationUI.h:308 msgid "Clock Correction" msgstr "Διόρθωση ώρας" -#: src/CelestialNavigationUI.h:78 +#: src\CelestialNavigationUI.h:82 msgid "Celestial Navigation Sights" msgstr "Θεάσεις για την αστρονομική ναυσιπλοΐα" -#: src/CelestialNavigationUI.h:169 +#: src\CelestialNavigationUI.h:173 msgid "Sight Properties" msgstr "Ιδιότητες θέασης" -#: src/CelestialNavigationUI.h:200 +#: src\CelestialNavigationUI.h:204 msgid "Dead Reckoning shift" msgstr "Μετατόπιση εκτίμησης θέσης" -#: src/CelestialNavigationUI.h:227 +#: src\CelestialNavigationUI.h:232 msgid "Find Celestial Body" msgstr "Βρες ουράνιο σώμα" -#: src/Sight.cpp:160 +#: src\FixDialog.cpp:192 +msgid "Shifted sights are not used to compute a fix, determine fix visually instead.\n" +msgstr "Δεν χρησιμοποιούνται μετατοπισμένες θεάσεις για τον προσδιορισμό. Προσδιόρισε τη θέση οπτικά.\n" + +#: src\FixDialog.cpp:193 +msgid "Fix Position" +msgstr "Καθορισμός θέσης" + +#: src\FixDialog.cpp:338 src\FixDialog.cpp:339 src\FixDialog.cpp:340 +msgid " N/A " +msgstr " Δ/Υ " + +#: src\Sight.cpp:172 src\Sight.cpp.bak:173 msgid "Astrolab failed, data unavailable:\n" msgstr "Ο αστρολάβος απέτυχε, δεν υπάρχουν δεδομένα:\n" -#: src/Sight.cpp:161 +#: src\Sight.cpp:173 src\Sight.cpp.bak:174 msgid "\n" "Did you forget to install vsop87d.txt?\n" msgstr "\n" "Μήπως ξεχάσατε να εγκαταστήσετε το vsop87d.txt;\n" -#: src/Sight.cpp:162 +#: src\Sight.cpp:174 src\Sight.cpp.bak:175 msgid "The plugin will not work correctly" msgstr "Το πρόσθετο δεν θα λειτουργήσει σωστά" -#: src/Sight.cpp:163 +#: src\Sight.cpp:175 src\Sight.cpp.bak:176 msgid "Failure Alert" msgstr "Ειδοποίηση αποτυχίας" -#: src/Sight.cpp:474 +#: src\Sight.cpp:495 src\Sight.cpp.bak:496 #, c-format msgid "Applying clock correction of %d seconds\n\n" msgstr "Εφαρμογή διόρθωσης ώρας %d δευτερολέπτων\n\n" -#: src/Sight.cpp:536 +#: src\Sight.cpp:557 src\Sight.cpp.bak:558 msgid "Almanac Data For " msgstr "Δεδομένα αλμανάκ για " -#: src/Sight.cpp:537 +#: src\Sight.cpp:558 src\Sight.cpp.bak:559 #, c-format msgid "\n" "Geographical Position (lat, lon) = %.4f %.4f\n" @@ -418,16 +482,19 @@ msgstr "\n" "SD = %.1f'\n" "HP = %.1f'\n\n" -#: src/Sight.cpp:552 src/Sight.cpp:690 +#: src\Sight.cpp:573 src\Sight.cpp:711 src\Sight.cpp.bak:574 +#: src\Sight.cpp.bak:712 msgid "Formulas used to calculate sight\n\n" msgstr "Οι τύποι που χρησιμοποιούνται για τον υπολογισμό της θέασης\n\n" -#: src/Sight.cpp:556 src/Sight.cpp:694 +#: src\Sight.cpp:577 src\Sight.cpp:715 src\Sight.cpp.bak:578 +#: src\Sight.cpp.bak:716 #, c-format msgid "Index Error is %.4f degrees\n\n" msgstr "Το Σφάλμα Δείκτη του εξάντα είναι %.4f °\n\n" -#: src/Sight.cpp:561 src/Sight.cpp:699 +#: src\Sight.cpp:582 src\Sight.cpp:720 src\Sight.cpp.bak:583 +#: src\Sight.cpp.bak:721 #, c-format msgid "Eye Height is %.4f meters\n" "Height Correction Degrees = 1.758*sqrt(%.4f) / 60.0\n" @@ -435,7 +502,8 @@ msgid "Eye Height is %.4f meters\n" msgstr "Το ύψος ματιού είναι %.4f m\n" "Διόρθωση του ύψους = 1.758*sqrt(%.4f) / 60.0 °= %.4f °\n" -#: src/Sight.cpp:568 +#: src\Sight.cpp:589 src\Sight.cpp:799 src\Sight.cpp.bak:590 +#: src\Sight.cpp.bak:800 #, c-format msgid "\n" "Apparent Altitude (Ha)\n" @@ -447,7 +515,8 @@ msgstr "\n" "ΦαινΥψόμετρο = μέτρηση - ΔιόρθωσηΔείκτη - ΔιόρθωσηΥψουςΜατιού\n" "ΦαινΥψόμετρο = %.4f - %.4f - %.4f = %.4f\n" -#: src/Sight.cpp:586 src/Sight.cpp:789 +#: src\Sight.cpp:607 src\Sight.cpp:810 src\Sight.cpp.bak:608 +#: src\Sight.cpp.bak:811 #, c-format msgid "\n" "Refraction Correction\n" @@ -460,7 +529,8 @@ msgstr "\n" "x = tan(π/180*%.4f + 0.04848*(π/180) / (tan(π/180*%.4f) + .028))\n" "x = %.4f\n" -#: src/Sight.cpp:591 src/Sight.cpp:794 +#: src\Sight.cpp:612 src\Sight.cpp:815 src\Sight.cpp.bak:613 +#: src\Sight.cpp.bak:816 #, c-format msgid "RefractionCorrection = .267 * Pressure / (x*(Temperature + 273.15)) / 60.0\n" "RefractionCorrection = .267 * %.4f / (x*(%.4f + 273.15)) / 60.0\n" @@ -468,7 +538,8 @@ msgid "RefractionCorrection = .267 * Pressure / (x*(Temperature + 273.15)) / 60. msgstr "Διόρθωση διάθλασης = 0.267 * Πίεση / (x*(Θερμοκρασία + 273.15)) / 60.0\n" "Διόρθωση διάθλασης = 0.267 * %.4f / (x*(%.4f + 273.15)) / 60.0 = %.4f\n" -#: src/Sight.cpp:606 src/Sight.cpp:808 +#: src\Sight.cpp:627 src\Sight.cpp:829 src\Sight.cpp.bak:628 +#: src\Sight.cpp.bak:830 #, c-format msgid "\n" "Sun selected, Limb Correction\n" @@ -477,7 +548,8 @@ msgstr "\n" "Επιλογή του ήλιου, Διόρθωση μέλους\n" "ra = %.4f, lc = 0.266564/ra = %.4f\n" -#: src/Sight.cpp:616 src/Sight.cpp:732 +#: src\Sight.cpp:637 src\Sight.cpp:753 src\Sight.cpp.bak:638 +#: src\Sight.cpp.bak:754 #, c-format msgid "\n" "Moon selected, Limb Correction\n" @@ -490,22 +562,26 @@ msgstr "\n" "lc = 180/π * asin(π/180*SD)\n" "lc = %.4f\n" -#: src/Sight.cpp:626 src/Sight.cpp:741 src/Sight.cpp:816 +#: src\Sight.cpp:647 src\Sight.cpp:762 src\Sight.cpp:837 src\Sight.cpp.bak:648 +#: src\Sight.cpp.bak:763 src\Sight.cpp.bak:838 msgid "Upper Limb" msgstr "Άνω μέλος" -#: src/Sight.cpp:629 src/Sight.cpp:744 src/Sight.cpp:819 +#: src\Sight.cpp:650 src\Sight.cpp:765 src\Sight.cpp:840 src\Sight.cpp.bak:651 +#: src\Sight.cpp.bak:766 src\Sight.cpp.bak:841 msgid "Lower Limb" msgstr "Κάτω μέλος" -#: src/Sight.cpp:632 src/Sight.cpp:822 +#: src\Sight.cpp:653 src\Sight.cpp:843 src\Sight.cpp.bak:654 +#: src\Sight.cpp.bak:844 #, c-format msgid "\n" "LimbCorrection = %.4f\n" msgstr "\n" "Διόρθωση μέλους = %.4f\n" -#: src/Sight.cpp:636 src/Sight.cpp:826 +#: src\Sight.cpp:657 src\Sight.cpp:847 src\Sight.cpp.bak:658 +#: src\Sight.cpp.bak:848 #, c-format msgid "\n" "Corrected Altitude\n" @@ -518,7 +594,8 @@ msgstr "\n" "ΔιορθΥψόμετρο = %.4f - %.4f - %.4f\n" "ΔιορθΥψόμετρο = %.4f\n" -#: src/Sight.cpp:650 src/Sight.cpp:840 +#: src\Sight.cpp:671 src\Sight.cpp:861 src\Sight.cpp.bak:672 +#: src\Sight.cpp.bak:862 #, c-format msgid "\n" "Sun selected, parallax correction\n" @@ -527,7 +604,8 @@ msgstr "\n" "SΕπιλογή ηλίου, διόρθωση παράλλαξης\n" "rad = %.4f, HP = 0.002442/rad = %.4f\n" -#: src/Sight.cpp:659 src/Sight.cpp:764 +#: src\Sight.cpp:680 src\Sight.cpp:785 src\Sight.cpp.bak:681 +#: src\Sight.cpp.bak:786 #, c-format msgid "\n" "Moon selected, parallax correction\n" @@ -536,7 +614,8 @@ msgstr "\n" "Επιλογή σελήνης, διόρθωση παράλλαξης\n" "HP = %.4f\n" -#: src/Sight.cpp:665 src/Sight.cpp:846 +#: src\Sight.cpp:686 src\Sight.cpp:867 src\Sight.cpp.bak:687 +#: src\Sight.cpp.bak:868 #, c-format msgid "ParallaxCorrection = -180/Pi * asin( sin(Pi/180 * HP ) * cos(Pi/180 * CorrectedAltitude))\n" "ParallaxCorrection = -180/Pi * asin( sin(Pi/180 * %.4f ) * cos(Pi/180 * %.4f))\n" @@ -544,7 +623,7 @@ msgid "ParallaxCorrection = -180/Pi * asin( sin(Pi/180 * HP ) * cos(Pi/180 * Cor msgstr "ΔιόρθωσηΠαράλλαξης = -180/Pi * asin( sin(Pi/180 * HP ) * cos(Pi/180 * ΔιορθωμένοΥψόμετρο))\n" "ΔιόρθωσηΠαράλλαξης = -180/Pi * asin( sin(Pi/180 * %.4f ) * cos(Pi/180 * %.4f)) = %.4f\n" -#: src/Sight.cpp:672 +#: src\Sight.cpp:693 src\Sight.cpp.bak:694 #, c-format msgid "\n" "Observed Altitude (Ho)\n" @@ -557,12 +636,12 @@ msgstr "\n" "ΠαρατήρησηΥψομέτρου = %.4f - %.4f\n" "ΠαρατήρησηΥψομέτρου = %.4f\n" -#: src/Sight.cpp:706 +#: src\Sight.cpp:727 src\Sight.cpp.bak:728 #, c-format msgid "\n" "Apparent Moon Altitude (Ha)\n" "ApparentAltitudeMoon = MeasurementMoon - IndexCorrection - EyeHeightCorrection\n" -" ApparentAltitudeMoon = %.4f - %.4f - %.4f\n" +"ApparentAltitudeMoon = %.4f - %.4f - %.4f\n" "ApparentAltitudeMoon = %.4f\n" msgstr "\n" "Φαινόμενο ύψος σελήνης (Ha)\n" @@ -570,7 +649,7 @@ msgstr "\n" " ΦαινΥψοςΣελήνης = %.4f - %.4f - %.4f\n" "ΦαινΥψοςΣελήνης = %.4f\n" -#: src/Sight.cpp:717 +#: src\Sight.cpp:738 src\Sight.cpp.bak:739 #, c-format msgid "\n" "Refraction Correction\n" @@ -583,7 +662,7 @@ msgstr "\n" "x = tan(Pi/180*%.4f + 0.04848*(π/180) / (tan(π/180*%.4f) + .028))\n" "x = %.4f\n" -#: src/Sight.cpp:722 +#: src\Sight.cpp:743 src\Sight.cpp.bak:744 #, c-format msgid "RefractionCorrectionMoon = .267 * Pressure / (x*(Temperature + 273.15)) / 60.0\n" "RefractionCorrectionMoon = .267 * %.4f / (x*(%.4f + 273.15)) / 60.0\n" @@ -592,14 +671,15 @@ msgstr "ΔιόρθΔιαθλΣελήνης = 0.267 * Πίεση / (x*(Θερμο "ΔιόρθΔιαθλΣελήνης = 0.267 * %.4f / (x*(%.4f + 273.15)) / 60.0\n" "ΔιόρθΔιαθλΣελήνης=%.4f\n" -#: src/Sight.cpp:747 src/Sight.cpp:750 +#: src\Sight.cpp:768 src\Sight.cpp:771 src\Sight.cpp.bak:769 +#: src\Sight.cpp.bak:772 #, c-format msgid "\n" "LimbCorrectionMoon = %.4f\n" msgstr "\n" "LimbCorrectionMoon = %.4f\n" -#: src/Sight.cpp:753 +#: src\Sight.cpp:774 src\Sight.cpp.bak:775 #, c-format msgid "\n" "Corrected Altitude\n" @@ -612,28 +692,15 @@ msgstr "\n" "Διορθωμένο Υψόμετρο Σελήνης = %.4f - %.4f - %.4f\n" "Διορθωμένο Υψόμετρο Σελήνης = %.4f\n" -#: src/Sight.cpp:768 +#: src\Sight.cpp:789 src\Sight.cpp.bak:790 #, c-format msgid "ParallaxCorrectionMoon = -180/Pi * asin( sin(Pi/180 * HP ) * cos(Pi/180 * CorrectedAltitude))\n" -" ParallaxCorrectionMoon = -180/Pi * asin( sin(Pi/180 * %.4f ) * cos(Pi/180 * %.4f))\n" +"ParallaxCorrectionMoon = -180/Pi * asin( sin(Pi/180 * %.4f ) * cos(Pi/180 * %.4f))\n" "ParallaxCorrectionMoon = %.4f\n" msgstr "Διόρθωση Παράλλαξης Σελήνης = -180/π * asin( sin(π/180 * HP ) * cos(π/180 * ΔιορθωμένοΥψόμετρο))\n" "ΔιόρθωσηΠαράλλαξης Σελήνης = -180/π * asin( sin(π/180 * %.4f ) * cos(π/180 * %.4f)) = %.4f\n" -#: src/Sight.cpp:778 -#, c-format -msgid "\n" -"Apparent Altitude (Ha)\n" -"ApparentAltitude = Measurement - IndexCorrection - EyeHeightCorrection\n" -" ApparentAltitude = %.4f - %.4f - %.4f\n" -"ApparentAltitude = %.4f\n" -msgstr "\n" -"Φαινόμενο υψόμετρο (Ha)\n" -"Φαινόμενο Υψόμετρο = μέτρηση - ΔιόρθωσηΔείκτη - ΔιόρθωσηΥψουςΜατιού\n" -" Φαινόμενο Υψόμετρο = %.4f - %.4f - %.4f\n" -"Φαινόμενο Υψόμετρο = %.4f\n" - -#: src/Sight.cpp:857 +#: src\Sight.cpp:878 src\Sight.cpp.bak:879 #, c-format msgid "CorrectionsMoon = %.4f\n" "CorrectionsBody = %.4f\n" @@ -642,7 +709,7 @@ msgstr "Διορθώσεις Σελήνης = %.4f\n" "Σώμα Διορθώσεων = %.4f\n" "Corrections = abs(Διορθώσεις Σελήνης - Σώμα Διορθώσεων) = %.4f\n" -#: src/Sight.cpp:863 +#: src\Sight.cpp:884 src\Sight.cpp.bak:885 #, c-format msgid "CorrectedMeasurement = Measurement - Corrections - IndexCorrection\n" "CorrectedMeasurement = %.4f - %.4f - %.4f\n" @@ -651,85 +718,65 @@ msgstr "Διορθωμένη μέτρηση = μέτρηση - διορθώσε "Διορθωμένη μέτρηση = %.4f - %.4f - %.4f\n" "Διορθωμένη μέτρηση = %.4f\n" -#: src/Sight.cpp:888 +#: src\Sight.cpp:909 src\Sight.cpp.bak:910 msgid "\n" "Calculated angle between Moon and " msgstr "\n" "Υπολογισμένη γωνία μεταξύ Σελήνης και " -#: src/Sight.cpp:890 +#: src\Sight.cpp:911 src\Sight.cpp.bak:912 #, c-format msgid "\n" "Error from measurement: %.4f" msgstr "\n" "Σφάλμα μέτρησης: %.4f" -#: src/Sight.cpp:894 +#: src\Sight.cpp:915 src\Sight.cpp.bak:916 msgid "\n" "Moon takes 28 days to orbit, one degree of error takes 6720 seconds" msgstr "\n" "Ο κύκλος της σελήνη διαρκεί 28 ημέρες, σφάλμα μίας μοίρας διαρκεί 6720 δευτερόλεπτα" -#: src/Sight.cpp:895 +#: src\Sight.cpp:916 src\Sight.cpp.bak:917 #, c-format msgid "\n" "Time correction %.4f seconds" msgstr "\n" "Διόρθωση χρόνου %.4f δευτερόλεπτα" -#: src/Sight.cpp:1099 +#: src\Sight.cpp:1120 src\Sight.cpp.bak:1121 msgid "Building bearing Sight Positions" msgstr "Υπολογισμός κατεύθυνσης θέσεων θέασης" -#: src/SightDialog.cpp:172 +#: src\SightDialog.cpp:184 msgid "Measurement certainty likely set to small, sight may not appear " msgstr "Η βεβαιότητα της μέτρησης είναι μικρή, η θέαση μπορεί να μην εμφανιστεί " -#: src/SightDialog.cpp:173 src/SightDialog.cpp:256 +#: src\SightDialog.cpp:185 src\SightDialog.cpp:279 msgid "Warning" msgstr "Προσοχή" -#: src/SightDialog.cpp:255 +#: src\SightDialog.cpp:278 msgid "Lunar shot will be invalid taking distance from moon to itself" msgstr "Η Λήψη της σελήνης θα είναι μη έγκυρη αν ληφθεί η απόσταση από το φεγγάρι στον εαυτό του" -#: src/celestial_navigation_pi.cpp:90 -msgid "Failed to load file:\n" -msgstr "Απέτυχε η φόρτωση του αρχείου:\n" +#: src\celestial_navigation_pi.cpp:179 +msgid "open error" +msgstr "σφάλμα ανοίγματος" -#: src/celestial_navigation_pi.cpp:91 -msgid "\n" -"Magnetic data will not be available for the celestial navigation plugin." -msgstr "\n" -"Μαγνητικά δεδομένα δεν θα είναι διαθέσιμα για το πρόσθετο της αστρονομικής ναυσιπλοΐας." - -#: src/celestial_navigation_pi.cpp:92 -msgid "OpenCPN Alert" -msgstr "Συναγερμός OpenCPN" +#: src\celestial_navigation_pi.cpp:180 +msgid "corrupt record" +msgstr "κατεστραμμένο στοιχείο" -#: src/celestial_navigation_pi.cpp:157 -msgid "Celestial Navigation PlugIn for OpenCPN" -msgstr "Πρόσθετο αστρονομικής ναυσιπλοΐας για το OpenCPN" - -#: src/celestial_navigation_pi.cpp:162 -msgid "Celestial Navigation PlugIn for OpenCPN.\n" -"Implements nautical almanac for sun, moon, planets,\n" -"and various navigational stars.\n" -"Compute position fix from celestial measurements." -msgstr "Πρόσθετο του OpenCPN για αστρονομική ναυσιπλοΐα.\n" -"Εφαρμόζει τα ναυτικά αλμανάκ για τον ήλιο, τη σελήνη,\n" -" τους πλανήτες, και διάφορα άστρα πλοήγησης.\n" -" Υπολογίζει τη θέση από ουράνιες μετρήσεις." - -#: src/FixDialog.cpp:189 -msgid "Shifted sights are not used to compute a fix, determine fix visually instead.\n" -msgstr "Δεν χρησιμοποιούνται μετατοπισμένες θεάσεις για τον προσδιορισμό. Προσδιόρισε τη θέση οπτικά.\n" +#: src\celestial_navigation_pi.cpp:181 +msgid "too many models" +msgstr "πάρα πολλά μοντέλα" -#: src/FixDialog.cpp:190 -msgid "Fix Position" -msgstr "Καθορισμός θέσης" +#: src\celestial_navigation_pi.cpp:184 +msgid "Magnetic data will not be available for the celestial navigation plugin." +msgstr "Μαγνητικά δεδομένα δεν θα είναι διαθέσιμα για το πρόσθετο της αστρονομικής ναυσιπλοΐας." -#: src/FixDialog.cpp:335 src/FixDialog.cpp:336 src/FixDialog.cpp:337 -msgid " N/A " -msgstr " Δ/Υ " +#: src\celestial_navigation_pi.cpp:185 +msgid "OpenCPN Alert" +msgstr "Συναγερμός OpenCPN" diff --git a/po/en_GB.po b/po/en_GB.po new file mode 100644 index 0000000..e78a814 --- /dev/null +++ b/po/en_GB.po @@ -0,0 +1,721 @@ +msgid "" +msgstr "" +"Project-Id-Version: opencpn\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2021-10-27 22:15+0200\n" +"PO-Revision-Date: 2023-10-04 18:32\n" +"Last-Translator: \n" +"Language-Team: English, United Kingdom\n" +"Language: en_GB\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" +"X-Crowdin-Project: opencpn\n" +"X-Crowdin-Project-ID: 49843\n" +"X-Crowdin-Language: en-GB\n" +"X-Crowdin-File: /plugins/celestial_navigation_pi/po/celestial_navigation_pi.pot\n" +"X-Crowdin-File-ID: 108\n" + +#: src\CelestialNavigationDialog-2.3.5.1-no-android.cpp:149 +#: src\CelestialNavigationDialog-2.3.5.2-android.cpp:150 +#: src\CelestialNavigationDialog-partial-android.cpp:149 +#: src\CelestialNavigationDialog.cpp:150 src\CelestialNavigationUI.cpp:137 +msgid "Type" +msgstr "" + +#: src\CelestialNavigationDialog-2.3.5.1-no-android.cpp:150 +#: src\CelestialNavigationDialog-2.3.5.2-android.cpp:151 +#: src\CelestialNavigationDialog-partial-android.cpp:150 +#: src\CelestialNavigationDialog.cpp:151 +msgid "Body" +msgstr "" + +#: src\CelestialNavigationDialog-2.3.5.1-no-android.cpp:151 +#: src\CelestialNavigationDialog-2.3.5.2-android.cpp:152 +#: src\CelestialNavigationDialog-partial-android.cpp:151 +#: src\CelestialNavigationDialog.cpp:152 src\CelestialNavigationUI.cpp:328 +msgid "Time (UT)" +msgstr "" + +#: src\CelestialNavigationDialog-2.3.5.1-no-android.cpp:152 +#: src\CelestialNavigationDialog-2.3.5.2-android.cpp:153 +#: src\CelestialNavigationDialog-partial-android.cpp:152 +#: src\CelestialNavigationDialog.cpp:153 src\CelestialNavigationUI.cpp:184 +msgid "Measurement" +msgstr "" + +#: src\CelestialNavigationDialog-2.3.5.1-no-android.cpp:153 +#: src\CelestialNavigationDialog-2.3.5.2-android.cpp:154 +#: src\CelestialNavigationDialog-partial-android.cpp:153 +#: src\CelestialNavigationDialog.cpp:154 src\CelestialNavigationUI.cpp:381 +msgid "Color" +msgstr "" + +#: src\CelestialNavigationDialog-2.3.5.1-no-android.cpp:266 +#: src\CelestialNavigationDialog-2.3.5.2-android.cpp:272 +#: src\CelestialNavigationDialog-partial-android.cpp:266 +#: src\CelestialNavigationDialog.cpp:272 src\celestial_navigation_pi.cpp:177 +msgid "Failed to load file: " +msgstr "" + +#: src\CelestialNavigationDialog-2.3.5.1-no-android.cpp:271 +#: src\CelestialNavigationDialog-2.3.5.2-android.cpp:277 +#: src\CelestialNavigationDialog-partial-android.cpp:271 +#: src\CelestialNavigationDialog.cpp:277 +msgid "Invalid xml file" +msgstr "" + +#: src\CelestialNavigationDialog-2.3.5.1-no-android.cpp:323 +#: src\CelestialNavigationDialog-2.3.5.2-android.cpp:329 +#: src\CelestialNavigationDialog-partial-android.cpp:323 +#: src\CelestialNavigationDialog.cpp:329 +msgid "Unrecognized xml node" +msgstr "" + +#: src\CelestialNavigationDialog-2.3.5.1-no-android.cpp:332 +#: src\CelestialNavigationDialog-2.3.5.1-no-android.cpp:392 +#: src\CelestialNavigationDialog-2.3.5.1-no-android.cpp:532 +#: src\CelestialNavigationDialog-2.3.5.2-android.cpp:338 +#: src\CelestialNavigationDialog-2.3.5.2-android.cpp:398 +#: src\CelestialNavigationDialog-2.3.5.2-android.cpp:538 +#: src\CelestialNavigationDialog-partial-android.cpp:332 +#: src\CelestialNavigationDialog-partial-android.cpp:392 +#: src\CelestialNavigationDialog-partial-android.cpp:532 +#: src\CelestialNavigationDialog.cpp:338 src\CelestialNavigationDialog.cpp:398 +#: src\CelestialNavigationDialog.cpp:538 src\Sight.cpp:1120 +#: src\Sight.cpp.bak:1121 src\celestial_navigation_pi.cpp:95 +#: src\celestial_navigation_pi.cpp:99 +msgid "Celestial Navigation" +msgstr "" + +#: src\CelestialNavigationDialog-2.3.5.1-no-android.cpp:391 +#: src\CelestialNavigationDialog-2.3.5.2-android.cpp:397 +#: src\CelestialNavigationDialog-partial-android.cpp:391 +#: src\CelestialNavigationDialog.cpp:397 +msgid "Failed to save xml file: " +msgstr "" + +#: src\CelestialNavigationDialog-2.3.5.1-no-android.cpp:424 +#: src\CelestialNavigationDialog-2.3.5.2-android.cpp:430 +#: src\CelestialNavigationDialog-partial-android.cpp:424 +#: src\CelestialNavigationDialog.cpp:430 +msgid "Time Correction" +msgstr "" + +#: src\CelestialNavigationDialog-2.3.5.1-no-android.cpp:473 +#: src\CelestialNavigationDialog-2.3.5.2-android.cpp:479 +#: src\CelestialNavigationDialog-partial-android.cpp:473 +#: src\CelestialNavigationDialog.cpp:479 +msgid "Sun" +msgstr "" + +#: src\CelestialNavigationDialog-2.3.5.1-no-android.cpp:531 +#: src\CelestialNavigationDialog-2.3.5.2-android.cpp:537 +#: src\CelestialNavigationDialog-partial-android.cpp:531 +#: src\CelestialNavigationDialog.cpp:537 +msgid "Are you sure you want to delete all sights?" +msgstr "" + +#: src\CelestialNavigationDialog-2.3.5.1-no-android.cpp:582 +#: src\CelestialNavigationDialog-2.3.5.2-android.cpp:588 +#: src\CelestialNavigationDialog-partial-android.cpp:582 +#: src\CelestialNavigationDialog.cpp:588 +msgid "Celestial_Navigation_Information.html" +msgstr "" + +#: src\CelestialNavigationDialog-2.3.5.1-no-android.cpp:589 +#: src\CelestialNavigationDialog-2.3.5.2-android.cpp:595 +#: src\CelestialNavigationDialog-partial-android.cpp:589 +#: src\CelestialNavigationDialog.cpp:595 src\CelestialNavigationUI.cpp:55 +msgid "Hide" +msgstr "" + +#: src\CelestialNavigationDialog-2.3.5.1-no-android.cpp:589 +#: src\CelestialNavigationDialog-2.3.5.2-android.cpp:595 +#: src\CelestialNavigationDialog-partial-android.cpp:589 +#: src\CelestialNavigationDialog.cpp:595 +msgid "Show" +msgstr "" + +#: src\CelestialNavigationUI.cpp:40 +msgid "New" +msgstr "" + +#: src\CelestialNavigationUI.cpp:43 src\CelestialNavigationUI.h:286 +msgid "Fix" +msgstr "" + +#: src\CelestialNavigationUI.cpp:46 +msgid "Duplicate" +msgstr "" + +#: src\CelestialNavigationUI.cpp:49 +msgid "Clock Offset" +msgstr "" + +#: src\CelestialNavigationUI.cpp:52 +msgid "Edit" +msgstr "" + +#: src\CelestialNavigationUI.cpp:58 +msgid "Delete" +msgstr "" + +#: src\CelestialNavigationUI.cpp:61 +msgid "Information" +msgstr "" + +#: src\CelestialNavigationUI.cpp:64 +msgid "Delete All" +msgstr "" + +#: src\CelestialNavigationUI.cpp:141 src\CelestialNavigationUI.cpp:674 +#: src\Sight.h:49 +msgid "Altitude" +msgstr "" + +#: src\CelestialNavigationUI.cpp:141 src\CelestialNavigationUI.cpp:683 +#: src\Sight.h:49 +msgid "Azimuth" +msgstr "" + +#: src\CelestialNavigationUI.cpp:141 src\Sight.h:49 +msgid "Lunar" +msgstr "" + +#: src\CelestialNavigationUI.cpp:147 +msgid "Magnetic Azimuth" +msgstr "" + +#: src\CelestialNavigationUI.cpp:150 +msgid "Celestial Body" +msgstr "" + +#: src\CelestialNavigationUI.cpp:159 +msgid "Find" +msgstr "" + +#: src\CelestialNavigationUI.cpp:162 +msgid "Limb" +msgstr "" + +#: src\CelestialNavigationUI.cpp:166 +msgid "Center" +msgstr "" + +#: src\CelestialNavigationUI.cpp:166 +msgid "Lower" +msgstr "" + +#: src\CelestialNavigationUI.cpp:166 +msgid "Upper" +msgstr "" + +#: src\CelestialNavigationUI.cpp:191 src\CelestialNavigationUI.cpp:198 +#: src\CelestialNavigationUI.cpp:228 src\CelestialNavigationUI.cpp:235 +msgid "0" +msgstr "" + +#: src\CelestialNavigationUI.cpp:194 src\CelestialNavigationUI.cpp:353 +#: src\CelestialNavigationUI.cpp:605 +msgid "Degrees" +msgstr "" + +#: src\CelestialNavigationUI.cpp:201 src\CelestialNavigationUI.cpp:283 +#: src\CelestialNavigationUI.cpp:444 +msgid "Minutes" +msgstr "" + +#: src\CelestialNavigationUI.cpp:205 +msgid "10" +msgstr "" + +#: src\CelestialNavigationUI.cpp:208 +msgid "Minutes Certainty" +msgstr "" + +#: src\CelestialNavigationUI.cpp:222 +msgid "Lunar Altitude" +msgstr "" + +#: src\CelestialNavigationUI.cpp:231 +msgid "Body Altitude" +msgstr "" + +#: src\CelestialNavigationUI.cpp:248 +msgid "Sight" +msgstr "" + +#: src\CelestialNavigationUI.cpp:276 +msgid "Hours" +msgstr "" + +#: src\CelestialNavigationUI.cpp:290 src\CelestialNavigationUI.cpp:308 +#: src\CelestialNavigationUI.cpp:869 +msgid "Seconds" +msgstr "" + +#: src\CelestialNavigationUI.cpp:298 +msgid "Certainty" +msgstr "" + +#: src\CelestialNavigationUI.cpp:335 src\CelestialNavigationUI.cpp:587 +msgid "Distance" +msgstr "" + +#: src\CelestialNavigationUI.cpp:342 src\CelestialNavigationUI.cpp:594 +msgid "Nm" +msgstr "" + +#: src\CelestialNavigationUI.cpp:346 src\CelestialNavigationUI.cpp:598 +msgid "Bearing" +msgstr "" + +#: src\CelestialNavigationUI.cpp:357 src\CelestialNavigationUI.cpp:609 +msgid "Magnetic Bearing" +msgstr "" + +#: src\CelestialNavigationUI.cpp:364 +msgid "DR Shift" +msgstr "" + +#: src\CelestialNavigationUI.cpp:371 +msgid "Transparency" +msgstr "" + +#: src\CelestialNavigationUI.cpp:392 +msgid "Config" +msgstr "" + +#: src\CelestialNavigationUI.cpp:404 +msgid "Eye Height" +msgstr "" + +#: src\CelestialNavigationUI.cpp:408 +msgid "2" +msgstr "" + +#: src\CelestialNavigationUI.cpp:411 +msgid "Meters" +msgstr "" + +#: src\CelestialNavigationUI.cpp:415 +msgid "Temperature" +msgstr "" + +#: src\CelestialNavigationUI.cpp:422 +msgid "Celcius" +msgstr "" + +#: src\CelestialNavigationUI.cpp:426 +msgid "Pressure" +msgstr "" + +#: src\CelestialNavigationUI.cpp:433 +msgid "MilliBars" +msgstr "" + +#: src\CelestialNavigationUI.cpp:437 +msgid "Index Error" +msgstr "" + +#: src\CelestialNavigationUI.cpp:451 +msgid "Set As Defaults" +msgstr "" + +#: src\CelestialNavigationUI.cpp:458 +msgid "Parameters" +msgstr "" + +#: src\CelestialNavigationUI.cpp:474 +msgid "Calculations" +msgstr "" + +#: src\CelestialNavigationUI.cpp:578 +msgid "Shift all visible Sights" +msgstr "" + +#: src\CelestialNavigationUI.cpp:656 src\CelestialNavigationUI.cpp:769 +msgid "Latitude" +msgstr "" + +#: src\CelestialNavigationUI.cpp:665 src\CelestialNavigationUI.cpp:777 +msgid "Longitude" +msgstr "" + +#: src\CelestialNavigationUI.cpp:691 +msgid "Boat Position" +msgstr "" + +#: src\CelestialNavigationUI.cpp:695 +msgid "Magnetic" +msgstr "" + +#: src\CelestialNavigationUI.cpp:698 +msgid "Done" +msgstr "" + +#: src\CelestialNavigationUI.cpp:762 +msgid "Fix From Visible Sights" +msgstr "" + +#: src\CelestialNavigationUI.cpp:773 +msgid " N/A " +msgstr "" + +#: src\CelestialNavigationUI.cpp:781 +msgid " N/A " +msgstr "" + +#: src\CelestialNavigationUI.cpp:785 +msgid "Error" +msgstr "" + +#: src\CelestialNavigationUI.cpp:789 +msgid " N/A " +msgstr "" + +#: src\CelestialNavigationUI.cpp:796 src\CelestialNavigationUI.cpp:803 +msgid "Initial" +msgstr "" + +#: src\CelestialNavigationUI.cpp:810 +msgid "Alg" +msgstr "" + +#: src\CelestialNavigationUI.cpp:815 +msgid "Plane" +msgstr "" + +#: src\CelestialNavigationUI.cpp:816 +msgid "Sphere" +msgstr "" + +#: src\CelestialNavigationUI.cpp:817 +msgid "Cone" +msgstr "" + +#: src\CelestialNavigationUI.cpp:818 +msgid "Cone 2" +msgstr "" + +#: src\CelestialNavigationUI.cpp:822 +msgid "Go" +msgstr "" + +#: src\CelestialNavigationUI.cpp:859 src\CelestialNavigationUI.h:308 +msgid "Clock Correction" +msgstr "" + +#: src\CelestialNavigationUI.h:82 +msgid "Celestial Navigation Sights" +msgstr "" + +#: src\CelestialNavigationUI.h:173 +msgid "Sight Properties" +msgstr "" + +#: src\CelestialNavigationUI.h:204 +msgid "Dead Reckoning shift" +msgstr "" + +#: src\CelestialNavigationUI.h:232 +msgid "Find Celestial Body" +msgstr "" + +#: src\FixDialog.cpp:192 +msgid "Shifted sights are not used to compute a fix, determine fix visually instead.\n" +msgstr "" + +#: src\FixDialog.cpp:193 +msgid "Fix Position" +msgstr "" + +#: src\FixDialog.cpp:338 src\FixDialog.cpp:339 src\FixDialog.cpp:340 +msgid " N/A " +msgstr "" + +#: src\Sight.cpp:172 src\Sight.cpp.bak:173 +msgid "Astrolab failed, data unavailable:\n" +msgstr "" + +#: src\Sight.cpp:173 src\Sight.cpp.bak:174 +msgid "\n" +"Did you forget to install vsop87d.txt?\n" +msgstr "" + +#: src\Sight.cpp:174 src\Sight.cpp.bak:175 +msgid "The plugin will not work correctly" +msgstr "" + +#: src\Sight.cpp:175 src\Sight.cpp.bak:176 +msgid "Failure Alert" +msgstr "" + +#: src\Sight.cpp:495 src\Sight.cpp.bak:496 +#, c-format +msgid "Applying clock correction of %d seconds\n\n" +msgstr "" + +#: src\Sight.cpp:557 src\Sight.cpp.bak:558 +msgid "Almanac Data For " +msgstr "" + +#: src\Sight.cpp:558 src\Sight.cpp.bak:559 +#, c-format +msgid "\n" +"Geographical Position (lat, lon) = %.4f %.4f\n" +"GHAAST = %.0f %.1f'\n" +"SHA = %.0f %.1f'\n" +"GHA = %.0f %.1f'\n" +"Dec = %c %.0f %.1f'\n" +"SD = %.1f'\n" +"HP = %.1f'\n\n" +msgstr "" + +#: src\Sight.cpp:573 src\Sight.cpp:711 src\Sight.cpp.bak:574 +#: src\Sight.cpp.bak:712 +msgid "Formulas used to calculate sight\n\n" +msgstr "" + +#: src\Sight.cpp:577 src\Sight.cpp:715 src\Sight.cpp.bak:578 +#: src\Sight.cpp.bak:716 +#, c-format +msgid "Index Error is %.4f degrees\n\n" +msgstr "" + +#: src\Sight.cpp:582 src\Sight.cpp:720 src\Sight.cpp.bak:583 +#: src\Sight.cpp.bak:721 +#, c-format +msgid "Eye Height is %.4f meters\n" +"Height Correction Degrees = 1.758*sqrt(%.4f) / 60.0\n" +"Height Correction Degrees = %.4f\n" +msgstr "" + +#: src\Sight.cpp:589 src\Sight.cpp:799 src\Sight.cpp.bak:590 +#: src\Sight.cpp.bak:800 +#, c-format +msgid "\n" +"Apparent Altitude (Ha)\n" +"ApparentAltitude = Measurement - IndexCorrection - EyeHeightCorrection\n" +"ApparentAltitude = %.4f - %.4f - %.4f\n" +"ApparentAltitude = %.4f\n" +msgstr "" + +#: src\Sight.cpp:607 src\Sight.cpp:810 src\Sight.cpp.bak:608 +#: src\Sight.cpp.bak:811 +#, c-format +msgid "\n" +"Refraction Correction\n" +"x = tan(Pi/180*ApparentAltitude + 4.848e-2*(Pi/180) / (tan(Pi/180*ApparentAltitude) + .028))\n" +"x = tan(Pi/180*%.4f + 4.848e-2*(Pi/180) / (tan(Pi/180*%.4f) + .028))\n" +"x = %.4f\n" +msgstr "" + +#: src\Sight.cpp:612 src\Sight.cpp:815 src\Sight.cpp.bak:613 +#: src\Sight.cpp.bak:816 +#, c-format +msgid "RefractionCorrection = .267 * Pressure / (x*(Temperature + 273.15)) / 60.0\n" +"RefractionCorrection = .267 * %.4f / (x*(%.4f + 273.15)) / 60.0\n" +"RefractionCorrection = %.4f\n" +msgstr "" + +#: src\Sight.cpp:627 src\Sight.cpp:829 src\Sight.cpp.bak:628 +#: src\Sight.cpp.bak:830 +#, c-format +msgid "\n" +"Sun selected, Limb Correction\n" +"ra = %.4f, lc = 0.266564/ra = %.4f\n" +msgstr "" + +#: src\Sight.cpp:637 src\Sight.cpp:753 src\Sight.cpp.bak:638 +#: src\Sight.cpp.bak:754 +#, c-format +msgid "\n" +"Moon selected, Limb Correction\n" +"SD = %.4f\n" +"lc = 180/Pi * asin(Pi/180*SD)\n" +"lc = %.4f\n" +msgstr "" + +#: src\Sight.cpp:647 src\Sight.cpp:762 src\Sight.cpp:837 src\Sight.cpp.bak:648 +#: src\Sight.cpp.bak:763 src\Sight.cpp.bak:838 +msgid "Upper Limb" +msgstr "" + +#: src\Sight.cpp:650 src\Sight.cpp:765 src\Sight.cpp:840 src\Sight.cpp.bak:651 +#: src\Sight.cpp.bak:766 src\Sight.cpp.bak:841 +msgid "Lower Limb" +msgstr "" + +#: src\Sight.cpp:653 src\Sight.cpp:843 src\Sight.cpp.bak:654 +#: src\Sight.cpp.bak:844 +#, c-format +msgid "\n" +"LimbCorrection = %.4f\n" +msgstr "" + +#: src\Sight.cpp:657 src\Sight.cpp:847 src\Sight.cpp.bak:658 +#: src\Sight.cpp.bak:848 +#, c-format +msgid "\n" +"Corrected Altitude\n" +"CorrectedAltitude = ApparentAltitude - RefractionCorrection - LimbCorrection\n" +"CorrectedAltitude = %.4f - %.4f - %.4f\n" +"CorrectedAltitude = %.4f\n" +msgstr "" + +#: src\Sight.cpp:671 src\Sight.cpp:861 src\Sight.cpp.bak:672 +#: src\Sight.cpp.bak:862 +#, c-format +msgid "\n" +"Sun selected, parallax correction\n" +"rad = %.4f, HP = 0.002442/rad = %.4f\n" +msgstr "" + +#: src\Sight.cpp:680 src\Sight.cpp:785 src\Sight.cpp.bak:681 +#: src\Sight.cpp.bak:786 +#, c-format +msgid "\n" +"Moon selected, parallax correction\n" +"HP = %.4f\n" +msgstr "" + +#: src\Sight.cpp:686 src\Sight.cpp:867 src\Sight.cpp.bak:687 +#: src\Sight.cpp.bak:868 +#, c-format +msgid "ParallaxCorrection = -180/Pi * asin( sin(Pi/180 * HP ) * cos(Pi/180 * CorrectedAltitude))\n" +"ParallaxCorrection = -180/Pi * asin( sin(Pi/180 * %.4f ) * cos(Pi/180 * %.4f))\n" +"ParallaxCorrection = %.4f\n" +msgstr "" + +#: src\Sight.cpp:693 src\Sight.cpp.bak:694 +#, c-format +msgid "\n" +"Observed Altitude (Ho)\n" +"ObservedAltitude = CorrectedAltitude - ParallaxCorrection\n" +"ObservedAltitude = %.4f - %.4f\n" +"ObservedAltitude = %.4f\n" +msgstr "" + +#: src\Sight.cpp:727 src\Sight.cpp.bak:728 +#, c-format +msgid "\n" +"Apparent Moon Altitude (Ha)\n" +"ApparentAltitudeMoon = MeasurementMoon - IndexCorrection - EyeHeightCorrection\n" +"ApparentAltitudeMoon = %.4f - %.4f - %.4f\n" +"ApparentAltitudeMoon = %.4f\n" +msgstr "" + +#: src\Sight.cpp:738 src\Sight.cpp.bak:739 +#, c-format +msgid "\n" +"Refraction Correction\n" +"x = tan(Pi/180*ApparentAltitudeMoon + 4.848e-2*(Pi/180) / (tan(Pi/180*ApparentAltitudeMoon) + .028))\n" +"x = tan(Pi/180*%.4f + 4.848e-2*(Pi/180) / (tan(Pi/180*%.4f) + .028))\n" +"x = %.4f\n" +msgstr "" + +#: src\Sight.cpp:743 src\Sight.cpp.bak:744 +#, c-format +msgid "RefractionCorrectionMoon = .267 * Pressure / (x*(Temperature + 273.15)) / 60.0\n" +"RefractionCorrectionMoon = .267 * %.4f / (x*(%.4f + 273.15)) / 60.0\n" +"RefractionCorrectionMoon = %.4f\n" +msgstr "" + +#: src\Sight.cpp:768 src\Sight.cpp:771 src\Sight.cpp.bak:769 +#: src\Sight.cpp.bak:772 +#, c-format +msgid "\n" +"LimbCorrectionMoon = %.4f\n" +msgstr "" + +#: src\Sight.cpp:774 src\Sight.cpp.bak:775 +#, c-format +msgid "\n" +"Corrected Altitude\n" +"CorrectedAltitudeMoon = ApparentAltitudeMoon - RefractionCorrectionMoon - LimbCorrectionMoon\n" +"CorrectedAltitudeMoon = %.4f - %.4f - %.4f\n" +"CorrectedAltitudeMoon = %.4f\n" +msgstr "" + +#: src\Sight.cpp:789 src\Sight.cpp.bak:790 +#, c-format +msgid "ParallaxCorrectionMoon = -180/Pi * asin( sin(Pi/180 * HP ) * cos(Pi/180 * CorrectedAltitude))\n" +"ParallaxCorrectionMoon = -180/Pi * asin( sin(Pi/180 * %.4f ) * cos(Pi/180 * %.4f))\n" +"ParallaxCorrectionMoon = %.4f\n" +msgstr "" + +#: src\Sight.cpp:878 src\Sight.cpp.bak:879 +#, c-format +msgid "CorrectionsMoon = %.4f\n" +"CorrectionsBody = %.4f\n" +"Corrections = abs(CorrectionsMoon - CorrectionsBody) = %.4f\n" +msgstr "" + +#: src\Sight.cpp:884 src\Sight.cpp.bak:885 +#, c-format +msgid "CorrectedMeasurement = Measurement - Corrections - IndexCorrection\n" +"CorrectedMeasurement = %.4f - %.4f - %.4f\n" +"CorrectedMeasurement = %.4f\n" +msgstr "" + +#: src\Sight.cpp:909 src\Sight.cpp.bak:910 +msgid "\n" +"Calculated angle between Moon and " +msgstr "" + +#: src\Sight.cpp:911 src\Sight.cpp.bak:912 +#, c-format +msgid "\n" +"Error from measurement: %.4f" +msgstr "" + +#: src\Sight.cpp:915 src\Sight.cpp.bak:916 +msgid "\n" +"Moon takes 28 days to orbit, one degree of error takes 6720 seconds" +msgstr "" + +#: src\Sight.cpp:916 src\Sight.cpp.bak:917 +#, c-format +msgid "\n" +"Time correction %.4f seconds" +msgstr "" + +#: src\Sight.cpp:1120 src\Sight.cpp.bak:1121 +msgid "Building bearing Sight Positions" +msgstr "" + +#: src\SightDialog.cpp:184 +msgid "Measurement certainty likely set to small, sight may not appear " +msgstr "" + +#: src\SightDialog.cpp:185 src\SightDialog.cpp:279 +msgid "Warning" +msgstr "" + +#: src\SightDialog.cpp:278 +msgid "Lunar shot will be invalid taking distance from moon to itself" +msgstr "" + +#: src\celestial_navigation_pi.cpp:179 +msgid "open error" +msgstr "" + +#: src\celestial_navigation_pi.cpp:180 +msgid "corrupt record" +msgstr "" + +#: src\celestial_navigation_pi.cpp:181 +msgid "too many models" +msgstr "" + +#: src\celestial_navigation_pi.cpp:184 +msgid "Magnetic data will not be available for the celestial navigation plugin." +msgstr "" + +#: src\celestial_navigation_pi.cpp:185 +msgid "OpenCPN Alert" +msgstr "" + diff --git a/po/es_ES.po b/po/es_ES.po index d068e26..7f07fc6 100644 --- a/po/es_ES.po +++ b/po/es_ES.po @@ -2,404 +2,468 @@ msgid "" msgstr "" "Project-Id-Version: opencpn\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-02-28 14:10-0300\n" -"PO-Revision-Date: 2018-03-03 08:25-0500\n" -"Last-Translator: nohal \n" +"POT-Creation-Date: 2021-10-27 22:15+0200\n" +"PO-Revision-Date: 2023-10-19 09:17\n" +"Last-Translator: \n" "Language-Team: Spanish\n" "Language: es_ES\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -"X-Generator: crowdin.com\n" "X-Crowdin-Project: opencpn\n" +"X-Crowdin-Project-ID: 49843\n" "X-Crowdin-Language: es-ES\n" "X-Crowdin-File: /plugins/celestial_navigation_pi/po/celestial_navigation_pi.pot\n" +"X-Crowdin-File-ID: 108\n" -#: src/CelestialNavigationDialog.cpp:123 src/CelestialNavigationUI.cpp:132 +#: src\CelestialNavigationDialog-2.3.5.1-no-android.cpp:149 +#: src\CelestialNavigationDialog-2.3.5.2-android.cpp:150 +#: src\CelestialNavigationDialog-partial-android.cpp:149 +#: src\CelestialNavigationDialog.cpp:150 src\CelestialNavigationUI.cpp:137 msgid "Type" msgstr "Tipo" -#: src/CelestialNavigationDialog.cpp:124 +#: src\CelestialNavigationDialog-2.3.5.1-no-android.cpp:150 +#: src\CelestialNavigationDialog-2.3.5.2-android.cpp:151 +#: src\CelestialNavigationDialog-partial-android.cpp:150 +#: src\CelestialNavigationDialog.cpp:151 msgid "Body" msgstr "Astro" -#: src/CelestialNavigationDialog.cpp:125 -msgid "Time (UTC)" +#: src\CelestialNavigationDialog-2.3.5.1-no-android.cpp:151 +#: src\CelestialNavigationDialog-2.3.5.2-android.cpp:152 +#: src\CelestialNavigationDialog-partial-android.cpp:151 +#: src\CelestialNavigationDialog.cpp:152 src\CelestialNavigationUI.cpp:328 +msgid "Time (UT)" msgstr "Hora (UTC)" -#: src/CelestialNavigationDialog.cpp:126 src/CelestialNavigationUI.cpp:179 +#: src\CelestialNavigationDialog-2.3.5.1-no-android.cpp:152 +#: src\CelestialNavigationDialog-2.3.5.2-android.cpp:153 +#: src\CelestialNavigationDialog-partial-android.cpp:152 +#: src\CelestialNavigationDialog.cpp:153 src\CelestialNavigationUI.cpp:184 msgid "Measurement" msgstr "Medida" -#: src/CelestialNavigationDialog.cpp:127 src/CelestialNavigationUI.cpp:376 +#: src\CelestialNavigationDialog-2.3.5.1-no-android.cpp:153 +#: src\CelestialNavigationDialog-2.3.5.2-android.cpp:154 +#: src\CelestialNavigationDialog-partial-android.cpp:153 +#: src\CelestialNavigationDialog.cpp:154 src\CelestialNavigationUI.cpp:381 msgid "Color" msgstr "Color" -#: src/CelestialNavigationDialog.cpp:193 -msgid "Failed to load file." -msgstr "Error al cargar archivo." - -#: src/CelestialNavigationDialog.cpp:198 +#: src\CelestialNavigationDialog-2.3.5.1-no-android.cpp:266 +#: src\CelestialNavigationDialog-2.3.5.2-android.cpp:272 +#: src\CelestialNavigationDialog-partial-android.cpp:266 +#: src\CelestialNavigationDialog.cpp:272 src\celestial_navigation_pi.cpp:177 +msgid "Failed to load file: " +msgstr "Error al cargar archivo: " + +#: src\CelestialNavigationDialog-2.3.5.1-no-android.cpp:271 +#: src\CelestialNavigationDialog-2.3.5.2-android.cpp:277 +#: src\CelestialNavigationDialog-partial-android.cpp:271 +#: src\CelestialNavigationDialog.cpp:277 msgid "Invalid xml file" msgstr "Archivo xml no válido" -#: src/CelestialNavigationDialog.cpp:250 +#: src\CelestialNavigationDialog-2.3.5.1-no-android.cpp:323 +#: src\CelestialNavigationDialog-2.3.5.2-android.cpp:329 +#: src\CelestialNavigationDialog-partial-android.cpp:323 +#: src\CelestialNavigationDialog.cpp:329 msgid "Unrecognized xml node" msgstr "Nodo xml no reconocido" -#: src/CelestialNavigationDialog.cpp:260 -msgid "Weather Routing" -msgstr "Weather Routing" +#: src\CelestialNavigationDialog-2.3.5.1-no-android.cpp:332 +#: src\CelestialNavigationDialog-2.3.5.1-no-android.cpp:392 +#: src\CelestialNavigationDialog-2.3.5.1-no-android.cpp:532 +#: src\CelestialNavigationDialog-2.3.5.2-android.cpp:338 +#: src\CelestialNavigationDialog-2.3.5.2-android.cpp:398 +#: src\CelestialNavigationDialog-2.3.5.2-android.cpp:538 +#: src\CelestialNavigationDialog-partial-android.cpp:332 +#: src\CelestialNavigationDialog-partial-android.cpp:392 +#: src\CelestialNavigationDialog-partial-android.cpp:532 +#: src\CelestialNavigationDialog.cpp:338 src\CelestialNavigationDialog.cpp:398 +#: src\CelestialNavigationDialog.cpp:538 src\Sight.cpp:1120 +#: src\Sight.cpp.bak:1121 src\celestial_navigation_pi.cpp:95 +#: src\celestial_navigation_pi.cpp:99 +msgid "Celestial Navigation" +msgstr "Navegación astronómica" -#: src/CelestialNavigationDialog.cpp:320 +#: src\CelestialNavigationDialog-2.3.5.1-no-android.cpp:391 +#: src\CelestialNavigationDialog-2.3.5.2-android.cpp:397 +#: src\CelestialNavigationDialog-partial-android.cpp:391 +#: src\CelestialNavigationDialog.cpp:397 msgid "Failed to save xml file: " msgstr "Error al guardar archivo xml:" -#: src/CelestialNavigationDialog.cpp:321 src/CelestialNavigationDialog.cpp:466 -#: src/Sight.cpp:1099 src/celestial_navigation_pi.cpp:99 -#: src/celestial_navigation_pi.cpp:152 -msgid "Celestial Navigation" -msgstr "Navegación astronómica" - -#: src/CelestialNavigationDialog.cpp:351 +#: src\CelestialNavigationDialog-2.3.5.1-no-android.cpp:424 +#: src\CelestialNavigationDialog-2.3.5.2-android.cpp:430 +#: src\CelestialNavigationDialog-partial-android.cpp:424 +#: src\CelestialNavigationDialog.cpp:430 msgid "Time Correction" msgstr "Corrección de hora" -#: src/CelestialNavigationDialog.cpp:409 +#: src\CelestialNavigationDialog-2.3.5.1-no-android.cpp:473 +#: src\CelestialNavigationDialog-2.3.5.2-android.cpp:479 +#: src\CelestialNavigationDialog-partial-android.cpp:473 +#: src\CelestialNavigationDialog.cpp:479 msgid "Sun" msgstr "Sol" -#: src/CelestialNavigationDialog.cpp:465 +#: src\CelestialNavigationDialog-2.3.5.1-no-android.cpp:531 +#: src\CelestialNavigationDialog-2.3.5.2-android.cpp:537 +#: src\CelestialNavigationDialog-partial-android.cpp:531 +#: src\CelestialNavigationDialog.cpp:537 msgid "Are you sure you want to delete all sights?" msgstr "¿Está seguro que quiere borrar todas las observaciones?" -#: src/CelestialNavigationDialog.cpp:510 +#: src\CelestialNavigationDialog-2.3.5.1-no-android.cpp:582 +#: src\CelestialNavigationDialog-2.3.5.2-android.cpp:588 +#: src\CelestialNavigationDialog-partial-android.cpp:582 +#: src\CelestialNavigationDialog.cpp:588 msgid "Celestial_Navigation_Information.html" msgstr "Celestial_Navigation_Information.html" -#: src/CelestialNavigationDialog.cpp:516 -msgid "Show" -msgstr "Mostrar" - -#: src/CelestialNavigationDialog.cpp:516 src/CelestialNavigationUI.cpp:58 +#: src\CelestialNavigationDialog-2.3.5.1-no-android.cpp:589 +#: src\CelestialNavigationDialog-2.3.5.2-android.cpp:595 +#: src\CelestialNavigationDialog-partial-android.cpp:589 +#: src\CelestialNavigationDialog.cpp:595 src\CelestialNavigationUI.cpp:55 msgid "Hide" msgstr "Ocultar" -#: src/CelestialNavigationUI.cpp:40 +#: src\CelestialNavigationDialog-2.3.5.1-no-android.cpp:589 +#: src\CelestialNavigationDialog-2.3.5.2-android.cpp:595 +#: src\CelestialNavigationDialog-partial-android.cpp:589 +#: src\CelestialNavigationDialog.cpp:595 +msgid "Show" +msgstr "Mostrar" + +#: src\CelestialNavigationUI.cpp:40 msgid "New" msgstr "Nuevo" -#: src/CelestialNavigationUI.cpp:43 -msgid "Edit" -msgstr "Editar" - -#: src/CelestialNavigationUI.cpp:46 -msgid "Delete" -msgstr "Borrar" - -#: src/CelestialNavigationUI.cpp:49 -msgid "Delete All" -msgstr "Borrar todo" - -#: src/CelestialNavigationUI.cpp:52 src/CelestialNavigationUI.h:281 +#: src\CelestialNavigationUI.cpp:43 src\CelestialNavigationUI.h:286 msgid "Fix" msgstr "Solución" -#: src/CelestialNavigationUI.cpp:55 +#: src\CelestialNavigationUI.cpp:46 +msgid "Duplicate" +msgstr "Duplicado" + +#: src\CelestialNavigationUI.cpp:49 msgid "Clock Offset" msgstr "Desplazamiento de reloj" -#: src/CelestialNavigationUI.cpp:61 +#: src\CelestialNavigationUI.cpp:52 +msgid "Edit" +msgstr "Editar" + +#: src\CelestialNavigationUI.cpp:58 +msgid "Delete" +msgstr "Borrar" + +#: src\CelestialNavigationUI.cpp:61 msgid "Information" msgstr "Información" -#: src/CelestialNavigationUI.cpp:136 src/CelestialNavigationUI.cpp:667 -#: src/Sight.h:49 +#: src\CelestialNavigationUI.cpp:64 +msgid "Delete All" +msgstr "Borrar todo" + +#: src\CelestialNavigationUI.cpp:141 src\CelestialNavigationUI.cpp:674 +#: src\Sight.h:49 msgid "Altitude" msgstr "Altura" -#: src/CelestialNavigationUI.cpp:136 src/CelestialNavigationUI.cpp:677 -#: src/Sight.h:49 +#: src\CelestialNavigationUI.cpp:141 src\CelestialNavigationUI.cpp:683 +#: src\Sight.h:49 msgid "Azimuth" -msgstr "Acimut" +msgstr "Azimut" -#: src/CelestialNavigationUI.cpp:136 src/Sight.h:49 +#: src\CelestialNavigationUI.cpp:141 src\Sight.h:49 msgid "Lunar" msgstr "Lunar" -#: src/CelestialNavigationUI.cpp:142 +#: src\CelestialNavigationUI.cpp:147 msgid "Magnetic Azimuth" -msgstr "Acimut magnético" +msgstr "Azimut magnético" -#: src/CelestialNavigationUI.cpp:145 +#: src\CelestialNavigationUI.cpp:150 msgid "Celestial Body" msgstr "Astro" -#: src/CelestialNavigationUI.cpp:154 +#: src\CelestialNavigationUI.cpp:159 msgid "Find" msgstr "Encontrar" -#: src/CelestialNavigationUI.cpp:157 +#: src\CelestialNavigationUI.cpp:162 msgid "Limb" msgstr "Limbo" -#: src/CelestialNavigationUI.cpp:161 -msgid "Lower" -msgstr "Inferior" - -#: src/CelestialNavigationUI.cpp:161 +#: src\CelestialNavigationUI.cpp:166 msgid "Center" msgstr "Central" -#: src/CelestialNavigationUI.cpp:161 +#: src\CelestialNavigationUI.cpp:166 +msgid "Lower" +msgstr "Inferior" + +#: src\CelestialNavigationUI.cpp:166 msgid "Upper" msgstr "Superior" -#: src/CelestialNavigationUI.cpp:186 src/CelestialNavigationUI.cpp:193 -#: src/CelestialNavigationUI.cpp:223 src/CelestialNavigationUI.cpp:230 +#: src\CelestialNavigationUI.cpp:191 src\CelestialNavigationUI.cpp:198 +#: src\CelestialNavigationUI.cpp:228 src\CelestialNavigationUI.cpp:235 msgid "0" msgstr "0" -#: src/CelestialNavigationUI.cpp:189 src/CelestialNavigationUI.cpp:348 -#: src/CelestialNavigationUI.cpp:598 +#: src\CelestialNavigationUI.cpp:194 src\CelestialNavigationUI.cpp:353 +#: src\CelestialNavigationUI.cpp:605 msgid "Degrees" msgstr "Grados" -#: src/CelestialNavigationUI.cpp:196 src/CelestialNavigationUI.cpp:278 -#: src/CelestialNavigationUI.cpp:439 +#: src\CelestialNavigationUI.cpp:201 src\CelestialNavigationUI.cpp:283 +#: src\CelestialNavigationUI.cpp:444 msgid "Minutes" msgstr "Minutos" -#: src/CelestialNavigationUI.cpp:200 +#: src\CelestialNavigationUI.cpp:205 msgid "10" msgstr "10" -#: src/CelestialNavigationUI.cpp:203 +#: src\CelestialNavigationUI.cpp:208 msgid "Minutes Certainty" msgstr "Minutos de incertidumbre" -#: src/CelestialNavigationUI.cpp:217 +#: src\CelestialNavigationUI.cpp:222 msgid "Lunar Altitude" msgstr "Altura lunar" -#: src/CelestialNavigationUI.cpp:226 +#: src\CelestialNavigationUI.cpp:231 msgid "Body Altitude" msgstr "Altura cuerpo" -#: src/CelestialNavigationUI.cpp:243 +#: src\CelestialNavigationUI.cpp:248 msgid "Sight" msgstr "Observación" -#: src/CelestialNavigationUI.cpp:271 +#: src\CelestialNavigationUI.cpp:276 msgid "Hours" msgstr "Horas" -#: src/CelestialNavigationUI.cpp:285 src/CelestialNavigationUI.cpp:303 -#: src/CelestialNavigationUI.cpp:860 +#: src\CelestialNavigationUI.cpp:290 src\CelestialNavigationUI.cpp:308 +#: src\CelestialNavigationUI.cpp:869 msgid "Seconds" msgstr "Segundos" -#: src/CelestialNavigationUI.cpp:293 +#: src\CelestialNavigationUI.cpp:298 msgid "Certainty" msgstr "Incertidumbre" -#: src/CelestialNavigationUI.cpp:323 -msgid "Time" -msgstr "Hora" - -#: src/CelestialNavigationUI.cpp:330 src/CelestialNavigationUI.cpp:580 +#: src\CelestialNavigationUI.cpp:335 src\CelestialNavigationUI.cpp:587 msgid "Distance" msgstr "Distancia" -#: src/CelestialNavigationUI.cpp:337 src/CelestialNavigationUI.cpp:587 +#: src\CelestialNavigationUI.cpp:342 src\CelestialNavigationUI.cpp:594 msgid "Nm" msgstr "Nm" -#: src/CelestialNavigationUI.cpp:341 src/CelestialNavigationUI.cpp:591 +#: src\CelestialNavigationUI.cpp:346 src\CelestialNavigationUI.cpp:598 msgid "Bearing" msgstr "Rumbo" -#: src/CelestialNavigationUI.cpp:352 src/CelestialNavigationUI.cpp:602 +#: src\CelestialNavigationUI.cpp:357 src\CelestialNavigationUI.cpp:609 msgid "Magnetic Bearing" msgstr "Rumbo magético" -#: src/CelestialNavigationUI.cpp:359 +#: src\CelestialNavigationUI.cpp:364 msgid "DR Shift" msgstr "Cambiar Posición Estimada" -#: src/CelestialNavigationUI.cpp:366 +#: src\CelestialNavigationUI.cpp:371 msgid "Transparency" msgstr "Transparencia" -#: src/CelestialNavigationUI.cpp:387 +#: src\CelestialNavigationUI.cpp:392 msgid "Config" msgstr "Config" -#: src/CelestialNavigationUI.cpp:399 +#: src\CelestialNavigationUI.cpp:404 msgid "Eye Height" msgstr "Altura del ojo" -#: src/CelestialNavigationUI.cpp:403 +#: src\CelestialNavigationUI.cpp:408 msgid "2" msgstr "2" -#: src/CelestialNavigationUI.cpp:406 +#: src\CelestialNavigationUI.cpp:411 msgid "Meters" msgstr "Metros" -#: src/CelestialNavigationUI.cpp:410 +#: src\CelestialNavigationUI.cpp:415 msgid "Temperature" msgstr "Temperatura" -#: src/CelestialNavigationUI.cpp:417 +#: src\CelestialNavigationUI.cpp:422 msgid "Celcius" msgstr "Celsius" -#: src/CelestialNavigationUI.cpp:421 +#: src\CelestialNavigationUI.cpp:426 msgid "Pressure" msgstr "Presión" -#: src/CelestialNavigationUI.cpp:428 +#: src\CelestialNavigationUI.cpp:433 msgid "MilliBars" msgstr "Milibares" -#: src/CelestialNavigationUI.cpp:432 +#: src\CelestialNavigationUI.cpp:437 msgid "Index Error" msgstr "Error de índice" -#: src/CelestialNavigationUI.cpp:446 +#: src\CelestialNavigationUI.cpp:451 msgid "Set As Defaults" msgstr "Ponerlos por defecto" -#: src/CelestialNavigationUI.cpp:453 +#: src\CelestialNavigationUI.cpp:458 msgid "Parameters" msgstr "Parámetros" -#: src/CelestialNavigationUI.cpp:469 +#: src\CelestialNavigationUI.cpp:474 msgid "Calculations" msgstr "Cálculos" -#: src/CelestialNavigationUI.cpp:571 +#: src\CelestialNavigationUI.cpp:578 msgid "Shift all visible Sights" msgstr "Cambiar todas las observaciones visibles" -#: src/CelestialNavigationUI.cpp:649 src/CelestialNavigationUI.cpp:760 +#: src\CelestialNavigationUI.cpp:656 src\CelestialNavigationUI.cpp:769 msgid "Latitude" msgstr "Latitud" -#: src/CelestialNavigationUI.cpp:658 src/CelestialNavigationUI.cpp:768 +#: src\CelestialNavigationUI.cpp:665 src\CelestialNavigationUI.cpp:777 msgid "Longitude" msgstr "Longitud" -#: src/CelestialNavigationUI.cpp:669 src/CelestialNavigationUI.cpp:679 -msgid "MyLabel" -msgstr "MyLabel" +#: src\CelestialNavigationUI.cpp:691 +msgid "Boat Position" +msgstr "Posición del barco" -#: src/CelestialNavigationUI.cpp:686 -msgid "Done" -msgstr "Hecho" - -#: src/CelestialNavigationUI.cpp:689 +#: src\CelestialNavigationUI.cpp:695 msgid "Magnetic" msgstr "Magnético" -#: src/CelestialNavigationUI.cpp:753 +#: src\CelestialNavigationUI.cpp:698 +msgid "Done" +msgstr "Hecho" + +#: src\CelestialNavigationUI.cpp:762 msgid "Fix From Visible Sights" msgstr "Solución por Observaciones Visibles" -#: src/CelestialNavigationUI.cpp:764 +#: src\CelestialNavigationUI.cpp:773 msgid " N/A " msgstr " N/D " -#: src/CelestialNavigationUI.cpp:772 +#: src\CelestialNavigationUI.cpp:781 msgid " N/A " msgstr " N/D " -#: src/CelestialNavigationUI.cpp:776 +#: src\CelestialNavigationUI.cpp:785 msgid "Error" msgstr "Error" -#: src/CelestialNavigationUI.cpp:780 +#: src\CelestialNavigationUI.cpp:789 msgid " N/A " msgstr " N/D " -#: src/CelestialNavigationUI.cpp:787 src/CelestialNavigationUI.cpp:794 +#: src\CelestialNavigationUI.cpp:796 src\CelestialNavigationUI.cpp:803 msgid "Initial" msgstr "Inicial" -#: src/CelestialNavigationUI.cpp:801 +#: src\CelestialNavigationUI.cpp:810 msgid "Alg" msgstr "Alg" -#: src/CelestialNavigationUI.cpp:806 +#: src\CelestialNavigationUI.cpp:815 msgid "Plane" msgstr "Plana" -#: src/CelestialNavigationUI.cpp:807 +#: src\CelestialNavigationUI.cpp:816 msgid "Sphere" msgstr "Esfera" -#: src/CelestialNavigationUI.cpp:808 +#: src\CelestialNavigationUI.cpp:817 msgid "Cone" msgstr "Cónica" -#: src/CelestialNavigationUI.cpp:809 +#: src\CelestialNavigationUI.cpp:818 msgid "Cone 2" msgstr "Cónica 2" -#: src/CelestialNavigationUI.cpp:813 +#: src\CelestialNavigationUI.cpp:822 msgid "Go" msgstr "Calcular" -#: src/CelestialNavigationUI.cpp:850 src/CelestialNavigationUI.h:303 +#: src\CelestialNavigationUI.cpp:859 src\CelestialNavigationUI.h:308 msgid "Clock Correction" msgstr "Corrección del rejoj" -#: src/CelestialNavigationUI.h:78 +#: src\CelestialNavigationUI.h:82 msgid "Celestial Navigation Sights" msgstr "Observaciones Navegación Astronómica" -#: src/CelestialNavigationUI.h:169 +#: src\CelestialNavigationUI.h:173 msgid "Sight Properties" msgstr "Propiedades Observación" -#: src/CelestialNavigationUI.h:200 +#: src\CelestialNavigationUI.h:204 msgid "Dead Reckoning shift" msgstr "Cambiar Posición Estimada" -#: src/CelestialNavigationUI.h:227 +#: src\CelestialNavigationUI.h:232 msgid "Find Celestial Body" msgstr "Encuentra astro" -#: src/Sight.cpp:160 +#: src\FixDialog.cpp:192 +msgid "Shifted sights are not used to compute a fix, determine fix visually instead.\n" +msgstr "Las observaciones trasladadas no se emplean para calcular una solución, determínela visualmente en su lugar.\n" + +#: src\FixDialog.cpp:193 +msgid "Fix Position" +msgstr "Posición calculada" + +#: src\FixDialog.cpp:338 src\FixDialog.cpp:339 src\FixDialog.cpp:340 +msgid " N/A " +msgstr " N/D " + +#: src\Sight.cpp:172 src\Sight.cpp.bak:173 msgid "Astrolab failed, data unavailable:\n" msgstr "Fallo en Astrolab, datos no válidos:\n" -#: src/Sight.cpp:161 +#: src\Sight.cpp:173 src\Sight.cpp.bak:174 msgid "\n" "Did you forget to install vsop87d.txt?\n" msgstr "\n" "¿Olvidó instalar vsop87d.txt?\n" -#: src/Sight.cpp:162 +#: src\Sight.cpp:174 src\Sight.cpp.bak:175 msgid "The plugin will not work correctly" msgstr "El plugin no trabaja correctamente" -#: src/Sight.cpp:163 +#: src\Sight.cpp:175 src\Sight.cpp.bak:176 msgid "Failure Alert" msgstr "Alerta por fallo" -#: src/Sight.cpp:474 +#: src\Sight.cpp:495 src\Sight.cpp.bak:496 #, c-format msgid "Applying clock correction of %d seconds\n\n" msgstr "Aplicar corrección de reloj de %d segundos\n\n" -#: src/Sight.cpp:536 +#: src\Sight.cpp:557 src\Sight.cpp.bak:558 msgid "Almanac Data For " msgstr "Datos Almanaque para " -#: src/Sight.cpp:537 +#: src\Sight.cpp:558 src\Sight.cpp.bak:559 #, c-format msgid "\n" "Geographical Position (lat, lon) = %.4f %.4f\n" @@ -418,20 +482,23 @@ msgstr "\n" "SD = %.1f'\n" "HP = %.1f'\n\n" -#: src/Sight.cpp:552 src/Sight.cpp:690 +#: src\Sight.cpp:573 src\Sight.cpp:711 src\Sight.cpp.bak:574 +#: src\Sight.cpp.bak:712 msgid "Formulas used to calculate sight\n\n" msgstr "Formulas utilizadas para calcular observación\n" "\n" "\n" -#: src/Sight.cpp:556 src/Sight.cpp:694 +#: src\Sight.cpp:577 src\Sight.cpp:715 src\Sight.cpp.bak:578 +#: src\Sight.cpp.bak:716 #, c-format msgid "Index Error is %.4f degrees\n\n" msgstr "Error de índice es %.4f grados\n" "\n" "\n" -#: src/Sight.cpp:561 src/Sight.cpp:699 +#: src\Sight.cpp:582 src\Sight.cpp:720 src\Sight.cpp.bak:583 +#: src\Sight.cpp.bak:721 #, c-format msgid "Eye Height is %.4f meters\n" "Height Correction Degrees = 1.758*sqrt(%.4f) / 60.0\n" @@ -442,7 +509,8 @@ msgstr "Altura del ojo %.4f metros\n" "\n" "Grados corrección altura = %.4f\n" -#: src/Sight.cpp:568 +#: src\Sight.cpp:589 src\Sight.cpp:799 src\Sight.cpp.bak:590 +#: src\Sight.cpp.bak:800 #, c-format msgid "\n" "Apparent Altitude (Ha)\n" @@ -455,7 +523,8 @@ msgstr "\n" "Altura Aparente = %.4f - %.4f - %.4f\n" "Altura Aparente = %.4f\n" -#: src/Sight.cpp:586 src/Sight.cpp:789 +#: src\Sight.cpp:607 src\Sight.cpp:810 src\Sight.cpp.bak:608 +#: src\Sight.cpp.bak:811 #, c-format msgid "\n" "Refraction Correction\n" @@ -471,7 +540,8 @@ msgstr "\n" "\n" "x = %.4f\n" -#: src/Sight.cpp:591 src/Sight.cpp:794 +#: src\Sight.cpp:612 src\Sight.cpp:815 src\Sight.cpp.bak:613 +#: src\Sight.cpp.bak:816 #, c-format msgid "RefractionCorrection = .267 * Pressure / (x*(Temperature + 273.15)) / 60.0\n" "RefractionCorrection = .267 * %.4f / (x*(%.4f + 273.15)) / 60.0\n" @@ -480,7 +550,8 @@ msgstr "Corrección por Refracción = .267 * Presión / (x*(Temperatura + 273.15 "Corrección por Refracción = .267 * %.4f / (x*(%.4f + 273.15)) / 60.0\n" "Corrección por Refracción = %.4f\n" -#: src/Sight.cpp:606 src/Sight.cpp:808 +#: src\Sight.cpp:627 src\Sight.cpp:829 src\Sight.cpp.bak:628 +#: src\Sight.cpp.bak:830 #, c-format msgid "\n" "Sun selected, Limb Correction\n" @@ -489,7 +560,8 @@ msgstr "\n" "Sol seleccionado, Corrección por Limbo\n" "ra = %.4f, lc = 0.266564/ra = %.4f\n" -#: src/Sight.cpp:616 src/Sight.cpp:732 +#: src\Sight.cpp:637 src\Sight.cpp:753 src\Sight.cpp.bak:638 +#: src\Sight.cpp.bak:754 #, c-format msgid "\n" "Moon selected, Limb Correction\n" @@ -502,22 +574,26 @@ msgstr "\n" "lc = 180/Pi * asin(Pi/180*SD)\n" "lc = %.4f\n" -#: src/Sight.cpp:626 src/Sight.cpp:741 src/Sight.cpp:816 +#: src\Sight.cpp:647 src\Sight.cpp:762 src\Sight.cpp:837 src\Sight.cpp.bak:648 +#: src\Sight.cpp.bak:763 src\Sight.cpp.bak:838 msgid "Upper Limb" msgstr "Limbo Superior" -#: src/Sight.cpp:629 src/Sight.cpp:744 src/Sight.cpp:819 +#: src\Sight.cpp:650 src\Sight.cpp:765 src\Sight.cpp:840 src\Sight.cpp.bak:651 +#: src\Sight.cpp.bak:766 src\Sight.cpp.bak:841 msgid "Lower Limb" msgstr "Limbo inferior" -#: src/Sight.cpp:632 src/Sight.cpp:822 +#: src\Sight.cpp:653 src\Sight.cpp:843 src\Sight.cpp.bak:654 +#: src\Sight.cpp.bak:844 #, c-format msgid "\n" "LimbCorrection = %.4f\n" msgstr "\n" "Corrección por Limbo = %.4f\n" -#: src/Sight.cpp:636 src/Sight.cpp:826 +#: src\Sight.cpp:657 src\Sight.cpp:847 src\Sight.cpp.bak:658 +#: src\Sight.cpp.bak:848 #, c-format msgid "\n" "Corrected Altitude\n" @@ -530,7 +606,8 @@ msgstr "\n" "Altura Corregida = %.4f - %.4f - %.4f\n" "Altura Corregida = %.4f\n" -#: src/Sight.cpp:650 src/Sight.cpp:840 +#: src\Sight.cpp:671 src\Sight.cpp:861 src\Sight.cpp.bak:672 +#: src\Sight.cpp.bak:862 #, c-format msgid "\n" "Sun selected, parallax correction\n" @@ -539,7 +616,8 @@ msgstr "\n" "Sol seleccionado, Corrección por paralaje\n" "rad = %.4f, HP = 0.002442/rad = %.4f\n" -#: src/Sight.cpp:659 src/Sight.cpp:764 +#: src\Sight.cpp:680 src\Sight.cpp:785 src\Sight.cpp.bak:681 +#: src\Sight.cpp.bak:786 #, c-format msgid "\n" "Moon selected, parallax correction\n" @@ -548,7 +626,8 @@ msgstr "\n" "Luna seleccionada, Corrección por paralaje\n" "HP = %.4f\n" -#: src/Sight.cpp:665 src/Sight.cpp:846 +#: src\Sight.cpp:686 src\Sight.cpp:867 src\Sight.cpp.bak:687 +#: src\Sight.cpp.bak:868 #, c-format msgid "ParallaxCorrection = -180/Pi * asin( sin(Pi/180 * HP ) * cos(Pi/180 * CorrectedAltitude))\n" "ParallaxCorrection = -180/Pi * asin( sin(Pi/180 * %.4f ) * cos(Pi/180 * %.4f))\n" @@ -557,7 +636,7 @@ msgstr "Corrección por paralaje = -180/Pi * asin( sin(Pi/180 * HP ) * cos(Pi/18 "Corrección por paralaje = -180/Pi * asin( sin(Pi/180 * %.4f ) * cos(Pi/180 * %.4f))\n" "Corrección por paralaje = %.4f\n" -#: src/Sight.cpp:672 +#: src\Sight.cpp:693 src\Sight.cpp.bak:694 #, c-format msgid "\n" "Observed Altitude (Ho)\n" @@ -570,20 +649,20 @@ msgstr "\n" "Altura Observada = %.4f - %.4f\n" "Altura Observada = %.4f\n" -#: src/Sight.cpp:706 +#: src\Sight.cpp:727 src\Sight.cpp.bak:728 #, c-format msgid "\n" "Apparent Moon Altitude (Ha)\n" "ApparentAltitudeMoon = MeasurementMoon - IndexCorrection - EyeHeightCorrection\n" -" ApparentAltitudeMoon = %.4f - %.4f - %.4f\n" +"ApparentAltitudeMoon = %.4f - %.4f - %.4f\n" "ApparentAltitudeMoon = %.4f\n" msgstr "\n" -"Altura aparente de Luna (Ha)\n" -"Altura aparente de Luna = Altura instrumental de Luna - Índice de Corrección - correccion altura observador\n" -" Altura aparente de Luna = %.4f - %.4f - %.4f\n" -"Altura aparente de Luna= %.4f\n" +"Altura aparente de la luna (Ha)\n" +"Altura aparente de la luna = Altura de la luna - Corrección de Índice- Corrección de la altura de la observación\n" +"Altura aparente de la luna = %.4f - %.4f - %.4f\n" +"Altura aparente de la luna = %.4f\n" -#: src/Sight.cpp:717 +#: src\Sight.cpp:738 src\Sight.cpp.bak:739 #, c-format msgid "\n" "Refraction Correction\n" @@ -596,7 +675,7 @@ msgstr "\n" "x = tan(Pi/180*%.4f + 4.848e-2*(Pi/180) / (tan(Pi/180*%.4f) + .028))\n\n" "x = %.4f\n" -#: src/Sight.cpp:722 +#: src\Sight.cpp:743 src\Sight.cpp.bak:744 #, c-format msgid "RefractionCorrectionMoon = .267 * Pressure / (x*(Temperature + 273.15)) / 60.0\n" "RefractionCorrectionMoon = .267 * %.4f / (x*(%.4f + 273.15)) / 60.0\n" @@ -605,14 +684,15 @@ msgstr "Corrección por Refracción de Luna = .267 * Presión / (x*(Temperatura "Corrección por Refracción de Luna = .267 * %.4f / (x*(%.4f + 273.15)) / 60.0\n" "Corrección por Refracción de Luna = %.4f\n" -#: src/Sight.cpp:747 src/Sight.cpp:750 +#: src\Sight.cpp:768 src\Sight.cpp:771 src\Sight.cpp.bak:769 +#: src\Sight.cpp.bak:772 #, c-format msgid "\n" "LimbCorrectionMoon = %.4f\n" msgstr "\n" "Corrección por Limbo de Luna = %.4f\n" -#: src/Sight.cpp:753 +#: src\Sight.cpp:774 src\Sight.cpp.bak:775 #, c-format msgid "\n" "Corrected Altitude\n" @@ -625,29 +705,16 @@ msgstr "\n" "Altura Corregida de Luna = %.4f - %.4f - %.4f\n" "Altura Corregida de Luna= %.4f\n" -#: src/Sight.cpp:768 +#: src\Sight.cpp:789 src\Sight.cpp.bak:790 #, c-format msgid "ParallaxCorrectionMoon = -180/Pi * asin( sin(Pi/180 * HP ) * cos(Pi/180 * CorrectedAltitude))\n" -" ParallaxCorrectionMoon = -180/Pi * asin( sin(Pi/180 * %.4f ) * cos(Pi/180 * %.4f))\n" +"ParallaxCorrectionMoon = -180/Pi * asin( sin(Pi/180 * %.4f ) * cos(Pi/180 * %.4f))\n" "ParallaxCorrectionMoon = %.4f\n" -msgstr "Corrección por paralaje de Luna = -180/Pi * asin( sin(Pi/180 * HP ) * cos(Pi/180 * Altura corregida))\n" +msgstr "Corrección por paralaje de Luna = -180/Pi * asin( sin(Pi/180 * HP ) * cos(Pi/180 * Altura Corregida))\n" "Corrección por paralaje de Luna = -180/Pi * asin( sin(Pi/180 * %.4f ) * cos(Pi/180 * %.4f))\n" "Corrección por paralaje de Luna = %.4f\n" -#: src/Sight.cpp:778 -#, c-format -msgid "\n" -"Apparent Altitude (Ha)\n" -"ApparentAltitude = Measurement - IndexCorrection - EyeHeightCorrection\n" -" ApparentAltitude = %.4f - %.4f - %.4f\n" -"ApparentAltitude = %.4f\n" -msgstr "\n" -"Altura Aparente (Ha)\n" -"Altura Aparente = Medida - Corrección de Índice - Corrección Altura de Ojo\n" -"Altura Aparente = %.4f - %.4f - %.4f\n" -"Altura Aparente = %.4f\n" - -#: src/Sight.cpp:857 +#: src\Sight.cpp:878 src\Sight.cpp.bak:879 #, c-format msgid "CorrectionsMoon = %.4f\n" "CorrectionsBody = %.4f\n" @@ -656,7 +723,7 @@ msgstr "Correcciones Luna = %.4f\n" "Correcciones astro = %.4f\n" "Correcciones = abs (Correcciones Luna - Correcciones astro) = %.4f\n" -#: src/Sight.cpp:863 +#: src\Sight.cpp:884 src\Sight.cpp.bak:885 #, c-format msgid "CorrectedMeasurement = Measurement - Corrections - IndexCorrection\n" "CorrectedMeasurement = %.4f - %.4f - %.4f\n" @@ -665,86 +732,65 @@ msgstr "Medidas corregidas = Medida - Correcciones - corrección de índice\n" "Medida corregida = %.4f - %.4f - %.4f\n" "Medida corregida = %.4f\n" -#: src/Sight.cpp:888 +#: src\Sight.cpp:909 src\Sight.cpp.bak:910 msgid "\n" "Calculated angle between Moon and " msgstr "\n" "Ángulo calculado entre Luna y " -#: src/Sight.cpp:890 +#: src\Sight.cpp:911 src\Sight.cpp.bak:912 #, c-format msgid "\n" "Error from measurement: %.4f" msgstr "\n" "Error de medida: %.4f" -#: src/Sight.cpp:894 +#: src\Sight.cpp:915 src\Sight.cpp.bak:916 msgid "\n" "Moon takes 28 days to orbit, one degree of error takes 6720 seconds" msgstr "\n" "La Luna tarda 28 días en una órbita, un grado de error tarda 6720 segundos" -#: src/Sight.cpp:895 +#: src\Sight.cpp:916 src\Sight.cpp.bak:917 #, c-format msgid "\n" "Time correction %.4f seconds" msgstr "\n" "Corrección de tiempo %.4f segundos" -#: src/Sight.cpp:1099 +#: src\Sight.cpp:1120 src\Sight.cpp.bak:1121 msgid "Building bearing Sight Positions" msgstr "Resolviendo situación de las observaciones" -#: src/SightDialog.cpp:172 +#: src\SightDialog.cpp:184 msgid "Measurement certainty likely set to small, sight may not appear " msgstr "Establecida Incertidumbre de la medición muy pequeña, la observación puede no aparecer " -#: src/SightDialog.cpp:173 src/SightDialog.cpp:256 +#: src\SightDialog.cpp:185 src\SightDialog.cpp:279 msgid "Warning" msgstr "Alerta" -#: src/SightDialog.cpp:255 +#: src\SightDialog.cpp:278 msgid "Lunar shot will be invalid taking distance from moon to itself" msgstr "Observación a Luna será invalidada tomando distancia de Luna hasta uno mismo" -#: src/celestial_navigation_pi.cpp:90 -msgid "Failed to load file:\n" -msgstr "Error al cargar file:\n" +#: src\celestial_navigation_pi.cpp:179 +msgid "open error" +msgstr "error al abrir" -#: src/celestial_navigation_pi.cpp:91 -msgid "\n" -"Magnetic data will not be available for the celestial navigation plugin." -msgstr "\n" -"\n" -"Datos de magnetismo no disponibles para el plugin Celestial Navigation." +#: src\celestial_navigation_pi.cpp:180 +msgid "corrupt record" +msgstr "registro corrupto" -#: src/celestial_navigation_pi.cpp:92 -msgid "OpenCPN Alert" -msgstr "Alerta OpenCPN" +#: src\celestial_navigation_pi.cpp:181 +msgid "too many models" +msgstr "demasiados modelos" -#: src/celestial_navigation_pi.cpp:157 -msgid "Celestial Navigation PlugIn for OpenCPN" -msgstr "PlugIn de Navegación Astronómica para OpenCPN" - -#: src/celestial_navigation_pi.cpp:162 -msgid "Celestial Navigation PlugIn for OpenCPN.\n" -"Implements nautical almanac for sun, moon, planets,\n" -"and various navigational stars.\n" -"Compute position fix from celestial measurements." -msgstr "PlugIn Navegación Astronómica para OpenCPN.\n\n" -"Instala un almanaque náutico del Sol, Luna, planetas\n" -" y varias estrellas útiles en la navegación.\n" -" Permite calcular la posición a partir de mediciones astronómicas." - -#: src/FixDialog.cpp:189 -msgid "Shifted sights are not used to compute a fix, determine fix visually instead.\n" -msgstr "Las observaciones trasladadas no se emplean para calcular una solución, determínela visualmente en su lugar.\n" - -#: src/FixDialog.cpp:190 -msgid "Fix Position" -msgstr "Posición calculada" +#: src\celestial_navigation_pi.cpp:184 +msgid "Magnetic data will not be available for the celestial navigation plugin." +msgstr "Los datos de aguja no estarán disponibles para el complemento de navegación astronómica." -#: src/FixDialog.cpp:335 src/FixDialog.cpp:336 src/FixDialog.cpp:337 -msgid " N/A " -msgstr " N/D " +#: src\celestial_navigation_pi.cpp:185 +msgid "OpenCPN Alert" +msgstr "Alerta OpenCPN" diff --git a/po/et_EE.po b/po/et_EE.po index 3f77c1a..82aa95c 100644 --- a/po/et_EE.po +++ b/po/et_EE.po @@ -2,403 +2,467 @@ msgid "" msgstr "" "Project-Id-Version: opencpn\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-02-28 14:10-0300\n" -"PO-Revision-Date: 2018-03-03 08:22-0500\n" -"Last-Translator: nohal \n" +"POT-Creation-Date: 2021-10-27 22:15+0200\n" +"PO-Revision-Date: 2023-10-19 09:17\n" +"Last-Translator: \n" "Language-Team: Estonian\n" "Language: et_EE\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -"X-Generator: crowdin.com\n" "X-Crowdin-Project: opencpn\n" +"X-Crowdin-Project-ID: 49843\n" "X-Crowdin-Language: et\n" "X-Crowdin-File: /plugins/celestial_navigation_pi/po/celestial_navigation_pi.pot\n" +"X-Crowdin-File-ID: 108\n" -#: src/CelestialNavigationDialog.cpp:123 src/CelestialNavigationUI.cpp:132 +#: src\CelestialNavigationDialog-2.3.5.1-no-android.cpp:149 +#: src\CelestialNavigationDialog-2.3.5.2-android.cpp:150 +#: src\CelestialNavigationDialog-partial-android.cpp:149 +#: src\CelestialNavigationDialog.cpp:150 src\CelestialNavigationUI.cpp:137 msgid "Type" msgstr "" -#: src/CelestialNavigationDialog.cpp:124 +#: src\CelestialNavigationDialog-2.3.5.1-no-android.cpp:150 +#: src\CelestialNavigationDialog-2.3.5.2-android.cpp:151 +#: src\CelestialNavigationDialog-partial-android.cpp:150 +#: src\CelestialNavigationDialog.cpp:151 msgid "Body" msgstr "" -#: src/CelestialNavigationDialog.cpp:125 -msgid "Time (UTC)" +#: src\CelestialNavigationDialog-2.3.5.1-no-android.cpp:151 +#: src\CelestialNavigationDialog-2.3.5.2-android.cpp:152 +#: src\CelestialNavigationDialog-partial-android.cpp:151 +#: src\CelestialNavigationDialog.cpp:152 src\CelestialNavigationUI.cpp:328 +msgid "Time (UT)" msgstr "" -#: src/CelestialNavigationDialog.cpp:126 src/CelestialNavigationUI.cpp:179 +#: src\CelestialNavigationDialog-2.3.5.1-no-android.cpp:152 +#: src\CelestialNavigationDialog-2.3.5.2-android.cpp:153 +#: src\CelestialNavigationDialog-partial-android.cpp:152 +#: src\CelestialNavigationDialog.cpp:153 src\CelestialNavigationUI.cpp:184 msgid "Measurement" msgstr "" -#: src/CelestialNavigationDialog.cpp:127 src/CelestialNavigationUI.cpp:376 +#: src\CelestialNavigationDialog-2.3.5.1-no-android.cpp:153 +#: src\CelestialNavigationDialog-2.3.5.2-android.cpp:154 +#: src\CelestialNavigationDialog-partial-android.cpp:153 +#: src\CelestialNavigationDialog.cpp:154 src\CelestialNavigationUI.cpp:381 msgid "Color" msgstr "" -#: src/CelestialNavigationDialog.cpp:193 -msgid "Failed to load file." +#: src\CelestialNavigationDialog-2.3.5.1-no-android.cpp:266 +#: src\CelestialNavigationDialog-2.3.5.2-android.cpp:272 +#: src\CelestialNavigationDialog-partial-android.cpp:266 +#: src\CelestialNavigationDialog.cpp:272 src\celestial_navigation_pi.cpp:177 +msgid "Failed to load file: " msgstr "" -#: src/CelestialNavigationDialog.cpp:198 +#: src\CelestialNavigationDialog-2.3.5.1-no-android.cpp:271 +#: src\CelestialNavigationDialog-2.3.5.2-android.cpp:277 +#: src\CelestialNavigationDialog-partial-android.cpp:271 +#: src\CelestialNavigationDialog.cpp:277 msgid "Invalid xml file" msgstr "" -#: src/CelestialNavigationDialog.cpp:250 +#: src\CelestialNavigationDialog-2.3.5.1-no-android.cpp:323 +#: src\CelestialNavigationDialog-2.3.5.2-android.cpp:329 +#: src\CelestialNavigationDialog-partial-android.cpp:323 +#: src\CelestialNavigationDialog.cpp:329 msgid "Unrecognized xml node" msgstr "" -#: src/CelestialNavigationDialog.cpp:260 -msgid "Weather Routing" +#: src\CelestialNavigationDialog-2.3.5.1-no-android.cpp:332 +#: src\CelestialNavigationDialog-2.3.5.1-no-android.cpp:392 +#: src\CelestialNavigationDialog-2.3.5.1-no-android.cpp:532 +#: src\CelestialNavigationDialog-2.3.5.2-android.cpp:338 +#: src\CelestialNavigationDialog-2.3.5.2-android.cpp:398 +#: src\CelestialNavigationDialog-2.3.5.2-android.cpp:538 +#: src\CelestialNavigationDialog-partial-android.cpp:332 +#: src\CelestialNavigationDialog-partial-android.cpp:392 +#: src\CelestialNavigationDialog-partial-android.cpp:532 +#: src\CelestialNavigationDialog.cpp:338 src\CelestialNavigationDialog.cpp:398 +#: src\CelestialNavigationDialog.cpp:538 src\Sight.cpp:1120 +#: src\Sight.cpp.bak:1121 src\celestial_navigation_pi.cpp:95 +#: src\celestial_navigation_pi.cpp:99 +msgid "Celestial Navigation" msgstr "" -#: src/CelestialNavigationDialog.cpp:320 +#: src\CelestialNavigationDialog-2.3.5.1-no-android.cpp:391 +#: src\CelestialNavigationDialog-2.3.5.2-android.cpp:397 +#: src\CelestialNavigationDialog-partial-android.cpp:391 +#: src\CelestialNavigationDialog.cpp:397 msgid "Failed to save xml file: " msgstr "" -#: src/CelestialNavigationDialog.cpp:321 src/CelestialNavigationDialog.cpp:466 -#: src/Sight.cpp:1099 src/celestial_navigation_pi.cpp:99 -#: src/celestial_navigation_pi.cpp:152 -msgid "Celestial Navigation" -msgstr "" - -#: src/CelestialNavigationDialog.cpp:351 +#: src\CelestialNavigationDialog-2.3.5.1-no-android.cpp:424 +#: src\CelestialNavigationDialog-2.3.5.2-android.cpp:430 +#: src\CelestialNavigationDialog-partial-android.cpp:424 +#: src\CelestialNavigationDialog.cpp:430 msgid "Time Correction" msgstr "" -#: src/CelestialNavigationDialog.cpp:409 +#: src\CelestialNavigationDialog-2.3.5.1-no-android.cpp:473 +#: src\CelestialNavigationDialog-2.3.5.2-android.cpp:479 +#: src\CelestialNavigationDialog-partial-android.cpp:473 +#: src\CelestialNavigationDialog.cpp:479 msgid "Sun" msgstr "" -#: src/CelestialNavigationDialog.cpp:465 +#: src\CelestialNavigationDialog-2.3.5.1-no-android.cpp:531 +#: src\CelestialNavigationDialog-2.3.5.2-android.cpp:537 +#: src\CelestialNavigationDialog-partial-android.cpp:531 +#: src\CelestialNavigationDialog.cpp:537 msgid "Are you sure you want to delete all sights?" msgstr "" -#: src/CelestialNavigationDialog.cpp:510 +#: src\CelestialNavigationDialog-2.3.5.1-no-android.cpp:582 +#: src\CelestialNavigationDialog-2.3.5.2-android.cpp:588 +#: src\CelestialNavigationDialog-partial-android.cpp:582 +#: src\CelestialNavigationDialog.cpp:588 msgid "Celestial_Navigation_Information.html" msgstr "" -#: src/CelestialNavigationDialog.cpp:516 -msgid "Show" +#: src\CelestialNavigationDialog-2.3.5.1-no-android.cpp:589 +#: src\CelestialNavigationDialog-2.3.5.2-android.cpp:595 +#: src\CelestialNavigationDialog-partial-android.cpp:589 +#: src\CelestialNavigationDialog.cpp:595 src\CelestialNavigationUI.cpp:55 +msgid "Hide" msgstr "" -#: src/CelestialNavigationDialog.cpp:516 src/CelestialNavigationUI.cpp:58 -msgid "Hide" +#: src\CelestialNavigationDialog-2.3.5.1-no-android.cpp:589 +#: src\CelestialNavigationDialog-2.3.5.2-android.cpp:595 +#: src\CelestialNavigationDialog-partial-android.cpp:589 +#: src\CelestialNavigationDialog.cpp:595 +msgid "Show" msgstr "" -#: src/CelestialNavigationUI.cpp:40 +#: src\CelestialNavigationUI.cpp:40 msgid "New" msgstr "" -#: src/CelestialNavigationUI.cpp:43 -msgid "Edit" +#: src\CelestialNavigationUI.cpp:43 src\CelestialNavigationUI.h:286 +msgid "Fix" msgstr "" -#: src/CelestialNavigationUI.cpp:46 -msgid "Delete" +#: src\CelestialNavigationUI.cpp:46 +msgid "Duplicate" msgstr "" -#: src/CelestialNavigationUI.cpp:49 -msgid "Delete All" +#: src\CelestialNavigationUI.cpp:49 +msgid "Clock Offset" msgstr "" -#: src/CelestialNavigationUI.cpp:52 src/CelestialNavigationUI.h:281 -msgid "Fix" +#: src\CelestialNavigationUI.cpp:52 +msgid "Edit" msgstr "" -#: src/CelestialNavigationUI.cpp:55 -msgid "Clock Offset" +#: src\CelestialNavigationUI.cpp:58 +msgid "Delete" msgstr "" -#: src/CelestialNavigationUI.cpp:61 +#: src\CelestialNavigationUI.cpp:61 msgid "Information" msgstr "" -#: src/CelestialNavigationUI.cpp:136 src/CelestialNavigationUI.cpp:667 -#: src/Sight.h:49 +#: src\CelestialNavigationUI.cpp:64 +msgid "Delete All" +msgstr "" + +#: src\CelestialNavigationUI.cpp:141 src\CelestialNavigationUI.cpp:674 +#: src\Sight.h:49 msgid "Altitude" msgstr "" -#: src/CelestialNavigationUI.cpp:136 src/CelestialNavigationUI.cpp:677 -#: src/Sight.h:49 +#: src\CelestialNavigationUI.cpp:141 src\CelestialNavigationUI.cpp:683 +#: src\Sight.h:49 msgid "Azimuth" msgstr "" -#: src/CelestialNavigationUI.cpp:136 src/Sight.h:49 +#: src\CelestialNavigationUI.cpp:141 src\Sight.h:49 msgid "Lunar" msgstr "" -#: src/CelestialNavigationUI.cpp:142 +#: src\CelestialNavigationUI.cpp:147 msgid "Magnetic Azimuth" msgstr "" -#: src/CelestialNavigationUI.cpp:145 +#: src\CelestialNavigationUI.cpp:150 msgid "Celestial Body" msgstr "" -#: src/CelestialNavigationUI.cpp:154 +#: src\CelestialNavigationUI.cpp:159 msgid "Find" msgstr "" -#: src/CelestialNavigationUI.cpp:157 +#: src\CelestialNavigationUI.cpp:162 msgid "Limb" msgstr "" -#: src/CelestialNavigationUI.cpp:161 -msgid "Lower" +#: src\CelestialNavigationUI.cpp:166 +msgid "Center" msgstr "" -#: src/CelestialNavigationUI.cpp:161 -msgid "Center" +#: src\CelestialNavigationUI.cpp:166 +msgid "Lower" msgstr "" -#: src/CelestialNavigationUI.cpp:161 +#: src\CelestialNavigationUI.cpp:166 msgid "Upper" msgstr "" -#: src/CelestialNavigationUI.cpp:186 src/CelestialNavigationUI.cpp:193 -#: src/CelestialNavigationUI.cpp:223 src/CelestialNavigationUI.cpp:230 +#: src\CelestialNavigationUI.cpp:191 src\CelestialNavigationUI.cpp:198 +#: src\CelestialNavigationUI.cpp:228 src\CelestialNavigationUI.cpp:235 msgid "0" msgstr "" -#: src/CelestialNavigationUI.cpp:189 src/CelestialNavigationUI.cpp:348 -#: src/CelestialNavigationUI.cpp:598 +#: src\CelestialNavigationUI.cpp:194 src\CelestialNavigationUI.cpp:353 +#: src\CelestialNavigationUI.cpp:605 msgid "Degrees" msgstr "" -#: src/CelestialNavigationUI.cpp:196 src/CelestialNavigationUI.cpp:278 -#: src/CelestialNavigationUI.cpp:439 +#: src\CelestialNavigationUI.cpp:201 src\CelestialNavigationUI.cpp:283 +#: src\CelestialNavigationUI.cpp:444 msgid "Minutes" msgstr "" -#: src/CelestialNavigationUI.cpp:200 +#: src\CelestialNavigationUI.cpp:205 msgid "10" msgstr "" -#: src/CelestialNavigationUI.cpp:203 +#: src\CelestialNavigationUI.cpp:208 msgid "Minutes Certainty" msgstr "" -#: src/CelestialNavigationUI.cpp:217 +#: src\CelestialNavigationUI.cpp:222 msgid "Lunar Altitude" msgstr "" -#: src/CelestialNavigationUI.cpp:226 +#: src\CelestialNavigationUI.cpp:231 msgid "Body Altitude" msgstr "" -#: src/CelestialNavigationUI.cpp:243 +#: src\CelestialNavigationUI.cpp:248 msgid "Sight" msgstr "" -#: src/CelestialNavigationUI.cpp:271 +#: src\CelestialNavigationUI.cpp:276 msgid "Hours" msgstr "" -#: src/CelestialNavigationUI.cpp:285 src/CelestialNavigationUI.cpp:303 -#: src/CelestialNavigationUI.cpp:860 +#: src\CelestialNavigationUI.cpp:290 src\CelestialNavigationUI.cpp:308 +#: src\CelestialNavigationUI.cpp:869 msgid "Seconds" msgstr "" -#: src/CelestialNavigationUI.cpp:293 +#: src\CelestialNavigationUI.cpp:298 msgid "Certainty" msgstr "" -#: src/CelestialNavigationUI.cpp:323 -msgid "Time" -msgstr "" - -#: src/CelestialNavigationUI.cpp:330 src/CelestialNavigationUI.cpp:580 +#: src\CelestialNavigationUI.cpp:335 src\CelestialNavigationUI.cpp:587 msgid "Distance" msgstr "" -#: src/CelestialNavigationUI.cpp:337 src/CelestialNavigationUI.cpp:587 +#: src\CelestialNavigationUI.cpp:342 src\CelestialNavigationUI.cpp:594 msgid "Nm" msgstr "" -#: src/CelestialNavigationUI.cpp:341 src/CelestialNavigationUI.cpp:591 +#: src\CelestialNavigationUI.cpp:346 src\CelestialNavigationUI.cpp:598 msgid "Bearing" msgstr "" -#: src/CelestialNavigationUI.cpp:352 src/CelestialNavigationUI.cpp:602 +#: src\CelestialNavigationUI.cpp:357 src\CelestialNavigationUI.cpp:609 msgid "Magnetic Bearing" msgstr "" -#: src/CelestialNavigationUI.cpp:359 +#: src\CelestialNavigationUI.cpp:364 msgid "DR Shift" msgstr "" -#: src/CelestialNavigationUI.cpp:366 +#: src\CelestialNavigationUI.cpp:371 msgid "Transparency" msgstr "" -#: src/CelestialNavigationUI.cpp:387 +#: src\CelestialNavigationUI.cpp:392 msgid "Config" msgstr "" -#: src/CelestialNavigationUI.cpp:399 +#: src\CelestialNavigationUI.cpp:404 msgid "Eye Height" msgstr "" -#: src/CelestialNavigationUI.cpp:403 +#: src\CelestialNavigationUI.cpp:408 msgid "2" msgstr "" -#: src/CelestialNavigationUI.cpp:406 +#: src\CelestialNavigationUI.cpp:411 msgid "Meters" msgstr "" -#: src/CelestialNavigationUI.cpp:410 +#: src\CelestialNavigationUI.cpp:415 msgid "Temperature" msgstr "" -#: src/CelestialNavigationUI.cpp:417 +#: src\CelestialNavigationUI.cpp:422 msgid "Celcius" msgstr "" -#: src/CelestialNavigationUI.cpp:421 +#: src\CelestialNavigationUI.cpp:426 msgid "Pressure" msgstr "" -#: src/CelestialNavigationUI.cpp:428 +#: src\CelestialNavigationUI.cpp:433 msgid "MilliBars" msgstr "" -#: src/CelestialNavigationUI.cpp:432 +#: src\CelestialNavigationUI.cpp:437 msgid "Index Error" msgstr "" -#: src/CelestialNavigationUI.cpp:446 +#: src\CelestialNavigationUI.cpp:451 msgid "Set As Defaults" msgstr "" -#: src/CelestialNavigationUI.cpp:453 +#: src\CelestialNavigationUI.cpp:458 msgid "Parameters" msgstr "" -#: src/CelestialNavigationUI.cpp:469 +#: src\CelestialNavigationUI.cpp:474 msgid "Calculations" msgstr "" -#: src/CelestialNavigationUI.cpp:571 +#: src\CelestialNavigationUI.cpp:578 msgid "Shift all visible Sights" msgstr "" -#: src/CelestialNavigationUI.cpp:649 src/CelestialNavigationUI.cpp:760 +#: src\CelestialNavigationUI.cpp:656 src\CelestialNavigationUI.cpp:769 msgid "Latitude" msgstr "" -#: src/CelestialNavigationUI.cpp:658 src/CelestialNavigationUI.cpp:768 +#: src\CelestialNavigationUI.cpp:665 src\CelestialNavigationUI.cpp:777 msgid "Longitude" msgstr "" -#: src/CelestialNavigationUI.cpp:669 src/CelestialNavigationUI.cpp:679 -msgid "MyLabel" +#: src\CelestialNavigationUI.cpp:691 +msgid "Boat Position" msgstr "" -#: src/CelestialNavigationUI.cpp:686 -msgid "Done" +#: src\CelestialNavigationUI.cpp:695 +msgid "Magnetic" msgstr "" -#: src/CelestialNavigationUI.cpp:689 -msgid "Magnetic" +#: src\CelestialNavigationUI.cpp:698 +msgid "Done" msgstr "" -#: src/CelestialNavigationUI.cpp:753 +#: src\CelestialNavigationUI.cpp:762 msgid "Fix From Visible Sights" msgstr "" -#: src/CelestialNavigationUI.cpp:764 +#: src\CelestialNavigationUI.cpp:773 msgid " N/A " msgstr "" -#: src/CelestialNavigationUI.cpp:772 +#: src\CelestialNavigationUI.cpp:781 msgid " N/A " msgstr "" -#: src/CelestialNavigationUI.cpp:776 +#: src\CelestialNavigationUI.cpp:785 msgid "Error" msgstr "" -#: src/CelestialNavigationUI.cpp:780 +#: src\CelestialNavigationUI.cpp:789 msgid " N/A " msgstr "" -#: src/CelestialNavigationUI.cpp:787 src/CelestialNavigationUI.cpp:794 +#: src\CelestialNavigationUI.cpp:796 src\CelestialNavigationUI.cpp:803 msgid "Initial" msgstr "" -#: src/CelestialNavigationUI.cpp:801 +#: src\CelestialNavigationUI.cpp:810 msgid "Alg" msgstr "" -#: src/CelestialNavigationUI.cpp:806 +#: src\CelestialNavigationUI.cpp:815 msgid "Plane" msgstr "" -#: src/CelestialNavigationUI.cpp:807 +#: src\CelestialNavigationUI.cpp:816 msgid "Sphere" msgstr "" -#: src/CelestialNavigationUI.cpp:808 +#: src\CelestialNavigationUI.cpp:817 msgid "Cone" msgstr "" -#: src/CelestialNavigationUI.cpp:809 +#: src\CelestialNavigationUI.cpp:818 msgid "Cone 2" msgstr "" -#: src/CelestialNavigationUI.cpp:813 +#: src\CelestialNavigationUI.cpp:822 msgid "Go" msgstr "" -#: src/CelestialNavigationUI.cpp:850 src/CelestialNavigationUI.h:303 +#: src\CelestialNavigationUI.cpp:859 src\CelestialNavigationUI.h:308 msgid "Clock Correction" msgstr "" -#: src/CelestialNavigationUI.h:78 +#: src\CelestialNavigationUI.h:82 msgid "Celestial Navigation Sights" msgstr "" -#: src/CelestialNavigationUI.h:169 +#: src\CelestialNavigationUI.h:173 msgid "Sight Properties" msgstr "" -#: src/CelestialNavigationUI.h:200 +#: src\CelestialNavigationUI.h:204 msgid "Dead Reckoning shift" msgstr "" -#: src/CelestialNavigationUI.h:227 +#: src\CelestialNavigationUI.h:232 msgid "Find Celestial Body" msgstr "" -#: src/Sight.cpp:160 +#: src\FixDialog.cpp:192 +msgid "Shifted sights are not used to compute a fix, determine fix visually instead.\n" +msgstr "" + +#: src\FixDialog.cpp:193 +msgid "Fix Position" +msgstr "" + +#: src\FixDialog.cpp:338 src\FixDialog.cpp:339 src\FixDialog.cpp:340 +msgid " N/A " +msgstr "" + +#: src\Sight.cpp:172 src\Sight.cpp.bak:173 msgid "Astrolab failed, data unavailable:\n" msgstr "" -#: src/Sight.cpp:161 +#: src\Sight.cpp:173 src\Sight.cpp.bak:174 msgid "\n" "Did you forget to install vsop87d.txt?\n" msgstr "" -#: src/Sight.cpp:162 +#: src\Sight.cpp:174 src\Sight.cpp.bak:175 msgid "The plugin will not work correctly" msgstr "" -#: src/Sight.cpp:163 +#: src\Sight.cpp:175 src\Sight.cpp.bak:176 msgid "Failure Alert" msgstr "" -#: src/Sight.cpp:474 +#: src\Sight.cpp:495 src\Sight.cpp.bak:496 #, c-format msgid "Applying clock correction of %d seconds\n\n" msgstr "" -#: src/Sight.cpp:536 +#: src\Sight.cpp:557 src\Sight.cpp.bak:558 msgid "Almanac Data For " msgstr "" -#: src/Sight.cpp:537 +#: src\Sight.cpp:558 src\Sight.cpp.bak:559 #, c-format msgid "\n" "Geographical Position (lat, lon) = %.4f %.4f\n" @@ -410,23 +474,27 @@ msgid "\n" "HP = %.1f'\n\n" msgstr "" -#: src/Sight.cpp:552 src/Sight.cpp:690 +#: src\Sight.cpp:573 src\Sight.cpp:711 src\Sight.cpp.bak:574 +#: src\Sight.cpp.bak:712 msgid "Formulas used to calculate sight\n\n" msgstr "" -#: src/Sight.cpp:556 src/Sight.cpp:694 +#: src\Sight.cpp:577 src\Sight.cpp:715 src\Sight.cpp.bak:578 +#: src\Sight.cpp.bak:716 #, c-format msgid "Index Error is %.4f degrees\n\n" msgstr "" -#: src/Sight.cpp:561 src/Sight.cpp:699 +#: src\Sight.cpp:582 src\Sight.cpp:720 src\Sight.cpp.bak:583 +#: src\Sight.cpp.bak:721 #, c-format msgid "Eye Height is %.4f meters\n" "Height Correction Degrees = 1.758*sqrt(%.4f) / 60.0\n" "Height Correction Degrees = %.4f\n" msgstr "" -#: src/Sight.cpp:568 +#: src\Sight.cpp:589 src\Sight.cpp:799 src\Sight.cpp.bak:590 +#: src\Sight.cpp.bak:800 #, c-format msgid "\n" "Apparent Altitude (Ha)\n" @@ -435,7 +503,8 @@ msgid "\n" "ApparentAltitude = %.4f\n" msgstr "" -#: src/Sight.cpp:586 src/Sight.cpp:789 +#: src\Sight.cpp:607 src\Sight.cpp:810 src\Sight.cpp.bak:608 +#: src\Sight.cpp.bak:811 #, c-format msgid "\n" "Refraction Correction\n" @@ -444,21 +513,24 @@ msgid "\n" "x = %.4f\n" msgstr "" -#: src/Sight.cpp:591 src/Sight.cpp:794 +#: src\Sight.cpp:612 src\Sight.cpp:815 src\Sight.cpp.bak:613 +#: src\Sight.cpp.bak:816 #, c-format msgid "RefractionCorrection = .267 * Pressure / (x*(Temperature + 273.15)) / 60.0\n" "RefractionCorrection = .267 * %.4f / (x*(%.4f + 273.15)) / 60.0\n" "RefractionCorrection = %.4f\n" msgstr "" -#: src/Sight.cpp:606 src/Sight.cpp:808 +#: src\Sight.cpp:627 src\Sight.cpp:829 src\Sight.cpp.bak:628 +#: src\Sight.cpp.bak:830 #, c-format msgid "\n" "Sun selected, Limb Correction\n" "ra = %.4f, lc = 0.266564/ra = %.4f\n" msgstr "" -#: src/Sight.cpp:616 src/Sight.cpp:732 +#: src\Sight.cpp:637 src\Sight.cpp:753 src\Sight.cpp.bak:638 +#: src\Sight.cpp.bak:754 #, c-format msgid "\n" "Moon selected, Limb Correction\n" @@ -467,21 +539,25 @@ msgid "\n" "lc = %.4f\n" msgstr "" -#: src/Sight.cpp:626 src/Sight.cpp:741 src/Sight.cpp:816 +#: src\Sight.cpp:647 src\Sight.cpp:762 src\Sight.cpp:837 src\Sight.cpp.bak:648 +#: src\Sight.cpp.bak:763 src\Sight.cpp.bak:838 msgid "Upper Limb" msgstr "" -#: src/Sight.cpp:629 src/Sight.cpp:744 src/Sight.cpp:819 +#: src\Sight.cpp:650 src\Sight.cpp:765 src\Sight.cpp:840 src\Sight.cpp.bak:651 +#: src\Sight.cpp.bak:766 src\Sight.cpp.bak:841 msgid "Lower Limb" msgstr "" -#: src/Sight.cpp:632 src/Sight.cpp:822 +#: src\Sight.cpp:653 src\Sight.cpp:843 src\Sight.cpp.bak:654 +#: src\Sight.cpp.bak:844 #, c-format msgid "\n" "LimbCorrection = %.4f\n" msgstr "" -#: src/Sight.cpp:636 src/Sight.cpp:826 +#: src\Sight.cpp:657 src\Sight.cpp:847 src\Sight.cpp.bak:658 +#: src\Sight.cpp.bak:848 #, c-format msgid "\n" "Corrected Altitude\n" @@ -490,28 +566,31 @@ msgid "\n" "CorrectedAltitude = %.4f\n" msgstr "" -#: src/Sight.cpp:650 src/Sight.cpp:840 +#: src\Sight.cpp:671 src\Sight.cpp:861 src\Sight.cpp.bak:672 +#: src\Sight.cpp.bak:862 #, c-format msgid "\n" "Sun selected, parallax correction\n" "rad = %.4f, HP = 0.002442/rad = %.4f\n" msgstr "" -#: src/Sight.cpp:659 src/Sight.cpp:764 +#: src\Sight.cpp:680 src\Sight.cpp:785 src\Sight.cpp.bak:681 +#: src\Sight.cpp.bak:786 #, c-format msgid "\n" "Moon selected, parallax correction\n" "HP = %.4f\n" msgstr "" -#: src/Sight.cpp:665 src/Sight.cpp:846 +#: src\Sight.cpp:686 src\Sight.cpp:867 src\Sight.cpp.bak:687 +#: src\Sight.cpp.bak:868 #, c-format msgid "ParallaxCorrection = -180/Pi * asin( sin(Pi/180 * HP ) * cos(Pi/180 * CorrectedAltitude))\n" "ParallaxCorrection = -180/Pi * asin( sin(Pi/180 * %.4f ) * cos(Pi/180 * %.4f))\n" "ParallaxCorrection = %.4f\n" msgstr "" -#: src/Sight.cpp:672 +#: src\Sight.cpp:693 src\Sight.cpp.bak:694 #, c-format msgid "\n" "Observed Altitude (Ho)\n" @@ -520,16 +599,16 @@ msgid "\n" "ObservedAltitude = %.4f\n" msgstr "" -#: src/Sight.cpp:706 +#: src\Sight.cpp:727 src\Sight.cpp.bak:728 #, c-format msgid "\n" "Apparent Moon Altitude (Ha)\n" "ApparentAltitudeMoon = MeasurementMoon - IndexCorrection - EyeHeightCorrection\n" -" ApparentAltitudeMoon = %.4f - %.4f - %.4f\n" +"ApparentAltitudeMoon = %.4f - %.4f - %.4f\n" "ApparentAltitudeMoon = %.4f\n" msgstr "" -#: src/Sight.cpp:717 +#: src\Sight.cpp:738 src\Sight.cpp.bak:739 #, c-format msgid "\n" "Refraction Correction\n" @@ -538,20 +617,21 @@ msgid "\n" "x = %.4f\n" msgstr "" -#: src/Sight.cpp:722 +#: src\Sight.cpp:743 src\Sight.cpp.bak:744 #, c-format msgid "RefractionCorrectionMoon = .267 * Pressure / (x*(Temperature + 273.15)) / 60.0\n" "RefractionCorrectionMoon = .267 * %.4f / (x*(%.4f + 273.15)) / 60.0\n" "RefractionCorrectionMoon = %.4f\n" msgstr "" -#: src/Sight.cpp:747 src/Sight.cpp:750 +#: src\Sight.cpp:768 src\Sight.cpp:771 src\Sight.cpp.bak:769 +#: src\Sight.cpp.bak:772 #, c-format msgid "\n" "LimbCorrectionMoon = %.4f\n" msgstr "" -#: src/Sight.cpp:753 +#: src\Sight.cpp:774 src\Sight.cpp.bak:775 #, c-format msgid "\n" "Corrected Altitude\n" @@ -560,107 +640,82 @@ msgid "\n" "CorrectedAltitudeMoon = %.4f\n" msgstr "" -#: src/Sight.cpp:768 +#: src\Sight.cpp:789 src\Sight.cpp.bak:790 #, c-format msgid "ParallaxCorrectionMoon = -180/Pi * asin( sin(Pi/180 * HP ) * cos(Pi/180 * CorrectedAltitude))\n" -" ParallaxCorrectionMoon = -180/Pi * asin( sin(Pi/180 * %.4f ) * cos(Pi/180 * %.4f))\n" +"ParallaxCorrectionMoon = -180/Pi * asin( sin(Pi/180 * %.4f ) * cos(Pi/180 * %.4f))\n" "ParallaxCorrectionMoon = %.4f\n" msgstr "" -#: src/Sight.cpp:778 -#, c-format -msgid "\n" -"Apparent Altitude (Ha)\n" -"ApparentAltitude = Measurement - IndexCorrection - EyeHeightCorrection\n" -" ApparentAltitude = %.4f - %.4f - %.4f\n" -"ApparentAltitude = %.4f\n" -msgstr "" - -#: src/Sight.cpp:857 +#: src\Sight.cpp:878 src\Sight.cpp.bak:879 #, c-format msgid "CorrectionsMoon = %.4f\n" "CorrectionsBody = %.4f\n" "Corrections = abs(CorrectionsMoon - CorrectionsBody) = %.4f\n" msgstr "" -#: src/Sight.cpp:863 +#: src\Sight.cpp:884 src\Sight.cpp.bak:885 #, c-format msgid "CorrectedMeasurement = Measurement - Corrections - IndexCorrection\n" "CorrectedMeasurement = %.4f - %.4f - %.4f\n" "CorrectedMeasurement = %.4f\n" msgstr "" -#: src/Sight.cpp:888 +#: src\Sight.cpp:909 src\Sight.cpp.bak:910 msgid "\n" "Calculated angle between Moon and " msgstr "" -#: src/Sight.cpp:890 +#: src\Sight.cpp:911 src\Sight.cpp.bak:912 #, c-format msgid "\n" "Error from measurement: %.4f" msgstr "" -#: src/Sight.cpp:894 +#: src\Sight.cpp:915 src\Sight.cpp.bak:916 msgid "\n" "Moon takes 28 days to orbit, one degree of error takes 6720 seconds" msgstr "" -#: src/Sight.cpp:895 +#: src\Sight.cpp:916 src\Sight.cpp.bak:917 #, c-format msgid "\n" "Time correction %.4f seconds" msgstr "" -#: src/Sight.cpp:1099 +#: src\Sight.cpp:1120 src\Sight.cpp.bak:1121 msgid "Building bearing Sight Positions" msgstr "" -#: src/SightDialog.cpp:172 +#: src\SightDialog.cpp:184 msgid "Measurement certainty likely set to small, sight may not appear " msgstr "" -#: src/SightDialog.cpp:173 src/SightDialog.cpp:256 +#: src\SightDialog.cpp:185 src\SightDialog.cpp:279 msgid "Warning" msgstr "" -#: src/SightDialog.cpp:255 +#: src\SightDialog.cpp:278 msgid "Lunar shot will be invalid taking distance from moon to itself" msgstr "" -#: src/celestial_navigation_pi.cpp:90 -msgid "Failed to load file:\n" -msgstr "" - -#: src/celestial_navigation_pi.cpp:91 -msgid "\n" -"Magnetic data will not be available for the celestial navigation plugin." -msgstr "" - -#: src/celestial_navigation_pi.cpp:92 -msgid "OpenCPN Alert" +#: src\celestial_navigation_pi.cpp:179 +msgid "open error" msgstr "" -#: src/celestial_navigation_pi.cpp:157 -msgid "Celestial Navigation PlugIn for OpenCPN" +#: src\celestial_navigation_pi.cpp:180 +msgid "corrupt record" msgstr "" -#: src/celestial_navigation_pi.cpp:162 -msgid "Celestial Navigation PlugIn for OpenCPN.\n" -"Implements nautical almanac for sun, moon, planets,\n" -"and various navigational stars.\n" -"Compute position fix from celestial measurements." +#: src\celestial_navigation_pi.cpp:181 +msgid "too many models" msgstr "" -#: src/FixDialog.cpp:189 -msgid "Shifted sights are not used to compute a fix, determine fix visually instead.\n" +#: src\celestial_navigation_pi.cpp:184 +msgid "Magnetic data will not be available for the celestial navigation plugin." msgstr "" -#: src/FixDialog.cpp:190 -msgid "Fix Position" -msgstr "" - -#: src/FixDialog.cpp:335 src/FixDialog.cpp:336 src/FixDialog.cpp:337 -msgid " N/A " +#: src\celestial_navigation_pi.cpp:185 +msgid "OpenCPN Alert" msgstr "" diff --git a/po/fi_FI.po b/po/fi_FI.po index bf15085..544dee6 100644 --- a/po/fi_FI.po +++ b/po/fi_FI.po @@ -2,404 +2,468 @@ msgid "" msgstr "" "Project-Id-Version: opencpn\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-02-28 14:10-0300\n" -"PO-Revision-Date: 2018-03-03 08:23-0500\n" -"Last-Translator: nohal \n" +"POT-Creation-Date: 2021-10-27 22:15+0200\n" +"PO-Revision-Date: 2023-10-08 20:19\n" +"Last-Translator: \n" "Language-Team: Finnish\n" "Language: fi_FI\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -"X-Generator: crowdin.com\n" "X-Crowdin-Project: opencpn\n" +"X-Crowdin-Project-ID: 49843\n" "X-Crowdin-Language: fi\n" "X-Crowdin-File: /plugins/celestial_navigation_pi/po/celestial_navigation_pi.pot\n" +"X-Crowdin-File-ID: 108\n" -#: src/CelestialNavigationDialog.cpp:123 src/CelestialNavigationUI.cpp:132 +#: src\CelestialNavigationDialog-2.3.5.1-no-android.cpp:149 +#: src\CelestialNavigationDialog-2.3.5.2-android.cpp:150 +#: src\CelestialNavigationDialog-partial-android.cpp:149 +#: src\CelestialNavigationDialog.cpp:150 src\CelestialNavigationUI.cpp:137 msgid "Type" msgstr "Tyyppi" -#: src/CelestialNavigationDialog.cpp:124 +#: src\CelestialNavigationDialog-2.3.5.1-no-android.cpp:150 +#: src\CelestialNavigationDialog-2.3.5.2-android.cpp:151 +#: src\CelestialNavigationDialog-partial-android.cpp:150 +#: src\CelestialNavigationDialog.cpp:151 msgid "Body" msgstr "Runko" -#: src/CelestialNavigationDialog.cpp:125 -msgid "Time (UTC)" +#: src\CelestialNavigationDialog-2.3.5.1-no-android.cpp:151 +#: src\CelestialNavigationDialog-2.3.5.2-android.cpp:152 +#: src\CelestialNavigationDialog-partial-android.cpp:151 +#: src\CelestialNavigationDialog.cpp:152 src\CelestialNavigationUI.cpp:328 +msgid "Time (UT)" msgstr "Aika (UTC)" -#: src/CelestialNavigationDialog.cpp:126 src/CelestialNavigationUI.cpp:179 +#: src\CelestialNavigationDialog-2.3.5.1-no-android.cpp:152 +#: src\CelestialNavigationDialog-2.3.5.2-android.cpp:153 +#: src\CelestialNavigationDialog-partial-android.cpp:152 +#: src\CelestialNavigationDialog.cpp:153 src\CelestialNavigationUI.cpp:184 msgid "Measurement" msgstr "Mittaus" -#: src/CelestialNavigationDialog.cpp:127 src/CelestialNavigationUI.cpp:376 +#: src\CelestialNavigationDialog-2.3.5.1-no-android.cpp:153 +#: src\CelestialNavigationDialog-2.3.5.2-android.cpp:154 +#: src\CelestialNavigationDialog-partial-android.cpp:153 +#: src\CelestialNavigationDialog.cpp:154 src\CelestialNavigationUI.cpp:381 msgid "Color" msgstr "Väri" -#: src/CelestialNavigationDialog.cpp:193 -msgid "Failed to load file." -msgstr "Tiedoston lataus epäonnistui." - -#: src/CelestialNavigationDialog.cpp:198 +#: src\CelestialNavigationDialog-2.3.5.1-no-android.cpp:266 +#: src\CelestialNavigationDialog-2.3.5.2-android.cpp:272 +#: src\CelestialNavigationDialog-partial-android.cpp:266 +#: src\CelestialNavigationDialog.cpp:272 src\celestial_navigation_pi.cpp:177 +msgid "Failed to load file: " +msgstr "Tiedoston lataus epäonnistui: " + +#: src\CelestialNavigationDialog-2.3.5.1-no-android.cpp:271 +#: src\CelestialNavigationDialog-2.3.5.2-android.cpp:277 +#: src\CelestialNavigationDialog-partial-android.cpp:271 +#: src\CelestialNavigationDialog.cpp:277 msgid "Invalid xml file" msgstr "Virheellinen xml-tiedosto" -#: src/CelestialNavigationDialog.cpp:250 +#: src\CelestialNavigationDialog-2.3.5.1-no-android.cpp:323 +#: src\CelestialNavigationDialog-2.3.5.2-android.cpp:329 +#: src\CelestialNavigationDialog-partial-android.cpp:323 +#: src\CelestialNavigationDialog.cpp:329 msgid "Unrecognized xml node" msgstr "Tuntematon xml-haara" -#: src/CelestialNavigationDialog.cpp:260 -msgid "Weather Routing" -msgstr "Sää reititys" +#: src\CelestialNavigationDialog-2.3.5.1-no-android.cpp:332 +#: src\CelestialNavigationDialog-2.3.5.1-no-android.cpp:392 +#: src\CelestialNavigationDialog-2.3.5.1-no-android.cpp:532 +#: src\CelestialNavigationDialog-2.3.5.2-android.cpp:338 +#: src\CelestialNavigationDialog-2.3.5.2-android.cpp:398 +#: src\CelestialNavigationDialog-2.3.5.2-android.cpp:538 +#: src\CelestialNavigationDialog-partial-android.cpp:332 +#: src\CelestialNavigationDialog-partial-android.cpp:392 +#: src\CelestialNavigationDialog-partial-android.cpp:532 +#: src\CelestialNavigationDialog.cpp:338 src\CelestialNavigationDialog.cpp:398 +#: src\CelestialNavigationDialog.cpp:538 src\Sight.cpp:1120 +#: src\Sight.cpp.bak:1121 src\celestial_navigation_pi.cpp:95 +#: src\celestial_navigation_pi.cpp:99 +msgid "Celestial Navigation" +msgstr "Tähtiteteellinen navigointi" -#: src/CelestialNavigationDialog.cpp:320 +#: src\CelestialNavigationDialog-2.3.5.1-no-android.cpp:391 +#: src\CelestialNavigationDialog-2.3.5.2-android.cpp:397 +#: src\CelestialNavigationDialog-partial-android.cpp:391 +#: src\CelestialNavigationDialog.cpp:397 msgid "Failed to save xml file: " msgstr "Tiedostoa ei voi tallentaa xml-muodossa: " -#: src/CelestialNavigationDialog.cpp:321 src/CelestialNavigationDialog.cpp:466 -#: src/Sight.cpp:1099 src/celestial_navigation_pi.cpp:99 -#: src/celestial_navigation_pi.cpp:152 -msgid "Celestial Navigation" -msgstr "Tähtiteteellinen navigointi" - -#: src/CelestialNavigationDialog.cpp:351 +#: src\CelestialNavigationDialog-2.3.5.1-no-android.cpp:424 +#: src\CelestialNavigationDialog-2.3.5.2-android.cpp:430 +#: src\CelestialNavigationDialog-partial-android.cpp:424 +#: src\CelestialNavigationDialog.cpp:430 msgid "Time Correction" msgstr "Ajan korjaus" -#: src/CelestialNavigationDialog.cpp:409 +#: src\CelestialNavigationDialog-2.3.5.1-no-android.cpp:473 +#: src\CelestialNavigationDialog-2.3.5.2-android.cpp:479 +#: src\CelestialNavigationDialog-partial-android.cpp:473 +#: src\CelestialNavigationDialog.cpp:479 msgid "Sun" msgstr "Aurinko" -#: src/CelestialNavigationDialog.cpp:465 +#: src\CelestialNavigationDialog-2.3.5.1-no-android.cpp:531 +#: src\CelestialNavigationDialog-2.3.5.2-android.cpp:537 +#: src\CelestialNavigationDialog-partial-android.cpp:531 +#: src\CelestialNavigationDialog.cpp:537 msgid "Are you sure you want to delete all sights?" msgstr "Oletko varma, että haluat poistaa kaikki suuntimat?" -#: src/CelestialNavigationDialog.cpp:510 +#: src\CelestialNavigationDialog-2.3.5.1-no-android.cpp:582 +#: src\CelestialNavigationDialog-2.3.5.2-android.cpp:588 +#: src\CelestialNavigationDialog-partial-android.cpp:582 +#: src\CelestialNavigationDialog.cpp:588 msgid "Celestial_Navigation_Information.html" msgstr "Tähtitieteellisen_Navigoinin_Informaatio.html" -#: src/CelestialNavigationDialog.cpp:516 -msgid "Show" -msgstr "Näytä" - -#: src/CelestialNavigationDialog.cpp:516 src/CelestialNavigationUI.cpp:58 +#: src\CelestialNavigationDialog-2.3.5.1-no-android.cpp:589 +#: src\CelestialNavigationDialog-2.3.5.2-android.cpp:595 +#: src\CelestialNavigationDialog-partial-android.cpp:589 +#: src\CelestialNavigationDialog.cpp:595 src\CelestialNavigationUI.cpp:55 msgid "Hide" msgstr "Piilota" -#: src/CelestialNavigationUI.cpp:40 +#: src\CelestialNavigationDialog-2.3.5.1-no-android.cpp:589 +#: src\CelestialNavigationDialog-2.3.5.2-android.cpp:595 +#: src\CelestialNavigationDialog-partial-android.cpp:589 +#: src\CelestialNavigationDialog.cpp:595 +msgid "Show" +msgstr "Näytä" + +#: src\CelestialNavigationUI.cpp:40 msgid "New" msgstr "Uusi" -#: src/CelestialNavigationUI.cpp:43 -msgid "Edit" -msgstr "Muokkaa" - -#: src/CelestialNavigationUI.cpp:46 -msgid "Delete" -msgstr "Poista" - -#: src/CelestialNavigationUI.cpp:49 -msgid "Delete All" -msgstr "Poista kaikki" - -#: src/CelestialNavigationUI.cpp:52 src/CelestialNavigationUI.h:281 +#: src\CelestialNavigationUI.cpp:43 src\CelestialNavigationUI.h:286 msgid "Fix" msgstr "Fix" -#: src/CelestialNavigationUI.cpp:55 +#: src\CelestialNavigationUI.cpp:46 +msgid "Duplicate" +msgstr "Luo kopio" + +#: src\CelestialNavigationUI.cpp:49 msgid "Clock Offset" msgstr "Kellon siirros" -#: src/CelestialNavigationUI.cpp:61 +#: src\CelestialNavigationUI.cpp:52 +msgid "Edit" +msgstr "Muokkaa" + +#: src\CelestialNavigationUI.cpp:58 +msgid "Delete" +msgstr "Poista" + +#: src\CelestialNavigationUI.cpp:61 msgid "Information" msgstr "Informaatiota" -#: src/CelestialNavigationUI.cpp:136 src/CelestialNavigationUI.cpp:667 -#: src/Sight.h:49 +#: src\CelestialNavigationUI.cpp:64 +msgid "Delete All" +msgstr "Poista kaikki" + +#: src\CelestialNavigationUI.cpp:141 src\CelestialNavigationUI.cpp:674 +#: src\Sight.h:49 msgid "Altitude" msgstr "Korkeus" -#: src/CelestialNavigationUI.cpp:136 src/CelestialNavigationUI.cpp:677 -#: src/Sight.h:49 +#: src\CelestialNavigationUI.cpp:141 src\CelestialNavigationUI.cpp:683 +#: src\Sight.h:49 msgid "Azimuth" msgstr "Suuntakulma" -#: src/CelestialNavigationUI.cpp:136 src/Sight.h:49 +#: src\CelestialNavigationUI.cpp:141 src\Sight.h:49 msgid "Lunar" msgstr "Kuun" -#: src/CelestialNavigationUI.cpp:142 +#: src\CelestialNavigationUI.cpp:147 msgid "Magnetic Azimuth" msgstr "Magneettinen suuntakulma" -#: src/CelestialNavigationUI.cpp:145 +#: src\CelestialNavigationUI.cpp:150 msgid "Celestial Body" msgstr "Taivaankappale" -#: src/CelestialNavigationUI.cpp:154 +#: src\CelestialNavigationUI.cpp:159 msgid "Find" msgstr "Etsi" -#: src/CelestialNavigationUI.cpp:157 +#: src\CelestialNavigationUI.cpp:162 msgid "Limb" msgstr "Astekaari" -#: src/CelestialNavigationUI.cpp:161 -msgid "Lower" -msgstr "Alempi" - -#: src/CelestialNavigationUI.cpp:161 +#: src\CelestialNavigationUI.cpp:166 msgid "Center" msgstr "Keskitetty" -#: src/CelestialNavigationUI.cpp:161 +#: src\CelestialNavigationUI.cpp:166 +msgid "Lower" +msgstr "Alempi" + +#: src\CelestialNavigationUI.cpp:166 msgid "Upper" msgstr "Ylempi" -#: src/CelestialNavigationUI.cpp:186 src/CelestialNavigationUI.cpp:193 -#: src/CelestialNavigationUI.cpp:223 src/CelestialNavigationUI.cpp:230 +#: src\CelestialNavigationUI.cpp:191 src\CelestialNavigationUI.cpp:198 +#: src\CelestialNavigationUI.cpp:228 src\CelestialNavigationUI.cpp:235 msgid "0" msgstr "0" -#: src/CelestialNavigationUI.cpp:189 src/CelestialNavigationUI.cpp:348 -#: src/CelestialNavigationUI.cpp:598 +#: src\CelestialNavigationUI.cpp:194 src\CelestialNavigationUI.cpp:353 +#: src\CelestialNavigationUI.cpp:605 msgid "Degrees" msgstr "Astetta" -#: src/CelestialNavigationUI.cpp:196 src/CelestialNavigationUI.cpp:278 -#: src/CelestialNavigationUI.cpp:439 +#: src\CelestialNavigationUI.cpp:201 src\CelestialNavigationUI.cpp:283 +#: src\CelestialNavigationUI.cpp:444 msgid "Minutes" msgstr "Minuuttia" -#: src/CelestialNavigationUI.cpp:200 +#: src\CelestialNavigationUI.cpp:205 msgid "10" msgstr "10" -#: src/CelestialNavigationUI.cpp:203 +#: src\CelestialNavigationUI.cpp:208 msgid "Minutes Certainty" msgstr "Minuutin tarkkuudella" -#: src/CelestialNavigationUI.cpp:217 +#: src\CelestialNavigationUI.cpp:222 msgid "Lunar Altitude" msgstr "Kuun korkeus" -#: src/CelestialNavigationUI.cpp:226 +#: src\CelestialNavigationUI.cpp:231 msgid "Body Altitude" msgstr "Runkokorkeus" -#: src/CelestialNavigationUI.cpp:243 +#: src\CelestialNavigationUI.cpp:248 msgid "Sight" msgstr "Suunta" -#: src/CelestialNavigationUI.cpp:271 +#: src\CelestialNavigationUI.cpp:276 msgid "Hours" msgstr "Tunnit" -#: src/CelestialNavigationUI.cpp:285 src/CelestialNavigationUI.cpp:303 -#: src/CelestialNavigationUI.cpp:860 +#: src\CelestialNavigationUI.cpp:290 src\CelestialNavigationUI.cpp:308 +#: src\CelestialNavigationUI.cpp:869 msgid "Seconds" msgstr "Sekunnit" -#: src/CelestialNavigationUI.cpp:293 +#: src\CelestialNavigationUI.cpp:298 msgid "Certainty" msgstr "Tarkkuus" -#: src/CelestialNavigationUI.cpp:323 -msgid "Time" -msgstr "Aika" - -#: src/CelestialNavigationUI.cpp:330 src/CelestialNavigationUI.cpp:580 +#: src\CelestialNavigationUI.cpp:335 src\CelestialNavigationUI.cpp:587 msgid "Distance" msgstr "Etäisyys" -#: src/CelestialNavigationUI.cpp:337 src/CelestialNavigationUI.cpp:587 +#: src\CelestialNavigationUI.cpp:342 src\CelestialNavigationUI.cpp:594 msgid "Nm" msgstr "Nm" -#: src/CelestialNavigationUI.cpp:341 src/CelestialNavigationUI.cpp:591 +#: src\CelestialNavigationUI.cpp:346 src\CelestialNavigationUI.cpp:598 msgid "Bearing" msgstr "Suuntima" -#: src/CelestialNavigationUI.cpp:352 src/CelestialNavigationUI.cpp:602 +#: src\CelestialNavigationUI.cpp:357 src\CelestialNavigationUI.cpp:609 msgid "Magnetic Bearing" msgstr "Mangneettinen suuntima" -#: src/CelestialNavigationUI.cpp:359 +#: src\CelestialNavigationUI.cpp:364 msgid "DR Shift" msgstr "DR siirtymä" -#: src/CelestialNavigationUI.cpp:366 +#: src\CelestialNavigationUI.cpp:371 msgid "Transparency" msgstr "Läpinäkyvyys" -#: src/CelestialNavigationUI.cpp:387 +#: src\CelestialNavigationUI.cpp:392 msgid "Config" msgstr "Kokoonpano" -#: src/CelestialNavigationUI.cpp:399 +#: src\CelestialNavigationUI.cpp:404 msgid "Eye Height" msgstr "Silmän korkeus" -#: src/CelestialNavigationUI.cpp:403 +#: src\CelestialNavigationUI.cpp:408 msgid "2" msgstr "2" -#: src/CelestialNavigationUI.cpp:406 +#: src\CelestialNavigationUI.cpp:411 msgid "Meters" msgstr "Metriä" -#: src/CelestialNavigationUI.cpp:410 +#: src\CelestialNavigationUI.cpp:415 msgid "Temperature" msgstr "Lämpötila" -#: src/CelestialNavigationUI.cpp:417 +#: src\CelestialNavigationUI.cpp:422 msgid "Celcius" msgstr "Celsius" -#: src/CelestialNavigationUI.cpp:421 +#: src\CelestialNavigationUI.cpp:426 msgid "Pressure" msgstr "Paine" -#: src/CelestialNavigationUI.cpp:428 +#: src\CelestialNavigationUI.cpp:433 msgid "MilliBars" msgstr "Millibaaria" -#: src/CelestialNavigationUI.cpp:432 +#: src\CelestialNavigationUI.cpp:437 msgid "Index Error" msgstr "Indeksivirhe" -#: src/CelestialNavigationUI.cpp:446 +#: src\CelestialNavigationUI.cpp:451 msgid "Set As Defaults" msgstr "Aseta oletuksiksi" -#: src/CelestialNavigationUI.cpp:453 +#: src\CelestialNavigationUI.cpp:458 msgid "Parameters" msgstr "Parametrit" -#: src/CelestialNavigationUI.cpp:469 +#: src\CelestialNavigationUI.cpp:474 msgid "Calculations" msgstr "Laskelmat" -#: src/CelestialNavigationUI.cpp:571 +#: src\CelestialNavigationUI.cpp:578 msgid "Shift all visible Sights" msgstr "Siirrä kaikki näkyvät näkymät" -#: src/CelestialNavigationUI.cpp:649 src/CelestialNavigationUI.cpp:760 +#: src\CelestialNavigationUI.cpp:656 src\CelestialNavigationUI.cpp:769 msgid "Latitude" msgstr "Leveyspiiri" -#: src/CelestialNavigationUI.cpp:658 src/CelestialNavigationUI.cpp:768 +#: src\CelestialNavigationUI.cpp:665 src\CelestialNavigationUI.cpp:777 msgid "Longitude" msgstr "Pituuspiiri" -#: src/CelestialNavigationUI.cpp:669 src/CelestialNavigationUI.cpp:679 -msgid "MyLabel" -msgstr "OmaOtsake" +#: src\CelestialNavigationUI.cpp:691 +msgid "Boat Position" +msgstr "Veneen sijainti" -#: src/CelestialNavigationUI.cpp:686 -msgid "Done" -msgstr "Tehty" - -#: src/CelestialNavigationUI.cpp:689 +#: src\CelestialNavigationUI.cpp:695 msgid "Magnetic" msgstr "Magneettinen" -#: src/CelestialNavigationUI.cpp:753 +#: src\CelestialNavigationUI.cpp:698 +msgid "Done" +msgstr "Tehty" + +#: src\CelestialNavigationUI.cpp:762 msgid "Fix From Visible Sights" msgstr "Fix näkyvissä olevista suuntimista" -#: src/CelestialNavigationUI.cpp:764 +#: src\CelestialNavigationUI.cpp:773 msgid " N/A " msgstr " N/A " -#: src/CelestialNavigationUI.cpp:772 +#: src\CelestialNavigationUI.cpp:781 msgid " N/A " msgstr " N/A " -#: src/CelestialNavigationUI.cpp:776 +#: src\CelestialNavigationUI.cpp:785 msgid "Error" msgstr "Virhe" -#: src/CelestialNavigationUI.cpp:780 +#: src\CelestialNavigationUI.cpp:789 msgid " N/A " msgstr " N/A " -#: src/CelestialNavigationUI.cpp:787 src/CelestialNavigationUI.cpp:794 +#: src\CelestialNavigationUI.cpp:796 src\CelestialNavigationUI.cpp:803 msgid "Initial" msgstr "Alustava" -#: src/CelestialNavigationUI.cpp:801 +#: src\CelestialNavigationUI.cpp:810 msgid "Alg" msgstr "Alg" -#: src/CelestialNavigationUI.cpp:806 +#: src\CelestialNavigationUI.cpp:815 msgid "Plane" msgstr "Taso" -#: src/CelestialNavigationUI.cpp:807 +#: src\CelestialNavigationUI.cpp:816 msgid "Sphere" msgstr "sfääri" -#: src/CelestialNavigationUI.cpp:808 +#: src\CelestialNavigationUI.cpp:817 msgid "Cone" msgstr "Kartio" -#: src/CelestialNavigationUI.cpp:809 +#: src\CelestialNavigationUI.cpp:818 msgid "Cone 2" msgstr "Kartio 2" -#: src/CelestialNavigationUI.cpp:813 +#: src\CelestialNavigationUI.cpp:822 msgid "Go" msgstr "Aloita" -#: src/CelestialNavigationUI.cpp:850 src/CelestialNavigationUI.h:303 +#: src\CelestialNavigationUI.cpp:859 src\CelestialNavigationUI.h:308 msgid "Clock Correction" msgstr "Kellon korjaus" -#: src/CelestialNavigationUI.h:78 +#: src\CelestialNavigationUI.h:82 msgid "Celestial Navigation Sights" -msgstr "Tähtitieteelliset navigointi suunnat" +msgstr "Tähtitieteellisen navigoinnin kohteet" -#: src/CelestialNavigationUI.h:169 +#: src\CelestialNavigationUI.h:173 msgid "Sight Properties" msgstr "Suuntien ominaisuudet" -#: src/CelestialNavigationUI.h:200 +#: src\CelestialNavigationUI.h:204 msgid "Dead Reckoning shift" msgstr "Merkintälasku siirto" -#: src/CelestialNavigationUI.h:227 +#: src\CelestialNavigationUI.h:232 msgid "Find Celestial Body" msgstr "Etsi taivaankappale" -#: src/Sight.cpp:160 +#: src\FixDialog.cpp:192 +msgid "Shifted sights are not used to compute a fix, determine fix visually instead.\n" +msgstr "Siirrettyjä näkymiä ei käytetä fix:in laskentaan, sensijaan määritä fix näkemäsi mukaan.\n" + +#: src\FixDialog.cpp:193 +msgid "Fix Position" +msgstr "Fix sijainti" + +#: src\FixDialog.cpp:338 src\FixDialog.cpp:339 src\FixDialog.cpp:340 +msgid " N/A " +msgstr " N/A " + +#: src\Sight.cpp:172 src\Sight.cpp.bak:173 msgid "Astrolab failed, data unavailable:\n" msgstr "Astrolab epäonnistui, tietoja ei ole käytettävissä:\n" -#: src/Sight.cpp:161 +#: src\Sight.cpp:173 src\Sight.cpp.bak:174 msgid "\n" "Did you forget to install vsop87d.txt?\n" msgstr "\n" "Unohditko asentaa vsop87d.txt?\n" -#: src/Sight.cpp:162 +#: src\Sight.cpp:174 src\Sight.cpp.bak:175 msgid "The plugin will not work correctly" msgstr "Lisäosa ei toimi oikein" -#: src/Sight.cpp:163 +#: src\Sight.cpp:175 src\Sight.cpp.bak:176 msgid "Failure Alert" msgstr "Vika hälytys" -#: src/Sight.cpp:474 +#: src\Sight.cpp:495 src\Sight.cpp.bak:496 #, c-format msgid "Applying clock correction of %d seconds\n\n" msgstr "Käännetään kelloa %d sekunttia\n\n" -#: src/Sight.cpp:536 +#: src\Sight.cpp:557 src\Sight.cpp.bak:558 msgid "Almanac Data For " msgstr "Almanakka tiedot " -#: src/Sight.cpp:537 +#: src\Sight.cpp:558 src\Sight.cpp.bak:559 #, c-format msgid "\n" "Geographical Position (lat, lon) = %.4f %.4f\n" @@ -418,16 +482,19 @@ msgstr "\n" "SD = %.1f'\n" "HP = %.1f'\n\n" -#: src/Sight.cpp:552 src/Sight.cpp:690 +#: src\Sight.cpp:573 src\Sight.cpp:711 src\Sight.cpp.bak:574 +#: src\Sight.cpp.bak:712 msgid "Formulas used to calculate sight\n\n" msgstr "Kaavoja käytetään laskettaessa suuntimia\n\n" -#: src/Sight.cpp:556 src/Sight.cpp:694 +#: src\Sight.cpp:577 src\Sight.cpp:715 src\Sight.cpp.bak:578 +#: src\Sight.cpp.bak:716 #, c-format msgid "Index Error is %.4f degrees\n\n" msgstr "Indeksivirhe on %.4f astetta\n\n" -#: src/Sight.cpp:561 src/Sight.cpp:699 +#: src\Sight.cpp:582 src\Sight.cpp:720 src\Sight.cpp.bak:583 +#: src\Sight.cpp.bak:721 #, c-format msgid "Eye Height is %.4f meters\n" "Height Correction Degrees = 1.758*sqrt(%.4f) / 60.0\n" @@ -436,7 +503,8 @@ msgstr "Silmän korkeus on %.4f metriä\n" "Korkeus korjaus asteina = 1.758*sqrt(%.4f) / 60.0\n" "Korkeus korjaus asteina = %.4f\n" -#: src/Sight.cpp:568 +#: src\Sight.cpp:589 src\Sight.cpp:799 src\Sight.cpp.bak:590 +#: src\Sight.cpp.bak:800 #, c-format msgid "\n" "Apparent Altitude (Ha)\n" @@ -449,7 +517,8 @@ msgstr "\n" "Suhteellinen korkeus = %.4f - %.4f - %.4f\n" "Suhteellinen korkeus = %.4f\n" -#: src/Sight.cpp:586 src/Sight.cpp:789 +#: src\Sight.cpp:607 src\Sight.cpp:810 src\Sight.cpp.bak:608 +#: src\Sight.cpp.bak:811 #, c-format msgid "\n" "Refraction Correction\n" @@ -462,7 +531,8 @@ msgstr "\n" "x = tan (pii/180 *%.4f + 4.848e-2*(Pi/180) / (tan(Pi/180*%.4f) +.028))\n" "x = %.4f\n" -#: src/Sight.cpp:591 src/Sight.cpp:794 +#: src\Sight.cpp:612 src\Sight.cpp:815 src\Sight.cpp.bak:613 +#: src\Sight.cpp.bak:816 #, c-format msgid "RefractionCorrection = .267 * Pressure / (x*(Temperature + 273.15)) / 60.0\n" "RefractionCorrection = .267 * %.4f / (x*(%.4f + 273.15)) / 60.0\n" @@ -471,7 +541,8 @@ msgstr "Taittokorjaus =.267 * paine / (x * (lämpötila + 273.15)) / 60.0\n" "Taittokorjaus = .267 * %.4f / (x * (%.4f + 273.15)) / 60.0\n" "Taittokorjaus = %.4f\n" -#: src/Sight.cpp:606 src/Sight.cpp:808 +#: src\Sight.cpp:627 src\Sight.cpp:829 src\Sight.cpp.bak:628 +#: src\Sight.cpp.bak:830 #, c-format msgid "\n" "Sun selected, Limb Correction\n" @@ -480,7 +551,8 @@ msgstr "\n" "Aurinko valittu, astekaaren korjaus\n" "ra = %.4f, lc = 0.266564/ra = %.4f\n" -#: src/Sight.cpp:616 src/Sight.cpp:732 +#: src\Sight.cpp:637 src\Sight.cpp:753 src\Sight.cpp.bak:638 +#: src\Sight.cpp.bak:754 #, c-format msgid "\n" "Moon selected, Limb Correction\n" @@ -493,22 +565,26 @@ msgstr "\n" "lc = 180/pii * asin (pii/180 * SD)\n" "lc = %.4f\n" -#: src/Sight.cpp:626 src/Sight.cpp:741 src/Sight.cpp:816 +#: src\Sight.cpp:647 src\Sight.cpp:762 src\Sight.cpp:837 src\Sight.cpp.bak:648 +#: src\Sight.cpp.bak:763 src\Sight.cpp.bak:838 msgid "Upper Limb" msgstr "Yläreuna" -#: src/Sight.cpp:629 src/Sight.cpp:744 src/Sight.cpp:819 +#: src\Sight.cpp:650 src\Sight.cpp:765 src\Sight.cpp:840 src\Sight.cpp.bak:651 +#: src\Sight.cpp.bak:766 src\Sight.cpp.bak:841 msgid "Lower Limb" msgstr "Alareuna" -#: src/Sight.cpp:632 src/Sight.cpp:822 +#: src\Sight.cpp:653 src\Sight.cpp:843 src\Sight.cpp.bak:654 +#: src\Sight.cpp.bak:844 #, c-format msgid "\n" "LimbCorrection = %.4f\n" msgstr "\n" "Reunakorjaus = %.4f\n" -#: src/Sight.cpp:636 src/Sight.cpp:826 +#: src\Sight.cpp:657 src\Sight.cpp:847 src\Sight.cpp.bak:658 +#: src\Sight.cpp.bak:848 #, c-format msgid "\n" "Corrected Altitude\n" @@ -521,7 +597,8 @@ msgstr "\n" "Korjattukorkeus = %.4f - %.4f - %.4f\n" "Korjattukorkeus = %.4f\n" -#: src/Sight.cpp:650 src/Sight.cpp:840 +#: src\Sight.cpp:671 src\Sight.cpp:861 src\Sight.cpp.bak:672 +#: src\Sight.cpp.bak:862 #, c-format msgid "\n" "Sun selected, parallax correction\n" @@ -530,7 +607,8 @@ msgstr "\n" "Aurinko on valittu, parallaksi korjausn\n" "rad = %.4f, HP = 0.002442/rad = %.4f\n" -#: src/Sight.cpp:659 src/Sight.cpp:764 +#: src\Sight.cpp:680 src\Sight.cpp:785 src\Sight.cpp.bak:681 +#: src\Sight.cpp.bak:786 #, c-format msgid "\n" "Moon selected, parallax correction\n" @@ -539,7 +617,8 @@ msgstr "\n" "Kuu on valittu, parallaksi korjaus\n" "HP = %.4f\n" -#: src/Sight.cpp:665 src/Sight.cpp:846 +#: src\Sight.cpp:686 src\Sight.cpp:867 src\Sight.cpp.bak:687 +#: src\Sight.cpp.bak:868 #, c-format msgid "ParallaxCorrection = -180/Pi * asin( sin(Pi/180 * HP ) * cos(Pi/180 * CorrectedAltitude))\n" "ParallaxCorrection = -180/Pi * asin( sin(Pi/180 * %.4f ) * cos(Pi/180 * %.4f))\n" @@ -548,7 +627,7 @@ msgstr "Parallaksikorjaus = -180/Pi * asin( sin(Pi/180 * HP ) * cos(Pi/180 * Kor "Parallaksikorjaus = -180/Pi * asin( sin(Pi/180 * %.4f ) * cos(Pi/180 * %.4f))\n" "Parallaksikorjaus = %.4f\n" -#: src/Sight.cpp:672 +#: src\Sight.cpp:693 src\Sight.cpp.bak:694 #, c-format msgid "\n" "Observed Altitude (Ho)\n" @@ -561,12 +640,12 @@ msgstr "\n" "Havaintokorkeus = %.4f - %.4f\n" "Havaintokorkeus = %.4f\n" -#: src/Sight.cpp:706 +#: src\Sight.cpp:727 src\Sight.cpp.bak:728 #, c-format msgid "\n" "Apparent Moon Altitude (Ha)\n" "ApparentAltitudeMoon = MeasurementMoon - IndexCorrection - EyeHeightCorrection\n" -" ApparentAltitudeMoon = %.4f - %.4f - %.4f\n" +"ApparentAltitudeMoon = %.4f - %.4f - %.4f\n" "ApparentAltitudeMoon = %.4f\n" msgstr "\n" "Näennäinen kuun korkeus (Ha)\n" @@ -574,7 +653,7 @@ msgstr "\n" " ApparentAltitudeMoon = %.4f - %.4f - %.4f\n" "ApparentAltitudeMoon = %.4f\n" -#: src/Sight.cpp:717 +#: src\Sight.cpp:738 src\Sight.cpp.bak:739 #, c-format msgid "\n" "Refraction Correction\n" @@ -587,7 +666,7 @@ msgstr "\n" "x = tan (pii/180 *%.4f + 4.848e-2*(Pi/180) / (tan(Pi/180*%.4f) +.028))\n" "x = %.4f\n" -#: src/Sight.cpp:722 +#: src\Sight.cpp:743 src\Sight.cpp.bak:744 #, c-format msgid "RefractionCorrectionMoon = .267 * Pressure / (x*(Temperature + 273.15)) / 60.0\n" "RefractionCorrectionMoon = .267 * %.4f / (x*(%.4f + 273.15)) / 60.0\n" @@ -596,14 +675,15 @@ msgstr "Taittokorjaus =.267 * paine / (x * (lämpötila + 273.15)) / 60.0\n" "Taittokorjaus = .267 * %.4f / (x * (%.4f + 273.15)) / 60.0\n" "Taittokorjaus = %.4f\n" -#: src/Sight.cpp:747 src/Sight.cpp:750 +#: src\Sight.cpp:768 src\Sight.cpp:771 src\Sight.cpp.bak:769 +#: src\Sight.cpp.bak:772 #, c-format msgid "\n" "LimbCorrectionMoon = %.4f\n" msgstr "\n" "LimbCorrectionMoon = %.4f\n" -#: src/Sight.cpp:753 +#: src\Sight.cpp:774 src\Sight.cpp.bak:775 #, c-format msgid "\n" "Corrected Altitude\n" @@ -616,29 +696,16 @@ msgstr "\n" "CorrectedAltitudeMoon = %.4f - %.4f - %.4f\n" "CorrectedAltitudeMoon = %.4f\n" -#: src/Sight.cpp:768 +#: src\Sight.cpp:789 src\Sight.cpp.bak:790 #, c-format msgid "ParallaxCorrectionMoon = -180/Pi * asin( sin(Pi/180 * HP ) * cos(Pi/180 * CorrectedAltitude))\n" -" ParallaxCorrectionMoon = -180/Pi * asin( sin(Pi/180 * %.4f ) * cos(Pi/180 * %.4f))\n" +"ParallaxCorrectionMoon = -180/Pi * asin( sin(Pi/180 * %.4f ) * cos(Pi/180 * %.4f))\n" "ParallaxCorrectionMoon = %.4f\n" msgstr "ParallaxCorrectionMoon = -180/Pi * asin( sin(Pi/180 * HP ) * cos(Pi/180 * CorrectedAltitude))\n" -" ParallaxCorrectionMoon = -180/Pi * asin( sin(Pi/180 * %.4f ) * cos(Pi/180 * %.4f))\n" +"ParallaxCorrectionMoon = -180/Pi * asin( sin(Pi/180 * %.4f ) * cos(Pi/180 * %.4f))\n" "ParallaxCorrectionMoon = %.4f\n" -#: src/Sight.cpp:778 -#, c-format -msgid "\n" -"Apparent Altitude (Ha)\n" -"ApparentAltitude = Measurement - IndexCorrection - EyeHeightCorrection\n" -" ApparentAltitude = %.4f - %.4f - %.4f\n" -"ApparentAltitude = %.4f\n" -msgstr "\n" -"Suhteellinen korkeus (Ha) \n" -"Suhteellinen korkeus = mittaus - Indeksikorjaus - Silmänkorkeuskorjaus\n" -"Suhteellinen korkeus = %.4f - %.4f - %.4f\n" -"Suhteellinen korkeus = %.4f\n" - -#: src/Sight.cpp:857 +#: src\Sight.cpp:878 src\Sight.cpp.bak:879 #, c-format msgid "CorrectionsMoon = %.4f\n" "CorrectionsBody = %.4f\n" @@ -647,7 +714,7 @@ msgstr "CorrectionsMoon = %.4f\n" "CorrectionsBody = %.4f\n" "Corrections = abs(CorrectionsMoon - CorrectionsBody) = %.4f\n" -#: src/Sight.cpp:863 +#: src\Sight.cpp:884 src\Sight.cpp.bak:885 #, c-format msgid "CorrectedMeasurement = Measurement - Corrections - IndexCorrection\n" "CorrectedMeasurement = %.4f - %.4f - %.4f\n" @@ -656,85 +723,65 @@ msgstr "CorrectedMeasurement = Measurement - Corrections - IndexCorrection\n" "CorrectedMeasurement = %.4f - %.4f - %.4f\n" "CorrectedMeasurement = %.4f\n" -#: src/Sight.cpp:888 +#: src\Sight.cpp:909 src\Sight.cpp.bak:910 msgid "\n" "Calculated angle between Moon and " msgstr "\n" "Laskennallinen kulma kuusta ja " -#: src/Sight.cpp:890 +#: src\Sight.cpp:911 src\Sight.cpp.bak:912 #, c-format msgid "\n" "Error from measurement: %.4f" msgstr "\n" "Virhe mittauksessa: %.4f" -#: src/Sight.cpp:894 +#: src\Sight.cpp:915 src\Sight.cpp.bak:916 msgid "\n" "Moon takes 28 days to orbit, one degree of error takes 6720 seconds" msgstr "\n" "Kuun kierros kestää 28 päivää, yhden asteen virhe on 6720 sekunttia" -#: src/Sight.cpp:895 +#: src\Sight.cpp:916 src\Sight.cpp.bak:917 #, c-format msgid "\n" "Time correction %.4f seconds" msgstr "\n" "Ajan korjaus %.4f sekuntia" -#: src/Sight.cpp:1099 +#: src\Sight.cpp:1120 src\Sight.cpp.bak:1121 msgid "Building bearing Sight Positions" msgstr "Muodostetaan suuntimalinjojen sijainnit" -#: src/SightDialog.cpp:172 +#: src\SightDialog.cpp:184 msgid "Measurement certainty likely set to small, sight may not appear " msgstr "Mitta on luultavasti asetettu liian pieneksi, kohde ei tulle näkyviin " -#: src/SightDialog.cpp:173 src/SightDialog.cpp:256 +#: src\SightDialog.cpp:185 src\SightDialog.cpp:279 msgid "Warning" msgstr "Varoitus" -#: src/SightDialog.cpp:255 +#: src\SightDialog.cpp:278 msgid "Lunar shot will be invalid taking distance from moon to itself" msgstr "Kuunmittaus on virheellinen, jos otetaann etäisyys kuusta siihen itseensä" -#: src/celestial_navigation_pi.cpp:90 -msgid "Failed to load file:\n" -msgstr "Tiedoston lataus epäonnistui :\n" +#: src\celestial_navigation_pi.cpp:179 +msgid "open error" +msgstr "virhe tiedoston avauksessa" -#: src/celestial_navigation_pi.cpp:91 -msgid "\n" -"Magnetic data will not be available for the celestial navigation plugin." -msgstr "\n" -"Magneetisuustietoja ei ole käytettävissä tähtinavigointilisäosalle." +#: src\celestial_navigation_pi.cpp:180 +msgid "corrupt record" +msgstr "viallinen tietue" -#: src/celestial_navigation_pi.cpp:92 -msgid "OpenCPN Alert" -msgstr "OpenCPN-hälytys" +#: src\celestial_navigation_pi.cpp:181 +msgid "too many models" +msgstr "liian monta mallia" -#: src/celestial_navigation_pi.cpp:157 -msgid "Celestial Navigation PlugIn for OpenCPN" -msgstr "OpenCPN:n tähtitieteelisen navigoinin lisäosa" - -#: src/celestial_navigation_pi.cpp:162 -msgid "Celestial Navigation PlugIn for OpenCPN.\n" -"Implements nautical almanac for sun, moon, planets,\n" -"and various navigational stars.\n" -"Compute position fix from celestial measurements." -msgstr "OpenCPN:n tähtitieteelisen navigoinin lisäosa.\n" -"Toteuttaa merenkulkualmanakan aurinkoa, kuuta, planeettoja \n" -"ja tähtiä varten.\n" -"Laskee sijainnin fix:n tähtimittausten perusteella." - -#: src/FixDialog.cpp:189 -msgid "Shifted sights are not used to compute a fix, determine fix visually instead.\n" -msgstr "Siirrettyjä näkymiä ei käytetä fix:in laskentaan, sensijaan määritä fix näkemäsi mukaan.\n" - -#: src/FixDialog.cpp:190 -msgid "Fix Position" -msgstr "Fix sijainti" +#: src\celestial_navigation_pi.cpp:184 +msgid "Magnetic data will not be available for the celestial navigation plugin." +msgstr "Magneettiset tiedot eivät ole käytettävissä tähtitieteellisen navigoinnin lisäosassa." -#: src/FixDialog.cpp:335 src/FixDialog.cpp:336 src/FixDialog.cpp:337 -msgid " N/A " -msgstr " N/A " +#: src\celestial_navigation_pi.cpp:185 +msgid "OpenCPN Alert" +msgstr "OpenCPN-hälytys" diff --git a/po/fil_PH.po b/po/fil_PH.po index 70fd0f2..b7f1ca2 100644 --- a/po/fil_PH.po +++ b/po/fil_PH.po @@ -2,403 +2,467 @@ msgid "" msgstr "" "Project-Id-Version: opencpn\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-02-28 14:10-0300\n" -"PO-Revision-Date: 2018-03-03 08:23-0500\n" -"Last-Translator: nohal \n" +"POT-Creation-Date: 2021-10-27 22:15+0200\n" +"PO-Revision-Date: 2023-10-04 18:33\n" +"Last-Translator: \n" "Language-Team: Filipino\n" "Language: fil_PH\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n > 1);\n" -"X-Generator: crowdin.com\n" "X-Crowdin-Project: opencpn\n" +"X-Crowdin-Project-ID: 49843\n" "X-Crowdin-Language: fil\n" "X-Crowdin-File: /plugins/celestial_navigation_pi/po/celestial_navigation_pi.pot\n" +"X-Crowdin-File-ID: 108\n" -#: src/CelestialNavigationDialog.cpp:123 src/CelestialNavigationUI.cpp:132 +#: src\CelestialNavigationDialog-2.3.5.1-no-android.cpp:149 +#: src\CelestialNavigationDialog-2.3.5.2-android.cpp:150 +#: src\CelestialNavigationDialog-partial-android.cpp:149 +#: src\CelestialNavigationDialog.cpp:150 src\CelestialNavigationUI.cpp:137 msgid "Type" -msgstr "" +msgstr "Ang uri" -#: src/CelestialNavigationDialog.cpp:124 +#: src\CelestialNavigationDialog-2.3.5.1-no-android.cpp:150 +#: src\CelestialNavigationDialog-2.3.5.2-android.cpp:151 +#: src\CelestialNavigationDialog-partial-android.cpp:150 +#: src\CelestialNavigationDialog.cpp:151 msgid "Body" -msgstr "" +msgstr "Ang Katawan" -#: src/CelestialNavigationDialog.cpp:125 -msgid "Time (UTC)" +#: src\CelestialNavigationDialog-2.3.5.1-no-android.cpp:151 +#: src\CelestialNavigationDialog-2.3.5.2-android.cpp:152 +#: src\CelestialNavigationDialog-partial-android.cpp:151 +#: src\CelestialNavigationDialog.cpp:152 src\CelestialNavigationUI.cpp:328 +msgid "Time (UT)" msgstr "" -#: src/CelestialNavigationDialog.cpp:126 src/CelestialNavigationUI.cpp:179 +#: src\CelestialNavigationDialog-2.3.5.1-no-android.cpp:152 +#: src\CelestialNavigationDialog-2.3.5.2-android.cpp:153 +#: src\CelestialNavigationDialog-partial-android.cpp:152 +#: src\CelestialNavigationDialog.cpp:153 src\CelestialNavigationUI.cpp:184 msgid "Measurement" -msgstr "" +msgstr "Ang Pagsukat" -#: src/CelestialNavigationDialog.cpp:127 src/CelestialNavigationUI.cpp:376 +#: src\CelestialNavigationDialog-2.3.5.1-no-android.cpp:153 +#: src\CelestialNavigationDialog-2.3.5.2-android.cpp:154 +#: src\CelestialNavigationDialog-partial-android.cpp:153 +#: src\CelestialNavigationDialog.cpp:154 src\CelestialNavigationUI.cpp:381 msgid "Color" -msgstr "" +msgstr "Ang Kulay" -#: src/CelestialNavigationDialog.cpp:193 -msgid "Failed to load file." +#: src\CelestialNavigationDialog-2.3.5.1-no-android.cpp:266 +#: src\CelestialNavigationDialog-2.3.5.2-android.cpp:272 +#: src\CelestialNavigationDialog-partial-android.cpp:266 +#: src\CelestialNavigationDialog.cpp:272 src\celestial_navigation_pi.cpp:177 +msgid "Failed to load file: " msgstr "" -#: src/CelestialNavigationDialog.cpp:198 +#: src\CelestialNavigationDialog-2.3.5.1-no-android.cpp:271 +#: src\CelestialNavigationDialog-2.3.5.2-android.cpp:277 +#: src\CelestialNavigationDialog-partial-android.cpp:271 +#: src\CelestialNavigationDialog.cpp:277 msgid "Invalid xml file" -msgstr "" +msgstr "Imbalido ang xml payl" -#: src/CelestialNavigationDialog.cpp:250 +#: src\CelestialNavigationDialog-2.3.5.1-no-android.cpp:323 +#: src\CelestialNavigationDialog-2.3.5.2-android.cpp:329 +#: src\CelestialNavigationDialog-partial-android.cpp:323 +#: src\CelestialNavigationDialog.cpp:329 msgid "Unrecognized xml node" +msgstr "Hindi makilala na xml node" + +#: src\CelestialNavigationDialog-2.3.5.1-no-android.cpp:332 +#: src\CelestialNavigationDialog-2.3.5.1-no-android.cpp:392 +#: src\CelestialNavigationDialog-2.3.5.1-no-android.cpp:532 +#: src\CelestialNavigationDialog-2.3.5.2-android.cpp:338 +#: src\CelestialNavigationDialog-2.3.5.2-android.cpp:398 +#: src\CelestialNavigationDialog-2.3.5.2-android.cpp:538 +#: src\CelestialNavigationDialog-partial-android.cpp:332 +#: src\CelestialNavigationDialog-partial-android.cpp:392 +#: src\CelestialNavigationDialog-partial-android.cpp:532 +#: src\CelestialNavigationDialog.cpp:338 src\CelestialNavigationDialog.cpp:398 +#: src\CelestialNavigationDialog.cpp:538 src\Sight.cpp:1120 +#: src\Sight.cpp.bak:1121 src\celestial_navigation_pi.cpp:95 +#: src\celestial_navigation_pi.cpp:99 +msgid "Celestial Navigation" msgstr "" -#: src/CelestialNavigationDialog.cpp:260 -msgid "Weather Routing" -msgstr "" - -#: src/CelestialNavigationDialog.cpp:320 +#: src\CelestialNavigationDialog-2.3.5.1-no-android.cpp:391 +#: src\CelestialNavigationDialog-2.3.5.2-android.cpp:397 +#: src\CelestialNavigationDialog-partial-android.cpp:391 +#: src\CelestialNavigationDialog.cpp:397 msgid "Failed to save xml file: " -msgstr "" +msgstr "Hindi nai-save ang xml file: " -#: src/CelestialNavigationDialog.cpp:321 src/CelestialNavigationDialog.cpp:466 -#: src/Sight.cpp:1099 src/celestial_navigation_pi.cpp:99 -#: src/celestial_navigation_pi.cpp:152 -msgid "Celestial Navigation" -msgstr "" - -#: src/CelestialNavigationDialog.cpp:351 +#: src\CelestialNavigationDialog-2.3.5.1-no-android.cpp:424 +#: src\CelestialNavigationDialog-2.3.5.2-android.cpp:430 +#: src\CelestialNavigationDialog-partial-android.cpp:424 +#: src\CelestialNavigationDialog.cpp:430 msgid "Time Correction" msgstr "" -#: src/CelestialNavigationDialog.cpp:409 +#: src\CelestialNavigationDialog-2.3.5.1-no-android.cpp:473 +#: src\CelestialNavigationDialog-2.3.5.2-android.cpp:479 +#: src\CelestialNavigationDialog-partial-android.cpp:473 +#: src\CelestialNavigationDialog.cpp:479 msgid "Sun" msgstr "" -#: src/CelestialNavigationDialog.cpp:465 +#: src\CelestialNavigationDialog-2.3.5.1-no-android.cpp:531 +#: src\CelestialNavigationDialog-2.3.5.2-android.cpp:537 +#: src\CelestialNavigationDialog-partial-android.cpp:531 +#: src\CelestialNavigationDialog.cpp:537 msgid "Are you sure you want to delete all sights?" msgstr "" -#: src/CelestialNavigationDialog.cpp:510 +#: src\CelestialNavigationDialog-2.3.5.1-no-android.cpp:582 +#: src\CelestialNavigationDialog-2.3.5.2-android.cpp:588 +#: src\CelestialNavigationDialog-partial-android.cpp:582 +#: src\CelestialNavigationDialog.cpp:588 msgid "Celestial_Navigation_Information.html" msgstr "" -#: src/CelestialNavigationDialog.cpp:516 -msgid "Show" +#: src\CelestialNavigationDialog-2.3.5.1-no-android.cpp:589 +#: src\CelestialNavigationDialog-2.3.5.2-android.cpp:595 +#: src\CelestialNavigationDialog-partial-android.cpp:589 +#: src\CelestialNavigationDialog.cpp:595 src\CelestialNavigationUI.cpp:55 +msgid "Hide" msgstr "" -#: src/CelestialNavigationDialog.cpp:516 src/CelestialNavigationUI.cpp:58 -msgid "Hide" +#: src\CelestialNavigationDialog-2.3.5.1-no-android.cpp:589 +#: src\CelestialNavigationDialog-2.3.5.2-android.cpp:595 +#: src\CelestialNavigationDialog-partial-android.cpp:589 +#: src\CelestialNavigationDialog.cpp:595 +msgid "Show" msgstr "" -#: src/CelestialNavigationUI.cpp:40 +#: src\CelestialNavigationUI.cpp:40 msgid "New" msgstr "" -#: src/CelestialNavigationUI.cpp:43 -msgid "Edit" +#: src\CelestialNavigationUI.cpp:43 src\CelestialNavigationUI.h:286 +msgid "Fix" msgstr "" -#: src/CelestialNavigationUI.cpp:46 -msgid "Delete" +#: src\CelestialNavigationUI.cpp:46 +msgid "Duplicate" msgstr "" -#: src/CelestialNavigationUI.cpp:49 -msgid "Delete All" +#: src\CelestialNavigationUI.cpp:49 +msgid "Clock Offset" msgstr "" -#: src/CelestialNavigationUI.cpp:52 src/CelestialNavigationUI.h:281 -msgid "Fix" +#: src\CelestialNavigationUI.cpp:52 +msgid "Edit" msgstr "" -#: src/CelestialNavigationUI.cpp:55 -msgid "Clock Offset" +#: src\CelestialNavigationUI.cpp:58 +msgid "Delete" msgstr "" -#: src/CelestialNavigationUI.cpp:61 +#: src\CelestialNavigationUI.cpp:61 msgid "Information" msgstr "" -#: src/CelestialNavigationUI.cpp:136 src/CelestialNavigationUI.cpp:667 -#: src/Sight.h:49 +#: src\CelestialNavigationUI.cpp:64 +msgid "Delete All" +msgstr "" + +#: src\CelestialNavigationUI.cpp:141 src\CelestialNavigationUI.cpp:674 +#: src\Sight.h:49 msgid "Altitude" msgstr "" -#: src/CelestialNavigationUI.cpp:136 src/CelestialNavigationUI.cpp:677 -#: src/Sight.h:49 +#: src\CelestialNavigationUI.cpp:141 src\CelestialNavigationUI.cpp:683 +#: src\Sight.h:49 msgid "Azimuth" msgstr "" -#: src/CelestialNavigationUI.cpp:136 src/Sight.h:49 +#: src\CelestialNavigationUI.cpp:141 src\Sight.h:49 msgid "Lunar" msgstr "" -#: src/CelestialNavigationUI.cpp:142 +#: src\CelestialNavigationUI.cpp:147 msgid "Magnetic Azimuth" msgstr "" -#: src/CelestialNavigationUI.cpp:145 +#: src\CelestialNavigationUI.cpp:150 msgid "Celestial Body" msgstr "" -#: src/CelestialNavigationUI.cpp:154 +#: src\CelestialNavigationUI.cpp:159 msgid "Find" msgstr "" -#: src/CelestialNavigationUI.cpp:157 +#: src\CelestialNavigationUI.cpp:162 msgid "Limb" msgstr "" -#: src/CelestialNavigationUI.cpp:161 -msgid "Lower" +#: src\CelestialNavigationUI.cpp:166 +msgid "Center" msgstr "" -#: src/CelestialNavigationUI.cpp:161 -msgid "Center" +#: src\CelestialNavigationUI.cpp:166 +msgid "Lower" msgstr "" -#: src/CelestialNavigationUI.cpp:161 +#: src\CelestialNavigationUI.cpp:166 msgid "Upper" msgstr "" -#: src/CelestialNavigationUI.cpp:186 src/CelestialNavigationUI.cpp:193 -#: src/CelestialNavigationUI.cpp:223 src/CelestialNavigationUI.cpp:230 +#: src\CelestialNavigationUI.cpp:191 src\CelestialNavigationUI.cpp:198 +#: src\CelestialNavigationUI.cpp:228 src\CelestialNavigationUI.cpp:235 msgid "0" msgstr "" -#: src/CelestialNavigationUI.cpp:189 src/CelestialNavigationUI.cpp:348 -#: src/CelestialNavigationUI.cpp:598 +#: src\CelestialNavigationUI.cpp:194 src\CelestialNavigationUI.cpp:353 +#: src\CelestialNavigationUI.cpp:605 msgid "Degrees" msgstr "" -#: src/CelestialNavigationUI.cpp:196 src/CelestialNavigationUI.cpp:278 -#: src/CelestialNavigationUI.cpp:439 +#: src\CelestialNavigationUI.cpp:201 src\CelestialNavigationUI.cpp:283 +#: src\CelestialNavigationUI.cpp:444 msgid "Minutes" msgstr "" -#: src/CelestialNavigationUI.cpp:200 +#: src\CelestialNavigationUI.cpp:205 msgid "10" msgstr "" -#: src/CelestialNavigationUI.cpp:203 +#: src\CelestialNavigationUI.cpp:208 msgid "Minutes Certainty" msgstr "" -#: src/CelestialNavigationUI.cpp:217 +#: src\CelestialNavigationUI.cpp:222 msgid "Lunar Altitude" msgstr "" -#: src/CelestialNavigationUI.cpp:226 +#: src\CelestialNavigationUI.cpp:231 msgid "Body Altitude" msgstr "" -#: src/CelestialNavigationUI.cpp:243 +#: src\CelestialNavigationUI.cpp:248 msgid "Sight" msgstr "" -#: src/CelestialNavigationUI.cpp:271 +#: src\CelestialNavigationUI.cpp:276 msgid "Hours" msgstr "" -#: src/CelestialNavigationUI.cpp:285 src/CelestialNavigationUI.cpp:303 -#: src/CelestialNavigationUI.cpp:860 +#: src\CelestialNavigationUI.cpp:290 src\CelestialNavigationUI.cpp:308 +#: src\CelestialNavigationUI.cpp:869 msgid "Seconds" msgstr "" -#: src/CelestialNavigationUI.cpp:293 +#: src\CelestialNavigationUI.cpp:298 msgid "Certainty" msgstr "" -#: src/CelestialNavigationUI.cpp:323 -msgid "Time" -msgstr "" - -#: src/CelestialNavigationUI.cpp:330 src/CelestialNavigationUI.cpp:580 +#: src\CelestialNavigationUI.cpp:335 src\CelestialNavigationUI.cpp:587 msgid "Distance" msgstr "" -#: src/CelestialNavigationUI.cpp:337 src/CelestialNavigationUI.cpp:587 +#: src\CelestialNavigationUI.cpp:342 src\CelestialNavigationUI.cpp:594 msgid "Nm" msgstr "" -#: src/CelestialNavigationUI.cpp:341 src/CelestialNavigationUI.cpp:591 +#: src\CelestialNavigationUI.cpp:346 src\CelestialNavigationUI.cpp:598 msgid "Bearing" msgstr "" -#: src/CelestialNavigationUI.cpp:352 src/CelestialNavigationUI.cpp:602 +#: src\CelestialNavigationUI.cpp:357 src\CelestialNavigationUI.cpp:609 msgid "Magnetic Bearing" msgstr "" -#: src/CelestialNavigationUI.cpp:359 +#: src\CelestialNavigationUI.cpp:364 msgid "DR Shift" msgstr "" -#: src/CelestialNavigationUI.cpp:366 +#: src\CelestialNavigationUI.cpp:371 msgid "Transparency" msgstr "" -#: src/CelestialNavigationUI.cpp:387 +#: src\CelestialNavigationUI.cpp:392 msgid "Config" msgstr "" -#: src/CelestialNavigationUI.cpp:399 +#: src\CelestialNavigationUI.cpp:404 msgid "Eye Height" msgstr "" -#: src/CelestialNavigationUI.cpp:403 +#: src\CelestialNavigationUI.cpp:408 msgid "2" msgstr "" -#: src/CelestialNavigationUI.cpp:406 +#: src\CelestialNavigationUI.cpp:411 msgid "Meters" msgstr "" -#: src/CelestialNavigationUI.cpp:410 +#: src\CelestialNavigationUI.cpp:415 msgid "Temperature" msgstr "" -#: src/CelestialNavigationUI.cpp:417 +#: src\CelestialNavigationUI.cpp:422 msgid "Celcius" msgstr "" -#: src/CelestialNavigationUI.cpp:421 +#: src\CelestialNavigationUI.cpp:426 msgid "Pressure" msgstr "" -#: src/CelestialNavigationUI.cpp:428 +#: src\CelestialNavigationUI.cpp:433 msgid "MilliBars" msgstr "" -#: src/CelestialNavigationUI.cpp:432 +#: src\CelestialNavigationUI.cpp:437 msgid "Index Error" msgstr "" -#: src/CelestialNavigationUI.cpp:446 +#: src\CelestialNavigationUI.cpp:451 msgid "Set As Defaults" msgstr "" -#: src/CelestialNavigationUI.cpp:453 +#: src\CelestialNavigationUI.cpp:458 msgid "Parameters" msgstr "" -#: src/CelestialNavigationUI.cpp:469 +#: src\CelestialNavigationUI.cpp:474 msgid "Calculations" msgstr "" -#: src/CelestialNavigationUI.cpp:571 +#: src\CelestialNavigationUI.cpp:578 msgid "Shift all visible Sights" msgstr "" -#: src/CelestialNavigationUI.cpp:649 src/CelestialNavigationUI.cpp:760 +#: src\CelestialNavigationUI.cpp:656 src\CelestialNavigationUI.cpp:769 msgid "Latitude" msgstr "" -#: src/CelestialNavigationUI.cpp:658 src/CelestialNavigationUI.cpp:768 +#: src\CelestialNavigationUI.cpp:665 src\CelestialNavigationUI.cpp:777 msgid "Longitude" msgstr "" -#: src/CelestialNavigationUI.cpp:669 src/CelestialNavigationUI.cpp:679 -msgid "MyLabel" +#: src\CelestialNavigationUI.cpp:691 +msgid "Boat Position" msgstr "" -#: src/CelestialNavigationUI.cpp:686 -msgid "Done" +#: src\CelestialNavigationUI.cpp:695 +msgid "Magnetic" msgstr "" -#: src/CelestialNavigationUI.cpp:689 -msgid "Magnetic" +#: src\CelestialNavigationUI.cpp:698 +msgid "Done" msgstr "" -#: src/CelestialNavigationUI.cpp:753 +#: src\CelestialNavigationUI.cpp:762 msgid "Fix From Visible Sights" msgstr "" -#: src/CelestialNavigationUI.cpp:764 +#: src\CelestialNavigationUI.cpp:773 msgid " N/A " msgstr "" -#: src/CelestialNavigationUI.cpp:772 +#: src\CelestialNavigationUI.cpp:781 msgid " N/A " msgstr "" -#: src/CelestialNavigationUI.cpp:776 +#: src\CelestialNavigationUI.cpp:785 msgid "Error" msgstr "" -#: src/CelestialNavigationUI.cpp:780 +#: src\CelestialNavigationUI.cpp:789 msgid " N/A " msgstr "" -#: src/CelestialNavigationUI.cpp:787 src/CelestialNavigationUI.cpp:794 +#: src\CelestialNavigationUI.cpp:796 src\CelestialNavigationUI.cpp:803 msgid "Initial" msgstr "" -#: src/CelestialNavigationUI.cpp:801 +#: src\CelestialNavigationUI.cpp:810 msgid "Alg" msgstr "" -#: src/CelestialNavigationUI.cpp:806 +#: src\CelestialNavigationUI.cpp:815 msgid "Plane" msgstr "" -#: src/CelestialNavigationUI.cpp:807 +#: src\CelestialNavigationUI.cpp:816 msgid "Sphere" msgstr "" -#: src/CelestialNavigationUI.cpp:808 +#: src\CelestialNavigationUI.cpp:817 msgid "Cone" msgstr "" -#: src/CelestialNavigationUI.cpp:809 +#: src\CelestialNavigationUI.cpp:818 msgid "Cone 2" msgstr "" -#: src/CelestialNavigationUI.cpp:813 +#: src\CelestialNavigationUI.cpp:822 msgid "Go" msgstr "" -#: src/CelestialNavigationUI.cpp:850 src/CelestialNavigationUI.h:303 +#: src\CelestialNavigationUI.cpp:859 src\CelestialNavigationUI.h:308 msgid "Clock Correction" msgstr "" -#: src/CelestialNavigationUI.h:78 +#: src\CelestialNavigationUI.h:82 msgid "Celestial Navigation Sights" msgstr "" -#: src/CelestialNavigationUI.h:169 +#: src\CelestialNavigationUI.h:173 msgid "Sight Properties" msgstr "" -#: src/CelestialNavigationUI.h:200 +#: src\CelestialNavigationUI.h:204 msgid "Dead Reckoning shift" msgstr "" -#: src/CelestialNavigationUI.h:227 +#: src\CelestialNavigationUI.h:232 msgid "Find Celestial Body" msgstr "" -#: src/Sight.cpp:160 +#: src\FixDialog.cpp:192 +msgid "Shifted sights are not used to compute a fix, determine fix visually instead.\n" +msgstr "" + +#: src\FixDialog.cpp:193 +msgid "Fix Position" +msgstr "" + +#: src\FixDialog.cpp:338 src\FixDialog.cpp:339 src\FixDialog.cpp:340 +msgid " N/A " +msgstr "" + +#: src\Sight.cpp:172 src\Sight.cpp.bak:173 msgid "Astrolab failed, data unavailable:\n" msgstr "" -#: src/Sight.cpp:161 +#: src\Sight.cpp:173 src\Sight.cpp.bak:174 msgid "\n" "Did you forget to install vsop87d.txt?\n" msgstr "" -#: src/Sight.cpp:162 +#: src\Sight.cpp:174 src\Sight.cpp.bak:175 msgid "The plugin will not work correctly" msgstr "" -#: src/Sight.cpp:163 +#: src\Sight.cpp:175 src\Sight.cpp.bak:176 msgid "Failure Alert" msgstr "" -#: src/Sight.cpp:474 +#: src\Sight.cpp:495 src\Sight.cpp.bak:496 #, c-format msgid "Applying clock correction of %d seconds\n\n" msgstr "" -#: src/Sight.cpp:536 +#: src\Sight.cpp:557 src\Sight.cpp.bak:558 msgid "Almanac Data For " msgstr "" -#: src/Sight.cpp:537 +#: src\Sight.cpp:558 src\Sight.cpp.bak:559 #, c-format msgid "\n" "Geographical Position (lat, lon) = %.4f %.4f\n" @@ -410,23 +474,27 @@ msgid "\n" "HP = %.1f'\n\n" msgstr "" -#: src/Sight.cpp:552 src/Sight.cpp:690 +#: src\Sight.cpp:573 src\Sight.cpp:711 src\Sight.cpp.bak:574 +#: src\Sight.cpp.bak:712 msgid "Formulas used to calculate sight\n\n" msgstr "" -#: src/Sight.cpp:556 src/Sight.cpp:694 +#: src\Sight.cpp:577 src\Sight.cpp:715 src\Sight.cpp.bak:578 +#: src\Sight.cpp.bak:716 #, c-format msgid "Index Error is %.4f degrees\n\n" msgstr "" -#: src/Sight.cpp:561 src/Sight.cpp:699 +#: src\Sight.cpp:582 src\Sight.cpp:720 src\Sight.cpp.bak:583 +#: src\Sight.cpp.bak:721 #, c-format msgid "Eye Height is %.4f meters\n" "Height Correction Degrees = 1.758*sqrt(%.4f) / 60.0\n" "Height Correction Degrees = %.4f\n" msgstr "" -#: src/Sight.cpp:568 +#: src\Sight.cpp:589 src\Sight.cpp:799 src\Sight.cpp.bak:590 +#: src\Sight.cpp.bak:800 #, c-format msgid "\n" "Apparent Altitude (Ha)\n" @@ -435,7 +503,8 @@ msgid "\n" "ApparentAltitude = %.4f\n" msgstr "" -#: src/Sight.cpp:586 src/Sight.cpp:789 +#: src\Sight.cpp:607 src\Sight.cpp:810 src\Sight.cpp.bak:608 +#: src\Sight.cpp.bak:811 #, c-format msgid "\n" "Refraction Correction\n" @@ -444,21 +513,24 @@ msgid "\n" "x = %.4f\n" msgstr "" -#: src/Sight.cpp:591 src/Sight.cpp:794 +#: src\Sight.cpp:612 src\Sight.cpp:815 src\Sight.cpp.bak:613 +#: src\Sight.cpp.bak:816 #, c-format msgid "RefractionCorrection = .267 * Pressure / (x*(Temperature + 273.15)) / 60.0\n" "RefractionCorrection = .267 * %.4f / (x*(%.4f + 273.15)) / 60.0\n" "RefractionCorrection = %.4f\n" msgstr "" -#: src/Sight.cpp:606 src/Sight.cpp:808 +#: src\Sight.cpp:627 src\Sight.cpp:829 src\Sight.cpp.bak:628 +#: src\Sight.cpp.bak:830 #, c-format msgid "\n" "Sun selected, Limb Correction\n" "ra = %.4f, lc = 0.266564/ra = %.4f\n" msgstr "" -#: src/Sight.cpp:616 src/Sight.cpp:732 +#: src\Sight.cpp:637 src\Sight.cpp:753 src\Sight.cpp.bak:638 +#: src\Sight.cpp.bak:754 #, c-format msgid "\n" "Moon selected, Limb Correction\n" @@ -467,21 +539,25 @@ msgid "\n" "lc = %.4f\n" msgstr "" -#: src/Sight.cpp:626 src/Sight.cpp:741 src/Sight.cpp:816 +#: src\Sight.cpp:647 src\Sight.cpp:762 src\Sight.cpp:837 src\Sight.cpp.bak:648 +#: src\Sight.cpp.bak:763 src\Sight.cpp.bak:838 msgid "Upper Limb" msgstr "" -#: src/Sight.cpp:629 src/Sight.cpp:744 src/Sight.cpp:819 +#: src\Sight.cpp:650 src\Sight.cpp:765 src\Sight.cpp:840 src\Sight.cpp.bak:651 +#: src\Sight.cpp.bak:766 src\Sight.cpp.bak:841 msgid "Lower Limb" msgstr "" -#: src/Sight.cpp:632 src/Sight.cpp:822 +#: src\Sight.cpp:653 src\Sight.cpp:843 src\Sight.cpp.bak:654 +#: src\Sight.cpp.bak:844 #, c-format msgid "\n" "LimbCorrection = %.4f\n" msgstr "" -#: src/Sight.cpp:636 src/Sight.cpp:826 +#: src\Sight.cpp:657 src\Sight.cpp:847 src\Sight.cpp.bak:658 +#: src\Sight.cpp.bak:848 #, c-format msgid "\n" "Corrected Altitude\n" @@ -490,28 +566,31 @@ msgid "\n" "CorrectedAltitude = %.4f\n" msgstr "" -#: src/Sight.cpp:650 src/Sight.cpp:840 +#: src\Sight.cpp:671 src\Sight.cpp:861 src\Sight.cpp.bak:672 +#: src\Sight.cpp.bak:862 #, c-format msgid "\n" "Sun selected, parallax correction\n" "rad = %.4f, HP = 0.002442/rad = %.4f\n" msgstr "" -#: src/Sight.cpp:659 src/Sight.cpp:764 +#: src\Sight.cpp:680 src\Sight.cpp:785 src\Sight.cpp.bak:681 +#: src\Sight.cpp.bak:786 #, c-format msgid "\n" "Moon selected, parallax correction\n" "HP = %.4f\n" msgstr "" -#: src/Sight.cpp:665 src/Sight.cpp:846 +#: src\Sight.cpp:686 src\Sight.cpp:867 src\Sight.cpp.bak:687 +#: src\Sight.cpp.bak:868 #, c-format msgid "ParallaxCorrection = -180/Pi * asin( sin(Pi/180 * HP ) * cos(Pi/180 * CorrectedAltitude))\n" "ParallaxCorrection = -180/Pi * asin( sin(Pi/180 * %.4f ) * cos(Pi/180 * %.4f))\n" "ParallaxCorrection = %.4f\n" msgstr "" -#: src/Sight.cpp:672 +#: src\Sight.cpp:693 src\Sight.cpp.bak:694 #, c-format msgid "\n" "Observed Altitude (Ho)\n" @@ -520,16 +599,16 @@ msgid "\n" "ObservedAltitude = %.4f\n" msgstr "" -#: src/Sight.cpp:706 +#: src\Sight.cpp:727 src\Sight.cpp.bak:728 #, c-format msgid "\n" "Apparent Moon Altitude (Ha)\n" "ApparentAltitudeMoon = MeasurementMoon - IndexCorrection - EyeHeightCorrection\n" -" ApparentAltitudeMoon = %.4f - %.4f - %.4f\n" +"ApparentAltitudeMoon = %.4f - %.4f - %.4f\n" "ApparentAltitudeMoon = %.4f\n" msgstr "" -#: src/Sight.cpp:717 +#: src\Sight.cpp:738 src\Sight.cpp.bak:739 #, c-format msgid "\n" "Refraction Correction\n" @@ -538,20 +617,21 @@ msgid "\n" "x = %.4f\n" msgstr "" -#: src/Sight.cpp:722 +#: src\Sight.cpp:743 src\Sight.cpp.bak:744 #, c-format msgid "RefractionCorrectionMoon = .267 * Pressure / (x*(Temperature + 273.15)) / 60.0\n" "RefractionCorrectionMoon = .267 * %.4f / (x*(%.4f + 273.15)) / 60.0\n" "RefractionCorrectionMoon = %.4f\n" msgstr "" -#: src/Sight.cpp:747 src/Sight.cpp:750 +#: src\Sight.cpp:768 src\Sight.cpp:771 src\Sight.cpp.bak:769 +#: src\Sight.cpp.bak:772 #, c-format msgid "\n" "LimbCorrectionMoon = %.4f\n" msgstr "" -#: src/Sight.cpp:753 +#: src\Sight.cpp:774 src\Sight.cpp.bak:775 #, c-format msgid "\n" "Corrected Altitude\n" @@ -560,107 +640,82 @@ msgid "\n" "CorrectedAltitudeMoon = %.4f\n" msgstr "" -#: src/Sight.cpp:768 +#: src\Sight.cpp:789 src\Sight.cpp.bak:790 #, c-format msgid "ParallaxCorrectionMoon = -180/Pi * asin( sin(Pi/180 * HP ) * cos(Pi/180 * CorrectedAltitude))\n" -" ParallaxCorrectionMoon = -180/Pi * asin( sin(Pi/180 * %.4f ) * cos(Pi/180 * %.4f))\n" +"ParallaxCorrectionMoon = -180/Pi * asin( sin(Pi/180 * %.4f ) * cos(Pi/180 * %.4f))\n" "ParallaxCorrectionMoon = %.4f\n" msgstr "" -#: src/Sight.cpp:778 -#, c-format -msgid "\n" -"Apparent Altitude (Ha)\n" -"ApparentAltitude = Measurement - IndexCorrection - EyeHeightCorrection\n" -" ApparentAltitude = %.4f - %.4f - %.4f\n" -"ApparentAltitude = %.4f\n" -msgstr "" - -#: src/Sight.cpp:857 +#: src\Sight.cpp:878 src\Sight.cpp.bak:879 #, c-format msgid "CorrectionsMoon = %.4f\n" "CorrectionsBody = %.4f\n" "Corrections = abs(CorrectionsMoon - CorrectionsBody) = %.4f\n" msgstr "" -#: src/Sight.cpp:863 +#: src\Sight.cpp:884 src\Sight.cpp.bak:885 #, c-format msgid "CorrectedMeasurement = Measurement - Corrections - IndexCorrection\n" "CorrectedMeasurement = %.4f - %.4f - %.4f\n" "CorrectedMeasurement = %.4f\n" msgstr "" -#: src/Sight.cpp:888 +#: src\Sight.cpp:909 src\Sight.cpp.bak:910 msgid "\n" "Calculated angle between Moon and " msgstr "" -#: src/Sight.cpp:890 +#: src\Sight.cpp:911 src\Sight.cpp.bak:912 #, c-format msgid "\n" "Error from measurement: %.4f" msgstr "" -#: src/Sight.cpp:894 +#: src\Sight.cpp:915 src\Sight.cpp.bak:916 msgid "\n" "Moon takes 28 days to orbit, one degree of error takes 6720 seconds" msgstr "" -#: src/Sight.cpp:895 +#: src\Sight.cpp:916 src\Sight.cpp.bak:917 #, c-format msgid "\n" "Time correction %.4f seconds" msgstr "" -#: src/Sight.cpp:1099 +#: src\Sight.cpp:1120 src\Sight.cpp.bak:1121 msgid "Building bearing Sight Positions" msgstr "" -#: src/SightDialog.cpp:172 +#: src\SightDialog.cpp:184 msgid "Measurement certainty likely set to small, sight may not appear " msgstr "" -#: src/SightDialog.cpp:173 src/SightDialog.cpp:256 +#: src\SightDialog.cpp:185 src\SightDialog.cpp:279 msgid "Warning" msgstr "" -#: src/SightDialog.cpp:255 +#: src\SightDialog.cpp:278 msgid "Lunar shot will be invalid taking distance from moon to itself" msgstr "" -#: src/celestial_navigation_pi.cpp:90 -msgid "Failed to load file:\n" -msgstr "" - -#: src/celestial_navigation_pi.cpp:91 -msgid "\n" -"Magnetic data will not be available for the celestial navigation plugin." -msgstr "" - -#: src/celestial_navigation_pi.cpp:92 -msgid "OpenCPN Alert" -msgstr "" - -#: src/celestial_navigation_pi.cpp:157 -msgid "Celestial Navigation PlugIn for OpenCPN" +#: src\celestial_navigation_pi.cpp:179 +msgid "open error" msgstr "" -#: src/celestial_navigation_pi.cpp:162 -msgid "Celestial Navigation PlugIn for OpenCPN.\n" -"Implements nautical almanac for sun, moon, planets,\n" -"and various navigational stars.\n" -"Compute position fix from celestial measurements." +#: src\celestial_navigation_pi.cpp:180 +msgid "corrupt record" msgstr "" -#: src/FixDialog.cpp:189 -msgid "Shifted sights are not used to compute a fix, determine fix visually instead.\n" +#: src\celestial_navigation_pi.cpp:181 +msgid "too many models" msgstr "" -#: src/FixDialog.cpp:190 -msgid "Fix Position" +#: src\celestial_navigation_pi.cpp:184 +msgid "Magnetic data will not be available for the celestial navigation plugin." msgstr "" -#: src/FixDialog.cpp:335 src/FixDialog.cpp:336 src/FixDialog.cpp:337 -msgid " N/A " +#: src\celestial_navigation_pi.cpp:185 +msgid "OpenCPN Alert" msgstr "" diff --git a/po/fr_FR.po b/po/fr_FR.po index 22516c9..f8ca4b6 100644 --- a/po/fr_FR.po +++ b/po/fr_FR.po @@ -2,404 +2,468 @@ msgid "" msgstr "" "Project-Id-Version: opencpn\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-02-28 14:10-0300\n" -"PO-Revision-Date: 2018-03-03 08:23-0500\n" -"Last-Translator: nohal \n" +"POT-Creation-Date: 2021-10-27 22:15+0200\n" +"PO-Revision-Date: 2023-10-19 09:17\n" +"Last-Translator: \n" "Language-Team: French\n" "Language: fr_FR\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n > 1);\n" -"X-Generator: crowdin.com\n" "X-Crowdin-Project: opencpn\n" +"X-Crowdin-Project-ID: 49843\n" "X-Crowdin-Language: fr\n" "X-Crowdin-File: /plugins/celestial_navigation_pi/po/celestial_navigation_pi.pot\n" +"X-Crowdin-File-ID: 108\n" -#: src/CelestialNavigationDialog.cpp:123 src/CelestialNavigationUI.cpp:132 +#: src\CelestialNavigationDialog-2.3.5.1-no-android.cpp:149 +#: src\CelestialNavigationDialog-2.3.5.2-android.cpp:150 +#: src\CelestialNavigationDialog-partial-android.cpp:149 +#: src\CelestialNavigationDialog.cpp:150 src\CelestialNavigationUI.cpp:137 msgid "Type" msgstr "Type" -#: src/CelestialNavigationDialog.cpp:124 +#: src\CelestialNavigationDialog-2.3.5.1-no-android.cpp:150 +#: src\CelestialNavigationDialog-2.3.5.2-android.cpp:151 +#: src\CelestialNavigationDialog-partial-android.cpp:150 +#: src\CelestialNavigationDialog.cpp:151 msgid "Body" msgstr "Corps" -#: src/CelestialNavigationDialog.cpp:125 -msgid "Time (UTC)" -msgstr "Heure (UTC)" - -#: src/CelestialNavigationDialog.cpp:126 src/CelestialNavigationUI.cpp:179 +#: src\CelestialNavigationDialog-2.3.5.1-no-android.cpp:151 +#: src\CelestialNavigationDialog-2.3.5.2-android.cpp:152 +#: src\CelestialNavigationDialog-partial-android.cpp:151 +#: src\CelestialNavigationDialog.cpp:152 src\CelestialNavigationUI.cpp:328 +msgid "Time (UT)" +msgstr "Time (UTC)" + +#: src\CelestialNavigationDialog-2.3.5.1-no-android.cpp:152 +#: src\CelestialNavigationDialog-2.3.5.2-android.cpp:153 +#: src\CelestialNavigationDialog-partial-android.cpp:152 +#: src\CelestialNavigationDialog.cpp:153 src\CelestialNavigationUI.cpp:184 msgid "Measurement" msgstr "Mesures" -#: src/CelestialNavigationDialog.cpp:127 src/CelestialNavigationUI.cpp:376 +#: src\CelestialNavigationDialog-2.3.5.1-no-android.cpp:153 +#: src\CelestialNavigationDialog-2.3.5.2-android.cpp:154 +#: src\CelestialNavigationDialog-partial-android.cpp:153 +#: src\CelestialNavigationDialog.cpp:154 src\CelestialNavigationUI.cpp:381 msgid "Color" msgstr "Couleur" -#: src/CelestialNavigationDialog.cpp:193 -msgid "Failed to load file." -msgstr "Echec du chargement du fichier." - -#: src/CelestialNavigationDialog.cpp:198 +#: src\CelestialNavigationDialog-2.3.5.1-no-android.cpp:266 +#: src\CelestialNavigationDialog-2.3.5.2-android.cpp:272 +#: src\CelestialNavigationDialog-partial-android.cpp:266 +#: src\CelestialNavigationDialog.cpp:272 src\celestial_navigation_pi.cpp:177 +msgid "Failed to load file: " +msgstr "Fichier, échec du chargement :" + +#: src\CelestialNavigationDialog-2.3.5.1-no-android.cpp:271 +#: src\CelestialNavigationDialog-2.3.5.2-android.cpp:277 +#: src\CelestialNavigationDialog-partial-android.cpp:271 +#: src\CelestialNavigationDialog.cpp:277 msgid "Invalid xml file" msgstr "Fichier xml invalide" -#: src/CelestialNavigationDialog.cpp:250 +#: src\CelestialNavigationDialog-2.3.5.1-no-android.cpp:323 +#: src\CelestialNavigationDialog-2.3.5.2-android.cpp:329 +#: src\CelestialNavigationDialog-partial-android.cpp:323 +#: src\CelestialNavigationDialog.cpp:329 msgid "Unrecognized xml node" msgstr "Noeud xml non reconnu" -#: src/CelestialNavigationDialog.cpp:260 -msgid "Weather Routing" -msgstr "Routage météorologique" +#: src\CelestialNavigationDialog-2.3.5.1-no-android.cpp:332 +#: src\CelestialNavigationDialog-2.3.5.1-no-android.cpp:392 +#: src\CelestialNavigationDialog-2.3.5.1-no-android.cpp:532 +#: src\CelestialNavigationDialog-2.3.5.2-android.cpp:338 +#: src\CelestialNavigationDialog-2.3.5.2-android.cpp:398 +#: src\CelestialNavigationDialog-2.3.5.2-android.cpp:538 +#: src\CelestialNavigationDialog-partial-android.cpp:332 +#: src\CelestialNavigationDialog-partial-android.cpp:392 +#: src\CelestialNavigationDialog-partial-android.cpp:532 +#: src\CelestialNavigationDialog.cpp:338 src\CelestialNavigationDialog.cpp:398 +#: src\CelestialNavigationDialog.cpp:538 src\Sight.cpp:1120 +#: src\Sight.cpp.bak:1121 src\celestial_navigation_pi.cpp:95 +#: src\celestial_navigation_pi.cpp:99 +msgid "Celestial Navigation" +msgstr "Navigation stellaire" -#: src/CelestialNavigationDialog.cpp:320 +#: src\CelestialNavigationDialog-2.3.5.1-no-android.cpp:391 +#: src\CelestialNavigationDialog-2.3.5.2-android.cpp:397 +#: src\CelestialNavigationDialog-partial-android.cpp:391 +#: src\CelestialNavigationDialog.cpp:397 msgid "Failed to save xml file: " msgstr "Echec du chargement du fichier : " -#: src/CelestialNavigationDialog.cpp:321 src/CelestialNavigationDialog.cpp:466 -#: src/Sight.cpp:1099 src/celestial_navigation_pi.cpp:99 -#: src/celestial_navigation_pi.cpp:152 -msgid "Celestial Navigation" -msgstr "Navigation stellaire" - -#: src/CelestialNavigationDialog.cpp:351 +#: src\CelestialNavigationDialog-2.3.5.1-no-android.cpp:424 +#: src\CelestialNavigationDialog-2.3.5.2-android.cpp:430 +#: src\CelestialNavigationDialog-partial-android.cpp:424 +#: src\CelestialNavigationDialog.cpp:430 msgid "Time Correction" msgstr "Correction de l'heure" -#: src/CelestialNavigationDialog.cpp:409 +#: src\CelestialNavigationDialog-2.3.5.1-no-android.cpp:473 +#: src\CelestialNavigationDialog-2.3.5.2-android.cpp:479 +#: src\CelestialNavigationDialog-partial-android.cpp:473 +#: src\CelestialNavigationDialog.cpp:479 msgid "Sun" msgstr "Soleil" -#: src/CelestialNavigationDialog.cpp:465 +#: src\CelestialNavigationDialog-2.3.5.1-no-android.cpp:531 +#: src\CelestialNavigationDialog-2.3.5.2-android.cpp:537 +#: src\CelestialNavigationDialog-partial-android.cpp:531 +#: src\CelestialNavigationDialog.cpp:537 msgid "Are you sure you want to delete all sights?" msgstr "Etes vous certain de vouloir détruire tous les vues ?" -#: src/CelestialNavigationDialog.cpp:510 +#: src\CelestialNavigationDialog-2.3.5.1-no-android.cpp:582 +#: src\CelestialNavigationDialog-2.3.5.2-android.cpp:588 +#: src\CelestialNavigationDialog-partial-android.cpp:582 +#: src\CelestialNavigationDialog.cpp:588 msgid "Celestial_Navigation_Information.html" msgstr "Navigation stellaire" -#: src/CelestialNavigationDialog.cpp:516 -msgid "Show" -msgstr "Afficher" - -#: src/CelestialNavigationDialog.cpp:516 src/CelestialNavigationUI.cpp:58 +#: src\CelestialNavigationDialog-2.3.5.1-no-android.cpp:589 +#: src\CelestialNavigationDialog-2.3.5.2-android.cpp:595 +#: src\CelestialNavigationDialog-partial-android.cpp:589 +#: src\CelestialNavigationDialog.cpp:595 src\CelestialNavigationUI.cpp:55 msgid "Hide" msgstr "Masquer" -#: src/CelestialNavigationUI.cpp:40 +#: src\CelestialNavigationDialog-2.3.5.1-no-android.cpp:589 +#: src\CelestialNavigationDialog-2.3.5.2-android.cpp:595 +#: src\CelestialNavigationDialog-partial-android.cpp:589 +#: src\CelestialNavigationDialog.cpp:595 +msgid "Show" +msgstr "Afficher" + +#: src\CelestialNavigationUI.cpp:40 msgid "New" msgstr "Nouveau" -#: src/CelestialNavigationUI.cpp:43 -msgid "Edit" -msgstr "Editer" - -#: src/CelestialNavigationUI.cpp:46 -msgid "Delete" -msgstr "Supprimer" - -#: src/CelestialNavigationUI.cpp:49 -msgid "Delete All" -msgstr "Supprimer tout" - -#: src/CelestialNavigationUI.cpp:52 src/CelestialNavigationUI.h:281 +#: src\CelestialNavigationUI.cpp:43 src\CelestialNavigationUI.h:286 msgid "Fix" msgstr "Corriger" -#: src/CelestialNavigationUI.cpp:55 +#: src\CelestialNavigationUI.cpp:46 +msgid "Duplicate" +msgstr "Dupliquer" + +#: src\CelestialNavigationUI.cpp:49 msgid "Clock Offset" msgstr "Décalage horaire" -#: src/CelestialNavigationUI.cpp:61 +#: src\CelestialNavigationUI.cpp:52 +msgid "Edit" +msgstr "Editer" + +#: src\CelestialNavigationUI.cpp:58 +msgid "Delete" +msgstr "Supprimer" + +#: src\CelestialNavigationUI.cpp:61 msgid "Information" msgstr "Information" -#: src/CelestialNavigationUI.cpp:136 src/CelestialNavigationUI.cpp:667 -#: src/Sight.h:49 +#: src\CelestialNavigationUI.cpp:64 +msgid "Delete All" +msgstr "Supprimer tout" + +#: src\CelestialNavigationUI.cpp:141 src\CelestialNavigationUI.cpp:674 +#: src\Sight.h:49 msgid "Altitude" msgstr "Altitude" -#: src/CelestialNavigationUI.cpp:136 src/CelestialNavigationUI.cpp:677 -#: src/Sight.h:49 +#: src\CelestialNavigationUI.cpp:141 src\CelestialNavigationUI.cpp:683 +#: src\Sight.h:49 msgid "Azimuth" msgstr "Azimut" -#: src/CelestialNavigationUI.cpp:136 src/Sight.h:49 +#: src\CelestialNavigationUI.cpp:141 src\Sight.h:49 msgid "Lunar" msgstr "Lunaire" -#: src/CelestialNavigationUI.cpp:142 +#: src\CelestialNavigationUI.cpp:147 msgid "Magnetic Azimuth" msgstr "Azimut magnétique" -#: src/CelestialNavigationUI.cpp:145 +#: src\CelestialNavigationUI.cpp:150 msgid "Celestial Body" msgstr "Corps céleste" -#: src/CelestialNavigationUI.cpp:154 +#: src\CelestialNavigationUI.cpp:159 msgid "Find" msgstr "Chercher" -#: src/CelestialNavigationUI.cpp:157 +#: src\CelestialNavigationUI.cpp:162 msgid "Limb" msgstr "Membre" -#: src/CelestialNavigationUI.cpp:161 -msgid "Lower" -msgstr "Bas" - -#: src/CelestialNavigationUI.cpp:161 +#: src\CelestialNavigationUI.cpp:166 msgid "Center" msgstr "Centre" -#: src/CelestialNavigationUI.cpp:161 +#: src\CelestialNavigationUI.cpp:166 +msgid "Lower" +msgstr "Bas" + +#: src\CelestialNavigationUI.cpp:166 msgid "Upper" msgstr "Upper Limb" -#: src/CelestialNavigationUI.cpp:186 src/CelestialNavigationUI.cpp:193 -#: src/CelestialNavigationUI.cpp:223 src/CelestialNavigationUI.cpp:230 +#: src\CelestialNavigationUI.cpp:191 src\CelestialNavigationUI.cpp:198 +#: src\CelestialNavigationUI.cpp:228 src\CelestialNavigationUI.cpp:235 msgid "0" msgstr "0" -#: src/CelestialNavigationUI.cpp:189 src/CelestialNavigationUI.cpp:348 -#: src/CelestialNavigationUI.cpp:598 +#: src\CelestialNavigationUI.cpp:194 src\CelestialNavigationUI.cpp:353 +#: src\CelestialNavigationUI.cpp:605 msgid "Degrees" msgstr "Degrés" -#: src/CelestialNavigationUI.cpp:196 src/CelestialNavigationUI.cpp:278 -#: src/CelestialNavigationUI.cpp:439 +#: src\CelestialNavigationUI.cpp:201 src\CelestialNavigationUI.cpp:283 +#: src\CelestialNavigationUI.cpp:444 msgid "Minutes" msgstr "Minutes" -#: src/CelestialNavigationUI.cpp:200 +#: src\CelestialNavigationUI.cpp:205 msgid "10" msgstr "10" -#: src/CelestialNavigationUI.cpp:203 +#: src\CelestialNavigationUI.cpp:208 msgid "Minutes Certainty" msgstr "Minutes de certitude" -#: src/CelestialNavigationUI.cpp:217 +#: src\CelestialNavigationUI.cpp:222 msgid "Lunar Altitude" msgstr "Altitude lunaire" -#: src/CelestialNavigationUI.cpp:226 +#: src\CelestialNavigationUI.cpp:231 msgid "Body Altitude" msgstr "Altitude du corps" -#: src/CelestialNavigationUI.cpp:243 +#: src\CelestialNavigationUI.cpp:248 msgid "Sight" msgstr "Vue" -#: src/CelestialNavigationUI.cpp:271 +#: src\CelestialNavigationUI.cpp:276 msgid "Hours" msgstr "Heures" -#: src/CelestialNavigationUI.cpp:285 src/CelestialNavigationUI.cpp:303 -#: src/CelestialNavigationUI.cpp:860 +#: src\CelestialNavigationUI.cpp:290 src\CelestialNavigationUI.cpp:308 +#: src\CelestialNavigationUI.cpp:869 msgid "Seconds" msgstr "Secondes" -#: src/CelestialNavigationUI.cpp:293 +#: src\CelestialNavigationUI.cpp:298 msgid "Certainty" msgstr "Certitude" -#: src/CelestialNavigationUI.cpp:323 -msgid "Time" -msgstr "Heure" - -#: src/CelestialNavigationUI.cpp:330 src/CelestialNavigationUI.cpp:580 +#: src\CelestialNavigationUI.cpp:335 src\CelestialNavigationUI.cpp:587 msgid "Distance" msgstr "Distance" -#: src/CelestialNavigationUI.cpp:337 src/CelestialNavigationUI.cpp:587 +#: src\CelestialNavigationUI.cpp:342 src\CelestialNavigationUI.cpp:594 msgid "Nm" msgstr "Cap" -#: src/CelestialNavigationUI.cpp:341 src/CelestialNavigationUI.cpp:591 +#: src\CelestialNavigationUI.cpp:346 src\CelestialNavigationUI.cpp:598 msgid "Bearing" msgstr "Cap" -#: src/CelestialNavigationUI.cpp:352 src/CelestialNavigationUI.cpp:602 +#: src\CelestialNavigationUI.cpp:357 src\CelestialNavigationUI.cpp:609 msgid "Magnetic Bearing" msgstr "Cap magnétique" -#: src/CelestialNavigationUI.cpp:359 +#: src\CelestialNavigationUI.cpp:364 msgid "DR Shift" msgstr "Décalage DR" -#: src/CelestialNavigationUI.cpp:366 +#: src\CelestialNavigationUI.cpp:371 msgid "Transparency" msgstr "Transparence" -#: src/CelestialNavigationUI.cpp:387 +#: src\CelestialNavigationUI.cpp:392 msgid "Config" msgstr "Configuration" -#: src/CelestialNavigationUI.cpp:399 +#: src\CelestialNavigationUI.cpp:404 msgid "Eye Height" msgstr "Hauteur des yeux" -#: src/CelestialNavigationUI.cpp:403 +#: src\CelestialNavigationUI.cpp:408 msgid "2" msgstr "2" -#: src/CelestialNavigationUI.cpp:406 +#: src\CelestialNavigationUI.cpp:411 msgid "Meters" msgstr "Mètres" -#: src/CelestialNavigationUI.cpp:410 +#: src\CelestialNavigationUI.cpp:415 msgid "Temperature" msgstr "Température" -#: src/CelestialNavigationUI.cpp:417 +#: src\CelestialNavigationUI.cpp:422 msgid "Celcius" msgstr "Celsius" -#: src/CelestialNavigationUI.cpp:421 +#: src\CelestialNavigationUI.cpp:426 msgid "Pressure" msgstr "Pression" -#: src/CelestialNavigationUI.cpp:428 +#: src\CelestialNavigationUI.cpp:433 msgid "MilliBars" msgstr "hPa (Millibars)" -#: src/CelestialNavigationUI.cpp:432 +#: src\CelestialNavigationUI.cpp:437 msgid "Index Error" msgstr "Erreur d'index" -#: src/CelestialNavigationUI.cpp:446 +#: src\CelestialNavigationUI.cpp:451 msgid "Set As Defaults" msgstr "Définir comme valeurs par défaut" -#: src/CelestialNavigationUI.cpp:453 +#: src\CelestialNavigationUI.cpp:458 msgid "Parameters" msgstr "Paramètres" -#: src/CelestialNavigationUI.cpp:469 +#: src\CelestialNavigationUI.cpp:474 msgid "Calculations" msgstr "Calculs" -#: src/CelestialNavigationUI.cpp:571 +#: src\CelestialNavigationUI.cpp:578 msgid "Shift all visible Sights" msgstr "Déplacer tous les signes visibles" -#: src/CelestialNavigationUI.cpp:649 src/CelestialNavigationUI.cpp:760 +#: src\CelestialNavigationUI.cpp:656 src\CelestialNavigationUI.cpp:769 msgid "Latitude" msgstr "Altitude" -#: src/CelestialNavigationUI.cpp:658 src/CelestialNavigationUI.cpp:768 +#: src\CelestialNavigationUI.cpp:665 src\CelestialNavigationUI.cpp:777 msgid "Longitude" msgstr "Longitude" -#: src/CelestialNavigationUI.cpp:669 src/CelestialNavigationUI.cpp:679 -msgid "MyLabel" -msgstr "MonEtiquette" +#: src\CelestialNavigationUI.cpp:691 +msgid "Boat Position" +msgstr "Position du bateau" -#: src/CelestialNavigationUI.cpp:686 -msgid "Done" -msgstr "Effectué" - -#: src/CelestialNavigationUI.cpp:689 +#: src\CelestialNavigationUI.cpp:695 msgid "Magnetic" msgstr "Magnétique" -#: src/CelestialNavigationUI.cpp:753 +#: src\CelestialNavigationUI.cpp:698 +msgid "Done" +msgstr "Effectué" + +#: src\CelestialNavigationUI.cpp:762 msgid "Fix From Visible Sights" msgstr "Fixer les curiosités visibles" -#: src/CelestialNavigationUI.cpp:764 +#: src\CelestialNavigationUI.cpp:773 msgid " N/A " msgstr " N/A " -#: src/CelestialNavigationUI.cpp:772 +#: src\CelestialNavigationUI.cpp:781 msgid " N/A " msgstr " N/A " -#: src/CelestialNavigationUI.cpp:776 +#: src\CelestialNavigationUI.cpp:785 msgid "Error" msgstr "Erreur" -#: src/CelestialNavigationUI.cpp:780 +#: src\CelestialNavigationUI.cpp:789 msgid " N/A " msgstr " N/A " -#: src/CelestialNavigationUI.cpp:787 src/CelestialNavigationUI.cpp:794 +#: src\CelestialNavigationUI.cpp:796 src\CelestialNavigationUI.cpp:803 msgid "Initial" msgstr "Initial" -#: src/CelestialNavigationUI.cpp:801 +#: src\CelestialNavigationUI.cpp:810 msgid "Alg" msgstr "Alg" -#: src/CelestialNavigationUI.cpp:806 +#: src\CelestialNavigationUI.cpp:815 msgid "Plane" msgstr "Planification" -#: src/CelestialNavigationUI.cpp:807 +#: src\CelestialNavigationUI.cpp:816 msgid "Sphere" msgstr "Sphère" -#: src/CelestialNavigationUI.cpp:808 +#: src\CelestialNavigationUI.cpp:817 msgid "Cone" msgstr "Cône" -#: src/CelestialNavigationUI.cpp:809 +#: src\CelestialNavigationUI.cpp:818 msgid "Cone 2" msgstr "Cône 2" -#: src/CelestialNavigationUI.cpp:813 +#: src\CelestialNavigationUI.cpp:822 msgid "Go" msgstr "Aller" -#: src/CelestialNavigationUI.cpp:850 src/CelestialNavigationUI.h:303 +#: src\CelestialNavigationUI.cpp:859 src\CelestialNavigationUI.h:308 msgid "Clock Correction" msgstr "Correction Horloge" -#: src/CelestialNavigationUI.h:78 +#: src\CelestialNavigationUI.h:82 msgid "Celestial Navigation Sights" msgstr "Vues de navigation stellaire" -#: src/CelestialNavigationUI.h:169 +#: src\CelestialNavigationUI.h:173 msgid "Sight Properties" msgstr "Propriétés de la vue" -#: src/CelestialNavigationUI.h:200 +#: src\CelestialNavigationUI.h:204 msgid "Dead Reckoning shift" msgstr "Décalage de la navigation à l'estime" -#: src/CelestialNavigationUI.h:227 +#: src\CelestialNavigationUI.h:232 msgid "Find Celestial Body" msgstr "Trouver le corps céleste" -#: src/Sight.cpp:160 +#: src\FixDialog.cpp:192 +msgid "Shifted sights are not used to compute a fix, determine fix visually instead.\n" +msgstr "Les vues décalées ne sont pas utilisables pour calculer une solution, déterminer et fixer visuellement l'emplacement. \n" + +#: src\FixDialog.cpp:193 +msgid "Fix Position" +msgstr "Position" + +#: src\FixDialog.cpp:338 src\FixDialog.cpp:339 src\FixDialog.cpp:340 +msgid " N/A " +msgstr " N/A " + +#: src\Sight.cpp:172 src\Sight.cpp.bak:173 msgid "Astrolab failed, data unavailable:\n" msgstr "L'astrolabe échoue. Donnée indisponible : \n" -#: src/Sight.cpp:161 +#: src\Sight.cpp:173 src\Sight.cpp.bak:174 msgid "\n" "Did you forget to install vsop87d.txt?\n" msgstr "\n" "Avez vous oubliez d'installer vsop87d.txt ?\n" -#: src/Sight.cpp:162 +#: src\Sight.cpp:174 src\Sight.cpp.bak:175 msgid "The plugin will not work correctly" msgstr "Le complément ne fonctionnera pas correctement" -#: src/Sight.cpp:163 +#: src\Sight.cpp:175 src\Sight.cpp.bak:176 msgid "Failure Alert" msgstr "Echec" -#: src/Sight.cpp:474 +#: src\Sight.cpp:495 src\Sight.cpp.bak:496 #, c-format msgid "Applying clock correction of %d seconds\n\n" msgstr "Appliquer la Correction Horloge de %d seconds \n\n" -#: src/Sight.cpp:536 +#: src\Sight.cpp:557 src\Sight.cpp.bak:558 msgid "Almanac Data For " msgstr "Données de l'almanach pour " -#: src/Sight.cpp:537 +#: src\Sight.cpp:558 src\Sight.cpp.bak:559 #, c-format msgid "\n" "Geographical Position (lat, lon) = %.4f %.4f\n" @@ -418,16 +482,19 @@ msgstr "\n" "SD = %.1f'\n" "HP = %.1f'\n\n" -#: src/Sight.cpp:552 src/Sight.cpp:690 +#: src\Sight.cpp:573 src\Sight.cpp:711 src\Sight.cpp.bak:574 +#: src\Sight.cpp.bak:712 msgid "Formulas used to calculate sight\n\n" msgstr "Formules utilisées pour calculer la vue \n\n" -#: src/Sight.cpp:556 src/Sight.cpp:694 +#: src\Sight.cpp:577 src\Sight.cpp:715 src\Sight.cpp.bak:578 +#: src\Sight.cpp.bak:716 #, c-format msgid "Index Error is %.4f degrees\n\n" msgstr "L'Index d'erreur est %.4f degrés\n\n" -#: src/Sight.cpp:561 src/Sight.cpp:699 +#: src\Sight.cpp:582 src\Sight.cpp:720 src\Sight.cpp.bak:583 +#: src\Sight.cpp.bak:721 #, c-format msgid "Eye Height is %.4f meters\n" "Height Correction Degrees = 1.758*sqrt(%.4f) / 60.0\n" @@ -436,7 +503,8 @@ msgstr "La hauteur de l'oeil est %.4f mètres\n" "La correction de la hauteur en degrés = 1.758*sqrt(%.4f) / 60.0\n" "La correction de la hauteur en degré = %.4f\n" -#: src/Sight.cpp:568 +#: src\Sight.cpp:589 src\Sight.cpp:799 src\Sight.cpp.bak:590 +#: src\Sight.cpp.bak:800 #, c-format msgid "\n" "Apparent Altitude (Ha)\n" @@ -449,7 +517,8 @@ msgstr "\n" "Altitude observée = %.4f - %.4f - %.4f\n" "Altitude observée = %.4f\n" -#: src/Sight.cpp:586 src/Sight.cpp:789 +#: src\Sight.cpp:607 src\Sight.cpp:810 src\Sight.cpp.bak:608 +#: src\Sight.cpp.bak:811 #, c-format msgid "\n" "Refraction Correction\n" @@ -462,7 +531,8 @@ msgstr "\n" "x = tan(Pi/180*%.4f + 4.848e-2*(Pi/180) / (tan(Pi/180*%.4f) + .028))\n" "x = %.4f\n" -#: src/Sight.cpp:591 src/Sight.cpp:794 +#: src\Sight.cpp:612 src\Sight.cpp:815 src\Sight.cpp.bak:613 +#: src\Sight.cpp.bak:816 #, c-format msgid "RefractionCorrection = .267 * Pressure / (x*(Temperature + 273.15)) / 60.0\n" "RefractionCorrection = .267 * %.4f / (x*(%.4f + 273.15)) / 60.0\n" @@ -471,7 +541,8 @@ msgstr "Correction de la réfraction = .267 * Pressure / (x*(Temperature + 273.1 "RefractionCorrection = .267 * %.4f / (x*(%.4f + 273.15)) / 60.0\n" "RefractionCorrection = %.4f\n" -#: src/Sight.cpp:606 src/Sight.cpp:808 +#: src\Sight.cpp:627 src\Sight.cpp:829 src\Sight.cpp.bak:628 +#: src\Sight.cpp.bak:830 #, c-format msgid "\n" "Sun selected, Limb Correction\n" @@ -480,7 +551,8 @@ msgstr "\n" "Soleil sélectionné, Correction du membre\n" "ra = %.4f, lc = 0.266564/ra = %.4f\n" -#: src/Sight.cpp:616 src/Sight.cpp:732 +#: src\Sight.cpp:637 src\Sight.cpp:753 src\Sight.cpp.bak:638 +#: src\Sight.cpp.bak:754 #, c-format msgid "\n" "Moon selected, Limb Correction\n" @@ -493,22 +565,26 @@ msgstr "\n" "lc = 180/Pi * asin(Pi/180*SD)\n" "lc = %.4f\n" -#: src/Sight.cpp:626 src/Sight.cpp:741 src/Sight.cpp:816 +#: src\Sight.cpp:647 src\Sight.cpp:762 src\Sight.cpp:837 src\Sight.cpp.bak:648 +#: src\Sight.cpp.bak:763 src\Sight.cpp.bak:838 msgid "Upper Limb" msgstr "Membre supérieur" -#: src/Sight.cpp:629 src/Sight.cpp:744 src/Sight.cpp:819 +#: src\Sight.cpp:650 src\Sight.cpp:765 src\Sight.cpp:840 src\Sight.cpp.bak:651 +#: src\Sight.cpp.bak:766 src\Sight.cpp.bak:841 msgid "Lower Limb" msgstr "Membre inférieur" -#: src/Sight.cpp:632 src/Sight.cpp:822 +#: src\Sight.cpp:653 src\Sight.cpp:843 src\Sight.cpp.bak:654 +#: src\Sight.cpp.bak:844 #, c-format msgid "\n" "LimbCorrection = %.4f\n" msgstr "\n" "LimbCorrection = %.4f\n" -#: src/Sight.cpp:636 src/Sight.cpp:826 +#: src\Sight.cpp:657 src\Sight.cpp:847 src\Sight.cpp.bak:658 +#: src\Sight.cpp.bak:848 #, c-format msgid "\n" "Corrected Altitude\n" @@ -521,7 +597,8 @@ msgstr "\n" "Altitude corrigée = %.4f - %.4f - %.4f\n" "Altitude corrigée = %.4f\n" -#: src/Sight.cpp:650 src/Sight.cpp:840 +#: src\Sight.cpp:671 src\Sight.cpp:861 src\Sight.cpp.bak:672 +#: src\Sight.cpp.bak:862 #, c-format msgid "\n" "Sun selected, parallax correction\n" @@ -530,7 +607,8 @@ msgstr "\n" "Le soleil est sélectionné, correction du parallaxe\n" "rad = %.4f, HP = 0.002442/rad = %.4f\n" -#: src/Sight.cpp:659 src/Sight.cpp:764 +#: src\Sight.cpp:680 src\Sight.cpp:785 src\Sight.cpp.bak:681 +#: src\Sight.cpp.bak:786 #, c-format msgid "\n" "Moon selected, parallax correction\n" @@ -539,7 +617,8 @@ msgstr "\n" "La lune est sélectionnée, correction du parallaxe\n" "HP = %.4f\n" -#: src/Sight.cpp:665 src/Sight.cpp:846 +#: src\Sight.cpp:686 src\Sight.cpp:867 src\Sight.cpp.bak:687 +#: src\Sight.cpp.bak:868 #, c-format msgid "ParallaxCorrection = -180/Pi * asin( sin(Pi/180 * HP ) * cos(Pi/180 * CorrectedAltitude))\n" "ParallaxCorrection = -180/Pi * asin( sin(Pi/180 * %.4f ) * cos(Pi/180 * %.4f))\n" @@ -548,7 +627,7 @@ msgstr "Correction du parallaxe = -180/Pi * asin( sin(Pi/180 * HP ) * cos(Pi/180 "Correction du parallaxe = -180/Pi * asin( sin(Pi/180 * %.4f ) * cos(Pi/180 * %.4f))\n" "Correction du parallaxe = %.4f\n" -#: src/Sight.cpp:672 +#: src\Sight.cpp:693 src\Sight.cpp.bak:694 #, c-format msgid "\n" "Observed Altitude (Ho)\n" @@ -561,12 +640,12 @@ msgstr "\n" "Altitude corrigée = %.4f - %.4f\n" "altitude corrigée = %.4f\n" -#: src/Sight.cpp:706 +#: src\Sight.cpp:727 src\Sight.cpp.bak:728 #, c-format msgid "\n" "Apparent Moon Altitude (Ha)\n" "ApparentAltitudeMoon = MeasurementMoon - IndexCorrection - EyeHeightCorrection\n" -" ApparentAltitudeMoon = %.4f - %.4f - %.4f\n" +"ApparentAltitudeMoon = %.4f - %.4f - %.4f\n" "ApparentAltitudeMoon = %.4f\n" msgstr "\n" "Altitude apparente de la Lune (Ha)\n" @@ -574,7 +653,7 @@ msgstr "\n" " ApparentAltitudeMoon = %.4f - %.4f - %.4f\n" "ApparentAltitudeMoon = %.4f\n" -#: src/Sight.cpp:717 +#: src\Sight.cpp:738 src\Sight.cpp.bak:739 #, c-format msgid "\n" "Refraction Correction\n" @@ -587,7 +666,7 @@ msgstr "\n" "x = tan(Pi/180*%.4f + 4.848e-2*(Pi/180) / (tan(Pi/180*%.4f) + .028))\n" "x = %.4f\n" -#: src/Sight.cpp:722 +#: src\Sight.cpp:743 src\Sight.cpp.bak:744 #, c-format msgid "RefractionCorrectionMoon = .267 * Pressure / (x*(Temperature + 273.15)) / 60.0\n" "RefractionCorrectionMoon = .267 * %.4f / (x*(%.4f + 273.15)) / 60.0\n" @@ -596,14 +675,15 @@ msgstr "RefractionCorrectionMoon = .267 * Pressure / (x*(Temperature + 273.15)) "RefractionCorrectionMoon = .267 * %.4f / (x*(%.4f + 273.15)) / 60.0\n" "RefractionCorrectionMoon = %.4f\n" -#: src/Sight.cpp:747 src/Sight.cpp:750 +#: src\Sight.cpp:768 src\Sight.cpp:771 src\Sight.cpp.bak:769 +#: src\Sight.cpp.bak:772 #, c-format msgid "\n" "LimbCorrectionMoon = %.4f\n" msgstr "\n" "LimbCorrectionMoon = %.4f\n" -#: src/Sight.cpp:753 +#: src\Sight.cpp:774 src\Sight.cpp.bak:775 #, c-format msgid "\n" "Corrected Altitude\n" @@ -616,29 +696,16 @@ msgstr "\n" "CorrectedAltitudeMoon = %.4f - %.4f - %.4f\n" "CorrectedAltitudeMoon = %.4f\n" -#: src/Sight.cpp:768 +#: src\Sight.cpp:789 src\Sight.cpp.bak:790 #, c-format msgid "ParallaxCorrectionMoon = -180/Pi * asin( sin(Pi/180 * HP ) * cos(Pi/180 * CorrectedAltitude))\n" -" ParallaxCorrectionMoon = -180/Pi * asin( sin(Pi/180 * %.4f ) * cos(Pi/180 * %.4f))\n" +"ParallaxCorrectionMoon = -180/Pi * asin( sin(Pi/180 * %.4f ) * cos(Pi/180 * %.4f))\n" "ParallaxCorrectionMoon = %.4f\n" msgstr "ParallaxCorrectionMoon = -180/Pi * asin( sin(Pi/180 * HP ) * cos(Pi/180 * CorrectedAltitude))\n" " ParallaxCorrectionMoon = -180/Pi * asin( sin(Pi/180 * %.4f ) * cos(Pi/180 * %.4f))\n" "ParallaxCorrectionMoon = %.4f\n" -#: src/Sight.cpp:778 -#, c-format -msgid "\n" -"Apparent Altitude (Ha)\n" -"ApparentAltitude = Measurement - IndexCorrection - EyeHeightCorrection\n" -" ApparentAltitude = %.4f - %.4f - %.4f\n" -"ApparentAltitude = %.4f\n" -msgstr "\n" -"Altitude apparente (Ha)\n" -"ApparentAltitude = Measurement - IndexCorrection - EyeHeightCorrection\n" -" ApparentAltitude = %.4f - %.4f - %.4f\n" -"ApparentAltitude = %.4f\n" - -#: src/Sight.cpp:857 +#: src\Sight.cpp:878 src\Sight.cpp.bak:879 #, c-format msgid "CorrectionsMoon = %.4f\n" "CorrectionsBody = %.4f\n" @@ -647,7 +714,7 @@ msgstr "CorrectionsMoon = %.4f\n" "CorrectionsBody = %.4f\n" "Corrections = abs(CorrectionsMoon - CorrectionsBody) = %.4f\n" -#: src/Sight.cpp:863 +#: src\Sight.cpp:884 src\Sight.cpp.bak:885 #, c-format msgid "CorrectedMeasurement = Measurement - Corrections - IndexCorrection\n" "CorrectedMeasurement = %.4f - %.4f - %.4f\n" @@ -656,85 +723,65 @@ msgstr "CorrectedMeasurement = Measurement - Corrections - IndexCorrection\n" "CorrectedMeasurement = %.4f - %.4f - %.4f\n" "CorrectedMeasurement = %.4f\n" -#: src/Sight.cpp:888 +#: src\Sight.cpp:909 src\Sight.cpp.bak:910 msgid "\n" "Calculated angle between Moon and " msgstr "\n" " Angle calculé entre la Lune et " -#: src/Sight.cpp:890 +#: src\Sight.cpp:911 src\Sight.cpp.bak:912 #, c-format msgid "\n" "Error from measurement: %.4f" msgstr "\n" " mesure erronée  : %.4f" -#: src/Sight.cpp:894 +#: src\Sight.cpp:915 src\Sight.cpp.bak:916 msgid "\n" "Moon takes 28 days to orbit, one degree of error takes 6720 seconds" msgstr "\n" " Le Cycle lunaire est de 28 jours Un degré d’erreur prend 6720 secondes" -#: src/Sight.cpp:895 +#: src\Sight.cpp:916 src\Sight.cpp.bak:917 #, c-format msgid "\n" "Time correction %.4f seconds" msgstr "\n" "Correction du temps de %.4f secondes" -#: src/Sight.cpp:1099 +#: src\Sight.cpp:1120 src\Sight.cpp.bak:1121 msgid "Building bearing Sight Positions" msgstr "Construction du cap vers les positions de la vue" -#: src/SightDialog.cpp:172 +#: src\SightDialog.cpp:184 msgid "Measurement certainty likely set to small, sight may not appear " msgstr "Certaines mesures sont trop faibles. La vue ne peut apparaitre " -#: src/SightDialog.cpp:173 src/SightDialog.cpp:256 +#: src\SightDialog.cpp:185 src\SightDialog.cpp:279 msgid "Warning" msgstr "Avertissement" -#: src/SightDialog.cpp:255 +#: src\SightDialog.cpp:278 msgid "Lunar shot will be invalid taking distance from moon to itself" msgstr "La visée lunaire sera invalide en prenant la distance de la lune à elle-même" -#: src/celestial_navigation_pi.cpp:90 -msgid "Failed to load file:\n" -msgstr "Echec du chargement du fichier :\n" +#: src\celestial_navigation_pi.cpp:179 +msgid "open error" +msgstr "Erreur d'ouverture" -#: src/celestial_navigation_pi.cpp:91 -msgid "\n" -"Magnetic data will not be available for the celestial navigation plugin." -msgstr "\n" -"Les données magnétiques ne sont pas disponibles pour le complément de navigation céleste." +#: src\celestial_navigation_pi.cpp:180 +msgid "corrupt record" +msgstr "enregistrement corrompu" -#: src/celestial_navigation_pi.cpp:92 -msgid "OpenCPN Alert" -msgstr "Message d'alerte d'OpenCPN" +#: src\celestial_navigation_pi.cpp:181 +msgid "too many models" +msgstr "trop de modèles" -#: src/celestial_navigation_pi.cpp:157 -msgid "Celestial Navigation PlugIn for OpenCPN" -msgstr "Complément \"Navigation stellaire\" pour OpenCPN" - -#: src/celestial_navigation_pi.cpp:162 -msgid "Celestial Navigation PlugIn for OpenCPN.\n" -"Implements nautical almanac for sun, moon, planets,\n" -"and various navigational stars.\n" -"Compute position fix from celestial measurements." -msgstr "Complément pour la navigation astrale .\n" -"Implémentation d'un almanach céleste pour le soleil, la lune\n" -" et diverses étoiles.\n" -". Il permet aux utilisateurs de calculer la position en fonction des mesures célestes effectuées." - -#: src/FixDialog.cpp:189 -msgid "Shifted sights are not used to compute a fix, determine fix visually instead.\n" -msgstr "Les vues décalées ne sont pas utilisables pour calculer une solution, déterminer et fixer visuellement l'emplacement. \n" - -#: src/FixDialog.cpp:190 -msgid "Fix Position" -msgstr "Position" +#: src\celestial_navigation_pi.cpp:184 +msgid "Magnetic data will not be available for the celestial navigation plugin." +msgstr "Les données magnétiques ne seront pas disponibles pour le plugin de navigation céleste." -#: src/FixDialog.cpp:335 src/FixDialog.cpp:336 src/FixDialog.cpp:337 -msgid " N/A " -msgstr " N/A " +#: src\celestial_navigation_pi.cpp:185 +msgid "OpenCPN Alert" +msgstr "Message d'alerte d'OpenCPN" diff --git a/po/gl_ES.po b/po/gl_ES.po index fc45acc..d449d61 100644 --- a/po/gl_ES.po +++ b/po/gl_ES.po @@ -2,404 +2,468 @@ msgid "" msgstr "" "Project-Id-Version: opencpn\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-02-28 14:10-0300\n" -"PO-Revision-Date: 2016-09-21 16:33-0400\n" -"Last-Translator: nohal \n" +"POT-Creation-Date: 2021-10-27 22:15+0200\n" +"PO-Revision-Date: 2023-10-04 18:33\n" +"Last-Translator: \n" "Language-Team: Galician\n" "Language: gl_ES\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -"X-Generator: crowdin.com\n" "X-Crowdin-Project: opencpn\n" +"X-Crowdin-Project-ID: 49843\n" "X-Crowdin-Language: gl\n" "X-Crowdin-File: /plugins/celestial_navigation_pi/po/celestial_navigation_pi.pot\n" +"X-Crowdin-File-ID: 108\n" -#: src/CelestialNavigationDialog.cpp:123 src/CelestialNavigationUI.cpp:132 +#: src\CelestialNavigationDialog-2.3.5.1-no-android.cpp:149 +#: src\CelestialNavigationDialog-2.3.5.2-android.cpp:150 +#: src\CelestialNavigationDialog-partial-android.cpp:149 +#: src\CelestialNavigationDialog.cpp:150 src\CelestialNavigationUI.cpp:137 msgid "Type" msgstr "Tipo" -#: src/CelestialNavigationDialog.cpp:124 +#: src\CelestialNavigationDialog-2.3.5.1-no-android.cpp:150 +#: src\CelestialNavigationDialog-2.3.5.2-android.cpp:151 +#: src\CelestialNavigationDialog-partial-android.cpp:150 +#: src\CelestialNavigationDialog.cpp:151 msgid "Body" msgstr "Astro" -#: src/CelestialNavigationDialog.cpp:125 -msgid "Time (UTC)" -msgstr "Hora (UTC)" +#: src\CelestialNavigationDialog-2.3.5.1-no-android.cpp:151 +#: src\CelestialNavigationDialog-2.3.5.2-android.cpp:152 +#: src\CelestialNavigationDialog-partial-android.cpp:151 +#: src\CelestialNavigationDialog.cpp:152 src\CelestialNavigationUI.cpp:328 +msgid "Time (UT)" +msgstr "" -#: src/CelestialNavigationDialog.cpp:126 src/CelestialNavigationUI.cpp:179 +#: src\CelestialNavigationDialog-2.3.5.1-no-android.cpp:152 +#: src\CelestialNavigationDialog-2.3.5.2-android.cpp:153 +#: src\CelestialNavigationDialog-partial-android.cpp:152 +#: src\CelestialNavigationDialog.cpp:153 src\CelestialNavigationUI.cpp:184 msgid "Measurement" msgstr "Medición" -#: src/CelestialNavigationDialog.cpp:127 src/CelestialNavigationUI.cpp:376 +#: src\CelestialNavigationDialog-2.3.5.1-no-android.cpp:153 +#: src\CelestialNavigationDialog-2.3.5.2-android.cpp:154 +#: src\CelestialNavigationDialog-partial-android.cpp:153 +#: src\CelestialNavigationDialog.cpp:154 src\CelestialNavigationUI.cpp:381 msgid "Color" msgstr "Cor" -#: src/CelestialNavigationDialog.cpp:193 -msgid "Failed to load file." -msgstr "Erro ó cargar o ficheiro." +#: src\CelestialNavigationDialog-2.3.5.1-no-android.cpp:266 +#: src\CelestialNavigationDialog-2.3.5.2-android.cpp:272 +#: src\CelestialNavigationDialog-partial-android.cpp:266 +#: src\CelestialNavigationDialog.cpp:272 src\celestial_navigation_pi.cpp:177 +msgid "Failed to load file: " +msgstr "" -#: src/CelestialNavigationDialog.cpp:198 +#: src\CelestialNavigationDialog-2.3.5.1-no-android.cpp:271 +#: src\CelestialNavigationDialog-2.3.5.2-android.cpp:277 +#: src\CelestialNavigationDialog-partial-android.cpp:271 +#: src\CelestialNavigationDialog.cpp:277 msgid "Invalid xml file" msgstr "Ficheiro xml inválido" -#: src/CelestialNavigationDialog.cpp:250 +#: src\CelestialNavigationDialog-2.3.5.1-no-android.cpp:323 +#: src\CelestialNavigationDialog-2.3.5.2-android.cpp:329 +#: src\CelestialNavigationDialog-partial-android.cpp:323 +#: src\CelestialNavigationDialog.cpp:329 msgid "Unrecognized xml node" msgstr "Nodo xml non recoñecido" -#: src/CelestialNavigationDialog.cpp:260 -msgid "Weather Routing" -msgstr "Ruta meteorolóxica" +#: src\CelestialNavigationDialog-2.3.5.1-no-android.cpp:332 +#: src\CelestialNavigationDialog-2.3.5.1-no-android.cpp:392 +#: src\CelestialNavigationDialog-2.3.5.1-no-android.cpp:532 +#: src\CelestialNavigationDialog-2.3.5.2-android.cpp:338 +#: src\CelestialNavigationDialog-2.3.5.2-android.cpp:398 +#: src\CelestialNavigationDialog-2.3.5.2-android.cpp:538 +#: src\CelestialNavigationDialog-partial-android.cpp:332 +#: src\CelestialNavigationDialog-partial-android.cpp:392 +#: src\CelestialNavigationDialog-partial-android.cpp:532 +#: src\CelestialNavigationDialog.cpp:338 src\CelestialNavigationDialog.cpp:398 +#: src\CelestialNavigationDialog.cpp:538 src\Sight.cpp:1120 +#: src\Sight.cpp.bak:1121 src\celestial_navigation_pi.cpp:95 +#: src\celestial_navigation_pi.cpp:99 +msgid "Celestial Navigation" +msgstr "Navegación astronómica" -#: src/CelestialNavigationDialog.cpp:320 +#: src\CelestialNavigationDialog-2.3.5.1-no-android.cpp:391 +#: src\CelestialNavigationDialog-2.3.5.2-android.cpp:397 +#: src\CelestialNavigationDialog-partial-android.cpp:391 +#: src\CelestialNavigationDialog.cpp:397 msgid "Failed to save xml file: " msgstr "Erro ó gardar o ficheiro xml: " -#: src/CelestialNavigationDialog.cpp:321 src/CelestialNavigationDialog.cpp:466 -#: src/Sight.cpp:1099 src/celestial_navigation_pi.cpp:99 -#: src/celestial_navigation_pi.cpp:152 -msgid "Celestial Navigation" -msgstr "Navegación astronómica" - -#: src/CelestialNavigationDialog.cpp:351 +#: src\CelestialNavigationDialog-2.3.5.1-no-android.cpp:424 +#: src\CelestialNavigationDialog-2.3.5.2-android.cpp:430 +#: src\CelestialNavigationDialog-partial-android.cpp:424 +#: src\CelestialNavigationDialog.cpp:430 msgid "Time Correction" msgstr "" -#: src/CelestialNavigationDialog.cpp:409 +#: src\CelestialNavigationDialog-2.3.5.1-no-android.cpp:473 +#: src\CelestialNavigationDialog-2.3.5.2-android.cpp:479 +#: src\CelestialNavigationDialog-partial-android.cpp:473 +#: src\CelestialNavigationDialog.cpp:479 msgid "Sun" msgstr "Sol" -#: src/CelestialNavigationDialog.cpp:465 +#: src\CelestialNavigationDialog-2.3.5.1-no-android.cpp:531 +#: src\CelestialNavigationDialog-2.3.5.2-android.cpp:537 +#: src\CelestialNavigationDialog-partial-android.cpp:531 +#: src\CelestialNavigationDialog.cpp:537 msgid "Are you sure you want to delete all sights?" msgstr "Está seguro de que quere borrar todas as observacións?" -#: src/CelestialNavigationDialog.cpp:510 +#: src\CelestialNavigationDialog-2.3.5.1-no-android.cpp:582 +#: src\CelestialNavigationDialog-2.3.5.2-android.cpp:588 +#: src\CelestialNavigationDialog-partial-android.cpp:582 +#: src\CelestialNavigationDialog.cpp:588 msgid "Celestial_Navigation_Information.html" msgstr "Celestial_Navigation_Information.html" -#: src/CelestialNavigationDialog.cpp:516 -msgid "Show" +#: src\CelestialNavigationDialog-2.3.5.1-no-android.cpp:589 +#: src\CelestialNavigationDialog-2.3.5.2-android.cpp:595 +#: src\CelestialNavigationDialog-partial-android.cpp:589 +#: src\CelestialNavigationDialog.cpp:595 src\CelestialNavigationUI.cpp:55 +msgid "Hide" msgstr "" -#: src/CelestialNavigationDialog.cpp:516 src/CelestialNavigationUI.cpp:58 -msgid "Hide" +#: src\CelestialNavigationDialog-2.3.5.1-no-android.cpp:589 +#: src\CelestialNavigationDialog-2.3.5.2-android.cpp:595 +#: src\CelestialNavigationDialog-partial-android.cpp:589 +#: src\CelestialNavigationDialog.cpp:595 +msgid "Show" msgstr "" -#: src/CelestialNavigationUI.cpp:40 +#: src\CelestialNavigationUI.cpp:40 msgid "New" msgstr "Novo" -#: src/CelestialNavigationUI.cpp:43 -msgid "Edit" -msgstr "Editar" - -#: src/CelestialNavigationUI.cpp:46 -msgid "Delete" -msgstr "Borrar" - -#: src/CelestialNavigationUI.cpp:49 -msgid "Delete All" -msgstr "Borrar todo" - -#: src/CelestialNavigationUI.cpp:52 src/CelestialNavigationUI.h:281 +#: src\CelestialNavigationUI.cpp:43 src\CelestialNavigationUI.h:286 msgid "Fix" msgstr "" -#: src/CelestialNavigationUI.cpp:55 +#: src\CelestialNavigationUI.cpp:46 +msgid "Duplicate" +msgstr "" + +#: src\CelestialNavigationUI.cpp:49 msgid "Clock Offset" msgstr "" -#: src/CelestialNavigationUI.cpp:61 +#: src\CelestialNavigationUI.cpp:52 +msgid "Edit" +msgstr "Editar" + +#: src\CelestialNavigationUI.cpp:58 +msgid "Delete" +msgstr "Borrar" + +#: src\CelestialNavigationUI.cpp:61 msgid "Information" msgstr "Información" -#: src/CelestialNavigationUI.cpp:136 src/CelestialNavigationUI.cpp:667 -#: src/Sight.h:49 +#: src\CelestialNavigationUI.cpp:64 +msgid "Delete All" +msgstr "Borrar todo" + +#: src\CelestialNavigationUI.cpp:141 src\CelestialNavigationUI.cpp:674 +#: src\Sight.h:49 msgid "Altitude" msgstr "Altura" -#: src/CelestialNavigationUI.cpp:136 src/CelestialNavigationUI.cpp:677 -#: src/Sight.h:49 +#: src\CelestialNavigationUI.cpp:141 src\CelestialNavigationUI.cpp:683 +#: src\Sight.h:49 msgid "Azimuth" msgstr "Acimut" -#: src/CelestialNavigationUI.cpp:136 src/Sight.h:49 +#: src\CelestialNavigationUI.cpp:141 src\Sight.h:49 msgid "Lunar" msgstr "" -#: src/CelestialNavigationUI.cpp:142 +#: src\CelestialNavigationUI.cpp:147 msgid "Magnetic Azimuth" msgstr "Acimut magnético" -#: src/CelestialNavigationUI.cpp:145 +#: src\CelestialNavigationUI.cpp:150 msgid "Celestial Body" msgstr "Corpo celeste" -#: src/CelestialNavigationUI.cpp:154 +#: src\CelestialNavigationUI.cpp:159 msgid "Find" msgstr "Procurar" -#: src/CelestialNavigationUI.cpp:157 +#: src\CelestialNavigationUI.cpp:162 msgid "Limb" msgstr "Limbo" -#: src/CelestialNavigationUI.cpp:161 -msgid "Lower" -msgstr "Inferior" - -#: src/CelestialNavigationUI.cpp:161 +#: src\CelestialNavigationUI.cpp:166 msgid "Center" msgstr "Central" -#: src/CelestialNavigationUI.cpp:161 +#: src\CelestialNavigationUI.cpp:166 +msgid "Lower" +msgstr "Inferior" + +#: src\CelestialNavigationUI.cpp:166 msgid "Upper" msgstr "Superior" -#: src/CelestialNavigationUI.cpp:186 src/CelestialNavigationUI.cpp:193 -#: src/CelestialNavigationUI.cpp:223 src/CelestialNavigationUI.cpp:230 +#: src\CelestialNavigationUI.cpp:191 src\CelestialNavigationUI.cpp:198 +#: src\CelestialNavigationUI.cpp:228 src\CelestialNavigationUI.cpp:235 msgid "0" msgstr "0" -#: src/CelestialNavigationUI.cpp:189 src/CelestialNavigationUI.cpp:348 -#: src/CelestialNavigationUI.cpp:598 +#: src\CelestialNavigationUI.cpp:194 src\CelestialNavigationUI.cpp:353 +#: src\CelestialNavigationUI.cpp:605 msgid "Degrees" msgstr "Graos" -#: src/CelestialNavigationUI.cpp:196 src/CelestialNavigationUI.cpp:278 -#: src/CelestialNavigationUI.cpp:439 +#: src\CelestialNavigationUI.cpp:201 src\CelestialNavigationUI.cpp:283 +#: src\CelestialNavigationUI.cpp:444 msgid "Minutes" msgstr "Minutos" -#: src/CelestialNavigationUI.cpp:200 +#: src\CelestialNavigationUI.cpp:205 msgid "10" msgstr "" -#: src/CelestialNavigationUI.cpp:203 +#: src\CelestialNavigationUI.cpp:208 msgid "Minutes Certainty" msgstr "" -#: src/CelestialNavigationUI.cpp:217 +#: src\CelestialNavigationUI.cpp:222 msgid "Lunar Altitude" msgstr "" -#: src/CelestialNavigationUI.cpp:226 +#: src\CelestialNavigationUI.cpp:231 msgid "Body Altitude" msgstr "" -#: src/CelestialNavigationUI.cpp:243 +#: src\CelestialNavigationUI.cpp:248 msgid "Sight" msgstr "Observación" -#: src/CelestialNavigationUI.cpp:271 +#: src\CelestialNavigationUI.cpp:276 msgid "Hours" msgstr "Horas" -#: src/CelestialNavigationUI.cpp:285 src/CelestialNavigationUI.cpp:303 -#: src/CelestialNavigationUI.cpp:860 +#: src\CelestialNavigationUI.cpp:290 src\CelestialNavigationUI.cpp:308 +#: src\CelestialNavigationUI.cpp:869 msgid "Seconds" msgstr "Segundos" -#: src/CelestialNavigationUI.cpp:293 +#: src\CelestialNavigationUI.cpp:298 msgid "Certainty" msgstr "Certeza" -#: src/CelestialNavigationUI.cpp:323 -msgid "Time" -msgstr "" - -#: src/CelestialNavigationUI.cpp:330 src/CelestialNavigationUI.cpp:580 +#: src\CelestialNavigationUI.cpp:335 src\CelestialNavigationUI.cpp:587 msgid "Distance" msgstr "Distancia" -#: src/CelestialNavigationUI.cpp:337 src/CelestialNavigationUI.cpp:587 +#: src\CelestialNavigationUI.cpp:342 src\CelestialNavigationUI.cpp:594 msgid "Nm" msgstr "Nm" -#: src/CelestialNavigationUI.cpp:341 src/CelestialNavigationUI.cpp:591 +#: src\CelestialNavigationUI.cpp:346 src\CelestialNavigationUI.cpp:598 msgid "Bearing" msgstr "Rumbo" -#: src/CelestialNavigationUI.cpp:352 src/CelestialNavigationUI.cpp:602 +#: src\CelestialNavigationUI.cpp:357 src\CelestialNavigationUI.cpp:609 msgid "Magnetic Bearing" msgstr "Rumbo magético" -#: src/CelestialNavigationUI.cpp:359 +#: src\CelestialNavigationUI.cpp:364 msgid "DR Shift" msgstr "" -#: src/CelestialNavigationUI.cpp:366 +#: src\CelestialNavigationUI.cpp:371 msgid "Transparency" msgstr "Transparencia" -#: src/CelestialNavigationUI.cpp:387 +#: src\CelestialNavigationUI.cpp:392 msgid "Config" msgstr "Configuración" -#: src/CelestialNavigationUI.cpp:399 +#: src\CelestialNavigationUI.cpp:404 msgid "Eye Height" msgstr "Altura do ollo" -#: src/CelestialNavigationUI.cpp:403 +#: src\CelestialNavigationUI.cpp:408 msgid "2" msgstr "2" -#: src/CelestialNavigationUI.cpp:406 +#: src\CelestialNavigationUI.cpp:411 msgid "Meters" msgstr "Metros" -#: src/CelestialNavigationUI.cpp:410 +#: src\CelestialNavigationUI.cpp:415 msgid "Temperature" msgstr "Temperatura" -#: src/CelestialNavigationUI.cpp:417 +#: src\CelestialNavigationUI.cpp:422 msgid "Celcius" msgstr "Celsius" -#: src/CelestialNavigationUI.cpp:421 +#: src\CelestialNavigationUI.cpp:426 msgid "Pressure" msgstr "Presión" -#: src/CelestialNavigationUI.cpp:428 +#: src\CelestialNavigationUI.cpp:433 msgid "MilliBars" msgstr "Milibares" -#: src/CelestialNavigationUI.cpp:432 +#: src\CelestialNavigationUI.cpp:437 msgid "Index Error" msgstr "Error de índice" -#: src/CelestialNavigationUI.cpp:446 +#: src\CelestialNavigationUI.cpp:451 msgid "Set As Defaults" msgstr "Establecer como predeterminado" -#: src/CelestialNavigationUI.cpp:453 +#: src\CelestialNavigationUI.cpp:458 msgid "Parameters" msgstr "Parámetros" -#: src/CelestialNavigationUI.cpp:469 +#: src\CelestialNavigationUI.cpp:474 msgid "Calculations" msgstr "Cálculos" -#: src/CelestialNavigationUI.cpp:571 +#: src\CelestialNavigationUI.cpp:578 msgid "Shift all visible Sights" msgstr "" -#: src/CelestialNavigationUI.cpp:649 src/CelestialNavigationUI.cpp:760 +#: src\CelestialNavigationUI.cpp:656 src\CelestialNavigationUI.cpp:769 msgid "Latitude" msgstr "Latitude" -#: src/CelestialNavigationUI.cpp:658 src/CelestialNavigationUI.cpp:768 +#: src\CelestialNavigationUI.cpp:665 src\CelestialNavigationUI.cpp:777 msgid "Longitude" msgstr "Lonxitude" -#: src/CelestialNavigationUI.cpp:669 src/CelestialNavigationUI.cpp:679 -msgid "MyLabel" -msgstr "MyLabel" - -#: src/CelestialNavigationUI.cpp:686 -msgid "Done" -msgstr "Feito" +#: src\CelestialNavigationUI.cpp:691 +msgid "Boat Position" +msgstr "" -#: src/CelestialNavigationUI.cpp:689 +#: src\CelestialNavigationUI.cpp:695 msgid "Magnetic" msgstr "Magnético" -#: src/CelestialNavigationUI.cpp:753 +#: src\CelestialNavigationUI.cpp:698 +msgid "Done" +msgstr "Feito" + +#: src\CelestialNavigationUI.cpp:762 msgid "Fix From Visible Sights" msgstr "Solución por observacións visibles" -#: src/CelestialNavigationUI.cpp:764 +#: src\CelestialNavigationUI.cpp:773 msgid " N/A " msgstr " N/A " -#: src/CelestialNavigationUI.cpp:772 +#: src\CelestialNavigationUI.cpp:781 msgid " N/A " msgstr " N/A " -#: src/CelestialNavigationUI.cpp:776 +#: src\CelestialNavigationUI.cpp:785 msgid "Error" msgstr "Erro" -#: src/CelestialNavigationUI.cpp:780 +#: src\CelestialNavigationUI.cpp:789 msgid " N/A " msgstr " N/A " -#: src/CelestialNavigationUI.cpp:787 src/CelestialNavigationUI.cpp:794 +#: src\CelestialNavigationUI.cpp:796 src\CelestialNavigationUI.cpp:803 msgid "Initial" msgstr "Inicial" -#: src/CelestialNavigationUI.cpp:801 +#: src\CelestialNavigationUI.cpp:810 msgid "Alg" msgstr "Alg" -#: src/CelestialNavigationUI.cpp:806 +#: src\CelestialNavigationUI.cpp:815 msgid "Plane" msgstr "Plana" -#: src/CelestialNavigationUI.cpp:807 +#: src\CelestialNavigationUI.cpp:816 msgid "Sphere" msgstr "Esfera" -#: src/CelestialNavigationUI.cpp:808 +#: src\CelestialNavigationUI.cpp:817 msgid "Cone" msgstr "Cónica" -#: src/CelestialNavigationUI.cpp:809 +#: src\CelestialNavigationUI.cpp:818 msgid "Cone 2" msgstr "Cónica 2" -#: src/CelestialNavigationUI.cpp:813 +#: src\CelestialNavigationUI.cpp:822 msgid "Go" msgstr "Calcular" -#: src/CelestialNavigationUI.cpp:850 src/CelestialNavigationUI.h:303 +#: src\CelestialNavigationUI.cpp:859 src\CelestialNavigationUI.h:308 msgid "Clock Correction" msgstr "" -#: src/CelestialNavigationUI.h:78 +#: src\CelestialNavigationUI.h:82 msgid "Celestial Navigation Sights" msgstr "Observacións de navegación astronómica" -#: src/CelestialNavigationUI.h:169 +#: src\CelestialNavigationUI.h:173 msgid "Sight Properties" msgstr "Propiedades da observación" -#: src/CelestialNavigationUI.h:200 +#: src\CelestialNavigationUI.h:204 msgid "Dead Reckoning shift" msgstr "" -#: src/CelestialNavigationUI.h:227 +#: src\CelestialNavigationUI.h:232 msgid "Find Celestial Body" msgstr "Procurar corpo celeste" -#: src/Sight.cpp:160 +#: src\FixDialog.cpp:192 +msgid "Shifted sights are not used to compute a fix, determine fix visually instead.\n" +msgstr "As observacións trasladadas non se usan para calcular unha solución, determínea visualmente no seu lugar.\n" + +#: src\FixDialog.cpp:193 +msgid "Fix Position" +msgstr "Posición calculada" + +#: src\FixDialog.cpp:338 src\FixDialog.cpp:339 src\FixDialog.cpp:340 +msgid " N/A " +msgstr " N/A " + +#: src\Sight.cpp:172 src\Sight.cpp.bak:173 msgid "Astrolab failed, data unavailable:\n" msgstr "Astrolab fallor, datos non dispoñibles:\n" -#: src/Sight.cpp:161 +#: src\Sight.cpp:173 src\Sight.cpp.bak:174 msgid "\n" "Did you forget to install vsop87d.txt?\n" msgstr "\n" "Esquenceu instalar vsop87d.txt?\n" -#: src/Sight.cpp:162 +#: src\Sight.cpp:174 src\Sight.cpp.bak:175 msgid "The plugin will not work correctly" msgstr "O complemento non traballa correctamente" -#: src/Sight.cpp:163 +#: src\Sight.cpp:175 src\Sight.cpp.bak:176 msgid "Failure Alert" msgstr "Alerta de fallo" -#: src/Sight.cpp:474 +#: src\Sight.cpp:495 src\Sight.cpp.bak:496 #, c-format msgid "Applying clock correction of %d seconds\n\n" msgstr "" -#: src/Sight.cpp:536 +#: src\Sight.cpp:557 src\Sight.cpp.bak:558 msgid "Almanac Data For " msgstr "Datos do almanaque para " -#: src/Sight.cpp:537 +#: src\Sight.cpp:558 src\Sight.cpp.bak:559 #, c-format msgid "\n" "Geographical Position (lat, lon) = %.4f %.4f\n" @@ -418,16 +482,19 @@ msgstr "\n" "SD = %.1f'\n" "HP = %.1f'\n\n" -#: src/Sight.cpp:552 src/Sight.cpp:690 +#: src\Sight.cpp:573 src\Sight.cpp:711 src\Sight.cpp.bak:574 +#: src\Sight.cpp.bak:712 msgid "Formulas used to calculate sight\n\n" msgstr "Fórmulas utilizadas para calcular a observación\n\n" -#: src/Sight.cpp:556 src/Sight.cpp:694 +#: src\Sight.cpp:577 src\Sight.cpp:715 src\Sight.cpp.bak:578 +#: src\Sight.cpp.bak:716 #, c-format msgid "Index Error is %.4f degrees\n\n" msgstr "O erro de índice é %.4f graos\n\n" -#: src/Sight.cpp:561 src/Sight.cpp:699 +#: src\Sight.cpp:582 src\Sight.cpp:720 src\Sight.cpp.bak:583 +#: src\Sight.cpp.bak:721 #, c-format msgid "Eye Height is %.4f meters\n" "Height Correction Degrees = 1.758*sqrt(%.4f) / 60.0\n" @@ -436,7 +503,8 @@ msgstr "A altura do ollo é %.4f metros\n" "Corrección da altura en graos= 1.758*sqrt(%.4f) / 60.0\n" "Graos de correción da altura = %.4f\n" -#: src/Sight.cpp:568 +#: src\Sight.cpp:589 src\Sight.cpp:799 src\Sight.cpp.bak:590 +#: src\Sight.cpp.bak:800 #, c-format msgid "\n" "Apparent Altitude (Ha)\n" @@ -449,7 +517,8 @@ msgstr "\n" "Altura Aparente = %.4f - %.4f - %.4f\n" "Altura Aparente = %.4f\n" -#: src/Sight.cpp:586 src/Sight.cpp:789 +#: src\Sight.cpp:607 src\Sight.cpp:810 src\Sight.cpp.bak:608 +#: src\Sight.cpp.bak:811 #, c-format msgid "\n" "Refraction Correction\n" @@ -462,7 +531,8 @@ msgstr "\n" "x = tan(Pi/180*%.4f + 4.848e-2*(Pi/180) / (tan(Pi/180*%.4f) + .028))\n" "x = %.4f\n" -#: src/Sight.cpp:591 src/Sight.cpp:794 +#: src\Sight.cpp:612 src\Sight.cpp:815 src\Sight.cpp.bak:613 +#: src\Sight.cpp.bak:816 #, c-format msgid "RefractionCorrection = .267 * Pressure / (x*(Temperature + 273.15)) / 60.0\n" "RefractionCorrection = .267 * %.4f / (x*(%.4f + 273.15)) / 60.0\n" @@ -471,7 +541,8 @@ msgstr "Corrección por refracción = .267 * Presión / (x*(Temperatura + 273.15 "Corrección por Refracción = .267 * %.4f / (x*(%.4f + 273.15)) / 60.0\n" "Corrección por Refracción = %.4f\n" -#: src/Sight.cpp:606 src/Sight.cpp:808 +#: src\Sight.cpp:627 src\Sight.cpp:829 src\Sight.cpp.bak:628 +#: src\Sight.cpp.bak:830 #, c-format msgid "\n" "Sun selected, Limb Correction\n" @@ -480,7 +551,8 @@ msgstr "\n" "Sol seleccionado, Corrección por limbo\n" "ra = %.4f, lc = 0.266564/ra = %.4f\n" -#: src/Sight.cpp:616 src/Sight.cpp:732 +#: src\Sight.cpp:637 src\Sight.cpp:753 src\Sight.cpp.bak:638 +#: src\Sight.cpp.bak:754 #, c-format msgid "\n" "Moon selected, Limb Correction\n" @@ -493,22 +565,26 @@ msgstr "\n" "lc = 180/Pi * asin(Pi/180*SD)\n" "lc = %.4f\n" -#: src/Sight.cpp:626 src/Sight.cpp:741 src/Sight.cpp:816 +#: src\Sight.cpp:647 src\Sight.cpp:762 src\Sight.cpp:837 src\Sight.cpp.bak:648 +#: src\Sight.cpp.bak:763 src\Sight.cpp.bak:838 msgid "Upper Limb" msgstr "Limbo superior" -#: src/Sight.cpp:629 src/Sight.cpp:744 src/Sight.cpp:819 +#: src\Sight.cpp:650 src\Sight.cpp:765 src\Sight.cpp:840 src\Sight.cpp.bak:651 +#: src\Sight.cpp.bak:766 src\Sight.cpp.bak:841 msgid "Lower Limb" msgstr "Limbo inferior" -#: src/Sight.cpp:632 src/Sight.cpp:822 +#: src\Sight.cpp:653 src\Sight.cpp:843 src\Sight.cpp.bak:654 +#: src\Sight.cpp.bak:844 #, c-format msgid "\n" "LimbCorrection = %.4f\n" msgstr "\n" "Corrección por limbo = %.4f\n" -#: src/Sight.cpp:636 src/Sight.cpp:826 +#: src\Sight.cpp:657 src\Sight.cpp:847 src\Sight.cpp.bak:658 +#: src\Sight.cpp.bak:848 #, c-format msgid "\n" "Corrected Altitude\n" @@ -521,7 +597,8 @@ msgstr "\n" "Altura Corrixida = %.4f - %.4f - %.4f\n" "Altura Corrixida = %.4f\n" -#: src/Sight.cpp:650 src/Sight.cpp:840 +#: src\Sight.cpp:671 src\Sight.cpp:861 src\Sight.cpp.bak:672 +#: src\Sight.cpp.bak:862 #, c-format msgid "\n" "Sun selected, parallax correction\n" @@ -530,7 +607,8 @@ msgstr "\n" "Sol seleccionado, Corrección por paralaxe\n" "rad = %.4f, HP = 0.002442/rad = %.4f\n" -#: src/Sight.cpp:659 src/Sight.cpp:764 +#: src\Sight.cpp:680 src\Sight.cpp:785 src\Sight.cpp.bak:681 +#: src\Sight.cpp.bak:786 #, c-format msgid "\n" "Moon selected, parallax correction\n" @@ -539,7 +617,8 @@ msgstr "\n" "Lúa seleccionada, Corrección por paralaxe\n" "HP = %.4f\n" -#: src/Sight.cpp:665 src/Sight.cpp:846 +#: src\Sight.cpp:686 src\Sight.cpp:867 src\Sight.cpp.bak:687 +#: src\Sight.cpp.bak:868 #, c-format msgid "ParallaxCorrection = -180/Pi * asin( sin(Pi/180 * HP ) * cos(Pi/180 * CorrectedAltitude))\n" "ParallaxCorrection = -180/Pi * asin( sin(Pi/180 * %.4f ) * cos(Pi/180 * %.4f))\n" @@ -548,7 +627,7 @@ msgstr "Corrección por paralaxe = -180/Pi * asin( sin(Pi/180 * HP ) * cos(Pi/18 "Corrección por paralaxe = -180/Pi * asin( sin(Pi/180 * %.4f ) * cos(Pi/180 * %.4f))\n" "Corrección por paralaxe = %.4f\n" -#: src/Sight.cpp:672 +#: src\Sight.cpp:693 src\Sight.cpp.bak:694 #, c-format msgid "\n" "Observed Altitude (Ho)\n" @@ -561,16 +640,16 @@ msgstr "\n" "Altura Observada = %.4f - %.4f\n" "Altura Observada = %.4f\n" -#: src/Sight.cpp:706 +#: src\Sight.cpp:727 src\Sight.cpp.bak:728 #, c-format msgid "\n" "Apparent Moon Altitude (Ha)\n" "ApparentAltitudeMoon = MeasurementMoon - IndexCorrection - EyeHeightCorrection\n" -" ApparentAltitudeMoon = %.4f - %.4f - %.4f\n" +"ApparentAltitudeMoon = %.4f - %.4f - %.4f\n" "ApparentAltitudeMoon = %.4f\n" msgstr "" -#: src/Sight.cpp:717 +#: src\Sight.cpp:738 src\Sight.cpp.bak:739 #, c-format msgid "\n" "Refraction Correction\n" @@ -579,20 +658,21 @@ msgid "\n" "x = %.4f\n" msgstr "" -#: src/Sight.cpp:722 +#: src\Sight.cpp:743 src\Sight.cpp.bak:744 #, c-format msgid "RefractionCorrectionMoon = .267 * Pressure / (x*(Temperature + 273.15)) / 60.0\n" "RefractionCorrectionMoon = .267 * %.4f / (x*(%.4f + 273.15)) / 60.0\n" "RefractionCorrectionMoon = %.4f\n" msgstr "" -#: src/Sight.cpp:747 src/Sight.cpp:750 +#: src\Sight.cpp:768 src\Sight.cpp:771 src\Sight.cpp.bak:769 +#: src\Sight.cpp.bak:772 #, c-format msgid "\n" "LimbCorrectionMoon = %.4f\n" msgstr "" -#: src/Sight.cpp:753 +#: src\Sight.cpp:774 src\Sight.cpp.bak:775 #, c-format msgid "\n" "Corrected Altitude\n" @@ -601,108 +681,82 @@ msgid "\n" "CorrectedAltitudeMoon = %.4f\n" msgstr "" -#: src/Sight.cpp:768 +#: src\Sight.cpp:789 src\Sight.cpp.bak:790 #, c-format msgid "ParallaxCorrectionMoon = -180/Pi * asin( sin(Pi/180 * HP ) * cos(Pi/180 * CorrectedAltitude))\n" -" ParallaxCorrectionMoon = -180/Pi * asin( sin(Pi/180 * %.4f ) * cos(Pi/180 * %.4f))\n" +"ParallaxCorrectionMoon = -180/Pi * asin( sin(Pi/180 * %.4f ) * cos(Pi/180 * %.4f))\n" "ParallaxCorrectionMoon = %.4f\n" msgstr "" -#: src/Sight.cpp:778 -#, c-format -msgid "\n" -"Apparent Altitude (Ha)\n" -"ApparentAltitude = Measurement - IndexCorrection - EyeHeightCorrection\n" -" ApparentAltitude = %.4f - %.4f - %.4f\n" -"ApparentAltitude = %.4f\n" -msgstr "" - -#: src/Sight.cpp:857 +#: src\Sight.cpp:878 src\Sight.cpp.bak:879 #, c-format msgid "CorrectionsMoon = %.4f\n" "CorrectionsBody = %.4f\n" "Corrections = abs(CorrectionsMoon - CorrectionsBody) = %.4f\n" msgstr "" -#: src/Sight.cpp:863 +#: src\Sight.cpp:884 src\Sight.cpp.bak:885 #, c-format msgid "CorrectedMeasurement = Measurement - Corrections - IndexCorrection\n" "CorrectedMeasurement = %.4f - %.4f - %.4f\n" "CorrectedMeasurement = %.4f\n" msgstr "" -#: src/Sight.cpp:888 +#: src\Sight.cpp:909 src\Sight.cpp.bak:910 msgid "\n" "Calculated angle between Moon and " msgstr "" -#: src/Sight.cpp:890 +#: src\Sight.cpp:911 src\Sight.cpp.bak:912 #, c-format msgid "\n" "Error from measurement: %.4f" msgstr "" -#: src/Sight.cpp:894 +#: src\Sight.cpp:915 src\Sight.cpp.bak:916 msgid "\n" "Moon takes 28 days to orbit, one degree of error takes 6720 seconds" msgstr "" -#: src/Sight.cpp:895 +#: src\Sight.cpp:916 src\Sight.cpp.bak:917 #, c-format msgid "\n" "Time correction %.4f seconds" msgstr "" -#: src/Sight.cpp:1099 +#: src\Sight.cpp:1120 src\Sight.cpp.bak:1121 msgid "Building bearing Sight Positions" msgstr "Resolvendo situación das observacións" -#: src/SightDialog.cpp:172 +#: src\SightDialog.cpp:184 msgid "Measurement certainty likely set to small, sight may not appear " msgstr "Estableceuse unha certeza de medición moi pequena, a observación pode non aparecer " -#: src/SightDialog.cpp:173 src/SightDialog.cpp:256 +#: src\SightDialog.cpp:185 src\SightDialog.cpp:279 msgid "Warning" msgstr "Aviso" -#: src/SightDialog.cpp:255 +#: src\SightDialog.cpp:278 msgid "Lunar shot will be invalid taking distance from moon to itself" msgstr "" -#: src/celestial_navigation_pi.cpp:90 -msgid "Failed to load file:\n" -msgstr "Erro ó cargar o ficheiro:\n" - -#: src/celestial_navigation_pi.cpp:91 -msgid "\n" -"Magnetic data will not be available for the celestial navigation plugin." -msgstr "\n" -"Os datos magnéticos non están dispoñibles para o complemento de navegación astronómica." - -#: src/celestial_navigation_pi.cpp:92 -msgid "OpenCPN Alert" -msgstr "Aviso OpenCPN" - -#: src/celestial_navigation_pi.cpp:157 -msgid "Celestial Navigation PlugIn for OpenCPN" -msgstr "Complemento de Navegación Astronómica para OpenCPN" +#: src\celestial_navigation_pi.cpp:179 +msgid "open error" +msgstr "" -#: src/celestial_navigation_pi.cpp:162 -msgid "Celestial Navigation PlugIn for OpenCPN.\n" -"Implements nautical almanac for sun, moon, planets,\n" -"and various navigational stars.\n" -"Compute position fix from celestial measurements." +#: src\celestial_navigation_pi.cpp:180 +msgid "corrupt record" msgstr "" -#: src/FixDialog.cpp:189 -msgid "Shifted sights are not used to compute a fix, determine fix visually instead.\n" -msgstr "As observacións trasladadas non se usan para calcular unha solución, determínea visualmente no seu lugar.\n" +#: src\celestial_navigation_pi.cpp:181 +msgid "too many models" +msgstr "" -#: src/FixDialog.cpp:190 -msgid "Fix Position" -msgstr "Posición calculada" +#: src\celestial_navigation_pi.cpp:184 +msgid "Magnetic data will not be available for the celestial navigation plugin." +msgstr "" -#: src/FixDialog.cpp:335 src/FixDialog.cpp:336 src/FixDialog.cpp:337 -msgid " N/A " -msgstr " N/A " +#: src\celestial_navigation_pi.cpp:185 +msgid "OpenCPN Alert" +msgstr "Aviso OpenCPN" diff --git a/po/he_IL.po b/po/he_IL.po new file mode 100644 index 0000000..14cc456 --- /dev/null +++ b/po/he_IL.po @@ -0,0 +1,721 @@ +msgid "" +msgstr "" +"Project-Id-Version: opencpn\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2021-10-27 22:15+0200\n" +"PO-Revision-Date: 2023-10-04 18:33\n" +"Last-Translator: \n" +"Language-Team: Hebrew\n" +"Language: he_IL\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=4; plural=n%100==1 ? 0 : n%100==2 ? 1 : n%100==3 || n%100==4 ? 2 : 3;\n" +"X-Crowdin-Project: opencpn\n" +"X-Crowdin-Project-ID: 49843\n" +"X-Crowdin-Language: he\n" +"X-Crowdin-File: /plugins/celestial_navigation_pi/po/celestial_navigation_pi.pot\n" +"X-Crowdin-File-ID: 108\n" + +#: src\CelestialNavigationDialog-2.3.5.1-no-android.cpp:149 +#: src\CelestialNavigationDialog-2.3.5.2-android.cpp:150 +#: src\CelestialNavigationDialog-partial-android.cpp:149 +#: src\CelestialNavigationDialog.cpp:150 src\CelestialNavigationUI.cpp:137 +msgid "Type" +msgstr "" + +#: src\CelestialNavigationDialog-2.3.5.1-no-android.cpp:150 +#: src\CelestialNavigationDialog-2.3.5.2-android.cpp:151 +#: src\CelestialNavigationDialog-partial-android.cpp:150 +#: src\CelestialNavigationDialog.cpp:151 +msgid "Body" +msgstr "" + +#: src\CelestialNavigationDialog-2.3.5.1-no-android.cpp:151 +#: src\CelestialNavigationDialog-2.3.5.2-android.cpp:152 +#: src\CelestialNavigationDialog-partial-android.cpp:151 +#: src\CelestialNavigationDialog.cpp:152 src\CelestialNavigationUI.cpp:328 +msgid "Time (UT)" +msgstr "" + +#: src\CelestialNavigationDialog-2.3.5.1-no-android.cpp:152 +#: src\CelestialNavigationDialog-2.3.5.2-android.cpp:153 +#: src\CelestialNavigationDialog-partial-android.cpp:152 +#: src\CelestialNavigationDialog.cpp:153 src\CelestialNavigationUI.cpp:184 +msgid "Measurement" +msgstr "" + +#: src\CelestialNavigationDialog-2.3.5.1-no-android.cpp:153 +#: src\CelestialNavigationDialog-2.3.5.2-android.cpp:154 +#: src\CelestialNavigationDialog-partial-android.cpp:153 +#: src\CelestialNavigationDialog.cpp:154 src\CelestialNavigationUI.cpp:381 +msgid "Color" +msgstr "" + +#: src\CelestialNavigationDialog-2.3.5.1-no-android.cpp:266 +#: src\CelestialNavigationDialog-2.3.5.2-android.cpp:272 +#: src\CelestialNavigationDialog-partial-android.cpp:266 +#: src\CelestialNavigationDialog.cpp:272 src\celestial_navigation_pi.cpp:177 +msgid "Failed to load file: " +msgstr "" + +#: src\CelestialNavigationDialog-2.3.5.1-no-android.cpp:271 +#: src\CelestialNavigationDialog-2.3.5.2-android.cpp:277 +#: src\CelestialNavigationDialog-partial-android.cpp:271 +#: src\CelestialNavigationDialog.cpp:277 +msgid "Invalid xml file" +msgstr "" + +#: src\CelestialNavigationDialog-2.3.5.1-no-android.cpp:323 +#: src\CelestialNavigationDialog-2.3.5.2-android.cpp:329 +#: src\CelestialNavigationDialog-partial-android.cpp:323 +#: src\CelestialNavigationDialog.cpp:329 +msgid "Unrecognized xml node" +msgstr "" + +#: src\CelestialNavigationDialog-2.3.5.1-no-android.cpp:332 +#: src\CelestialNavigationDialog-2.3.5.1-no-android.cpp:392 +#: src\CelestialNavigationDialog-2.3.5.1-no-android.cpp:532 +#: src\CelestialNavigationDialog-2.3.5.2-android.cpp:338 +#: src\CelestialNavigationDialog-2.3.5.2-android.cpp:398 +#: src\CelestialNavigationDialog-2.3.5.2-android.cpp:538 +#: src\CelestialNavigationDialog-partial-android.cpp:332 +#: src\CelestialNavigationDialog-partial-android.cpp:392 +#: src\CelestialNavigationDialog-partial-android.cpp:532 +#: src\CelestialNavigationDialog.cpp:338 src\CelestialNavigationDialog.cpp:398 +#: src\CelestialNavigationDialog.cpp:538 src\Sight.cpp:1120 +#: src\Sight.cpp.bak:1121 src\celestial_navigation_pi.cpp:95 +#: src\celestial_navigation_pi.cpp:99 +msgid "Celestial Navigation" +msgstr "" + +#: src\CelestialNavigationDialog-2.3.5.1-no-android.cpp:391 +#: src\CelestialNavigationDialog-2.3.5.2-android.cpp:397 +#: src\CelestialNavigationDialog-partial-android.cpp:391 +#: src\CelestialNavigationDialog.cpp:397 +msgid "Failed to save xml file: " +msgstr "" + +#: src\CelestialNavigationDialog-2.3.5.1-no-android.cpp:424 +#: src\CelestialNavigationDialog-2.3.5.2-android.cpp:430 +#: src\CelestialNavigationDialog-partial-android.cpp:424 +#: src\CelestialNavigationDialog.cpp:430 +msgid "Time Correction" +msgstr "" + +#: src\CelestialNavigationDialog-2.3.5.1-no-android.cpp:473 +#: src\CelestialNavigationDialog-2.3.5.2-android.cpp:479 +#: src\CelestialNavigationDialog-partial-android.cpp:473 +#: src\CelestialNavigationDialog.cpp:479 +msgid "Sun" +msgstr "" + +#: src\CelestialNavigationDialog-2.3.5.1-no-android.cpp:531 +#: src\CelestialNavigationDialog-2.3.5.2-android.cpp:537 +#: src\CelestialNavigationDialog-partial-android.cpp:531 +#: src\CelestialNavigationDialog.cpp:537 +msgid "Are you sure you want to delete all sights?" +msgstr "" + +#: src\CelestialNavigationDialog-2.3.5.1-no-android.cpp:582 +#: src\CelestialNavigationDialog-2.3.5.2-android.cpp:588 +#: src\CelestialNavigationDialog-partial-android.cpp:582 +#: src\CelestialNavigationDialog.cpp:588 +msgid "Celestial_Navigation_Information.html" +msgstr "" + +#: src\CelestialNavigationDialog-2.3.5.1-no-android.cpp:589 +#: src\CelestialNavigationDialog-2.3.5.2-android.cpp:595 +#: src\CelestialNavigationDialog-partial-android.cpp:589 +#: src\CelestialNavigationDialog.cpp:595 src\CelestialNavigationUI.cpp:55 +msgid "Hide" +msgstr "" + +#: src\CelestialNavigationDialog-2.3.5.1-no-android.cpp:589 +#: src\CelestialNavigationDialog-2.3.5.2-android.cpp:595 +#: src\CelestialNavigationDialog-partial-android.cpp:589 +#: src\CelestialNavigationDialog.cpp:595 +msgid "Show" +msgstr "" + +#: src\CelestialNavigationUI.cpp:40 +msgid "New" +msgstr "" + +#: src\CelestialNavigationUI.cpp:43 src\CelestialNavigationUI.h:286 +msgid "Fix" +msgstr "" + +#: src\CelestialNavigationUI.cpp:46 +msgid "Duplicate" +msgstr "" + +#: src\CelestialNavigationUI.cpp:49 +msgid "Clock Offset" +msgstr "" + +#: src\CelestialNavigationUI.cpp:52 +msgid "Edit" +msgstr "" + +#: src\CelestialNavigationUI.cpp:58 +msgid "Delete" +msgstr "" + +#: src\CelestialNavigationUI.cpp:61 +msgid "Information" +msgstr "" + +#: src\CelestialNavigationUI.cpp:64 +msgid "Delete All" +msgstr "" + +#: src\CelestialNavigationUI.cpp:141 src\CelestialNavigationUI.cpp:674 +#: src\Sight.h:49 +msgid "Altitude" +msgstr "" + +#: src\CelestialNavigationUI.cpp:141 src\CelestialNavigationUI.cpp:683 +#: src\Sight.h:49 +msgid "Azimuth" +msgstr "" + +#: src\CelestialNavigationUI.cpp:141 src\Sight.h:49 +msgid "Lunar" +msgstr "" + +#: src\CelestialNavigationUI.cpp:147 +msgid "Magnetic Azimuth" +msgstr "" + +#: src\CelestialNavigationUI.cpp:150 +msgid "Celestial Body" +msgstr "" + +#: src\CelestialNavigationUI.cpp:159 +msgid "Find" +msgstr "" + +#: src\CelestialNavigationUI.cpp:162 +msgid "Limb" +msgstr "" + +#: src\CelestialNavigationUI.cpp:166 +msgid "Center" +msgstr "" + +#: src\CelestialNavigationUI.cpp:166 +msgid "Lower" +msgstr "" + +#: src\CelestialNavigationUI.cpp:166 +msgid "Upper" +msgstr "" + +#: src\CelestialNavigationUI.cpp:191 src\CelestialNavigationUI.cpp:198 +#: src\CelestialNavigationUI.cpp:228 src\CelestialNavigationUI.cpp:235 +msgid "0" +msgstr "" + +#: src\CelestialNavigationUI.cpp:194 src\CelestialNavigationUI.cpp:353 +#: src\CelestialNavigationUI.cpp:605 +msgid "Degrees" +msgstr "" + +#: src\CelestialNavigationUI.cpp:201 src\CelestialNavigationUI.cpp:283 +#: src\CelestialNavigationUI.cpp:444 +msgid "Minutes" +msgstr "" + +#: src\CelestialNavigationUI.cpp:205 +msgid "10" +msgstr "" + +#: src\CelestialNavigationUI.cpp:208 +msgid "Minutes Certainty" +msgstr "" + +#: src\CelestialNavigationUI.cpp:222 +msgid "Lunar Altitude" +msgstr "" + +#: src\CelestialNavigationUI.cpp:231 +msgid "Body Altitude" +msgstr "" + +#: src\CelestialNavigationUI.cpp:248 +msgid "Sight" +msgstr "" + +#: src\CelestialNavigationUI.cpp:276 +msgid "Hours" +msgstr "" + +#: src\CelestialNavigationUI.cpp:290 src\CelestialNavigationUI.cpp:308 +#: src\CelestialNavigationUI.cpp:869 +msgid "Seconds" +msgstr "" + +#: src\CelestialNavigationUI.cpp:298 +msgid "Certainty" +msgstr "" + +#: src\CelestialNavigationUI.cpp:335 src\CelestialNavigationUI.cpp:587 +msgid "Distance" +msgstr "" + +#: src\CelestialNavigationUI.cpp:342 src\CelestialNavigationUI.cpp:594 +msgid "Nm" +msgstr "" + +#: src\CelestialNavigationUI.cpp:346 src\CelestialNavigationUI.cpp:598 +msgid "Bearing" +msgstr "" + +#: src\CelestialNavigationUI.cpp:357 src\CelestialNavigationUI.cpp:609 +msgid "Magnetic Bearing" +msgstr "" + +#: src\CelestialNavigationUI.cpp:364 +msgid "DR Shift" +msgstr "" + +#: src\CelestialNavigationUI.cpp:371 +msgid "Transparency" +msgstr "" + +#: src\CelestialNavigationUI.cpp:392 +msgid "Config" +msgstr "" + +#: src\CelestialNavigationUI.cpp:404 +msgid "Eye Height" +msgstr "" + +#: src\CelestialNavigationUI.cpp:408 +msgid "2" +msgstr "" + +#: src\CelestialNavigationUI.cpp:411 +msgid "Meters" +msgstr "" + +#: src\CelestialNavigationUI.cpp:415 +msgid "Temperature" +msgstr "" + +#: src\CelestialNavigationUI.cpp:422 +msgid "Celcius" +msgstr "" + +#: src\CelestialNavigationUI.cpp:426 +msgid "Pressure" +msgstr "" + +#: src\CelestialNavigationUI.cpp:433 +msgid "MilliBars" +msgstr "" + +#: src\CelestialNavigationUI.cpp:437 +msgid "Index Error" +msgstr "" + +#: src\CelestialNavigationUI.cpp:451 +msgid "Set As Defaults" +msgstr "" + +#: src\CelestialNavigationUI.cpp:458 +msgid "Parameters" +msgstr "" + +#: src\CelestialNavigationUI.cpp:474 +msgid "Calculations" +msgstr "" + +#: src\CelestialNavigationUI.cpp:578 +msgid "Shift all visible Sights" +msgstr "" + +#: src\CelestialNavigationUI.cpp:656 src\CelestialNavigationUI.cpp:769 +msgid "Latitude" +msgstr "" + +#: src\CelestialNavigationUI.cpp:665 src\CelestialNavigationUI.cpp:777 +msgid "Longitude" +msgstr "" + +#: src\CelestialNavigationUI.cpp:691 +msgid "Boat Position" +msgstr "" + +#: src\CelestialNavigationUI.cpp:695 +msgid "Magnetic" +msgstr "" + +#: src\CelestialNavigationUI.cpp:698 +msgid "Done" +msgstr "" + +#: src\CelestialNavigationUI.cpp:762 +msgid "Fix From Visible Sights" +msgstr "" + +#: src\CelestialNavigationUI.cpp:773 +msgid " N/A " +msgstr "" + +#: src\CelestialNavigationUI.cpp:781 +msgid " N/A " +msgstr "" + +#: src\CelestialNavigationUI.cpp:785 +msgid "Error" +msgstr "" + +#: src\CelestialNavigationUI.cpp:789 +msgid " N/A " +msgstr "" + +#: src\CelestialNavigationUI.cpp:796 src\CelestialNavigationUI.cpp:803 +msgid "Initial" +msgstr "" + +#: src\CelestialNavigationUI.cpp:810 +msgid "Alg" +msgstr "" + +#: src\CelestialNavigationUI.cpp:815 +msgid "Plane" +msgstr "" + +#: src\CelestialNavigationUI.cpp:816 +msgid "Sphere" +msgstr "" + +#: src\CelestialNavigationUI.cpp:817 +msgid "Cone" +msgstr "" + +#: src\CelestialNavigationUI.cpp:818 +msgid "Cone 2" +msgstr "" + +#: src\CelestialNavigationUI.cpp:822 +msgid "Go" +msgstr "" + +#: src\CelestialNavigationUI.cpp:859 src\CelestialNavigationUI.h:308 +msgid "Clock Correction" +msgstr "" + +#: src\CelestialNavigationUI.h:82 +msgid "Celestial Navigation Sights" +msgstr "" + +#: src\CelestialNavigationUI.h:173 +msgid "Sight Properties" +msgstr "" + +#: src\CelestialNavigationUI.h:204 +msgid "Dead Reckoning shift" +msgstr "" + +#: src\CelestialNavigationUI.h:232 +msgid "Find Celestial Body" +msgstr "" + +#: src\FixDialog.cpp:192 +msgid "Shifted sights are not used to compute a fix, determine fix visually instead.\n" +msgstr "" + +#: src\FixDialog.cpp:193 +msgid "Fix Position" +msgstr "" + +#: src\FixDialog.cpp:338 src\FixDialog.cpp:339 src\FixDialog.cpp:340 +msgid " N/A " +msgstr "" + +#: src\Sight.cpp:172 src\Sight.cpp.bak:173 +msgid "Astrolab failed, data unavailable:\n" +msgstr "" + +#: src\Sight.cpp:173 src\Sight.cpp.bak:174 +msgid "\n" +"Did you forget to install vsop87d.txt?\n" +msgstr "" + +#: src\Sight.cpp:174 src\Sight.cpp.bak:175 +msgid "The plugin will not work correctly" +msgstr "" + +#: src\Sight.cpp:175 src\Sight.cpp.bak:176 +msgid "Failure Alert" +msgstr "" + +#: src\Sight.cpp:495 src\Sight.cpp.bak:496 +#, c-format +msgid "Applying clock correction of %d seconds\n\n" +msgstr "" + +#: src\Sight.cpp:557 src\Sight.cpp.bak:558 +msgid "Almanac Data For " +msgstr "" + +#: src\Sight.cpp:558 src\Sight.cpp.bak:559 +#, c-format +msgid "\n" +"Geographical Position (lat, lon) = %.4f %.4f\n" +"GHAAST = %.0f %.1f'\n" +"SHA = %.0f %.1f'\n" +"GHA = %.0f %.1f'\n" +"Dec = %c %.0f %.1f'\n" +"SD = %.1f'\n" +"HP = %.1f'\n\n" +msgstr "" + +#: src\Sight.cpp:573 src\Sight.cpp:711 src\Sight.cpp.bak:574 +#: src\Sight.cpp.bak:712 +msgid "Formulas used to calculate sight\n\n" +msgstr "" + +#: src\Sight.cpp:577 src\Sight.cpp:715 src\Sight.cpp.bak:578 +#: src\Sight.cpp.bak:716 +#, c-format +msgid "Index Error is %.4f degrees\n\n" +msgstr "" + +#: src\Sight.cpp:582 src\Sight.cpp:720 src\Sight.cpp.bak:583 +#: src\Sight.cpp.bak:721 +#, c-format +msgid "Eye Height is %.4f meters\n" +"Height Correction Degrees = 1.758*sqrt(%.4f) / 60.0\n" +"Height Correction Degrees = %.4f\n" +msgstr "" + +#: src\Sight.cpp:589 src\Sight.cpp:799 src\Sight.cpp.bak:590 +#: src\Sight.cpp.bak:800 +#, c-format +msgid "\n" +"Apparent Altitude (Ha)\n" +"ApparentAltitude = Measurement - IndexCorrection - EyeHeightCorrection\n" +"ApparentAltitude = %.4f - %.4f - %.4f\n" +"ApparentAltitude = %.4f\n" +msgstr "" + +#: src\Sight.cpp:607 src\Sight.cpp:810 src\Sight.cpp.bak:608 +#: src\Sight.cpp.bak:811 +#, c-format +msgid "\n" +"Refraction Correction\n" +"x = tan(Pi/180*ApparentAltitude + 4.848e-2*(Pi/180) / (tan(Pi/180*ApparentAltitude) + .028))\n" +"x = tan(Pi/180*%.4f + 4.848e-2*(Pi/180) / (tan(Pi/180*%.4f) + .028))\n" +"x = %.4f\n" +msgstr "" + +#: src\Sight.cpp:612 src\Sight.cpp:815 src\Sight.cpp.bak:613 +#: src\Sight.cpp.bak:816 +#, c-format +msgid "RefractionCorrection = .267 * Pressure / (x*(Temperature + 273.15)) / 60.0\n" +"RefractionCorrection = .267 * %.4f / (x*(%.4f + 273.15)) / 60.0\n" +"RefractionCorrection = %.4f\n" +msgstr "" + +#: src\Sight.cpp:627 src\Sight.cpp:829 src\Sight.cpp.bak:628 +#: src\Sight.cpp.bak:830 +#, c-format +msgid "\n" +"Sun selected, Limb Correction\n" +"ra = %.4f, lc = 0.266564/ra = %.4f\n" +msgstr "" + +#: src\Sight.cpp:637 src\Sight.cpp:753 src\Sight.cpp.bak:638 +#: src\Sight.cpp.bak:754 +#, c-format +msgid "\n" +"Moon selected, Limb Correction\n" +"SD = %.4f\n" +"lc = 180/Pi * asin(Pi/180*SD)\n" +"lc = %.4f\n" +msgstr "" + +#: src\Sight.cpp:647 src\Sight.cpp:762 src\Sight.cpp:837 src\Sight.cpp.bak:648 +#: src\Sight.cpp.bak:763 src\Sight.cpp.bak:838 +msgid "Upper Limb" +msgstr "" + +#: src\Sight.cpp:650 src\Sight.cpp:765 src\Sight.cpp:840 src\Sight.cpp.bak:651 +#: src\Sight.cpp.bak:766 src\Sight.cpp.bak:841 +msgid "Lower Limb" +msgstr "" + +#: src\Sight.cpp:653 src\Sight.cpp:843 src\Sight.cpp.bak:654 +#: src\Sight.cpp.bak:844 +#, c-format +msgid "\n" +"LimbCorrection = %.4f\n" +msgstr "" + +#: src\Sight.cpp:657 src\Sight.cpp:847 src\Sight.cpp.bak:658 +#: src\Sight.cpp.bak:848 +#, c-format +msgid "\n" +"Corrected Altitude\n" +"CorrectedAltitude = ApparentAltitude - RefractionCorrection - LimbCorrection\n" +"CorrectedAltitude = %.4f - %.4f - %.4f\n" +"CorrectedAltitude = %.4f\n" +msgstr "" + +#: src\Sight.cpp:671 src\Sight.cpp:861 src\Sight.cpp.bak:672 +#: src\Sight.cpp.bak:862 +#, c-format +msgid "\n" +"Sun selected, parallax correction\n" +"rad = %.4f, HP = 0.002442/rad = %.4f\n" +msgstr "" + +#: src\Sight.cpp:680 src\Sight.cpp:785 src\Sight.cpp.bak:681 +#: src\Sight.cpp.bak:786 +#, c-format +msgid "\n" +"Moon selected, parallax correction\n" +"HP = %.4f\n" +msgstr "" + +#: src\Sight.cpp:686 src\Sight.cpp:867 src\Sight.cpp.bak:687 +#: src\Sight.cpp.bak:868 +#, c-format +msgid "ParallaxCorrection = -180/Pi * asin( sin(Pi/180 * HP ) * cos(Pi/180 * CorrectedAltitude))\n" +"ParallaxCorrection = -180/Pi * asin( sin(Pi/180 * %.4f ) * cos(Pi/180 * %.4f))\n" +"ParallaxCorrection = %.4f\n" +msgstr "" + +#: src\Sight.cpp:693 src\Sight.cpp.bak:694 +#, c-format +msgid "\n" +"Observed Altitude (Ho)\n" +"ObservedAltitude = CorrectedAltitude - ParallaxCorrection\n" +"ObservedAltitude = %.4f - %.4f\n" +"ObservedAltitude = %.4f\n" +msgstr "" + +#: src\Sight.cpp:727 src\Sight.cpp.bak:728 +#, c-format +msgid "\n" +"Apparent Moon Altitude (Ha)\n" +"ApparentAltitudeMoon = MeasurementMoon - IndexCorrection - EyeHeightCorrection\n" +"ApparentAltitudeMoon = %.4f - %.4f - %.4f\n" +"ApparentAltitudeMoon = %.4f\n" +msgstr "" + +#: src\Sight.cpp:738 src\Sight.cpp.bak:739 +#, c-format +msgid "\n" +"Refraction Correction\n" +"x = tan(Pi/180*ApparentAltitudeMoon + 4.848e-2*(Pi/180) / (tan(Pi/180*ApparentAltitudeMoon) + .028))\n" +"x = tan(Pi/180*%.4f + 4.848e-2*(Pi/180) / (tan(Pi/180*%.4f) + .028))\n" +"x = %.4f\n" +msgstr "" + +#: src\Sight.cpp:743 src\Sight.cpp.bak:744 +#, c-format +msgid "RefractionCorrectionMoon = .267 * Pressure / (x*(Temperature + 273.15)) / 60.0\n" +"RefractionCorrectionMoon = .267 * %.4f / (x*(%.4f + 273.15)) / 60.0\n" +"RefractionCorrectionMoon = %.4f\n" +msgstr "" + +#: src\Sight.cpp:768 src\Sight.cpp:771 src\Sight.cpp.bak:769 +#: src\Sight.cpp.bak:772 +#, c-format +msgid "\n" +"LimbCorrectionMoon = %.4f\n" +msgstr "" + +#: src\Sight.cpp:774 src\Sight.cpp.bak:775 +#, c-format +msgid "\n" +"Corrected Altitude\n" +"CorrectedAltitudeMoon = ApparentAltitudeMoon - RefractionCorrectionMoon - LimbCorrectionMoon\n" +"CorrectedAltitudeMoon = %.4f - %.4f - %.4f\n" +"CorrectedAltitudeMoon = %.4f\n" +msgstr "" + +#: src\Sight.cpp:789 src\Sight.cpp.bak:790 +#, c-format +msgid "ParallaxCorrectionMoon = -180/Pi * asin( sin(Pi/180 * HP ) * cos(Pi/180 * CorrectedAltitude))\n" +"ParallaxCorrectionMoon = -180/Pi * asin( sin(Pi/180 * %.4f ) * cos(Pi/180 * %.4f))\n" +"ParallaxCorrectionMoon = %.4f\n" +msgstr "" + +#: src\Sight.cpp:878 src\Sight.cpp.bak:879 +#, c-format +msgid "CorrectionsMoon = %.4f\n" +"CorrectionsBody = %.4f\n" +"Corrections = abs(CorrectionsMoon - CorrectionsBody) = %.4f\n" +msgstr "" + +#: src\Sight.cpp:884 src\Sight.cpp.bak:885 +#, c-format +msgid "CorrectedMeasurement = Measurement - Corrections - IndexCorrection\n" +"CorrectedMeasurement = %.4f - %.4f - %.4f\n" +"CorrectedMeasurement = %.4f\n" +msgstr "" + +#: src\Sight.cpp:909 src\Sight.cpp.bak:910 +msgid "\n" +"Calculated angle between Moon and " +msgstr "" + +#: src\Sight.cpp:911 src\Sight.cpp.bak:912 +#, c-format +msgid "\n" +"Error from measurement: %.4f" +msgstr "" + +#: src\Sight.cpp:915 src\Sight.cpp.bak:916 +msgid "\n" +"Moon takes 28 days to orbit, one degree of error takes 6720 seconds" +msgstr "" + +#: src\Sight.cpp:916 src\Sight.cpp.bak:917 +#, c-format +msgid "\n" +"Time correction %.4f seconds" +msgstr "" + +#: src\Sight.cpp:1120 src\Sight.cpp.bak:1121 +msgid "Building bearing Sight Positions" +msgstr "" + +#: src\SightDialog.cpp:184 +msgid "Measurement certainty likely set to small, sight may not appear " +msgstr "" + +#: src\SightDialog.cpp:185 src\SightDialog.cpp:279 +msgid "Warning" +msgstr "" + +#: src\SightDialog.cpp:278 +msgid "Lunar shot will be invalid taking distance from moon to itself" +msgstr "" + +#: src\celestial_navigation_pi.cpp:179 +msgid "open error" +msgstr "" + +#: src\celestial_navigation_pi.cpp:180 +msgid "corrupt record" +msgstr "" + +#: src\celestial_navigation_pi.cpp:181 +msgid "too many models" +msgstr "" + +#: src\celestial_navigation_pi.cpp:184 +msgid "Magnetic data will not be available for the celestial navigation plugin." +msgstr "" + +#: src\celestial_navigation_pi.cpp:185 +msgid "OpenCPN Alert" +msgstr "" + diff --git a/po/hi_IN.po b/po/hi_IN.po index 6380694..baeee43 100644 --- a/po/hi_IN.po +++ b/po/hi_IN.po @@ -2,403 +2,467 @@ msgid "" msgstr "" "Project-Id-Version: opencpn\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-02-28 14:10-0300\n" -"PO-Revision-Date: 2018-03-03 08:24-0500\n" -"Last-Translator: nohal \n" +"POT-Creation-Date: 2021-10-27 22:15+0200\n" +"PO-Revision-Date: 2023-10-04 18:33\n" +"Last-Translator: \n" "Language-Team: Hindi\n" "Language: hi_IN\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -"X-Generator: crowdin.com\n" "X-Crowdin-Project: opencpn\n" +"X-Crowdin-Project-ID: 49843\n" "X-Crowdin-Language: hi\n" "X-Crowdin-File: /plugins/celestial_navigation_pi/po/celestial_navigation_pi.pot\n" +"X-Crowdin-File-ID: 108\n" -#: src/CelestialNavigationDialog.cpp:123 src/CelestialNavigationUI.cpp:132 +#: src\CelestialNavigationDialog-2.3.5.1-no-android.cpp:149 +#: src\CelestialNavigationDialog-2.3.5.2-android.cpp:150 +#: src\CelestialNavigationDialog-partial-android.cpp:149 +#: src\CelestialNavigationDialog.cpp:150 src\CelestialNavigationUI.cpp:137 msgid "Type" msgstr "" -#: src/CelestialNavigationDialog.cpp:124 +#: src\CelestialNavigationDialog-2.3.5.1-no-android.cpp:150 +#: src\CelestialNavigationDialog-2.3.5.2-android.cpp:151 +#: src\CelestialNavigationDialog-partial-android.cpp:150 +#: src\CelestialNavigationDialog.cpp:151 msgid "Body" msgstr "" -#: src/CelestialNavigationDialog.cpp:125 -msgid "Time (UTC)" +#: src\CelestialNavigationDialog-2.3.5.1-no-android.cpp:151 +#: src\CelestialNavigationDialog-2.3.5.2-android.cpp:152 +#: src\CelestialNavigationDialog-partial-android.cpp:151 +#: src\CelestialNavigationDialog.cpp:152 src\CelestialNavigationUI.cpp:328 +msgid "Time (UT)" msgstr "" -#: src/CelestialNavigationDialog.cpp:126 src/CelestialNavigationUI.cpp:179 +#: src\CelestialNavigationDialog-2.3.5.1-no-android.cpp:152 +#: src\CelestialNavigationDialog-2.3.5.2-android.cpp:153 +#: src\CelestialNavigationDialog-partial-android.cpp:152 +#: src\CelestialNavigationDialog.cpp:153 src\CelestialNavigationUI.cpp:184 msgid "Measurement" msgstr "" -#: src/CelestialNavigationDialog.cpp:127 src/CelestialNavigationUI.cpp:376 +#: src\CelestialNavigationDialog-2.3.5.1-no-android.cpp:153 +#: src\CelestialNavigationDialog-2.3.5.2-android.cpp:154 +#: src\CelestialNavigationDialog-partial-android.cpp:153 +#: src\CelestialNavigationDialog.cpp:154 src\CelestialNavigationUI.cpp:381 msgid "Color" msgstr "" -#: src/CelestialNavigationDialog.cpp:193 -msgid "Failed to load file." +#: src\CelestialNavigationDialog-2.3.5.1-no-android.cpp:266 +#: src\CelestialNavigationDialog-2.3.5.2-android.cpp:272 +#: src\CelestialNavigationDialog-partial-android.cpp:266 +#: src\CelestialNavigationDialog.cpp:272 src\celestial_navigation_pi.cpp:177 +msgid "Failed to load file: " msgstr "" -#: src/CelestialNavigationDialog.cpp:198 +#: src\CelestialNavigationDialog-2.3.5.1-no-android.cpp:271 +#: src\CelestialNavigationDialog-2.3.5.2-android.cpp:277 +#: src\CelestialNavigationDialog-partial-android.cpp:271 +#: src\CelestialNavigationDialog.cpp:277 msgid "Invalid xml file" msgstr "" -#: src/CelestialNavigationDialog.cpp:250 +#: src\CelestialNavigationDialog-2.3.5.1-no-android.cpp:323 +#: src\CelestialNavigationDialog-2.3.5.2-android.cpp:329 +#: src\CelestialNavigationDialog-partial-android.cpp:323 +#: src\CelestialNavigationDialog.cpp:329 msgid "Unrecognized xml node" msgstr "" -#: src/CelestialNavigationDialog.cpp:260 -msgid "Weather Routing" +#: src\CelestialNavigationDialog-2.3.5.1-no-android.cpp:332 +#: src\CelestialNavigationDialog-2.3.5.1-no-android.cpp:392 +#: src\CelestialNavigationDialog-2.3.5.1-no-android.cpp:532 +#: src\CelestialNavigationDialog-2.3.5.2-android.cpp:338 +#: src\CelestialNavigationDialog-2.3.5.2-android.cpp:398 +#: src\CelestialNavigationDialog-2.3.5.2-android.cpp:538 +#: src\CelestialNavigationDialog-partial-android.cpp:332 +#: src\CelestialNavigationDialog-partial-android.cpp:392 +#: src\CelestialNavigationDialog-partial-android.cpp:532 +#: src\CelestialNavigationDialog.cpp:338 src\CelestialNavigationDialog.cpp:398 +#: src\CelestialNavigationDialog.cpp:538 src\Sight.cpp:1120 +#: src\Sight.cpp.bak:1121 src\celestial_navigation_pi.cpp:95 +#: src\celestial_navigation_pi.cpp:99 +msgid "Celestial Navigation" msgstr "" -#: src/CelestialNavigationDialog.cpp:320 +#: src\CelestialNavigationDialog-2.3.5.1-no-android.cpp:391 +#: src\CelestialNavigationDialog-2.3.5.2-android.cpp:397 +#: src\CelestialNavigationDialog-partial-android.cpp:391 +#: src\CelestialNavigationDialog.cpp:397 msgid "Failed to save xml file: " msgstr "" -#: src/CelestialNavigationDialog.cpp:321 src/CelestialNavigationDialog.cpp:466 -#: src/Sight.cpp:1099 src/celestial_navigation_pi.cpp:99 -#: src/celestial_navigation_pi.cpp:152 -msgid "Celestial Navigation" -msgstr "" - -#: src/CelestialNavigationDialog.cpp:351 +#: src\CelestialNavigationDialog-2.3.5.1-no-android.cpp:424 +#: src\CelestialNavigationDialog-2.3.5.2-android.cpp:430 +#: src\CelestialNavigationDialog-partial-android.cpp:424 +#: src\CelestialNavigationDialog.cpp:430 msgid "Time Correction" msgstr "" -#: src/CelestialNavigationDialog.cpp:409 +#: src\CelestialNavigationDialog-2.3.5.1-no-android.cpp:473 +#: src\CelestialNavigationDialog-2.3.5.2-android.cpp:479 +#: src\CelestialNavigationDialog-partial-android.cpp:473 +#: src\CelestialNavigationDialog.cpp:479 msgid "Sun" msgstr "" -#: src/CelestialNavigationDialog.cpp:465 +#: src\CelestialNavigationDialog-2.3.5.1-no-android.cpp:531 +#: src\CelestialNavigationDialog-2.3.5.2-android.cpp:537 +#: src\CelestialNavigationDialog-partial-android.cpp:531 +#: src\CelestialNavigationDialog.cpp:537 msgid "Are you sure you want to delete all sights?" msgstr "" -#: src/CelestialNavigationDialog.cpp:510 +#: src\CelestialNavigationDialog-2.3.5.1-no-android.cpp:582 +#: src\CelestialNavigationDialog-2.3.5.2-android.cpp:588 +#: src\CelestialNavigationDialog-partial-android.cpp:582 +#: src\CelestialNavigationDialog.cpp:588 msgid "Celestial_Navigation_Information.html" msgstr "" -#: src/CelestialNavigationDialog.cpp:516 -msgid "Show" +#: src\CelestialNavigationDialog-2.3.5.1-no-android.cpp:589 +#: src\CelestialNavigationDialog-2.3.5.2-android.cpp:595 +#: src\CelestialNavigationDialog-partial-android.cpp:589 +#: src\CelestialNavigationDialog.cpp:595 src\CelestialNavigationUI.cpp:55 +msgid "Hide" msgstr "" -#: src/CelestialNavigationDialog.cpp:516 src/CelestialNavigationUI.cpp:58 -msgid "Hide" +#: src\CelestialNavigationDialog-2.3.5.1-no-android.cpp:589 +#: src\CelestialNavigationDialog-2.3.5.2-android.cpp:595 +#: src\CelestialNavigationDialog-partial-android.cpp:589 +#: src\CelestialNavigationDialog.cpp:595 +msgid "Show" msgstr "" -#: src/CelestialNavigationUI.cpp:40 +#: src\CelestialNavigationUI.cpp:40 msgid "New" msgstr "" -#: src/CelestialNavigationUI.cpp:43 -msgid "Edit" +#: src\CelestialNavigationUI.cpp:43 src\CelestialNavigationUI.h:286 +msgid "Fix" msgstr "" -#: src/CelestialNavigationUI.cpp:46 -msgid "Delete" +#: src\CelestialNavigationUI.cpp:46 +msgid "Duplicate" msgstr "" -#: src/CelestialNavigationUI.cpp:49 -msgid "Delete All" +#: src\CelestialNavigationUI.cpp:49 +msgid "Clock Offset" msgstr "" -#: src/CelestialNavigationUI.cpp:52 src/CelestialNavigationUI.h:281 -msgid "Fix" +#: src\CelestialNavigationUI.cpp:52 +msgid "Edit" msgstr "" -#: src/CelestialNavigationUI.cpp:55 -msgid "Clock Offset" +#: src\CelestialNavigationUI.cpp:58 +msgid "Delete" msgstr "" -#: src/CelestialNavigationUI.cpp:61 +#: src\CelestialNavigationUI.cpp:61 msgid "Information" msgstr "" -#: src/CelestialNavigationUI.cpp:136 src/CelestialNavigationUI.cpp:667 -#: src/Sight.h:49 +#: src\CelestialNavigationUI.cpp:64 +msgid "Delete All" +msgstr "" + +#: src\CelestialNavigationUI.cpp:141 src\CelestialNavigationUI.cpp:674 +#: src\Sight.h:49 msgid "Altitude" msgstr "" -#: src/CelestialNavigationUI.cpp:136 src/CelestialNavigationUI.cpp:677 -#: src/Sight.h:49 +#: src\CelestialNavigationUI.cpp:141 src\CelestialNavigationUI.cpp:683 +#: src\Sight.h:49 msgid "Azimuth" msgstr "" -#: src/CelestialNavigationUI.cpp:136 src/Sight.h:49 +#: src\CelestialNavigationUI.cpp:141 src\Sight.h:49 msgid "Lunar" msgstr "" -#: src/CelestialNavigationUI.cpp:142 +#: src\CelestialNavigationUI.cpp:147 msgid "Magnetic Azimuth" msgstr "" -#: src/CelestialNavigationUI.cpp:145 +#: src\CelestialNavigationUI.cpp:150 msgid "Celestial Body" msgstr "" -#: src/CelestialNavigationUI.cpp:154 +#: src\CelestialNavigationUI.cpp:159 msgid "Find" msgstr "" -#: src/CelestialNavigationUI.cpp:157 +#: src\CelestialNavigationUI.cpp:162 msgid "Limb" msgstr "" -#: src/CelestialNavigationUI.cpp:161 -msgid "Lower" +#: src\CelestialNavigationUI.cpp:166 +msgid "Center" msgstr "" -#: src/CelestialNavigationUI.cpp:161 -msgid "Center" +#: src\CelestialNavigationUI.cpp:166 +msgid "Lower" msgstr "" -#: src/CelestialNavigationUI.cpp:161 +#: src\CelestialNavigationUI.cpp:166 msgid "Upper" msgstr "" -#: src/CelestialNavigationUI.cpp:186 src/CelestialNavigationUI.cpp:193 -#: src/CelestialNavigationUI.cpp:223 src/CelestialNavigationUI.cpp:230 +#: src\CelestialNavigationUI.cpp:191 src\CelestialNavigationUI.cpp:198 +#: src\CelestialNavigationUI.cpp:228 src\CelestialNavigationUI.cpp:235 msgid "0" msgstr "" -#: src/CelestialNavigationUI.cpp:189 src/CelestialNavigationUI.cpp:348 -#: src/CelestialNavigationUI.cpp:598 +#: src\CelestialNavigationUI.cpp:194 src\CelestialNavigationUI.cpp:353 +#: src\CelestialNavigationUI.cpp:605 msgid "Degrees" msgstr "" -#: src/CelestialNavigationUI.cpp:196 src/CelestialNavigationUI.cpp:278 -#: src/CelestialNavigationUI.cpp:439 +#: src\CelestialNavigationUI.cpp:201 src\CelestialNavigationUI.cpp:283 +#: src\CelestialNavigationUI.cpp:444 msgid "Minutes" msgstr "" -#: src/CelestialNavigationUI.cpp:200 +#: src\CelestialNavigationUI.cpp:205 msgid "10" msgstr "" -#: src/CelestialNavigationUI.cpp:203 +#: src\CelestialNavigationUI.cpp:208 msgid "Minutes Certainty" msgstr "" -#: src/CelestialNavigationUI.cpp:217 +#: src\CelestialNavigationUI.cpp:222 msgid "Lunar Altitude" msgstr "" -#: src/CelestialNavigationUI.cpp:226 +#: src\CelestialNavigationUI.cpp:231 msgid "Body Altitude" msgstr "" -#: src/CelestialNavigationUI.cpp:243 +#: src\CelestialNavigationUI.cpp:248 msgid "Sight" msgstr "" -#: src/CelestialNavigationUI.cpp:271 +#: src\CelestialNavigationUI.cpp:276 msgid "Hours" msgstr "" -#: src/CelestialNavigationUI.cpp:285 src/CelestialNavigationUI.cpp:303 -#: src/CelestialNavigationUI.cpp:860 +#: src\CelestialNavigationUI.cpp:290 src\CelestialNavigationUI.cpp:308 +#: src\CelestialNavigationUI.cpp:869 msgid "Seconds" msgstr "" -#: src/CelestialNavigationUI.cpp:293 +#: src\CelestialNavigationUI.cpp:298 msgid "Certainty" msgstr "" -#: src/CelestialNavigationUI.cpp:323 -msgid "Time" -msgstr "" - -#: src/CelestialNavigationUI.cpp:330 src/CelestialNavigationUI.cpp:580 +#: src\CelestialNavigationUI.cpp:335 src\CelestialNavigationUI.cpp:587 msgid "Distance" msgstr "" -#: src/CelestialNavigationUI.cpp:337 src/CelestialNavigationUI.cpp:587 +#: src\CelestialNavigationUI.cpp:342 src\CelestialNavigationUI.cpp:594 msgid "Nm" msgstr "" -#: src/CelestialNavigationUI.cpp:341 src/CelestialNavigationUI.cpp:591 +#: src\CelestialNavigationUI.cpp:346 src\CelestialNavigationUI.cpp:598 msgid "Bearing" msgstr "" -#: src/CelestialNavigationUI.cpp:352 src/CelestialNavigationUI.cpp:602 +#: src\CelestialNavigationUI.cpp:357 src\CelestialNavigationUI.cpp:609 msgid "Magnetic Bearing" msgstr "" -#: src/CelestialNavigationUI.cpp:359 +#: src\CelestialNavigationUI.cpp:364 msgid "DR Shift" msgstr "" -#: src/CelestialNavigationUI.cpp:366 +#: src\CelestialNavigationUI.cpp:371 msgid "Transparency" msgstr "" -#: src/CelestialNavigationUI.cpp:387 +#: src\CelestialNavigationUI.cpp:392 msgid "Config" msgstr "" -#: src/CelestialNavigationUI.cpp:399 +#: src\CelestialNavigationUI.cpp:404 msgid "Eye Height" msgstr "" -#: src/CelestialNavigationUI.cpp:403 +#: src\CelestialNavigationUI.cpp:408 msgid "2" msgstr "" -#: src/CelestialNavigationUI.cpp:406 +#: src\CelestialNavigationUI.cpp:411 msgid "Meters" msgstr "" -#: src/CelestialNavigationUI.cpp:410 +#: src\CelestialNavigationUI.cpp:415 msgid "Temperature" msgstr "" -#: src/CelestialNavigationUI.cpp:417 +#: src\CelestialNavigationUI.cpp:422 msgid "Celcius" msgstr "" -#: src/CelestialNavigationUI.cpp:421 +#: src\CelestialNavigationUI.cpp:426 msgid "Pressure" msgstr "" -#: src/CelestialNavigationUI.cpp:428 +#: src\CelestialNavigationUI.cpp:433 msgid "MilliBars" msgstr "" -#: src/CelestialNavigationUI.cpp:432 +#: src\CelestialNavigationUI.cpp:437 msgid "Index Error" msgstr "" -#: src/CelestialNavigationUI.cpp:446 +#: src\CelestialNavigationUI.cpp:451 msgid "Set As Defaults" msgstr "" -#: src/CelestialNavigationUI.cpp:453 +#: src\CelestialNavigationUI.cpp:458 msgid "Parameters" msgstr "" -#: src/CelestialNavigationUI.cpp:469 +#: src\CelestialNavigationUI.cpp:474 msgid "Calculations" msgstr "" -#: src/CelestialNavigationUI.cpp:571 +#: src\CelestialNavigationUI.cpp:578 msgid "Shift all visible Sights" msgstr "" -#: src/CelestialNavigationUI.cpp:649 src/CelestialNavigationUI.cpp:760 +#: src\CelestialNavigationUI.cpp:656 src\CelestialNavigationUI.cpp:769 msgid "Latitude" msgstr "" -#: src/CelestialNavigationUI.cpp:658 src/CelestialNavigationUI.cpp:768 +#: src\CelestialNavigationUI.cpp:665 src\CelestialNavigationUI.cpp:777 msgid "Longitude" msgstr "" -#: src/CelestialNavigationUI.cpp:669 src/CelestialNavigationUI.cpp:679 -msgid "MyLabel" +#: src\CelestialNavigationUI.cpp:691 +msgid "Boat Position" msgstr "" -#: src/CelestialNavigationUI.cpp:686 -msgid "Done" +#: src\CelestialNavigationUI.cpp:695 +msgid "Magnetic" msgstr "" -#: src/CelestialNavigationUI.cpp:689 -msgid "Magnetic" +#: src\CelestialNavigationUI.cpp:698 +msgid "Done" msgstr "" -#: src/CelestialNavigationUI.cpp:753 +#: src\CelestialNavigationUI.cpp:762 msgid "Fix From Visible Sights" msgstr "" -#: src/CelestialNavigationUI.cpp:764 +#: src\CelestialNavigationUI.cpp:773 msgid " N/A " msgstr "" -#: src/CelestialNavigationUI.cpp:772 +#: src\CelestialNavigationUI.cpp:781 msgid " N/A " msgstr "" -#: src/CelestialNavigationUI.cpp:776 +#: src\CelestialNavigationUI.cpp:785 msgid "Error" msgstr "" -#: src/CelestialNavigationUI.cpp:780 +#: src\CelestialNavigationUI.cpp:789 msgid " N/A " msgstr "" -#: src/CelestialNavigationUI.cpp:787 src/CelestialNavigationUI.cpp:794 +#: src\CelestialNavigationUI.cpp:796 src\CelestialNavigationUI.cpp:803 msgid "Initial" msgstr "" -#: src/CelestialNavigationUI.cpp:801 +#: src\CelestialNavigationUI.cpp:810 msgid "Alg" msgstr "" -#: src/CelestialNavigationUI.cpp:806 +#: src\CelestialNavigationUI.cpp:815 msgid "Plane" msgstr "" -#: src/CelestialNavigationUI.cpp:807 +#: src\CelestialNavigationUI.cpp:816 msgid "Sphere" msgstr "" -#: src/CelestialNavigationUI.cpp:808 +#: src\CelestialNavigationUI.cpp:817 msgid "Cone" msgstr "" -#: src/CelestialNavigationUI.cpp:809 +#: src\CelestialNavigationUI.cpp:818 msgid "Cone 2" msgstr "" -#: src/CelestialNavigationUI.cpp:813 +#: src\CelestialNavigationUI.cpp:822 msgid "Go" msgstr "" -#: src/CelestialNavigationUI.cpp:850 src/CelestialNavigationUI.h:303 +#: src\CelestialNavigationUI.cpp:859 src\CelestialNavigationUI.h:308 msgid "Clock Correction" msgstr "" -#: src/CelestialNavigationUI.h:78 +#: src\CelestialNavigationUI.h:82 msgid "Celestial Navigation Sights" msgstr "" -#: src/CelestialNavigationUI.h:169 +#: src\CelestialNavigationUI.h:173 msgid "Sight Properties" msgstr "" -#: src/CelestialNavigationUI.h:200 +#: src\CelestialNavigationUI.h:204 msgid "Dead Reckoning shift" msgstr "" -#: src/CelestialNavigationUI.h:227 +#: src\CelestialNavigationUI.h:232 msgid "Find Celestial Body" msgstr "" -#: src/Sight.cpp:160 +#: src\FixDialog.cpp:192 +msgid "Shifted sights are not used to compute a fix, determine fix visually instead.\n" +msgstr "" + +#: src\FixDialog.cpp:193 +msgid "Fix Position" +msgstr "" + +#: src\FixDialog.cpp:338 src\FixDialog.cpp:339 src\FixDialog.cpp:340 +msgid " N/A " +msgstr "" + +#: src\Sight.cpp:172 src\Sight.cpp.bak:173 msgid "Astrolab failed, data unavailable:\n" msgstr "" -#: src/Sight.cpp:161 +#: src\Sight.cpp:173 src\Sight.cpp.bak:174 msgid "\n" "Did you forget to install vsop87d.txt?\n" msgstr "" -#: src/Sight.cpp:162 +#: src\Sight.cpp:174 src\Sight.cpp.bak:175 msgid "The plugin will not work correctly" msgstr "" -#: src/Sight.cpp:163 +#: src\Sight.cpp:175 src\Sight.cpp.bak:176 msgid "Failure Alert" msgstr "" -#: src/Sight.cpp:474 +#: src\Sight.cpp:495 src\Sight.cpp.bak:496 #, c-format msgid "Applying clock correction of %d seconds\n\n" msgstr "" -#: src/Sight.cpp:536 +#: src\Sight.cpp:557 src\Sight.cpp.bak:558 msgid "Almanac Data For " msgstr "" -#: src/Sight.cpp:537 +#: src\Sight.cpp:558 src\Sight.cpp.bak:559 #, c-format msgid "\n" "Geographical Position (lat, lon) = %.4f %.4f\n" @@ -410,23 +474,27 @@ msgid "\n" "HP = %.1f'\n\n" msgstr "" -#: src/Sight.cpp:552 src/Sight.cpp:690 +#: src\Sight.cpp:573 src\Sight.cpp:711 src\Sight.cpp.bak:574 +#: src\Sight.cpp.bak:712 msgid "Formulas used to calculate sight\n\n" msgstr "" -#: src/Sight.cpp:556 src/Sight.cpp:694 +#: src\Sight.cpp:577 src\Sight.cpp:715 src\Sight.cpp.bak:578 +#: src\Sight.cpp.bak:716 #, c-format msgid "Index Error is %.4f degrees\n\n" msgstr "" -#: src/Sight.cpp:561 src/Sight.cpp:699 +#: src\Sight.cpp:582 src\Sight.cpp:720 src\Sight.cpp.bak:583 +#: src\Sight.cpp.bak:721 #, c-format msgid "Eye Height is %.4f meters\n" "Height Correction Degrees = 1.758*sqrt(%.4f) / 60.0\n" "Height Correction Degrees = %.4f\n" msgstr "" -#: src/Sight.cpp:568 +#: src\Sight.cpp:589 src\Sight.cpp:799 src\Sight.cpp.bak:590 +#: src\Sight.cpp.bak:800 #, c-format msgid "\n" "Apparent Altitude (Ha)\n" @@ -435,7 +503,8 @@ msgid "\n" "ApparentAltitude = %.4f\n" msgstr "" -#: src/Sight.cpp:586 src/Sight.cpp:789 +#: src\Sight.cpp:607 src\Sight.cpp:810 src\Sight.cpp.bak:608 +#: src\Sight.cpp.bak:811 #, c-format msgid "\n" "Refraction Correction\n" @@ -444,21 +513,24 @@ msgid "\n" "x = %.4f\n" msgstr "" -#: src/Sight.cpp:591 src/Sight.cpp:794 +#: src\Sight.cpp:612 src\Sight.cpp:815 src\Sight.cpp.bak:613 +#: src\Sight.cpp.bak:816 #, c-format msgid "RefractionCorrection = .267 * Pressure / (x*(Temperature + 273.15)) / 60.0\n" "RefractionCorrection = .267 * %.4f / (x*(%.4f + 273.15)) / 60.0\n" "RefractionCorrection = %.4f\n" msgstr "" -#: src/Sight.cpp:606 src/Sight.cpp:808 +#: src\Sight.cpp:627 src\Sight.cpp:829 src\Sight.cpp.bak:628 +#: src\Sight.cpp.bak:830 #, c-format msgid "\n" "Sun selected, Limb Correction\n" "ra = %.4f, lc = 0.266564/ra = %.4f\n" msgstr "" -#: src/Sight.cpp:616 src/Sight.cpp:732 +#: src\Sight.cpp:637 src\Sight.cpp:753 src\Sight.cpp.bak:638 +#: src\Sight.cpp.bak:754 #, c-format msgid "\n" "Moon selected, Limb Correction\n" @@ -467,21 +539,25 @@ msgid "\n" "lc = %.4f\n" msgstr "" -#: src/Sight.cpp:626 src/Sight.cpp:741 src/Sight.cpp:816 +#: src\Sight.cpp:647 src\Sight.cpp:762 src\Sight.cpp:837 src\Sight.cpp.bak:648 +#: src\Sight.cpp.bak:763 src\Sight.cpp.bak:838 msgid "Upper Limb" msgstr "" -#: src/Sight.cpp:629 src/Sight.cpp:744 src/Sight.cpp:819 +#: src\Sight.cpp:650 src\Sight.cpp:765 src\Sight.cpp:840 src\Sight.cpp.bak:651 +#: src\Sight.cpp.bak:766 src\Sight.cpp.bak:841 msgid "Lower Limb" msgstr "" -#: src/Sight.cpp:632 src/Sight.cpp:822 +#: src\Sight.cpp:653 src\Sight.cpp:843 src\Sight.cpp.bak:654 +#: src\Sight.cpp.bak:844 #, c-format msgid "\n" "LimbCorrection = %.4f\n" msgstr "" -#: src/Sight.cpp:636 src/Sight.cpp:826 +#: src\Sight.cpp:657 src\Sight.cpp:847 src\Sight.cpp.bak:658 +#: src\Sight.cpp.bak:848 #, c-format msgid "\n" "Corrected Altitude\n" @@ -490,28 +566,31 @@ msgid "\n" "CorrectedAltitude = %.4f\n" msgstr "" -#: src/Sight.cpp:650 src/Sight.cpp:840 +#: src\Sight.cpp:671 src\Sight.cpp:861 src\Sight.cpp.bak:672 +#: src\Sight.cpp.bak:862 #, c-format msgid "\n" "Sun selected, parallax correction\n" "rad = %.4f, HP = 0.002442/rad = %.4f\n" msgstr "" -#: src/Sight.cpp:659 src/Sight.cpp:764 +#: src\Sight.cpp:680 src\Sight.cpp:785 src\Sight.cpp.bak:681 +#: src\Sight.cpp.bak:786 #, c-format msgid "\n" "Moon selected, parallax correction\n" "HP = %.4f\n" msgstr "" -#: src/Sight.cpp:665 src/Sight.cpp:846 +#: src\Sight.cpp:686 src\Sight.cpp:867 src\Sight.cpp.bak:687 +#: src\Sight.cpp.bak:868 #, c-format msgid "ParallaxCorrection = -180/Pi * asin( sin(Pi/180 * HP ) * cos(Pi/180 * CorrectedAltitude))\n" "ParallaxCorrection = -180/Pi * asin( sin(Pi/180 * %.4f ) * cos(Pi/180 * %.4f))\n" "ParallaxCorrection = %.4f\n" msgstr "" -#: src/Sight.cpp:672 +#: src\Sight.cpp:693 src\Sight.cpp.bak:694 #, c-format msgid "\n" "Observed Altitude (Ho)\n" @@ -520,16 +599,16 @@ msgid "\n" "ObservedAltitude = %.4f\n" msgstr "" -#: src/Sight.cpp:706 +#: src\Sight.cpp:727 src\Sight.cpp.bak:728 #, c-format msgid "\n" "Apparent Moon Altitude (Ha)\n" "ApparentAltitudeMoon = MeasurementMoon - IndexCorrection - EyeHeightCorrection\n" -" ApparentAltitudeMoon = %.4f - %.4f - %.4f\n" +"ApparentAltitudeMoon = %.4f - %.4f - %.4f\n" "ApparentAltitudeMoon = %.4f\n" msgstr "" -#: src/Sight.cpp:717 +#: src\Sight.cpp:738 src\Sight.cpp.bak:739 #, c-format msgid "\n" "Refraction Correction\n" @@ -538,20 +617,21 @@ msgid "\n" "x = %.4f\n" msgstr "" -#: src/Sight.cpp:722 +#: src\Sight.cpp:743 src\Sight.cpp.bak:744 #, c-format msgid "RefractionCorrectionMoon = .267 * Pressure / (x*(Temperature + 273.15)) / 60.0\n" "RefractionCorrectionMoon = .267 * %.4f / (x*(%.4f + 273.15)) / 60.0\n" "RefractionCorrectionMoon = %.4f\n" msgstr "" -#: src/Sight.cpp:747 src/Sight.cpp:750 +#: src\Sight.cpp:768 src\Sight.cpp:771 src\Sight.cpp.bak:769 +#: src\Sight.cpp.bak:772 #, c-format msgid "\n" "LimbCorrectionMoon = %.4f\n" msgstr "" -#: src/Sight.cpp:753 +#: src\Sight.cpp:774 src\Sight.cpp.bak:775 #, c-format msgid "\n" "Corrected Altitude\n" @@ -560,107 +640,82 @@ msgid "\n" "CorrectedAltitudeMoon = %.4f\n" msgstr "" -#: src/Sight.cpp:768 +#: src\Sight.cpp:789 src\Sight.cpp.bak:790 #, c-format msgid "ParallaxCorrectionMoon = -180/Pi * asin( sin(Pi/180 * HP ) * cos(Pi/180 * CorrectedAltitude))\n" -" ParallaxCorrectionMoon = -180/Pi * asin( sin(Pi/180 * %.4f ) * cos(Pi/180 * %.4f))\n" +"ParallaxCorrectionMoon = -180/Pi * asin( sin(Pi/180 * %.4f ) * cos(Pi/180 * %.4f))\n" "ParallaxCorrectionMoon = %.4f\n" msgstr "" -#: src/Sight.cpp:778 -#, c-format -msgid "\n" -"Apparent Altitude (Ha)\n" -"ApparentAltitude = Measurement - IndexCorrection - EyeHeightCorrection\n" -" ApparentAltitude = %.4f - %.4f - %.4f\n" -"ApparentAltitude = %.4f\n" -msgstr "" - -#: src/Sight.cpp:857 +#: src\Sight.cpp:878 src\Sight.cpp.bak:879 #, c-format msgid "CorrectionsMoon = %.4f\n" "CorrectionsBody = %.4f\n" "Corrections = abs(CorrectionsMoon - CorrectionsBody) = %.4f\n" msgstr "" -#: src/Sight.cpp:863 +#: src\Sight.cpp:884 src\Sight.cpp.bak:885 #, c-format msgid "CorrectedMeasurement = Measurement - Corrections - IndexCorrection\n" "CorrectedMeasurement = %.4f - %.4f - %.4f\n" "CorrectedMeasurement = %.4f\n" msgstr "" -#: src/Sight.cpp:888 +#: src\Sight.cpp:909 src\Sight.cpp.bak:910 msgid "\n" "Calculated angle between Moon and " msgstr "" -#: src/Sight.cpp:890 +#: src\Sight.cpp:911 src\Sight.cpp.bak:912 #, c-format msgid "\n" "Error from measurement: %.4f" msgstr "" -#: src/Sight.cpp:894 +#: src\Sight.cpp:915 src\Sight.cpp.bak:916 msgid "\n" "Moon takes 28 days to orbit, one degree of error takes 6720 seconds" msgstr "" -#: src/Sight.cpp:895 +#: src\Sight.cpp:916 src\Sight.cpp.bak:917 #, c-format msgid "\n" "Time correction %.4f seconds" msgstr "" -#: src/Sight.cpp:1099 +#: src\Sight.cpp:1120 src\Sight.cpp.bak:1121 msgid "Building bearing Sight Positions" msgstr "" -#: src/SightDialog.cpp:172 +#: src\SightDialog.cpp:184 msgid "Measurement certainty likely set to small, sight may not appear " msgstr "" -#: src/SightDialog.cpp:173 src/SightDialog.cpp:256 +#: src\SightDialog.cpp:185 src\SightDialog.cpp:279 msgid "Warning" msgstr "" -#: src/SightDialog.cpp:255 +#: src\SightDialog.cpp:278 msgid "Lunar shot will be invalid taking distance from moon to itself" msgstr "" -#: src/celestial_navigation_pi.cpp:90 -msgid "Failed to load file:\n" -msgstr "" - -#: src/celestial_navigation_pi.cpp:91 -msgid "\n" -"Magnetic data will not be available for the celestial navigation plugin." -msgstr "" - -#: src/celestial_navigation_pi.cpp:92 -msgid "OpenCPN Alert" +#: src\celestial_navigation_pi.cpp:179 +msgid "open error" msgstr "" -#: src/celestial_navigation_pi.cpp:157 -msgid "Celestial Navigation PlugIn for OpenCPN" +#: src\celestial_navigation_pi.cpp:180 +msgid "corrupt record" msgstr "" -#: src/celestial_navigation_pi.cpp:162 -msgid "Celestial Navigation PlugIn for OpenCPN.\n" -"Implements nautical almanac for sun, moon, planets,\n" -"and various navigational stars.\n" -"Compute position fix from celestial measurements." +#: src\celestial_navigation_pi.cpp:181 +msgid "too many models" msgstr "" -#: src/FixDialog.cpp:189 -msgid "Shifted sights are not used to compute a fix, determine fix visually instead.\n" +#: src\celestial_navigation_pi.cpp:184 +msgid "Magnetic data will not be available for the celestial navigation plugin." msgstr "" -#: src/FixDialog.cpp:190 -msgid "Fix Position" -msgstr "" - -#: src/FixDialog.cpp:335 src/FixDialog.cpp:336 src/FixDialog.cpp:337 -msgid " N/A " +#: src\celestial_navigation_pi.cpp:185 +msgid "OpenCPN Alert" msgstr "" diff --git a/po/hu_HU.po b/po/hu_HU.po index 6e60be5..fe140df 100644 --- a/po/hu_HU.po +++ b/po/hu_HU.po @@ -2,403 +2,467 @@ msgid "" msgstr "" "Project-Id-Version: opencpn\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-02-28 14:10-0300\n" -"PO-Revision-Date: 2016-09-21 16:34-0400\n" -"Last-Translator: nohal \n" +"POT-Creation-Date: 2021-10-27 22:15+0200\n" +"PO-Revision-Date: 2023-10-04 18:33\n" +"Last-Translator: \n" "Language-Team: Hungarian\n" "Language: hu_HU\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -"X-Generator: crowdin.com\n" "X-Crowdin-Project: opencpn\n" +"X-Crowdin-Project-ID: 49843\n" "X-Crowdin-Language: hu\n" "X-Crowdin-File: /plugins/celestial_navigation_pi/po/celestial_navigation_pi.pot\n" +"X-Crowdin-File-ID: 108\n" -#: src/CelestialNavigationDialog.cpp:123 src/CelestialNavigationUI.cpp:132 +#: src\CelestialNavigationDialog-2.3.5.1-no-android.cpp:149 +#: src\CelestialNavigationDialog-2.3.5.2-android.cpp:150 +#: src\CelestialNavigationDialog-partial-android.cpp:149 +#: src\CelestialNavigationDialog.cpp:150 src\CelestialNavigationUI.cpp:137 msgid "Type" -msgstr "" +msgstr "Típus" -#: src/CelestialNavigationDialog.cpp:124 +#: src\CelestialNavigationDialog-2.3.5.1-no-android.cpp:150 +#: src\CelestialNavigationDialog-2.3.5.2-android.cpp:151 +#: src\CelestialNavigationDialog-partial-android.cpp:150 +#: src\CelestialNavigationDialog.cpp:151 msgid "Body" -msgstr "" - -#: src/CelestialNavigationDialog.cpp:125 -msgid "Time (UTC)" -msgstr "" - -#: src/CelestialNavigationDialog.cpp:126 src/CelestialNavigationUI.cpp:179 +msgstr "Égitest" + +#: src\CelestialNavigationDialog-2.3.5.1-no-android.cpp:151 +#: src\CelestialNavigationDialog-2.3.5.2-android.cpp:152 +#: src\CelestialNavigationDialog-partial-android.cpp:151 +#: src\CelestialNavigationDialog.cpp:152 src\CelestialNavigationUI.cpp:328 +msgid "Time (UT)" +msgstr "Idő (UT)" + +#: src\CelestialNavigationDialog-2.3.5.1-no-android.cpp:152 +#: src\CelestialNavigationDialog-2.3.5.2-android.cpp:153 +#: src\CelestialNavigationDialog-partial-android.cpp:152 +#: src\CelestialNavigationDialog.cpp:153 src\CelestialNavigationUI.cpp:184 msgid "Measurement" -msgstr "" +msgstr "Mérés" -#: src/CelestialNavigationDialog.cpp:127 src/CelestialNavigationUI.cpp:376 +#: src\CelestialNavigationDialog-2.3.5.1-no-android.cpp:153 +#: src\CelestialNavigationDialog-2.3.5.2-android.cpp:154 +#: src\CelestialNavigationDialog-partial-android.cpp:153 +#: src\CelestialNavigationDialog.cpp:154 src\CelestialNavigationUI.cpp:381 msgid "Color" -msgstr "" - -#: src/CelestialNavigationDialog.cpp:193 -msgid "Failed to load file." -msgstr "" - -#: src/CelestialNavigationDialog.cpp:198 +msgstr "Szín:" + +#: src\CelestialNavigationDialog-2.3.5.1-no-android.cpp:266 +#: src\CelestialNavigationDialog-2.3.5.2-android.cpp:272 +#: src\CelestialNavigationDialog-partial-android.cpp:266 +#: src\CelestialNavigationDialog.cpp:272 src\celestial_navigation_pi.cpp:177 +msgid "Failed to load file: " +msgstr "Nem sikerült betölteni a fájlt:" + +#: src\CelestialNavigationDialog-2.3.5.1-no-android.cpp:271 +#: src\CelestialNavigationDialog-2.3.5.2-android.cpp:277 +#: src\CelestialNavigationDialog-partial-android.cpp:271 +#: src\CelestialNavigationDialog.cpp:277 msgid "Invalid xml file" -msgstr "" +msgstr "Érvénytelen xml fájl" -#: src/CelestialNavigationDialog.cpp:250 +#: src\CelestialNavigationDialog-2.3.5.1-no-android.cpp:323 +#: src\CelestialNavigationDialog-2.3.5.2-android.cpp:329 +#: src\CelestialNavigationDialog-partial-android.cpp:323 +#: src\CelestialNavigationDialog.cpp:329 msgid "Unrecognized xml node" -msgstr "" - -#: src/CelestialNavigationDialog.cpp:260 -msgid "Weather Routing" -msgstr "" +msgstr "Ismeretlen xml mód" + +#: src\CelestialNavigationDialog-2.3.5.1-no-android.cpp:332 +#: src\CelestialNavigationDialog-2.3.5.1-no-android.cpp:392 +#: src\CelestialNavigationDialog-2.3.5.1-no-android.cpp:532 +#: src\CelestialNavigationDialog-2.3.5.2-android.cpp:338 +#: src\CelestialNavigationDialog-2.3.5.2-android.cpp:398 +#: src\CelestialNavigationDialog-2.3.5.2-android.cpp:538 +#: src\CelestialNavigationDialog-partial-android.cpp:332 +#: src\CelestialNavigationDialog-partial-android.cpp:392 +#: src\CelestialNavigationDialog-partial-android.cpp:532 +#: src\CelestialNavigationDialog.cpp:338 src\CelestialNavigationDialog.cpp:398 +#: src\CelestialNavigationDialog.cpp:538 src\Sight.cpp:1120 +#: src\Sight.cpp.bak:1121 src\celestial_navigation_pi.cpp:95 +#: src\celestial_navigation_pi.cpp:99 +msgid "Celestial Navigation" +msgstr "Csillagászati navigáció" -#: src/CelestialNavigationDialog.cpp:320 +#: src\CelestialNavigationDialog-2.3.5.1-no-android.cpp:391 +#: src\CelestialNavigationDialog-2.3.5.2-android.cpp:397 +#: src\CelestialNavigationDialog-partial-android.cpp:391 +#: src\CelestialNavigationDialog.cpp:397 msgid "Failed to save xml file: " -msgstr "" - -#: src/CelestialNavigationDialog.cpp:321 src/CelestialNavigationDialog.cpp:466 -#: src/Sight.cpp:1099 src/celestial_navigation_pi.cpp:99 -#: src/celestial_navigation_pi.cpp:152 -msgid "Celestial Navigation" -msgstr "" +msgstr "XML fájl mentése sikertelen:" -#: src/CelestialNavigationDialog.cpp:351 +#: src\CelestialNavigationDialog-2.3.5.1-no-android.cpp:424 +#: src\CelestialNavigationDialog-2.3.5.2-android.cpp:430 +#: src\CelestialNavigationDialog-partial-android.cpp:424 +#: src\CelestialNavigationDialog.cpp:430 msgid "Time Correction" -msgstr "" +msgstr "Idő korrekció" -#: src/CelestialNavigationDialog.cpp:409 +#: src\CelestialNavigationDialog-2.3.5.1-no-android.cpp:473 +#: src\CelestialNavigationDialog-2.3.5.2-android.cpp:479 +#: src\CelestialNavigationDialog-partial-android.cpp:473 +#: src\CelestialNavigationDialog.cpp:479 msgid "Sun" -msgstr "" +msgstr "Nap" -#: src/CelestialNavigationDialog.cpp:465 +#: src\CelestialNavigationDialog-2.3.5.1-no-android.cpp:531 +#: src\CelestialNavigationDialog-2.3.5.2-android.cpp:537 +#: src\CelestialNavigationDialog-partial-android.cpp:531 +#: src\CelestialNavigationDialog.cpp:537 msgid "Are you sure you want to delete all sights?" -msgstr "" +msgstr "Biztos benne, hogy törölni akarja az összes mérést?" -#: src/CelestialNavigationDialog.cpp:510 +#: src\CelestialNavigationDialog-2.3.5.1-no-android.cpp:582 +#: src\CelestialNavigationDialog-2.3.5.2-android.cpp:588 +#: src\CelestialNavigationDialog-partial-android.cpp:582 +#: src\CelestialNavigationDialog.cpp:588 msgid "Celestial_Navigation_Information.html" -msgstr "" - -#: src/CelestialNavigationDialog.cpp:516 -msgid "Show" -msgstr "" +msgstr "Celestial_Navigation_Information.html" -#: src/CelestialNavigationDialog.cpp:516 src/CelestialNavigationUI.cpp:58 +#: src\CelestialNavigationDialog-2.3.5.1-no-android.cpp:589 +#: src\CelestialNavigationDialog-2.3.5.2-android.cpp:595 +#: src\CelestialNavigationDialog-partial-android.cpp:589 +#: src\CelestialNavigationDialog.cpp:595 src\CelestialNavigationUI.cpp:55 msgid "Hide" -msgstr "" +msgstr "Elrejtés" + +#: src\CelestialNavigationDialog-2.3.5.1-no-android.cpp:589 +#: src\CelestialNavigationDialog-2.3.5.2-android.cpp:595 +#: src\CelestialNavigationDialog-partial-android.cpp:589 +#: src\CelestialNavigationDialog.cpp:595 +msgid "Show" +msgstr "Megjelenítés" -#: src/CelestialNavigationUI.cpp:40 +#: src\CelestialNavigationUI.cpp:40 msgid "New" -msgstr "" +msgstr "Új" -#: src/CelestialNavigationUI.cpp:43 -msgid "Edit" -msgstr "" +#: src\CelestialNavigationUI.cpp:43 src\CelestialNavigationUI.h:286 +msgid "Fix" +msgstr "Fix" -#: src/CelestialNavigationUI.cpp:46 -msgid "Delete" -msgstr "" +#: src\CelestialNavigationUI.cpp:46 +msgid "Duplicate" +msgstr "Duplikálás" -#: src/CelestialNavigationUI.cpp:49 -msgid "Delete All" -msgstr "" +#: src\CelestialNavigationUI.cpp:49 +msgid "Clock Offset" +msgstr "Óra elérés" -#: src/CelestialNavigationUI.cpp:52 src/CelestialNavigationUI.h:281 -msgid "Fix" -msgstr "" +#: src\CelestialNavigationUI.cpp:52 +msgid "Edit" +msgstr "Szerkesztés" -#: src/CelestialNavigationUI.cpp:55 -msgid "Clock Offset" -msgstr "" +#: src\CelestialNavigationUI.cpp:58 +msgid "Delete" +msgstr "Törlés" -#: src/CelestialNavigationUI.cpp:61 +#: src\CelestialNavigationUI.cpp:61 msgid "Information" -msgstr "" +msgstr "Információ" + +#: src\CelestialNavigationUI.cpp:64 +msgid "Delete All" +msgstr "Összes törlése" -#: src/CelestialNavigationUI.cpp:136 src/CelestialNavigationUI.cpp:667 -#: src/Sight.h:49 +#: src\CelestialNavigationUI.cpp:141 src\CelestialNavigationUI.cpp:674 +#: src\Sight.h:49 msgid "Altitude" -msgstr "" +msgstr "Magasság" -#: src/CelestialNavigationUI.cpp:136 src/CelestialNavigationUI.cpp:677 -#: src/Sight.h:49 +#: src\CelestialNavigationUI.cpp:141 src\CelestialNavigationUI.cpp:683 +#: src\Sight.h:49 msgid "Azimuth" -msgstr "" +msgstr "Irányszög" -#: src/CelestialNavigationUI.cpp:136 src/Sight.h:49 +#: src\CelestialNavigationUI.cpp:141 src\Sight.h:49 msgid "Lunar" -msgstr "" +msgstr "Hold" -#: src/CelestialNavigationUI.cpp:142 +#: src\CelestialNavigationUI.cpp:147 msgid "Magnetic Azimuth" -msgstr "" +msgstr "Mágneses azimut" -#: src/CelestialNavigationUI.cpp:145 +#: src\CelestialNavigationUI.cpp:150 msgid "Celestial Body" -msgstr "" +msgstr "Égitest" -#: src/CelestialNavigationUI.cpp:154 +#: src\CelestialNavigationUI.cpp:159 msgid "Find" -msgstr "" +msgstr "Keresés" -#: src/CelestialNavigationUI.cpp:157 +#: src\CelestialNavigationUI.cpp:162 msgid "Limb" msgstr "" -#: src/CelestialNavigationUI.cpp:161 -msgid "Lower" +#: src\CelestialNavigationUI.cpp:166 +msgid "Center" msgstr "" -#: src/CelestialNavigationUI.cpp:161 -msgid "Center" +#: src\CelestialNavigationUI.cpp:166 +msgid "Lower" msgstr "" -#: src/CelestialNavigationUI.cpp:161 +#: src\CelestialNavigationUI.cpp:166 msgid "Upper" msgstr "" -#: src/CelestialNavigationUI.cpp:186 src/CelestialNavigationUI.cpp:193 -#: src/CelestialNavigationUI.cpp:223 src/CelestialNavigationUI.cpp:230 +#: src\CelestialNavigationUI.cpp:191 src\CelestialNavigationUI.cpp:198 +#: src\CelestialNavigationUI.cpp:228 src\CelestialNavigationUI.cpp:235 msgid "0" msgstr "" -#: src/CelestialNavigationUI.cpp:189 src/CelestialNavigationUI.cpp:348 -#: src/CelestialNavigationUI.cpp:598 +#: src\CelestialNavigationUI.cpp:194 src\CelestialNavigationUI.cpp:353 +#: src\CelestialNavigationUI.cpp:605 msgid "Degrees" -msgstr "" +msgstr "Fok" -#: src/CelestialNavigationUI.cpp:196 src/CelestialNavigationUI.cpp:278 -#: src/CelestialNavigationUI.cpp:439 +#: src\CelestialNavigationUI.cpp:201 src\CelestialNavigationUI.cpp:283 +#: src\CelestialNavigationUI.cpp:444 msgid "Minutes" msgstr "" -#: src/CelestialNavigationUI.cpp:200 +#: src\CelestialNavigationUI.cpp:205 msgid "10" -msgstr "" +msgstr "10" -#: src/CelestialNavigationUI.cpp:203 +#: src\CelestialNavigationUI.cpp:208 msgid "Minutes Certainty" msgstr "" -#: src/CelestialNavigationUI.cpp:217 +#: src\CelestialNavigationUI.cpp:222 msgid "Lunar Altitude" msgstr "" -#: src/CelestialNavigationUI.cpp:226 +#: src\CelestialNavigationUI.cpp:231 msgid "Body Altitude" msgstr "" -#: src/CelestialNavigationUI.cpp:243 +#: src\CelestialNavigationUI.cpp:248 msgid "Sight" -msgstr "" +msgstr "Észlelés" -#: src/CelestialNavigationUI.cpp:271 +#: src\CelestialNavigationUI.cpp:276 msgid "Hours" msgstr "" -#: src/CelestialNavigationUI.cpp:285 src/CelestialNavigationUI.cpp:303 -#: src/CelestialNavigationUI.cpp:860 +#: src\CelestialNavigationUI.cpp:290 src\CelestialNavigationUI.cpp:308 +#: src\CelestialNavigationUI.cpp:869 msgid "Seconds" -msgstr "" +msgstr "Másodperc" -#: src/CelestialNavigationUI.cpp:293 +#: src\CelestialNavigationUI.cpp:298 msgid "Certainty" msgstr "" -#: src/CelestialNavigationUI.cpp:323 -msgid "Time" -msgstr "" - -#: src/CelestialNavigationUI.cpp:330 src/CelestialNavigationUI.cpp:580 +#: src\CelestialNavigationUI.cpp:335 src\CelestialNavigationUI.cpp:587 msgid "Distance" -msgstr "" +msgstr "Távolság" -#: src/CelestialNavigationUI.cpp:337 src/CelestialNavigationUI.cpp:587 +#: src\CelestialNavigationUI.cpp:342 src\CelestialNavigationUI.cpp:594 msgid "Nm" -msgstr "" +msgstr "tmf" -#: src/CelestialNavigationUI.cpp:341 src/CelestialNavigationUI.cpp:591 +#: src\CelestialNavigationUI.cpp:346 src\CelestialNavigationUI.cpp:598 msgid "Bearing" -msgstr "" +msgstr "Iránylat" -#: src/CelestialNavigationUI.cpp:352 src/CelestialNavigationUI.cpp:602 +#: src\CelestialNavigationUI.cpp:357 src\CelestialNavigationUI.cpp:609 msgid "Magnetic Bearing" -msgstr "" +msgstr "Mágneses irány" -#: src/CelestialNavigationUI.cpp:359 +#: src\CelestialNavigationUI.cpp:364 msgid "DR Shift" msgstr "" -#: src/CelestialNavigationUI.cpp:366 +#: src\CelestialNavigationUI.cpp:371 msgid "Transparency" -msgstr "" +msgstr "Átlátszóság" -#: src/CelestialNavigationUI.cpp:387 +#: src\CelestialNavigationUI.cpp:392 msgid "Config" -msgstr "" +msgstr "Beállítások" -#: src/CelestialNavigationUI.cpp:399 +#: src\CelestialNavigationUI.cpp:404 msgid "Eye Height" msgstr "" -#: src/CelestialNavigationUI.cpp:403 +#: src\CelestialNavigationUI.cpp:408 msgid "2" -msgstr "" +msgstr "2" -#: src/CelestialNavigationUI.cpp:406 +#: src\CelestialNavigationUI.cpp:411 msgid "Meters" -msgstr "" +msgstr "méter" -#: src/CelestialNavigationUI.cpp:410 +#: src\CelestialNavigationUI.cpp:415 msgid "Temperature" -msgstr "" +msgstr "Hőmérséklet" -#: src/CelestialNavigationUI.cpp:417 +#: src\CelestialNavigationUI.cpp:422 msgid "Celcius" -msgstr "" +msgstr "Celsius" -#: src/CelestialNavigationUI.cpp:421 +#: src\CelestialNavigationUI.cpp:426 msgid "Pressure" -msgstr "" +msgstr "Légnyomás" -#: src/CelestialNavigationUI.cpp:428 +#: src\CelestialNavigationUI.cpp:433 msgid "MilliBars" -msgstr "" +msgstr "Millibar" -#: src/CelestialNavigationUI.cpp:432 +#: src\CelestialNavigationUI.cpp:437 msgid "Index Error" msgstr "" -#: src/CelestialNavigationUI.cpp:446 +#: src\CelestialNavigationUI.cpp:451 msgid "Set As Defaults" -msgstr "" +msgstr "Beállítás alapértelmezettként" -#: src/CelestialNavigationUI.cpp:453 +#: src\CelestialNavigationUI.cpp:458 msgid "Parameters" -msgstr "" +msgstr "Paraméterek" -#: src/CelestialNavigationUI.cpp:469 +#: src\CelestialNavigationUI.cpp:474 msgid "Calculations" -msgstr "" +msgstr "Számítások" -#: src/CelestialNavigationUI.cpp:571 +#: src\CelestialNavigationUI.cpp:578 msgid "Shift all visible Sights" msgstr "" -#: src/CelestialNavigationUI.cpp:649 src/CelestialNavigationUI.cpp:760 +#: src\CelestialNavigationUI.cpp:656 src\CelestialNavigationUI.cpp:769 msgid "Latitude" -msgstr "" +msgstr "Szélesség" -#: src/CelestialNavigationUI.cpp:658 src/CelestialNavigationUI.cpp:768 +#: src\CelestialNavigationUI.cpp:665 src\CelestialNavigationUI.cpp:777 msgid "Longitude" -msgstr "" +msgstr "Hosszúság" -#: src/CelestialNavigationUI.cpp:669 src/CelestialNavigationUI.cpp:679 -msgid "MyLabel" -msgstr "" - -#: src/CelestialNavigationUI.cpp:686 -msgid "Done" -msgstr "" +#: src\CelestialNavigationUI.cpp:691 +msgid "Boat Position" +msgstr "Hajó pozíció" -#: src/CelestialNavigationUI.cpp:689 +#: src\CelestialNavigationUI.cpp:695 msgid "Magnetic" -msgstr "" +msgstr "Mágneses" + +#: src\CelestialNavigationUI.cpp:698 +msgid "Done" +msgstr "Kész" -#: src/CelestialNavigationUI.cpp:753 +#: src\CelestialNavigationUI.cpp:762 msgid "Fix From Visible Sights" msgstr "" -#: src/CelestialNavigationUI.cpp:764 +#: src\CelestialNavigationUI.cpp:773 msgid " N/A " msgstr "" -#: src/CelestialNavigationUI.cpp:772 +#: src\CelestialNavigationUI.cpp:781 msgid " N/A " msgstr "" -#: src/CelestialNavigationUI.cpp:776 +#: src\CelestialNavigationUI.cpp:785 msgid "Error" msgstr "" -#: src/CelestialNavigationUI.cpp:780 +#: src\CelestialNavigationUI.cpp:789 msgid " N/A " msgstr "" -#: src/CelestialNavigationUI.cpp:787 src/CelestialNavigationUI.cpp:794 +#: src\CelestialNavigationUI.cpp:796 src\CelestialNavigationUI.cpp:803 msgid "Initial" -msgstr "" +msgstr "Kezdeti" -#: src/CelestialNavigationUI.cpp:801 +#: src\CelestialNavigationUI.cpp:810 msgid "Alg" msgstr "" -#: src/CelestialNavigationUI.cpp:806 +#: src\CelestialNavigationUI.cpp:815 msgid "Plane" msgstr "" -#: src/CelestialNavigationUI.cpp:807 +#: src\CelestialNavigationUI.cpp:816 msgid "Sphere" msgstr "" -#: src/CelestialNavigationUI.cpp:808 +#: src\CelestialNavigationUI.cpp:817 msgid "Cone" msgstr "" -#: src/CelestialNavigationUI.cpp:809 +#: src\CelestialNavigationUI.cpp:818 msgid "Cone 2" msgstr "" -#: src/CelestialNavigationUI.cpp:813 +#: src\CelestialNavigationUI.cpp:822 msgid "Go" msgstr "" -#: src/CelestialNavigationUI.cpp:850 src/CelestialNavigationUI.h:303 +#: src\CelestialNavigationUI.cpp:859 src\CelestialNavigationUI.h:308 msgid "Clock Correction" msgstr "" -#: src/CelestialNavigationUI.h:78 +#: src\CelestialNavigationUI.h:82 msgid "Celestial Navigation Sights" msgstr "" -#: src/CelestialNavigationUI.h:169 +#: src\CelestialNavigationUI.h:173 msgid "Sight Properties" msgstr "" -#: src/CelestialNavigationUI.h:200 +#: src\CelestialNavigationUI.h:204 msgid "Dead Reckoning shift" msgstr "" -#: src/CelestialNavigationUI.h:227 +#: src\CelestialNavigationUI.h:232 msgid "Find Celestial Body" msgstr "" -#: src/Sight.cpp:160 +#: src\FixDialog.cpp:192 +msgid "Shifted sights are not used to compute a fix, determine fix visually instead.\n" +msgstr "" + +#: src\FixDialog.cpp:193 +msgid "Fix Position" +msgstr "" + +#: src\FixDialog.cpp:338 src\FixDialog.cpp:339 src\FixDialog.cpp:340 +msgid " N/A " +msgstr "" + +#: src\Sight.cpp:172 src\Sight.cpp.bak:173 msgid "Astrolab failed, data unavailable:\n" msgstr "" -#: src/Sight.cpp:161 +#: src\Sight.cpp:173 src\Sight.cpp.bak:174 msgid "\n" "Did you forget to install vsop87d.txt?\n" msgstr "" -#: src/Sight.cpp:162 +#: src\Sight.cpp:174 src\Sight.cpp.bak:175 msgid "The plugin will not work correctly" msgstr "" -#: src/Sight.cpp:163 +#: src\Sight.cpp:175 src\Sight.cpp.bak:176 msgid "Failure Alert" msgstr "" -#: src/Sight.cpp:474 +#: src\Sight.cpp:495 src\Sight.cpp.bak:496 #, c-format msgid "Applying clock correction of %d seconds\n\n" msgstr "" -#: src/Sight.cpp:536 +#: src\Sight.cpp:557 src\Sight.cpp.bak:558 msgid "Almanac Data For " msgstr "" -#: src/Sight.cpp:537 +#: src\Sight.cpp:558 src\Sight.cpp.bak:559 #, c-format msgid "\n" "Geographical Position (lat, lon) = %.4f %.4f\n" @@ -410,23 +474,27 @@ msgid "\n" "HP = %.1f'\n\n" msgstr "" -#: src/Sight.cpp:552 src/Sight.cpp:690 +#: src\Sight.cpp:573 src\Sight.cpp:711 src\Sight.cpp.bak:574 +#: src\Sight.cpp.bak:712 msgid "Formulas used to calculate sight\n\n" msgstr "" -#: src/Sight.cpp:556 src/Sight.cpp:694 +#: src\Sight.cpp:577 src\Sight.cpp:715 src\Sight.cpp.bak:578 +#: src\Sight.cpp.bak:716 #, c-format msgid "Index Error is %.4f degrees\n\n" msgstr "" -#: src/Sight.cpp:561 src/Sight.cpp:699 +#: src\Sight.cpp:582 src\Sight.cpp:720 src\Sight.cpp.bak:583 +#: src\Sight.cpp.bak:721 #, c-format msgid "Eye Height is %.4f meters\n" "Height Correction Degrees = 1.758*sqrt(%.4f) / 60.0\n" "Height Correction Degrees = %.4f\n" msgstr "" -#: src/Sight.cpp:568 +#: src\Sight.cpp:589 src\Sight.cpp:799 src\Sight.cpp.bak:590 +#: src\Sight.cpp.bak:800 #, c-format msgid "\n" "Apparent Altitude (Ha)\n" @@ -435,7 +503,8 @@ msgid "\n" "ApparentAltitude = %.4f\n" msgstr "" -#: src/Sight.cpp:586 src/Sight.cpp:789 +#: src\Sight.cpp:607 src\Sight.cpp:810 src\Sight.cpp.bak:608 +#: src\Sight.cpp.bak:811 #, c-format msgid "\n" "Refraction Correction\n" @@ -444,21 +513,24 @@ msgid "\n" "x = %.4f\n" msgstr "" -#: src/Sight.cpp:591 src/Sight.cpp:794 +#: src\Sight.cpp:612 src\Sight.cpp:815 src\Sight.cpp.bak:613 +#: src\Sight.cpp.bak:816 #, c-format msgid "RefractionCorrection = .267 * Pressure / (x*(Temperature + 273.15)) / 60.0\n" "RefractionCorrection = .267 * %.4f / (x*(%.4f + 273.15)) / 60.0\n" "RefractionCorrection = %.4f\n" msgstr "" -#: src/Sight.cpp:606 src/Sight.cpp:808 +#: src\Sight.cpp:627 src\Sight.cpp:829 src\Sight.cpp.bak:628 +#: src\Sight.cpp.bak:830 #, c-format msgid "\n" "Sun selected, Limb Correction\n" "ra = %.4f, lc = 0.266564/ra = %.4f\n" msgstr "" -#: src/Sight.cpp:616 src/Sight.cpp:732 +#: src\Sight.cpp:637 src\Sight.cpp:753 src\Sight.cpp.bak:638 +#: src\Sight.cpp.bak:754 #, c-format msgid "\n" "Moon selected, Limb Correction\n" @@ -467,21 +539,25 @@ msgid "\n" "lc = %.4f\n" msgstr "" -#: src/Sight.cpp:626 src/Sight.cpp:741 src/Sight.cpp:816 +#: src\Sight.cpp:647 src\Sight.cpp:762 src\Sight.cpp:837 src\Sight.cpp.bak:648 +#: src\Sight.cpp.bak:763 src\Sight.cpp.bak:838 msgid "Upper Limb" msgstr "" -#: src/Sight.cpp:629 src/Sight.cpp:744 src/Sight.cpp:819 +#: src\Sight.cpp:650 src\Sight.cpp:765 src\Sight.cpp:840 src\Sight.cpp.bak:651 +#: src\Sight.cpp.bak:766 src\Sight.cpp.bak:841 msgid "Lower Limb" msgstr "" -#: src/Sight.cpp:632 src/Sight.cpp:822 +#: src\Sight.cpp:653 src\Sight.cpp:843 src\Sight.cpp.bak:654 +#: src\Sight.cpp.bak:844 #, c-format msgid "\n" "LimbCorrection = %.4f\n" msgstr "" -#: src/Sight.cpp:636 src/Sight.cpp:826 +#: src\Sight.cpp:657 src\Sight.cpp:847 src\Sight.cpp.bak:658 +#: src\Sight.cpp.bak:848 #, c-format msgid "\n" "Corrected Altitude\n" @@ -490,28 +566,31 @@ msgid "\n" "CorrectedAltitude = %.4f\n" msgstr "" -#: src/Sight.cpp:650 src/Sight.cpp:840 +#: src\Sight.cpp:671 src\Sight.cpp:861 src\Sight.cpp.bak:672 +#: src\Sight.cpp.bak:862 #, c-format msgid "\n" "Sun selected, parallax correction\n" "rad = %.4f, HP = 0.002442/rad = %.4f\n" msgstr "" -#: src/Sight.cpp:659 src/Sight.cpp:764 +#: src\Sight.cpp:680 src\Sight.cpp:785 src\Sight.cpp.bak:681 +#: src\Sight.cpp.bak:786 #, c-format msgid "\n" "Moon selected, parallax correction\n" "HP = %.4f\n" msgstr "" -#: src/Sight.cpp:665 src/Sight.cpp:846 +#: src\Sight.cpp:686 src\Sight.cpp:867 src\Sight.cpp.bak:687 +#: src\Sight.cpp.bak:868 #, c-format msgid "ParallaxCorrection = -180/Pi * asin( sin(Pi/180 * HP ) * cos(Pi/180 * CorrectedAltitude))\n" "ParallaxCorrection = -180/Pi * asin( sin(Pi/180 * %.4f ) * cos(Pi/180 * %.4f))\n" "ParallaxCorrection = %.4f\n" msgstr "" -#: src/Sight.cpp:672 +#: src\Sight.cpp:693 src\Sight.cpp.bak:694 #, c-format msgid "\n" "Observed Altitude (Ho)\n" @@ -520,16 +599,16 @@ msgid "\n" "ObservedAltitude = %.4f\n" msgstr "" -#: src/Sight.cpp:706 +#: src\Sight.cpp:727 src\Sight.cpp.bak:728 #, c-format msgid "\n" "Apparent Moon Altitude (Ha)\n" "ApparentAltitudeMoon = MeasurementMoon - IndexCorrection - EyeHeightCorrection\n" -" ApparentAltitudeMoon = %.4f - %.4f - %.4f\n" +"ApparentAltitudeMoon = %.4f - %.4f - %.4f\n" "ApparentAltitudeMoon = %.4f\n" msgstr "" -#: src/Sight.cpp:717 +#: src\Sight.cpp:738 src\Sight.cpp.bak:739 #, c-format msgid "\n" "Refraction Correction\n" @@ -538,20 +617,21 @@ msgid "\n" "x = %.4f\n" msgstr "" -#: src/Sight.cpp:722 +#: src\Sight.cpp:743 src\Sight.cpp.bak:744 #, c-format msgid "RefractionCorrectionMoon = .267 * Pressure / (x*(Temperature + 273.15)) / 60.0\n" "RefractionCorrectionMoon = .267 * %.4f / (x*(%.4f + 273.15)) / 60.0\n" "RefractionCorrectionMoon = %.4f\n" msgstr "" -#: src/Sight.cpp:747 src/Sight.cpp:750 +#: src\Sight.cpp:768 src\Sight.cpp:771 src\Sight.cpp.bak:769 +#: src\Sight.cpp.bak:772 #, c-format msgid "\n" "LimbCorrectionMoon = %.4f\n" msgstr "" -#: src/Sight.cpp:753 +#: src\Sight.cpp:774 src\Sight.cpp.bak:775 #, c-format msgid "\n" "Corrected Altitude\n" @@ -560,107 +640,82 @@ msgid "\n" "CorrectedAltitudeMoon = %.4f\n" msgstr "" -#: src/Sight.cpp:768 +#: src\Sight.cpp:789 src\Sight.cpp.bak:790 #, c-format msgid "ParallaxCorrectionMoon = -180/Pi * asin( sin(Pi/180 * HP ) * cos(Pi/180 * CorrectedAltitude))\n" -" ParallaxCorrectionMoon = -180/Pi * asin( sin(Pi/180 * %.4f ) * cos(Pi/180 * %.4f))\n" +"ParallaxCorrectionMoon = -180/Pi * asin( sin(Pi/180 * %.4f ) * cos(Pi/180 * %.4f))\n" "ParallaxCorrectionMoon = %.4f\n" msgstr "" -#: src/Sight.cpp:778 -#, c-format -msgid "\n" -"Apparent Altitude (Ha)\n" -"ApparentAltitude = Measurement - IndexCorrection - EyeHeightCorrection\n" -" ApparentAltitude = %.4f - %.4f - %.4f\n" -"ApparentAltitude = %.4f\n" -msgstr "" - -#: src/Sight.cpp:857 +#: src\Sight.cpp:878 src\Sight.cpp.bak:879 #, c-format msgid "CorrectionsMoon = %.4f\n" "CorrectionsBody = %.4f\n" "Corrections = abs(CorrectionsMoon - CorrectionsBody) = %.4f\n" msgstr "" -#: src/Sight.cpp:863 +#: src\Sight.cpp:884 src\Sight.cpp.bak:885 #, c-format msgid "CorrectedMeasurement = Measurement - Corrections - IndexCorrection\n" "CorrectedMeasurement = %.4f - %.4f - %.4f\n" "CorrectedMeasurement = %.4f\n" msgstr "" -#: src/Sight.cpp:888 +#: src\Sight.cpp:909 src\Sight.cpp.bak:910 msgid "\n" "Calculated angle between Moon and " msgstr "" -#: src/Sight.cpp:890 +#: src\Sight.cpp:911 src\Sight.cpp.bak:912 #, c-format msgid "\n" "Error from measurement: %.4f" msgstr "" -#: src/Sight.cpp:894 +#: src\Sight.cpp:915 src\Sight.cpp.bak:916 msgid "\n" "Moon takes 28 days to orbit, one degree of error takes 6720 seconds" msgstr "" -#: src/Sight.cpp:895 +#: src\Sight.cpp:916 src\Sight.cpp.bak:917 #, c-format msgid "\n" "Time correction %.4f seconds" msgstr "" -#: src/Sight.cpp:1099 +#: src\Sight.cpp:1120 src\Sight.cpp.bak:1121 msgid "Building bearing Sight Positions" msgstr "" -#: src/SightDialog.cpp:172 +#: src\SightDialog.cpp:184 msgid "Measurement certainty likely set to small, sight may not appear " msgstr "" -#: src/SightDialog.cpp:173 src/SightDialog.cpp:256 +#: src\SightDialog.cpp:185 src\SightDialog.cpp:279 msgid "Warning" msgstr "" -#: src/SightDialog.cpp:255 +#: src\SightDialog.cpp:278 msgid "Lunar shot will be invalid taking distance from moon to itself" msgstr "" -#: src/celestial_navigation_pi.cpp:90 -msgid "Failed to load file:\n" -msgstr "" - -#: src/celestial_navigation_pi.cpp:91 -msgid "\n" -"Magnetic data will not be available for the celestial navigation plugin." -msgstr "" - -#: src/celestial_navigation_pi.cpp:92 -msgid "OpenCPN Alert" +#: src\celestial_navigation_pi.cpp:179 +msgid "open error" msgstr "" -#: src/celestial_navigation_pi.cpp:157 -msgid "Celestial Navigation PlugIn for OpenCPN" +#: src\celestial_navigation_pi.cpp:180 +msgid "corrupt record" msgstr "" -#: src/celestial_navigation_pi.cpp:162 -msgid "Celestial Navigation PlugIn for OpenCPN.\n" -"Implements nautical almanac for sun, moon, planets,\n" -"and various navigational stars.\n" -"Compute position fix from celestial measurements." +#: src\celestial_navigation_pi.cpp:181 +msgid "too many models" msgstr "" -#: src/FixDialog.cpp:189 -msgid "Shifted sights are not used to compute a fix, determine fix visually instead.\n" +#: src\celestial_navigation_pi.cpp:184 +msgid "Magnetic data will not be available for the celestial navigation plugin." msgstr "" -#: src/FixDialog.cpp:190 -msgid "Fix Position" -msgstr "" - -#: src/FixDialog.cpp:335 src/FixDialog.cpp:336 src/FixDialog.cpp:337 -msgid " N/A " +#: src\celestial_navigation_pi.cpp:185 +msgid "OpenCPN Alert" msgstr "" diff --git a/po/id_ID.po b/po/id_ID.po index 83386a7..d482af1 100644 --- a/po/id_ID.po +++ b/po/id_ID.po @@ -2,404 +2,468 @@ msgid "" msgstr "" "Project-Id-Version: opencpn\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-02-28 14:10-0300\n" -"PO-Revision-Date: 2018-03-03 08:24-0500\n" -"Last-Translator: nohal \n" +"POT-Creation-Date: 2021-10-27 22:15+0200\n" +"PO-Revision-Date: 2023-10-04 18:33\n" +"Last-Translator: \n" "Language-Team: Indonesian\n" "Language: id_ID\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=1; plural=0;\n" -"X-Generator: crowdin.com\n" "X-Crowdin-Project: opencpn\n" +"X-Crowdin-Project-ID: 49843\n" "X-Crowdin-Language: id\n" "X-Crowdin-File: /plugins/celestial_navigation_pi/po/celestial_navigation_pi.pot\n" +"X-Crowdin-File-ID: 108\n" -#: src/CelestialNavigationDialog.cpp:123 src/CelestialNavigationUI.cpp:132 +#: src\CelestialNavigationDialog-2.3.5.1-no-android.cpp:149 +#: src\CelestialNavigationDialog-2.3.5.2-android.cpp:150 +#: src\CelestialNavigationDialog-partial-android.cpp:149 +#: src\CelestialNavigationDialog.cpp:150 src\CelestialNavigationUI.cpp:137 msgid "Type" msgstr "Jenis" -#: src/CelestialNavigationDialog.cpp:124 +#: src\CelestialNavigationDialog-2.3.5.1-no-android.cpp:150 +#: src\CelestialNavigationDialog-2.3.5.2-android.cpp:151 +#: src\CelestialNavigationDialog-partial-android.cpp:150 +#: src\CelestialNavigationDialog.cpp:151 msgid "Body" msgstr "Badan" -#: src/CelestialNavigationDialog.cpp:125 -msgid "Time (UTC)" -msgstr "Waktu (UTC)" +#: src\CelestialNavigationDialog-2.3.5.1-no-android.cpp:151 +#: src\CelestialNavigationDialog-2.3.5.2-android.cpp:152 +#: src\CelestialNavigationDialog-partial-android.cpp:151 +#: src\CelestialNavigationDialog.cpp:152 src\CelestialNavigationUI.cpp:328 +msgid "Time (UT)" +msgstr "" -#: src/CelestialNavigationDialog.cpp:126 src/CelestialNavigationUI.cpp:179 +#: src\CelestialNavigationDialog-2.3.5.1-no-android.cpp:152 +#: src\CelestialNavigationDialog-2.3.5.2-android.cpp:153 +#: src\CelestialNavigationDialog-partial-android.cpp:152 +#: src\CelestialNavigationDialog.cpp:153 src\CelestialNavigationUI.cpp:184 msgid "Measurement" msgstr "Pengukuran" -#: src/CelestialNavigationDialog.cpp:127 src/CelestialNavigationUI.cpp:376 +#: src\CelestialNavigationDialog-2.3.5.1-no-android.cpp:153 +#: src\CelestialNavigationDialog-2.3.5.2-android.cpp:154 +#: src\CelestialNavigationDialog-partial-android.cpp:153 +#: src\CelestialNavigationDialog.cpp:154 src\CelestialNavigationUI.cpp:381 msgid "Color" msgstr "Warna" -#: src/CelestialNavigationDialog.cpp:193 -msgid "Failed to load file." -msgstr "Memuat berkas gagal." +#: src\CelestialNavigationDialog-2.3.5.1-no-android.cpp:266 +#: src\CelestialNavigationDialog-2.3.5.2-android.cpp:272 +#: src\CelestialNavigationDialog-partial-android.cpp:266 +#: src\CelestialNavigationDialog.cpp:272 src\celestial_navigation_pi.cpp:177 +msgid "Failed to load file: " +msgstr "" -#: src/CelestialNavigationDialog.cpp:198 +#: src\CelestialNavigationDialog-2.3.5.1-no-android.cpp:271 +#: src\CelestialNavigationDialog-2.3.5.2-android.cpp:277 +#: src\CelestialNavigationDialog-partial-android.cpp:271 +#: src\CelestialNavigationDialog.cpp:277 msgid "Invalid xml file" msgstr "File xml tidak sesuai" -#: src/CelestialNavigationDialog.cpp:250 +#: src\CelestialNavigationDialog-2.3.5.1-no-android.cpp:323 +#: src\CelestialNavigationDialog-2.3.5.2-android.cpp:329 +#: src\CelestialNavigationDialog-partial-android.cpp:323 +#: src\CelestialNavigationDialog.cpp:329 msgid "Unrecognized xml node" msgstr "Simpul xml yang tidak dikenal" -#: src/CelestialNavigationDialog.cpp:260 -msgid "Weather Routing" -msgstr "Pengaturan Cuaca" +#: src\CelestialNavigationDialog-2.3.5.1-no-android.cpp:332 +#: src\CelestialNavigationDialog-2.3.5.1-no-android.cpp:392 +#: src\CelestialNavigationDialog-2.3.5.1-no-android.cpp:532 +#: src\CelestialNavigationDialog-2.3.5.2-android.cpp:338 +#: src\CelestialNavigationDialog-2.3.5.2-android.cpp:398 +#: src\CelestialNavigationDialog-2.3.5.2-android.cpp:538 +#: src\CelestialNavigationDialog-partial-android.cpp:332 +#: src\CelestialNavigationDialog-partial-android.cpp:392 +#: src\CelestialNavigationDialog-partial-android.cpp:532 +#: src\CelestialNavigationDialog.cpp:338 src\CelestialNavigationDialog.cpp:398 +#: src\CelestialNavigationDialog.cpp:538 src\Sight.cpp:1120 +#: src\Sight.cpp.bak:1121 src\celestial_navigation_pi.cpp:95 +#: src\celestial_navigation_pi.cpp:99 +msgid "Celestial Navigation" +msgstr "Navigasi Angkasa" -#: src/CelestialNavigationDialog.cpp:320 +#: src\CelestialNavigationDialog-2.3.5.1-no-android.cpp:391 +#: src\CelestialNavigationDialog-2.3.5.2-android.cpp:397 +#: src\CelestialNavigationDialog-partial-android.cpp:391 +#: src\CelestialNavigationDialog.cpp:397 msgid "Failed to save xml file: " msgstr "Menyimpan berkas xml gagal: " -#: src/CelestialNavigationDialog.cpp:321 src/CelestialNavigationDialog.cpp:466 -#: src/Sight.cpp:1099 src/celestial_navigation_pi.cpp:99 -#: src/celestial_navigation_pi.cpp:152 -msgid "Celestial Navigation" -msgstr "Navigasi Angkasa" - -#: src/CelestialNavigationDialog.cpp:351 +#: src\CelestialNavigationDialog-2.3.5.1-no-android.cpp:424 +#: src\CelestialNavigationDialog-2.3.5.2-android.cpp:430 +#: src\CelestialNavigationDialog-partial-android.cpp:424 +#: src\CelestialNavigationDialog.cpp:430 msgid "Time Correction" msgstr "Koreksi Waktu" -#: src/CelestialNavigationDialog.cpp:409 +#: src\CelestialNavigationDialog-2.3.5.1-no-android.cpp:473 +#: src\CelestialNavigationDialog-2.3.5.2-android.cpp:479 +#: src\CelestialNavigationDialog-partial-android.cpp:473 +#: src\CelestialNavigationDialog.cpp:479 msgid "Sun" msgstr "Minggu" -#: src/CelestialNavigationDialog.cpp:465 +#: src\CelestialNavigationDialog-2.3.5.1-no-android.cpp:531 +#: src\CelestialNavigationDialog-2.3.5.2-android.cpp:537 +#: src\CelestialNavigationDialog-partial-android.cpp:531 +#: src\CelestialNavigationDialog.cpp:537 msgid "Are you sure you want to delete all sights?" msgstr "Apakah anda yakin ingin menghapus semua pemandangan?" -#: src/CelestialNavigationDialog.cpp:510 +#: src\CelestialNavigationDialog-2.3.5.1-no-android.cpp:582 +#: src\CelestialNavigationDialog-2.3.5.2-android.cpp:588 +#: src\CelestialNavigationDialog-partial-android.cpp:582 +#: src\CelestialNavigationDialog.cpp:588 msgid "Celestial_Navigation_Information.html" msgstr "Informasi_Navigasi_Angkasa.html" -#: src/CelestialNavigationDialog.cpp:516 -msgid "Show" -msgstr "Tampilkan" - -#: src/CelestialNavigationDialog.cpp:516 src/CelestialNavigationUI.cpp:58 +#: src\CelestialNavigationDialog-2.3.5.1-no-android.cpp:589 +#: src\CelestialNavigationDialog-2.3.5.2-android.cpp:595 +#: src\CelestialNavigationDialog-partial-android.cpp:589 +#: src\CelestialNavigationDialog.cpp:595 src\CelestialNavigationUI.cpp:55 msgid "Hide" msgstr "Sembunyikan" -#: src/CelestialNavigationUI.cpp:40 +#: src\CelestialNavigationDialog-2.3.5.1-no-android.cpp:589 +#: src\CelestialNavigationDialog-2.3.5.2-android.cpp:595 +#: src\CelestialNavigationDialog-partial-android.cpp:589 +#: src\CelestialNavigationDialog.cpp:595 +msgid "Show" +msgstr "Tampilkan" + +#: src\CelestialNavigationUI.cpp:40 msgid "New" msgstr "Baru" -#: src/CelestialNavigationUI.cpp:43 -msgid "Edit" -msgstr "Ubah" - -#: src/CelestialNavigationUI.cpp:46 -msgid "Delete" -msgstr "Hapus" - -#: src/CelestialNavigationUI.cpp:49 -msgid "Delete All" -msgstr "Menghapus semua" - -#: src/CelestialNavigationUI.cpp:52 src/CelestialNavigationUI.h:281 +#: src\CelestialNavigationUI.cpp:43 src\CelestialNavigationUI.h:286 msgid "Fix" msgstr "Memperbaiki" -#: src/CelestialNavigationUI.cpp:55 +#: src\CelestialNavigationUI.cpp:46 +msgid "Duplicate" +msgstr "" + +#: src\CelestialNavigationUI.cpp:49 msgid "Clock Offset" msgstr "Jam offset" -#: src/CelestialNavigationUI.cpp:61 +#: src\CelestialNavigationUI.cpp:52 +msgid "Edit" +msgstr "Ubah" + +#: src\CelestialNavigationUI.cpp:58 +msgid "Delete" +msgstr "Hapus" + +#: src\CelestialNavigationUI.cpp:61 msgid "Information" msgstr "Informasi" -#: src/CelestialNavigationUI.cpp:136 src/CelestialNavigationUI.cpp:667 -#: src/Sight.h:49 +#: src\CelestialNavigationUI.cpp:64 +msgid "Delete All" +msgstr "Menghapus semua" + +#: src\CelestialNavigationUI.cpp:141 src\CelestialNavigationUI.cpp:674 +#: src\Sight.h:49 msgid "Altitude" msgstr "Ketinggian" -#: src/CelestialNavigationUI.cpp:136 src/CelestialNavigationUI.cpp:677 -#: src/Sight.h:49 +#: src\CelestialNavigationUI.cpp:141 src\CelestialNavigationUI.cpp:683 +#: src\Sight.h:49 msgid "Azimuth" msgstr "Azimut" -#: src/CelestialNavigationUI.cpp:136 src/Sight.h:49 +#: src\CelestialNavigationUI.cpp:141 src\Sight.h:49 msgid "Lunar" msgstr "Lunar" -#: src/CelestialNavigationUI.cpp:142 +#: src\CelestialNavigationUI.cpp:147 msgid "Magnetic Azimuth" msgstr "Azimut Magnetik" -#: src/CelestialNavigationUI.cpp:145 +#: src\CelestialNavigationUI.cpp:150 msgid "Celestial Body" msgstr "Tubuh angkasa" -#: src/CelestialNavigationUI.cpp:154 +#: src\CelestialNavigationUI.cpp:159 msgid "Find" msgstr "Cari" -#: src/CelestialNavigationUI.cpp:157 +#: src\CelestialNavigationUI.cpp:162 msgid "Limb" msgstr "Dahan" -#: src/CelestialNavigationUI.cpp:161 -msgid "Lower" -msgstr "Lebih rendah" - -#: src/CelestialNavigationUI.cpp:161 +#: src\CelestialNavigationUI.cpp:166 msgid "Center" msgstr "Tengah" -#: src/CelestialNavigationUI.cpp:161 +#: src\CelestialNavigationUI.cpp:166 +msgid "Lower" +msgstr "Lebih rendah" + +#: src\CelestialNavigationUI.cpp:166 msgid "Upper" msgstr "Atas" -#: src/CelestialNavigationUI.cpp:186 src/CelestialNavigationUI.cpp:193 -#: src/CelestialNavigationUI.cpp:223 src/CelestialNavigationUI.cpp:230 +#: src\CelestialNavigationUI.cpp:191 src\CelestialNavigationUI.cpp:198 +#: src\CelestialNavigationUI.cpp:228 src\CelestialNavigationUI.cpp:235 msgid "0" msgstr "0" -#: src/CelestialNavigationUI.cpp:189 src/CelestialNavigationUI.cpp:348 -#: src/CelestialNavigationUI.cpp:598 +#: src\CelestialNavigationUI.cpp:194 src\CelestialNavigationUI.cpp:353 +#: src\CelestialNavigationUI.cpp:605 msgid "Degrees" msgstr "Derajat" -#: src/CelestialNavigationUI.cpp:196 src/CelestialNavigationUI.cpp:278 -#: src/CelestialNavigationUI.cpp:439 +#: src\CelestialNavigationUI.cpp:201 src\CelestialNavigationUI.cpp:283 +#: src\CelestialNavigationUI.cpp:444 msgid "Minutes" msgstr "Menit" -#: src/CelestialNavigationUI.cpp:200 +#: src\CelestialNavigationUI.cpp:205 msgid "10" msgstr "10" -#: src/CelestialNavigationUI.cpp:203 +#: src\CelestialNavigationUI.cpp:208 msgid "Minutes Certainty" msgstr "Kepastian Menit" -#: src/CelestialNavigationUI.cpp:217 +#: src\CelestialNavigationUI.cpp:222 msgid "Lunar Altitude" msgstr "Ketinggian Lunar" -#: src/CelestialNavigationUI.cpp:226 +#: src\CelestialNavigationUI.cpp:231 msgid "Body Altitude" msgstr "Ketinggian Tubuh" -#: src/CelestialNavigationUI.cpp:243 +#: src\CelestialNavigationUI.cpp:248 msgid "Sight" msgstr "Melihat" -#: src/CelestialNavigationUI.cpp:271 +#: src\CelestialNavigationUI.cpp:276 msgid "Hours" msgstr "Jam" -#: src/CelestialNavigationUI.cpp:285 src/CelestialNavigationUI.cpp:303 -#: src/CelestialNavigationUI.cpp:860 +#: src\CelestialNavigationUI.cpp:290 src\CelestialNavigationUI.cpp:308 +#: src\CelestialNavigationUI.cpp:869 msgid "Seconds" msgstr "Detik" -#: src/CelestialNavigationUI.cpp:293 +#: src\CelestialNavigationUI.cpp:298 msgid "Certainty" msgstr "Kepastian" -#: src/CelestialNavigationUI.cpp:323 -msgid "Time" -msgstr "Waktu" - -#: src/CelestialNavigationUI.cpp:330 src/CelestialNavigationUI.cpp:580 +#: src\CelestialNavigationUI.cpp:335 src\CelestialNavigationUI.cpp:587 msgid "Distance" msgstr "Jarak" -#: src/CelestialNavigationUI.cpp:337 src/CelestialNavigationUI.cpp:587 +#: src\CelestialNavigationUI.cpp:342 src\CelestialNavigationUI.cpp:594 msgid "Nm" msgstr "Nm" -#: src/CelestialNavigationUI.cpp:341 src/CelestialNavigationUI.cpp:591 +#: src\CelestialNavigationUI.cpp:346 src\CelestialNavigationUI.cpp:598 msgid "Bearing" msgstr "Bantalan" -#: src/CelestialNavigationUI.cpp:352 src/CelestialNavigationUI.cpp:602 +#: src\CelestialNavigationUI.cpp:357 src\CelestialNavigationUI.cpp:609 msgid "Magnetic Bearing" msgstr "Bantalan magnetik" -#: src/CelestialNavigationUI.cpp:359 +#: src\CelestialNavigationUI.cpp:364 msgid "DR Shift" msgstr "DR Bergeser" -#: src/CelestialNavigationUI.cpp:366 +#: src\CelestialNavigationUI.cpp:371 msgid "Transparency" msgstr "Transparansi" -#: src/CelestialNavigationUI.cpp:387 +#: src\CelestialNavigationUI.cpp:392 msgid "Config" msgstr "Konfigurasi" -#: src/CelestialNavigationUI.cpp:399 +#: src\CelestialNavigationUI.cpp:404 msgid "Eye Height" msgstr "Tinggi mata" -#: src/CelestialNavigationUI.cpp:403 +#: src\CelestialNavigationUI.cpp:408 msgid "2" msgstr "2" -#: src/CelestialNavigationUI.cpp:406 +#: src\CelestialNavigationUI.cpp:411 msgid "Meters" msgstr "Meter" -#: src/CelestialNavigationUI.cpp:410 +#: src\CelestialNavigationUI.cpp:415 msgid "Temperature" msgstr "Temperatur" -#: src/CelestialNavigationUI.cpp:417 +#: src\CelestialNavigationUI.cpp:422 msgid "Celcius" msgstr "Celcius" -#: src/CelestialNavigationUI.cpp:421 +#: src\CelestialNavigationUI.cpp:426 msgid "Pressure" msgstr "Tekanan" -#: src/CelestialNavigationUI.cpp:428 +#: src\CelestialNavigationUI.cpp:433 msgid "MilliBars" msgstr "MilliBars" -#: src/CelestialNavigationUI.cpp:432 +#: src\CelestialNavigationUI.cpp:437 msgid "Index Error" msgstr "Kesalahan indeks" -#: src/CelestialNavigationUI.cpp:446 +#: src\CelestialNavigationUI.cpp:451 msgid "Set As Defaults" msgstr "Ditetapkan Sebagai Default" -#: src/CelestialNavigationUI.cpp:453 +#: src\CelestialNavigationUI.cpp:458 msgid "Parameters" msgstr "Parameter" -#: src/CelestialNavigationUI.cpp:469 +#: src\CelestialNavigationUI.cpp:474 msgid "Calculations" msgstr "Perhitungan" -#: src/CelestialNavigationUI.cpp:571 +#: src\CelestialNavigationUI.cpp:578 msgid "Shift all visible Sights" msgstr "Pergeseran semua Pemandangan yang terlihat" -#: src/CelestialNavigationUI.cpp:649 src/CelestialNavigationUI.cpp:760 +#: src\CelestialNavigationUI.cpp:656 src\CelestialNavigationUI.cpp:769 msgid "Latitude" msgstr "Garis Lintang" -#: src/CelestialNavigationUI.cpp:658 src/CelestialNavigationUI.cpp:768 +#: src\CelestialNavigationUI.cpp:665 src\CelestialNavigationUI.cpp:777 msgid "Longitude" msgstr "Garis Bujur" -#: src/CelestialNavigationUI.cpp:669 src/CelestialNavigationUI.cpp:679 -msgid "MyLabel" -msgstr "Label saya" - -#: src/CelestialNavigationUI.cpp:686 -msgid "Done" -msgstr "Selesai" +#: src\CelestialNavigationUI.cpp:691 +msgid "Boat Position" +msgstr "" -#: src/CelestialNavigationUI.cpp:689 +#: src\CelestialNavigationUI.cpp:695 msgid "Magnetic" msgstr "Magnetik" -#: src/CelestialNavigationUI.cpp:753 +#: src\CelestialNavigationUI.cpp:698 +msgid "Done" +msgstr "Selesai" + +#: src\CelestialNavigationUI.cpp:762 msgid "Fix From Visible Sights" msgstr "Perbaiki Dari Pemandangan Terlihat" -#: src/CelestialNavigationUI.cpp:764 +#: src\CelestialNavigationUI.cpp:773 msgid " N/A " msgstr " N/A " -#: src/CelestialNavigationUI.cpp:772 +#: src\CelestialNavigationUI.cpp:781 msgid " N/A " msgstr " N/A " -#: src/CelestialNavigationUI.cpp:776 +#: src\CelestialNavigationUI.cpp:785 msgid "Error" msgstr "Kesalahan" -#: src/CelestialNavigationUI.cpp:780 +#: src\CelestialNavigationUI.cpp:789 msgid " N/A " msgstr " N/A " -#: src/CelestialNavigationUI.cpp:787 src/CelestialNavigationUI.cpp:794 +#: src\CelestialNavigationUI.cpp:796 src\CelestialNavigationUI.cpp:803 msgid "Initial" msgstr "Awal" -#: src/CelestialNavigationUI.cpp:801 +#: src\CelestialNavigationUI.cpp:810 msgid "Alg" msgstr "Alg" -#: src/CelestialNavigationUI.cpp:806 +#: src\CelestialNavigationUI.cpp:815 msgid "Plane" msgstr "Pesawat" -#: src/CelestialNavigationUI.cpp:807 +#: src\CelestialNavigationUI.cpp:816 msgid "Sphere" msgstr "Lingkup" -#: src/CelestialNavigationUI.cpp:808 +#: src\CelestialNavigationUI.cpp:817 msgid "Cone" msgstr "Kerucut" -#: src/CelestialNavigationUI.cpp:809 +#: src\CelestialNavigationUI.cpp:818 msgid "Cone 2" msgstr "Kerucut 2" -#: src/CelestialNavigationUI.cpp:813 +#: src\CelestialNavigationUI.cpp:822 msgid "Go" msgstr "Pergi" -#: src/CelestialNavigationUI.cpp:850 src/CelestialNavigationUI.h:303 +#: src\CelestialNavigationUI.cpp:859 src\CelestialNavigationUI.h:308 msgid "Clock Correction" msgstr "Koreksi jam" -#: src/CelestialNavigationUI.h:78 +#: src\CelestialNavigationUI.h:82 msgid "Celestial Navigation Sights" msgstr "Pemandangan navigasi langit" -#: src/CelestialNavigationUI.h:169 +#: src\CelestialNavigationUI.h:173 msgid "Sight Properties" msgstr "Properti Tautan" -#: src/CelestialNavigationUI.h:200 +#: src\CelestialNavigationUI.h:204 msgid "Dead Reckoning shift" msgstr "Mati pergeseran Reckoning" -#: src/CelestialNavigationUI.h:227 +#: src\CelestialNavigationUI.h:232 msgid "Find Celestial Body" msgstr "Menemukan Benda Angkasa" -#: src/Sight.cpp:160 +#: src\FixDialog.cpp:192 +msgid "Shifted sights are not used to compute a fix, determine fix visually instead.\n" +msgstr "Pemandangan yang digeser tidak digunakan untuk menghitung fix, tentukan perbaikan secara visual.\n" + +#: src\FixDialog.cpp:193 +msgid "Fix Position" +msgstr "Memperbaiki posisi" + +#: src\FixDialog.cpp:338 src\FixDialog.cpp:339 src\FixDialog.cpp:340 +msgid " N/A " +msgstr " N / A " + +#: src\Sight.cpp:172 src\Sight.cpp.bak:173 msgid "Astrolab failed, data unavailable:\n" msgstr "Astrolab gagal, data tidak tersedia:\n" -#: src/Sight.cpp:161 +#: src\Sight.cpp:173 src\Sight.cpp.bak:174 msgid "\n" "Did you forget to install vsop87d.txt?\n" msgstr "\n" "Apakah kamu lupa untuk menginstal vsop87d.txt?\n" -#: src/Sight.cpp:162 +#: src\Sight.cpp:174 src\Sight.cpp.bak:175 msgid "The plugin will not work correctly" msgstr "Plugin tidak akan bekerja dengan benar" -#: src/Sight.cpp:163 +#: src\Sight.cpp:175 src\Sight.cpp.bak:176 msgid "Failure Alert" msgstr "Kegagalan peringatan" -#: src/Sight.cpp:474 +#: src\Sight.cpp:495 src\Sight.cpp.bak:496 #, c-format msgid "Applying clock correction of %d seconds\n\n" msgstr "Menerapkan koreksi jam dari %d detik\n\n" -#: src/Sight.cpp:536 +#: src\Sight.cpp:557 src\Sight.cpp.bak:558 msgid "Almanac Data For " msgstr "Data Almanak Untuk " -#: src/Sight.cpp:537 +#: src\Sight.cpp:558 src\Sight.cpp.bak:559 #, c-format msgid "\n" "Geographical Position (lat, lon) = %.4f %.4f\n" @@ -418,16 +482,19 @@ msgstr "\n" "SD = %.1f'\n" "HP = %.1f'\n\n" -#: src/Sight.cpp:552 src/Sight.cpp:690 +#: src\Sight.cpp:573 src\Sight.cpp:711 src\Sight.cpp.bak:574 +#: src\Sight.cpp.bak:712 msgid "Formulas used to calculate sight\n\n" msgstr "Rumus yang digunakan untuk menghitung sight\n\n" -#: src/Sight.cpp:556 src/Sight.cpp:694 +#: src\Sight.cpp:577 src\Sight.cpp:715 src\Sight.cpp.bak:578 +#: src\Sight.cpp.bak:716 #, c-format msgid "Index Error is %.4f degrees\n\n" msgstr "Kesalahan indeks adalah %.4f derajat\n\n" -#: src/Sight.cpp:561 src/Sight.cpp:699 +#: src\Sight.cpp:582 src\Sight.cpp:720 src\Sight.cpp.bak:583 +#: src\Sight.cpp.bak:721 #, c-format msgid "Eye Height is %.4f meters\n" "Height Correction Degrees = 1.758*sqrt(%.4f) / 60.0\n" @@ -436,7 +503,8 @@ msgstr "Tinggi mata adalah %.4f meter\n" "Tinggi Koreksi derajat = 1.758*sqrt(%.4f) / 60,0\n" "Tinggi Koreksi derajat = %.4f\n" -#: src/Sight.cpp:568 +#: src\Sight.cpp:589 src\Sight.cpp:799 src\Sight.cpp.bak:590 +#: src\Sight.cpp.bak:800 #, c-format msgid "\n" "Apparent Altitude (Ha)\n" @@ -450,7 +518,8 @@ msgstr "\n" "KetinggianNampak = %.4f - %.4f - %.4f\n" "KetinggianNampak = %.4f\n" -#: src/Sight.cpp:586 src/Sight.cpp:789 +#: src\Sight.cpp:607 src\Sight.cpp:810 src\Sight.cpp.bak:608 +#: src\Sight.cpp.bak:811 #, c-format msgid "\n" "Refraction Correction\n" @@ -463,7 +532,8 @@ msgstr "\n" "x = tan(Pi/180*%.4f + 4.848e-2*(Pi/180) / (tan(Pi/180*%.4f) + .028))\n" "x = %.4f\n" -#: src/Sight.cpp:591 src/Sight.cpp:794 +#: src\Sight.cpp:612 src\Sight.cpp:815 src\Sight.cpp.bak:613 +#: src\Sight.cpp.bak:816 #, c-format msgid "RefractionCorrection = .267 * Pressure / (x*(Temperature + 273.15)) / 60.0\n" "RefractionCorrection = .267 * %.4f / (x*(%.4f + 273.15)) / 60.0\n" @@ -472,7 +542,8 @@ msgstr "KoreksiRefraksi = .267 * Tekanan / (x*(Suhu + 273.15)) / 60.0\n" "KoreksiRefraksi = .267 * %.4f / (x*(%.4f + 273.15)) / 60.0\n" "KoreksiRefraksi = %.4f\n" -#: src/Sight.cpp:606 src/Sight.cpp:808 +#: src\Sight.cpp:627 src\Sight.cpp:829 src\Sight.cpp.bak:628 +#: src\Sight.cpp.bak:830 #, c-format msgid "\n" "Sun selected, Limb Correction\n" @@ -481,7 +552,8 @@ msgstr "\n" "Matahari dipilih, Koreksi Dahan\n" "ra = %.4f, lc = 0.266564/ra = %.4f\n" -#: src/Sight.cpp:616 src/Sight.cpp:732 +#: src\Sight.cpp:637 src\Sight.cpp:753 src\Sight.cpp.bak:638 +#: src\Sight.cpp.bak:754 #, c-format msgid "\n" "Moon selected, Limb Correction\n" @@ -494,22 +566,26 @@ msgstr "\n" "lc = 180/Pi * asin(Pi/180*SD)\n" "lc = %.4f\n" -#: src/Sight.cpp:626 src/Sight.cpp:741 src/Sight.cpp:816 +#: src\Sight.cpp:647 src\Sight.cpp:762 src\Sight.cpp:837 src\Sight.cpp.bak:648 +#: src\Sight.cpp.bak:763 src\Sight.cpp.bak:838 msgid "Upper Limb" msgstr "Tungkai Atas" -#: src/Sight.cpp:629 src/Sight.cpp:744 src/Sight.cpp:819 +#: src\Sight.cpp:650 src\Sight.cpp:765 src\Sight.cpp:840 src\Sight.cpp.bak:651 +#: src\Sight.cpp.bak:766 src\Sight.cpp.bak:841 msgid "Lower Limb" msgstr "Tungkai Bawah" -#: src/Sight.cpp:632 src/Sight.cpp:822 +#: src\Sight.cpp:653 src\Sight.cpp:843 src\Sight.cpp.bak:654 +#: src\Sight.cpp.bak:844 #, c-format msgid "\n" "LimbCorrection = %.4f\n" msgstr "\n" "KoreksiDahan = %.4f\n" -#: src/Sight.cpp:636 src/Sight.cpp:826 +#: src\Sight.cpp:657 src\Sight.cpp:847 src\Sight.cpp.bak:658 +#: src\Sight.cpp.bak:848 #, c-format msgid "\n" "Corrected Altitude\n" @@ -522,7 +598,8 @@ msgstr "\n" "KetinggianDikoreksi = %.4f - %.4f - %.4f\n" "KetinggianDikoreksi= %.4f\n" -#: src/Sight.cpp:650 src/Sight.cpp:840 +#: src\Sight.cpp:671 src\Sight.cpp:861 src\Sight.cpp.bak:672 +#: src\Sight.cpp.bak:862 #, c-format msgid "\n" "Sun selected, parallax correction\n" @@ -531,7 +608,8 @@ msgstr "\n" "Matahari dipilih, koreksi parallaxs\n" "rad = %.4f, HP = 0.002442/rad = %.4f\n" -#: src/Sight.cpp:659 src/Sight.cpp:764 +#: src\Sight.cpp:680 src\Sight.cpp:785 src\Sight.cpp.bak:681 +#: src\Sight.cpp.bak:786 #, c-format msgid "\n" "Moon selected, parallax correction\n" @@ -540,7 +618,8 @@ msgstr "\n" "Bulan dipilih, koreksi parallaxs\n" "HP = %.4f\n" -#: src/Sight.cpp:665 src/Sight.cpp:846 +#: src\Sight.cpp:686 src\Sight.cpp:867 src\Sight.cpp.bak:687 +#: src\Sight.cpp.bak:868 #, c-format msgid "ParallaxCorrection = -180/Pi * asin( sin(Pi/180 * HP ) * cos(Pi/180 * CorrectedAltitude))\n" "ParallaxCorrection = -180/Pi * asin( sin(Pi/180 * %.4f ) * cos(Pi/180 * %.4f))\n" @@ -549,7 +628,7 @@ msgstr "KoreksiParallaxs = -180/Pi * asin( sin(Pi/180 * HP ) * cos(Pi/180 * Keti "KoreksiParallaxs = -180/Pi * asin( sin(Pi/180 * %.4f ) * cos(Pi/180 * %.4f))\n" "KoreksiParallaxs = %.4f\n" -#: src/Sight.cpp:672 +#: src\Sight.cpp:693 src\Sight.cpp.bak:694 #, c-format msgid "\n" "Observed Altitude (Ho)\n" @@ -562,20 +641,16 @@ msgstr "\n" "KetinggianDiamati = %.4f - %.4f\n" "KetinggianDiamati = %.4f\n" -#: src/Sight.cpp:706 +#: src\Sight.cpp:727 src\Sight.cpp.bak:728 #, c-format msgid "\n" "Apparent Moon Altitude (Ha)\n" "ApparentAltitudeMoon = MeasurementMoon - IndexCorrection - EyeHeightCorrection\n" -" ApparentAltitudeMoon = %.4f - %.4f - %.4f\n" +"ApparentAltitudeMoon = %.4f - %.4f - %.4f\n" "ApparentAltitudeMoon = %.4f\n" -msgstr "\n" -"Ketinggian Bulan Yang Terlihat (Ha)\n" -"Ketinggian Bulan = PengukuranBulan - KoreksiIndeks - KoreksiTinggiMata\n" -" KetinggianBulan = %.4f - %.4f - %.4f\n" -"KetinggianBulan = %.4f\n" +msgstr "" -#: src/Sight.cpp:717 +#: src\Sight.cpp:738 src\Sight.cpp.bak:739 #, c-format msgid "\n" "Refraction Correction\n" @@ -588,7 +663,7 @@ msgstr "\n" "x = tan(Pi/180*%.4f + 4.848e-2*(Pi/180) / (tan(Pi/180*%.4f) + .028))\n" "x = %.4f\n" -#: src/Sight.cpp:722 +#: src\Sight.cpp:743 src\Sight.cpp.bak:744 #, c-format msgid "RefractionCorrectionMoon = .267 * Pressure / (x*(Temperature + 273.15)) / 60.0\n" "RefractionCorrectionMoon = .267 * %.4f / (x*(%.4f + 273.15)) / 60.0\n" @@ -597,14 +672,15 @@ msgstr "KoreksiPembiasanBulan = .267 * Tekanan / (x*(Suhu + 273.15)) / 60.0\n" "KoreksiPembiasanBulan = .267 * %.4f / (x*(%.4f + 273.15)) / 60.0\n" "KoreksiPembiasanBulan = %.4f\n" -#: src/Sight.cpp:747 src/Sight.cpp:750 +#: src\Sight.cpp:768 src\Sight.cpp:771 src\Sight.cpp.bak:769 +#: src\Sight.cpp.bak:772 #, c-format msgid "\n" "LimbCorrectionMoon = %.4f\n" msgstr "\n" "LimbKoreksiBulan = %.4f\n" -#: src/Sight.cpp:753 +#: src\Sight.cpp:774 src\Sight.cpp.bak:775 #, c-format msgid "\n" "Corrected Altitude\n" @@ -617,29 +693,14 @@ msgstr "\n" "KoreksiKetinggianBulan = %.4f - %.4f - %.4f\n" "KoreksiKetinggianBulan = %.4f\n" -#: src/Sight.cpp:768 +#: src\Sight.cpp:789 src\Sight.cpp.bak:790 #, c-format msgid "ParallaxCorrectionMoon = -180/Pi * asin( sin(Pi/180 * HP ) * cos(Pi/180 * CorrectedAltitude))\n" -" ParallaxCorrectionMoon = -180/Pi * asin( sin(Pi/180 * %.4f ) * cos(Pi/180 * %.4f))\n" +"ParallaxCorrectionMoon = -180/Pi * asin( sin(Pi/180 * %.4f ) * cos(Pi/180 * %.4f))\n" "ParallaxCorrectionMoon = %.4f\n" -msgstr "KoreksiParalaksBulan = -180/Pi * asin( sin(Pi/180 * HP ) * cos(Pi/180 * KoreksiKetinggian))\n" -" KoreksiParalaksBulan = -180/Pi * asin( sin(Pi/180 * %.4f ) * cos(Pi/180 * %.4f))\n" -"KoreksiParalaksBulan = %.4f\n" - -#: src/Sight.cpp:778 -#, c-format -msgid "\n" -"Apparent Altitude (Ha)\n" -"ApparentAltitude = Measurement - IndexCorrection - EyeHeightCorrection\n" -" ApparentAltitude = %.4f - %.4f - %.4f\n" -"ApparentAltitude = %.4f\n" -msgstr "\n" -"Tampak Ketinggian (Ha)\n" -"TampakKetinggian = Pengukuran - KoreksiIndeks - KoreksiKetinggianMata\n" -" TampakKetinggian = %.4f - %.4f - %.4f\n" -"TampakKetinggian = %.4f\n" +msgstr "" -#: src/Sight.cpp:857 +#: src\Sight.cpp:878 src\Sight.cpp.bak:879 #, c-format msgid "CorrectionsMoon = %.4f\n" "CorrectionsBody = %.4f\n" @@ -648,7 +709,7 @@ msgstr "KoreksiBulan = %.4f\n" "KoreksiBadan = %.4f\n" "Koreksi = abs(KoreksiBulan - KoreksiBadan) = %.4f\n" -#: src/Sight.cpp:863 +#: src\Sight.cpp:884 src\Sight.cpp.bak:885 #, c-format msgid "CorrectedMeasurement = Measurement - Corrections - IndexCorrection\n" "CorrectedMeasurement = %.4f - %.4f - %.4f\n" @@ -657,85 +718,65 @@ msgstr "KoreksiPengukuran = Pengukuran - Koreksi - IndeksKoreksi\n" "KoreksiPengukuran = %.4f - %.4f - %.4f\n" "KoreksiPengukuran = %.4f\n" -#: src/Sight.cpp:888 +#: src\Sight.cpp:909 src\Sight.cpp.bak:910 msgid "\n" "Calculated angle between Moon and " msgstr "\n" "Hitung sudut antara Bulan dan " -#: src/Sight.cpp:890 +#: src\Sight.cpp:911 src\Sight.cpp.bak:912 #, c-format msgid "\n" "Error from measurement: %.4f" msgstr "\n" "Kesalahan dari pengukuran: %.4f" -#: src/Sight.cpp:894 +#: src\Sight.cpp:915 src\Sight.cpp.bak:916 msgid "\n" "Moon takes 28 days to orbit, one degree of error takes 6720 seconds" msgstr "\n" "Bulan memakan waktu 28 hari untuk mengorbit, satu tingkat kesalahan mengambil 6720 detik" -#: src/Sight.cpp:895 +#: src\Sight.cpp:916 src\Sight.cpp.bak:917 #, c-format msgid "\n" "Time correction %.4f seconds" msgstr "\n" "Koreksi waktu %.4f detik" -#: src/Sight.cpp:1099 +#: src\Sight.cpp:1120 src\Sight.cpp.bak:1121 msgid "Building bearing Sight Positions" msgstr "Bangunan bantalan Posisi Penglihatan" -#: src/SightDialog.cpp:172 +#: src\SightDialog.cpp:184 msgid "Measurement certainty likely set to small, sight may not appear " msgstr "Kepastian pengukuran kemungkinan kecil, penglihatan mungkin tidak muncul " -#: src/SightDialog.cpp:173 src/SightDialog.cpp:256 +#: src\SightDialog.cpp:185 src\SightDialog.cpp:279 msgid "Warning" msgstr "Peringatan" -#: src/SightDialog.cpp:255 +#: src\SightDialog.cpp:278 msgid "Lunar shot will be invalid taking distance from moon to itself" msgstr "Tembakan Lunar tidak akan mungkin mengambil jarak dari bulan ke dirinya sendiri" -#: src/celestial_navigation_pi.cpp:90 -msgid "Failed to load file:\n" -msgstr "Gagal Memuat File:\n" - -#: src/celestial_navigation_pi.cpp:91 -msgid "\n" -"Magnetic data will not be available for the celestial navigation plugin." -msgstr "\n" -"Data magnetik tidak akan tersedia untuk plugin navigasi angkasa." +#: src\celestial_navigation_pi.cpp:179 +msgid "open error" +msgstr "" -#: src/celestial_navigation_pi.cpp:92 -msgid "OpenCPN Alert" -msgstr "Peringatan OpenCPN" +#: src\celestial_navigation_pi.cpp:180 +msgid "corrupt record" +msgstr "" -#: src/celestial_navigation_pi.cpp:157 -msgid "Celestial Navigation PlugIn for OpenCPN" -msgstr "Plugin Navigasi langit untuk OpenCPN" - -#: src/celestial_navigation_pi.cpp:162 -msgid "Celestial Navigation PlugIn for OpenCPN.\n" -"Implements nautical almanac for sun, moon, planets,\n" -"and various navigational stars.\n" -"Compute position fix from celestial measurements." -msgstr "Navigasi Langit Plugin untuk OpenCPN.\n" -"implementasi almanak bahari untuk matahari, bulan, planet,\n" -"dan berbagai bintang navigasi.\n" -"Hitung posisi fix dari pengukuran selestial." - -#: src/FixDialog.cpp:189 -msgid "Shifted sights are not used to compute a fix, determine fix visually instead.\n" -msgstr "Pemandangan yang digeser tidak digunakan untuk menghitung fix, tentukan perbaikan secara visual.\n" +#: src\celestial_navigation_pi.cpp:181 +msgid "too many models" +msgstr "" -#: src/FixDialog.cpp:190 -msgid "Fix Position" -msgstr "Memperbaiki posisi" +#: src\celestial_navigation_pi.cpp:184 +msgid "Magnetic data will not be available for the celestial navigation plugin." +msgstr "" -#: src/FixDialog.cpp:335 src/FixDialog.cpp:336 src/FixDialog.cpp:337 -msgid " N/A " -msgstr " N / A " +#: src\celestial_navigation_pi.cpp:185 +msgid "OpenCPN Alert" +msgstr "Peringatan OpenCPN" diff --git a/po/is_IS.po b/po/is_IS.po new file mode 100644 index 0000000..ce1feb8 --- /dev/null +++ b/po/is_IS.po @@ -0,0 +1,721 @@ +msgid "" +msgstr "" +"Project-Id-Version: opencpn\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2021-10-27 22:15+0200\n" +"PO-Revision-Date: 2023-10-04 18:33\n" +"Last-Translator: \n" +"Language-Team: Icelandic\n" +"Language: is_IS\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" +"X-Crowdin-Project: opencpn\n" +"X-Crowdin-Project-ID: 49843\n" +"X-Crowdin-Language: is\n" +"X-Crowdin-File: /plugins/celestial_navigation_pi/po/celestial_navigation_pi.pot\n" +"X-Crowdin-File-ID: 108\n" + +#: src\CelestialNavigationDialog-2.3.5.1-no-android.cpp:149 +#: src\CelestialNavigationDialog-2.3.5.2-android.cpp:150 +#: src\CelestialNavigationDialog-partial-android.cpp:149 +#: src\CelestialNavigationDialog.cpp:150 src\CelestialNavigationUI.cpp:137 +msgid "Type" +msgstr "Tegund" + +#: src\CelestialNavigationDialog-2.3.5.1-no-android.cpp:150 +#: src\CelestialNavigationDialog-2.3.5.2-android.cpp:151 +#: src\CelestialNavigationDialog-partial-android.cpp:150 +#: src\CelestialNavigationDialog.cpp:151 +msgid "Body" +msgstr "" + +#: src\CelestialNavigationDialog-2.3.5.1-no-android.cpp:151 +#: src\CelestialNavigationDialog-2.3.5.2-android.cpp:152 +#: src\CelestialNavigationDialog-partial-android.cpp:151 +#: src\CelestialNavigationDialog.cpp:152 src\CelestialNavigationUI.cpp:328 +msgid "Time (UT)" +msgstr "" + +#: src\CelestialNavigationDialog-2.3.5.1-no-android.cpp:152 +#: src\CelestialNavigationDialog-2.3.5.2-android.cpp:153 +#: src\CelestialNavigationDialog-partial-android.cpp:152 +#: src\CelestialNavigationDialog.cpp:153 src\CelestialNavigationUI.cpp:184 +msgid "Measurement" +msgstr "" + +#: src\CelestialNavigationDialog-2.3.5.1-no-android.cpp:153 +#: src\CelestialNavigationDialog-2.3.5.2-android.cpp:154 +#: src\CelestialNavigationDialog-partial-android.cpp:153 +#: src\CelestialNavigationDialog.cpp:154 src\CelestialNavigationUI.cpp:381 +msgid "Color" +msgstr "Litur" + +#: src\CelestialNavigationDialog-2.3.5.1-no-android.cpp:266 +#: src\CelestialNavigationDialog-2.3.5.2-android.cpp:272 +#: src\CelestialNavigationDialog-partial-android.cpp:266 +#: src\CelestialNavigationDialog.cpp:272 src\celestial_navigation_pi.cpp:177 +msgid "Failed to load file: " +msgstr "" + +#: src\CelestialNavigationDialog-2.3.5.1-no-android.cpp:271 +#: src\CelestialNavigationDialog-2.3.5.2-android.cpp:277 +#: src\CelestialNavigationDialog-partial-android.cpp:271 +#: src\CelestialNavigationDialog.cpp:277 +msgid "Invalid xml file" +msgstr "" + +#: src\CelestialNavigationDialog-2.3.5.1-no-android.cpp:323 +#: src\CelestialNavigationDialog-2.3.5.2-android.cpp:329 +#: src\CelestialNavigationDialog-partial-android.cpp:323 +#: src\CelestialNavigationDialog.cpp:329 +msgid "Unrecognized xml node" +msgstr "" + +#: src\CelestialNavigationDialog-2.3.5.1-no-android.cpp:332 +#: src\CelestialNavigationDialog-2.3.5.1-no-android.cpp:392 +#: src\CelestialNavigationDialog-2.3.5.1-no-android.cpp:532 +#: src\CelestialNavigationDialog-2.3.5.2-android.cpp:338 +#: src\CelestialNavigationDialog-2.3.5.2-android.cpp:398 +#: src\CelestialNavigationDialog-2.3.5.2-android.cpp:538 +#: src\CelestialNavigationDialog-partial-android.cpp:332 +#: src\CelestialNavigationDialog-partial-android.cpp:392 +#: src\CelestialNavigationDialog-partial-android.cpp:532 +#: src\CelestialNavigationDialog.cpp:338 src\CelestialNavigationDialog.cpp:398 +#: src\CelestialNavigationDialog.cpp:538 src\Sight.cpp:1120 +#: src\Sight.cpp.bak:1121 src\celestial_navigation_pi.cpp:95 +#: src\celestial_navigation_pi.cpp:99 +msgid "Celestial Navigation" +msgstr "" + +#: src\CelestialNavigationDialog-2.3.5.1-no-android.cpp:391 +#: src\CelestialNavigationDialog-2.3.5.2-android.cpp:397 +#: src\CelestialNavigationDialog-partial-android.cpp:391 +#: src\CelestialNavigationDialog.cpp:397 +msgid "Failed to save xml file: " +msgstr "" + +#: src\CelestialNavigationDialog-2.3.5.1-no-android.cpp:424 +#: src\CelestialNavigationDialog-2.3.5.2-android.cpp:430 +#: src\CelestialNavigationDialog-partial-android.cpp:424 +#: src\CelestialNavigationDialog.cpp:430 +msgid "Time Correction" +msgstr "" + +#: src\CelestialNavigationDialog-2.3.5.1-no-android.cpp:473 +#: src\CelestialNavigationDialog-2.3.5.2-android.cpp:479 +#: src\CelestialNavigationDialog-partial-android.cpp:473 +#: src\CelestialNavigationDialog.cpp:479 +msgid "Sun" +msgstr "" + +#: src\CelestialNavigationDialog-2.3.5.1-no-android.cpp:531 +#: src\CelestialNavigationDialog-2.3.5.2-android.cpp:537 +#: src\CelestialNavigationDialog-partial-android.cpp:531 +#: src\CelestialNavigationDialog.cpp:537 +msgid "Are you sure you want to delete all sights?" +msgstr "" + +#: src\CelestialNavigationDialog-2.3.5.1-no-android.cpp:582 +#: src\CelestialNavigationDialog-2.3.5.2-android.cpp:588 +#: src\CelestialNavigationDialog-partial-android.cpp:582 +#: src\CelestialNavigationDialog.cpp:588 +msgid "Celestial_Navigation_Information.html" +msgstr "" + +#: src\CelestialNavigationDialog-2.3.5.1-no-android.cpp:589 +#: src\CelestialNavigationDialog-2.3.5.2-android.cpp:595 +#: src\CelestialNavigationDialog-partial-android.cpp:589 +#: src\CelestialNavigationDialog.cpp:595 src\CelestialNavigationUI.cpp:55 +msgid "Hide" +msgstr "Fela" + +#: src\CelestialNavigationDialog-2.3.5.1-no-android.cpp:589 +#: src\CelestialNavigationDialog-2.3.5.2-android.cpp:595 +#: src\CelestialNavigationDialog-partial-android.cpp:589 +#: src\CelestialNavigationDialog.cpp:595 +msgid "Show" +msgstr "Sýna" + +#: src\CelestialNavigationUI.cpp:40 +msgid "New" +msgstr "Ný" + +#: src\CelestialNavigationUI.cpp:43 src\CelestialNavigationUI.h:286 +msgid "Fix" +msgstr "" + +#: src\CelestialNavigationUI.cpp:46 +msgid "Duplicate" +msgstr "" + +#: src\CelestialNavigationUI.cpp:49 +msgid "Clock Offset" +msgstr "" + +#: src\CelestialNavigationUI.cpp:52 +msgid "Edit" +msgstr "Breyta" + +#: src\CelestialNavigationUI.cpp:58 +msgid "Delete" +msgstr "Eyða" + +#: src\CelestialNavigationUI.cpp:61 +msgid "Information" +msgstr "Upplýsingar" + +#: src\CelestialNavigationUI.cpp:64 +msgid "Delete All" +msgstr "Eyða öllu" + +#: src\CelestialNavigationUI.cpp:141 src\CelestialNavigationUI.cpp:674 +#: src\Sight.h:49 +msgid "Altitude" +msgstr "Hæð" + +#: src\CelestialNavigationUI.cpp:141 src\CelestialNavigationUI.cpp:683 +#: src\Sight.h:49 +msgid "Azimuth" +msgstr "" + +#: src\CelestialNavigationUI.cpp:141 src\Sight.h:49 +msgid "Lunar" +msgstr "" + +#: src\CelestialNavigationUI.cpp:147 +msgid "Magnetic Azimuth" +msgstr "" + +#: src\CelestialNavigationUI.cpp:150 +msgid "Celestial Body" +msgstr "" + +#: src\CelestialNavigationUI.cpp:159 +msgid "Find" +msgstr "Finna" + +#: src\CelestialNavigationUI.cpp:162 +msgid "Limb" +msgstr "" + +#: src\CelestialNavigationUI.cpp:166 +msgid "Center" +msgstr "" + +#: src\CelestialNavigationUI.cpp:166 +msgid "Lower" +msgstr "" + +#: src\CelestialNavigationUI.cpp:166 +msgid "Upper" +msgstr "" + +#: src\CelestialNavigationUI.cpp:191 src\CelestialNavigationUI.cpp:198 +#: src\CelestialNavigationUI.cpp:228 src\CelestialNavigationUI.cpp:235 +msgid "0" +msgstr "0" + +#: src\CelestialNavigationUI.cpp:194 src\CelestialNavigationUI.cpp:353 +#: src\CelestialNavigationUI.cpp:605 +msgid "Degrees" +msgstr "Gráður" + +#: src\CelestialNavigationUI.cpp:201 src\CelestialNavigationUI.cpp:283 +#: src\CelestialNavigationUI.cpp:444 +msgid "Minutes" +msgstr "Mínútur" + +#: src\CelestialNavigationUI.cpp:205 +msgid "10" +msgstr "10" + +#: src\CelestialNavigationUI.cpp:208 +msgid "Minutes Certainty" +msgstr "" + +#: src\CelestialNavigationUI.cpp:222 +msgid "Lunar Altitude" +msgstr "" + +#: src\CelestialNavigationUI.cpp:231 +msgid "Body Altitude" +msgstr "" + +#: src\CelestialNavigationUI.cpp:248 +msgid "Sight" +msgstr "" + +#: src\CelestialNavigationUI.cpp:276 +msgid "Hours" +msgstr "Tímar" + +#: src\CelestialNavigationUI.cpp:290 src\CelestialNavigationUI.cpp:308 +#: src\CelestialNavigationUI.cpp:869 +msgid "Seconds" +msgstr "Sekúndur" + +#: src\CelestialNavigationUI.cpp:298 +msgid "Certainty" +msgstr "" + +#: src\CelestialNavigationUI.cpp:335 src\CelestialNavigationUI.cpp:587 +msgid "Distance" +msgstr "" + +#: src\CelestialNavigationUI.cpp:342 src\CelestialNavigationUI.cpp:594 +msgid "Nm" +msgstr "" + +#: src\CelestialNavigationUI.cpp:346 src\CelestialNavigationUI.cpp:598 +msgid "Bearing" +msgstr "" + +#: src\CelestialNavigationUI.cpp:357 src\CelestialNavigationUI.cpp:609 +msgid "Magnetic Bearing" +msgstr "" + +#: src\CelestialNavigationUI.cpp:364 +msgid "DR Shift" +msgstr "" + +#: src\CelestialNavigationUI.cpp:371 +msgid "Transparency" +msgstr "" + +#: src\CelestialNavigationUI.cpp:392 +msgid "Config" +msgstr "" + +#: src\CelestialNavigationUI.cpp:404 +msgid "Eye Height" +msgstr "" + +#: src\CelestialNavigationUI.cpp:408 +msgid "2" +msgstr "2" + +#: src\CelestialNavigationUI.cpp:411 +msgid "Meters" +msgstr "Metrar" + +#: src\CelestialNavigationUI.cpp:415 +msgid "Temperature" +msgstr "Hitastig" + +#: src\CelestialNavigationUI.cpp:422 +msgid "Celcius" +msgstr "" + +#: src\CelestialNavigationUI.cpp:426 +msgid "Pressure" +msgstr "Loftþrýstingur" + +#: src\CelestialNavigationUI.cpp:433 +msgid "MilliBars" +msgstr "Millibör" + +#: src\CelestialNavigationUI.cpp:437 +msgid "Index Error" +msgstr "" + +#: src\CelestialNavigationUI.cpp:451 +msgid "Set As Defaults" +msgstr "" + +#: src\CelestialNavigationUI.cpp:458 +msgid "Parameters" +msgstr "" + +#: src\CelestialNavigationUI.cpp:474 +msgid "Calculations" +msgstr "" + +#: src\CelestialNavigationUI.cpp:578 +msgid "Shift all visible Sights" +msgstr "" + +#: src\CelestialNavigationUI.cpp:656 src\CelestialNavigationUI.cpp:769 +msgid "Latitude" +msgstr "Breiddargráða" + +#: src\CelestialNavigationUI.cpp:665 src\CelestialNavigationUI.cpp:777 +msgid "Longitude" +msgstr "Lengdargráða" + +#: src\CelestialNavigationUI.cpp:691 +msgid "Boat Position" +msgstr "" + +#: src\CelestialNavigationUI.cpp:695 +msgid "Magnetic" +msgstr "" + +#: src\CelestialNavigationUI.cpp:698 +msgid "Done" +msgstr "Lokið" + +#: src\CelestialNavigationUI.cpp:762 +msgid "Fix From Visible Sights" +msgstr "" + +#: src\CelestialNavigationUI.cpp:773 +msgid " N/A " +msgstr "" + +#: src\CelestialNavigationUI.cpp:781 +msgid " N/A " +msgstr "" + +#: src\CelestialNavigationUI.cpp:785 +msgid "Error" +msgstr "Villa" + +#: src\CelestialNavigationUI.cpp:789 +msgid " N/A " +msgstr "" + +#: src\CelestialNavigationUI.cpp:796 src\CelestialNavigationUI.cpp:803 +msgid "Initial" +msgstr "" + +#: src\CelestialNavigationUI.cpp:810 +msgid "Alg" +msgstr "" + +#: src\CelestialNavigationUI.cpp:815 +msgid "Plane" +msgstr "" + +#: src\CelestialNavigationUI.cpp:816 +msgid "Sphere" +msgstr "" + +#: src\CelestialNavigationUI.cpp:817 +msgid "Cone" +msgstr "" + +#: src\CelestialNavigationUI.cpp:818 +msgid "Cone 2" +msgstr "" + +#: src\CelestialNavigationUI.cpp:822 +msgid "Go" +msgstr "" + +#: src\CelestialNavigationUI.cpp:859 src\CelestialNavigationUI.h:308 +msgid "Clock Correction" +msgstr "" + +#: src\CelestialNavigationUI.h:82 +msgid "Celestial Navigation Sights" +msgstr "" + +#: src\CelestialNavigationUI.h:173 +msgid "Sight Properties" +msgstr "" + +#: src\CelestialNavigationUI.h:204 +msgid "Dead Reckoning shift" +msgstr "" + +#: src\CelestialNavigationUI.h:232 +msgid "Find Celestial Body" +msgstr "" + +#: src\FixDialog.cpp:192 +msgid "Shifted sights are not used to compute a fix, determine fix visually instead.\n" +msgstr "" + +#: src\FixDialog.cpp:193 +msgid "Fix Position" +msgstr "" + +#: src\FixDialog.cpp:338 src\FixDialog.cpp:339 src\FixDialog.cpp:340 +msgid " N/A " +msgstr "" + +#: src\Sight.cpp:172 src\Sight.cpp.bak:173 +msgid "Astrolab failed, data unavailable:\n" +msgstr "" + +#: src\Sight.cpp:173 src\Sight.cpp.bak:174 +msgid "\n" +"Did you forget to install vsop87d.txt?\n" +msgstr "" + +#: src\Sight.cpp:174 src\Sight.cpp.bak:175 +msgid "The plugin will not work correctly" +msgstr "" + +#: src\Sight.cpp:175 src\Sight.cpp.bak:176 +msgid "Failure Alert" +msgstr "" + +#: src\Sight.cpp:495 src\Sight.cpp.bak:496 +#, c-format +msgid "Applying clock correction of %d seconds\n\n" +msgstr "" + +#: src\Sight.cpp:557 src\Sight.cpp.bak:558 +msgid "Almanac Data For " +msgstr "" + +#: src\Sight.cpp:558 src\Sight.cpp.bak:559 +#, c-format +msgid "\n" +"Geographical Position (lat, lon) = %.4f %.4f\n" +"GHAAST = %.0f %.1f'\n" +"SHA = %.0f %.1f'\n" +"GHA = %.0f %.1f'\n" +"Dec = %c %.0f %.1f'\n" +"SD = %.1f'\n" +"HP = %.1f'\n\n" +msgstr "" + +#: src\Sight.cpp:573 src\Sight.cpp:711 src\Sight.cpp.bak:574 +#: src\Sight.cpp.bak:712 +msgid "Formulas used to calculate sight\n\n" +msgstr "" + +#: src\Sight.cpp:577 src\Sight.cpp:715 src\Sight.cpp.bak:578 +#: src\Sight.cpp.bak:716 +#, c-format +msgid "Index Error is %.4f degrees\n\n" +msgstr "" + +#: src\Sight.cpp:582 src\Sight.cpp:720 src\Sight.cpp.bak:583 +#: src\Sight.cpp.bak:721 +#, c-format +msgid "Eye Height is %.4f meters\n" +"Height Correction Degrees = 1.758*sqrt(%.4f) / 60.0\n" +"Height Correction Degrees = %.4f\n" +msgstr "" + +#: src\Sight.cpp:589 src\Sight.cpp:799 src\Sight.cpp.bak:590 +#: src\Sight.cpp.bak:800 +#, c-format +msgid "\n" +"Apparent Altitude (Ha)\n" +"ApparentAltitude = Measurement - IndexCorrection - EyeHeightCorrection\n" +"ApparentAltitude = %.4f - %.4f - %.4f\n" +"ApparentAltitude = %.4f\n" +msgstr "" + +#: src\Sight.cpp:607 src\Sight.cpp:810 src\Sight.cpp.bak:608 +#: src\Sight.cpp.bak:811 +#, c-format +msgid "\n" +"Refraction Correction\n" +"x = tan(Pi/180*ApparentAltitude + 4.848e-2*(Pi/180) / (tan(Pi/180*ApparentAltitude) + .028))\n" +"x = tan(Pi/180*%.4f + 4.848e-2*(Pi/180) / (tan(Pi/180*%.4f) + .028))\n" +"x = %.4f\n" +msgstr "" + +#: src\Sight.cpp:612 src\Sight.cpp:815 src\Sight.cpp.bak:613 +#: src\Sight.cpp.bak:816 +#, c-format +msgid "RefractionCorrection = .267 * Pressure / (x*(Temperature + 273.15)) / 60.0\n" +"RefractionCorrection = .267 * %.4f / (x*(%.4f + 273.15)) / 60.0\n" +"RefractionCorrection = %.4f\n" +msgstr "" + +#: src\Sight.cpp:627 src\Sight.cpp:829 src\Sight.cpp.bak:628 +#: src\Sight.cpp.bak:830 +#, c-format +msgid "\n" +"Sun selected, Limb Correction\n" +"ra = %.4f, lc = 0.266564/ra = %.4f\n" +msgstr "" + +#: src\Sight.cpp:637 src\Sight.cpp:753 src\Sight.cpp.bak:638 +#: src\Sight.cpp.bak:754 +#, c-format +msgid "\n" +"Moon selected, Limb Correction\n" +"SD = %.4f\n" +"lc = 180/Pi * asin(Pi/180*SD)\n" +"lc = %.4f\n" +msgstr "" + +#: src\Sight.cpp:647 src\Sight.cpp:762 src\Sight.cpp:837 src\Sight.cpp.bak:648 +#: src\Sight.cpp.bak:763 src\Sight.cpp.bak:838 +msgid "Upper Limb" +msgstr "" + +#: src\Sight.cpp:650 src\Sight.cpp:765 src\Sight.cpp:840 src\Sight.cpp.bak:651 +#: src\Sight.cpp.bak:766 src\Sight.cpp.bak:841 +msgid "Lower Limb" +msgstr "" + +#: src\Sight.cpp:653 src\Sight.cpp:843 src\Sight.cpp.bak:654 +#: src\Sight.cpp.bak:844 +#, c-format +msgid "\n" +"LimbCorrection = %.4f\n" +msgstr "" + +#: src\Sight.cpp:657 src\Sight.cpp:847 src\Sight.cpp.bak:658 +#: src\Sight.cpp.bak:848 +#, c-format +msgid "\n" +"Corrected Altitude\n" +"CorrectedAltitude = ApparentAltitude - RefractionCorrection - LimbCorrection\n" +"CorrectedAltitude = %.4f - %.4f - %.4f\n" +"CorrectedAltitude = %.4f\n" +msgstr "" + +#: src\Sight.cpp:671 src\Sight.cpp:861 src\Sight.cpp.bak:672 +#: src\Sight.cpp.bak:862 +#, c-format +msgid "\n" +"Sun selected, parallax correction\n" +"rad = %.4f, HP = 0.002442/rad = %.4f\n" +msgstr "" + +#: src\Sight.cpp:680 src\Sight.cpp:785 src\Sight.cpp.bak:681 +#: src\Sight.cpp.bak:786 +#, c-format +msgid "\n" +"Moon selected, parallax correction\n" +"HP = %.4f\n" +msgstr "" + +#: src\Sight.cpp:686 src\Sight.cpp:867 src\Sight.cpp.bak:687 +#: src\Sight.cpp.bak:868 +#, c-format +msgid "ParallaxCorrection = -180/Pi * asin( sin(Pi/180 * HP ) * cos(Pi/180 * CorrectedAltitude))\n" +"ParallaxCorrection = -180/Pi * asin( sin(Pi/180 * %.4f ) * cos(Pi/180 * %.4f))\n" +"ParallaxCorrection = %.4f\n" +msgstr "" + +#: src\Sight.cpp:693 src\Sight.cpp.bak:694 +#, c-format +msgid "\n" +"Observed Altitude (Ho)\n" +"ObservedAltitude = CorrectedAltitude - ParallaxCorrection\n" +"ObservedAltitude = %.4f - %.4f\n" +"ObservedAltitude = %.4f\n" +msgstr "" + +#: src\Sight.cpp:727 src\Sight.cpp.bak:728 +#, c-format +msgid "\n" +"Apparent Moon Altitude (Ha)\n" +"ApparentAltitudeMoon = MeasurementMoon - IndexCorrection - EyeHeightCorrection\n" +"ApparentAltitudeMoon = %.4f - %.4f - %.4f\n" +"ApparentAltitudeMoon = %.4f\n" +msgstr "" + +#: src\Sight.cpp:738 src\Sight.cpp.bak:739 +#, c-format +msgid "\n" +"Refraction Correction\n" +"x = tan(Pi/180*ApparentAltitudeMoon + 4.848e-2*(Pi/180) / (tan(Pi/180*ApparentAltitudeMoon) + .028))\n" +"x = tan(Pi/180*%.4f + 4.848e-2*(Pi/180) / (tan(Pi/180*%.4f) + .028))\n" +"x = %.4f\n" +msgstr "" + +#: src\Sight.cpp:743 src\Sight.cpp.bak:744 +#, c-format +msgid "RefractionCorrectionMoon = .267 * Pressure / (x*(Temperature + 273.15)) / 60.0\n" +"RefractionCorrectionMoon = .267 * %.4f / (x*(%.4f + 273.15)) / 60.0\n" +"RefractionCorrectionMoon = %.4f\n" +msgstr "" + +#: src\Sight.cpp:768 src\Sight.cpp:771 src\Sight.cpp.bak:769 +#: src\Sight.cpp.bak:772 +#, c-format +msgid "\n" +"LimbCorrectionMoon = %.4f\n" +msgstr "" + +#: src\Sight.cpp:774 src\Sight.cpp.bak:775 +#, c-format +msgid "\n" +"Corrected Altitude\n" +"CorrectedAltitudeMoon = ApparentAltitudeMoon - RefractionCorrectionMoon - LimbCorrectionMoon\n" +"CorrectedAltitudeMoon = %.4f - %.4f - %.4f\n" +"CorrectedAltitudeMoon = %.4f\n" +msgstr "" + +#: src\Sight.cpp:789 src\Sight.cpp.bak:790 +#, c-format +msgid "ParallaxCorrectionMoon = -180/Pi * asin( sin(Pi/180 * HP ) * cos(Pi/180 * CorrectedAltitude))\n" +"ParallaxCorrectionMoon = -180/Pi * asin( sin(Pi/180 * %.4f ) * cos(Pi/180 * %.4f))\n" +"ParallaxCorrectionMoon = %.4f\n" +msgstr "" + +#: src\Sight.cpp:878 src\Sight.cpp.bak:879 +#, c-format +msgid "CorrectionsMoon = %.4f\n" +"CorrectionsBody = %.4f\n" +"Corrections = abs(CorrectionsMoon - CorrectionsBody) = %.4f\n" +msgstr "" + +#: src\Sight.cpp:884 src\Sight.cpp.bak:885 +#, c-format +msgid "CorrectedMeasurement = Measurement - Corrections - IndexCorrection\n" +"CorrectedMeasurement = %.4f - %.4f - %.4f\n" +"CorrectedMeasurement = %.4f\n" +msgstr "" + +#: src\Sight.cpp:909 src\Sight.cpp.bak:910 +msgid "\n" +"Calculated angle between Moon and " +msgstr "" + +#: src\Sight.cpp:911 src\Sight.cpp.bak:912 +#, c-format +msgid "\n" +"Error from measurement: %.4f" +msgstr "" + +#: src\Sight.cpp:915 src\Sight.cpp.bak:916 +msgid "\n" +"Moon takes 28 days to orbit, one degree of error takes 6720 seconds" +msgstr "" + +#: src\Sight.cpp:916 src\Sight.cpp.bak:917 +#, c-format +msgid "\n" +"Time correction %.4f seconds" +msgstr "" + +#: src\Sight.cpp:1120 src\Sight.cpp.bak:1121 +msgid "Building bearing Sight Positions" +msgstr "" + +#: src\SightDialog.cpp:184 +msgid "Measurement certainty likely set to small, sight may not appear " +msgstr "" + +#: src\SightDialog.cpp:185 src\SightDialog.cpp:279 +msgid "Warning" +msgstr "Aðvörun" + +#: src\SightDialog.cpp:278 +msgid "Lunar shot will be invalid taking distance from moon to itself" +msgstr "" + +#: src\celestial_navigation_pi.cpp:179 +msgid "open error" +msgstr "" + +#: src\celestial_navigation_pi.cpp:180 +msgid "corrupt record" +msgstr "" + +#: src\celestial_navigation_pi.cpp:181 +msgid "too many models" +msgstr "" + +#: src\celestial_navigation_pi.cpp:184 +msgid "Magnetic data will not be available for the celestial navigation plugin." +msgstr "" + +#: src\celestial_navigation_pi.cpp:185 +msgid "OpenCPN Alert" +msgstr "" + diff --git a/po/it_IT.po b/po/it_IT.po index a1c29fc..43d8050 100644 --- a/po/it_IT.po +++ b/po/it_IT.po @@ -2,403 +2,467 @@ msgid "" msgstr "" "Project-Id-Version: opencpn\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-02-28 14:10-0300\n" -"PO-Revision-Date: 2018-03-03 08:24-0500\n" -"Last-Translator: nohal \n" +"POT-Creation-Date: 2021-10-27 22:15+0200\n" +"PO-Revision-Date: 2023-10-04 18:33\n" +"Last-Translator: \n" "Language-Team: Italian\n" "Language: it_IT\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -"X-Generator: crowdin.com\n" "X-Crowdin-Project: opencpn\n" +"X-Crowdin-Project-ID: 49843\n" "X-Crowdin-Language: it\n" "X-Crowdin-File: /plugins/celestial_navigation_pi/po/celestial_navigation_pi.pot\n" +"X-Crowdin-File-ID: 108\n" -#: src/CelestialNavigationDialog.cpp:123 src/CelestialNavigationUI.cpp:132 +#: src\CelestialNavigationDialog-2.3.5.1-no-android.cpp:149 +#: src\CelestialNavigationDialog-2.3.5.2-android.cpp:150 +#: src\CelestialNavigationDialog-partial-android.cpp:149 +#: src\CelestialNavigationDialog.cpp:150 src\CelestialNavigationUI.cpp:137 msgid "Type" msgstr "Tipo" -#: src/CelestialNavigationDialog.cpp:124 +#: src\CelestialNavigationDialog-2.3.5.1-no-android.cpp:150 +#: src\CelestialNavigationDialog-2.3.5.2-android.cpp:151 +#: src\CelestialNavigationDialog-partial-android.cpp:150 +#: src\CelestialNavigationDialog.cpp:151 msgid "Body" msgstr "Corpo" -#: src/CelestialNavigationDialog.cpp:125 -msgid "Time (UTC)" -msgstr "Ora (UTC)" +#: src\CelestialNavigationDialog-2.3.5.1-no-android.cpp:151 +#: src\CelestialNavigationDialog-2.3.5.2-android.cpp:152 +#: src\CelestialNavigationDialog-partial-android.cpp:151 +#: src\CelestialNavigationDialog.cpp:152 src\CelestialNavigationUI.cpp:328 +msgid "Time (UT)" +msgstr "" -#: src/CelestialNavigationDialog.cpp:126 src/CelestialNavigationUI.cpp:179 +#: src\CelestialNavigationDialog-2.3.5.1-no-android.cpp:152 +#: src\CelestialNavigationDialog-2.3.5.2-android.cpp:153 +#: src\CelestialNavigationDialog-partial-android.cpp:152 +#: src\CelestialNavigationDialog.cpp:153 src\CelestialNavigationUI.cpp:184 msgid "Measurement" msgstr "Misura" -#: src/CelestialNavigationDialog.cpp:127 src/CelestialNavigationUI.cpp:376 +#: src\CelestialNavigationDialog-2.3.5.1-no-android.cpp:153 +#: src\CelestialNavigationDialog-2.3.5.2-android.cpp:154 +#: src\CelestialNavigationDialog-partial-android.cpp:153 +#: src\CelestialNavigationDialog.cpp:154 src\CelestialNavigationUI.cpp:381 msgid "Color" msgstr "Colore" -#: src/CelestialNavigationDialog.cpp:193 -msgid "Failed to load file." -msgstr "Impossibile caricare il file." +#: src\CelestialNavigationDialog-2.3.5.1-no-android.cpp:266 +#: src\CelestialNavigationDialog-2.3.5.2-android.cpp:272 +#: src\CelestialNavigationDialog-partial-android.cpp:266 +#: src\CelestialNavigationDialog.cpp:272 src\celestial_navigation_pi.cpp:177 +msgid "Failed to load file: " +msgstr "" -#: src/CelestialNavigationDialog.cpp:198 +#: src\CelestialNavigationDialog-2.3.5.1-no-android.cpp:271 +#: src\CelestialNavigationDialog-2.3.5.2-android.cpp:277 +#: src\CelestialNavigationDialog-partial-android.cpp:271 +#: src\CelestialNavigationDialog.cpp:277 msgid "Invalid xml file" msgstr "File xml non valido" -#: src/CelestialNavigationDialog.cpp:250 +#: src\CelestialNavigationDialog-2.3.5.1-no-android.cpp:323 +#: src\CelestialNavigationDialog-2.3.5.2-android.cpp:329 +#: src\CelestialNavigationDialog-partial-android.cpp:323 +#: src\CelestialNavigationDialog.cpp:329 msgid "Unrecognized xml node" msgstr "Nodo xml non riconosciuto" -#: src/CelestialNavigationDialog.cpp:260 -msgid "Weather Routing" -msgstr "Pianificazione con meteo" +#: src\CelestialNavigationDialog-2.3.5.1-no-android.cpp:332 +#: src\CelestialNavigationDialog-2.3.5.1-no-android.cpp:392 +#: src\CelestialNavigationDialog-2.3.5.1-no-android.cpp:532 +#: src\CelestialNavigationDialog-2.3.5.2-android.cpp:338 +#: src\CelestialNavigationDialog-2.3.5.2-android.cpp:398 +#: src\CelestialNavigationDialog-2.3.5.2-android.cpp:538 +#: src\CelestialNavigationDialog-partial-android.cpp:332 +#: src\CelestialNavigationDialog-partial-android.cpp:392 +#: src\CelestialNavigationDialog-partial-android.cpp:532 +#: src\CelestialNavigationDialog.cpp:338 src\CelestialNavigationDialog.cpp:398 +#: src\CelestialNavigationDialog.cpp:538 src\Sight.cpp:1120 +#: src\Sight.cpp.bak:1121 src\celestial_navigation_pi.cpp:95 +#: src\celestial_navigation_pi.cpp:99 +msgid "Celestial Navigation" +msgstr "Navigazione Astronomica" -#: src/CelestialNavigationDialog.cpp:320 +#: src\CelestialNavigationDialog-2.3.5.1-no-android.cpp:391 +#: src\CelestialNavigationDialog-2.3.5.2-android.cpp:397 +#: src\CelestialNavigationDialog-partial-android.cpp:391 +#: src\CelestialNavigationDialog.cpp:397 msgid "Failed to save xml file: " msgstr "Impossibile salvare il file xml: " -#: src/CelestialNavigationDialog.cpp:321 src/CelestialNavigationDialog.cpp:466 -#: src/Sight.cpp:1099 src/celestial_navigation_pi.cpp:99 -#: src/celestial_navigation_pi.cpp:152 -msgid "Celestial Navigation" -msgstr "Navigazione Astronomica" - -#: src/CelestialNavigationDialog.cpp:351 +#: src\CelestialNavigationDialog-2.3.5.1-no-android.cpp:424 +#: src\CelestialNavigationDialog-2.3.5.2-android.cpp:430 +#: src\CelestialNavigationDialog-partial-android.cpp:424 +#: src\CelestialNavigationDialog.cpp:430 msgid "Time Correction" msgstr "" -#: src/CelestialNavigationDialog.cpp:409 +#: src\CelestialNavigationDialog-2.3.5.1-no-android.cpp:473 +#: src\CelestialNavigationDialog-2.3.5.2-android.cpp:479 +#: src\CelestialNavigationDialog-partial-android.cpp:473 +#: src\CelestialNavigationDialog.cpp:479 msgid "Sun" msgstr "Sole" -#: src/CelestialNavigationDialog.cpp:465 +#: src\CelestialNavigationDialog-2.3.5.1-no-android.cpp:531 +#: src\CelestialNavigationDialog-2.3.5.2-android.cpp:537 +#: src\CelestialNavigationDialog-partial-android.cpp:531 +#: src\CelestialNavigationDialog.cpp:537 msgid "Are you sure you want to delete all sights?" msgstr "Sei sicuro di voler eliminare tutte le viste?" -#: src/CelestialNavigationDialog.cpp:510 +#: src\CelestialNavigationDialog-2.3.5.1-no-android.cpp:582 +#: src\CelestialNavigationDialog-2.3.5.2-android.cpp:588 +#: src\CelestialNavigationDialog-partial-android.cpp:582 +#: src\CelestialNavigationDialog.cpp:588 msgid "Celestial_Navigation_Information.html" msgstr "Celestial_Navigation_Information.html" -#: src/CelestialNavigationDialog.cpp:516 -msgid "Show" -msgstr "Mostra" - -#: src/CelestialNavigationDialog.cpp:516 src/CelestialNavigationUI.cpp:58 +#: src\CelestialNavigationDialog-2.3.5.1-no-android.cpp:589 +#: src\CelestialNavigationDialog-2.3.5.2-android.cpp:595 +#: src\CelestialNavigationDialog-partial-android.cpp:589 +#: src\CelestialNavigationDialog.cpp:595 src\CelestialNavigationUI.cpp:55 msgid "Hide" msgstr "Nascondi" -#: src/CelestialNavigationUI.cpp:40 +#: src\CelestialNavigationDialog-2.3.5.1-no-android.cpp:589 +#: src\CelestialNavigationDialog-2.3.5.2-android.cpp:595 +#: src\CelestialNavigationDialog-partial-android.cpp:589 +#: src\CelestialNavigationDialog.cpp:595 +msgid "Show" +msgstr "Mostra" + +#: src\CelestialNavigationUI.cpp:40 msgid "New" msgstr "Nuovo" -#: src/CelestialNavigationUI.cpp:43 -msgid "Edit" -msgstr "Modifica" - -#: src/CelestialNavigationUI.cpp:46 -msgid "Delete" -msgstr "Elimina" - -#: src/CelestialNavigationUI.cpp:49 -msgid "Delete All" -msgstr "Elimina Tutto" - -#: src/CelestialNavigationUI.cpp:52 src/CelestialNavigationUI.h:281 +#: src\CelestialNavigationUI.cpp:43 src\CelestialNavigationUI.h:286 msgid "Fix" msgstr "Correggi" -#: src/CelestialNavigationUI.cpp:55 +#: src\CelestialNavigationUI.cpp:46 +msgid "Duplicate" +msgstr "" + +#: src\CelestialNavigationUI.cpp:49 msgid "Clock Offset" msgstr "" -#: src/CelestialNavigationUI.cpp:61 +#: src\CelestialNavigationUI.cpp:52 +msgid "Edit" +msgstr "Modifica" + +#: src\CelestialNavigationUI.cpp:58 +msgid "Delete" +msgstr "Elimina" + +#: src\CelestialNavigationUI.cpp:61 msgid "Information" msgstr "Informazioni" -#: src/CelestialNavigationUI.cpp:136 src/CelestialNavigationUI.cpp:667 -#: src/Sight.h:49 +#: src\CelestialNavigationUI.cpp:64 +msgid "Delete All" +msgstr "Elimina Tutto" + +#: src\CelestialNavigationUI.cpp:141 src\CelestialNavigationUI.cpp:674 +#: src\Sight.h:49 msgid "Altitude" msgstr "Altezza" -#: src/CelestialNavigationUI.cpp:136 src/CelestialNavigationUI.cpp:677 -#: src/Sight.h:49 +#: src\CelestialNavigationUI.cpp:141 src\CelestialNavigationUI.cpp:683 +#: src\Sight.h:49 msgid "Azimuth" msgstr "Azimut" -#: src/CelestialNavigationUI.cpp:136 src/Sight.h:49 +#: src\CelestialNavigationUI.cpp:141 src\Sight.h:49 msgid "Lunar" msgstr "Lunare" -#: src/CelestialNavigationUI.cpp:142 +#: src\CelestialNavigationUI.cpp:147 msgid "Magnetic Azimuth" msgstr "Azimut magnetico" -#: src/CelestialNavigationUI.cpp:145 +#: src\CelestialNavigationUI.cpp:150 msgid "Celestial Body" msgstr "Corpo celeste" -#: src/CelestialNavigationUI.cpp:154 +#: src\CelestialNavigationUI.cpp:159 msgid "Find" msgstr "Trova" -#: src/CelestialNavigationUI.cpp:157 +#: src\CelestialNavigationUI.cpp:162 msgid "Limb" msgstr "Lembo" -#: src/CelestialNavigationUI.cpp:161 -msgid "Lower" -msgstr "Inferiore" - -#: src/CelestialNavigationUI.cpp:161 +#: src\CelestialNavigationUI.cpp:166 msgid "Center" msgstr "Centrale" -#: src/CelestialNavigationUI.cpp:161 +#: src\CelestialNavigationUI.cpp:166 +msgid "Lower" +msgstr "Inferiore" + +#: src\CelestialNavigationUI.cpp:166 msgid "Upper" msgstr "Superiore" -#: src/CelestialNavigationUI.cpp:186 src/CelestialNavigationUI.cpp:193 -#: src/CelestialNavigationUI.cpp:223 src/CelestialNavigationUI.cpp:230 +#: src\CelestialNavigationUI.cpp:191 src\CelestialNavigationUI.cpp:198 +#: src\CelestialNavigationUI.cpp:228 src\CelestialNavigationUI.cpp:235 msgid "0" msgstr "0" -#: src/CelestialNavigationUI.cpp:189 src/CelestialNavigationUI.cpp:348 -#: src/CelestialNavigationUI.cpp:598 +#: src\CelestialNavigationUI.cpp:194 src\CelestialNavigationUI.cpp:353 +#: src\CelestialNavigationUI.cpp:605 msgid "Degrees" msgstr "Gradi" -#: src/CelestialNavigationUI.cpp:196 src/CelestialNavigationUI.cpp:278 -#: src/CelestialNavigationUI.cpp:439 +#: src\CelestialNavigationUI.cpp:201 src\CelestialNavigationUI.cpp:283 +#: src\CelestialNavigationUI.cpp:444 msgid "Minutes" msgstr "Minuti" -#: src/CelestialNavigationUI.cpp:200 +#: src\CelestialNavigationUI.cpp:205 msgid "10" msgstr "" -#: src/CelestialNavigationUI.cpp:203 +#: src\CelestialNavigationUI.cpp:208 msgid "Minutes Certainty" msgstr "" -#: src/CelestialNavigationUI.cpp:217 +#: src\CelestialNavigationUI.cpp:222 msgid "Lunar Altitude" msgstr "" -#: src/CelestialNavigationUI.cpp:226 +#: src\CelestialNavigationUI.cpp:231 msgid "Body Altitude" msgstr "" -#: src/CelestialNavigationUI.cpp:243 +#: src\CelestialNavigationUI.cpp:248 msgid "Sight" msgstr "Vista" -#: src/CelestialNavigationUI.cpp:271 +#: src\CelestialNavigationUI.cpp:276 msgid "Hours" msgstr "Ore" -#: src/CelestialNavigationUI.cpp:285 src/CelestialNavigationUI.cpp:303 -#: src/CelestialNavigationUI.cpp:860 +#: src\CelestialNavigationUI.cpp:290 src\CelestialNavigationUI.cpp:308 +#: src\CelestialNavigationUI.cpp:869 msgid "Seconds" msgstr "Secondi" -#: src/CelestialNavigationUI.cpp:293 +#: src\CelestialNavigationUI.cpp:298 msgid "Certainty" msgstr "" -#: src/CelestialNavigationUI.cpp:323 -msgid "Time" -msgstr "Ora" - -#: src/CelestialNavigationUI.cpp:330 src/CelestialNavigationUI.cpp:580 +#: src\CelestialNavigationUI.cpp:335 src\CelestialNavigationUI.cpp:587 msgid "Distance" msgstr "Distanza" -#: src/CelestialNavigationUI.cpp:337 src/CelestialNavigationUI.cpp:587 +#: src\CelestialNavigationUI.cpp:342 src\CelestialNavigationUI.cpp:594 msgid "Nm" msgstr "" -#: src/CelestialNavigationUI.cpp:341 src/CelestialNavigationUI.cpp:591 +#: src\CelestialNavigationUI.cpp:346 src\CelestialNavigationUI.cpp:598 msgid "Bearing" msgstr "" -#: src/CelestialNavigationUI.cpp:352 src/CelestialNavigationUI.cpp:602 +#: src\CelestialNavigationUI.cpp:357 src\CelestialNavigationUI.cpp:609 msgid "Magnetic Bearing" msgstr "" -#: src/CelestialNavigationUI.cpp:359 +#: src\CelestialNavigationUI.cpp:364 msgid "DR Shift" msgstr "" -#: src/CelestialNavigationUI.cpp:366 +#: src\CelestialNavigationUI.cpp:371 msgid "Transparency" msgstr "Trasparenza" -#: src/CelestialNavigationUI.cpp:387 +#: src\CelestialNavigationUI.cpp:392 msgid "Config" msgstr "Configurazione" -#: src/CelestialNavigationUI.cpp:399 +#: src\CelestialNavigationUI.cpp:404 msgid "Eye Height" msgstr "" -#: src/CelestialNavigationUI.cpp:403 +#: src\CelestialNavigationUI.cpp:408 msgid "2" msgstr "" -#: src/CelestialNavigationUI.cpp:406 +#: src\CelestialNavigationUI.cpp:411 msgid "Meters" msgstr "Metri" -#: src/CelestialNavigationUI.cpp:410 +#: src\CelestialNavigationUI.cpp:415 msgid "Temperature" msgstr "Temperatura" -#: src/CelestialNavigationUI.cpp:417 +#: src\CelestialNavigationUI.cpp:422 msgid "Celcius" msgstr "" -#: src/CelestialNavigationUI.cpp:421 +#: src\CelestialNavigationUI.cpp:426 msgid "Pressure" msgstr "Pressione" -#: src/CelestialNavigationUI.cpp:428 +#: src\CelestialNavigationUI.cpp:433 msgid "MilliBars" msgstr "" -#: src/CelestialNavigationUI.cpp:432 +#: src\CelestialNavigationUI.cpp:437 msgid "Index Error" msgstr "" -#: src/CelestialNavigationUI.cpp:446 +#: src\CelestialNavigationUI.cpp:451 msgid "Set As Defaults" msgstr "Imposta come predefinito" -#: src/CelestialNavigationUI.cpp:453 +#: src\CelestialNavigationUI.cpp:458 msgid "Parameters" msgstr "Parametri" -#: src/CelestialNavigationUI.cpp:469 +#: src\CelestialNavigationUI.cpp:474 msgid "Calculations" msgstr "" -#: src/CelestialNavigationUI.cpp:571 +#: src\CelestialNavigationUI.cpp:578 msgid "Shift all visible Sights" msgstr "" -#: src/CelestialNavigationUI.cpp:649 src/CelestialNavigationUI.cpp:760 +#: src\CelestialNavigationUI.cpp:656 src\CelestialNavigationUI.cpp:769 msgid "Latitude" msgstr "Latitudine" -#: src/CelestialNavigationUI.cpp:658 src/CelestialNavigationUI.cpp:768 +#: src\CelestialNavigationUI.cpp:665 src\CelestialNavigationUI.cpp:777 msgid "Longitude" msgstr "Longitudine" -#: src/CelestialNavigationUI.cpp:669 src/CelestialNavigationUI.cpp:679 -msgid "MyLabel" -msgstr "MyLabel" - -#: src/CelestialNavigationUI.cpp:686 -msgid "Done" -msgstr "Fatto" +#: src\CelestialNavigationUI.cpp:691 +msgid "Boat Position" +msgstr "Posizione barca" -#: src/CelestialNavigationUI.cpp:689 +#: src\CelestialNavigationUI.cpp:695 msgid "Magnetic" msgstr "" -#: src/CelestialNavigationUI.cpp:753 +#: src\CelestialNavigationUI.cpp:698 +msgid "Done" +msgstr "Fatto" + +#: src\CelestialNavigationUI.cpp:762 msgid "Fix From Visible Sights" msgstr "Punto da viste visibili" -#: src/CelestialNavigationUI.cpp:764 +#: src\CelestialNavigationUI.cpp:773 msgid " N/A " msgstr " N/D " -#: src/CelestialNavigationUI.cpp:772 +#: src\CelestialNavigationUI.cpp:781 msgid " N/A " msgstr " N/D " -#: src/CelestialNavigationUI.cpp:776 +#: src\CelestialNavigationUI.cpp:785 msgid "Error" msgstr "Errore" -#: src/CelestialNavigationUI.cpp:780 +#: src\CelestialNavigationUI.cpp:789 msgid " N/A " msgstr " N/D " -#: src/CelestialNavigationUI.cpp:787 src/CelestialNavigationUI.cpp:794 +#: src\CelestialNavigationUI.cpp:796 src\CelestialNavigationUI.cpp:803 msgid "Initial" msgstr "Iniziale" -#: src/CelestialNavigationUI.cpp:801 +#: src\CelestialNavigationUI.cpp:810 msgid "Alg" msgstr "" -#: src/CelestialNavigationUI.cpp:806 +#: src\CelestialNavigationUI.cpp:815 msgid "Plane" msgstr "Piano" -#: src/CelestialNavigationUI.cpp:807 +#: src\CelestialNavigationUI.cpp:816 msgid "Sphere" msgstr "Sfera" -#: src/CelestialNavigationUI.cpp:808 +#: src\CelestialNavigationUI.cpp:817 msgid "Cone" msgstr "Cono" -#: src/CelestialNavigationUI.cpp:809 +#: src\CelestialNavigationUI.cpp:818 msgid "Cone 2" msgstr "Cono 2" -#: src/CelestialNavigationUI.cpp:813 +#: src\CelestialNavigationUI.cpp:822 msgid "Go" msgstr "Vai" -#: src/CelestialNavigationUI.cpp:850 src/CelestialNavigationUI.h:303 +#: src\CelestialNavigationUI.cpp:859 src\CelestialNavigationUI.h:308 msgid "Clock Correction" msgstr "" -#: src/CelestialNavigationUI.h:78 +#: src\CelestialNavigationUI.h:82 msgid "Celestial Navigation Sights" msgstr "" -#: src/CelestialNavigationUI.h:169 +#: src\CelestialNavigationUI.h:173 msgid "Sight Properties" msgstr "" -#: src/CelestialNavigationUI.h:200 +#: src\CelestialNavigationUI.h:204 msgid "Dead Reckoning shift" msgstr "" -#: src/CelestialNavigationUI.h:227 +#: src\CelestialNavigationUI.h:232 msgid "Find Celestial Body" msgstr "Trova Corpo Celeste" -#: src/Sight.cpp:160 +#: src\FixDialog.cpp:192 +msgid "Shifted sights are not used to compute a fix, determine fix visually instead.\n" +msgstr "Le letture spostate non sono usate per calcolare il punto. Determinare il punto visivamente.\n" + +#: src\FixDialog.cpp:193 +msgid "Fix Position" +msgstr "Posizione Punto nave" + +#: src\FixDialog.cpp:338 src\FixDialog.cpp:339 src\FixDialog.cpp:340 +msgid " N/A " +msgstr " N/D " + +#: src\Sight.cpp:172 src\Sight.cpp.bak:173 msgid "Astrolab failed, data unavailable:\n" msgstr "" -#: src/Sight.cpp:161 +#: src\Sight.cpp:173 src\Sight.cpp.bak:174 msgid "\n" "Did you forget to install vsop87d.txt?\n" msgstr "" -#: src/Sight.cpp:162 +#: src\Sight.cpp:174 src\Sight.cpp.bak:175 msgid "The plugin will not work correctly" msgstr "" -#: src/Sight.cpp:163 +#: src\Sight.cpp:175 src\Sight.cpp.bak:176 msgid "Failure Alert" msgstr "Avviso di errore" -#: src/Sight.cpp:474 +#: src\Sight.cpp:495 src\Sight.cpp.bak:496 #, c-format msgid "Applying clock correction of %d seconds\n\n" msgstr "" -#: src/Sight.cpp:536 +#: src\Sight.cpp:557 src\Sight.cpp.bak:558 msgid "Almanac Data For " msgstr "" -#: src/Sight.cpp:537 +#: src\Sight.cpp:558 src\Sight.cpp.bak:559 #, c-format msgid "\n" "Geographical Position (lat, lon) = %.4f %.4f\n" @@ -417,23 +481,27 @@ msgstr "\n" "SD = %.1f'\n" "HP = %.1f'\n\n" -#: src/Sight.cpp:552 src/Sight.cpp:690 +#: src\Sight.cpp:573 src\Sight.cpp:711 src\Sight.cpp.bak:574 +#: src\Sight.cpp.bak:712 msgid "Formulas used to calculate sight\n\n" msgstr "" -#: src/Sight.cpp:556 src/Sight.cpp:694 +#: src\Sight.cpp:577 src\Sight.cpp:715 src\Sight.cpp.bak:578 +#: src\Sight.cpp.bak:716 #, c-format msgid "Index Error is %.4f degrees\n\n" msgstr "" -#: src/Sight.cpp:561 src/Sight.cpp:699 +#: src\Sight.cpp:582 src\Sight.cpp:720 src\Sight.cpp.bak:583 +#: src\Sight.cpp.bak:721 #, c-format msgid "Eye Height is %.4f meters\n" "Height Correction Degrees = 1.758*sqrt(%.4f) / 60.0\n" "Height Correction Degrees = %.4f\n" msgstr "" -#: src/Sight.cpp:568 +#: src\Sight.cpp:589 src\Sight.cpp:799 src\Sight.cpp.bak:590 +#: src\Sight.cpp.bak:800 #, c-format msgid "\n" "Apparent Altitude (Ha)\n" @@ -442,7 +510,8 @@ msgid "\n" "ApparentAltitude = %.4f\n" msgstr "" -#: src/Sight.cpp:586 src/Sight.cpp:789 +#: src\Sight.cpp:607 src\Sight.cpp:810 src\Sight.cpp.bak:608 +#: src\Sight.cpp.bak:811 #, c-format msgid "\n" "Refraction Correction\n" @@ -451,21 +520,24 @@ msgid "\n" "x = %.4f\n" msgstr "" -#: src/Sight.cpp:591 src/Sight.cpp:794 +#: src\Sight.cpp:612 src\Sight.cpp:815 src\Sight.cpp.bak:613 +#: src\Sight.cpp.bak:816 #, c-format msgid "RefractionCorrection = .267 * Pressure / (x*(Temperature + 273.15)) / 60.0\n" "RefractionCorrection = .267 * %.4f / (x*(%.4f + 273.15)) / 60.0\n" "RefractionCorrection = %.4f\n" msgstr "" -#: src/Sight.cpp:606 src/Sight.cpp:808 +#: src\Sight.cpp:627 src\Sight.cpp:829 src\Sight.cpp.bak:628 +#: src\Sight.cpp.bak:830 #, c-format msgid "\n" "Sun selected, Limb Correction\n" "ra = %.4f, lc = 0.266564/ra = %.4f\n" msgstr "" -#: src/Sight.cpp:616 src/Sight.cpp:732 +#: src\Sight.cpp:637 src\Sight.cpp:753 src\Sight.cpp.bak:638 +#: src\Sight.cpp.bak:754 #, c-format msgid "\n" "Moon selected, Limb Correction\n" @@ -474,21 +546,25 @@ msgid "\n" "lc = %.4f\n" msgstr "" -#: src/Sight.cpp:626 src/Sight.cpp:741 src/Sight.cpp:816 +#: src\Sight.cpp:647 src\Sight.cpp:762 src\Sight.cpp:837 src\Sight.cpp.bak:648 +#: src\Sight.cpp.bak:763 src\Sight.cpp.bak:838 msgid "Upper Limb" msgstr "Lembo superiore" -#: src/Sight.cpp:629 src/Sight.cpp:744 src/Sight.cpp:819 +#: src\Sight.cpp:650 src\Sight.cpp:765 src\Sight.cpp:840 src\Sight.cpp.bak:651 +#: src\Sight.cpp.bak:766 src\Sight.cpp.bak:841 msgid "Lower Limb" msgstr "" -#: src/Sight.cpp:632 src/Sight.cpp:822 +#: src\Sight.cpp:653 src\Sight.cpp:843 src\Sight.cpp.bak:654 +#: src\Sight.cpp.bak:844 #, c-format msgid "\n" "LimbCorrection = %.4f\n" msgstr "" -#: src/Sight.cpp:636 src/Sight.cpp:826 +#: src\Sight.cpp:657 src\Sight.cpp:847 src\Sight.cpp.bak:658 +#: src\Sight.cpp.bak:848 #, c-format msgid "\n" "Corrected Altitude\n" @@ -497,28 +573,31 @@ msgid "\n" "CorrectedAltitude = %.4f\n" msgstr "" -#: src/Sight.cpp:650 src/Sight.cpp:840 +#: src\Sight.cpp:671 src\Sight.cpp:861 src\Sight.cpp.bak:672 +#: src\Sight.cpp.bak:862 #, c-format msgid "\n" "Sun selected, parallax correction\n" "rad = %.4f, HP = 0.002442/rad = %.4f\n" msgstr "" -#: src/Sight.cpp:659 src/Sight.cpp:764 +#: src\Sight.cpp:680 src\Sight.cpp:785 src\Sight.cpp.bak:681 +#: src\Sight.cpp.bak:786 #, c-format msgid "\n" "Moon selected, parallax correction\n" "HP = %.4f\n" msgstr "" -#: src/Sight.cpp:665 src/Sight.cpp:846 +#: src\Sight.cpp:686 src\Sight.cpp:867 src\Sight.cpp.bak:687 +#: src\Sight.cpp.bak:868 #, c-format msgid "ParallaxCorrection = -180/Pi * asin( sin(Pi/180 * HP ) * cos(Pi/180 * CorrectedAltitude))\n" "ParallaxCorrection = -180/Pi * asin( sin(Pi/180 * %.4f ) * cos(Pi/180 * %.4f))\n" "ParallaxCorrection = %.4f\n" msgstr "" -#: src/Sight.cpp:672 +#: src\Sight.cpp:693 src\Sight.cpp.bak:694 #, c-format msgid "\n" "Observed Altitude (Ho)\n" @@ -527,16 +606,16 @@ msgid "\n" "ObservedAltitude = %.4f\n" msgstr "" -#: src/Sight.cpp:706 +#: src\Sight.cpp:727 src\Sight.cpp.bak:728 #, c-format msgid "\n" "Apparent Moon Altitude (Ha)\n" "ApparentAltitudeMoon = MeasurementMoon - IndexCorrection - EyeHeightCorrection\n" -" ApparentAltitudeMoon = %.4f - %.4f - %.4f\n" +"ApparentAltitudeMoon = %.4f - %.4f - %.4f\n" "ApparentAltitudeMoon = %.4f\n" msgstr "" -#: src/Sight.cpp:717 +#: src\Sight.cpp:738 src\Sight.cpp.bak:739 #, c-format msgid "\n" "Refraction Correction\n" @@ -545,20 +624,21 @@ msgid "\n" "x = %.4f\n" msgstr "" -#: src/Sight.cpp:722 +#: src\Sight.cpp:743 src\Sight.cpp.bak:744 #, c-format msgid "RefractionCorrectionMoon = .267 * Pressure / (x*(Temperature + 273.15)) / 60.0\n" "RefractionCorrectionMoon = .267 * %.4f / (x*(%.4f + 273.15)) / 60.0\n" "RefractionCorrectionMoon = %.4f\n" msgstr "" -#: src/Sight.cpp:747 src/Sight.cpp:750 +#: src\Sight.cpp:768 src\Sight.cpp:771 src\Sight.cpp.bak:769 +#: src\Sight.cpp.bak:772 #, c-format msgid "\n" "LimbCorrectionMoon = %.4f\n" msgstr "" -#: src/Sight.cpp:753 +#: src\Sight.cpp:774 src\Sight.cpp.bak:775 #, c-format msgid "\n" "Corrected Altitude\n" @@ -567,107 +647,83 @@ msgid "\n" "CorrectedAltitudeMoon = %.4f\n" msgstr "" -#: src/Sight.cpp:768 +#: src\Sight.cpp:789 src\Sight.cpp.bak:790 #, c-format msgid "ParallaxCorrectionMoon = -180/Pi * asin( sin(Pi/180 * HP ) * cos(Pi/180 * CorrectedAltitude))\n" -" ParallaxCorrectionMoon = -180/Pi * asin( sin(Pi/180 * %.4f ) * cos(Pi/180 * %.4f))\n" +"ParallaxCorrectionMoon = -180/Pi * asin( sin(Pi/180 * %.4f ) * cos(Pi/180 * %.4f))\n" "ParallaxCorrectionMoon = %.4f\n" msgstr "" -#: src/Sight.cpp:778 -#, c-format -msgid "\n" -"Apparent Altitude (Ha)\n" -"ApparentAltitude = Measurement - IndexCorrection - EyeHeightCorrection\n" -" ApparentAltitude = %.4f - %.4f - %.4f\n" -"ApparentAltitude = %.4f\n" -msgstr "" - -#: src/Sight.cpp:857 +#: src\Sight.cpp:878 src\Sight.cpp.bak:879 #, c-format msgid "CorrectionsMoon = %.4f\n" "CorrectionsBody = %.4f\n" "Corrections = abs(CorrectionsMoon - CorrectionsBody) = %.4f\n" msgstr "" -#: src/Sight.cpp:863 +#: src\Sight.cpp:884 src\Sight.cpp.bak:885 #, c-format msgid "CorrectedMeasurement = Measurement - Corrections - IndexCorrection\n" "CorrectedMeasurement = %.4f - %.4f - %.4f\n" "CorrectedMeasurement = %.4f\n" msgstr "" -#: src/Sight.cpp:888 +#: src\Sight.cpp:909 src\Sight.cpp.bak:910 msgid "\n" "Calculated angle between Moon and " msgstr "" -#: src/Sight.cpp:890 +#: src\Sight.cpp:911 src\Sight.cpp.bak:912 #, c-format msgid "\n" "Error from measurement: %.4f" msgstr "" -#: src/Sight.cpp:894 +#: src\Sight.cpp:915 src\Sight.cpp.bak:916 msgid "\n" "Moon takes 28 days to orbit, one degree of error takes 6720 seconds" -msgstr "" +msgstr "\n" +"La luna impiega 28 giorni per orbitare, un grado di errore richiede 6720 secondi" -#: src/Sight.cpp:895 +#: src\Sight.cpp:916 src\Sight.cpp.bak:917 #, c-format msgid "\n" "Time correction %.4f seconds" msgstr "" -#: src/Sight.cpp:1099 +#: src\Sight.cpp:1120 src\Sight.cpp.bak:1121 msgid "Building bearing Sight Positions" msgstr "" -#: src/SightDialog.cpp:172 +#: src\SightDialog.cpp:184 msgid "Measurement certainty likely set to small, sight may not appear " -msgstr "" +msgstr "La certezza delle misurazioni è impostata su piccola, la vista potrebbe non apparire " -#: src/SightDialog.cpp:173 src/SightDialog.cpp:256 +#: src\SightDialog.cpp:185 src\SightDialog.cpp:279 msgid "Warning" msgstr "Attenzione" -#: src/SightDialog.cpp:255 +#: src\SightDialog.cpp:278 msgid "Lunar shot will be invalid taking distance from moon to itself" msgstr "" -#: src/celestial_navigation_pi.cpp:90 -msgid "Failed to load file:\n" +#: src\celestial_navigation_pi.cpp:179 +msgid "open error" msgstr "" -#: src/celestial_navigation_pi.cpp:91 -msgid "\n" -"Magnetic data will not be available for the celestial navigation plugin." +#: src\celestial_navigation_pi.cpp:180 +msgid "corrupt record" msgstr "" -#: src/celestial_navigation_pi.cpp:92 -msgid "OpenCPN Alert" +#: src\celestial_navigation_pi.cpp:181 +msgid "too many models" msgstr "" -#: src/celestial_navigation_pi.cpp:157 -msgid "Celestial Navigation PlugIn for OpenCPN" +#: src\celestial_navigation_pi.cpp:184 +msgid "Magnetic data will not be available for the celestial navigation plugin." msgstr "" -#: src/celestial_navigation_pi.cpp:162 -msgid "Celestial Navigation PlugIn for OpenCPN.\n" -"Implements nautical almanac for sun, moon, planets,\n" -"and various navigational stars.\n" -"Compute position fix from celestial measurements." +#: src\celestial_navigation_pi.cpp:185 +msgid "OpenCPN Alert" msgstr "" -#: src/FixDialog.cpp:189 -msgid "Shifted sights are not used to compute a fix, determine fix visually instead.\n" -msgstr "Le letture spostate non sono usate per calcolare il punto. Determinare il punto visivamente.\n" - -#: src/FixDialog.cpp:190 -msgid "Fix Position" -msgstr "Posizione Punto nave" - -#: src/FixDialog.cpp:335 src/FixDialog.cpp:336 src/FixDialog.cpp:337 -msgid " N/A " -msgstr " N/D " - diff --git a/po/ja_JP.po b/po/ja_JP.po index 1f3534d..6a1d50d 100644 --- a/po/ja_JP.po +++ b/po/ja_JP.po @@ -2,404 +2,468 @@ msgid "" msgstr "" "Project-Id-Version: opencpn\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-02-28 14:10-0300\n" -"PO-Revision-Date: 2018-02-01 14:00-0500\n" -"Last-Translator: nohal \n" +"POT-Creation-Date: 2021-10-27 22:15+0200\n" +"PO-Revision-Date: 2023-10-04 18:33\n" +"Last-Translator: \n" "Language-Team: Japanese\n" "Language: ja_JP\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=1; plural=0;\n" -"X-Generator: crowdin.com\n" "X-Crowdin-Project: opencpn\n" +"X-Crowdin-Project-ID: 49843\n" "X-Crowdin-Language: ja\n" "X-Crowdin-File: /plugins/celestial_navigation_pi/po/celestial_navigation_pi.pot\n" +"X-Crowdin-File-ID: 108\n" -#: src/CelestialNavigationDialog.cpp:123 src/CelestialNavigationUI.cpp:132 +#: src\CelestialNavigationDialog-2.3.5.1-no-android.cpp:149 +#: src\CelestialNavigationDialog-2.3.5.2-android.cpp:150 +#: src\CelestialNavigationDialog-partial-android.cpp:149 +#: src\CelestialNavigationDialog.cpp:150 src\CelestialNavigationUI.cpp:137 msgid "Type" msgstr "タイプ" -#: src/CelestialNavigationDialog.cpp:124 +#: src\CelestialNavigationDialog-2.3.5.1-no-android.cpp:150 +#: src\CelestialNavigationDialog-2.3.5.2-android.cpp:151 +#: src\CelestialNavigationDialog-partial-android.cpp:150 +#: src\CelestialNavigationDialog.cpp:151 msgid "Body" msgstr "ボディ" -#: src/CelestialNavigationDialog.cpp:125 -msgid "Time (UTC)" -msgstr "時刻 (UTC)" +#: src\CelestialNavigationDialog-2.3.5.1-no-android.cpp:151 +#: src\CelestialNavigationDialog-2.3.5.2-android.cpp:152 +#: src\CelestialNavigationDialog-partial-android.cpp:151 +#: src\CelestialNavigationDialog.cpp:152 src\CelestialNavigationUI.cpp:328 +msgid "Time (UT)" +msgstr "" -#: src/CelestialNavigationDialog.cpp:126 src/CelestialNavigationUI.cpp:179 +#: src\CelestialNavigationDialog-2.3.5.1-no-android.cpp:152 +#: src\CelestialNavigationDialog-2.3.5.2-android.cpp:153 +#: src\CelestialNavigationDialog-partial-android.cpp:152 +#: src\CelestialNavigationDialog.cpp:153 src\CelestialNavigationUI.cpp:184 msgid "Measurement" msgstr "測定" -#: src/CelestialNavigationDialog.cpp:127 src/CelestialNavigationUI.cpp:376 +#: src\CelestialNavigationDialog-2.3.5.1-no-android.cpp:153 +#: src\CelestialNavigationDialog-2.3.5.2-android.cpp:154 +#: src\CelestialNavigationDialog-partial-android.cpp:153 +#: src\CelestialNavigationDialog.cpp:154 src\CelestialNavigationUI.cpp:381 msgid "Color" msgstr "色" -#: src/CelestialNavigationDialog.cpp:193 -msgid "Failed to load file." -msgstr "ファイルの読み込みに失敗しました。" +#: src\CelestialNavigationDialog-2.3.5.1-no-android.cpp:266 +#: src\CelestialNavigationDialog-2.3.5.2-android.cpp:272 +#: src\CelestialNavigationDialog-partial-android.cpp:266 +#: src\CelestialNavigationDialog.cpp:272 src\celestial_navigation_pi.cpp:177 +msgid "Failed to load file: " +msgstr "" -#: src/CelestialNavigationDialog.cpp:198 +#: src\CelestialNavigationDialog-2.3.5.1-no-android.cpp:271 +#: src\CelestialNavigationDialog-2.3.5.2-android.cpp:277 +#: src\CelestialNavigationDialog-partial-android.cpp:271 +#: src\CelestialNavigationDialog.cpp:277 msgid "Invalid xml file" msgstr "無効な xml ファイル" -#: src/CelestialNavigationDialog.cpp:250 +#: src\CelestialNavigationDialog-2.3.5.1-no-android.cpp:323 +#: src\CelestialNavigationDialog-2.3.5.2-android.cpp:329 +#: src\CelestialNavigationDialog-partial-android.cpp:323 +#: src\CelestialNavigationDialog.cpp:329 msgid "Unrecognized xml node" msgstr "認識できない xml ノード" -#: src/CelestialNavigationDialog.cpp:260 -msgid "Weather Routing" -msgstr "ウェザー ルーティング" +#: src\CelestialNavigationDialog-2.3.5.1-no-android.cpp:332 +#: src\CelestialNavigationDialog-2.3.5.1-no-android.cpp:392 +#: src\CelestialNavigationDialog-2.3.5.1-no-android.cpp:532 +#: src\CelestialNavigationDialog-2.3.5.2-android.cpp:338 +#: src\CelestialNavigationDialog-2.3.5.2-android.cpp:398 +#: src\CelestialNavigationDialog-2.3.5.2-android.cpp:538 +#: src\CelestialNavigationDialog-partial-android.cpp:332 +#: src\CelestialNavigationDialog-partial-android.cpp:392 +#: src\CelestialNavigationDialog-partial-android.cpp:532 +#: src\CelestialNavigationDialog.cpp:338 src\CelestialNavigationDialog.cpp:398 +#: src\CelestialNavigationDialog.cpp:538 src\Sight.cpp:1120 +#: src\Sight.cpp.bak:1121 src\celestial_navigation_pi.cpp:95 +#: src\celestial_navigation_pi.cpp:99 +msgid "Celestial Navigation" +msgstr "天体ナビゲーション" -#: src/CelestialNavigationDialog.cpp:320 +#: src\CelestialNavigationDialog-2.3.5.1-no-android.cpp:391 +#: src\CelestialNavigationDialog-2.3.5.2-android.cpp:397 +#: src\CelestialNavigationDialog-partial-android.cpp:391 +#: src\CelestialNavigationDialog.cpp:397 msgid "Failed to save xml file: " msgstr "Xml ファイルを保存できませんでした。 " -#: src/CelestialNavigationDialog.cpp:321 src/CelestialNavigationDialog.cpp:466 -#: src/Sight.cpp:1099 src/celestial_navigation_pi.cpp:99 -#: src/celestial_navigation_pi.cpp:152 -msgid "Celestial Navigation" -msgstr "天体ナビゲーション" - -#: src/CelestialNavigationDialog.cpp:351 +#: src\CelestialNavigationDialog-2.3.5.1-no-android.cpp:424 +#: src\CelestialNavigationDialog-2.3.5.2-android.cpp:430 +#: src\CelestialNavigationDialog-partial-android.cpp:424 +#: src\CelestialNavigationDialog.cpp:430 msgid "Time Correction" msgstr "時間の訂正" -#: src/CelestialNavigationDialog.cpp:409 +#: src\CelestialNavigationDialog-2.3.5.1-no-android.cpp:473 +#: src\CelestialNavigationDialog-2.3.5.2-android.cpp:479 +#: src\CelestialNavigationDialog-partial-android.cpp:473 +#: src\CelestialNavigationDialog.cpp:479 msgid "Sun" msgstr "太陽" -#: src/CelestialNavigationDialog.cpp:465 +#: src\CelestialNavigationDialog-2.3.5.1-no-android.cpp:531 +#: src\CelestialNavigationDialog-2.3.5.2-android.cpp:537 +#: src\CelestialNavigationDialog-partial-android.cpp:531 +#: src\CelestialNavigationDialog.cpp:537 msgid "Are you sure you want to delete all sights?" msgstr "すべてのサイトを削除してもよろしいですか。" -#: src/CelestialNavigationDialog.cpp:510 +#: src\CelestialNavigationDialog-2.3.5.1-no-android.cpp:582 +#: src\CelestialNavigationDialog-2.3.5.2-android.cpp:588 +#: src\CelestialNavigationDialog-partial-android.cpp:582 +#: src\CelestialNavigationDialog.cpp:588 msgid "Celestial_Navigation_Information.html" msgstr "Celestial_Navigation_Information.html" -#: src/CelestialNavigationDialog.cpp:516 -msgid "Show" -msgstr "表示する" - -#: src/CelestialNavigationDialog.cpp:516 src/CelestialNavigationUI.cpp:58 +#: src\CelestialNavigationDialog-2.3.5.1-no-android.cpp:589 +#: src\CelestialNavigationDialog-2.3.5.2-android.cpp:595 +#: src\CelestialNavigationDialog-partial-android.cpp:589 +#: src\CelestialNavigationDialog.cpp:595 src\CelestialNavigationUI.cpp:55 msgid "Hide" msgstr "隠す" -#: src/CelestialNavigationUI.cpp:40 +#: src\CelestialNavigationDialog-2.3.5.1-no-android.cpp:589 +#: src\CelestialNavigationDialog-2.3.5.2-android.cpp:595 +#: src\CelestialNavigationDialog-partial-android.cpp:589 +#: src\CelestialNavigationDialog.cpp:595 +msgid "Show" +msgstr "表示する" + +#: src\CelestialNavigationUI.cpp:40 msgid "New" msgstr "新規" -#: src/CelestialNavigationUI.cpp:43 -msgid "Edit" -msgstr "編集" - -#: src/CelestialNavigationUI.cpp:46 -msgid "Delete" -msgstr "削除" - -#: src/CelestialNavigationUI.cpp:49 -msgid "Delete All" -msgstr "すべて削除" - -#: src/CelestialNavigationUI.cpp:52 src/CelestialNavigationUI.h:281 +#: src\CelestialNavigationUI.cpp:43 src\CelestialNavigationUI.h:286 msgid "Fix" msgstr "修正" -#: src/CelestialNavigationUI.cpp:55 +#: src\CelestialNavigationUI.cpp:46 +msgid "Duplicate" +msgstr "" + +#: src\CelestialNavigationUI.cpp:49 msgid "Clock Offset" msgstr "クロック オフセット" -#: src/CelestialNavigationUI.cpp:61 +#: src\CelestialNavigationUI.cpp:52 +msgid "Edit" +msgstr "編集" + +#: src\CelestialNavigationUI.cpp:58 +msgid "Delete" +msgstr "削除" + +#: src\CelestialNavigationUI.cpp:61 msgid "Information" msgstr "情報" -#: src/CelestialNavigationUI.cpp:136 src/CelestialNavigationUI.cpp:667 -#: src/Sight.h:49 +#: src\CelestialNavigationUI.cpp:64 +msgid "Delete All" +msgstr "すべて削除" + +#: src\CelestialNavigationUI.cpp:141 src\CelestialNavigationUI.cpp:674 +#: src\Sight.h:49 msgid "Altitude" msgstr "高度" -#: src/CelestialNavigationUI.cpp:136 src/CelestialNavigationUI.cpp:677 -#: src/Sight.h:49 +#: src\CelestialNavigationUI.cpp:141 src\CelestialNavigationUI.cpp:683 +#: src\Sight.h:49 msgid "Azimuth" msgstr "方位角" -#: src/CelestialNavigationUI.cpp:136 src/Sight.h:49 +#: src\CelestialNavigationUI.cpp:141 src\Sight.h:49 msgid "Lunar" msgstr "月の" -#: src/CelestialNavigationUI.cpp:142 +#: src\CelestialNavigationUI.cpp:147 msgid "Magnetic Azimuth" msgstr "磁気方位" -#: src/CelestialNavigationUI.cpp:145 +#: src\CelestialNavigationUI.cpp:150 msgid "Celestial Body" msgstr "天体" -#: src/CelestialNavigationUI.cpp:154 +#: src\CelestialNavigationUI.cpp:159 msgid "Find" msgstr "検索" -#: src/CelestialNavigationUI.cpp:157 +#: src\CelestialNavigationUI.cpp:162 msgid "Limb" msgstr "Limb" -#: src/CelestialNavigationUI.cpp:161 -msgid "Lower" -msgstr "下方" - -#: src/CelestialNavigationUI.cpp:161 +#: src\CelestialNavigationUI.cpp:166 msgid "Center" msgstr "中心" -#: src/CelestialNavigationUI.cpp:161 +#: src\CelestialNavigationUI.cpp:166 +msgid "Lower" +msgstr "下方" + +#: src\CelestialNavigationUI.cpp:166 msgid "Upper" msgstr "上方" -#: src/CelestialNavigationUI.cpp:186 src/CelestialNavigationUI.cpp:193 -#: src/CelestialNavigationUI.cpp:223 src/CelestialNavigationUI.cpp:230 +#: src\CelestialNavigationUI.cpp:191 src\CelestialNavigationUI.cpp:198 +#: src\CelestialNavigationUI.cpp:228 src\CelestialNavigationUI.cpp:235 msgid "0" msgstr "0" -#: src/CelestialNavigationUI.cpp:189 src/CelestialNavigationUI.cpp:348 -#: src/CelestialNavigationUI.cpp:598 +#: src\CelestialNavigationUI.cpp:194 src\CelestialNavigationUI.cpp:353 +#: src\CelestialNavigationUI.cpp:605 msgid "Degrees" msgstr "度" -#: src/CelestialNavigationUI.cpp:196 src/CelestialNavigationUI.cpp:278 -#: src/CelestialNavigationUI.cpp:439 +#: src\CelestialNavigationUI.cpp:201 src\CelestialNavigationUI.cpp:283 +#: src\CelestialNavigationUI.cpp:444 msgid "Minutes" msgstr "分" -#: src/CelestialNavigationUI.cpp:200 +#: src\CelestialNavigationUI.cpp:205 msgid "10" msgstr "10" -#: src/CelestialNavigationUI.cpp:203 +#: src\CelestialNavigationUI.cpp:208 msgid "Minutes Certainty" msgstr "分の確実性" -#: src/CelestialNavigationUI.cpp:217 +#: src\CelestialNavigationUI.cpp:222 msgid "Lunar Altitude" msgstr "月の高度" -#: src/CelestialNavigationUI.cpp:226 +#: src\CelestialNavigationUI.cpp:231 msgid "Body Altitude" msgstr "ボディ高度" -#: src/CelestialNavigationUI.cpp:243 +#: src\CelestialNavigationUI.cpp:248 msgid "Sight" msgstr "サイト" -#: src/CelestialNavigationUI.cpp:271 +#: src\CelestialNavigationUI.cpp:276 msgid "Hours" msgstr "時間" -#: src/CelestialNavigationUI.cpp:285 src/CelestialNavigationUI.cpp:303 -#: src/CelestialNavigationUI.cpp:860 +#: src\CelestialNavigationUI.cpp:290 src\CelestialNavigationUI.cpp:308 +#: src\CelestialNavigationUI.cpp:869 msgid "Seconds" msgstr "秒" -#: src/CelestialNavigationUI.cpp:293 +#: src\CelestialNavigationUI.cpp:298 msgid "Certainty" msgstr "確実性" -#: src/CelestialNavigationUI.cpp:323 -msgid "Time" -msgstr "時間" - -#: src/CelestialNavigationUI.cpp:330 src/CelestialNavigationUI.cpp:580 +#: src\CelestialNavigationUI.cpp:335 src\CelestialNavigationUI.cpp:587 msgid "Distance" msgstr "距離" -#: src/CelestialNavigationUI.cpp:337 src/CelestialNavigationUI.cpp:587 +#: src\CelestialNavigationUI.cpp:342 src\CelestialNavigationUI.cpp:594 msgid "Nm" msgstr "海里" -#: src/CelestialNavigationUI.cpp:341 src/CelestialNavigationUI.cpp:591 +#: src\CelestialNavigationUI.cpp:346 src\CelestialNavigationUI.cpp:598 msgid "Bearing" msgstr "方位" -#: src/CelestialNavigationUI.cpp:352 src/CelestialNavigationUI.cpp:602 +#: src\CelestialNavigationUI.cpp:357 src\CelestialNavigationUI.cpp:609 msgid "Magnetic Bearing" msgstr "磁気方位" -#: src/CelestialNavigationUI.cpp:359 +#: src\CelestialNavigationUI.cpp:364 msgid "DR Shift" msgstr "DR シフト" -#: src/CelestialNavigationUI.cpp:366 +#: src\CelestialNavigationUI.cpp:371 msgid "Transparency" msgstr "透明度" -#: src/CelestialNavigationUI.cpp:387 +#: src\CelestialNavigationUI.cpp:392 msgid "Config" msgstr "設定" -#: src/CelestialNavigationUI.cpp:399 +#: src\CelestialNavigationUI.cpp:404 msgid "Eye Height" msgstr "目の高さ" -#: src/CelestialNavigationUI.cpp:403 +#: src\CelestialNavigationUI.cpp:408 msgid "2" msgstr "2" -#: src/CelestialNavigationUI.cpp:406 +#: src\CelestialNavigationUI.cpp:411 msgid "Meters" msgstr "メートル" -#: src/CelestialNavigationUI.cpp:410 +#: src\CelestialNavigationUI.cpp:415 msgid "Temperature" msgstr "温度" -#: src/CelestialNavigationUI.cpp:417 +#: src\CelestialNavigationUI.cpp:422 msgid "Celcius" msgstr "摂氏" -#: src/CelestialNavigationUI.cpp:421 +#: src\CelestialNavigationUI.cpp:426 msgid "Pressure" msgstr "圧力" -#: src/CelestialNavigationUI.cpp:428 +#: src\CelestialNavigationUI.cpp:433 msgid "MilliBars" msgstr "ミリバール" -#: src/CelestialNavigationUI.cpp:432 +#: src\CelestialNavigationUI.cpp:437 msgid "Index Error" msgstr "インデックス エラー" -#: src/CelestialNavigationUI.cpp:446 +#: src\CelestialNavigationUI.cpp:451 msgid "Set As Defaults" msgstr "デフォルトとして設定" -#: src/CelestialNavigationUI.cpp:453 +#: src\CelestialNavigationUI.cpp:458 msgid "Parameters" msgstr "パラメータ" -#: src/CelestialNavigationUI.cpp:469 +#: src\CelestialNavigationUI.cpp:474 msgid "Calculations" msgstr "計算" -#: src/CelestialNavigationUI.cpp:571 +#: src\CelestialNavigationUI.cpp:578 msgid "Shift all visible Sights" msgstr "すべての表示されているサイトをシフトします。" -#: src/CelestialNavigationUI.cpp:649 src/CelestialNavigationUI.cpp:760 +#: src\CelestialNavigationUI.cpp:656 src\CelestialNavigationUI.cpp:769 msgid "Latitude" msgstr "緯度" -#: src/CelestialNavigationUI.cpp:658 src/CelestialNavigationUI.cpp:768 +#: src\CelestialNavigationUI.cpp:665 src\CelestialNavigationUI.cpp:777 msgid "Longitude" msgstr "経度" -#: src/CelestialNavigationUI.cpp:669 src/CelestialNavigationUI.cpp:679 -msgid "MyLabel" -msgstr "マイラベル" - -#: src/CelestialNavigationUI.cpp:686 -msgid "Done" -msgstr "完了" +#: src\CelestialNavigationUI.cpp:691 +msgid "Boat Position" +msgstr "" -#: src/CelestialNavigationUI.cpp:689 +#: src\CelestialNavigationUI.cpp:695 msgid "Magnetic" msgstr "磁気" -#: src/CelestialNavigationUI.cpp:753 +#: src\CelestialNavigationUI.cpp:698 +msgid "Done" +msgstr "完了" + +#: src\CelestialNavigationUI.cpp:762 msgid "Fix From Visible Sights" msgstr "可視サイトから修正します。" -#: src/CelestialNavigationUI.cpp:764 +#: src\CelestialNavigationUI.cpp:773 msgid " N/A " msgstr " なし " -#: src/CelestialNavigationUI.cpp:772 +#: src\CelestialNavigationUI.cpp:781 msgid " N/A " msgstr " なし " -#: src/CelestialNavigationUI.cpp:776 +#: src\CelestialNavigationUI.cpp:785 msgid "Error" msgstr "エラー" -#: src/CelestialNavigationUI.cpp:780 +#: src\CelestialNavigationUI.cpp:789 msgid " N/A " msgstr " なし " -#: src/CelestialNavigationUI.cpp:787 src/CelestialNavigationUI.cpp:794 +#: src\CelestialNavigationUI.cpp:796 src\CelestialNavigationUI.cpp:803 msgid "Initial" msgstr "初期" -#: src/CelestialNavigationUI.cpp:801 +#: src\CelestialNavigationUI.cpp:810 msgid "Alg" msgstr "" -#: src/CelestialNavigationUI.cpp:806 +#: src\CelestialNavigationUI.cpp:815 msgid "Plane" msgstr "平面" -#: src/CelestialNavigationUI.cpp:807 +#: src\CelestialNavigationUI.cpp:816 msgid "Sphere" msgstr "球" -#: src/CelestialNavigationUI.cpp:808 +#: src\CelestialNavigationUI.cpp:817 msgid "Cone" msgstr "コーン" -#: src/CelestialNavigationUI.cpp:809 +#: src\CelestialNavigationUI.cpp:818 msgid "Cone 2" msgstr "コーン 2" -#: src/CelestialNavigationUI.cpp:813 +#: src\CelestialNavigationUI.cpp:822 msgid "Go" msgstr "実行" -#: src/CelestialNavigationUI.cpp:850 src/CelestialNavigationUI.h:303 +#: src\CelestialNavigationUI.cpp:859 src\CelestialNavigationUI.h:308 msgid "Clock Correction" msgstr "時計補正" -#: src/CelestialNavigationUI.h:78 +#: src\CelestialNavigationUI.h:82 msgid "Celestial Navigation Sights" msgstr "天測航法のサイト" -#: src/CelestialNavigationUI.h:169 +#: src\CelestialNavigationUI.h:173 msgid "Sight Properties" msgstr "サイトプロパティ" -#: src/CelestialNavigationUI.h:200 +#: src\CelestialNavigationUI.h:204 msgid "Dead Reckoning shift" msgstr "推測航法シフト" -#: src/CelestialNavigationUI.h:227 +#: src\CelestialNavigationUI.h:232 msgid "Find Celestial Body" msgstr "天体を検索します。" -#: src/Sight.cpp:160 +#: src\FixDialog.cpp:192 +msgid "Shifted sights are not used to compute a fix, determine fix visually instead.\n" +msgstr "" + +#: src\FixDialog.cpp:193 +msgid "Fix Position" +msgstr "位置を修正" + +#: src\FixDialog.cpp:338 src\FixDialog.cpp:339 src\FixDialog.cpp:340 +msgid " N/A " +msgstr " なし " + +#: src\Sight.cpp:172 src\Sight.cpp.bak:173 msgid "Astrolab failed, data unavailable:\n" msgstr "Astrolab に失敗しました、データは利用できません: \n" -#: src/Sight.cpp:161 +#: src\Sight.cpp:173 src\Sight.cpp.bak:174 msgid "\n" "Did you forget to install vsop87d.txt?\n" msgstr "\n" "vsop87d.txtをインストールするのを忘れましたか?\n" -#: src/Sight.cpp:162 +#: src\Sight.cpp:174 src\Sight.cpp.bak:175 msgid "The plugin will not work correctly" msgstr "プラグインは正常に動作しません" -#: src/Sight.cpp:163 +#: src\Sight.cpp:175 src\Sight.cpp.bak:176 msgid "Failure Alert" msgstr "故障警報" -#: src/Sight.cpp:474 +#: src\Sight.cpp:495 src\Sight.cpp.bak:496 #, c-format msgid "Applying clock correction of %d seconds\n\n" msgstr "%d 秒 のクロック補正を適用します。\n\n" -#: src/Sight.cpp:536 +#: src\Sight.cpp:557 src\Sight.cpp.bak:558 msgid "Almanac Data For " msgstr "" -#: src/Sight.cpp:537 +#: src\Sight.cpp:558 src\Sight.cpp.bak:559 #, c-format msgid "\n" "Geographical Position (lat, lon) = %.4f %.4f\n" @@ -409,34 +473,52 @@ msgid "\n" "Dec = %c %.0f %.1f'\n" "SD = %.1f'\n" "HP = %.1f'\n\n" -msgstr "" +msgstr "\n" +"位置 (緯度, 経度) = %.4f %.4f\n" +"グリニッジ時角AST = %.0f %.1f'\n" +"船時角 = %.0f %.1f'\n" +"グリニッジ時角 = %.0f %.1f'\n" +"Dec = %c %.0f %.1f'\n" +"SD = %.1f'\n" +"HP = %.1f'\n\n" -#: src/Sight.cpp:552 src/Sight.cpp:690 +#: src\Sight.cpp:573 src\Sight.cpp:711 src\Sight.cpp.bak:574 +#: src\Sight.cpp.bak:712 msgid "Formulas used to calculate sight\n\n" msgstr "サイト の計算に使用する数式\n\n" -#: src/Sight.cpp:556 src/Sight.cpp:694 +#: src\Sight.cpp:577 src\Sight.cpp:715 src\Sight.cpp.bak:578 +#: src\Sight.cpp.bak:716 #, c-format msgid "Index Error is %.4f degrees\n\n" -msgstr "" +msgstr "インデックスエラーは%.4f °\n\n" -#: src/Sight.cpp:561 src/Sight.cpp:699 +#: src\Sight.cpp:582 src\Sight.cpp:720 src\Sight.cpp.bak:583 +#: src\Sight.cpp.bak:721 #, c-format msgid "Eye Height is %.4f meters\n" "Height Correction Degrees = 1.758*sqrt(%.4f) / 60.0\n" "Height Correction Degrees = %.4f\n" -msgstr "" +msgstr "眼高は %.4f m\n" +"眼高修正 Degrees = 1.758*sqrt(%.4f) / 60.0\n" +"眼高修正Degrees = %.4f\n" -#: src/Sight.cpp:568 +#: src\Sight.cpp:589 src\Sight.cpp:799 src\Sight.cpp.bak:590 +#: src\Sight.cpp.bak:800 #, c-format msgid "\n" "Apparent Altitude (Ha)\n" "ApparentAltitude = Measurement - IndexCorrection - EyeHeightCorrection\n" "ApparentAltitude = %.4f - %.4f - %.4f\n" "ApparentAltitude = %.4f\n" -msgstr "" +msgstr "\n" +"実高度(Ha)\n" +"実高度 = 計測高度 - 器差 - 眼高修正値\n" +"実高度 = %.4f - %.4f - %.4f\n" +"実高度 = %.4f\n" -#: src/Sight.cpp:586 src/Sight.cpp:789 +#: src\Sight.cpp:607 src\Sight.cpp:810 src\Sight.cpp.bak:608 +#: src\Sight.cpp.bak:811 #, c-format msgid "\n" "Refraction Correction\n" @@ -445,14 +527,16 @@ msgid "\n" "x = %.4f\n" msgstr "" -#: src/Sight.cpp:591 src/Sight.cpp:794 +#: src\Sight.cpp:612 src\Sight.cpp:815 src\Sight.cpp.bak:613 +#: src\Sight.cpp.bak:816 #, c-format msgid "RefractionCorrection = .267 * Pressure / (x*(Temperature + 273.15)) / 60.0\n" "RefractionCorrection = .267 * %.4f / (x*(%.4f + 273.15)) / 60.0\n" "RefractionCorrection = %.4f\n" msgstr "" -#: src/Sight.cpp:606 src/Sight.cpp:808 +#: src\Sight.cpp:627 src\Sight.cpp:829 src\Sight.cpp.bak:628 +#: src\Sight.cpp.bak:830 #, c-format msgid "\n" "Sun selected, Limb Correction\n" @@ -461,7 +545,8 @@ msgstr "\n" "太陽を選択、limb 補正\n" "ra = %.4f, lc = 0.266564/ra = %.4f\n" -#: src/Sight.cpp:616 src/Sight.cpp:732 +#: src\Sight.cpp:637 src\Sight.cpp:753 src\Sight.cpp.bak:638 +#: src\Sight.cpp.bak:754 #, c-format msgid "\n" "Moon selected, Limb Correction\n" @@ -474,22 +559,26 @@ msgstr "\n" "lc = 180/Pi * asin(Pi/180*SD)\n" "lc = %.4f\n" -#: src/Sight.cpp:626 src/Sight.cpp:741 src/Sight.cpp:816 +#: src\Sight.cpp:647 src\Sight.cpp:762 src\Sight.cpp:837 src\Sight.cpp.bak:648 +#: src\Sight.cpp.bak:763 src\Sight.cpp.bak:838 msgid "Upper Limb" msgstr "Upper Limb" -#: src/Sight.cpp:629 src/Sight.cpp:744 src/Sight.cpp:819 +#: src\Sight.cpp:650 src\Sight.cpp:765 src\Sight.cpp:840 src\Sight.cpp.bak:651 +#: src\Sight.cpp.bak:766 src\Sight.cpp.bak:841 msgid "Lower Limb" msgstr "Lower Limb" -#: src/Sight.cpp:632 src/Sight.cpp:822 +#: src\Sight.cpp:653 src\Sight.cpp:843 src\Sight.cpp.bak:654 +#: src\Sight.cpp.bak:844 #, c-format msgid "\n" "LimbCorrection = %.4f\n" msgstr "\n" "Limb補正 = %.4f\n" -#: src/Sight.cpp:636 src/Sight.cpp:826 +#: src\Sight.cpp:657 src\Sight.cpp:847 src\Sight.cpp.bak:658 +#: src\Sight.cpp.bak:848 #, c-format msgid "\n" "Corrected Altitude\n" @@ -502,28 +591,31 @@ msgstr "\n" "補正後の高度=%.4f - %.4f - %.4f\n" "補正後の高度=%.4f\n" -#: src/Sight.cpp:650 src/Sight.cpp:840 +#: src\Sight.cpp:671 src\Sight.cpp:861 src\Sight.cpp.bak:672 +#: src\Sight.cpp.bak:862 #, c-format msgid "\n" "Sun selected, parallax correction\n" "rad = %.4f, HP = 0.002442/rad = %.4f\n" msgstr "" -#: src/Sight.cpp:659 src/Sight.cpp:764 +#: src\Sight.cpp:680 src\Sight.cpp:785 src\Sight.cpp.bak:681 +#: src\Sight.cpp.bak:786 #, c-format msgid "\n" "Moon selected, parallax correction\n" "HP = %.4f\n" msgstr "" -#: src/Sight.cpp:665 src/Sight.cpp:846 +#: src\Sight.cpp:686 src\Sight.cpp:867 src\Sight.cpp.bak:687 +#: src\Sight.cpp.bak:868 #, c-format msgid "ParallaxCorrection = -180/Pi * asin( sin(Pi/180 * HP ) * cos(Pi/180 * CorrectedAltitude))\n" "ParallaxCorrection = -180/Pi * asin( sin(Pi/180 * %.4f ) * cos(Pi/180 * %.4f))\n" "ParallaxCorrection = %.4f\n" msgstr "" -#: src/Sight.cpp:672 +#: src\Sight.cpp:693 src\Sight.cpp.bak:694 #, c-format msgid "\n" "Observed Altitude (Ho)\n" @@ -532,16 +624,16 @@ msgid "\n" "ObservedAltitude = %.4f\n" msgstr "" -#: src/Sight.cpp:706 +#: src\Sight.cpp:727 src\Sight.cpp.bak:728 #, c-format msgid "\n" "Apparent Moon Altitude (Ha)\n" "ApparentAltitudeMoon = MeasurementMoon - IndexCorrection - EyeHeightCorrection\n" -" ApparentAltitudeMoon = %.4f - %.4f - %.4f\n" +"ApparentAltitudeMoon = %.4f - %.4f - %.4f\n" "ApparentAltitudeMoon = %.4f\n" msgstr "" -#: src/Sight.cpp:717 +#: src\Sight.cpp:738 src\Sight.cpp.bak:739 #, c-format msgid "\n" "Refraction Correction\n" @@ -550,21 +642,22 @@ msgid "\n" "x = %.4f\n" msgstr "" -#: src/Sight.cpp:722 +#: src\Sight.cpp:743 src\Sight.cpp.bak:744 #, c-format msgid "RefractionCorrectionMoon = .267 * Pressure / (x*(Temperature + 273.15)) / 60.0\n" "RefractionCorrectionMoon = .267 * %.4f / (x*(%.4f + 273.15)) / 60.0\n" "RefractionCorrectionMoon = %.4f\n" msgstr "" -#: src/Sight.cpp:747 src/Sight.cpp:750 +#: src\Sight.cpp:768 src\Sight.cpp:771 src\Sight.cpp.bak:769 +#: src\Sight.cpp.bak:772 #, c-format msgid "\n" "LimbCorrectionMoon = %.4f\n" msgstr "\n" "月の Limb 補正 = %.4f\n" -#: src/Sight.cpp:753 +#: src\Sight.cpp:774 src\Sight.cpp.bak:775 #, c-format msgid "\n" "Corrected Altitude\n" @@ -577,112 +670,86 @@ msgstr "\n" "補正後の月高度=%.4f - %.4f - %.4f\n" "補正後の月高度=%.4f\n" -#: src/Sight.cpp:768 +#: src\Sight.cpp:789 src\Sight.cpp.bak:790 #, c-format msgid "ParallaxCorrectionMoon = -180/Pi * asin( sin(Pi/180 * HP ) * cos(Pi/180 * CorrectedAltitude))\n" -" ParallaxCorrectionMoon = -180/Pi * asin( sin(Pi/180 * %.4f ) * cos(Pi/180 * %.4f))\n" +"ParallaxCorrectionMoon = -180/Pi * asin( sin(Pi/180 * %.4f ) * cos(Pi/180 * %.4f))\n" "ParallaxCorrectionMoon = %.4f\n" msgstr "" -#: src/Sight.cpp:778 -#, c-format -msgid "\n" -"Apparent Altitude (Ha)\n" -"ApparentAltitude = Measurement - IndexCorrection - EyeHeightCorrection\n" -" ApparentAltitude = %.4f - %.4f - %.4f\n" -"ApparentAltitude = %.4f\n" -msgstr "" - -#: src/Sight.cpp:857 +#: src\Sight.cpp:878 src\Sight.cpp.bak:879 #, c-format msgid "CorrectionsMoon = %.4f\n" "CorrectionsBody = %.4f\n" "Corrections = abs(CorrectionsMoon - CorrectionsBody) = %.4f\n" msgstr "" -#: src/Sight.cpp:863 +#: src\Sight.cpp:884 src\Sight.cpp.bak:885 #, c-format msgid "CorrectedMeasurement = Measurement - Corrections - IndexCorrection\n" "CorrectedMeasurement = %.4f - %.4f - %.4f\n" "CorrectedMeasurement = %.4f\n" msgstr "" -#: src/Sight.cpp:888 +#: src\Sight.cpp:909 src\Sight.cpp.bak:910 msgid "\n" "Calculated angle between Moon and " msgstr "\n" "月との角度を計算 " -#: src/Sight.cpp:890 +#: src\Sight.cpp:911 src\Sight.cpp.bak:912 #, c-format msgid "\n" "Error from measurement: %.4f" msgstr "\n" "測定からの誤差: %.4f" -#: src/Sight.cpp:894 +#: src\Sight.cpp:915 src\Sight.cpp.bak:916 msgid "\n" "Moon takes 28 days to orbit, one degree of error takes 6720 seconds" msgstr "\n" "月は28 日で公転するので、1度の誤差は 6720 秒になります" -#: src/Sight.cpp:895 +#: src\Sight.cpp:916 src\Sight.cpp.bak:917 #, c-format msgid "\n" "Time correction %.4f seconds" msgstr "\n" "時刻補正 %.4f 秒" -#: src/Sight.cpp:1099 +#: src\Sight.cpp:1120 src\Sight.cpp.bak:1121 msgid "Building bearing Sight Positions" msgstr "サイト方位構築" -#: src/SightDialog.cpp:172 +#: src\SightDialog.cpp:184 msgid "Measurement certainty likely set to small, sight may not appear " msgstr "" -#: src/SightDialog.cpp:173 src/SightDialog.cpp:256 +#: src\SightDialog.cpp:185 src\SightDialog.cpp:279 msgid "Warning" msgstr "警告" -#: src/SightDialog.cpp:255 +#: src\SightDialog.cpp:278 msgid "Lunar shot will be invalid taking distance from moon to itself" msgstr "" -#: src/celestial_navigation_pi.cpp:90 -msgid "Failed to load file:\n" -msgstr "ファイルの読み込みに失敗しました:\n" - -#: src/celestial_navigation_pi.cpp:91 -msgid "\n" -"Magnetic data will not be available for the celestial navigation plugin." -msgstr "\n" -"磁気データは、天体ナビゲーションプラグインには使用できません。" - -#: src/celestial_navigation_pi.cpp:92 -msgid "OpenCPN Alert" -msgstr "OpenCPN 警告" - -#: src/celestial_navigation_pi.cpp:157 -msgid "Celestial Navigation PlugIn for OpenCPN" -msgstr "OpenCPN用 天測航法プラグイン" +#: src\celestial_navigation_pi.cpp:179 +msgid "open error" +msgstr "" -#: src/celestial_navigation_pi.cpp:162 -msgid "Celestial Navigation PlugIn for OpenCPN.\n" -"Implements nautical almanac for sun, moon, planets,\n" -"and various navigational stars.\n" -"Compute position fix from celestial measurements." +#: src\celestial_navigation_pi.cpp:180 +msgid "corrupt record" msgstr "" -#: src/FixDialog.cpp:189 -msgid "Shifted sights are not used to compute a fix, determine fix visually instead.\n" +#: src\celestial_navigation_pi.cpp:181 +msgid "too many models" msgstr "" -#: src/FixDialog.cpp:190 -msgid "Fix Position" -msgstr "位置を修正" +#: src\celestial_navigation_pi.cpp:184 +msgid "Magnetic data will not be available for the celestial navigation plugin." +msgstr "" -#: src/FixDialog.cpp:335 src/FixDialog.cpp:336 src/FixDialog.cpp:337 -msgid " N/A " -msgstr " なし " +#: src\celestial_navigation_pi.cpp:185 +msgid "OpenCPN Alert" +msgstr "OpenCPN 警告" diff --git a/po/ko_KR.po b/po/ko_KR.po new file mode 100644 index 0000000..6145ba0 --- /dev/null +++ b/po/ko_KR.po @@ -0,0 +1,786 @@ +msgid "" +msgstr "" +"Project-Id-Version: opencpn\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2021-10-27 22:15+0200\n" +"PO-Revision-Date: 2023-10-04 18:33\n" +"Last-Translator: \n" +"Language-Team: Korean\n" +"Language: ko_KR\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=1; plural=0;\n" +"X-Crowdin-Project: opencpn\n" +"X-Crowdin-Project-ID: 49843\n" +"X-Crowdin-Language: ko\n" +"X-Crowdin-File: /plugins/celestial_navigation_pi/po/celestial_navigation_pi.pot\n" +"X-Crowdin-File-ID: 108\n" + +#: src\CelestialNavigationDialog-2.3.5.1-no-android.cpp:149 +#: src\CelestialNavigationDialog-2.3.5.2-android.cpp:150 +#: src\CelestialNavigationDialog-partial-android.cpp:149 +#: src\CelestialNavigationDialog.cpp:150 src\CelestialNavigationUI.cpp:137 +msgid "Type" +msgstr "유형" + +#: src\CelestialNavigationDialog-2.3.5.1-no-android.cpp:150 +#: src\CelestialNavigationDialog-2.3.5.2-android.cpp:151 +#: src\CelestialNavigationDialog-partial-android.cpp:150 +#: src\CelestialNavigationDialog.cpp:151 +msgid "Body" +msgstr "천체" + +#: src\CelestialNavigationDialog-2.3.5.1-no-android.cpp:151 +#: src\CelestialNavigationDialog-2.3.5.2-android.cpp:152 +#: src\CelestialNavigationDialog-partial-android.cpp:151 +#: src\CelestialNavigationDialog.cpp:152 src\CelestialNavigationUI.cpp:328 +msgid "Time (UT)" +msgstr "세계시 (UT)" + +#: src\CelestialNavigationDialog-2.3.5.1-no-android.cpp:152 +#: src\CelestialNavigationDialog-2.3.5.2-android.cpp:153 +#: src\CelestialNavigationDialog-partial-android.cpp:152 +#: src\CelestialNavigationDialog.cpp:153 src\CelestialNavigationUI.cpp:184 +msgid "Measurement" +msgstr "측정" + +#: src\CelestialNavigationDialog-2.3.5.1-no-android.cpp:153 +#: src\CelestialNavigationDialog-2.3.5.2-android.cpp:154 +#: src\CelestialNavigationDialog-partial-android.cpp:153 +#: src\CelestialNavigationDialog.cpp:154 src\CelestialNavigationUI.cpp:381 +msgid "Color" +msgstr "색상" + +#: src\CelestialNavigationDialog-2.3.5.1-no-android.cpp:266 +#: src\CelestialNavigationDialog-2.3.5.2-android.cpp:272 +#: src\CelestialNavigationDialog-partial-android.cpp:266 +#: src\CelestialNavigationDialog.cpp:272 src\celestial_navigation_pi.cpp:177 +msgid "Failed to load file: " +msgstr "파일 불러오기 실패" + +#: src\CelestialNavigationDialog-2.3.5.1-no-android.cpp:271 +#: src\CelestialNavigationDialog-2.3.5.2-android.cpp:277 +#: src\CelestialNavigationDialog-partial-android.cpp:271 +#: src\CelestialNavigationDialog.cpp:277 +msgid "Invalid xml file" +msgstr "잘못된 XML 파일" + +#: src\CelestialNavigationDialog-2.3.5.1-no-android.cpp:323 +#: src\CelestialNavigationDialog-2.3.5.2-android.cpp:329 +#: src\CelestialNavigationDialog-partial-android.cpp:323 +#: src\CelestialNavigationDialog.cpp:329 +msgid "Unrecognized xml node" +msgstr "인식할 수 없는 xml 노드" + +#: src\CelestialNavigationDialog-2.3.5.1-no-android.cpp:332 +#: src\CelestialNavigationDialog-2.3.5.1-no-android.cpp:392 +#: src\CelestialNavigationDialog-2.3.5.1-no-android.cpp:532 +#: src\CelestialNavigationDialog-2.3.5.2-android.cpp:338 +#: src\CelestialNavigationDialog-2.3.5.2-android.cpp:398 +#: src\CelestialNavigationDialog-2.3.5.2-android.cpp:538 +#: src\CelestialNavigationDialog-partial-android.cpp:332 +#: src\CelestialNavigationDialog-partial-android.cpp:392 +#: src\CelestialNavigationDialog-partial-android.cpp:532 +#: src\CelestialNavigationDialog.cpp:338 src\CelestialNavigationDialog.cpp:398 +#: src\CelestialNavigationDialog.cpp:538 src\Sight.cpp:1120 +#: src\Sight.cpp.bak:1121 src\celestial_navigation_pi.cpp:95 +#: src\celestial_navigation_pi.cpp:99 +msgid "Celestial Navigation" +msgstr "천체 항법" + +#: src\CelestialNavigationDialog-2.3.5.1-no-android.cpp:391 +#: src\CelestialNavigationDialog-2.3.5.2-android.cpp:397 +#: src\CelestialNavigationDialog-partial-android.cpp:391 +#: src\CelestialNavigationDialog.cpp:397 +msgid "Failed to save xml file: " +msgstr "xml 파일 저장 실패:" + +#: src\CelestialNavigationDialog-2.3.5.1-no-android.cpp:424 +#: src\CelestialNavigationDialog-2.3.5.2-android.cpp:430 +#: src\CelestialNavigationDialog-partial-android.cpp:424 +#: src\CelestialNavigationDialog.cpp:430 +msgid "Time Correction" +msgstr "시간 수정" + +#: src\CelestialNavigationDialog-2.3.5.1-no-android.cpp:473 +#: src\CelestialNavigationDialog-2.3.5.2-android.cpp:479 +#: src\CelestialNavigationDialog-partial-android.cpp:473 +#: src\CelestialNavigationDialog.cpp:479 +msgid "Sun" +msgstr "태양" + +#: src\CelestialNavigationDialog-2.3.5.1-no-android.cpp:531 +#: src\CelestialNavigationDialog-2.3.5.2-android.cpp:537 +#: src\CelestialNavigationDialog-partial-android.cpp:531 +#: src\CelestialNavigationDialog.cpp:537 +msgid "Are you sure you want to delete all sights?" +msgstr "모든 명소를 삭제하시겠습니까?" + +#: src\CelestialNavigationDialog-2.3.5.1-no-android.cpp:582 +#: src\CelestialNavigationDialog-2.3.5.2-android.cpp:588 +#: src\CelestialNavigationDialog-partial-android.cpp:582 +#: src\CelestialNavigationDialog.cpp:588 +msgid "Celestial_Navigation_Information.html" +msgstr "Celestial_Navigation_Information.html" + +#: src\CelestialNavigationDialog-2.3.5.1-no-android.cpp:589 +#: src\CelestialNavigationDialog-2.3.5.2-android.cpp:595 +#: src\CelestialNavigationDialog-partial-android.cpp:589 +#: src\CelestialNavigationDialog.cpp:595 src\CelestialNavigationUI.cpp:55 +msgid "Hide" +msgstr "숨기기" + +#: src\CelestialNavigationDialog-2.3.5.1-no-android.cpp:589 +#: src\CelestialNavigationDialog-2.3.5.2-android.cpp:595 +#: src\CelestialNavigationDialog-partial-android.cpp:589 +#: src\CelestialNavigationDialog.cpp:595 +msgid "Show" +msgstr "보이기" + +#: src\CelestialNavigationUI.cpp:40 +msgid "New" +msgstr "새 파일" + +#: src\CelestialNavigationUI.cpp:43 src\CelestialNavigationUI.h:286 +msgid "Fix" +msgstr "확정" + +#: src\CelestialNavigationUI.cpp:46 +msgid "Duplicate" +msgstr "복제하기" + +#: src\CelestialNavigationUI.cpp:49 +msgid "Clock Offset" +msgstr "시간 옵셋" + +#: src\CelestialNavigationUI.cpp:52 +msgid "Edit" +msgstr "편집" + +#: src\CelestialNavigationUI.cpp:58 +msgid "Delete" +msgstr "삭제" + +#: src\CelestialNavigationUI.cpp:61 +msgid "Information" +msgstr "정보" + +#: src\CelestialNavigationUI.cpp:64 +msgid "Delete All" +msgstr "모두 삭제" + +#: src\CelestialNavigationUI.cpp:141 src\CelestialNavigationUI.cpp:674 +#: src\Sight.h:49 +msgid "Altitude" +msgstr "고도" + +#: src\CelestialNavigationUI.cpp:141 src\CelestialNavigationUI.cpp:683 +#: src\Sight.h:49 +msgid "Azimuth" +msgstr "방위각" + +#: src\CelestialNavigationUI.cpp:141 src\Sight.h:49 +msgid "Lunar" +msgstr "달" + +#: src\CelestialNavigationUI.cpp:147 +msgid "Magnetic Azimuth" +msgstr "자기 방위각" + +#: src\CelestialNavigationUI.cpp:150 +msgid "Celestial Body" +msgstr "천체" + +#: src\CelestialNavigationUI.cpp:159 +msgid "Find" +msgstr "찾기" + +#: src\CelestialNavigationUI.cpp:162 +msgid "Limb" +msgstr "림" + +#: src\CelestialNavigationUI.cpp:166 +msgid "Center" +msgstr "중앙" + +#: src\CelestialNavigationUI.cpp:166 +msgid "Lower" +msgstr "하단" + +#: src\CelestialNavigationUI.cpp:166 +msgid "Upper" +msgstr "상단" + +#: src\CelestialNavigationUI.cpp:191 src\CelestialNavigationUI.cpp:198 +#: src\CelestialNavigationUI.cpp:228 src\CelestialNavigationUI.cpp:235 +msgid "0" +msgstr "0" + +#: src\CelestialNavigationUI.cpp:194 src\CelestialNavigationUI.cpp:353 +#: src\CelestialNavigationUI.cpp:605 +msgid "Degrees" +msgstr "도" + +#: src\CelestialNavigationUI.cpp:201 src\CelestialNavigationUI.cpp:283 +#: src\CelestialNavigationUI.cpp:444 +msgid "Minutes" +msgstr "분" + +#: src\CelestialNavigationUI.cpp:205 +msgid "10" +msgstr "10" + +#: src\CelestialNavigationUI.cpp:208 +msgid "Minutes Certainty" +msgstr "분 단위 정확도" + +#: src\CelestialNavigationUI.cpp:222 +msgid "Lunar Altitude" +msgstr "달의 고도" + +#: src\CelestialNavigationUI.cpp:231 +msgid "Body Altitude" +msgstr "천체 고도" + +#: src\CelestialNavigationUI.cpp:248 +msgid "Sight" +msgstr "시야" + +#: src\CelestialNavigationUI.cpp:276 +msgid "Hours" +msgstr "시간" + +#: src\CelestialNavigationUI.cpp:290 src\CelestialNavigationUI.cpp:308 +#: src\CelestialNavigationUI.cpp:869 +msgid "Seconds" +msgstr "초" + +#: src\CelestialNavigationUI.cpp:298 +msgid "Certainty" +msgstr "확실성" + +#: src\CelestialNavigationUI.cpp:335 src\CelestialNavigationUI.cpp:587 +msgid "Distance" +msgstr "거리" + +#: src\CelestialNavigationUI.cpp:342 src\CelestialNavigationUI.cpp:594 +msgid "Nm" +msgstr "해리" + +#: src\CelestialNavigationUI.cpp:346 src\CelestialNavigationUI.cpp:598 +msgid "Bearing" +msgstr "방위각" + +#: src\CelestialNavigationUI.cpp:357 src\CelestialNavigationUI.cpp:609 +msgid "Magnetic Bearing" +msgstr "자기 방위각" + +#: src\CelestialNavigationUI.cpp:364 +msgid "DR Shift" +msgstr "추측항법(Dead Reckoning) 변경" + +#: src\CelestialNavigationUI.cpp:371 +msgid "Transparency" +msgstr "투명도" + +#: src\CelestialNavigationUI.cpp:392 +msgid "Config" +msgstr "환경설정" + +#: src\CelestialNavigationUI.cpp:404 +msgid "Eye Height" +msgstr "눈 높이" + +#: src\CelestialNavigationUI.cpp:408 +msgid "2" +msgstr "2" + +#: src\CelestialNavigationUI.cpp:411 +msgid "Meters" +msgstr "미터" + +#: src\CelestialNavigationUI.cpp:415 +msgid "Temperature" +msgstr "온도" + +#: src\CelestialNavigationUI.cpp:422 +msgid "Celcius" +msgstr "섭씨" + +#: src\CelestialNavigationUI.cpp:426 +msgid "Pressure" +msgstr "기압" + +#: src\CelestialNavigationUI.cpp:433 +msgid "MilliBars" +msgstr "밀리바" + +#: src\CelestialNavigationUI.cpp:437 +msgid "Index Error" +msgstr "색인 오류" + +#: src\CelestialNavigationUI.cpp:451 +msgid "Set As Defaults" +msgstr "기본값으로 설정" + +#: src\CelestialNavigationUI.cpp:458 +msgid "Parameters" +msgstr "매개변수" + +#: src\CelestialNavigationUI.cpp:474 +msgid "Calculations" +msgstr "계산" + +#: src\CelestialNavigationUI.cpp:578 +msgid "Shift all visible Sights" +msgstr "보이는 모든 광경 이동" + +#: src\CelestialNavigationUI.cpp:656 src\CelestialNavigationUI.cpp:769 +msgid "Latitude" +msgstr "위도" + +#: src\CelestialNavigationUI.cpp:665 src\CelestialNavigationUI.cpp:777 +msgid "Longitude" +msgstr "경도" + +#: src\CelestialNavigationUI.cpp:691 +msgid "Boat Position" +msgstr "보트 위치" + +#: src\CelestialNavigationUI.cpp:695 +msgid "Magnetic" +msgstr "자기" + +#: src\CelestialNavigationUI.cpp:698 +msgid "Done" +msgstr "완료" + +#: src\CelestialNavigationUI.cpp:762 +msgid "Fix From Visible Sights" +msgstr "눈에 보이는 광경 확정" + +#: src\CelestialNavigationUI.cpp:773 +msgid " N/A " +msgstr "해당없음" + +#: src\CelestialNavigationUI.cpp:781 +msgid " N/A " +msgstr "해당없음" + +#: src\CelestialNavigationUI.cpp:785 +msgid "Error" +msgstr "오류" + +#: src\CelestialNavigationUI.cpp:789 +msgid " N/A " +msgstr "해당없음" + +#: src\CelestialNavigationUI.cpp:796 src\CelestialNavigationUI.cpp:803 +msgid "Initial" +msgstr "머리글자" + +#: src\CelestialNavigationUI.cpp:810 +msgid "Alg" +msgstr "Alg" + +#: src\CelestialNavigationUI.cpp:815 +msgid "Plane" +msgstr "평면" + +#: src\CelestialNavigationUI.cpp:816 +msgid "Sphere" +msgstr "구형" + +#: src\CelestialNavigationUI.cpp:817 +msgid "Cone" +msgstr "원추형" + +#: src\CelestialNavigationUI.cpp:818 +msgid "Cone 2" +msgstr "원추형 2" + +#: src\CelestialNavigationUI.cpp:822 +msgid "Go" +msgstr "이동" + +#: src\CelestialNavigationUI.cpp:859 src\CelestialNavigationUI.h:308 +msgid "Clock Correction" +msgstr "시간 교정" + +#: src\CelestialNavigationUI.h:82 +msgid "Celestial Navigation Sights" +msgstr "천체 항법 가늠장치" + +#: src\CelestialNavigationUI.h:173 +msgid "Sight Properties" +msgstr "가늠자 속성" + +#: src\CelestialNavigationUI.h:204 +msgid "Dead Reckoning shift" +msgstr "추측 항법 이동" + +#: src\CelestialNavigationUI.h:232 +msgid "Find Celestial Body" +msgstr "천체 찿기" + +#: src\FixDialog.cpp:192 +msgid "Shifted sights are not used to compute a fix, determine fix visually instead.\n" +msgstr "이동된 가늠자는 수정 사항을 계산하는 데 사용되지 않으며 대신 시각적으로 수정 사항을 결정합니다.\n" + +#: src\FixDialog.cpp:193 +msgid "Fix Position" +msgstr "위치 확정" + +#: src\FixDialog.cpp:338 src\FixDialog.cpp:339 src\FixDialog.cpp:340 +msgid " N/A " +msgstr "해당 없음" + +#: src\Sight.cpp:172 src\Sight.cpp.bak:173 +msgid "Astrolab failed, data unavailable:\n" +msgstr "Astrolab 실패, 데이터를 사용할 수 없음:\n" + +#: src\Sight.cpp:173 src\Sight.cpp.bak:174 +msgid "\n" +"Did you forget to install vsop87d.txt?\n" +msgstr "\n" +"vsop87d.txt를 설치하는 것을 잊으셨습니까?\n" + +#: src\Sight.cpp:174 src\Sight.cpp.bak:175 +msgid "The plugin will not work correctly" +msgstr "플러그인이 제대로 작동하지 않습니다" + +#: src\Sight.cpp:175 src\Sight.cpp.bak:176 +msgid "Failure Alert" +msgstr "실패 경보" + +#: src\Sight.cpp:495 src\Sight.cpp.bak:496 +#, c-format +msgid "Applying clock correction of %d seconds\n\n" +msgstr "%d초의 시계 수정 적용\n\n" + +#: src\Sight.cpp:557 src\Sight.cpp.bak:558 +msgid "Almanac Data For " +msgstr "위한 연감 데이터" + +#: src\Sight.cpp:558 src\Sight.cpp.bak:559 +#, c-format +msgid "\n" +"Geographical Position (lat, lon) = %.4f %.4f\n" +"GHAAST = %.0f %.1f'\n" +"SHA = %.0f %.1f'\n" +"GHA = %.0f %.1f'\n" +"Dec = %c %.0f %.1f'\n" +"SD = %.1f'\n" +"HP = %.1f'\n\n" +msgstr "\n" +"지리적 위치(위도, 경도) = %.4f %.4f\n" +"GHAAST = %.0f %.1f'\n" +"SHA = %.0f %.1f'\n" +"GHA = %.0f %.1f'\n" +"Dec = %c %.0f %.1f'\n" +"SD = %.1f'\n" +"HP = %.1f'\n\n" + +#: src\Sight.cpp:573 src\Sight.cpp:711 src\Sight.cpp.bak:574 +#: src\Sight.cpp.bak:712 +msgid "Formulas used to calculate sight\n\n" +msgstr "가능자 계산에 사용되는 공식\n\n" + +#: src\Sight.cpp:577 src\Sight.cpp:715 src\Sight.cpp.bak:578 +#: src\Sight.cpp.bak:716 +#, c-format +msgid "Index Error is %.4f degrees\n\n" +msgstr "색인 오류는 %.4f도입니다.\n\n" + +#: src\Sight.cpp:582 src\Sight.cpp:720 src\Sight.cpp.bak:583 +#: src\Sight.cpp.bak:721 +#, c-format +msgid "Eye Height is %.4f meters\n" +"Height Correction Degrees = 1.758*sqrt(%.4f) / 60.0\n" +"Height Correction Degrees = %.4f\n" +msgstr "눈 높이는 %.4f 미터입니다.\n" +"키 보정 정도 = 1.758*sqrt(%.4f) / 60.0\n" +"키 보정 정도 = %.4f\n" + +#: src\Sight.cpp:589 src\Sight.cpp:799 src\Sight.cpp.bak:590 +#: src\Sight.cpp.bak:800 +#, c-format +msgid "\n" +"Apparent Altitude (Ha)\n" +"ApparentAltitude = Measurement - IndexCorrection - EyeHeightCorrection\n" +"ApparentAltitude = %.4f - %.4f - %.4f\n" +"ApparentAltitude = %.4f\n" +msgstr "\n" +"겉보기 고도(Ha)\n" +" 겉보기 고도 = 측정 - IndexCorrection - EyeHeightCorrection\n" +" 겉보기 고도 = %.4f - %.4f - %.4f\n" +" 겉보기 고도 = %.4f\n" + +#: src\Sight.cpp:607 src\Sight.cpp:810 src\Sight.cpp.bak:608 +#: src\Sight.cpp.bak:811 +#, c-format +msgid "\n" +"Refraction Correction\n" +"x = tan(Pi/180*ApparentAltitude + 4.848e-2*(Pi/180) / (tan(Pi/180*ApparentAltitude) + .028))\n" +"x = tan(Pi/180*%.4f + 4.848e-2*(Pi/180) / (tan(Pi/180*%.4f) + .028))\n" +"x = %.4f\n" +msgstr "\n" +"굴절 보정\n" +"x = tan(Pi/180*ApparentAltitude + 4.848e-2*(Pi/180) / (tan(Pi/180*ApparentAltitude) + .028))\n" +"x = tan(Pi/180*%.4f + 4.848e-2*(Pi/180) / (tan(Pi/180*%.4f) + .028))\n" +"x = %.4f\n" + +#: src\Sight.cpp:612 src\Sight.cpp:815 src\Sight.cpp.bak:613 +#: src\Sight.cpp.bak:816 +#, c-format +msgid "RefractionCorrection = .267 * Pressure / (x*(Temperature + 273.15)) / 60.0\n" +"RefractionCorrection = .267 * %.4f / (x*(%.4f + 273.15)) / 60.0\n" +"RefractionCorrection = %.4f\n" +msgstr "굴절 교정 = .267 * 압력 / (x*(온도 + 273.15)) / 60.0\n" +"굴절 교정 = .267 * %.4f / (x*(%.4f + 273.15)) / 60.0\n" +"굴절 교정 = %.4f\n" + +#: src\Sight.cpp:627 src\Sight.cpp:829 src\Sight.cpp.bak:628 +#: src\Sight.cpp.bak:830 +#, c-format +msgid "\n" +"Sun selected, Limb Correction\n" +"ra = %.4f, lc = 0.266564/ra = %.4f\n" +msgstr "\n" +"태양 선택, 가지 교정\n" +"ra = %.4f, lc = 0.266564/ra = %.4f\n" + +#: src\Sight.cpp:637 src\Sight.cpp:753 src\Sight.cpp.bak:638 +#: src\Sight.cpp.bak:754 +#, c-format +msgid "\n" +"Moon selected, Limb Correction\n" +"SD = %.4f\n" +"lc = 180/Pi * asin(Pi/180*SD)\n" +"lc = %.4f\n" +msgstr "\n" +"달 선택, 가지 교정\n" +"SD = %.4f\n" +"lc = 180/Pi * asin(Pi/180*SD)\n" +"lc = %.4f\n" + +#: src\Sight.cpp:647 src\Sight.cpp:762 src\Sight.cpp:837 src\Sight.cpp.bak:648 +#: src\Sight.cpp.bak:763 src\Sight.cpp.bak:838 +msgid "Upper Limb" +msgstr "Upper Limb" + +#: src\Sight.cpp:650 src\Sight.cpp:765 src\Sight.cpp:840 src\Sight.cpp.bak:651 +#: src\Sight.cpp.bak:766 src\Sight.cpp.bak:841 +msgid "Lower Limb" +msgstr "Lower Limb" + +#: src\Sight.cpp:653 src\Sight.cpp:843 src\Sight.cpp.bak:654 +#: src\Sight.cpp.bak:844 +#, c-format +msgid "\n" +"LimbCorrection = %.4f\n" +msgstr "\n" +"림 수정 = %.4f\n" + +#: src\Sight.cpp:657 src\Sight.cpp:847 src\Sight.cpp.bak:658 +#: src\Sight.cpp.bak:848 +#, c-format +msgid "\n" +"Corrected Altitude\n" +"CorrectedAltitude = ApparentAltitude - RefractionCorrection - LimbCorrection\n" +"CorrectedAltitude = %.4f - %.4f - %.4f\n" +"CorrectedAltitude = %.4f\n" +msgstr "\n" +"수정된 고도\n" +"수정된 고도 = 겉보기 고도 - 굴절 수정 - 사지 수정\n" +"수정된 고도 = %.4f - %.4f - %.4f\n" +"수정된 고도 = %.4f\n" + +#: src\Sight.cpp:671 src\Sight.cpp:861 src\Sight.cpp.bak:672 +#: src\Sight.cpp.bak:862 +#, c-format +msgid "\n" +"Sun selected, parallax correction\n" +"rad = %.4f, HP = 0.002442/rad = %.4f\n" +msgstr "\n" +"태양 선택, 시차 보정\n" +"rad = %.4f, HP = 0.002442/rad = %.4f\n" + +#: src\Sight.cpp:680 src\Sight.cpp:785 src\Sight.cpp.bak:681 +#: src\Sight.cpp.bak:786 +#, c-format +msgid "\n" +"Moon selected, parallax correction\n" +"HP = %.4f\n" +msgstr "\n" +"달 선택, 시차 보정\n" +"HP = %.4f\n" + +#: src\Sight.cpp:686 src\Sight.cpp:867 src\Sight.cpp.bak:687 +#: src\Sight.cpp.bak:868 +#, c-format +msgid "ParallaxCorrection = -180/Pi * asin( sin(Pi/180 * HP ) * cos(Pi/180 * CorrectedAltitude))\n" +"ParallaxCorrection = -180/Pi * asin( sin(Pi/180 * %.4f ) * cos(Pi/180 * %.4f))\n" +"ParallaxCorrection = %.4f\n" +msgstr "ParallaxCorrection = -180/Pi * asin( sin(Pi/180 * HP ) * cos(Pi/180 * CorrectedAltitude))\n" +"ParallaxCorrection = -180/Pi * asin( sin(Pi/180 * %.4f ) * cos(Pi/180 * %.4f))\n" +"ParallaxCorrection = %.4f\n" + +#: src\Sight.cpp:693 src\Sight.cpp.bak:694 +#, c-format +msgid "\n" +"Observed Altitude (Ho)\n" +"ObservedAltitude = CorrectedAltitude - ParallaxCorrection\n" +"ObservedAltitude = %.4f - %.4f\n" +"ObservedAltitude = %.4f\n" +msgstr "\n" +"관찰된 고도 (Ho)\n" +"ObservedAltitude = CorrectedAltitude - ParallaxCorrection\n" +"ObservedAltitude = %.4f - %.4f\n" +"ObservedAltitude = %.4f\n" + +#: src\Sight.cpp:727 src\Sight.cpp.bak:728 +#, c-format +msgid "\n" +"Apparent Moon Altitude (Ha)\n" +"ApparentAltitudeMoon = MeasurementMoon - IndexCorrection - EyeHeightCorrection\n" +"ApparentAltitudeMoon = %.4f - %.4f - %.4f\n" +"ApparentAltitudeMoon = %.4f\n" +msgstr "\n" +"겉보기 달 고도 (Ha)\n" +"ApparentAltitudeMoon = MeasurementMoon - IndexCorrection - EyeHeightCorrection\n" +"ApparentAltitudeMoon = %.4f - %.4f - %.4f\n" +"ApparentAltitudeMoon = %.4f\n" + +#: src\Sight.cpp:738 src\Sight.cpp.bak:739 +#, c-format +msgid "\n" +"Refraction Correction\n" +"x = tan(Pi/180*ApparentAltitudeMoon + 4.848e-2*(Pi/180) / (tan(Pi/180*ApparentAltitudeMoon) + .028))\n" +"x = tan(Pi/180*%.4f + 4.848e-2*(Pi/180) / (tan(Pi/180*%.4f) + .028))\n" +"x = %.4f\n" +msgstr "\n" +"굴절 보정\n" +"x = tan(Pi/180*ApparentAltitudeMoon + 4.848e-2*(Pi/180) / (tan(Pi/180*ApparentAltitudeMoon) + .028))\n" +"x = tan(Pi/180*%.4f + 4.848e-2*(Pi/180) / (tan(Pi/180*%.4f) + .028))\n" +"x = %.4f\n" + +#: src\Sight.cpp:743 src\Sight.cpp.bak:744 +#, c-format +msgid "RefractionCorrectionMoon = .267 * Pressure / (x*(Temperature + 273.15)) / 60.0\n" +"RefractionCorrectionMoon = .267 * %.4f / (x*(%.4f + 273.15)) / 60.0\n" +"RefractionCorrectionMoon = %.4f\n" +msgstr "RefractionCorrectionMoon = .267 * Pressure / (x*(Temperature + 273.15)) / 60.0\n" +"RefractionCorrectionMoon = .267 * %.4f / (x*(%.4f + 273.15)) / 60.0\n" +"RefractionCorrectionMoon = %.4f\n" + +#: src\Sight.cpp:768 src\Sight.cpp:771 src\Sight.cpp.bak:769 +#: src\Sight.cpp.bak:772 +#, c-format +msgid "\n" +"LimbCorrectionMoon = %.4f\n" +msgstr "\n" +"LimbCorrectionMoon = %.4f\n" + +#: src\Sight.cpp:774 src\Sight.cpp.bak:775 +#, c-format +msgid "\n" +"Corrected Altitude\n" +"CorrectedAltitudeMoon = ApparentAltitudeMoon - RefractionCorrectionMoon - LimbCorrectionMoon\n" +"CorrectedAltitudeMoon = %.4f - %.4f - %.4f\n" +"CorrectedAltitudeMoon = %.4f\n" +msgstr "\n" +"수정된 고도\n" +"CorrectedAltitudeMoon = ApparentAltitudeMoon - RefractionCorrectionMoon - LimbCorrectionMoon\n" +"CorrectedAltitudeMoon = %.4f - %.4f - %.4f\n" +"CorrectedAltitudeMoon = %.4f\n" + +#: src\Sight.cpp:789 src\Sight.cpp.bak:790 +#, c-format +msgid "ParallaxCorrectionMoon = -180/Pi * asin( sin(Pi/180 * HP ) * cos(Pi/180 * CorrectedAltitude))\n" +"ParallaxCorrectionMoon = -180/Pi * asin( sin(Pi/180 * %.4f ) * cos(Pi/180 * %.4f))\n" +"ParallaxCorrectionMoon = %.4f\n" +msgstr "ParallaxCorrectionMoon = -180/Pi * asin( sin(Pi/180 * HP ) * cos(Pi/180 * CorrectedAltitude))\n" +"ParallaxCorrectionMoon = -180/Pi * asin( sin(Pi/180 * %.4f ) * cos(Pi/180 * %.4f))\n" +"ParallaxCorrectionMoon = %.4f\n" + +#: src\Sight.cpp:878 src\Sight.cpp.bak:879 +#, c-format +msgid "CorrectionsMoon = %.4f\n" +"CorrectionsBody = %.4f\n" +"Corrections = abs(CorrectionsMoon - CorrectionsBody) = %.4f\n" +msgstr "CorrectionsMoon = %.4f\n" +"CorrectionsBody = %.4f\n" +"Corrections = abs(CorrectionsMoon - CorrectionsBody) = %.4f\n" + +#: src\Sight.cpp:884 src\Sight.cpp.bak:885 +#, c-format +msgid "CorrectedMeasurement = Measurement - Corrections - IndexCorrection\n" +"CorrectedMeasurement = %.4f - %.4f - %.4f\n" +"CorrectedMeasurement = %.4f\n" +msgstr "CorrectedMeasurement = Measurement - Corrections - IndexCorrection\n" +"CorrectedMeasurement = %.4f - %.4f - %.4f\n" +"CorrectedMeasurement = %.4f\n" + +#: src\Sight.cpp:909 src\Sight.cpp.bak:910 +msgid "\n" +"Calculated angle between Moon and " +msgstr "\n" +"과 달 사이의 계산된 각도" + +#: src\Sight.cpp:911 src\Sight.cpp.bak:912 +#, c-format +msgid "\n" +"Error from measurement: %.4f" +msgstr "\n" +"측정 오류: %.4f" + +#: src\Sight.cpp:915 src\Sight.cpp.bak:916 +msgid "\n" +"Moon takes 28 days to orbit, one degree of error takes 6720 seconds" +msgstr "\n달은 궤도를 도는 데 28일이 걸리고 1도 오차는 6720초가 걸립니다." + +#: src\Sight.cpp:916 src\Sight.cpp.bak:917 +#, c-format +msgid "\n" +"Time correction %.4f seconds" +msgstr "\n" +"시간 보정 %.4f초" + +#: src\Sight.cpp:1120 src\Sight.cpp.bak:1121 +msgid "Building bearing Sight Positions" +msgstr "방위각 관찰 위치 만들기" + +#: src\SightDialog.cpp:184 +msgid "Measurement certainty likely set to small, sight may not appear " +msgstr "측정 확실성이 작게 설정되어 관측되지 않을 수 있음" + +#: src\SightDialog.cpp:185 src\SightDialog.cpp:279 +msgid "Warning" +msgstr "경고" + +#: src\SightDialog.cpp:278 +msgid "Lunar shot will be invalid taking distance from moon to itself" +msgstr "달에서 자신까지의 거리를 측정할 때 달 영향권은 무시됩니다." + +#: src\celestial_navigation_pi.cpp:179 +msgid "open error" +msgstr "열기 오류" + +#: src\celestial_navigation_pi.cpp:180 +msgid "corrupt record" +msgstr "손상된 기록" + +#: src\celestial_navigation_pi.cpp:181 +msgid "too many models" +msgstr "너무 많은 모델" + +#: src\celestial_navigation_pi.cpp:184 +msgid "Magnetic data will not be available for the celestial navigation plugin." +msgstr "천측 항법 플러그인에는 자기 데이터를 사용할 수 없습니다." + +#: src\celestial_navigation_pi.cpp:185 +msgid "OpenCPN Alert" +msgstr "OpenCPN 경보" + diff --git a/po/mr_IN.po b/po/mr_IN.po index 8a3d919..48fe720 100644 --- a/po/mr_IN.po +++ b/po/mr_IN.po @@ -2,403 +2,467 @@ msgid "" msgstr "" "Project-Id-Version: opencpn\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-02-28 14:10-0300\n" -"PO-Revision-Date: 2018-03-03 08:24-0500\n" -"Last-Translator: nohal \n" +"POT-Creation-Date: 2021-10-27 22:15+0200\n" +"PO-Revision-Date: 2023-10-04 18:33\n" +"Last-Translator: \n" "Language-Team: Marathi\n" "Language: mr_IN\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -"X-Generator: crowdin.com\n" "X-Crowdin-Project: opencpn\n" +"X-Crowdin-Project-ID: 49843\n" "X-Crowdin-Language: mr\n" "X-Crowdin-File: /plugins/celestial_navigation_pi/po/celestial_navigation_pi.pot\n" +"X-Crowdin-File-ID: 108\n" -#: src/CelestialNavigationDialog.cpp:123 src/CelestialNavigationUI.cpp:132 +#: src\CelestialNavigationDialog-2.3.5.1-no-android.cpp:149 +#: src\CelestialNavigationDialog-2.3.5.2-android.cpp:150 +#: src\CelestialNavigationDialog-partial-android.cpp:149 +#: src\CelestialNavigationDialog.cpp:150 src\CelestialNavigationUI.cpp:137 msgid "Type" msgstr "" -#: src/CelestialNavigationDialog.cpp:124 +#: src\CelestialNavigationDialog-2.3.5.1-no-android.cpp:150 +#: src\CelestialNavigationDialog-2.3.5.2-android.cpp:151 +#: src\CelestialNavigationDialog-partial-android.cpp:150 +#: src\CelestialNavigationDialog.cpp:151 msgid "Body" msgstr "" -#: src/CelestialNavigationDialog.cpp:125 -msgid "Time (UTC)" +#: src\CelestialNavigationDialog-2.3.5.1-no-android.cpp:151 +#: src\CelestialNavigationDialog-2.3.5.2-android.cpp:152 +#: src\CelestialNavigationDialog-partial-android.cpp:151 +#: src\CelestialNavigationDialog.cpp:152 src\CelestialNavigationUI.cpp:328 +msgid "Time (UT)" msgstr "" -#: src/CelestialNavigationDialog.cpp:126 src/CelestialNavigationUI.cpp:179 +#: src\CelestialNavigationDialog-2.3.5.1-no-android.cpp:152 +#: src\CelestialNavigationDialog-2.3.5.2-android.cpp:153 +#: src\CelestialNavigationDialog-partial-android.cpp:152 +#: src\CelestialNavigationDialog.cpp:153 src\CelestialNavigationUI.cpp:184 msgid "Measurement" msgstr "" -#: src/CelestialNavigationDialog.cpp:127 src/CelestialNavigationUI.cpp:376 +#: src\CelestialNavigationDialog-2.3.5.1-no-android.cpp:153 +#: src\CelestialNavigationDialog-2.3.5.2-android.cpp:154 +#: src\CelestialNavigationDialog-partial-android.cpp:153 +#: src\CelestialNavigationDialog.cpp:154 src\CelestialNavigationUI.cpp:381 msgid "Color" msgstr "" -#: src/CelestialNavigationDialog.cpp:193 -msgid "Failed to load file." +#: src\CelestialNavigationDialog-2.3.5.1-no-android.cpp:266 +#: src\CelestialNavigationDialog-2.3.5.2-android.cpp:272 +#: src\CelestialNavigationDialog-partial-android.cpp:266 +#: src\CelestialNavigationDialog.cpp:272 src\celestial_navigation_pi.cpp:177 +msgid "Failed to load file: " msgstr "" -#: src/CelestialNavigationDialog.cpp:198 +#: src\CelestialNavigationDialog-2.3.5.1-no-android.cpp:271 +#: src\CelestialNavigationDialog-2.3.5.2-android.cpp:277 +#: src\CelestialNavigationDialog-partial-android.cpp:271 +#: src\CelestialNavigationDialog.cpp:277 msgid "Invalid xml file" msgstr "" -#: src/CelestialNavigationDialog.cpp:250 +#: src\CelestialNavigationDialog-2.3.5.1-no-android.cpp:323 +#: src\CelestialNavigationDialog-2.3.5.2-android.cpp:329 +#: src\CelestialNavigationDialog-partial-android.cpp:323 +#: src\CelestialNavigationDialog.cpp:329 msgid "Unrecognized xml node" msgstr "" -#: src/CelestialNavigationDialog.cpp:260 -msgid "Weather Routing" +#: src\CelestialNavigationDialog-2.3.5.1-no-android.cpp:332 +#: src\CelestialNavigationDialog-2.3.5.1-no-android.cpp:392 +#: src\CelestialNavigationDialog-2.3.5.1-no-android.cpp:532 +#: src\CelestialNavigationDialog-2.3.5.2-android.cpp:338 +#: src\CelestialNavigationDialog-2.3.5.2-android.cpp:398 +#: src\CelestialNavigationDialog-2.3.5.2-android.cpp:538 +#: src\CelestialNavigationDialog-partial-android.cpp:332 +#: src\CelestialNavigationDialog-partial-android.cpp:392 +#: src\CelestialNavigationDialog-partial-android.cpp:532 +#: src\CelestialNavigationDialog.cpp:338 src\CelestialNavigationDialog.cpp:398 +#: src\CelestialNavigationDialog.cpp:538 src\Sight.cpp:1120 +#: src\Sight.cpp.bak:1121 src\celestial_navigation_pi.cpp:95 +#: src\celestial_navigation_pi.cpp:99 +msgid "Celestial Navigation" msgstr "" -#: src/CelestialNavigationDialog.cpp:320 +#: src\CelestialNavigationDialog-2.3.5.1-no-android.cpp:391 +#: src\CelestialNavigationDialog-2.3.5.2-android.cpp:397 +#: src\CelestialNavigationDialog-partial-android.cpp:391 +#: src\CelestialNavigationDialog.cpp:397 msgid "Failed to save xml file: " msgstr "" -#: src/CelestialNavigationDialog.cpp:321 src/CelestialNavigationDialog.cpp:466 -#: src/Sight.cpp:1099 src/celestial_navigation_pi.cpp:99 -#: src/celestial_navigation_pi.cpp:152 -msgid "Celestial Navigation" -msgstr "" - -#: src/CelestialNavigationDialog.cpp:351 +#: src\CelestialNavigationDialog-2.3.5.1-no-android.cpp:424 +#: src\CelestialNavigationDialog-2.3.5.2-android.cpp:430 +#: src\CelestialNavigationDialog-partial-android.cpp:424 +#: src\CelestialNavigationDialog.cpp:430 msgid "Time Correction" msgstr "" -#: src/CelestialNavigationDialog.cpp:409 +#: src\CelestialNavigationDialog-2.3.5.1-no-android.cpp:473 +#: src\CelestialNavigationDialog-2.3.5.2-android.cpp:479 +#: src\CelestialNavigationDialog-partial-android.cpp:473 +#: src\CelestialNavigationDialog.cpp:479 msgid "Sun" msgstr "" -#: src/CelestialNavigationDialog.cpp:465 +#: src\CelestialNavigationDialog-2.3.5.1-no-android.cpp:531 +#: src\CelestialNavigationDialog-2.3.5.2-android.cpp:537 +#: src\CelestialNavigationDialog-partial-android.cpp:531 +#: src\CelestialNavigationDialog.cpp:537 msgid "Are you sure you want to delete all sights?" msgstr "" -#: src/CelestialNavigationDialog.cpp:510 +#: src\CelestialNavigationDialog-2.3.5.1-no-android.cpp:582 +#: src\CelestialNavigationDialog-2.3.5.2-android.cpp:588 +#: src\CelestialNavigationDialog-partial-android.cpp:582 +#: src\CelestialNavigationDialog.cpp:588 msgid "Celestial_Navigation_Information.html" msgstr "" -#: src/CelestialNavigationDialog.cpp:516 -msgid "Show" +#: src\CelestialNavigationDialog-2.3.5.1-no-android.cpp:589 +#: src\CelestialNavigationDialog-2.3.5.2-android.cpp:595 +#: src\CelestialNavigationDialog-partial-android.cpp:589 +#: src\CelestialNavigationDialog.cpp:595 src\CelestialNavigationUI.cpp:55 +msgid "Hide" msgstr "" -#: src/CelestialNavigationDialog.cpp:516 src/CelestialNavigationUI.cpp:58 -msgid "Hide" +#: src\CelestialNavigationDialog-2.3.5.1-no-android.cpp:589 +#: src\CelestialNavigationDialog-2.3.5.2-android.cpp:595 +#: src\CelestialNavigationDialog-partial-android.cpp:589 +#: src\CelestialNavigationDialog.cpp:595 +msgid "Show" msgstr "" -#: src/CelestialNavigationUI.cpp:40 +#: src\CelestialNavigationUI.cpp:40 msgid "New" msgstr "" -#: src/CelestialNavigationUI.cpp:43 -msgid "Edit" +#: src\CelestialNavigationUI.cpp:43 src\CelestialNavigationUI.h:286 +msgid "Fix" msgstr "" -#: src/CelestialNavigationUI.cpp:46 -msgid "Delete" +#: src\CelestialNavigationUI.cpp:46 +msgid "Duplicate" msgstr "" -#: src/CelestialNavigationUI.cpp:49 -msgid "Delete All" +#: src\CelestialNavigationUI.cpp:49 +msgid "Clock Offset" msgstr "" -#: src/CelestialNavigationUI.cpp:52 src/CelestialNavigationUI.h:281 -msgid "Fix" +#: src\CelestialNavigationUI.cpp:52 +msgid "Edit" msgstr "" -#: src/CelestialNavigationUI.cpp:55 -msgid "Clock Offset" +#: src\CelestialNavigationUI.cpp:58 +msgid "Delete" msgstr "" -#: src/CelestialNavigationUI.cpp:61 +#: src\CelestialNavigationUI.cpp:61 msgid "Information" msgstr "" -#: src/CelestialNavigationUI.cpp:136 src/CelestialNavigationUI.cpp:667 -#: src/Sight.h:49 +#: src\CelestialNavigationUI.cpp:64 +msgid "Delete All" +msgstr "" + +#: src\CelestialNavigationUI.cpp:141 src\CelestialNavigationUI.cpp:674 +#: src\Sight.h:49 msgid "Altitude" msgstr "" -#: src/CelestialNavigationUI.cpp:136 src/CelestialNavigationUI.cpp:677 -#: src/Sight.h:49 +#: src\CelestialNavigationUI.cpp:141 src\CelestialNavigationUI.cpp:683 +#: src\Sight.h:49 msgid "Azimuth" msgstr "" -#: src/CelestialNavigationUI.cpp:136 src/Sight.h:49 +#: src\CelestialNavigationUI.cpp:141 src\Sight.h:49 msgid "Lunar" msgstr "" -#: src/CelestialNavigationUI.cpp:142 +#: src\CelestialNavigationUI.cpp:147 msgid "Magnetic Azimuth" msgstr "" -#: src/CelestialNavigationUI.cpp:145 +#: src\CelestialNavigationUI.cpp:150 msgid "Celestial Body" msgstr "" -#: src/CelestialNavigationUI.cpp:154 +#: src\CelestialNavigationUI.cpp:159 msgid "Find" msgstr "" -#: src/CelestialNavigationUI.cpp:157 +#: src\CelestialNavigationUI.cpp:162 msgid "Limb" msgstr "" -#: src/CelestialNavigationUI.cpp:161 -msgid "Lower" +#: src\CelestialNavigationUI.cpp:166 +msgid "Center" msgstr "" -#: src/CelestialNavigationUI.cpp:161 -msgid "Center" +#: src\CelestialNavigationUI.cpp:166 +msgid "Lower" msgstr "" -#: src/CelestialNavigationUI.cpp:161 +#: src\CelestialNavigationUI.cpp:166 msgid "Upper" msgstr "" -#: src/CelestialNavigationUI.cpp:186 src/CelestialNavigationUI.cpp:193 -#: src/CelestialNavigationUI.cpp:223 src/CelestialNavigationUI.cpp:230 +#: src\CelestialNavigationUI.cpp:191 src\CelestialNavigationUI.cpp:198 +#: src\CelestialNavigationUI.cpp:228 src\CelestialNavigationUI.cpp:235 msgid "0" msgstr "" -#: src/CelestialNavigationUI.cpp:189 src/CelestialNavigationUI.cpp:348 -#: src/CelestialNavigationUI.cpp:598 +#: src\CelestialNavigationUI.cpp:194 src\CelestialNavigationUI.cpp:353 +#: src\CelestialNavigationUI.cpp:605 msgid "Degrees" msgstr "" -#: src/CelestialNavigationUI.cpp:196 src/CelestialNavigationUI.cpp:278 -#: src/CelestialNavigationUI.cpp:439 +#: src\CelestialNavigationUI.cpp:201 src\CelestialNavigationUI.cpp:283 +#: src\CelestialNavigationUI.cpp:444 msgid "Minutes" msgstr "" -#: src/CelestialNavigationUI.cpp:200 +#: src\CelestialNavigationUI.cpp:205 msgid "10" msgstr "" -#: src/CelestialNavigationUI.cpp:203 +#: src\CelestialNavigationUI.cpp:208 msgid "Minutes Certainty" msgstr "" -#: src/CelestialNavigationUI.cpp:217 +#: src\CelestialNavigationUI.cpp:222 msgid "Lunar Altitude" msgstr "" -#: src/CelestialNavigationUI.cpp:226 +#: src\CelestialNavigationUI.cpp:231 msgid "Body Altitude" msgstr "" -#: src/CelestialNavigationUI.cpp:243 +#: src\CelestialNavigationUI.cpp:248 msgid "Sight" msgstr "" -#: src/CelestialNavigationUI.cpp:271 +#: src\CelestialNavigationUI.cpp:276 msgid "Hours" msgstr "" -#: src/CelestialNavigationUI.cpp:285 src/CelestialNavigationUI.cpp:303 -#: src/CelestialNavigationUI.cpp:860 +#: src\CelestialNavigationUI.cpp:290 src\CelestialNavigationUI.cpp:308 +#: src\CelestialNavigationUI.cpp:869 msgid "Seconds" msgstr "" -#: src/CelestialNavigationUI.cpp:293 +#: src\CelestialNavigationUI.cpp:298 msgid "Certainty" msgstr "" -#: src/CelestialNavigationUI.cpp:323 -msgid "Time" -msgstr "" - -#: src/CelestialNavigationUI.cpp:330 src/CelestialNavigationUI.cpp:580 +#: src\CelestialNavigationUI.cpp:335 src\CelestialNavigationUI.cpp:587 msgid "Distance" msgstr "" -#: src/CelestialNavigationUI.cpp:337 src/CelestialNavigationUI.cpp:587 +#: src\CelestialNavigationUI.cpp:342 src\CelestialNavigationUI.cpp:594 msgid "Nm" msgstr "" -#: src/CelestialNavigationUI.cpp:341 src/CelestialNavigationUI.cpp:591 +#: src\CelestialNavigationUI.cpp:346 src\CelestialNavigationUI.cpp:598 msgid "Bearing" msgstr "" -#: src/CelestialNavigationUI.cpp:352 src/CelestialNavigationUI.cpp:602 +#: src\CelestialNavigationUI.cpp:357 src\CelestialNavigationUI.cpp:609 msgid "Magnetic Bearing" msgstr "" -#: src/CelestialNavigationUI.cpp:359 +#: src\CelestialNavigationUI.cpp:364 msgid "DR Shift" msgstr "" -#: src/CelestialNavigationUI.cpp:366 +#: src\CelestialNavigationUI.cpp:371 msgid "Transparency" msgstr "" -#: src/CelestialNavigationUI.cpp:387 +#: src\CelestialNavigationUI.cpp:392 msgid "Config" msgstr "" -#: src/CelestialNavigationUI.cpp:399 +#: src\CelestialNavigationUI.cpp:404 msgid "Eye Height" msgstr "" -#: src/CelestialNavigationUI.cpp:403 +#: src\CelestialNavigationUI.cpp:408 msgid "2" msgstr "" -#: src/CelestialNavigationUI.cpp:406 +#: src\CelestialNavigationUI.cpp:411 msgid "Meters" msgstr "" -#: src/CelestialNavigationUI.cpp:410 +#: src\CelestialNavigationUI.cpp:415 msgid "Temperature" msgstr "" -#: src/CelestialNavigationUI.cpp:417 +#: src\CelestialNavigationUI.cpp:422 msgid "Celcius" msgstr "" -#: src/CelestialNavigationUI.cpp:421 +#: src\CelestialNavigationUI.cpp:426 msgid "Pressure" msgstr "" -#: src/CelestialNavigationUI.cpp:428 +#: src\CelestialNavigationUI.cpp:433 msgid "MilliBars" msgstr "" -#: src/CelestialNavigationUI.cpp:432 +#: src\CelestialNavigationUI.cpp:437 msgid "Index Error" msgstr "" -#: src/CelestialNavigationUI.cpp:446 +#: src\CelestialNavigationUI.cpp:451 msgid "Set As Defaults" msgstr "" -#: src/CelestialNavigationUI.cpp:453 +#: src\CelestialNavigationUI.cpp:458 msgid "Parameters" msgstr "" -#: src/CelestialNavigationUI.cpp:469 +#: src\CelestialNavigationUI.cpp:474 msgid "Calculations" msgstr "" -#: src/CelestialNavigationUI.cpp:571 +#: src\CelestialNavigationUI.cpp:578 msgid "Shift all visible Sights" msgstr "" -#: src/CelestialNavigationUI.cpp:649 src/CelestialNavigationUI.cpp:760 +#: src\CelestialNavigationUI.cpp:656 src\CelestialNavigationUI.cpp:769 msgid "Latitude" msgstr "" -#: src/CelestialNavigationUI.cpp:658 src/CelestialNavigationUI.cpp:768 +#: src\CelestialNavigationUI.cpp:665 src\CelestialNavigationUI.cpp:777 msgid "Longitude" msgstr "" -#: src/CelestialNavigationUI.cpp:669 src/CelestialNavigationUI.cpp:679 -msgid "MyLabel" +#: src\CelestialNavigationUI.cpp:691 +msgid "Boat Position" msgstr "" -#: src/CelestialNavigationUI.cpp:686 -msgid "Done" +#: src\CelestialNavigationUI.cpp:695 +msgid "Magnetic" msgstr "" -#: src/CelestialNavigationUI.cpp:689 -msgid "Magnetic" +#: src\CelestialNavigationUI.cpp:698 +msgid "Done" msgstr "" -#: src/CelestialNavigationUI.cpp:753 +#: src\CelestialNavigationUI.cpp:762 msgid "Fix From Visible Sights" msgstr "" -#: src/CelestialNavigationUI.cpp:764 +#: src\CelestialNavigationUI.cpp:773 msgid " N/A " msgstr "" -#: src/CelestialNavigationUI.cpp:772 +#: src\CelestialNavigationUI.cpp:781 msgid " N/A " msgstr "" -#: src/CelestialNavigationUI.cpp:776 +#: src\CelestialNavigationUI.cpp:785 msgid "Error" msgstr "" -#: src/CelestialNavigationUI.cpp:780 +#: src\CelestialNavigationUI.cpp:789 msgid " N/A " msgstr "" -#: src/CelestialNavigationUI.cpp:787 src/CelestialNavigationUI.cpp:794 +#: src\CelestialNavigationUI.cpp:796 src\CelestialNavigationUI.cpp:803 msgid "Initial" msgstr "" -#: src/CelestialNavigationUI.cpp:801 +#: src\CelestialNavigationUI.cpp:810 msgid "Alg" msgstr "" -#: src/CelestialNavigationUI.cpp:806 +#: src\CelestialNavigationUI.cpp:815 msgid "Plane" msgstr "" -#: src/CelestialNavigationUI.cpp:807 +#: src\CelestialNavigationUI.cpp:816 msgid "Sphere" msgstr "" -#: src/CelestialNavigationUI.cpp:808 +#: src\CelestialNavigationUI.cpp:817 msgid "Cone" msgstr "" -#: src/CelestialNavigationUI.cpp:809 +#: src\CelestialNavigationUI.cpp:818 msgid "Cone 2" msgstr "" -#: src/CelestialNavigationUI.cpp:813 +#: src\CelestialNavigationUI.cpp:822 msgid "Go" msgstr "" -#: src/CelestialNavigationUI.cpp:850 src/CelestialNavigationUI.h:303 +#: src\CelestialNavigationUI.cpp:859 src\CelestialNavigationUI.h:308 msgid "Clock Correction" msgstr "" -#: src/CelestialNavigationUI.h:78 +#: src\CelestialNavigationUI.h:82 msgid "Celestial Navigation Sights" msgstr "" -#: src/CelestialNavigationUI.h:169 +#: src\CelestialNavigationUI.h:173 msgid "Sight Properties" msgstr "" -#: src/CelestialNavigationUI.h:200 +#: src\CelestialNavigationUI.h:204 msgid "Dead Reckoning shift" msgstr "" -#: src/CelestialNavigationUI.h:227 +#: src\CelestialNavigationUI.h:232 msgid "Find Celestial Body" msgstr "" -#: src/Sight.cpp:160 +#: src\FixDialog.cpp:192 +msgid "Shifted sights are not used to compute a fix, determine fix visually instead.\n" +msgstr "" + +#: src\FixDialog.cpp:193 +msgid "Fix Position" +msgstr "" + +#: src\FixDialog.cpp:338 src\FixDialog.cpp:339 src\FixDialog.cpp:340 +msgid " N/A " +msgstr "" + +#: src\Sight.cpp:172 src\Sight.cpp.bak:173 msgid "Astrolab failed, data unavailable:\n" msgstr "" -#: src/Sight.cpp:161 +#: src\Sight.cpp:173 src\Sight.cpp.bak:174 msgid "\n" "Did you forget to install vsop87d.txt?\n" msgstr "" -#: src/Sight.cpp:162 +#: src\Sight.cpp:174 src\Sight.cpp.bak:175 msgid "The plugin will not work correctly" msgstr "" -#: src/Sight.cpp:163 +#: src\Sight.cpp:175 src\Sight.cpp.bak:176 msgid "Failure Alert" msgstr "" -#: src/Sight.cpp:474 +#: src\Sight.cpp:495 src\Sight.cpp.bak:496 #, c-format msgid "Applying clock correction of %d seconds\n\n" msgstr "" -#: src/Sight.cpp:536 +#: src\Sight.cpp:557 src\Sight.cpp.bak:558 msgid "Almanac Data For " msgstr "" -#: src/Sight.cpp:537 +#: src\Sight.cpp:558 src\Sight.cpp.bak:559 #, c-format msgid "\n" "Geographical Position (lat, lon) = %.4f %.4f\n" @@ -410,23 +474,27 @@ msgid "\n" "HP = %.1f'\n\n" msgstr "" -#: src/Sight.cpp:552 src/Sight.cpp:690 +#: src\Sight.cpp:573 src\Sight.cpp:711 src\Sight.cpp.bak:574 +#: src\Sight.cpp.bak:712 msgid "Formulas used to calculate sight\n\n" msgstr "" -#: src/Sight.cpp:556 src/Sight.cpp:694 +#: src\Sight.cpp:577 src\Sight.cpp:715 src\Sight.cpp.bak:578 +#: src\Sight.cpp.bak:716 #, c-format msgid "Index Error is %.4f degrees\n\n" msgstr "" -#: src/Sight.cpp:561 src/Sight.cpp:699 +#: src\Sight.cpp:582 src\Sight.cpp:720 src\Sight.cpp.bak:583 +#: src\Sight.cpp.bak:721 #, c-format msgid "Eye Height is %.4f meters\n" "Height Correction Degrees = 1.758*sqrt(%.4f) / 60.0\n" "Height Correction Degrees = %.4f\n" msgstr "" -#: src/Sight.cpp:568 +#: src\Sight.cpp:589 src\Sight.cpp:799 src\Sight.cpp.bak:590 +#: src\Sight.cpp.bak:800 #, c-format msgid "\n" "Apparent Altitude (Ha)\n" @@ -435,7 +503,8 @@ msgid "\n" "ApparentAltitude = %.4f\n" msgstr "" -#: src/Sight.cpp:586 src/Sight.cpp:789 +#: src\Sight.cpp:607 src\Sight.cpp:810 src\Sight.cpp.bak:608 +#: src\Sight.cpp.bak:811 #, c-format msgid "\n" "Refraction Correction\n" @@ -444,21 +513,24 @@ msgid "\n" "x = %.4f\n" msgstr "" -#: src/Sight.cpp:591 src/Sight.cpp:794 +#: src\Sight.cpp:612 src\Sight.cpp:815 src\Sight.cpp.bak:613 +#: src\Sight.cpp.bak:816 #, c-format msgid "RefractionCorrection = .267 * Pressure / (x*(Temperature + 273.15)) / 60.0\n" "RefractionCorrection = .267 * %.4f / (x*(%.4f + 273.15)) / 60.0\n" "RefractionCorrection = %.4f\n" msgstr "" -#: src/Sight.cpp:606 src/Sight.cpp:808 +#: src\Sight.cpp:627 src\Sight.cpp:829 src\Sight.cpp.bak:628 +#: src\Sight.cpp.bak:830 #, c-format msgid "\n" "Sun selected, Limb Correction\n" "ra = %.4f, lc = 0.266564/ra = %.4f\n" msgstr "" -#: src/Sight.cpp:616 src/Sight.cpp:732 +#: src\Sight.cpp:637 src\Sight.cpp:753 src\Sight.cpp.bak:638 +#: src\Sight.cpp.bak:754 #, c-format msgid "\n" "Moon selected, Limb Correction\n" @@ -467,21 +539,25 @@ msgid "\n" "lc = %.4f\n" msgstr "" -#: src/Sight.cpp:626 src/Sight.cpp:741 src/Sight.cpp:816 +#: src\Sight.cpp:647 src\Sight.cpp:762 src\Sight.cpp:837 src\Sight.cpp.bak:648 +#: src\Sight.cpp.bak:763 src\Sight.cpp.bak:838 msgid "Upper Limb" msgstr "" -#: src/Sight.cpp:629 src/Sight.cpp:744 src/Sight.cpp:819 +#: src\Sight.cpp:650 src\Sight.cpp:765 src\Sight.cpp:840 src\Sight.cpp.bak:651 +#: src\Sight.cpp.bak:766 src\Sight.cpp.bak:841 msgid "Lower Limb" msgstr "" -#: src/Sight.cpp:632 src/Sight.cpp:822 +#: src\Sight.cpp:653 src\Sight.cpp:843 src\Sight.cpp.bak:654 +#: src\Sight.cpp.bak:844 #, c-format msgid "\n" "LimbCorrection = %.4f\n" msgstr "" -#: src/Sight.cpp:636 src/Sight.cpp:826 +#: src\Sight.cpp:657 src\Sight.cpp:847 src\Sight.cpp.bak:658 +#: src\Sight.cpp.bak:848 #, c-format msgid "\n" "Corrected Altitude\n" @@ -490,28 +566,31 @@ msgid "\n" "CorrectedAltitude = %.4f\n" msgstr "" -#: src/Sight.cpp:650 src/Sight.cpp:840 +#: src\Sight.cpp:671 src\Sight.cpp:861 src\Sight.cpp.bak:672 +#: src\Sight.cpp.bak:862 #, c-format msgid "\n" "Sun selected, parallax correction\n" "rad = %.4f, HP = 0.002442/rad = %.4f\n" msgstr "" -#: src/Sight.cpp:659 src/Sight.cpp:764 +#: src\Sight.cpp:680 src\Sight.cpp:785 src\Sight.cpp.bak:681 +#: src\Sight.cpp.bak:786 #, c-format msgid "\n" "Moon selected, parallax correction\n" "HP = %.4f\n" msgstr "" -#: src/Sight.cpp:665 src/Sight.cpp:846 +#: src\Sight.cpp:686 src\Sight.cpp:867 src\Sight.cpp.bak:687 +#: src\Sight.cpp.bak:868 #, c-format msgid "ParallaxCorrection = -180/Pi * asin( sin(Pi/180 * HP ) * cos(Pi/180 * CorrectedAltitude))\n" "ParallaxCorrection = -180/Pi * asin( sin(Pi/180 * %.4f ) * cos(Pi/180 * %.4f))\n" "ParallaxCorrection = %.4f\n" msgstr "" -#: src/Sight.cpp:672 +#: src\Sight.cpp:693 src\Sight.cpp.bak:694 #, c-format msgid "\n" "Observed Altitude (Ho)\n" @@ -520,16 +599,16 @@ msgid "\n" "ObservedAltitude = %.4f\n" msgstr "" -#: src/Sight.cpp:706 +#: src\Sight.cpp:727 src\Sight.cpp.bak:728 #, c-format msgid "\n" "Apparent Moon Altitude (Ha)\n" "ApparentAltitudeMoon = MeasurementMoon - IndexCorrection - EyeHeightCorrection\n" -" ApparentAltitudeMoon = %.4f - %.4f - %.4f\n" +"ApparentAltitudeMoon = %.4f - %.4f - %.4f\n" "ApparentAltitudeMoon = %.4f\n" msgstr "" -#: src/Sight.cpp:717 +#: src\Sight.cpp:738 src\Sight.cpp.bak:739 #, c-format msgid "\n" "Refraction Correction\n" @@ -538,20 +617,21 @@ msgid "\n" "x = %.4f\n" msgstr "" -#: src/Sight.cpp:722 +#: src\Sight.cpp:743 src\Sight.cpp.bak:744 #, c-format msgid "RefractionCorrectionMoon = .267 * Pressure / (x*(Temperature + 273.15)) / 60.0\n" "RefractionCorrectionMoon = .267 * %.4f / (x*(%.4f + 273.15)) / 60.0\n" "RefractionCorrectionMoon = %.4f\n" msgstr "" -#: src/Sight.cpp:747 src/Sight.cpp:750 +#: src\Sight.cpp:768 src\Sight.cpp:771 src\Sight.cpp.bak:769 +#: src\Sight.cpp.bak:772 #, c-format msgid "\n" "LimbCorrectionMoon = %.4f\n" msgstr "" -#: src/Sight.cpp:753 +#: src\Sight.cpp:774 src\Sight.cpp.bak:775 #, c-format msgid "\n" "Corrected Altitude\n" @@ -560,107 +640,82 @@ msgid "\n" "CorrectedAltitudeMoon = %.4f\n" msgstr "" -#: src/Sight.cpp:768 +#: src\Sight.cpp:789 src\Sight.cpp.bak:790 #, c-format msgid "ParallaxCorrectionMoon = -180/Pi * asin( sin(Pi/180 * HP ) * cos(Pi/180 * CorrectedAltitude))\n" -" ParallaxCorrectionMoon = -180/Pi * asin( sin(Pi/180 * %.4f ) * cos(Pi/180 * %.4f))\n" +"ParallaxCorrectionMoon = -180/Pi * asin( sin(Pi/180 * %.4f ) * cos(Pi/180 * %.4f))\n" "ParallaxCorrectionMoon = %.4f\n" msgstr "" -#: src/Sight.cpp:778 -#, c-format -msgid "\n" -"Apparent Altitude (Ha)\n" -"ApparentAltitude = Measurement - IndexCorrection - EyeHeightCorrection\n" -" ApparentAltitude = %.4f - %.4f - %.4f\n" -"ApparentAltitude = %.4f\n" -msgstr "" - -#: src/Sight.cpp:857 +#: src\Sight.cpp:878 src\Sight.cpp.bak:879 #, c-format msgid "CorrectionsMoon = %.4f\n" "CorrectionsBody = %.4f\n" "Corrections = abs(CorrectionsMoon - CorrectionsBody) = %.4f\n" msgstr "" -#: src/Sight.cpp:863 +#: src\Sight.cpp:884 src\Sight.cpp.bak:885 #, c-format msgid "CorrectedMeasurement = Measurement - Corrections - IndexCorrection\n" "CorrectedMeasurement = %.4f - %.4f - %.4f\n" "CorrectedMeasurement = %.4f\n" msgstr "" -#: src/Sight.cpp:888 +#: src\Sight.cpp:909 src\Sight.cpp.bak:910 msgid "\n" "Calculated angle between Moon and " msgstr "" -#: src/Sight.cpp:890 +#: src\Sight.cpp:911 src\Sight.cpp.bak:912 #, c-format msgid "\n" "Error from measurement: %.4f" msgstr "" -#: src/Sight.cpp:894 +#: src\Sight.cpp:915 src\Sight.cpp.bak:916 msgid "\n" "Moon takes 28 days to orbit, one degree of error takes 6720 seconds" msgstr "" -#: src/Sight.cpp:895 +#: src\Sight.cpp:916 src\Sight.cpp.bak:917 #, c-format msgid "\n" "Time correction %.4f seconds" msgstr "" -#: src/Sight.cpp:1099 +#: src\Sight.cpp:1120 src\Sight.cpp.bak:1121 msgid "Building bearing Sight Positions" msgstr "" -#: src/SightDialog.cpp:172 +#: src\SightDialog.cpp:184 msgid "Measurement certainty likely set to small, sight may not appear " msgstr "" -#: src/SightDialog.cpp:173 src/SightDialog.cpp:256 +#: src\SightDialog.cpp:185 src\SightDialog.cpp:279 msgid "Warning" msgstr "" -#: src/SightDialog.cpp:255 +#: src\SightDialog.cpp:278 msgid "Lunar shot will be invalid taking distance from moon to itself" msgstr "" -#: src/celestial_navigation_pi.cpp:90 -msgid "Failed to load file:\n" -msgstr "" - -#: src/celestial_navigation_pi.cpp:91 -msgid "\n" -"Magnetic data will not be available for the celestial navigation plugin." -msgstr "" - -#: src/celestial_navigation_pi.cpp:92 -msgid "OpenCPN Alert" +#: src\celestial_navigation_pi.cpp:179 +msgid "open error" msgstr "" -#: src/celestial_navigation_pi.cpp:157 -msgid "Celestial Navigation PlugIn for OpenCPN" +#: src\celestial_navigation_pi.cpp:180 +msgid "corrupt record" msgstr "" -#: src/celestial_navigation_pi.cpp:162 -msgid "Celestial Navigation PlugIn for OpenCPN.\n" -"Implements nautical almanac for sun, moon, planets,\n" -"and various navigational stars.\n" -"Compute position fix from celestial measurements." +#: src\celestial_navigation_pi.cpp:181 +msgid "too many models" msgstr "" -#: src/FixDialog.cpp:189 -msgid "Shifted sights are not used to compute a fix, determine fix visually instead.\n" +#: src\celestial_navigation_pi.cpp:184 +msgid "Magnetic data will not be available for the celestial navigation plugin." msgstr "" -#: src/FixDialog.cpp:190 -msgid "Fix Position" -msgstr "" - -#: src/FixDialog.cpp:335 src/FixDialog.cpp:336 src/FixDialog.cpp:337 -msgid " N/A " +#: src\celestial_navigation_pi.cpp:185 +msgid "OpenCPN Alert" msgstr "" diff --git a/po/nb_NO.po b/po/nb_NO.po index 8107729..448520f 100644 --- a/po/nb_NO.po +++ b/po/nb_NO.po @@ -2,404 +2,468 @@ msgid "" msgstr "" "Project-Id-Version: opencpn\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-02-28 14:10-0300\n" -"PO-Revision-Date: 2018-03-03 08:24-0500\n" -"Last-Translator: nohal \n" +"POT-Creation-Date: 2021-10-27 22:15+0200\n" +"PO-Revision-Date: 2023-10-04 18:33\n" +"Last-Translator: \n" "Language-Team: Norwegian Bokmal\n" "Language: nb_NO\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -"X-Generator: crowdin.com\n" "X-Crowdin-Project: opencpn\n" +"X-Crowdin-Project-ID: 49843\n" "X-Crowdin-Language: nb\n" "X-Crowdin-File: /plugins/celestial_navigation_pi/po/celestial_navigation_pi.pot\n" +"X-Crowdin-File-ID: 108\n" -#: src/CelestialNavigationDialog.cpp:123 src/CelestialNavigationUI.cpp:132 +#: src\CelestialNavigationDialog-2.3.5.1-no-android.cpp:149 +#: src\CelestialNavigationDialog-2.3.5.2-android.cpp:150 +#: src\CelestialNavigationDialog-partial-android.cpp:149 +#: src\CelestialNavigationDialog.cpp:150 src\CelestialNavigationUI.cpp:137 msgid "Type" msgstr "Type" -#: src/CelestialNavigationDialog.cpp:124 +#: src\CelestialNavigationDialog-2.3.5.1-no-android.cpp:150 +#: src\CelestialNavigationDialog-2.3.5.2-android.cpp:151 +#: src\CelestialNavigationDialog-partial-android.cpp:150 +#: src\CelestialNavigationDialog.cpp:151 msgid "Body" msgstr "Kropp" -#: src/CelestialNavigationDialog.cpp:125 -msgid "Time (UTC)" -msgstr "Tid (UTC)" +#: src\CelestialNavigationDialog-2.3.5.1-no-android.cpp:151 +#: src\CelestialNavigationDialog-2.3.5.2-android.cpp:152 +#: src\CelestialNavigationDialog-partial-android.cpp:151 +#: src\CelestialNavigationDialog.cpp:152 src\CelestialNavigationUI.cpp:328 +msgid "Time (UT)" +msgstr "" -#: src/CelestialNavigationDialog.cpp:126 src/CelestialNavigationUI.cpp:179 +#: src\CelestialNavigationDialog-2.3.5.1-no-android.cpp:152 +#: src\CelestialNavigationDialog-2.3.5.2-android.cpp:153 +#: src\CelestialNavigationDialog-partial-android.cpp:152 +#: src\CelestialNavigationDialog.cpp:153 src\CelestialNavigationUI.cpp:184 msgid "Measurement" msgstr "Måling" -#: src/CelestialNavigationDialog.cpp:127 src/CelestialNavigationUI.cpp:376 +#: src\CelestialNavigationDialog-2.3.5.1-no-android.cpp:153 +#: src\CelestialNavigationDialog-2.3.5.2-android.cpp:154 +#: src\CelestialNavigationDialog-partial-android.cpp:153 +#: src\CelestialNavigationDialog.cpp:154 src\CelestialNavigationUI.cpp:381 msgid "Color" msgstr "Farge" -#: src/CelestialNavigationDialog.cpp:193 -msgid "Failed to load file." -msgstr "Kunne ikke laste fil." - -#: src/CelestialNavigationDialog.cpp:198 +#: src\CelestialNavigationDialog-2.3.5.1-no-android.cpp:266 +#: src\CelestialNavigationDialog-2.3.5.2-android.cpp:272 +#: src\CelestialNavigationDialog-partial-android.cpp:266 +#: src\CelestialNavigationDialog.cpp:272 src\celestial_navigation_pi.cpp:177 +msgid "Failed to load file: " +msgstr "Kunne ikke laste fil: " + +#: src\CelestialNavigationDialog-2.3.5.1-no-android.cpp:271 +#: src\CelestialNavigationDialog-2.3.5.2-android.cpp:277 +#: src\CelestialNavigationDialog-partial-android.cpp:271 +#: src\CelestialNavigationDialog.cpp:277 msgid "Invalid xml file" msgstr "Feil xml fil" -#: src/CelestialNavigationDialog.cpp:250 +#: src\CelestialNavigationDialog-2.3.5.1-no-android.cpp:323 +#: src\CelestialNavigationDialog-2.3.5.2-android.cpp:329 +#: src\CelestialNavigationDialog-partial-android.cpp:323 +#: src\CelestialNavigationDialog.cpp:329 msgid "Unrecognized xml node" msgstr "Ukjent xml node" -#: src/CelestialNavigationDialog.cpp:260 -msgid "Weather Routing" -msgstr "Værnavigasjon" +#: src\CelestialNavigationDialog-2.3.5.1-no-android.cpp:332 +#: src\CelestialNavigationDialog-2.3.5.1-no-android.cpp:392 +#: src\CelestialNavigationDialog-2.3.5.1-no-android.cpp:532 +#: src\CelestialNavigationDialog-2.3.5.2-android.cpp:338 +#: src\CelestialNavigationDialog-2.3.5.2-android.cpp:398 +#: src\CelestialNavigationDialog-2.3.5.2-android.cpp:538 +#: src\CelestialNavigationDialog-partial-android.cpp:332 +#: src\CelestialNavigationDialog-partial-android.cpp:392 +#: src\CelestialNavigationDialog-partial-android.cpp:532 +#: src\CelestialNavigationDialog.cpp:338 src\CelestialNavigationDialog.cpp:398 +#: src\CelestialNavigationDialog.cpp:538 src\Sight.cpp:1120 +#: src\Sight.cpp.bak:1121 src\celestial_navigation_pi.cpp:95 +#: src\celestial_navigation_pi.cpp:99 +msgid "Celestial Navigation" +msgstr "Astronomisk Navigasjon" -#: src/CelestialNavigationDialog.cpp:320 +#: src\CelestialNavigationDialog-2.3.5.1-no-android.cpp:391 +#: src\CelestialNavigationDialog-2.3.5.2-android.cpp:397 +#: src\CelestialNavigationDialog-partial-android.cpp:391 +#: src\CelestialNavigationDialog.cpp:397 msgid "Failed to save xml file: " msgstr "Kunne ikke lagre xml fil: " -#: src/CelestialNavigationDialog.cpp:321 src/CelestialNavigationDialog.cpp:466 -#: src/Sight.cpp:1099 src/celestial_navigation_pi.cpp:99 -#: src/celestial_navigation_pi.cpp:152 -msgid "Celestial Navigation" -msgstr "Astronomisk Navigasjon" - -#: src/CelestialNavigationDialog.cpp:351 +#: src\CelestialNavigationDialog-2.3.5.1-no-android.cpp:424 +#: src\CelestialNavigationDialog-2.3.5.2-android.cpp:430 +#: src\CelestialNavigationDialog-partial-android.cpp:424 +#: src\CelestialNavigationDialog.cpp:430 msgid "Time Correction" msgstr "Tidskorreksjon" -#: src/CelestialNavigationDialog.cpp:409 +#: src\CelestialNavigationDialog-2.3.5.1-no-android.cpp:473 +#: src\CelestialNavigationDialog-2.3.5.2-android.cpp:479 +#: src\CelestialNavigationDialog-partial-android.cpp:473 +#: src\CelestialNavigationDialog.cpp:479 msgid "Sun" msgstr "Sol" -#: src/CelestialNavigationDialog.cpp:465 +#: src\CelestialNavigationDialog-2.3.5.1-no-android.cpp:531 +#: src\CelestialNavigationDialog-2.3.5.2-android.cpp:537 +#: src\CelestialNavigationDialog-partial-android.cpp:531 +#: src\CelestialNavigationDialog.cpp:537 msgid "Are you sure you want to delete all sights?" msgstr "Er du sikker på at du vil slette alle lagrede legemer?" -#: src/CelestialNavigationDialog.cpp:510 +#: src\CelestialNavigationDialog-2.3.5.1-no-android.cpp:582 +#: src\CelestialNavigationDialog-2.3.5.2-android.cpp:588 +#: src\CelestialNavigationDialog-partial-android.cpp:582 +#: src\CelestialNavigationDialog.cpp:588 msgid "Celestial_Navigation_Information.html" msgstr "Celestial_Navigation_Information.html" -#: src/CelestialNavigationDialog.cpp:516 -msgid "Show" -msgstr "Vis" - -#: src/CelestialNavigationDialog.cpp:516 src/CelestialNavigationUI.cpp:58 +#: src\CelestialNavigationDialog-2.3.5.1-no-android.cpp:589 +#: src\CelestialNavigationDialog-2.3.5.2-android.cpp:595 +#: src\CelestialNavigationDialog-partial-android.cpp:589 +#: src\CelestialNavigationDialog.cpp:595 src\CelestialNavigationUI.cpp:55 msgid "Hide" msgstr "Skjul" -#: src/CelestialNavigationUI.cpp:40 +#: src\CelestialNavigationDialog-2.3.5.1-no-android.cpp:589 +#: src\CelestialNavigationDialog-2.3.5.2-android.cpp:595 +#: src\CelestialNavigationDialog-partial-android.cpp:589 +#: src\CelestialNavigationDialog.cpp:595 +msgid "Show" +msgstr "Vis" + +#: src\CelestialNavigationUI.cpp:40 msgid "New" msgstr "Ny" -#: src/CelestialNavigationUI.cpp:43 -msgid "Edit" -msgstr "Endre" - -#: src/CelestialNavigationUI.cpp:46 -msgid "Delete" -msgstr "Slett" - -#: src/CelestialNavigationUI.cpp:49 -msgid "Delete All" -msgstr "Slett alle" - -#: src/CelestialNavigationUI.cpp:52 src/CelestialNavigationUI.h:281 +#: src\CelestialNavigationUI.cpp:43 src\CelestialNavigationUI.h:286 msgid "Fix" msgstr "Lås" -#: src/CelestialNavigationUI.cpp:55 +#: src\CelestialNavigationUI.cpp:46 +msgid "Duplicate" +msgstr "" + +#: src\CelestialNavigationUI.cpp:49 msgid "Clock Offset" msgstr "Tidsforskyvelse" -#: src/CelestialNavigationUI.cpp:61 +#: src\CelestialNavigationUI.cpp:52 +msgid "Edit" +msgstr "Endre" + +#: src\CelestialNavigationUI.cpp:58 +msgid "Delete" +msgstr "Slett" + +#: src\CelestialNavigationUI.cpp:61 msgid "Information" msgstr "Informasjon" -#: src/CelestialNavigationUI.cpp:136 src/CelestialNavigationUI.cpp:667 -#: src/Sight.h:49 +#: src\CelestialNavigationUI.cpp:64 +msgid "Delete All" +msgstr "Slett alle" + +#: src\CelestialNavigationUI.cpp:141 src\CelestialNavigationUI.cpp:674 +#: src\Sight.h:49 msgid "Altitude" msgstr "Høyde" -#: src/CelestialNavigationUI.cpp:136 src/CelestialNavigationUI.cpp:677 -#: src/Sight.h:49 +#: src\CelestialNavigationUI.cpp:141 src\CelestialNavigationUI.cpp:683 +#: src\Sight.h:49 msgid "Azimuth" msgstr "Azimuth" -#: src/CelestialNavigationUI.cpp:136 src/Sight.h:49 +#: src\CelestialNavigationUI.cpp:141 src\Sight.h:49 msgid "Lunar" msgstr "Måne" -#: src/CelestialNavigationUI.cpp:142 +#: src\CelestialNavigationUI.cpp:147 msgid "Magnetic Azimuth" msgstr "Magnetisk azimuth" -#: src/CelestialNavigationUI.cpp:145 +#: src\CelestialNavigationUI.cpp:150 msgid "Celestial Body" msgstr "Himmellegeme" -#: src/CelestialNavigationUI.cpp:154 +#: src\CelestialNavigationUI.cpp:159 msgid "Find" msgstr "Finn" -#: src/CelestialNavigationUI.cpp:157 +#: src\CelestialNavigationUI.cpp:162 msgid "Limb" msgstr "Ytterkant" -#: src/CelestialNavigationUI.cpp:161 -msgid "Lower" -msgstr "Senk" - -#: src/CelestialNavigationUI.cpp:161 +#: src\CelestialNavigationUI.cpp:166 msgid "Center" msgstr "Senter" -#: src/CelestialNavigationUI.cpp:161 +#: src\CelestialNavigationUI.cpp:166 +msgid "Lower" +msgstr "Senk" + +#: src\CelestialNavigationUI.cpp:166 msgid "Upper" msgstr "Øvre" -#: src/CelestialNavigationUI.cpp:186 src/CelestialNavigationUI.cpp:193 -#: src/CelestialNavigationUI.cpp:223 src/CelestialNavigationUI.cpp:230 +#: src\CelestialNavigationUI.cpp:191 src\CelestialNavigationUI.cpp:198 +#: src\CelestialNavigationUI.cpp:228 src\CelestialNavigationUI.cpp:235 msgid "0" msgstr "0" -#: src/CelestialNavigationUI.cpp:189 src/CelestialNavigationUI.cpp:348 -#: src/CelestialNavigationUI.cpp:598 +#: src\CelestialNavigationUI.cpp:194 src\CelestialNavigationUI.cpp:353 +#: src\CelestialNavigationUI.cpp:605 msgid "Degrees" msgstr "Grader" -#: src/CelestialNavigationUI.cpp:196 src/CelestialNavigationUI.cpp:278 -#: src/CelestialNavigationUI.cpp:439 +#: src\CelestialNavigationUI.cpp:201 src\CelestialNavigationUI.cpp:283 +#: src\CelestialNavigationUI.cpp:444 msgid "Minutes" msgstr "Minutter" -#: src/CelestialNavigationUI.cpp:200 +#: src\CelestialNavigationUI.cpp:205 msgid "10" msgstr "10" -#: src/CelestialNavigationUI.cpp:203 +#: src\CelestialNavigationUI.cpp:208 msgid "Minutes Certainty" msgstr "Minutter sikkerhet" -#: src/CelestialNavigationUI.cpp:217 +#: src\CelestialNavigationUI.cpp:222 msgid "Lunar Altitude" msgstr "Månehøyde" -#: src/CelestialNavigationUI.cpp:226 +#: src\CelestialNavigationUI.cpp:231 msgid "Body Altitude" msgstr "Kroppshøyde" -#: src/CelestialNavigationUI.cpp:243 +#: src\CelestialNavigationUI.cpp:248 msgid "Sight" msgstr "Legeme" -#: src/CelestialNavigationUI.cpp:271 +#: src\CelestialNavigationUI.cpp:276 msgid "Hours" msgstr "Timer" -#: src/CelestialNavigationUI.cpp:285 src/CelestialNavigationUI.cpp:303 -#: src/CelestialNavigationUI.cpp:860 +#: src\CelestialNavigationUI.cpp:290 src\CelestialNavigationUI.cpp:308 +#: src\CelestialNavigationUI.cpp:869 msgid "Seconds" msgstr "Sekunder" -#: src/CelestialNavigationUI.cpp:293 +#: src\CelestialNavigationUI.cpp:298 msgid "Certainty" msgstr "Sikkerhet" -#: src/CelestialNavigationUI.cpp:323 -msgid "Time" -msgstr "Tid" - -#: src/CelestialNavigationUI.cpp:330 src/CelestialNavigationUI.cpp:580 +#: src\CelestialNavigationUI.cpp:335 src\CelestialNavigationUI.cpp:587 msgid "Distance" msgstr "Distanse" -#: src/CelestialNavigationUI.cpp:337 src/CelestialNavigationUI.cpp:587 +#: src\CelestialNavigationUI.cpp:342 src\CelestialNavigationUI.cpp:594 msgid "Nm" msgstr "Nm" -#: src/CelestialNavigationUI.cpp:341 src/CelestialNavigationUI.cpp:591 +#: src\CelestialNavigationUI.cpp:346 src\CelestialNavigationUI.cpp:598 msgid "Bearing" msgstr "Kurs" -#: src/CelestialNavigationUI.cpp:352 src/CelestialNavigationUI.cpp:602 +#: src\CelestialNavigationUI.cpp:357 src\CelestialNavigationUI.cpp:609 msgid "Magnetic Bearing" msgstr "Magnetisk kurs" -#: src/CelestialNavigationUI.cpp:359 +#: src\CelestialNavigationUI.cpp:364 msgid "DR Shift" msgstr "DR Skift" -#: src/CelestialNavigationUI.cpp:366 +#: src\CelestialNavigationUI.cpp:371 msgid "Transparency" msgstr "Gjennomsiktighet" -#: src/CelestialNavigationUI.cpp:387 +#: src\CelestialNavigationUI.cpp:392 msgid "Config" msgstr "Konfigurasjon" -#: src/CelestialNavigationUI.cpp:399 +#: src\CelestialNavigationUI.cpp:404 msgid "Eye Height" msgstr "Øyehøyde" -#: src/CelestialNavigationUI.cpp:403 +#: src\CelestialNavigationUI.cpp:408 msgid "2" msgstr "2" -#: src/CelestialNavigationUI.cpp:406 +#: src\CelestialNavigationUI.cpp:411 msgid "Meters" msgstr "Meter" -#: src/CelestialNavigationUI.cpp:410 +#: src\CelestialNavigationUI.cpp:415 msgid "Temperature" msgstr "Temperatur" -#: src/CelestialNavigationUI.cpp:417 +#: src\CelestialNavigationUI.cpp:422 msgid "Celcius" msgstr "Celcius" -#: src/CelestialNavigationUI.cpp:421 +#: src\CelestialNavigationUI.cpp:426 msgid "Pressure" msgstr "Trykk" -#: src/CelestialNavigationUI.cpp:428 +#: src\CelestialNavigationUI.cpp:433 msgid "MilliBars" msgstr "Millibar" -#: src/CelestialNavigationUI.cpp:432 +#: src\CelestialNavigationUI.cpp:437 msgid "Index Error" msgstr "Indeks feil" -#: src/CelestialNavigationUI.cpp:446 +#: src\CelestialNavigationUI.cpp:451 msgid "Set As Defaults" msgstr "Sett som standard" -#: src/CelestialNavigationUI.cpp:453 +#: src\CelestialNavigationUI.cpp:458 msgid "Parameters" msgstr "Parametre" -#: src/CelestialNavigationUI.cpp:469 +#: src\CelestialNavigationUI.cpp:474 msgid "Calculations" msgstr "Kalkulasjoner" -#: src/CelestialNavigationUI.cpp:571 +#: src\CelestialNavigationUI.cpp:578 msgid "Shift all visible Sights" msgstr "Flytt alle synlige lokasjoner" -#: src/CelestialNavigationUI.cpp:649 src/CelestialNavigationUI.cpp:760 +#: src\CelestialNavigationUI.cpp:656 src\CelestialNavigationUI.cpp:769 msgid "Latitude" msgstr "Breddegrad" -#: src/CelestialNavigationUI.cpp:658 src/CelestialNavigationUI.cpp:768 +#: src\CelestialNavigationUI.cpp:665 src\CelestialNavigationUI.cpp:777 msgid "Longitude" msgstr "Lengdegrad" -#: src/CelestialNavigationUI.cpp:669 src/CelestialNavigationUI.cpp:679 -msgid "MyLabel" -msgstr "MinMerkelapp" +#: src\CelestialNavigationUI.cpp:691 +msgid "Boat Position" +msgstr "Båtposisjon" -#: src/CelestialNavigationUI.cpp:686 -msgid "Done" -msgstr "Ferdig" - -#: src/CelestialNavigationUI.cpp:689 +#: src\CelestialNavigationUI.cpp:695 msgid "Magnetic" msgstr "Magnetisk" -#: src/CelestialNavigationUI.cpp:753 +#: src\CelestialNavigationUI.cpp:698 +msgid "Done" +msgstr "Ferdig" + +#: src\CelestialNavigationUI.cpp:762 msgid "Fix From Visible Sights" msgstr "Posisjon fra synlige landmerker" -#: src/CelestialNavigationUI.cpp:764 +#: src\CelestialNavigationUI.cpp:773 msgid " N/A " msgstr " N/A " -#: src/CelestialNavigationUI.cpp:772 +#: src\CelestialNavigationUI.cpp:781 msgid " N/A " msgstr " N/A " -#: src/CelestialNavigationUI.cpp:776 +#: src\CelestialNavigationUI.cpp:785 msgid "Error" msgstr "Feil" -#: src/CelestialNavigationUI.cpp:780 +#: src\CelestialNavigationUI.cpp:789 msgid " N/A " msgstr " N/A " -#: src/CelestialNavigationUI.cpp:787 src/CelestialNavigationUI.cpp:794 +#: src\CelestialNavigationUI.cpp:796 src\CelestialNavigationUI.cpp:803 msgid "Initial" msgstr "Første" -#: src/CelestialNavigationUI.cpp:801 +#: src\CelestialNavigationUI.cpp:810 msgid "Alg" msgstr "Alg" -#: src/CelestialNavigationUI.cpp:806 +#: src\CelestialNavigationUI.cpp:815 msgid "Plane" msgstr "Plan" -#: src/CelestialNavigationUI.cpp:807 +#: src\CelestialNavigationUI.cpp:816 msgid "Sphere" msgstr "Sfære" -#: src/CelestialNavigationUI.cpp:808 +#: src\CelestialNavigationUI.cpp:817 msgid "Cone" msgstr "Kon" -#: src/CelestialNavigationUI.cpp:809 +#: src\CelestialNavigationUI.cpp:818 msgid "Cone 2" msgstr "Kon 2" -#: src/CelestialNavigationUI.cpp:813 +#: src\CelestialNavigationUI.cpp:822 msgid "Go" msgstr "Gå" -#: src/CelestialNavigationUI.cpp:850 src/CelestialNavigationUI.h:303 +#: src\CelestialNavigationUI.cpp:859 src\CelestialNavigationUI.h:308 msgid "Clock Correction" msgstr "Klokke korreksjon" -#: src/CelestialNavigationUI.h:78 +#: src\CelestialNavigationUI.h:82 msgid "Celestial Navigation Sights" msgstr "Astronomiske Navigasjons punkter" -#: src/CelestialNavigationUI.h:169 +#: src\CelestialNavigationUI.h:173 msgid "Sight Properties" msgstr "Egenskaper for punkt" -#: src/CelestialNavigationUI.h:200 +#: src\CelestialNavigationUI.h:204 msgid "Dead Reckoning shift" msgstr "Dead Reckoning skift" -#: src/CelestialNavigationUI.h:227 +#: src\CelestialNavigationUI.h:232 msgid "Find Celestial Body" msgstr "Lokaliser himmellegeme" -#: src/Sight.cpp:160 +#: src\FixDialog.cpp:192 +msgid "Shifted sights are not used to compute a fix, determine fix visually instead.\n" +msgstr "Forskyvde legemer brukes ikke til å beregne posisjon, beregn posisjon visuelt i stedet.\n" + +#: src\FixDialog.cpp:193 +msgid "Fix Position" +msgstr "Satt posisjon" + +#: src\FixDialog.cpp:338 src\FixDialog.cpp:339 src\FixDialog.cpp:340 +msgid " N/A " +msgstr " N/A " + +#: src\Sight.cpp:172 src\Sight.cpp.bak:173 msgid "Astrolab failed, data unavailable:\n" msgstr "Astrolab feilet, data utilgjengelig:\n" -#: src/Sight.cpp:161 +#: src\Sight.cpp:173 src\Sight.cpp.bak:174 msgid "\n" "Did you forget to install vsop87d.txt?\n" msgstr "\n" "Glemte du å installere vsop87d.txt\n" -#: src/Sight.cpp:162 +#: src\Sight.cpp:174 src\Sight.cpp.bak:175 msgid "The plugin will not work correctly" msgstr "Utvidelsen vil ikke virke skikkelig" -#: src/Sight.cpp:163 +#: src\Sight.cpp:175 src\Sight.cpp.bak:176 msgid "Failure Alert" msgstr "Feilalarm" -#: src/Sight.cpp:474 +#: src\Sight.cpp:495 src\Sight.cpp.bak:496 #, c-format msgid "Applying clock correction of %d seconds\n\n" msgstr "Legger til klokkerettelse på %d sekunder\n\n" -#: src/Sight.cpp:536 +#: src\Sight.cpp:557 src\Sight.cpp.bak:558 msgid "Almanac Data For " msgstr "Almanakk data for " -#: src/Sight.cpp:537 +#: src\Sight.cpp:558 src\Sight.cpp.bak:559 #, c-format msgid "\n" "Geographical Position (lat, lon) = %.4f %.4f\n" @@ -418,16 +482,19 @@ msgstr "\n" "SD = %.1f'\n" "HP = %.1f'\n\n" -#: src/Sight.cpp:552 src/Sight.cpp:690 +#: src\Sight.cpp:573 src\Sight.cpp:711 src\Sight.cpp.bak:574 +#: src\Sight.cpp.bak:712 msgid "Formulas used to calculate sight\n\n" msgstr "Formler brukt til beregning av punkt\n\n" -#: src/Sight.cpp:556 src/Sight.cpp:694 +#: src\Sight.cpp:577 src\Sight.cpp:715 src\Sight.cpp.bak:578 +#: src\Sight.cpp.bak:716 #, c-format msgid "Index Error is %.4f degrees\n\n" msgstr "Indeks feil er %.4f grader\n\n" -#: src/Sight.cpp:561 src/Sight.cpp:699 +#: src\Sight.cpp:582 src\Sight.cpp:720 src\Sight.cpp.bak:583 +#: src\Sight.cpp.bak:721 #, c-format msgid "Eye Height is %.4f meters\n" "Height Correction Degrees = 1.758*sqrt(%.4f) / 60.0\n" @@ -436,7 +503,8 @@ msgstr "Øyehøyde er %.4f meter\n" "Høyde korreksjon i grader = 1.758*kv.rot(%.4f) / 60.0\n" "Høyde korreksjon i grader = %.4f\n" -#: src/Sight.cpp:568 +#: src\Sight.cpp:589 src\Sight.cpp:799 src\Sight.cpp.bak:590 +#: src\Sight.cpp.bak:800 #, c-format msgid "\n" "Apparent Altitude (Ha)\n" @@ -449,7 +517,8 @@ msgstr "\n" "TilsynelatendeHøyde = %.4f - %.4f - %.4f\n" "TilsynelatendeHøyde = %.4f\n" -#: src/Sight.cpp:586 src/Sight.cpp:789 +#: src\Sight.cpp:607 src\Sight.cpp:810 src\Sight.cpp.bak:608 +#: src\Sight.cpp.bak:811 #, c-format msgid "\n" "Refraction Correction\n" @@ -462,7 +531,8 @@ msgstr "\n" "x =tan(Pi/180*%.4f + 4.848e-2*(Pi/180) / (tan(Pi/180*%.4f) + .028))\n" "x = %.4f\n" -#: src/Sight.cpp:591 src/Sight.cpp:794 +#: src\Sight.cpp:612 src\Sight.cpp:815 src\Sight.cpp.bak:613 +#: src\Sight.cpp.bak:816 #, c-format msgid "RefractionCorrection = .267 * Pressure / (x*(Temperature + 273.15)) / 60.0\n" "RefractionCorrection = .267 * %.4f / (x*(%.4f + 273.15)) / 60.0\n" @@ -471,14 +541,16 @@ msgstr "BrytningsRettelse = .267 * Trykk / (x*(Temperatur + 273.15)) / 60.0\n" "BrytningsRettelse = .267 * %.4f / (x*(%.4f + 273.15)) / 60.0\n" "BrytningsRettelse = %.4f\n" -#: src/Sight.cpp:606 src/Sight.cpp:808 +#: src\Sight.cpp:627 src\Sight.cpp:829 src\Sight.cpp.bak:628 +#: src\Sight.cpp.bak:830 #, c-format msgid "\n" "Sun selected, Limb Correction\n" "ra = %.4f, lc = 0.266564/ra = %.4f\n" msgstr "" -#: src/Sight.cpp:616 src/Sight.cpp:732 +#: src\Sight.cpp:637 src\Sight.cpp:753 src\Sight.cpp.bak:638 +#: src\Sight.cpp.bak:754 #, c-format msgid "\n" "Moon selected, Limb Correction\n" @@ -487,22 +559,26 @@ msgid "\n" "lc = %.4f\n" msgstr "" -#: src/Sight.cpp:626 src/Sight.cpp:741 src/Sight.cpp:816 +#: src\Sight.cpp:647 src\Sight.cpp:762 src\Sight.cpp:837 src\Sight.cpp.bak:648 +#: src\Sight.cpp.bak:763 src\Sight.cpp.bak:838 msgid "Upper Limb" msgstr "Øvre kant" -#: src/Sight.cpp:629 src/Sight.cpp:744 src/Sight.cpp:819 +#: src\Sight.cpp:650 src\Sight.cpp:765 src\Sight.cpp:840 src\Sight.cpp.bak:651 +#: src\Sight.cpp.bak:766 src\Sight.cpp.bak:841 msgid "Lower Limb" msgstr "Nedre kant" -#: src/Sight.cpp:632 src/Sight.cpp:822 +#: src\Sight.cpp:653 src\Sight.cpp:843 src\Sight.cpp.bak:654 +#: src\Sight.cpp.bak:844 #, c-format msgid "\n" "LimbCorrection = %.4f\n" msgstr "\n" "Korreksjon av kant = %.4f\n" -#: src/Sight.cpp:636 src/Sight.cpp:826 +#: src\Sight.cpp:657 src\Sight.cpp:847 src\Sight.cpp.bak:658 +#: src\Sight.cpp.bak:848 #, c-format msgid "\n" "Corrected Altitude\n" @@ -511,28 +587,31 @@ msgid "\n" "CorrectedAltitude = %.4f\n" msgstr "" -#: src/Sight.cpp:650 src/Sight.cpp:840 +#: src\Sight.cpp:671 src\Sight.cpp:861 src\Sight.cpp.bak:672 +#: src\Sight.cpp.bak:862 #, c-format msgid "\n" "Sun selected, parallax correction\n" "rad = %.4f, HP = 0.002442/rad = %.4f\n" msgstr "" -#: src/Sight.cpp:659 src/Sight.cpp:764 +#: src\Sight.cpp:680 src\Sight.cpp:785 src\Sight.cpp.bak:681 +#: src\Sight.cpp.bak:786 #, c-format msgid "\n" "Moon selected, parallax correction\n" "HP = %.4f\n" msgstr "" -#: src/Sight.cpp:665 src/Sight.cpp:846 +#: src\Sight.cpp:686 src\Sight.cpp:867 src\Sight.cpp.bak:687 +#: src\Sight.cpp.bak:868 #, c-format msgid "ParallaxCorrection = -180/Pi * asin( sin(Pi/180 * HP ) * cos(Pi/180 * CorrectedAltitude))\n" "ParallaxCorrection = -180/Pi * asin( sin(Pi/180 * %.4f ) * cos(Pi/180 * %.4f))\n" "ParallaxCorrection = %.4f\n" msgstr "" -#: src/Sight.cpp:672 +#: src\Sight.cpp:693 src\Sight.cpp.bak:694 #, c-format msgid "\n" "Observed Altitude (Ho)\n" @@ -541,16 +620,16 @@ msgid "\n" "ObservedAltitude = %.4f\n" msgstr "" -#: src/Sight.cpp:706 +#: src\Sight.cpp:727 src\Sight.cpp.bak:728 #, c-format msgid "\n" "Apparent Moon Altitude (Ha)\n" "ApparentAltitudeMoon = MeasurementMoon - IndexCorrection - EyeHeightCorrection\n" -" ApparentAltitudeMoon = %.4f - %.4f - %.4f\n" +"ApparentAltitudeMoon = %.4f - %.4f - %.4f\n" "ApparentAltitudeMoon = %.4f\n" msgstr "" -#: src/Sight.cpp:717 +#: src\Sight.cpp:738 src\Sight.cpp.bak:739 #, c-format msgid "\n" "Refraction Correction\n" @@ -559,20 +638,21 @@ msgid "\n" "x = %.4f\n" msgstr "" -#: src/Sight.cpp:722 +#: src\Sight.cpp:743 src\Sight.cpp.bak:744 #, c-format msgid "RefractionCorrectionMoon = .267 * Pressure / (x*(Temperature + 273.15)) / 60.0\n" "RefractionCorrectionMoon = .267 * %.4f / (x*(%.4f + 273.15)) / 60.0\n" "RefractionCorrectionMoon = %.4f\n" msgstr "" -#: src/Sight.cpp:747 src/Sight.cpp:750 +#: src\Sight.cpp:768 src\Sight.cpp:771 src\Sight.cpp.bak:769 +#: src\Sight.cpp.bak:772 #, c-format msgid "\n" "LimbCorrectionMoon = %.4f\n" msgstr "" -#: src/Sight.cpp:753 +#: src\Sight.cpp:774 src\Sight.cpp.bak:775 #, c-format msgid "\n" "Corrected Altitude\n" @@ -581,108 +661,82 @@ msgid "\n" "CorrectedAltitudeMoon = %.4f\n" msgstr "" -#: src/Sight.cpp:768 +#: src\Sight.cpp:789 src\Sight.cpp.bak:790 #, c-format msgid "ParallaxCorrectionMoon = -180/Pi * asin( sin(Pi/180 * HP ) * cos(Pi/180 * CorrectedAltitude))\n" -" ParallaxCorrectionMoon = -180/Pi * asin( sin(Pi/180 * %.4f ) * cos(Pi/180 * %.4f))\n" +"ParallaxCorrectionMoon = -180/Pi * asin( sin(Pi/180 * %.4f ) * cos(Pi/180 * %.4f))\n" "ParallaxCorrectionMoon = %.4f\n" msgstr "" -#: src/Sight.cpp:778 -#, c-format -msgid "\n" -"Apparent Altitude (Ha)\n" -"ApparentAltitude = Measurement - IndexCorrection - EyeHeightCorrection\n" -" ApparentAltitude = %.4f - %.4f - %.4f\n" -"ApparentAltitude = %.4f\n" -msgstr "" - -#: src/Sight.cpp:857 +#: src\Sight.cpp:878 src\Sight.cpp.bak:879 #, c-format msgid "CorrectionsMoon = %.4f\n" "CorrectionsBody = %.4f\n" "Corrections = abs(CorrectionsMoon - CorrectionsBody) = %.4f\n" msgstr "" -#: src/Sight.cpp:863 +#: src\Sight.cpp:884 src\Sight.cpp.bak:885 #, c-format msgid "CorrectedMeasurement = Measurement - Corrections - IndexCorrection\n" "CorrectedMeasurement = %.4f - %.4f - %.4f\n" "CorrectedMeasurement = %.4f\n" msgstr "" -#: src/Sight.cpp:888 +#: src\Sight.cpp:909 src\Sight.cpp.bak:910 msgid "\n" "Calculated angle between Moon and " msgstr "" -#: src/Sight.cpp:890 +#: src\Sight.cpp:911 src\Sight.cpp.bak:912 #, c-format msgid "\n" "Error from measurement: %.4f" msgstr "" -#: src/Sight.cpp:894 +#: src\Sight.cpp:915 src\Sight.cpp.bak:916 msgid "\n" "Moon takes 28 days to orbit, one degree of error takes 6720 seconds" msgstr "" -#: src/Sight.cpp:895 +#: src\Sight.cpp:916 src\Sight.cpp.bak:917 #, c-format msgid "\n" "Time correction %.4f seconds" msgstr "" -#: src/Sight.cpp:1099 +#: src\Sight.cpp:1120 src\Sight.cpp.bak:1121 msgid "Building bearing Sight Positions" msgstr "Retning til observert bygning" -#: src/SightDialog.cpp:172 +#: src\SightDialog.cpp:184 msgid "Measurement certainty likely set to small, sight may not appear " msgstr "Målingen er sikkert satt for lavt, sikt kan kanskje ikke oppnås " -#: src/SightDialog.cpp:173 src/SightDialog.cpp:256 +#: src\SightDialog.cpp:185 src\SightDialog.cpp:279 msgid "Warning" msgstr "Advarsel" -#: src/SightDialog.cpp:255 +#: src\SightDialog.cpp:278 msgid "Lunar shot will be invalid taking distance from moon to itself" msgstr "" -#: src/celestial_navigation_pi.cpp:90 -msgid "Failed to load file:\n" -msgstr "Kunne ikke laste fil:\n" - -#: src/celestial_navigation_pi.cpp:91 -msgid "\n" -"Magnetic data will not be available for the celestial navigation plugin." -msgstr "\n" -"Magnetisk data vil ikke være tilgjengelig for utvidelsen astronomisk navigasjon." - -#: src/celestial_navigation_pi.cpp:92 -msgid "OpenCPN Alert" -msgstr "OpenCPN Alarm" +#: src\celestial_navigation_pi.cpp:179 +msgid "open error" +msgstr "Åpne feil" -#: src/celestial_navigation_pi.cpp:157 -msgid "Celestial Navigation PlugIn for OpenCPN" -msgstr "Astronomisk Navigasjons utvidelse for OpenCPN" - -#: src/celestial_navigation_pi.cpp:162 -msgid "Celestial Navigation PlugIn for OpenCPN.\n" -"Implements nautical almanac for sun, moon, planets,\n" -"and various navigational stars.\n" -"Compute position fix from celestial measurements." +#: src\celestial_navigation_pi.cpp:180 +msgid "corrupt record" msgstr "" -#: src/FixDialog.cpp:189 -msgid "Shifted sights are not used to compute a fix, determine fix visually instead.\n" -msgstr "Forskyvde legemer brukes ikke til å beregne posisjon, beregn posisjon visuelt i stedet.\n" +#: src\celestial_navigation_pi.cpp:181 +msgid "too many models" +msgstr "" -#: src/FixDialog.cpp:190 -msgid "Fix Position" -msgstr "Satt posisjon" +#: src\celestial_navigation_pi.cpp:184 +msgid "Magnetic data will not be available for the celestial navigation plugin." +msgstr "" -#: src/FixDialog.cpp:335 src/FixDialog.cpp:336 src/FixDialog.cpp:337 -msgid " N/A " -msgstr " N/A " +#: src\celestial_navigation_pi.cpp:185 +msgid "OpenCPN Alert" +msgstr "OpenCPN Alarm" diff --git a/po/nl_NL.po b/po/nl_NL.po index 95b4ef4..55d84d8 100644 --- a/po/nl_NL.po +++ b/po/nl_NL.po @@ -2,404 +2,468 @@ msgid "" msgstr "" "Project-Id-Version: opencpn\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-02-28 14:10-0300\n" -"PO-Revision-Date: 2018-01-24 19:40-0500\n" -"Last-Translator: nohal \n" +"POT-Creation-Date: 2021-10-27 22:15+0200\n" +"PO-Revision-Date: 2023-10-04 18:32\n" +"Last-Translator: \n" "Language-Team: Dutch\n" "Language: nl_NL\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -"X-Generator: crowdin.com\n" "X-Crowdin-Project: opencpn\n" +"X-Crowdin-Project-ID: 49843\n" "X-Crowdin-Language: nl\n" "X-Crowdin-File: /plugins/celestial_navigation_pi/po/celestial_navigation_pi.pot\n" +"X-Crowdin-File-ID: 108\n" -#: src/CelestialNavigationDialog.cpp:123 src/CelestialNavigationUI.cpp:132 +#: src\CelestialNavigationDialog-2.3.5.1-no-android.cpp:149 +#: src\CelestialNavigationDialog-2.3.5.2-android.cpp:150 +#: src\CelestialNavigationDialog-partial-android.cpp:149 +#: src\CelestialNavigationDialog.cpp:150 src\CelestialNavigationUI.cpp:137 msgid "Type" msgstr "Type" -#: src/CelestialNavigationDialog.cpp:124 +#: src\CelestialNavigationDialog-2.3.5.1-no-android.cpp:150 +#: src\CelestialNavigationDialog-2.3.5.2-android.cpp:151 +#: src\CelestialNavigationDialog-partial-android.cpp:150 +#: src\CelestialNavigationDialog.cpp:151 msgid "Body" msgstr "Hemellichaam" -#: src/CelestialNavigationDialog.cpp:125 -msgid "Time (UTC)" -msgstr "Tijd (UTC)" - -#: src/CelestialNavigationDialog.cpp:126 src/CelestialNavigationUI.cpp:179 +#: src\CelestialNavigationDialog-2.3.5.1-no-android.cpp:151 +#: src\CelestialNavigationDialog-2.3.5.2-android.cpp:152 +#: src\CelestialNavigationDialog-partial-android.cpp:151 +#: src\CelestialNavigationDialog.cpp:152 src\CelestialNavigationUI.cpp:328 +msgid "Time (UT)" +msgstr "Tijd (UT)" + +#: src\CelestialNavigationDialog-2.3.5.1-no-android.cpp:152 +#: src\CelestialNavigationDialog-2.3.5.2-android.cpp:153 +#: src\CelestialNavigationDialog-partial-android.cpp:152 +#: src\CelestialNavigationDialog.cpp:153 src\CelestialNavigationUI.cpp:184 msgid "Measurement" msgstr "Observatie" -#: src/CelestialNavigationDialog.cpp:127 src/CelestialNavigationUI.cpp:376 +#: src\CelestialNavigationDialog-2.3.5.1-no-android.cpp:153 +#: src\CelestialNavigationDialog-2.3.5.2-android.cpp:154 +#: src\CelestialNavigationDialog-partial-android.cpp:153 +#: src\CelestialNavigationDialog.cpp:154 src\CelestialNavigationUI.cpp:381 msgid "Color" msgstr "Kleur" -#: src/CelestialNavigationDialog.cpp:193 -msgid "Failed to load file." -msgstr "Kon bestand niet laden." - -#: src/CelestialNavigationDialog.cpp:198 +#: src\CelestialNavigationDialog-2.3.5.1-no-android.cpp:266 +#: src\CelestialNavigationDialog-2.3.5.2-android.cpp:272 +#: src\CelestialNavigationDialog-partial-android.cpp:266 +#: src\CelestialNavigationDialog.cpp:272 src\celestial_navigation_pi.cpp:177 +msgid "Failed to load file: " +msgstr "Bestand laden mislukt." + +#: src\CelestialNavigationDialog-2.3.5.1-no-android.cpp:271 +#: src\CelestialNavigationDialog-2.3.5.2-android.cpp:277 +#: src\CelestialNavigationDialog-partial-android.cpp:271 +#: src\CelestialNavigationDialog.cpp:277 msgid "Invalid xml file" msgstr "Ongeldige XML-bestand" -#: src/CelestialNavigationDialog.cpp:250 +#: src\CelestialNavigationDialog-2.3.5.1-no-android.cpp:323 +#: src\CelestialNavigationDialog-2.3.5.2-android.cpp:329 +#: src\CelestialNavigationDialog-partial-android.cpp:323 +#: src\CelestialNavigationDialog.cpp:329 msgid "Unrecognized xml node" msgstr "Niet-herkend XML-knooppunt" -#: src/CelestialNavigationDialog.cpp:260 -msgid "Weather Routing" -msgstr "Weerroutering" +#: src\CelestialNavigationDialog-2.3.5.1-no-android.cpp:332 +#: src\CelestialNavigationDialog-2.3.5.1-no-android.cpp:392 +#: src\CelestialNavigationDialog-2.3.5.1-no-android.cpp:532 +#: src\CelestialNavigationDialog-2.3.5.2-android.cpp:338 +#: src\CelestialNavigationDialog-2.3.5.2-android.cpp:398 +#: src\CelestialNavigationDialog-2.3.5.2-android.cpp:538 +#: src\CelestialNavigationDialog-partial-android.cpp:332 +#: src\CelestialNavigationDialog-partial-android.cpp:392 +#: src\CelestialNavigationDialog-partial-android.cpp:532 +#: src\CelestialNavigationDialog.cpp:338 src\CelestialNavigationDialog.cpp:398 +#: src\CelestialNavigationDialog.cpp:538 src\Sight.cpp:1120 +#: src\Sight.cpp.bak:1121 src\celestial_navigation_pi.cpp:95 +#: src\celestial_navigation_pi.cpp:99 +msgid "Celestial Navigation" +msgstr "Astronomische navigatie" -#: src/CelestialNavigationDialog.cpp:320 +#: src\CelestialNavigationDialog-2.3.5.1-no-android.cpp:391 +#: src\CelestialNavigationDialog-2.3.5.2-android.cpp:397 +#: src\CelestialNavigationDialog-partial-android.cpp:391 +#: src\CelestialNavigationDialog.cpp:397 msgid "Failed to save xml file: " msgstr "Kon XML-bestand niet opslaan: " -#: src/CelestialNavigationDialog.cpp:321 src/CelestialNavigationDialog.cpp:466 -#: src/Sight.cpp:1099 src/celestial_navigation_pi.cpp:99 -#: src/celestial_navigation_pi.cpp:152 -msgid "Celestial Navigation" -msgstr "Astronomische navigatie" - -#: src/CelestialNavigationDialog.cpp:351 +#: src\CelestialNavigationDialog-2.3.5.1-no-android.cpp:424 +#: src\CelestialNavigationDialog-2.3.5.2-android.cpp:430 +#: src\CelestialNavigationDialog-partial-android.cpp:424 +#: src\CelestialNavigationDialog.cpp:430 msgid "Time Correction" msgstr "Tijdcorrectie" -#: src/CelestialNavigationDialog.cpp:409 +#: src\CelestialNavigationDialog-2.3.5.1-no-android.cpp:473 +#: src\CelestialNavigationDialog-2.3.5.2-android.cpp:479 +#: src\CelestialNavigationDialog-partial-android.cpp:473 +#: src\CelestialNavigationDialog.cpp:479 msgid "Sun" msgstr "Zon" -#: src/CelestialNavigationDialog.cpp:465 +#: src\CelestialNavigationDialog-2.3.5.1-no-android.cpp:531 +#: src\CelestialNavigationDialog-2.3.5.2-android.cpp:537 +#: src\CelestialNavigationDialog-partial-android.cpp:531 +#: src\CelestialNavigationDialog.cpp:537 msgid "Are you sure you want to delete all sights?" msgstr "Weet u zeker dat u alle observaties wilt verwijderen?" -#: src/CelestialNavigationDialog.cpp:510 +#: src\CelestialNavigationDialog-2.3.5.1-no-android.cpp:582 +#: src\CelestialNavigationDialog-2.3.5.2-android.cpp:588 +#: src\CelestialNavigationDialog-partial-android.cpp:582 +#: src\CelestialNavigationDialog.cpp:588 msgid "Celestial_Navigation_Information.html" msgstr "Celestial_Navigation_Information.html" -#: src/CelestialNavigationDialog.cpp:516 -msgid "Show" -msgstr "Toon" - -#: src/CelestialNavigationDialog.cpp:516 src/CelestialNavigationUI.cpp:58 +#: src\CelestialNavigationDialog-2.3.5.1-no-android.cpp:589 +#: src\CelestialNavigationDialog-2.3.5.2-android.cpp:595 +#: src\CelestialNavigationDialog-partial-android.cpp:589 +#: src\CelestialNavigationDialog.cpp:595 src\CelestialNavigationUI.cpp:55 msgid "Hide" msgstr "Verberg" -#: src/CelestialNavigationUI.cpp:40 +#: src\CelestialNavigationDialog-2.3.5.1-no-android.cpp:589 +#: src\CelestialNavigationDialog-2.3.5.2-android.cpp:595 +#: src\CelestialNavigationDialog-partial-android.cpp:589 +#: src\CelestialNavigationDialog.cpp:595 +msgid "Show" +msgstr "Toon" + +#: src\CelestialNavigationUI.cpp:40 msgid "New" msgstr "Nieuwe meting" -#: src/CelestialNavigationUI.cpp:43 -msgid "Edit" -msgstr "Bewerken" - -#: src/CelestialNavigationUI.cpp:46 -msgid "Delete" -msgstr "Verwijderen" - -#: src/CelestialNavigationUI.cpp:49 -msgid "Delete All" -msgstr "Alles verwijderen" - -#: src/CelestialNavigationUI.cpp:52 src/CelestialNavigationUI.h:281 +#: src\CelestialNavigationUI.cpp:43 src\CelestialNavigationUI.h:286 msgid "Fix" msgstr "Fix" -#: src/CelestialNavigationUI.cpp:55 +#: src\CelestialNavigationUI.cpp:46 +msgid "Duplicate" +msgstr "Dupliceer" + +#: src\CelestialNavigationUI.cpp:49 msgid "Clock Offset" msgstr "Klokverschil" -#: src/CelestialNavigationUI.cpp:61 +#: src\CelestialNavigationUI.cpp:52 +msgid "Edit" +msgstr "Bewerken" + +#: src\CelestialNavigationUI.cpp:58 +msgid "Delete" +msgstr "Verwijderen" + +#: src\CelestialNavigationUI.cpp:61 msgid "Information" msgstr "Informatie" -#: src/CelestialNavigationUI.cpp:136 src/CelestialNavigationUI.cpp:667 -#: src/Sight.h:49 +#: src\CelestialNavigationUI.cpp:64 +msgid "Delete All" +msgstr "Alles verwijderen" + +#: src\CelestialNavigationUI.cpp:141 src\CelestialNavigationUI.cpp:674 +#: src\Sight.h:49 msgid "Altitude" msgstr "hoogte" -#: src/CelestialNavigationUI.cpp:136 src/CelestialNavigationUI.cpp:677 -#: src/Sight.h:49 +#: src\CelestialNavigationUI.cpp:141 src\CelestialNavigationUI.cpp:683 +#: src\Sight.h:49 msgid "Azimuth" msgstr "azimuth" -#: src/CelestialNavigationUI.cpp:136 src/Sight.h:49 +#: src\CelestialNavigationUI.cpp:141 src\Sight.h:49 msgid "Lunar" -msgstr "maansafstand" +msgstr "Maansafstand" -#: src/CelestialNavigationUI.cpp:142 +#: src\CelestialNavigationUI.cpp:147 msgid "Magnetic Azimuth" msgstr "Azimuth t.o.v. magn. noorden" -#: src/CelestialNavigationUI.cpp:145 +#: src\CelestialNavigationUI.cpp:150 msgid "Celestial Body" msgstr "Hemellichaam" -#: src/CelestialNavigationUI.cpp:154 +#: src\CelestialNavigationUI.cpp:159 msgid "Find" msgstr "Zoeken" -#: src/CelestialNavigationUI.cpp:157 +#: src\CelestialNavigationUI.cpp:162 msgid "Limb" msgstr "Meetpunt" -#: src/CelestialNavigationUI.cpp:161 -msgid "Lower" -msgstr "onderrand" - -#: src/CelestialNavigationUI.cpp:161 +#: src\CelestialNavigationUI.cpp:166 msgid "Center" -msgstr "middelpunt" +msgstr "Middelpunt" + +#: src\CelestialNavigationUI.cpp:166 +msgid "Lower" +msgstr "Onderrand" -#: src/CelestialNavigationUI.cpp:161 +#: src\CelestialNavigationUI.cpp:166 msgid "Upper" -msgstr "bovenrand" +msgstr "Bovenrand" -#: src/CelestialNavigationUI.cpp:186 src/CelestialNavigationUI.cpp:193 -#: src/CelestialNavigationUI.cpp:223 src/CelestialNavigationUI.cpp:230 +#: src\CelestialNavigationUI.cpp:191 src\CelestialNavigationUI.cpp:198 +#: src\CelestialNavigationUI.cpp:228 src\CelestialNavigationUI.cpp:235 msgid "0" msgstr "0" -#: src/CelestialNavigationUI.cpp:189 src/CelestialNavigationUI.cpp:348 -#: src/CelestialNavigationUI.cpp:598 +#: src\CelestialNavigationUI.cpp:194 src\CelestialNavigationUI.cpp:353 +#: src\CelestialNavigationUI.cpp:605 msgid "Degrees" msgstr "graden" -#: src/CelestialNavigationUI.cpp:196 src/CelestialNavigationUI.cpp:278 -#: src/CelestialNavigationUI.cpp:439 +#: src\CelestialNavigationUI.cpp:201 src\CelestialNavigationUI.cpp:283 +#: src\CelestialNavigationUI.cpp:444 msgid "Minutes" msgstr "minuten" -#: src/CelestialNavigationUI.cpp:200 +#: src\CelestialNavigationUI.cpp:205 msgid "10" msgstr "10" -#: src/CelestialNavigationUI.cpp:203 +#: src\CelestialNavigationUI.cpp:208 msgid "Minutes Certainty" msgstr "Onzekerheid in minuten" -#: src/CelestialNavigationUI.cpp:217 +#: src\CelestialNavigationUI.cpp:222 msgid "Lunar Altitude" msgstr "Maan's hoogte" -#: src/CelestialNavigationUI.cpp:226 +#: src\CelestialNavigationUI.cpp:231 msgid "Body Altitude" msgstr "Hoogte 2e hemellichaam" -#: src/CelestialNavigationUI.cpp:243 +#: src\CelestialNavigationUI.cpp:248 msgid "Sight" msgstr "Sextantmeting/Azimuth" -#: src/CelestialNavigationUI.cpp:271 +#: src\CelestialNavigationUI.cpp:276 msgid "Hours" msgstr "uren (tijd in UT!)" -#: src/CelestialNavigationUI.cpp:285 src/CelestialNavigationUI.cpp:303 -#: src/CelestialNavigationUI.cpp:860 +#: src\CelestialNavigationUI.cpp:290 src\CelestialNavigationUI.cpp:308 +#: src\CelestialNavigationUI.cpp:869 msgid "Seconds" msgstr "seconden" -#: src/CelestialNavigationUI.cpp:293 +#: src\CelestialNavigationUI.cpp:298 msgid "Certainty" msgstr "Meetonzekerheid" -#: src/CelestialNavigationUI.cpp:323 -msgid "Time" -msgstr "Tijdmeting" - -#: src/CelestialNavigationUI.cpp:330 src/CelestialNavigationUI.cpp:580 +#: src\CelestialNavigationUI.cpp:335 src\CelestialNavigationUI.cpp:587 msgid "Distance" msgstr "Verheid" -#: src/CelestialNavigationUI.cpp:337 src/CelestialNavigationUI.cpp:587 +#: src\CelestialNavigationUI.cpp:342 src\CelestialNavigationUI.cpp:594 msgid "Nm" msgstr "NM" -#: src/CelestialNavigationUI.cpp:341 src/CelestialNavigationUI.cpp:591 +#: src\CelestialNavigationUI.cpp:346 src\CelestialNavigationUI.cpp:598 msgid "Bearing" msgstr "Richting" -#: src/CelestialNavigationUI.cpp:352 src/CelestialNavigationUI.cpp:602 +#: src\CelestialNavigationUI.cpp:357 src\CelestialNavigationUI.cpp:609 msgid "Magnetic Bearing" msgstr "Richting t.o.v. magn. noorden" -#: src/CelestialNavigationUI.cpp:359 +#: src\CelestialNavigationUI.cpp:364 msgid "DR Shift" msgstr "Verzeil gispositie" -#: src/CelestialNavigationUI.cpp:366 +#: src\CelestialNavigationUI.cpp:371 msgid "Transparency" msgstr "Transparantie" -#: src/CelestialNavigationUI.cpp:387 +#: src\CelestialNavigationUI.cpp:392 msgid "Config" msgstr "Weergave" -#: src/CelestialNavigationUI.cpp:399 +#: src\CelestialNavigationUI.cpp:404 msgid "Eye Height" msgstr "Ooghoogte" -#: src/CelestialNavigationUI.cpp:403 +#: src\CelestialNavigationUI.cpp:408 msgid "2" msgstr "2" -#: src/CelestialNavigationUI.cpp:406 +#: src\CelestialNavigationUI.cpp:411 msgid "Meters" msgstr "meter" -#: src/CelestialNavigationUI.cpp:410 +#: src\CelestialNavigationUI.cpp:415 msgid "Temperature" msgstr "Luchttemperatuur" -#: src/CelestialNavigationUI.cpp:417 +#: src\CelestialNavigationUI.cpp:422 msgid "Celcius" msgstr "Celsius" -#: src/CelestialNavigationUI.cpp:421 +#: src\CelestialNavigationUI.cpp:426 msgid "Pressure" msgstr "Luchtdruk" -#: src/CelestialNavigationUI.cpp:428 +#: src\CelestialNavigationUI.cpp:433 msgid "MilliBars" msgstr "hPa" -#: src/CelestialNavigationUI.cpp:432 +#: src\CelestialNavigationUI.cpp:437 msgid "Index Error" msgstr "Indexfout sextant" -#: src/CelestialNavigationUI.cpp:446 +#: src\CelestialNavigationUI.cpp:451 msgid "Set As Defaults" msgstr "Instellen als standaard" -#: src/CelestialNavigationUI.cpp:453 +#: src\CelestialNavigationUI.cpp:458 msgid "Parameters" -msgstr "Correctiegegevens" +msgstr "Parameters" -#: src/CelestialNavigationUI.cpp:469 +#: src\CelestialNavigationUI.cpp:474 msgid "Calculations" msgstr "Berekeningen" -#: src/CelestialNavigationUI.cpp:571 +#: src\CelestialNavigationUI.cpp:578 msgid "Shift all visible Sights" msgstr "Verzeil alle zichtbare waarnemingen" -#: src/CelestialNavigationUI.cpp:649 src/CelestialNavigationUI.cpp:760 +#: src\CelestialNavigationUI.cpp:656 src\CelestialNavigationUI.cpp:769 msgid "Latitude" msgstr "Breedte" -#: src/CelestialNavigationUI.cpp:658 src/CelestialNavigationUI.cpp:768 +#: src\CelestialNavigationUI.cpp:665 src\CelestialNavigationUI.cpp:777 msgid "Longitude" msgstr "Lengte" -#: src/CelestialNavigationUI.cpp:669 src/CelestialNavigationUI.cpp:679 -msgid "MyLabel" -msgstr "MijnLabel" +#: src\CelestialNavigationUI.cpp:691 +msgid "Boat Position" +msgstr "Boot Positie" -#: src/CelestialNavigationUI.cpp:686 -msgid "Done" -msgstr "Klaar" - -#: src/CelestialNavigationUI.cpp:689 +#: src\CelestialNavigationUI.cpp:695 msgid "Magnetic" msgstr "Magnetisch" -#: src/CelestialNavigationUI.cpp:753 +#: src\CelestialNavigationUI.cpp:698 +msgid "Done" +msgstr "Klaar" + +#: src\CelestialNavigationUI.cpp:762 msgid "Fix From Visible Sights" msgstr "Astronomisch bestek" -#: src/CelestialNavigationUI.cpp:764 +#: src\CelestialNavigationUI.cpp:773 msgid " N/A " msgstr " N/B " -#: src/CelestialNavigationUI.cpp:772 +#: src\CelestialNavigationUI.cpp:781 msgid " N/A " msgstr " N/B " -#: src/CelestialNavigationUI.cpp:776 +#: src\CelestialNavigationUI.cpp:785 msgid "Error" msgstr "Fout" -#: src/CelestialNavigationUI.cpp:780 +#: src\CelestialNavigationUI.cpp:789 msgid " N/A " msgstr " N/B " -#: src/CelestialNavigationUI.cpp:787 src/CelestialNavigationUI.cpp:794 +#: src\CelestialNavigationUI.cpp:796 src\CelestialNavigationUI.cpp:803 msgid "Initial" msgstr "Startwaarde" -#: src/CelestialNavigationUI.cpp:801 +#: src\CelestialNavigationUI.cpp:810 msgid "Alg" msgstr "Basis" -#: src/CelestialNavigationUI.cpp:806 +#: src\CelestialNavigationUI.cpp:815 msgid "Plane" msgstr "platte vlak" -#: src/CelestialNavigationUI.cpp:807 +#: src\CelestialNavigationUI.cpp:816 msgid "Sphere" msgstr "bol" -#: src/CelestialNavigationUI.cpp:808 +#: src\CelestialNavigationUI.cpp:817 msgid "Cone" msgstr "kegel" -#: src/CelestialNavigationUI.cpp:809 +#: src\CelestialNavigationUI.cpp:818 msgid "Cone 2" msgstr "kegel 2" -#: src/CelestialNavigationUI.cpp:813 +#: src\CelestialNavigationUI.cpp:822 msgid "Go" msgstr "Start" -#: src/CelestialNavigationUI.cpp:850 src/CelestialNavigationUI.h:303 +#: src\CelestialNavigationUI.cpp:859 src\CelestialNavigationUI.h:308 msgid "Clock Correction" msgstr "Klokcorrectie" -#: src/CelestialNavigationUI.h:78 +#: src\CelestialNavigationUI.h:82 msgid "Celestial Navigation Sights" msgstr "Astronomische positiebepaling" -#: src/CelestialNavigationUI.h:169 +#: src\CelestialNavigationUI.h:173 msgid "Sight Properties" msgstr "Meetgegevens" -#: src/CelestialNavigationUI.h:200 +#: src\CelestialNavigationUI.h:204 msgid "Dead Reckoning shift" msgstr "Verzeil gispositie" -#: src/CelestialNavigationUI.h:227 +#: src\CelestialNavigationUI.h:232 msgid "Find Celestial Body" msgstr "Zoek hemellichaam" -#: src/Sight.cpp:160 +#: src\FixDialog.cpp:192 +msgid "Shifted sights are not used to compute a fix, determine fix visually instead.\n" +msgstr "Verzeilde positielijnen kunnen niet worden gebruikt voor een bestek, beoordeel uw geografische positie visueel op de kaart.\n" + +#: src\FixDialog.cpp:193 +msgid "Fix Position" +msgstr "Bestek" + +#: src\FixDialog.cpp:338 src\FixDialog.cpp:339 src\FixDialog.cpp:340 +msgid " N/A " +msgstr " N/B " + +#: src\Sight.cpp:172 src\Sight.cpp.bak:173 msgid "Astrolab failed, data unavailable:\n" msgstr "Almanakfout, gegevens niet beschikbaar:\n" -#: src/Sight.cpp:161 +#: src\Sight.cpp:173 src\Sight.cpp.bak:174 msgid "\n" "Did you forget to install vsop87d.txt?\n" msgstr "\n" -"Hebt u vergeten om 'vsop87d.txt' te installeren?\n" +"Bent u vergeten om 'vsop87d.txt' te installeren?\n" -#: src/Sight.cpp:162 +#: src\Sight.cpp:174 src\Sight.cpp.bak:175 msgid "The plugin will not work correctly" msgstr "Zonder dit almanakbestand zal de plugin niet functioneren." -#: src/Sight.cpp:163 +#: src\Sight.cpp:175 src\Sight.cpp.bak:176 msgid "Failure Alert" msgstr "Foutmelding" -#: src/Sight.cpp:474 +#: src\Sight.cpp:495 src\Sight.cpp.bak:496 #, c-format msgid "Applying clock correction of %d seconds\n\n" msgstr "Toepassen tijdmetercorrectie van %d seconden\n\n" -#: src/Sight.cpp:536 +#: src\Sight.cpp:557 src\Sight.cpp.bak:558 msgid "Almanac Data For " msgstr "Almanakgegevens voor: " -#: src/Sight.cpp:537 +#: src\Sight.cpp:558 src\Sight.cpp.bak:559 #, c-format msgid "\n" "Geographical Position (lat, lon) = %.4f %.4f\n" @@ -418,16 +482,19 @@ msgstr "\n\n" " SD = %.1f'\n\n" " HP = %.1f'\n\n" -#: src/Sight.cpp:552 src/Sight.cpp:690 +#: src\Sight.cpp:573 src\Sight.cpp:711 src\Sight.cpp.bak:574 +#: src\Sight.cpp.bak:712 msgid "Formulas used to calculate sight\n\n" msgstr "Gegevens en formules gebruikt voor hoogtecorrecties en bestekberekening\n\n" -#: src/Sight.cpp:556 src/Sight.cpp:694 +#: src\Sight.cpp:577 src\Sight.cpp:715 src\Sight.cpp.bak:578 +#: src\Sight.cpp.bak:716 #, c-format msgid "Index Error is %.4f degrees\n\n" msgstr " Indexfout sextant is: %.4f °\n" -#: src/Sight.cpp:561 src/Sight.cpp:699 +#: src\Sight.cpp:582 src\Sight.cpp:720 src\Sight.cpp.bak:583 +#: src\Sight.cpp.bak:721 #, c-format msgid "Eye Height is %.4f meters\n" "Height Correction Degrees = 1.758*sqrt(%.4f) / 60.0\n" @@ -436,7 +503,8 @@ msgstr " Ooghoogte is: %.3f meter\n\n" " Correctie voor Schijnbare Kimduiking (dip) in ° = 1.753*sqrt(%.3f) / 60.0\n" " Correctie voor Schijnbare Kimduiking (dip) in ° = %.3f\n" -#: src/Sight.cpp:568 +#: src\Sight.cpp:589 src\Sight.cpp:799 src\Sight.cpp.bak:590 +#: src\Sight.cpp.bak:800 #, c-format msgid "\n" "Apparent Altitude (Ha)\n" @@ -449,7 +517,8 @@ msgstr "\n\n" " Ha = %.4f - %.4f - %.4f\n\n" " Ha = %.4f\n" -#: src/Sight.cpp:586 src/Sight.cpp:789 +#: src\Sight.cpp:607 src\Sight.cpp:810 src\Sight.cpp.bak:608 +#: src\Sight.cpp.bak:811 #, c-format msgid "\n" "Refraction Correction\n" @@ -462,7 +531,8 @@ msgstr "\n\n" " x = tan(Pi/180*%.4f + 4.848e-2*(Pi/180) / (tan(Pi/180*%.4f) + .028))\n\n" " x = %.4f\n\n\n\n" -#: src/Sight.cpp:591 src/Sight.cpp:794 +#: src\Sight.cpp:612 src\Sight.cpp:815 src\Sight.cpp.bak:613 +#: src\Sight.cpp.bak:816 #, c-format msgid "RefractionCorrection = .267 * Pressure / (x*(Temperature + 273.15)) / 60.0\n" "RefractionCorrection = .267 * %.4f / (x*(%.4f + 273.15)) / 60.0\n" @@ -471,7 +541,8 @@ msgstr " R in ° = .267 * luchtdruk / (x*(temperatuur + 273.15)) / 60.0\n\ " R in ° = .267 * %.4f / (x*(%.4f + 273.15)) / 60.0\n\n" " R in ° = %.4f\n\n" -#: src/Sight.cpp:606 src/Sight.cpp:808 +#: src\Sight.cpp:627 src\Sight.cpp:829 src\Sight.cpp.bak:628 +#: src\Sight.cpp.bak:830 #, c-format msgid "\n" "Sun selected, Limb Correction\n" @@ -481,7 +552,8 @@ msgstr "\n\n" " Afstand = %.4f\n\n" " Halve Middellijn Zon = 0.266564/Afstand = %.4f\n" -#: src/Sight.cpp:616 src/Sight.cpp:732 +#: src\Sight.cpp:637 src\Sight.cpp:753 src\Sight.cpp.bak:638 +#: src\Sight.cpp.bak:754 #, c-format msgid "\n" "Moon selected, Limb Correction\n" @@ -494,22 +566,26 @@ msgstr "\n\n" " Halve Middellijn Maan = 180/Pi * asin(Pi/180*SD)\n\n" " Halve Middellijn Maan = %.4f\n" -#: src/Sight.cpp:626 src/Sight.cpp:741 src/Sight.cpp:816 +#: src\Sight.cpp:647 src\Sight.cpp:762 src\Sight.cpp:837 src\Sight.cpp.bak:648 +#: src\Sight.cpp.bak:763 src\Sight.cpp.bak:838 msgid "Upper Limb" msgstr " Bovenrand" -#: src/Sight.cpp:629 src/Sight.cpp:744 src/Sight.cpp:819 +#: src\Sight.cpp:650 src\Sight.cpp:765 src\Sight.cpp:840 src\Sight.cpp.bak:651 +#: src\Sight.cpp.bak:766 src\Sight.cpp.bak:841 msgid "Lower Limb" msgstr " Onderrand" -#: src/Sight.cpp:632 src/Sight.cpp:822 +#: src\Sight.cpp:653 src\Sight.cpp:843 src\Sight.cpp.bak:654 +#: src\Sight.cpp.bak:844 #, c-format msgid "\n" "LimbCorrection = %.4f\n" msgstr "\n\n" " Correctie Halve Middellijn = %.4f\n" -#: src/Sight.cpp:636 src/Sight.cpp:826 +#: src\Sight.cpp:657 src\Sight.cpp:847 src\Sight.cpp.bak:658 +#: src\Sight.cpp.bak:848 #, c-format msgid "\n" "Corrected Altitude\n" @@ -522,7 +598,8 @@ msgstr "\n\n" " Hx = %.4f - %.4f - %.4f\n\n" " Hx = %.4f\n" -#: src/Sight.cpp:650 src/Sight.cpp:840 +#: src\Sight.cpp:671 src\Sight.cpp:861 src\Sight.cpp.bak:672 +#: src\Sight.cpp.bak:862 #, c-format msgid "\n" "Sun selected, parallax correction\n" @@ -532,7 +609,8 @@ msgstr "\n" " Straal = %.4f\n" " HP = 0.002442/Straal = %.4f\n\n" -#: src/Sight.cpp:659 src/Sight.cpp:764 +#: src\Sight.cpp:680 src\Sight.cpp:785 src\Sight.cpp.bak:681 +#: src\Sight.cpp.bak:786 #, c-format msgid "\n" "Moon selected, parallax correction\n" @@ -541,7 +619,8 @@ msgstr "\n\n" " Horizontale Parallax (HP) en Parallax In Hoogte (PA) Maan\n\n" " HP = %.4f\n\n" -#: src/Sight.cpp:665 src/Sight.cpp:846 +#: src\Sight.cpp:686 src\Sight.cpp:867 src\Sight.cpp.bak:687 +#: src\Sight.cpp.bak:868 #, c-format msgid "ParallaxCorrection = -180/Pi * asin( sin(Pi/180 * HP ) * cos(Pi/180 * CorrectedAltitude))\n" "ParallaxCorrection = -180/Pi * asin( sin(Pi/180 * %.4f ) * cos(Pi/180 * %.4f))\n" @@ -550,7 +629,7 @@ msgstr " Correctie voor HP en Parallax In Hoogte in ° = -180/Pi * asin(sin " Correctie voor HP en Parallax In Hoogte in ° = -180/Pi * asin(sin(Pi/180 * %.3f ) * cos(Pi/180 * %.3f))\n" " Correctie voor HP en Parallax In Hoogte in ° = %.5f\n" -#: src/Sight.cpp:672 +#: src\Sight.cpp:693 src\Sight.cpp.bak:694 #, c-format msgid "\n" "Observed Altitude (Ho)\n" @@ -563,20 +642,20 @@ msgstr "\n\n" " Ho = %.4f - %.4f\n\n" " Ho = %.4f\n" -#: src/Sight.cpp:706 +#: src\Sight.cpp:727 src\Sight.cpp.bak:728 #, c-format msgid "\n" "Apparent Moon Altitude (Ha)\n" "ApparentAltitudeMoon = MeasurementMoon - IndexCorrection - EyeHeightCorrection\n" -" ApparentAltitudeMoon = %.4f - %.4f - %.4f\n" +"ApparentAltitudeMoon = %.4f - %.4f - %.4f\n" "ApparentAltitudeMoon = %.4f\n" msgstr "\n" -"Maan's schijnbare hoogte (Ha)\n" -"Maan's schijnbare hoogte = Maan's gemeten hoogte - Indexcorrectie - Ooghoogtecorrectie\n" -" Maan's schijnbare hoogte = %.4f - %.4f - %.4f\n" -"Maan's schijnbare hoogte = %.4f\n" +"Apparent Moon Altitude (Ha)\n" +"ApparentAltitudeMoon = MeasurementMoon - IndexCorrection - EyeHeightCorrection\n" +"ApparentAltitudeMoon = %.4f - %.4f - %.4f\n" +"ApparentAltitudeMoon = %.4f\n" -#: src/Sight.cpp:717 +#: src\Sight.cpp:738 src\Sight.cpp.bak:739 #, c-format msgid "\n" "Refraction Correction\n" @@ -589,7 +668,7 @@ msgstr "\n" "x = tan(Pi/180*%.4f + 4.848e-2*(Pi/180) / (tan(Pi/180*%.4f) + .028))\n" "x = %.4f\n" -#: src/Sight.cpp:722 +#: src\Sight.cpp:743 src\Sight.cpp.bak:744 #, c-format msgid "RefractionCorrectionMoon = .267 * Pressure / (x*(Temperature + 273.15)) / 60.0\n" "RefractionCorrectionMoon = .267 * %.4f / (x*(%.4f + 273.15)) / 60.0\n" @@ -598,14 +677,15 @@ msgstr "Maan's refractiecorrectie = .267 * Luchtdruk / (x*(Temperatuur + 273.15) "Maan's refractiecorrectie = .267 * %.4f / (x*(%.4f + 273.15)) / 60.0\n" "Maan's refractiecorrectie = %.4f\n" -#: src/Sight.cpp:747 src/Sight.cpp:750 +#: src\Sight.cpp:768 src\Sight.cpp:771 src\Sight.cpp.bak:769 +#: src\Sight.cpp.bak:772 #, c-format msgid "\n" "LimbCorrectionMoon = %.4f\n" msgstr "\n" "Maan's randcorrectie = %.4f\n" -#: src/Sight.cpp:753 +#: src\Sight.cpp:774 src\Sight.cpp.bak:775 #, c-format msgid "\n" "Corrected Altitude\n" @@ -618,29 +698,16 @@ msgstr "\n" "Maan's verbeterde hoogte = %.4f - %.4f - %.4f\n" "Maan's verbeterde hoogte = %.4f\n" -#: src/Sight.cpp:768 +#: src\Sight.cpp:789 src\Sight.cpp.bak:790 #, c-format msgid "ParallaxCorrectionMoon = -180/Pi * asin( sin(Pi/180 * HP ) * cos(Pi/180 * CorrectedAltitude))\n" -" ParallaxCorrectionMoon = -180/Pi * asin( sin(Pi/180 * %.4f ) * cos(Pi/180 * %.4f))\n" +"ParallaxCorrectionMoon = -180/Pi * asin( sin(Pi/180 * %.4f ) * cos(Pi/180 * %.4f))\n" "ParallaxCorrectionMoon = %.4f\n" -msgstr "Parallaxcorrectie maan = -180/Pi * asin( sin(Pi/180 * HP ) * cos(Pi/180 * Verbeterde hoogte))\n" +msgstr "Parallaxcorrectie maan = -180/Pi * asin( sin(Pi/180 * HP ) * cos(Pi/180 * Gecorrigeerde hoogte))\n" " Parallaxcorrectie maan = -180/Pi * asin( sin(Pi/180 * %.4f ) * cos(Pi/180 * %.4f))\n" "Parallaxcorrectie maan = %.4f\n" -#: src/Sight.cpp:778 -#, c-format -msgid "\n" -"Apparent Altitude (Ha)\n" -"ApparentAltitude = Measurement - IndexCorrection - EyeHeightCorrection\n" -" ApparentAltitude = %.4f - %.4f - %.4f\n" -"ApparentAltitude = %.4f\n" -msgstr "\n" -"Schijnbare hoogte (Ha)\n" -"Schijnbare hoogte = Meting - Indexcorrectie - Ooghoogtecorrectie\n" -" Schijnbare hoogte = %.4f - %.4f - %.4f\n" -"Schijnbare hoogte = %.4f\n" - -#: src/Sight.cpp:857 +#: src\Sight.cpp:878 src\Sight.cpp.bak:879 #, c-format msgid "CorrectionsMoon = %.4f\n" "CorrectionsBody = %.4f\n" @@ -649,7 +716,7 @@ msgstr "Maancorrecties = %.4f\n" "Correcties 2e hemellichaam = %.4f\n" "Correcties = abs(Maancorrecties - Correcties 2e hemellichaam) = %.4f\n" -#: src/Sight.cpp:863 +#: src\Sight.cpp:884 src\Sight.cpp.bak:885 #, c-format msgid "CorrectedMeasurement = Measurement - Corrections - IndexCorrection\n" "CorrectedMeasurement = %.4f - %.4f - %.4f\n" @@ -658,87 +725,65 @@ msgstr "Verbeterde meting = Meting - Correcties - Indexcorrectie\n" "Verbeterde meting = %.4f - %.4f - %.4f\n" "Verbeterde meting = %.4f\n" -#: src/Sight.cpp:888 +#: src\Sight.cpp:909 src\Sight.cpp.bak:910 msgid "\n" "Calculated angle between Moon and " msgstr "\n" "Berekende hoek tussen maan en " -#: src/Sight.cpp:890 +#: src\Sight.cpp:911 src\Sight.cpp.bak:912 #, c-format msgid "\n" "Error from measurement: %.4f" msgstr "\n" "Fout uit meting: %.4f" -#: src/Sight.cpp:894 +#: src\Sight.cpp:915 src\Sight.cpp.bak:916 msgid "\n" "Moon takes 28 days to orbit, one degree of error takes 6720 seconds" msgstr "\n" "Omlooptijd van de maan is 28 dagen; 6720 seconden (112 minuten) gaan voorbij voor een verschil van 1 graad" -#: src/Sight.cpp:895 +#: src\Sight.cpp:916 src\Sight.cpp.bak:917 #, c-format msgid "\n" "Time correction %.4f seconds" msgstr "\n" "Tiidcorrectie %.4f seconden" -#: src/Sight.cpp:1099 +#: src\Sight.cpp:1120 src\Sight.cpp.bak:1121 msgid "Building bearing Sight Positions" -msgstr "Berekenen ..." +msgstr "Berekenen..." -#: src/SightDialog.cpp:172 +#: src\SightDialog.cpp:184 msgid "Measurement certainty likely set to small, sight may not appear " msgstr "Waarde voor 'meetonzekerheid' is waarschijnlijk zo laag ingesteld, dat de hoogtekromme niet zichtbaar is bij een kleine kaartschaal. " -#: src/SightDialog.cpp:173 src/SightDialog.cpp:256 +#: src\SightDialog.cpp:185 src\SightDialog.cpp:279 msgid "Warning" msgstr "Waarschuwing" -#: src/SightDialog.cpp:255 +#: src\SightDialog.cpp:278 msgid "Lunar shot will be invalid taking distance from moon to itself" msgstr "Maansafstand is ongeldig als alleen de maan gebruikt wordt" -#: src/celestial_navigation_pi.cpp:90 -msgid "Failed to load file:\n" -msgstr "Kon bestand niet laden:\n" +#: src\celestial_navigation_pi.cpp:179 +msgid "open error" +msgstr "Openings fout" -#: src/celestial_navigation_pi.cpp:91 -msgid "\n" -"Magnetic data will not be available for the celestial navigation plugin." -msgstr "\n" -"Geomagnetische gegevens zijn niet beschikbaar." - -#: src/celestial_navigation_pi.cpp:92 -msgid "OpenCPN Alert" -msgstr "OpenCPN waarschuwing" +#: src\celestial_navigation_pi.cpp:180 +msgid "corrupt record" +msgstr "Beschadigde record" -#: src/celestial_navigation_pi.cpp:157 -msgid "Celestial Navigation PlugIn for OpenCPN" -msgstr "Astronomische Navigatie PlugIn voor OpenCPN" - -#: src/celestial_navigation_pi.cpp:162 -msgid "Celestial Navigation PlugIn for OpenCPN.\n" -"Implements nautical almanac for sun, moon, planets,\n" -"and various navigational stars.\n" -"Compute position fix from celestial measurements." -msgstr "PlugIn voor astronomische navigatie binnen OpenCPN\n" -"De PlugIn bevat astronomische gegevens voor zon, maan, planeten en de belangrijkste\n" -"sterren en berekent astrobestekken. De lange termijn astronomische gegevens zijn die van\n" -" VSOP87 (voor planeten, en indirect voor de zon) en ELP2000-82 (voor de maan). De Astrolabe\n" -"software routines (gebaseerd op Meeus 1998) worden gebruikt voor de berekeningen. De PlugIn\n" -"berekent de positie van de waarnemer op een geheel innovatieve wijze." - -#: src/FixDialog.cpp:189 -msgid "Shifted sights are not used to compute a fix, determine fix visually instead.\n" -msgstr "Verzeilde positielijnen kunnen niet worden gebruikt voor een bestek, beoordeel uw geografische positie visueel op de kaart.\n" +#: src\celestial_navigation_pi.cpp:181 +msgid "too many models" +msgstr "te veel modellen" -#: src/FixDialog.cpp:190 -msgid "Fix Position" -msgstr "Bestek" +#: src\celestial_navigation_pi.cpp:184 +msgid "Magnetic data will not be available for the celestial navigation plugin." +msgstr "Magnetische data zal niet beschikbaar zijn voor de celestial navigatie-plugin." -#: src/FixDialog.cpp:335 src/FixDialog.cpp:336 src/FixDialog.cpp:337 -msgid " N/A " -msgstr " N/B " +#: src\celestial_navigation_pi.cpp:185 +msgid "OpenCPN Alert" +msgstr "OpenCPN waarschuwing" diff --git a/po/pl_PL.po b/po/pl_PL.po index d94a3d0..525e158 100644 --- a/po/pl_PL.po +++ b/po/pl_PL.po @@ -2,404 +2,468 @@ msgid "" msgstr "" "Project-Id-Version: opencpn\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-02-28 14:10-0300\n" -"PO-Revision-Date: 2018-03-03 08:25-0500\n" -"Last-Translator: nohal \n" +"POT-Creation-Date: 2021-10-27 22:15+0200\n" +"PO-Revision-Date: 2023-10-04 18:33\n" +"Last-Translator: \n" "Language-Team: Polish\n" "Language: pl_PL\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=4; plural=((n == 1) ? 0 : ((n%10 >= 2 && n%10 <=4 && (n%100 < 12 || n%100 > 14)) ? 1 : ((n%10 == 0 || n%10 == 1 || (n%10 >= 5 && n%10 <=9)) || (n%100 >= 12 && n%100 <= 14)) ? 2 : 3));\n" -"X-Generator: crowdin.com\n" +"Plural-Forms: nplurals=4; plural=(n==1 ? 0 : (n%10>=2 && n%10<=4) && (n%100<12 || n%100>14) ? 1 : n!=1 && (n%10>=0 && n%10<=1) || (n%10>=5 && n%10<=9) || (n%100>=12 && n%100<=14) ? 2 : 3);\n" "X-Crowdin-Project: opencpn\n" +"X-Crowdin-Project-ID: 49843\n" "X-Crowdin-Language: pl\n" "X-Crowdin-File: /plugins/celestial_navigation_pi/po/celestial_navigation_pi.pot\n" +"X-Crowdin-File-ID: 108\n" -#: src/CelestialNavigationDialog.cpp:123 src/CelestialNavigationUI.cpp:132 +#: src\CelestialNavigationDialog-2.3.5.1-no-android.cpp:149 +#: src\CelestialNavigationDialog-2.3.5.2-android.cpp:150 +#: src\CelestialNavigationDialog-partial-android.cpp:149 +#: src\CelestialNavigationDialog.cpp:150 src\CelestialNavigationUI.cpp:137 msgid "Type" msgstr "Typ" -#: src/CelestialNavigationDialog.cpp:124 +#: src\CelestialNavigationDialog-2.3.5.1-no-android.cpp:150 +#: src\CelestialNavigationDialog-2.3.5.2-android.cpp:151 +#: src\CelestialNavigationDialog-partial-android.cpp:150 +#: src\CelestialNavigationDialog.cpp:151 msgid "Body" msgstr "Ciało niebieskie" -#: src/CelestialNavigationDialog.cpp:125 -msgid "Time (UTC)" -msgstr "Czas (UTC)" +#: src\CelestialNavigationDialog-2.3.5.1-no-android.cpp:151 +#: src\CelestialNavigationDialog-2.3.5.2-android.cpp:152 +#: src\CelestialNavigationDialog-partial-android.cpp:151 +#: src\CelestialNavigationDialog.cpp:152 src\CelestialNavigationUI.cpp:328 +msgid "Time (UT)" +msgstr "" -#: src/CelestialNavigationDialog.cpp:126 src/CelestialNavigationUI.cpp:179 +#: src\CelestialNavigationDialog-2.3.5.1-no-android.cpp:152 +#: src\CelestialNavigationDialog-2.3.5.2-android.cpp:153 +#: src\CelestialNavigationDialog-partial-android.cpp:152 +#: src\CelestialNavigationDialog.cpp:153 src\CelestialNavigationUI.cpp:184 msgid "Measurement" msgstr "Pomiar" -#: src/CelestialNavigationDialog.cpp:127 src/CelestialNavigationUI.cpp:376 +#: src\CelestialNavigationDialog-2.3.5.1-no-android.cpp:153 +#: src\CelestialNavigationDialog-2.3.5.2-android.cpp:154 +#: src\CelestialNavigationDialog-partial-android.cpp:153 +#: src\CelestialNavigationDialog.cpp:154 src\CelestialNavigationUI.cpp:381 msgid "Color" msgstr "Kolor" -#: src/CelestialNavigationDialog.cpp:193 -msgid "Failed to load file." -msgstr "Nie udało się załadować pliku." +#: src\CelestialNavigationDialog-2.3.5.1-no-android.cpp:266 +#: src\CelestialNavigationDialog-2.3.5.2-android.cpp:272 +#: src\CelestialNavigationDialog-partial-android.cpp:266 +#: src\CelestialNavigationDialog.cpp:272 src\celestial_navigation_pi.cpp:177 +msgid "Failed to load file: " +msgstr "" -#: src/CelestialNavigationDialog.cpp:198 +#: src\CelestialNavigationDialog-2.3.5.1-no-android.cpp:271 +#: src\CelestialNavigationDialog-2.3.5.2-android.cpp:277 +#: src\CelestialNavigationDialog-partial-android.cpp:271 +#: src\CelestialNavigationDialog.cpp:277 msgid "Invalid xml file" msgstr "Nieprawidłowy plik xml" -#: src/CelestialNavigationDialog.cpp:250 +#: src\CelestialNavigationDialog-2.3.5.1-no-android.cpp:323 +#: src\CelestialNavigationDialog-2.3.5.2-android.cpp:329 +#: src\CelestialNavigationDialog-partial-android.cpp:323 +#: src\CelestialNavigationDialog.cpp:329 msgid "Unrecognized xml node" msgstr "Nierozpoznany węzeł xml" -#: src/CelestialNavigationDialog.cpp:260 -msgid "Weather Routing" -msgstr "Pogodowe planowanie drogi" +#: src\CelestialNavigationDialog-2.3.5.1-no-android.cpp:332 +#: src\CelestialNavigationDialog-2.3.5.1-no-android.cpp:392 +#: src\CelestialNavigationDialog-2.3.5.1-no-android.cpp:532 +#: src\CelestialNavigationDialog-2.3.5.2-android.cpp:338 +#: src\CelestialNavigationDialog-2.3.5.2-android.cpp:398 +#: src\CelestialNavigationDialog-2.3.5.2-android.cpp:538 +#: src\CelestialNavigationDialog-partial-android.cpp:332 +#: src\CelestialNavigationDialog-partial-android.cpp:392 +#: src\CelestialNavigationDialog-partial-android.cpp:532 +#: src\CelestialNavigationDialog.cpp:338 src\CelestialNavigationDialog.cpp:398 +#: src\CelestialNavigationDialog.cpp:538 src\Sight.cpp:1120 +#: src\Sight.cpp.bak:1121 src\celestial_navigation_pi.cpp:95 +#: src\celestial_navigation_pi.cpp:99 +msgid "Celestial Navigation" +msgstr "Nawigacja astronomiczna" -#: src/CelestialNavigationDialog.cpp:320 +#: src\CelestialNavigationDialog-2.3.5.1-no-android.cpp:391 +#: src\CelestialNavigationDialog-2.3.5.2-android.cpp:397 +#: src\CelestialNavigationDialog-partial-android.cpp:391 +#: src\CelestialNavigationDialog.cpp:397 msgid "Failed to save xml file: " msgstr "Nie można zapisać pliku xml: " -#: src/CelestialNavigationDialog.cpp:321 src/CelestialNavigationDialog.cpp:466 -#: src/Sight.cpp:1099 src/celestial_navigation_pi.cpp:99 -#: src/celestial_navigation_pi.cpp:152 -msgid "Celestial Navigation" -msgstr "Nawigacja astronomiczna" - -#: src/CelestialNavigationDialog.cpp:351 +#: src\CelestialNavigationDialog-2.3.5.1-no-android.cpp:424 +#: src\CelestialNavigationDialog-2.3.5.2-android.cpp:430 +#: src\CelestialNavigationDialog-partial-android.cpp:424 +#: src\CelestialNavigationDialog.cpp:430 msgid "Time Correction" msgstr "Korekcja czasu" -#: src/CelestialNavigationDialog.cpp:409 +#: src\CelestialNavigationDialog-2.3.5.1-no-android.cpp:473 +#: src\CelestialNavigationDialog-2.3.5.2-android.cpp:479 +#: src\CelestialNavigationDialog-partial-android.cpp:473 +#: src\CelestialNavigationDialog.cpp:479 msgid "Sun" msgstr "Słońce" -#: src/CelestialNavigationDialog.cpp:465 +#: src\CelestialNavigationDialog-2.3.5.1-no-android.cpp:531 +#: src\CelestialNavigationDialog-2.3.5.2-android.cpp:537 +#: src\CelestialNavigationDialog-partial-android.cpp:531 +#: src\CelestialNavigationDialog.cpp:537 msgid "Are you sure you want to delete all sights?" msgstr "Czy na pewno chcesz usunąć wszystkie obserwacje?" -#: src/CelestialNavigationDialog.cpp:510 +#: src\CelestialNavigationDialog-2.3.5.1-no-android.cpp:582 +#: src\CelestialNavigationDialog-2.3.5.2-android.cpp:588 +#: src\CelestialNavigationDialog-partial-android.cpp:582 +#: src\CelestialNavigationDialog.cpp:588 msgid "Celestial_Navigation_Information.html" msgstr "Celestial_Navigation_Information.html" -#: src/CelestialNavigationDialog.cpp:516 -msgid "Show" -msgstr "Pokaż" - -#: src/CelestialNavigationDialog.cpp:516 src/CelestialNavigationUI.cpp:58 +#: src\CelestialNavigationDialog-2.3.5.1-no-android.cpp:589 +#: src\CelestialNavigationDialog-2.3.5.2-android.cpp:595 +#: src\CelestialNavigationDialog-partial-android.cpp:589 +#: src\CelestialNavigationDialog.cpp:595 src\CelestialNavigationUI.cpp:55 msgid "Hide" msgstr "Ukryj" -#: src/CelestialNavigationUI.cpp:40 +#: src\CelestialNavigationDialog-2.3.5.1-no-android.cpp:589 +#: src\CelestialNavigationDialog-2.3.5.2-android.cpp:595 +#: src\CelestialNavigationDialog-partial-android.cpp:589 +#: src\CelestialNavigationDialog.cpp:595 +msgid "Show" +msgstr "Pokaż" + +#: src\CelestialNavigationUI.cpp:40 msgid "New" msgstr "Nowy" -#: src/CelestialNavigationUI.cpp:43 -msgid "Edit" -msgstr "Edytuj" - -#: src/CelestialNavigationUI.cpp:46 -msgid "Delete" -msgstr "Usuń" - -#: src/CelestialNavigationUI.cpp:49 -msgid "Delete All" -msgstr "Usuń wszystko" - -#: src/CelestialNavigationUI.cpp:52 src/CelestialNavigationUI.h:281 +#: src\CelestialNavigationUI.cpp:43 src\CelestialNavigationUI.h:286 msgid "Fix" msgstr "Obserwacja" -#: src/CelestialNavigationUI.cpp:55 +#: src\CelestialNavigationUI.cpp:46 +msgid "Duplicate" +msgstr "" + +#: src\CelestialNavigationUI.cpp:49 msgid "Clock Offset" msgstr "Poprawka czasu" -#: src/CelestialNavigationUI.cpp:61 +#: src\CelestialNavigationUI.cpp:52 +msgid "Edit" +msgstr "Edytuj" + +#: src\CelestialNavigationUI.cpp:58 +msgid "Delete" +msgstr "Usuń" + +#: src\CelestialNavigationUI.cpp:61 msgid "Information" msgstr "Informacja" -#: src/CelestialNavigationUI.cpp:136 src/CelestialNavigationUI.cpp:667 -#: src/Sight.h:49 +#: src\CelestialNavigationUI.cpp:64 +msgid "Delete All" +msgstr "Usuń wszystko" + +#: src\CelestialNavigationUI.cpp:141 src\CelestialNavigationUI.cpp:674 +#: src\Sight.h:49 msgid "Altitude" msgstr "Wysokość" -#: src/CelestialNavigationUI.cpp:136 src/CelestialNavigationUI.cpp:677 -#: src/Sight.h:49 +#: src\CelestialNavigationUI.cpp:141 src\CelestialNavigationUI.cpp:683 +#: src\Sight.h:49 msgid "Azimuth" msgstr "Azymut" -#: src/CelestialNavigationUI.cpp:136 src/Sight.h:49 +#: src\CelestialNavigationUI.cpp:141 src\Sight.h:49 msgid "Lunar" msgstr "Księżycowy" -#: src/CelestialNavigationUI.cpp:142 +#: src\CelestialNavigationUI.cpp:147 msgid "Magnetic Azimuth" msgstr "Azymut magnetyczny" -#: src/CelestialNavigationUI.cpp:145 +#: src\CelestialNavigationUI.cpp:150 msgid "Celestial Body" msgstr "Ciało niebieskie" -#: src/CelestialNavigationUI.cpp:154 +#: src\CelestialNavigationUI.cpp:159 msgid "Find" msgstr "Znajdź" -#: src/CelestialNavigationUI.cpp:157 +#: src\CelestialNavigationUI.cpp:162 msgid "Limb" msgstr "Krawędź" -#: src/CelestialNavigationUI.cpp:161 -msgid "Lower" -msgstr "Dolna" - -#: src/CelestialNavigationUI.cpp:161 +#: src\CelestialNavigationUI.cpp:166 msgid "Center" msgstr "Środek" -#: src/CelestialNavigationUI.cpp:161 +#: src\CelestialNavigationUI.cpp:166 +msgid "Lower" +msgstr "Dolna" + +#: src\CelestialNavigationUI.cpp:166 msgid "Upper" msgstr "Górna" -#: src/CelestialNavigationUI.cpp:186 src/CelestialNavigationUI.cpp:193 -#: src/CelestialNavigationUI.cpp:223 src/CelestialNavigationUI.cpp:230 +#: src\CelestialNavigationUI.cpp:191 src\CelestialNavigationUI.cpp:198 +#: src\CelestialNavigationUI.cpp:228 src\CelestialNavigationUI.cpp:235 msgid "0" msgstr "0" -#: src/CelestialNavigationUI.cpp:189 src/CelestialNavigationUI.cpp:348 -#: src/CelestialNavigationUI.cpp:598 +#: src\CelestialNavigationUI.cpp:194 src\CelestialNavigationUI.cpp:353 +#: src\CelestialNavigationUI.cpp:605 msgid "Degrees" msgstr "Stopni" -#: src/CelestialNavigationUI.cpp:196 src/CelestialNavigationUI.cpp:278 -#: src/CelestialNavigationUI.cpp:439 +#: src\CelestialNavigationUI.cpp:201 src\CelestialNavigationUI.cpp:283 +#: src\CelestialNavigationUI.cpp:444 msgid "Minutes" msgstr "Minut" -#: src/CelestialNavigationUI.cpp:200 +#: src\CelestialNavigationUI.cpp:205 msgid "10" msgstr "10" -#: src/CelestialNavigationUI.cpp:203 +#: src\CelestialNavigationUI.cpp:208 msgid "Minutes Certainty" msgstr "Dokładność Minut" -#: src/CelestialNavigationUI.cpp:217 +#: src\CelestialNavigationUI.cpp:222 msgid "Lunar Altitude" msgstr "Wysokość księżyca" -#: src/CelestialNavigationUI.cpp:226 +#: src\CelestialNavigationUI.cpp:231 msgid "Body Altitude" msgstr "Wysokość ciała niebieskiego" -#: src/CelestialNavigationUI.cpp:243 +#: src\CelestialNavigationUI.cpp:248 msgid "Sight" msgstr "Obserwacja" -#: src/CelestialNavigationUI.cpp:271 +#: src\CelestialNavigationUI.cpp:276 msgid "Hours" msgstr "Godzin" -#: src/CelestialNavigationUI.cpp:285 src/CelestialNavigationUI.cpp:303 -#: src/CelestialNavigationUI.cpp:860 +#: src\CelestialNavigationUI.cpp:290 src\CelestialNavigationUI.cpp:308 +#: src\CelestialNavigationUI.cpp:869 msgid "Seconds" msgstr "Sekund" -#: src/CelestialNavigationUI.cpp:293 +#: src\CelestialNavigationUI.cpp:298 msgid "Certainty" msgstr "Dokładność" -#: src/CelestialNavigationUI.cpp:323 -msgid "Time" -msgstr "Czas" - -#: src/CelestialNavigationUI.cpp:330 src/CelestialNavigationUI.cpp:580 +#: src\CelestialNavigationUI.cpp:335 src\CelestialNavigationUI.cpp:587 msgid "Distance" msgstr "Odległość" -#: src/CelestialNavigationUI.cpp:337 src/CelestialNavigationUI.cpp:587 +#: src\CelestialNavigationUI.cpp:342 src\CelestialNavigationUI.cpp:594 msgid "Nm" msgstr "Nm" -#: src/CelestialNavigationUI.cpp:341 src/CelestialNavigationUI.cpp:591 +#: src\CelestialNavigationUI.cpp:346 src\CelestialNavigationUI.cpp:598 msgid "Bearing" msgstr "Namiar" -#: src/CelestialNavigationUI.cpp:352 src/CelestialNavigationUI.cpp:602 +#: src\CelestialNavigationUI.cpp:357 src\CelestialNavigationUI.cpp:609 msgid "Magnetic Bearing" msgstr "Namiar magnetyczny" -#: src/CelestialNavigationUI.cpp:359 +#: src\CelestialNavigationUI.cpp:364 msgid "DR Shift" msgstr "Przesunięcie pozycji zliczonej" -#: src/CelestialNavigationUI.cpp:366 +#: src\CelestialNavigationUI.cpp:371 msgid "Transparency" msgstr "Przezroczystość" -#: src/CelestialNavigationUI.cpp:387 +#: src\CelestialNavigationUI.cpp:392 msgid "Config" msgstr "Ustawienia" -#: src/CelestialNavigationUI.cpp:399 +#: src\CelestialNavigationUI.cpp:404 msgid "Eye Height" msgstr "Wysokość oczu" -#: src/CelestialNavigationUI.cpp:403 +#: src\CelestialNavigationUI.cpp:408 msgid "2" msgstr "2" -#: src/CelestialNavigationUI.cpp:406 +#: src\CelestialNavigationUI.cpp:411 msgid "Meters" msgstr "Metry" -#: src/CelestialNavigationUI.cpp:410 +#: src\CelestialNavigationUI.cpp:415 msgid "Temperature" msgstr "Temperatura" -#: src/CelestialNavigationUI.cpp:417 +#: src\CelestialNavigationUI.cpp:422 msgid "Celcius" msgstr "Celsjusza" -#: src/CelestialNavigationUI.cpp:421 +#: src\CelestialNavigationUI.cpp:426 msgid "Pressure" msgstr "Ciśnienie" -#: src/CelestialNavigationUI.cpp:428 +#: src\CelestialNavigationUI.cpp:433 msgid "MilliBars" msgstr "Milibarów" -#: src/CelestialNavigationUI.cpp:432 +#: src\CelestialNavigationUI.cpp:437 msgid "Index Error" msgstr "Błąd indeksu" -#: src/CelestialNavigationUI.cpp:446 +#: src\CelestialNavigationUI.cpp:451 msgid "Set As Defaults" msgstr "Ustaw jako domyślne" -#: src/CelestialNavigationUI.cpp:453 +#: src\CelestialNavigationUI.cpp:458 msgid "Parameters" msgstr "Parametry" -#: src/CelestialNavigationUI.cpp:469 +#: src\CelestialNavigationUI.cpp:474 msgid "Calculations" msgstr "Obliczenia" -#: src/CelestialNavigationUI.cpp:571 +#: src\CelestialNavigationUI.cpp:578 msgid "Shift all visible Sights" msgstr "Przesunięcie wszystkie widoczne Obserwacje" -#: src/CelestialNavigationUI.cpp:649 src/CelestialNavigationUI.cpp:760 +#: src\CelestialNavigationUI.cpp:656 src\CelestialNavigationUI.cpp:769 msgid "Latitude" msgstr "Szerokość geogr" -#: src/CelestialNavigationUI.cpp:658 src/CelestialNavigationUI.cpp:768 +#: src\CelestialNavigationUI.cpp:665 src\CelestialNavigationUI.cpp:777 msgid "Longitude" msgstr "Długość geogr" -#: src/CelestialNavigationUI.cpp:669 src/CelestialNavigationUI.cpp:679 -msgid "MyLabel" -msgstr "MojaNazwa" - -#: src/CelestialNavigationUI.cpp:686 -msgid "Done" -msgstr "Gotowe" +#: src\CelestialNavigationUI.cpp:691 +msgid "Boat Position" +msgstr "" -#: src/CelestialNavigationUI.cpp:689 +#: src\CelestialNavigationUI.cpp:695 msgid "Magnetic" msgstr "Magnetyczny" -#: src/CelestialNavigationUI.cpp:753 +#: src\CelestialNavigationUI.cpp:698 +msgid "Done" +msgstr "Gotowe" + +#: src\CelestialNavigationUI.cpp:762 msgid "Fix From Visible Sights" msgstr "Pozycja z widocznych Obserwacji" -#: src/CelestialNavigationUI.cpp:764 +#: src\CelestialNavigationUI.cpp:773 msgid " N/A " msgstr " N/A " -#: src/CelestialNavigationUI.cpp:772 +#: src\CelestialNavigationUI.cpp:781 msgid " N/A " msgstr " N/A " -#: src/CelestialNavigationUI.cpp:776 +#: src\CelestialNavigationUI.cpp:785 msgid "Error" msgstr "Błąd" -#: src/CelestialNavigationUI.cpp:780 +#: src\CelestialNavigationUI.cpp:789 msgid " N/A " msgstr " N/A " -#: src/CelestialNavigationUI.cpp:787 src/CelestialNavigationUI.cpp:794 +#: src\CelestialNavigationUI.cpp:796 src\CelestialNavigationUI.cpp:803 msgid "Initial" msgstr "Początkowy" -#: src/CelestialNavigationUI.cpp:801 +#: src\CelestialNavigationUI.cpp:810 msgid "Alg" -msgstr "" +msgstr "Algorytm" -#: src/CelestialNavigationUI.cpp:806 +#: src\CelestialNavigationUI.cpp:815 msgid "Plane" msgstr "Płaszczyzna" -#: src/CelestialNavigationUI.cpp:807 +#: src\CelestialNavigationUI.cpp:816 msgid "Sphere" msgstr "Kula" -#: src/CelestialNavigationUI.cpp:808 +#: src\CelestialNavigationUI.cpp:817 msgid "Cone" msgstr "Stożek" -#: src/CelestialNavigationUI.cpp:809 +#: src\CelestialNavigationUI.cpp:818 msgid "Cone 2" msgstr "Stożek 2" -#: src/CelestialNavigationUI.cpp:813 +#: src\CelestialNavigationUI.cpp:822 msgid "Go" msgstr "Dalej" -#: src/CelestialNavigationUI.cpp:850 src/CelestialNavigationUI.h:303 +#: src\CelestialNavigationUI.cpp:859 src\CelestialNavigationUI.h:308 msgid "Clock Correction" msgstr "Korekta zegara" -#: src/CelestialNavigationUI.h:78 +#: src\CelestialNavigationUI.h:82 msgid "Celestial Navigation Sights" msgstr "Obserwacje Nawigacji Astronomicznej" -#: src/CelestialNavigationUI.h:169 +#: src\CelestialNavigationUI.h:173 msgid "Sight Properties" msgstr "Właściwości Obserwacji" -#: src/CelestialNavigationUI.h:200 +#: src\CelestialNavigationUI.h:204 msgid "Dead Reckoning shift" msgstr "Przesunięcie Pozycji zliczonej" -#: src/CelestialNavigationUI.h:227 +#: src\CelestialNavigationUI.h:232 msgid "Find Celestial Body" msgstr "Znajdź ciało niebieskie" -#: src/Sight.cpp:160 +#: src\FixDialog.cpp:192 +msgid "Shifted sights are not used to compute a fix, determine fix visually instead.\n" +msgstr "Przesunięte obserwacje nie są używane do obliczenia pozycji(fix), zamiast tego określ pozycję(fix) wizualnie. \n" + +#: src\FixDialog.cpp:193 +msgid "Fix Position" +msgstr "Pozycja obserwowana" + +#: src\FixDialog.cpp:338 src\FixDialog.cpp:339 src\FixDialog.cpp:340 +msgid " N/A " +msgstr " N/A " + +#: src\Sight.cpp:172 src\Sight.cpp.bak:173 msgid "Astrolab failed, data unavailable:\n" msgstr "Astrolab nie liczy, dane niedostępne: \n" -#: src/Sight.cpp:161 +#: src\Sight.cpp:173 src\Sight.cpp.bak:174 msgid "\n" "Did you forget to install vsop87d.txt?\n" msgstr "\n" "Zapomniałeś zainstalować vsop87d.txt?\n" -#: src/Sight.cpp:162 +#: src\Sight.cpp:174 src\Sight.cpp.bak:175 msgid "The plugin will not work correctly" -msgstr "Wtyczk nie będzie poprawnie działać" +msgstr "Wtyczka nie będzie działać prawidłowo" -#: src/Sight.cpp:163 +#: src\Sight.cpp:175 src\Sight.cpp.bak:176 msgid "Failure Alert" msgstr "Alert uszkodzenia" -#: src/Sight.cpp:474 +#: src\Sight.cpp:495 src\Sight.cpp.bak:496 #, c-format msgid "Applying clock correction of %d seconds\n\n" msgstr "Zastosowanie korekcji zegara o %d sekund\n\n" -#: src/Sight.cpp:536 +#: src\Sight.cpp:557 src\Sight.cpp.bak:558 msgid "Almanac Data For " msgstr "Dane Almanachu dla " -#: src/Sight.cpp:537 +#: src\Sight.cpp:558 src\Sight.cpp.bak:559 #, c-format msgid "\n" "Geographical Position (lat, lon) = %.4f %.4f\n" @@ -418,16 +482,19 @@ msgstr "\n" "SD = %.1f'\n" "HP = %.1f'\n\n" -#: src/Sight.cpp:552 src/Sight.cpp:690 +#: src\Sight.cpp:573 src\Sight.cpp:711 src\Sight.cpp.bak:574 +#: src\Sight.cpp.bak:712 msgid "Formulas used to calculate sight\n\n" msgstr "Formuły używane do obliczania obserwacji\n\n" -#: src/Sight.cpp:556 src/Sight.cpp:694 +#: src\Sight.cpp:577 src\Sight.cpp:715 src\Sight.cpp.bak:578 +#: src\Sight.cpp.bak:716 #, c-format msgid "Index Error is %.4f degrees\n\n" msgstr "Błąd indeksu jest %.4f stopni\n\n" -#: src/Sight.cpp:561 src/Sight.cpp:699 +#: src\Sight.cpp:582 src\Sight.cpp:720 src\Sight.cpp.bak:583 +#: src\Sight.cpp.bak:721 #, c-format msgid "Eye Height is %.4f meters\n" "Height Correction Degrees = 1.758*sqrt(%.4f) / 60.0\n" @@ -436,7 +503,8 @@ msgstr "Wysokość oczu jest %.4f meters\n" "Korekta Wysokości stopni = 1.758*sqrt(%.4f) / 60.0\n" "Korekta Wysokości stopni = %.4f\n" -#: src/Sight.cpp:568 +#: src\Sight.cpp:589 src\Sight.cpp:799 src\Sight.cpp.bak:590 +#: src\Sight.cpp.bak:800 #, c-format msgid "\n" "Apparent Altitude (Ha)\n" @@ -449,7 +517,8 @@ msgstr "\n" "WysokośćPozorna = %.4f - %.4f - %.4f\n" "WysokośćPpozorna = %.4f\n" -#: src/Sight.cpp:586 src/Sight.cpp:789 +#: src\Sight.cpp:607 src\Sight.cpp:810 src\Sight.cpp.bak:608 +#: src\Sight.cpp.bak:811 #, c-format msgid "\n" "Refraction Correction\n" @@ -462,7 +531,8 @@ msgstr "\n" "x = tan(Pi/180*%.4f + 4.848e-2*(Pi/180) / (tan(Pi/180*%.4f) + .028))\n" "x = %.4f\n" -#: src/Sight.cpp:591 src/Sight.cpp:794 +#: src\Sight.cpp:612 src\Sight.cpp:815 src\Sight.cpp.bak:613 +#: src\Sight.cpp.bak:816 #, c-format msgid "RefractionCorrection = .267 * Pressure / (x*(Temperature + 273.15)) / 60.0\n" "RefractionCorrection = .267 * %.4f / (x*(%.4f + 273.15)) / 60.0\n" @@ -471,7 +541,8 @@ msgstr "KorektaRefrakcji = .267 * Ciśnienie / (x*(Temperatura + 273.15)) / 60.0 "KorektaRefrakcji = .267 * %.4f / (x*(%.4f + 273.15)) / 60.0\n" "KorektaRefrakcji = %.4f\n" -#: src/Sight.cpp:606 src/Sight.cpp:808 +#: src\Sight.cpp:627 src\Sight.cpp:829 src\Sight.cpp.bak:628 +#: src\Sight.cpp.bak:830 #, c-format msgid "\n" "Sun selected, Limb Correction\n" @@ -480,7 +551,8 @@ msgstr "\n" "Słońce wybrane, korekta Krawędzi\n" "ra = %.4f, lc = 0.266564/ra = %.4f\n" -#: src/Sight.cpp:616 src/Sight.cpp:732 +#: src\Sight.cpp:637 src\Sight.cpp:753 src\Sight.cpp.bak:638 +#: src\Sight.cpp.bak:754 #, c-format msgid "\n" "Moon selected, Limb Correction\n" @@ -493,22 +565,26 @@ msgstr "\n" "lc = 180/Pi * asin (Pi/180 * SD) \n" "lc = %.4f\n" -#: src/Sight.cpp:626 src/Sight.cpp:741 src/Sight.cpp:816 +#: src\Sight.cpp:647 src\Sight.cpp:762 src\Sight.cpp:837 src\Sight.cpp.bak:648 +#: src\Sight.cpp.bak:763 src\Sight.cpp.bak:838 msgid "Upper Limb" msgstr "Górna krawędź" -#: src/Sight.cpp:629 src/Sight.cpp:744 src/Sight.cpp:819 +#: src\Sight.cpp:650 src\Sight.cpp:765 src\Sight.cpp:840 src\Sight.cpp.bak:651 +#: src\Sight.cpp.bak:766 src\Sight.cpp.bak:841 msgid "Lower Limb" msgstr "Dolna krawędź" -#: src/Sight.cpp:632 src/Sight.cpp:822 +#: src\Sight.cpp:653 src\Sight.cpp:843 src\Sight.cpp.bak:654 +#: src\Sight.cpp.bak:844 #, c-format msgid "\n" "LimbCorrection = %.4f\n" msgstr "\n" "Poprawka krawędzi = %.4f\n" -#: src/Sight.cpp:636 src/Sight.cpp:826 +#: src\Sight.cpp:657 src\Sight.cpp:847 src\Sight.cpp.bak:658 +#: src\Sight.cpp.bak:848 #, c-format msgid "\n" "Corrected Altitude\n" @@ -521,7 +597,8 @@ msgstr "\n" "WysokośćPoprawiona = %.4f - %.4f - %.4f\n" "WysokośćPoprawiona = %.4f\n" -#: src/Sight.cpp:650 src/Sight.cpp:840 +#: src\Sight.cpp:671 src\Sight.cpp:861 src\Sight.cpp.bak:672 +#: src\Sight.cpp.bak:862 #, c-format msgid "\n" "Sun selected, parallax correction\n" @@ -530,7 +607,8 @@ msgstr "\n" "Słońce wybrane, korekta paralaksy\n" "rad = %.4f, HP = 0.002442/rad = %.4f\n" -#: src/Sight.cpp:659 src/Sight.cpp:764 +#: src\Sight.cpp:680 src\Sight.cpp:785 src\Sight.cpp.bak:681 +#: src\Sight.cpp.bak:786 #, c-format msgid "\n" "Moon selected, parallax correction\n" @@ -539,7 +617,8 @@ msgstr "\n" "Księżyc wybrany, korekta paralaksy\n" "HP = %.4f\n" -#: src/Sight.cpp:665 src/Sight.cpp:846 +#: src\Sight.cpp:686 src\Sight.cpp:867 src\Sight.cpp.bak:687 +#: src\Sight.cpp.bak:868 #, c-format msgid "ParallaxCorrection = -180/Pi * asin( sin(Pi/180 * HP ) * cos(Pi/180 * CorrectedAltitude))\n" "ParallaxCorrection = -180/Pi * asin( sin(Pi/180 * %.4f ) * cos(Pi/180 * %.4f))\n" @@ -548,7 +627,7 @@ msgstr "KorektaParalaksy = -180/Pi * asin( sin(Pi/180 * HP ) * cos(Pi/180 * Wyso "KorektaParalaksy = -180/Pi * asin( sin(Pi/180 * %.4f ) * cos(Pi/180 * %.4f))\n" "KorektaParalaksy = %.4f\n" -#: src/Sight.cpp:672 +#: src\Sight.cpp:693 src\Sight.cpp.bak:694 #, c-format msgid "\n" "Observed Altitude (Ho)\n" @@ -561,20 +640,16 @@ msgstr "\n" "WysokośćObserwowana = %.4f - %.4f\n" "WysokośćObserwowana = %.4f\n" -#: src/Sight.cpp:706 +#: src\Sight.cpp:727 src\Sight.cpp.bak:728 #, c-format msgid "\n" "Apparent Moon Altitude (Ha)\n" "ApparentAltitudeMoon = MeasurementMoon - IndexCorrection - EyeHeightCorrection\n" -" ApparentAltitudeMoon = %.4f - %.4f - %.4f\n" +"ApparentAltitudeMoon = %.4f - %.4f - %.4f\n" "ApparentAltitudeMoon = %.4f\n" -msgstr "\n" -"Wysokość Pozorna Księżyca (Ha)\n" -"WysokośćPozornaKsiężyca = PomiarKsiężyca - IndexCorrection - KorektaWysokościOczuObserwatora\n" -" WysokośćPozornaKsiężyca = %.4f - %.4f - %.4f\n" -"WysokośćPozornaKsiężyca = %.4f\n" +msgstr "" -#: src/Sight.cpp:717 +#: src\Sight.cpp:738 src\Sight.cpp.bak:739 #, c-format msgid "\n" "Refraction Correction\n" @@ -587,7 +662,7 @@ msgstr "\n" "x = tan(Pi/180*%.4f + 4.848e-2*(Pi/180) / (tan(Pi/180*%.4f) + .028))\n" "x = %.4f\n" -#: src/Sight.cpp:722 +#: src\Sight.cpp:743 src\Sight.cpp.bak:744 #, c-format msgid "RefractionCorrectionMoon = .267 * Pressure / (x*(Temperature + 273.15)) / 60.0\n" "RefractionCorrectionMoon = .267 * %.4f / (x*(%.4f + 273.15)) / 60.0\n" @@ -596,14 +671,15 @@ msgstr "KorektaRefrakcjiKsiężyca =.267 * ciśnienie / (x * (temperatura + 273. "KorektaRefrakcjiKsiężyca =.267 * %.4f / (x * (%.4f + 273,15)) / 60.0\n" "KorektaRefrakcjiKsiężyca = %.4f\n" -#: src/Sight.cpp:747 src/Sight.cpp:750 +#: src\Sight.cpp:768 src\Sight.cpp:771 src\Sight.cpp.bak:769 +#: src\Sight.cpp.bak:772 #, c-format msgid "\n" "LimbCorrectionMoon = %.4f\n" msgstr "\n" "KorektaKrawędziKsiężyca = %.4f\n" -#: src/Sight.cpp:753 +#: src\Sight.cpp:774 src\Sight.cpp.bak:775 #, c-format msgid "\n" "Corrected Altitude\n" @@ -616,29 +692,14 @@ msgstr "\n" "PoprawionaWysokośćKsiężyca = %.4f - %.4f - %.4f\n" "PoprawionaWysokośćKsiężyca = %.4f\n" -#: src/Sight.cpp:768 +#: src\Sight.cpp:789 src\Sight.cpp.bak:790 #, c-format msgid "ParallaxCorrectionMoon = -180/Pi * asin( sin(Pi/180 * HP ) * cos(Pi/180 * CorrectedAltitude))\n" -" ParallaxCorrectionMoon = -180/Pi * asin( sin(Pi/180 * %.4f ) * cos(Pi/180 * %.4f))\n" +"ParallaxCorrectionMoon = -180/Pi * asin( sin(Pi/180 * %.4f ) * cos(Pi/180 * %.4f))\n" "ParallaxCorrectionMoon = %.4f\n" -msgstr "KorektaParalaksyKsiężyca = -180/Pi * asin( sin(Pi/180 * HP ) * cos(Pi/180 * WysokośćPoprawiona))\n" -" KorektaParalaksyKsiężyca = -180/Pi * asin( sin(Pi/180 * %.4f ) * cos(Pi/180 * %.4f))\n" -"KorektaParalaksyKsiężyca = %.4f\n" - -#: src/Sight.cpp:778 -#, c-format -msgid "\n" -"Apparent Altitude (Ha)\n" -"ApparentAltitude = Measurement - IndexCorrection - EyeHeightCorrection\n" -" ApparentAltitude = %.4f - %.4f - %.4f\n" -"ApparentAltitude = %.4f\n" -msgstr "\n" -"Wysokość Pozorna (Ha)\n" -"WysokośćPozorna = Pomiar - IndexCorrection - KorektaWysokościOczuObserwatora\n" -" WysokośćPozorna = %.4f - %.4f - %.4f\n" -"WysokośćPozorna = %.4f\n" +msgstr "" -#: src/Sight.cpp:857 +#: src\Sight.cpp:878 src\Sight.cpp.bak:879 #, c-format msgid "CorrectionsMoon = %.4f\n" "CorrectionsBody = %.4f\n" @@ -647,7 +708,7 @@ msgstr "PoprawkiKsiążya = %.4f\n" "PoprawkiCiałaNiebieskiego = %.4f\n" "Poprawki = abs(PoprawkiKsiążyca - PoprawkiCiałaNiebieskiego) = %.4f\n" -#: src/Sight.cpp:863 +#: src\Sight.cpp:884 src\Sight.cpp.bak:885 #, c-format msgid "CorrectedMeasurement = Measurement - Corrections - IndexCorrection\n" "CorrectedMeasurement = %.4f - %.4f - %.4f\n" @@ -656,85 +717,65 @@ msgstr "PomiarPoprawiony = Pomiar - Poprawki - IndexCorrection\n" "PomiarPoprawiony = %.4f - %.4f - %.4f\n" "PomiarPoprawiony = %.4f\n" -#: src/Sight.cpp:888 +#: src\Sight.cpp:909 src\Sight.cpp.bak:910 msgid "\n" "Calculated angle between Moon and " msgstr "\n" "Obliczony kąt między księżycem i " -#: src/Sight.cpp:890 +#: src\Sight.cpp:911 src\Sight.cpp.bak:912 #, c-format msgid "\n" "Error from measurement: %.4f" msgstr "\n" "Błąd od pomiaru: %.4f" -#: src/Sight.cpp:894 +#: src\Sight.cpp:915 src\Sight.cpp.bak:916 msgid "\n" "Moon takes 28 days to orbit, one degree of error takes 6720 seconds" msgstr "\n" "Księżyc orbituje 28 dni, jeden stopień błędu daje 6720 sekund" -#: src/Sight.cpp:895 +#: src\Sight.cpp:916 src\Sight.cpp.bak:917 #, c-format msgid "\n" "Time correction %.4f seconds" msgstr "\n" "Korekta Czasu %.4f sekund" -#: src/Sight.cpp:1099 +#: src\Sight.cpp:1120 src\Sight.cpp.bak:1121 msgid "Building bearing Sight Positions" msgstr "Tworzenie namiaru Pozycji Obserwowanej" -#: src/SightDialog.cpp:172 +#: src\SightDialog.cpp:184 msgid "Measurement certainty likely set to small, sight may not appear " msgstr "Dokładność pomiaru ustawiona zbyt mała, Obserwacja może się nie pojawić " -#: src/SightDialog.cpp:173 src/SightDialog.cpp:256 +#: src\SightDialog.cpp:185 src\SightDialog.cpp:279 msgid "Warning" msgstr "Ostrzeżenie" -#: src/SightDialog.cpp:255 +#: src\SightDialog.cpp:278 msgid "Lunar shot will be invalid taking distance from moon to itself" msgstr "Pomiarł księżyca będzie nieprawidłowy biorąc odległość od księżyca do niego samego" -#: src/celestial_navigation_pi.cpp:90 -msgid "Failed to load file:\n" -msgstr "Nie można załadować pliku:\n" - -#: src/celestial_navigation_pi.cpp:91 -msgid "\n" -"Magnetic data will not be available for the celestial navigation plugin." -msgstr "\n" -"Dane magnetyczne nie będą dostępne dla wtyczki nawigacji astronomicznej." +#: src\celestial_navigation_pi.cpp:179 +msgid "open error" +msgstr "" -#: src/celestial_navigation_pi.cpp:92 -msgid "OpenCPN Alert" -msgstr "Ostrzeżenie OpenCPN" +#: src\celestial_navigation_pi.cpp:180 +msgid "corrupt record" +msgstr "" -#: src/celestial_navigation_pi.cpp:157 -msgid "Celestial Navigation PlugIn for OpenCPN" -msgstr "Nawigacja astronomiczna - Wtyczka dla OpenCPN" - -#: src/celestial_navigation_pi.cpp:162 -msgid "Celestial Navigation PlugIn for OpenCPN.\n" -"Implements nautical almanac for sun, moon, planets,\n" -"and various navigational stars.\n" -"Compute position fix from celestial measurements." -msgstr "Nawigacja astronomiczna - wtyczka dla OpenCPN.\n" -"wykorzystuje nautical almanach dla słońca, księżyca, planet, \n" -"i różnych gwiazd nawigacyjnych. \n" -"Oblicza pozycję z obserwacji astronomicznych." - -#: src/FixDialog.cpp:189 -msgid "Shifted sights are not used to compute a fix, determine fix visually instead.\n" -msgstr "Przesunięte obserwacje nie są używane do obliczenia pozycji(fix), zamiast tego określ pozycję(fix) wizualnie. \n" +#: src\celestial_navigation_pi.cpp:181 +msgid "too many models" +msgstr "" -#: src/FixDialog.cpp:190 -msgid "Fix Position" -msgstr "Pozycja obserwowana" +#: src\celestial_navigation_pi.cpp:184 +msgid "Magnetic data will not be available for the celestial navigation plugin." +msgstr "" -#: src/FixDialog.cpp:335 src/FixDialog.cpp:336 src/FixDialog.cpp:337 -msgid " N/A " -msgstr " N/A " +#: src\celestial_navigation_pi.cpp:185 +msgid "OpenCPN Alert" +msgstr "Ostrzeżenie OpenCPN" diff --git a/po/pt_BR.po b/po/pt_BR.po index 582e121..d91fa7a 100644 --- a/po/pt_BR.po +++ b/po/pt_BR.po @@ -2,404 +2,468 @@ msgid "" msgstr "" "Project-Id-Version: opencpn\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-02-28 14:10-0300\n" -"PO-Revision-Date: 2018-01-24 19:41-0500\n" -"Last-Translator: nohal \n" +"POT-Creation-Date: 2021-10-27 22:15+0200\n" +"PO-Revision-Date: 2023-10-04 18:33\n" +"Last-Translator: \n" "Language-Team: Portuguese, Brazilian\n" "Language: pt_BR\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -"X-Generator: crowdin.com\n" "X-Crowdin-Project: opencpn\n" +"X-Crowdin-Project-ID: 49843\n" "X-Crowdin-Language: pt-BR\n" "X-Crowdin-File: /plugins/celestial_navigation_pi/po/celestial_navigation_pi.pot\n" +"X-Crowdin-File-ID: 108\n" -#: src/CelestialNavigationDialog.cpp:123 src/CelestialNavigationUI.cpp:132 +#: src\CelestialNavigationDialog-2.3.5.1-no-android.cpp:149 +#: src\CelestialNavigationDialog-2.3.5.2-android.cpp:150 +#: src\CelestialNavigationDialog-partial-android.cpp:149 +#: src\CelestialNavigationDialog.cpp:150 src\CelestialNavigationUI.cpp:137 msgid "Type" msgstr "Tipo" -#: src/CelestialNavigationDialog.cpp:124 +#: src\CelestialNavigationDialog-2.3.5.1-no-android.cpp:150 +#: src\CelestialNavigationDialog-2.3.5.2-android.cpp:151 +#: src\CelestialNavigationDialog-partial-android.cpp:150 +#: src\CelestialNavigationDialog.cpp:151 msgid "Body" msgstr "Corpo" -#: src/CelestialNavigationDialog.cpp:125 -msgid "Time (UTC)" -msgstr "Hora (UTC)" +#: src\CelestialNavigationDialog-2.3.5.1-no-android.cpp:151 +#: src\CelestialNavigationDialog-2.3.5.2-android.cpp:152 +#: src\CelestialNavigationDialog-partial-android.cpp:151 +#: src\CelestialNavigationDialog.cpp:152 src\CelestialNavigationUI.cpp:328 +msgid "Time (UT)" +msgstr "" -#: src/CelestialNavigationDialog.cpp:126 src/CelestialNavigationUI.cpp:179 +#: src\CelestialNavigationDialog-2.3.5.1-no-android.cpp:152 +#: src\CelestialNavigationDialog-2.3.5.2-android.cpp:153 +#: src\CelestialNavigationDialog-partial-android.cpp:152 +#: src\CelestialNavigationDialog.cpp:153 src\CelestialNavigationUI.cpp:184 msgid "Measurement" msgstr "Medição" -#: src/CelestialNavigationDialog.cpp:127 src/CelestialNavigationUI.cpp:376 +#: src\CelestialNavigationDialog-2.3.5.1-no-android.cpp:153 +#: src\CelestialNavigationDialog-2.3.5.2-android.cpp:154 +#: src\CelestialNavigationDialog-partial-android.cpp:153 +#: src\CelestialNavigationDialog.cpp:154 src\CelestialNavigationUI.cpp:381 msgid "Color" msgstr "Cor" -#: src/CelestialNavigationDialog.cpp:193 -msgid "Failed to load file." -msgstr "Falha ao carregar arquivo." +#: src\CelestialNavigationDialog-2.3.5.1-no-android.cpp:266 +#: src\CelestialNavigationDialog-2.3.5.2-android.cpp:272 +#: src\CelestialNavigationDialog-partial-android.cpp:266 +#: src\CelestialNavigationDialog.cpp:272 src\celestial_navigation_pi.cpp:177 +msgid "Failed to load file: " +msgstr "" -#: src/CelestialNavigationDialog.cpp:198 +#: src\CelestialNavigationDialog-2.3.5.1-no-android.cpp:271 +#: src\CelestialNavigationDialog-2.3.5.2-android.cpp:277 +#: src\CelestialNavigationDialog-partial-android.cpp:271 +#: src\CelestialNavigationDialog.cpp:277 msgid "Invalid xml file" msgstr "Arquivo xml inválido" -#: src/CelestialNavigationDialog.cpp:250 +#: src\CelestialNavigationDialog-2.3.5.1-no-android.cpp:323 +#: src\CelestialNavigationDialog-2.3.5.2-android.cpp:329 +#: src\CelestialNavigationDialog-partial-android.cpp:323 +#: src\CelestialNavigationDialog.cpp:329 msgid "Unrecognized xml node" msgstr "não reconhecido xml node" -#: src/CelestialNavigationDialog.cpp:260 -msgid "Weather Routing" -msgstr "Roteamento de tempo" +#: src\CelestialNavigationDialog-2.3.5.1-no-android.cpp:332 +#: src\CelestialNavigationDialog-2.3.5.1-no-android.cpp:392 +#: src\CelestialNavigationDialog-2.3.5.1-no-android.cpp:532 +#: src\CelestialNavigationDialog-2.3.5.2-android.cpp:338 +#: src\CelestialNavigationDialog-2.3.5.2-android.cpp:398 +#: src\CelestialNavigationDialog-2.3.5.2-android.cpp:538 +#: src\CelestialNavigationDialog-partial-android.cpp:332 +#: src\CelestialNavigationDialog-partial-android.cpp:392 +#: src\CelestialNavigationDialog-partial-android.cpp:532 +#: src\CelestialNavigationDialog.cpp:338 src\CelestialNavigationDialog.cpp:398 +#: src\CelestialNavigationDialog.cpp:538 src\Sight.cpp:1120 +#: src\Sight.cpp.bak:1121 src\celestial_navigation_pi.cpp:95 +#: src\celestial_navigation_pi.cpp:99 +msgid "Celestial Navigation" +msgstr "Navegação astronomica" -#: src/CelestialNavigationDialog.cpp:320 +#: src\CelestialNavigationDialog-2.3.5.1-no-android.cpp:391 +#: src\CelestialNavigationDialog-2.3.5.2-android.cpp:397 +#: src\CelestialNavigationDialog-partial-android.cpp:391 +#: src\CelestialNavigationDialog.cpp:397 msgid "Failed to save xml file: " msgstr "Falha ao salvar arquivo xml: " -#: src/CelestialNavigationDialog.cpp:321 src/CelestialNavigationDialog.cpp:466 -#: src/Sight.cpp:1099 src/celestial_navigation_pi.cpp:99 -#: src/celestial_navigation_pi.cpp:152 -msgid "Celestial Navigation" -msgstr "Navegação astronomica" - -#: src/CelestialNavigationDialog.cpp:351 +#: src\CelestialNavigationDialog-2.3.5.1-no-android.cpp:424 +#: src\CelestialNavigationDialog-2.3.5.2-android.cpp:430 +#: src\CelestialNavigationDialog-partial-android.cpp:424 +#: src\CelestialNavigationDialog.cpp:430 msgid "Time Correction" msgstr "Correção da hora" -#: src/CelestialNavigationDialog.cpp:409 +#: src\CelestialNavigationDialog-2.3.5.1-no-android.cpp:473 +#: src\CelestialNavigationDialog-2.3.5.2-android.cpp:479 +#: src\CelestialNavigationDialog-partial-android.cpp:473 +#: src\CelestialNavigationDialog.cpp:479 msgid "Sun" msgstr "Sol" -#: src/CelestialNavigationDialog.cpp:465 +#: src\CelestialNavigationDialog-2.3.5.1-no-android.cpp:531 +#: src\CelestialNavigationDialog-2.3.5.2-android.cpp:537 +#: src\CelestialNavigationDialog-partial-android.cpp:531 +#: src\CelestialNavigationDialog.cpp:537 msgid "Are you sure you want to delete all sights?" msgstr "Tem certeza que deseja excluir todas posições?" -#: src/CelestialNavigationDialog.cpp:510 +#: src\CelestialNavigationDialog-2.3.5.1-no-android.cpp:582 +#: src\CelestialNavigationDialog-2.3.5.2-android.cpp:588 +#: src\CelestialNavigationDialog-partial-android.cpp:582 +#: src\CelestialNavigationDialog.cpp:588 msgid "Celestial_Navigation_Information.html" msgstr "Celestial_Navigation_Information.html" -#: src/CelestialNavigationDialog.cpp:516 -msgid "Show" -msgstr "Mostrar" - -#: src/CelestialNavigationDialog.cpp:516 src/CelestialNavigationUI.cpp:58 +#: src\CelestialNavigationDialog-2.3.5.1-no-android.cpp:589 +#: src\CelestialNavigationDialog-2.3.5.2-android.cpp:595 +#: src\CelestialNavigationDialog-partial-android.cpp:589 +#: src\CelestialNavigationDialog.cpp:595 src\CelestialNavigationUI.cpp:55 msgid "Hide" msgstr "Ocultar" -#: src/CelestialNavigationUI.cpp:40 +#: src\CelestialNavigationDialog-2.3.5.1-no-android.cpp:589 +#: src\CelestialNavigationDialog-2.3.5.2-android.cpp:595 +#: src\CelestialNavigationDialog-partial-android.cpp:589 +#: src\CelestialNavigationDialog.cpp:595 +msgid "Show" +msgstr "Mostrar" + +#: src\CelestialNavigationUI.cpp:40 msgid "New" msgstr "Novo" -#: src/CelestialNavigationUI.cpp:43 -msgid "Edit" -msgstr "Editar" - -#: src/CelestialNavigationUI.cpp:46 -msgid "Delete" -msgstr "Apagar" - -#: src/CelestialNavigationUI.cpp:49 -msgid "Delete All" -msgstr "Apagar tudo" - -#: src/CelestialNavigationUI.cpp:52 src/CelestialNavigationUI.h:281 +#: src\CelestialNavigationUI.cpp:43 src\CelestialNavigationUI.h:286 msgid "Fix" msgstr "Fix" -#: src/CelestialNavigationUI.cpp:55 +#: src\CelestialNavigationUI.cpp:46 +msgid "Duplicate" +msgstr "" + +#: src\CelestialNavigationUI.cpp:49 msgid "Clock Offset" msgstr "Clock Offset" -#: src/CelestialNavigationUI.cpp:61 +#: src\CelestialNavigationUI.cpp:52 +msgid "Edit" +msgstr "Editar" + +#: src\CelestialNavigationUI.cpp:58 +msgid "Delete" +msgstr "Apagar" + +#: src\CelestialNavigationUI.cpp:61 msgid "Information" msgstr "Informação" -#: src/CelestialNavigationUI.cpp:136 src/CelestialNavigationUI.cpp:667 -#: src/Sight.h:49 +#: src\CelestialNavigationUI.cpp:64 +msgid "Delete All" +msgstr "Apagar tudo" + +#: src\CelestialNavigationUI.cpp:141 src\CelestialNavigationUI.cpp:674 +#: src\Sight.h:49 msgid "Altitude" msgstr "Altitude" -#: src/CelestialNavigationUI.cpp:136 src/CelestialNavigationUI.cpp:677 -#: src/Sight.h:49 +#: src\CelestialNavigationUI.cpp:141 src\CelestialNavigationUI.cpp:683 +#: src\Sight.h:49 msgid "Azimuth" msgstr "Azimute" -#: src/CelestialNavigationUI.cpp:136 src/Sight.h:49 +#: src\CelestialNavigationUI.cpp:141 src\Sight.h:49 msgid "Lunar" msgstr "Lunar" -#: src/CelestialNavigationUI.cpp:142 +#: src\CelestialNavigationUI.cpp:147 msgid "Magnetic Azimuth" msgstr "Azimute magnético" -#: src/CelestialNavigationUI.cpp:145 +#: src\CelestialNavigationUI.cpp:150 msgid "Celestial Body" msgstr "Corpo celeste" -#: src/CelestialNavigationUI.cpp:154 +#: src\CelestialNavigationUI.cpp:159 msgid "Find" msgstr "Encontrar" -#: src/CelestialNavigationUI.cpp:157 +#: src\CelestialNavigationUI.cpp:162 msgid "Limb" msgstr "Limbo" -#: src/CelestialNavigationUI.cpp:161 -msgid "Lower" -msgstr "Inferior" - -#: src/CelestialNavigationUI.cpp:161 +#: src\CelestialNavigationUI.cpp:166 msgid "Center" msgstr "Centro" -#: src/CelestialNavigationUI.cpp:161 +#: src\CelestialNavigationUI.cpp:166 +msgid "Lower" +msgstr "Inferior" + +#: src\CelestialNavigationUI.cpp:166 msgid "Upper" msgstr "Superior" -#: src/CelestialNavigationUI.cpp:186 src/CelestialNavigationUI.cpp:193 -#: src/CelestialNavigationUI.cpp:223 src/CelestialNavigationUI.cpp:230 +#: src\CelestialNavigationUI.cpp:191 src\CelestialNavigationUI.cpp:198 +#: src\CelestialNavigationUI.cpp:228 src\CelestialNavigationUI.cpp:235 msgid "0" msgstr "0" -#: src/CelestialNavigationUI.cpp:189 src/CelestialNavigationUI.cpp:348 -#: src/CelestialNavigationUI.cpp:598 +#: src\CelestialNavigationUI.cpp:194 src\CelestialNavigationUI.cpp:353 +#: src\CelestialNavigationUI.cpp:605 msgid "Degrees" msgstr "Graus" -#: src/CelestialNavigationUI.cpp:196 src/CelestialNavigationUI.cpp:278 -#: src/CelestialNavigationUI.cpp:439 +#: src\CelestialNavigationUI.cpp:201 src\CelestialNavigationUI.cpp:283 +#: src\CelestialNavigationUI.cpp:444 msgid "Minutes" msgstr "Minutos" -#: src/CelestialNavigationUI.cpp:200 +#: src\CelestialNavigationUI.cpp:205 msgid "10" msgstr "10" -#: src/CelestialNavigationUI.cpp:203 +#: src\CelestialNavigationUI.cpp:208 msgid "Minutes Certainty" msgstr "Minutos de certeza" -#: src/CelestialNavigationUI.cpp:217 +#: src\CelestialNavigationUI.cpp:222 msgid "Lunar Altitude" msgstr "Altitude Lunar" -#: src/CelestialNavigationUI.cpp:226 +#: src\CelestialNavigationUI.cpp:231 msgid "Body Altitude" msgstr "Altitude do corpo" -#: src/CelestialNavigationUI.cpp:243 +#: src\CelestialNavigationUI.cpp:248 msgid "Sight" msgstr "Posição" -#: src/CelestialNavigationUI.cpp:271 +#: src\CelestialNavigationUI.cpp:276 msgid "Hours" msgstr "Horas" -#: src/CelestialNavigationUI.cpp:285 src/CelestialNavigationUI.cpp:303 -#: src/CelestialNavigationUI.cpp:860 +#: src\CelestialNavigationUI.cpp:290 src\CelestialNavigationUI.cpp:308 +#: src\CelestialNavigationUI.cpp:869 msgid "Seconds" msgstr "Segundos" -#: src/CelestialNavigationUI.cpp:293 +#: src\CelestialNavigationUI.cpp:298 msgid "Certainty" msgstr "Certeza" -#: src/CelestialNavigationUI.cpp:323 -msgid "Time" -msgstr "Hora" - -#: src/CelestialNavigationUI.cpp:330 src/CelestialNavigationUI.cpp:580 +#: src\CelestialNavigationUI.cpp:335 src\CelestialNavigationUI.cpp:587 msgid "Distance" msgstr "Distância" -#: src/CelestialNavigationUI.cpp:337 src/CelestialNavigationUI.cpp:587 +#: src\CelestialNavigationUI.cpp:342 src\CelestialNavigationUI.cpp:594 msgid "Nm" msgstr "Nm" -#: src/CelestialNavigationUI.cpp:341 src/CelestialNavigationUI.cpp:591 +#: src\CelestialNavigationUI.cpp:346 src\CelestialNavigationUI.cpp:598 msgid "Bearing" msgstr "Rumo" -#: src/CelestialNavigationUI.cpp:352 src/CelestialNavigationUI.cpp:602 +#: src\CelestialNavigationUI.cpp:357 src\CelestialNavigationUI.cpp:609 msgid "Magnetic Bearing" msgstr "Rumo magnético" -#: src/CelestialNavigationUI.cpp:359 +#: src\CelestialNavigationUI.cpp:364 msgid "DR Shift" msgstr "Desvio DR" -#: src/CelestialNavigationUI.cpp:366 +#: src\CelestialNavigationUI.cpp:371 msgid "Transparency" msgstr "Transparência" -#: src/CelestialNavigationUI.cpp:387 +#: src\CelestialNavigationUI.cpp:392 msgid "Config" msgstr "Configuração" -#: src/CelestialNavigationUI.cpp:399 +#: src\CelestialNavigationUI.cpp:404 msgid "Eye Height" msgstr "Altura dos olhos" -#: src/CelestialNavigationUI.cpp:403 +#: src\CelestialNavigationUI.cpp:408 msgid "2" msgstr "2" -#: src/CelestialNavigationUI.cpp:406 +#: src\CelestialNavigationUI.cpp:411 msgid "Meters" msgstr "Metros" -#: src/CelestialNavigationUI.cpp:410 +#: src\CelestialNavigationUI.cpp:415 msgid "Temperature" msgstr "Temperatura" -#: src/CelestialNavigationUI.cpp:417 +#: src\CelestialNavigationUI.cpp:422 msgid "Celcius" msgstr "Celcius" -#: src/CelestialNavigationUI.cpp:421 +#: src\CelestialNavigationUI.cpp:426 msgid "Pressure" msgstr "Pressão" -#: src/CelestialNavigationUI.cpp:428 +#: src\CelestialNavigationUI.cpp:433 msgid "MilliBars" msgstr "Milibares" -#: src/CelestialNavigationUI.cpp:432 +#: src\CelestialNavigationUI.cpp:437 msgid "Index Error" msgstr "Erro de índice" -#: src/CelestialNavigationUI.cpp:446 +#: src\CelestialNavigationUI.cpp:451 msgid "Set As Defaults" msgstr "Ajustar como padrões" -#: src/CelestialNavigationUI.cpp:453 +#: src\CelestialNavigationUI.cpp:458 msgid "Parameters" msgstr "Parâmetros" -#: src/CelestialNavigationUI.cpp:469 +#: src\CelestialNavigationUI.cpp:474 msgid "Calculations" msgstr "Cálculos" -#: src/CelestialNavigationUI.cpp:571 +#: src\CelestialNavigationUI.cpp:578 msgid "Shift all visible Sights" msgstr "Desvio todas as vistas visíveis" -#: src/CelestialNavigationUI.cpp:649 src/CelestialNavigationUI.cpp:760 +#: src\CelestialNavigationUI.cpp:656 src\CelestialNavigationUI.cpp:769 msgid "Latitude" msgstr "Latitude" -#: src/CelestialNavigationUI.cpp:658 src/CelestialNavigationUI.cpp:768 +#: src\CelestialNavigationUI.cpp:665 src\CelestialNavigationUI.cpp:777 msgid "Longitude" msgstr "Longitude" -#: src/CelestialNavigationUI.cpp:669 src/CelestialNavigationUI.cpp:679 -msgid "MyLabel" -msgstr "Minha Label" - -#: src/CelestialNavigationUI.cpp:686 -msgid "Done" -msgstr "Feito" +#: src\CelestialNavigationUI.cpp:691 +msgid "Boat Position" +msgstr "" -#: src/CelestialNavigationUI.cpp:689 +#: src\CelestialNavigationUI.cpp:695 msgid "Magnetic" msgstr "Magnético" -#: src/CelestialNavigationUI.cpp:753 +#: src\CelestialNavigationUI.cpp:698 +msgid "Done" +msgstr "Feito" + +#: src\CelestialNavigationUI.cpp:762 msgid "Fix From Visible Sights" msgstr "Posição atravé de visível avistamento" -#: src/CelestialNavigationUI.cpp:764 +#: src\CelestialNavigationUI.cpp:773 msgid " N/A " msgstr " N/A " -#: src/CelestialNavigationUI.cpp:772 +#: src\CelestialNavigationUI.cpp:781 msgid " N/A " msgstr " N/A " -#: src/CelestialNavigationUI.cpp:776 +#: src\CelestialNavigationUI.cpp:785 msgid "Error" msgstr "Erro" -#: src/CelestialNavigationUI.cpp:780 +#: src\CelestialNavigationUI.cpp:789 msgid " N/A " msgstr " N/A " -#: src/CelestialNavigationUI.cpp:787 src/CelestialNavigationUI.cpp:794 +#: src\CelestialNavigationUI.cpp:796 src\CelestialNavigationUI.cpp:803 msgid "Initial" msgstr "Inicial" -#: src/CelestialNavigationUI.cpp:801 +#: src\CelestialNavigationUI.cpp:810 msgid "Alg" msgstr "ALG" -#: src/CelestialNavigationUI.cpp:806 +#: src\CelestialNavigationUI.cpp:815 msgid "Plane" msgstr "Plano" -#: src/CelestialNavigationUI.cpp:807 +#: src\CelestialNavigationUI.cpp:816 msgid "Sphere" msgstr "Esfera" -#: src/CelestialNavigationUI.cpp:808 +#: src\CelestialNavigationUI.cpp:817 msgid "Cone" msgstr "Cone" -#: src/CelestialNavigationUI.cpp:809 +#: src\CelestialNavigationUI.cpp:818 msgid "Cone 2" msgstr "Cone 2" -#: src/CelestialNavigationUI.cpp:813 +#: src\CelestialNavigationUI.cpp:822 msgid "Go" msgstr "Ir" -#: src/CelestialNavigationUI.cpp:850 src/CelestialNavigationUI.h:303 +#: src\CelestialNavigationUI.cpp:859 src\CelestialNavigationUI.h:308 msgid "Clock Correction" msgstr "Correção do relógio" -#: src/CelestialNavigationUI.h:78 +#: src\CelestialNavigationUI.h:82 msgid "Celestial Navigation Sights" msgstr "Navegação Astronomica Posição" -#: src/CelestialNavigationUI.h:169 +#: src\CelestialNavigationUI.h:173 msgid "Sight Properties" msgstr "Propriedades da Posição" -#: src/CelestialNavigationUI.h:200 +#: src\CelestialNavigationUI.h:204 msgid "Dead Reckoning shift" msgstr "Desvio da Posição estimada" -#: src/CelestialNavigationUI.h:227 +#: src\CelestialNavigationUI.h:232 msgid "Find Celestial Body" msgstr "Encontrar o corpo celeste" -#: src/Sight.cpp:160 +#: src\FixDialog.cpp:192 +msgid "Shifted sights are not used to compute a fix, determine fix visually instead.\n" +msgstr "Posições deslocados não são usadas para calcular uma correção, determinar correção visualmente em vez disso. \n" + +#: src\FixDialog.cpp:193 +msgid "Fix Position" +msgstr "Posição fixa" + +#: src\FixDialog.cpp:338 src\FixDialog.cpp:339 src\FixDialog.cpp:340 +msgid " N/A " +msgstr " N/A " + +#: src\Sight.cpp:172 src\Sight.cpp.bak:173 msgid "Astrolab failed, data unavailable:\n" msgstr "Astrolab falha, dados indisponíveis: \n" -#: src/Sight.cpp:161 +#: src\Sight.cpp:173 src\Sight.cpp.bak:174 msgid "\n" "Did you forget to install vsop87d.txt?\n" msgstr "\n" "Você esqueceu de instalar vsop87d.txt?\n" -#: src/Sight.cpp:162 +#: src\Sight.cpp:174 src\Sight.cpp.bak:175 msgid "The plugin will not work correctly" msgstr "O plugin não irá funcionar corretamente" -#: src/Sight.cpp:163 +#: src\Sight.cpp:175 src\Sight.cpp.bak:176 msgid "Failure Alert" msgstr "Alerta de falha" -#: src/Sight.cpp:474 +#: src\Sight.cpp:495 src\Sight.cpp.bak:496 #, c-format msgid "Applying clock correction of %d seconds\n\n" msgstr "Aplicando a correção de relógio de %d segundos\n\n" -#: src/Sight.cpp:536 +#: src\Sight.cpp:557 src\Sight.cpp.bak:558 msgid "Almanac Data For " msgstr "Dados do almanaque para " -#: src/Sight.cpp:537 +#: src\Sight.cpp:558 src\Sight.cpp.bak:559 #, c-format msgid "\n" "Geographical Position (lat, lon) = %.4f %.4f\n" @@ -418,16 +482,19 @@ msgstr "\n" "SD = %.1f'\n" "HP = %.1f'\n\n" -#: src/Sight.cpp:552 src/Sight.cpp:690 +#: src\Sight.cpp:573 src\Sight.cpp:711 src\Sight.cpp.bak:574 +#: src\Sight.cpp.bak:712 msgid "Formulas used to calculate sight\n\n" msgstr "Fórmulas utilizadas para calcular visada\n\n" -#: src/Sight.cpp:556 src/Sight.cpp:694 +#: src\Sight.cpp:577 src\Sight.cpp:715 src\Sight.cpp.bak:578 +#: src\Sight.cpp.bak:716 #, c-format msgid "Index Error is %.4f degrees\n\n" msgstr "Índice de erro é %.4f graus\n\n" -#: src/Sight.cpp:561 src/Sight.cpp:699 +#: src\Sight.cpp:582 src\Sight.cpp:720 src\Sight.cpp.bak:583 +#: src\Sight.cpp.bak:721 #, c-format msgid "Eye Height is %.4f meters\n" "Height Correction Degrees = 1.758*sqrt(%.4f) / 60.0\n" @@ -436,7 +503,8 @@ msgstr "Altura dos olhos é %.4f metros\n" "Graus de correção da altura = 1.758*sqrt(%.4f) / 60.0\n" "Graus de correção da altura = %.4f\n" -#: src/Sight.cpp:568 +#: src\Sight.cpp:589 src\Sight.cpp:799 src\Sight.cpp.bak:590 +#: src\Sight.cpp.bak:800 #, c-format msgid "\n" "Apparent Altitude (Ha)\n" @@ -449,7 +517,8 @@ msgstr "\n" "Altitude Aparente = %.4f - %.4f - %.4f\n" "Altitude Aparente = %.4f\n" -#: src/Sight.cpp:586 src/Sight.cpp:789 +#: src\Sight.cpp:607 src\Sight.cpp:810 src\Sight.cpp.bak:608 +#: src\Sight.cpp.bak:811 #, c-format msgid "\n" "Refraction Correction\n" @@ -462,7 +531,8 @@ msgstr "\n" "x = tan (Pi/180*%.4f + 4.848e-2*(Pi/180) / (tan(Pi/180*%.4f) +.028)) \n" "x = %.4f\n" -#: src/Sight.cpp:591 src/Sight.cpp:794 +#: src\Sight.cpp:612 src\Sight.cpp:815 src\Sight.cpp.bak:613 +#: src\Sight.cpp.bak:816 #, c-format msgid "RefractionCorrection = .267 * Pressure / (x*(Temperature + 273.15)) / 60.0\n" "RefractionCorrection = .267 * %.4f / (x*(%.4f + 273.15)) / 60.0\n" @@ -471,7 +541,8 @@ msgstr "Correção da Refracão =.267 * pressão / (x * (temperatura + 273.15)) "Correção da Refração =.267 * %.4f / (x * (%.4f + 273.15)) / 60.0\n" "Correção da Refração = %.4f\n" -#: src/Sight.cpp:606 src/Sight.cpp:808 +#: src\Sight.cpp:627 src\Sight.cpp:829 src\Sight.cpp.bak:628 +#: src\Sight.cpp.bak:830 #, c-format msgid "\n" "Sun selected, Limb Correction\n" @@ -480,7 +551,8 @@ msgstr "\n" "Selecionado Sol, Limb Correção\n" "ra = %.4f, lc = 0.266564/ra = %.4f\n" -#: src/Sight.cpp:616 src/Sight.cpp:732 +#: src\Sight.cpp:637 src\Sight.cpp:753 src\Sight.cpp.bak:638 +#: src\Sight.cpp.bak:754 #, c-format msgid "\n" "Moon selected, Limb Correction\n" @@ -493,22 +565,26 @@ msgstr "\n" "lc = 180/Pi * asin (Pi/180 * SD) \n" "lc = %.4f\n" -#: src/Sight.cpp:626 src/Sight.cpp:741 src/Sight.cpp:816 +#: src\Sight.cpp:647 src\Sight.cpp:762 src\Sight.cpp:837 src\Sight.cpp.bak:648 +#: src\Sight.cpp.bak:763 src\Sight.cpp.bak:838 msgid "Upper Limb" msgstr "Membro superior" -#: src/Sight.cpp:629 src/Sight.cpp:744 src/Sight.cpp:819 +#: src\Sight.cpp:650 src\Sight.cpp:765 src\Sight.cpp:840 src\Sight.cpp.bak:651 +#: src\Sight.cpp.bak:766 src\Sight.cpp.bak:841 msgid "Lower Limb" msgstr "Membro inferior" -#: src/Sight.cpp:632 src/Sight.cpp:822 +#: src\Sight.cpp:653 src\Sight.cpp:843 src\Sight.cpp.bak:654 +#: src\Sight.cpp.bak:844 #, c-format msgid "\n" "LimbCorrection = %.4f\n" msgstr "\n" "LimbCorrection = %.4f\n" -#: src/Sight.cpp:636 src/Sight.cpp:826 +#: src\Sight.cpp:657 src\Sight.cpp:847 src\Sight.cpp.bak:658 +#: src\Sight.cpp.bak:848 #, c-format msgid "\n" "Corrected Altitude\n" @@ -521,7 +597,8 @@ msgstr "\n" "Altitude Corrigida = %.4f - %.4f - %.4f\n" "Altitude Corrigida = %.4f\n" -#: src/Sight.cpp:650 src/Sight.cpp:840 +#: src\Sight.cpp:671 src\Sight.cpp:861 src\Sight.cpp.bak:672 +#: src\Sight.cpp.bak:862 #, c-format msgid "\n" "Sun selected, parallax correction\n" @@ -530,7 +607,8 @@ msgstr "\n" "Selecionado Sol, paralaxe correction\n" "rad = %.4f, HP = 0.002442/rad = %.4f\n" -#: src/Sight.cpp:659 src/Sight.cpp:764 +#: src\Sight.cpp:680 src\Sight.cpp:785 src\Sight.cpp.bak:681 +#: src\Sight.cpp.bak:786 #, c-format msgid "\n" "Moon selected, parallax correction\n" @@ -539,7 +617,8 @@ msgstr "\n" "Selecionado Lua, paralaxe correction\n" "HP = %.4f\n" -#: src/Sight.cpp:665 src/Sight.cpp:846 +#: src\Sight.cpp:686 src\Sight.cpp:867 src\Sight.cpp.bak:687 +#: src\Sight.cpp.bak:868 #, c-format msgid "ParallaxCorrection = -180/Pi * asin( sin(Pi/180 * HP ) * cos(Pi/180 * CorrectedAltitude))\n" "ParallaxCorrection = -180/Pi * asin( sin(Pi/180 * %.4f ) * cos(Pi/180 * %.4f))\n" @@ -548,7 +627,7 @@ msgstr "ParallaxCorrection = -180/Pi * asin (sin (Pi/180 * HP) * cos (Pi/180 * C "ParallaxCorrection = -180/Pi * asin (sin (Pi/180 * %.4f) * cos (Pi/180 * %.4f))\n" "ParallaxCorrection = %.4f\n" -#: src/Sight.cpp:672 +#: src\Sight.cpp:693 src\Sight.cpp.bak:694 #, c-format msgid "\n" "Observed Altitude (Ho)\n" @@ -561,20 +640,16 @@ msgstr "\n" "ObservadaAltitude = %.4f - %.4f\n" "ObservadaAltitude = %.4f\n" -#: src/Sight.cpp:706 +#: src\Sight.cpp:727 src\Sight.cpp.bak:728 #, c-format msgid "\n" "Apparent Moon Altitude (Ha)\n" "ApparentAltitudeMoon = MeasurementMoon - IndexCorrection - EyeHeightCorrection\n" -" ApparentAltitudeMoon = %.4f - %.4f - %.4f\n" +"ApparentAltitudeMoon = %.4f - %.4f - %.4f\n" "ApparentAltitudeMoon = %.4f\n" -msgstr "\n" -"Altitude aparente da Lua (Ha)\n" -"AparenteAltitudedaLua = MedidaLua - CorreçãoIndice - CorreçãoAlturaOlho\n" -" AparenteAltitudedaLua = %.4f - %.4f - %.4f\n" -"AparenteAltitudedaLua = %.4f\n" +msgstr "" -#: src/Sight.cpp:717 +#: src\Sight.cpp:738 src\Sight.cpp.bak:739 #, c-format msgid "\n" "Refraction Correction\n" @@ -587,7 +662,7 @@ msgstr "\n" "x = tan(Pi/180*%.4f + 4.848e-2*(Pi/180) / (tan(Pi/180*%.4f) + .028))\n" "x = %.4f\n" -#: src/Sight.cpp:722 +#: src\Sight.cpp:743 src\Sight.cpp.bak:744 #, c-format msgid "RefractionCorrectionMoon = .267 * Pressure / (x*(Temperature + 273.15)) / 60.0\n" "RefractionCorrectionMoon = .267 * %.4f / (x*(%.4f + 273.15)) / 60.0\n" @@ -596,14 +671,15 @@ msgstr "CorreçãoRefracãoLua =.267 * pressão / (x * (temperatura + 273.15)) / "Correção RefraçãoLua =.267 * %.4f / (x * (%.4f + 273.15)) / 60.0\n" "CorreçãoRefraçãoLua = %.4f\n" -#: src/Sight.cpp:747 src/Sight.cpp:750 +#: src\Sight.cpp:768 src\Sight.cpp:771 src\Sight.cpp.bak:769 +#: src\Sight.cpp.bak:772 #, c-format msgid "\n" "LimbCorrectionMoon = %.4f\n" msgstr "\n" "LimbCorreçãoLua = %.4f\n" -#: src/Sight.cpp:753 +#: src\Sight.cpp:774 src\Sight.cpp.bak:775 #, c-format msgid "\n" "Corrected Altitude\n" @@ -616,29 +692,14 @@ msgstr "\n" "CorrigidaAltitudeLua = %.4f - %.4f - %.4f\n" "CorrigidaAltitudeLua = %.4f\n" -#: src/Sight.cpp:768 +#: src\Sight.cpp:789 src\Sight.cpp.bak:790 #, c-format msgid "ParallaxCorrectionMoon = -180/Pi * asin( sin(Pi/180 * HP ) * cos(Pi/180 * CorrectedAltitude))\n" -" ParallaxCorrectionMoon = -180/Pi * asin( sin(Pi/180 * %.4f ) * cos(Pi/180 * %.4f))\n" +"ParallaxCorrectionMoon = -180/Pi * asin( sin(Pi/180 * %.4f ) * cos(Pi/180 * %.4f))\n" "ParallaxCorrectionMoon = %.4f\n" -msgstr "ParallaxCorreçãoLua = -180/Pi * asin( sin(Pi/180 * HP ) * cos(Pi/180 * CorrigidaAltitude))\n" -" ParallaxCorreçãoLua = -180/Pi * asin( sin(Pi/180 * %.4f ) * cos(Pi/180 * %.4f))\n" -"ParallaxCorreçãoLua = %.4f\n" - -#: src/Sight.cpp:778 -#, c-format -msgid "\n" -"Apparent Altitude (Ha)\n" -"ApparentAltitude = Measurement - IndexCorrection - EyeHeightCorrection\n" -" ApparentAltitude = %.4f - %.4f - %.4f\n" -"ApparentAltitude = %.4f\n" -msgstr "\n" -"Altitude Aparente (Ha)\n" -"AparenteAltitude = Medição - IndiceCorreção - AlturaOlhosCorreção\n" -" AparenteAltitude = %.4f - %.4f - %.4f\n" -"AparenteAltitude = %.4f\n" +msgstr "" -#: src/Sight.cpp:857 +#: src\Sight.cpp:878 src\Sight.cpp.bak:879 #, c-format msgid "CorrectionsMoon = %.4f\n" "CorrectionsBody = %.4f\n" @@ -647,7 +708,7 @@ msgstr "CorreçõesLua = %.4f\n" "CorreçõesCorpo = %.4f\n" "Correções = abs(CorreçõesLua - CorreçõesCorpo) = %.4f\n" -#: src/Sight.cpp:863 +#: src\Sight.cpp:884 src\Sight.cpp.bak:885 #, c-format msgid "CorrectedMeasurement = Measurement - Corrections - IndexCorrection\n" "CorrectedMeasurement = %.4f - %.4f - %.4f\n" @@ -656,85 +717,65 @@ msgstr "CorrigidaMedição = Medição - Correções - IndiceCorreção\n" "CorrigidaMedição = %.4f - %.4f - %.4f\n" "CorrigidaMedição = %.4f\n" -#: src/Sight.cpp:888 +#: src\Sight.cpp:909 src\Sight.cpp.bak:910 msgid "\n" "Calculated angle between Moon and " msgstr "\n" "Angulo calculado entre a Lua e " -#: src/Sight.cpp:890 +#: src\Sight.cpp:911 src\Sight.cpp.bak:912 #, c-format msgid "\n" "Error from measurement: %.4f" msgstr "\n" "Erro de medição: %.4f" -#: src/Sight.cpp:894 +#: src\Sight.cpp:915 src\Sight.cpp.bak:916 msgid "\n" "Moon takes 28 days to orbit, one degree of error takes 6720 seconds" msgstr "\n" "A Lua demora 28 dias a completar a orbita, um erro de um grau representa 6720 segundos" -#: src/Sight.cpp:895 +#: src\Sight.cpp:916 src\Sight.cpp.bak:917 #, c-format msgid "\n" "Time correction %.4f seconds" msgstr "\n" "Correção de tempo %.4f segundos" -#: src/Sight.cpp:1099 +#: src\Sight.cpp:1120 src\Sight.cpp.bak:1121 msgid "Building bearing Sight Positions" msgstr "Construindo posições de marcação" -#: src/SightDialog.cpp:172 +#: src\SightDialog.cpp:184 msgid "Measurement certainty likely set to small, sight may not appear " msgstr "Provavelmente pequena a certeza de medição, posição pode não aparecer " -#: src/SightDialog.cpp:173 src/SightDialog.cpp:256 +#: src\SightDialog.cpp:185 src\SightDialog.cpp:279 msgid "Warning" msgstr "Aviso" -#: src/SightDialog.cpp:255 +#: src\SightDialog.cpp:278 msgid "Lunar shot will be invalid taking distance from moon to itself" msgstr "Observação Lunar será inválida considerando a distancia da Lua a ela própria" -#: src/celestial_navigation_pi.cpp:90 -msgid "Failed to load file:\n" -msgstr "Falha ao carregar arquivo:\n" - -#: src/celestial_navigation_pi.cpp:91 -msgid "\n" -"Magnetic data will not be available for the celestial navigation plugin." -msgstr "\n" -"Dados Magnéticos não estarão disponíveis para o plugin de navegação astronomica." +#: src\celestial_navigation_pi.cpp:179 +msgid "open error" +msgstr "" -#: src/celestial_navigation_pi.cpp:92 -msgid "OpenCPN Alert" -msgstr "OpenCPN Alerta" +#: src\celestial_navigation_pi.cpp:180 +msgid "corrupt record" +msgstr "" -#: src/celestial_navigation_pi.cpp:157 -msgid "Celestial Navigation PlugIn for OpenCPN" -msgstr "PlugIn de navegação astronomica para OpenCPN" - -#: src/celestial_navigation_pi.cpp:162 -msgid "Celestial Navigation PlugIn for OpenCPN.\n" -"Implements nautical almanac for sun, moon, planets,\n" -"and various navigational stars.\n" -"Compute position fix from celestial measurements." -msgstr "PlugIn Navegação Astronômica para OpenCPN.\n" -"Implementa Almanaque Náutico para o sol, lua, planetas \n" -"e diversas estrelas navegacionais.\n" -"Calcula a posição fixa através de medições celestes." - -#: src/FixDialog.cpp:189 -msgid "Shifted sights are not used to compute a fix, determine fix visually instead.\n" -msgstr "Posições deslocados não são usadas para calcular uma correção, determinar correção visualmente em vez disso. \n" +#: src\celestial_navigation_pi.cpp:181 +msgid "too many models" +msgstr "" -#: src/FixDialog.cpp:190 -msgid "Fix Position" -msgstr "Posição fixa" +#: src\celestial_navigation_pi.cpp:184 +msgid "Magnetic data will not be available for the celestial navigation plugin." +msgstr "" -#: src/FixDialog.cpp:335 src/FixDialog.cpp:336 src/FixDialog.cpp:337 -msgid " N/A " -msgstr " N/A " +#: src\celestial_navigation_pi.cpp:185 +msgid "OpenCPN Alert" +msgstr "OpenCPN Alerta" diff --git a/po/pt_PT.po b/po/pt_PT.po index a15b9c2..c70b61e 100644 --- a/po/pt_PT.po +++ b/po/pt_PT.po @@ -2,404 +2,468 @@ msgid "" msgstr "" "Project-Id-Version: opencpn\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-02-28 14:10-0300\n" -"PO-Revision-Date: 2018-01-29 21:28-0500\n" -"Last-Translator: nohal \n" +"POT-Creation-Date: 2021-10-27 22:15+0200\n" +"PO-Revision-Date: 2023-10-04 18:33\n" +"Last-Translator: \n" "Language-Team: Portuguese\n" "Language: pt_PT\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -"X-Generator: crowdin.com\n" "X-Crowdin-Project: opencpn\n" +"X-Crowdin-Project-ID: 49843\n" "X-Crowdin-Language: pt-PT\n" "X-Crowdin-File: /plugins/celestial_navigation_pi/po/celestial_navigation_pi.pot\n" +"X-Crowdin-File-ID: 108\n" -#: src/CelestialNavigationDialog.cpp:123 src/CelestialNavigationUI.cpp:132 +#: src\CelestialNavigationDialog-2.3.5.1-no-android.cpp:149 +#: src\CelestialNavigationDialog-2.3.5.2-android.cpp:150 +#: src\CelestialNavigationDialog-partial-android.cpp:149 +#: src\CelestialNavigationDialog.cpp:150 src\CelestialNavigationUI.cpp:137 msgid "Type" msgstr "Tipo" -#: src/CelestialNavigationDialog.cpp:124 +#: src\CelestialNavigationDialog-2.3.5.1-no-android.cpp:150 +#: src\CelestialNavigationDialog-2.3.5.2-android.cpp:151 +#: src\CelestialNavigationDialog-partial-android.cpp:150 +#: src\CelestialNavigationDialog.cpp:151 msgid "Body" msgstr "Astro" -#: src/CelestialNavigationDialog.cpp:125 -msgid "Time (UTC)" +#: src\CelestialNavigationDialog-2.3.5.1-no-android.cpp:151 +#: src\CelestialNavigationDialog-2.3.5.2-android.cpp:152 +#: src\CelestialNavigationDialog-partial-android.cpp:151 +#: src\CelestialNavigationDialog.cpp:152 src\CelestialNavigationUI.cpp:328 +msgid "Time (UT)" msgstr "Hora (UTC)" -#: src/CelestialNavigationDialog.cpp:126 src/CelestialNavigationUI.cpp:179 +#: src\CelestialNavigationDialog-2.3.5.1-no-android.cpp:152 +#: src\CelestialNavigationDialog-2.3.5.2-android.cpp:153 +#: src\CelestialNavigationDialog-partial-android.cpp:152 +#: src\CelestialNavigationDialog.cpp:153 src\CelestialNavigationUI.cpp:184 msgid "Measurement" msgstr "Medição" -#: src/CelestialNavigationDialog.cpp:127 src/CelestialNavigationUI.cpp:376 +#: src\CelestialNavigationDialog-2.3.5.1-no-android.cpp:153 +#: src\CelestialNavigationDialog-2.3.5.2-android.cpp:154 +#: src\CelestialNavigationDialog-partial-android.cpp:153 +#: src\CelestialNavigationDialog.cpp:154 src\CelestialNavigationUI.cpp:381 msgid "Color" msgstr "Cor" -#: src/CelestialNavigationDialog.cpp:193 -msgid "Failed to load file." -msgstr "Falha no carregamento do ficheiro." - -#: src/CelestialNavigationDialog.cpp:198 +#: src\CelestialNavigationDialog-2.3.5.1-no-android.cpp:266 +#: src\CelestialNavigationDialog-2.3.5.2-android.cpp:272 +#: src\CelestialNavigationDialog-partial-android.cpp:266 +#: src\CelestialNavigationDialog.cpp:272 src\celestial_navigation_pi.cpp:177 +msgid "Failed to load file: " +msgstr "Falha a carregar ficheiro: " + +#: src\CelestialNavigationDialog-2.3.5.1-no-android.cpp:271 +#: src\CelestialNavigationDialog-2.3.5.2-android.cpp:277 +#: src\CelestialNavigationDialog-partial-android.cpp:271 +#: src\CelestialNavigationDialog.cpp:277 msgid "Invalid xml file" msgstr "Ficheiro xml inválido" -#: src/CelestialNavigationDialog.cpp:250 +#: src\CelestialNavigationDialog-2.3.5.1-no-android.cpp:323 +#: src\CelestialNavigationDialog-2.3.5.2-android.cpp:329 +#: src\CelestialNavigationDialog-partial-android.cpp:323 +#: src\CelestialNavigationDialog.cpp:329 msgid "Unrecognized xml node" msgstr "Nó xml desconhecido" -#: src/CelestialNavigationDialog.cpp:260 -msgid "Weather Routing" -msgstr "Roteamento metereologico" +#: src\CelestialNavigationDialog-2.3.5.1-no-android.cpp:332 +#: src\CelestialNavigationDialog-2.3.5.1-no-android.cpp:392 +#: src\CelestialNavigationDialog-2.3.5.1-no-android.cpp:532 +#: src\CelestialNavigationDialog-2.3.5.2-android.cpp:338 +#: src\CelestialNavigationDialog-2.3.5.2-android.cpp:398 +#: src\CelestialNavigationDialog-2.3.5.2-android.cpp:538 +#: src\CelestialNavigationDialog-partial-android.cpp:332 +#: src\CelestialNavigationDialog-partial-android.cpp:392 +#: src\CelestialNavigationDialog-partial-android.cpp:532 +#: src\CelestialNavigationDialog.cpp:338 src\CelestialNavigationDialog.cpp:398 +#: src\CelestialNavigationDialog.cpp:538 src\Sight.cpp:1120 +#: src\Sight.cpp.bak:1121 src\celestial_navigation_pi.cpp:95 +#: src\celestial_navigation_pi.cpp:99 +msgid "Celestial Navigation" +msgstr "Navegação astronomica" -#: src/CelestialNavigationDialog.cpp:320 +#: src\CelestialNavigationDialog-2.3.5.1-no-android.cpp:391 +#: src\CelestialNavigationDialog-2.3.5.2-android.cpp:397 +#: src\CelestialNavigationDialog-partial-android.cpp:391 +#: src\CelestialNavigationDialog.cpp:397 msgid "Failed to save xml file: " msgstr "Falha na gravação do ficheiro xml: " -#: src/CelestialNavigationDialog.cpp:321 src/CelestialNavigationDialog.cpp:466 -#: src/Sight.cpp:1099 src/celestial_navigation_pi.cpp:99 -#: src/celestial_navigation_pi.cpp:152 -msgid "Celestial Navigation" -msgstr "Navegação astronomica" - -#: src/CelestialNavigationDialog.cpp:351 +#: src\CelestialNavigationDialog-2.3.5.1-no-android.cpp:424 +#: src\CelestialNavigationDialog-2.3.5.2-android.cpp:430 +#: src\CelestialNavigationDialog-partial-android.cpp:424 +#: src\CelestialNavigationDialog.cpp:430 msgid "Time Correction" msgstr "Correcção da hora" -#: src/CelestialNavigationDialog.cpp:409 +#: src\CelestialNavigationDialog-2.3.5.1-no-android.cpp:473 +#: src\CelestialNavigationDialog-2.3.5.2-android.cpp:479 +#: src\CelestialNavigationDialog-partial-android.cpp:473 +#: src\CelestialNavigationDialog.cpp:479 msgid "Sun" msgstr "Sol" -#: src/CelestialNavigationDialog.cpp:465 +#: src\CelestialNavigationDialog-2.3.5.1-no-android.cpp:531 +#: src\CelestialNavigationDialog-2.3.5.2-android.cpp:537 +#: src\CelestialNavigationDialog-partial-android.cpp:531 +#: src\CelestialNavigationDialog.cpp:537 msgid "Are you sure you want to delete all sights?" msgstr "Tem certeza que pretende apagar todas as posições?" -#: src/CelestialNavigationDialog.cpp:510 +#: src\CelestialNavigationDialog-2.3.5.1-no-android.cpp:582 +#: src\CelestialNavigationDialog-2.3.5.2-android.cpp:588 +#: src\CelestialNavigationDialog-partial-android.cpp:582 +#: src\CelestialNavigationDialog.cpp:588 msgid "Celestial_Navigation_Information.html" msgstr "Celestial_Navigation_Information.html" -#: src/CelestialNavigationDialog.cpp:516 -msgid "Show" -msgstr "Mostrar" - -#: src/CelestialNavigationDialog.cpp:516 src/CelestialNavigationUI.cpp:58 +#: src\CelestialNavigationDialog-2.3.5.1-no-android.cpp:589 +#: src\CelestialNavigationDialog-2.3.5.2-android.cpp:595 +#: src\CelestialNavigationDialog-partial-android.cpp:589 +#: src\CelestialNavigationDialog.cpp:595 src\CelestialNavigationUI.cpp:55 msgid "Hide" msgstr "Ocultar" -#: src/CelestialNavigationUI.cpp:40 +#: src\CelestialNavigationDialog-2.3.5.1-no-android.cpp:589 +#: src\CelestialNavigationDialog-2.3.5.2-android.cpp:595 +#: src\CelestialNavigationDialog-partial-android.cpp:589 +#: src\CelestialNavigationDialog.cpp:595 +msgid "Show" +msgstr "Mostrar" + +#: src\CelestialNavigationUI.cpp:40 msgid "New" msgstr "Novo" -#: src/CelestialNavigationUI.cpp:43 -msgid "Edit" -msgstr "Editar" - -#: src/CelestialNavigationUI.cpp:46 -msgid "Delete" -msgstr "Apagar" - -#: src/CelestialNavigationUI.cpp:49 -msgid "Delete All" -msgstr "Apagar tudo" - -#: src/CelestialNavigationUI.cpp:52 src/CelestialNavigationUI.h:281 +#: src\CelestialNavigationUI.cpp:43 src\CelestialNavigationUI.h:286 msgid "Fix" msgstr "Fix" -#: src/CelestialNavigationUI.cpp:55 +#: src\CelestialNavigationUI.cpp:46 +msgid "Duplicate" +msgstr "Duplicar" + +#: src\CelestialNavigationUI.cpp:49 msgid "Clock Offset" msgstr "Diferença horária" -#: src/CelestialNavigationUI.cpp:61 +#: src\CelestialNavigationUI.cpp:52 +msgid "Edit" +msgstr "Editar" + +#: src\CelestialNavigationUI.cpp:58 +msgid "Delete" +msgstr "Apagar" + +#: src\CelestialNavigationUI.cpp:61 msgid "Information" msgstr "Informação" -#: src/CelestialNavigationUI.cpp:136 src/CelestialNavigationUI.cpp:667 -#: src/Sight.h:49 +#: src\CelestialNavigationUI.cpp:64 +msgid "Delete All" +msgstr "Apagar tudo" + +#: src\CelestialNavigationUI.cpp:141 src\CelestialNavigationUI.cpp:674 +#: src\Sight.h:49 msgid "Altitude" msgstr "Altitude" -#: src/CelestialNavigationUI.cpp:136 src/CelestialNavigationUI.cpp:677 -#: src/Sight.h:49 +#: src\CelestialNavigationUI.cpp:141 src\CelestialNavigationUI.cpp:683 +#: src\Sight.h:49 msgid "Azimuth" msgstr "Azimute" -#: src/CelestialNavigationUI.cpp:136 src/Sight.h:49 +#: src\CelestialNavigationUI.cpp:141 src\Sight.h:49 msgid "Lunar" msgstr "Lunar" -#: src/CelestialNavigationUI.cpp:142 +#: src\CelestialNavigationUI.cpp:147 msgid "Magnetic Azimuth" msgstr "Azimute magnético" -#: src/CelestialNavigationUI.cpp:145 +#: src\CelestialNavigationUI.cpp:150 msgid "Celestial Body" msgstr "Corpo celeste" -#: src/CelestialNavigationUI.cpp:154 +#: src\CelestialNavigationUI.cpp:159 msgid "Find" msgstr "Encontrar" -#: src/CelestialNavigationUI.cpp:157 +#: src\CelestialNavigationUI.cpp:162 msgid "Limb" msgstr "Limbo" -#: src/CelestialNavigationUI.cpp:161 -msgid "Lower" -msgstr "Inferior" - -#: src/CelestialNavigationUI.cpp:161 +#: src\CelestialNavigationUI.cpp:166 msgid "Center" msgstr "Central" -#: src/CelestialNavigationUI.cpp:161 +#: src\CelestialNavigationUI.cpp:166 +msgid "Lower" +msgstr "Inferior" + +#: src\CelestialNavigationUI.cpp:166 msgid "Upper" msgstr "Superior" -#: src/CelestialNavigationUI.cpp:186 src/CelestialNavigationUI.cpp:193 -#: src/CelestialNavigationUI.cpp:223 src/CelestialNavigationUI.cpp:230 +#: src\CelestialNavigationUI.cpp:191 src\CelestialNavigationUI.cpp:198 +#: src\CelestialNavigationUI.cpp:228 src\CelestialNavigationUI.cpp:235 msgid "0" msgstr "0" -#: src/CelestialNavigationUI.cpp:189 src/CelestialNavigationUI.cpp:348 -#: src/CelestialNavigationUI.cpp:598 +#: src\CelestialNavigationUI.cpp:194 src\CelestialNavigationUI.cpp:353 +#: src\CelestialNavigationUI.cpp:605 msgid "Degrees" msgstr "Graus" -#: src/CelestialNavigationUI.cpp:196 src/CelestialNavigationUI.cpp:278 -#: src/CelestialNavigationUI.cpp:439 +#: src\CelestialNavigationUI.cpp:201 src\CelestialNavigationUI.cpp:283 +#: src\CelestialNavigationUI.cpp:444 msgid "Minutes" msgstr "Minutos" -#: src/CelestialNavigationUI.cpp:200 +#: src\CelestialNavigationUI.cpp:205 msgid "10" msgstr "10" -#: src/CelestialNavigationUI.cpp:203 +#: src\CelestialNavigationUI.cpp:208 msgid "Minutes Certainty" msgstr "Minutos de certeza" -#: src/CelestialNavigationUI.cpp:217 +#: src\CelestialNavigationUI.cpp:222 msgid "Lunar Altitude" msgstr "Altitude Lunar" -#: src/CelestialNavigationUI.cpp:226 +#: src\CelestialNavigationUI.cpp:231 msgid "Body Altitude" msgstr "Altitude do corpo" -#: src/CelestialNavigationUI.cpp:243 +#: src\CelestialNavigationUI.cpp:248 msgid "Sight" msgstr "Observação" -#: src/CelestialNavigationUI.cpp:271 +#: src\CelestialNavigationUI.cpp:276 msgid "Hours" msgstr "Horas" -#: src/CelestialNavigationUI.cpp:285 src/CelestialNavigationUI.cpp:303 -#: src/CelestialNavigationUI.cpp:860 +#: src\CelestialNavigationUI.cpp:290 src\CelestialNavigationUI.cpp:308 +#: src\CelestialNavigationUI.cpp:869 msgid "Seconds" msgstr "Segundos" -#: src/CelestialNavigationUI.cpp:293 +#: src\CelestialNavigationUI.cpp:298 msgid "Certainty" msgstr "Certeza" -#: src/CelestialNavigationUI.cpp:323 -msgid "Time" -msgstr "Hora" - -#: src/CelestialNavigationUI.cpp:330 src/CelestialNavigationUI.cpp:580 +#: src\CelestialNavigationUI.cpp:335 src\CelestialNavigationUI.cpp:587 msgid "Distance" msgstr "Distância" -#: src/CelestialNavigationUI.cpp:337 src/CelestialNavigationUI.cpp:587 +#: src\CelestialNavigationUI.cpp:342 src\CelestialNavigationUI.cpp:594 msgid "Nm" msgstr "Nm" -#: src/CelestialNavigationUI.cpp:341 src/CelestialNavigationUI.cpp:591 +#: src\CelestialNavigationUI.cpp:346 src\CelestialNavigationUI.cpp:598 msgid "Bearing" msgstr "Rumo" -#: src/CelestialNavigationUI.cpp:352 src/CelestialNavigationUI.cpp:602 +#: src\CelestialNavigationUI.cpp:357 src\CelestialNavigationUI.cpp:609 msgid "Magnetic Bearing" msgstr "Rumo magnético" -#: src/CelestialNavigationUI.cpp:359 +#: src\CelestialNavigationUI.cpp:364 msgid "DR Shift" msgstr "Desvio DR" -#: src/CelestialNavigationUI.cpp:366 +#: src\CelestialNavigationUI.cpp:371 msgid "Transparency" msgstr "Transparência" -#: src/CelestialNavigationUI.cpp:387 +#: src\CelestialNavigationUI.cpp:392 msgid "Config" msgstr "Configuração" -#: src/CelestialNavigationUI.cpp:399 +#: src\CelestialNavigationUI.cpp:404 msgid "Eye Height" msgstr "Altura dos olhos" -#: src/CelestialNavigationUI.cpp:403 +#: src\CelestialNavigationUI.cpp:408 msgid "2" msgstr "2" -#: src/CelestialNavigationUI.cpp:406 +#: src\CelestialNavigationUI.cpp:411 msgid "Meters" msgstr "Metros" -#: src/CelestialNavigationUI.cpp:410 +#: src\CelestialNavigationUI.cpp:415 msgid "Temperature" msgstr "Temperatura" -#: src/CelestialNavigationUI.cpp:417 +#: src\CelestialNavigationUI.cpp:422 msgid "Celcius" msgstr "Celcius" -#: src/CelestialNavigationUI.cpp:421 +#: src\CelestialNavigationUI.cpp:426 msgid "Pressure" msgstr "Pressão" -#: src/CelestialNavigationUI.cpp:428 +#: src\CelestialNavigationUI.cpp:433 msgid "MilliBars" msgstr "Milibares" -#: src/CelestialNavigationUI.cpp:432 +#: src\CelestialNavigationUI.cpp:437 msgid "Index Error" msgstr "Erro de índice" -#: src/CelestialNavigationUI.cpp:446 +#: src\CelestialNavigationUI.cpp:451 msgid "Set As Defaults" msgstr "Definir como padrões" -#: src/CelestialNavigationUI.cpp:453 +#: src\CelestialNavigationUI.cpp:458 msgid "Parameters" msgstr "Parâmetros" -#: src/CelestialNavigationUI.cpp:469 +#: src\CelestialNavigationUI.cpp:474 msgid "Calculations" msgstr "Cálculos" -#: src/CelestialNavigationUI.cpp:571 +#: src\CelestialNavigationUI.cpp:578 msgid "Shift all visible Sights" msgstr "Desvio todas as vistas visíveis" -#: src/CelestialNavigationUI.cpp:649 src/CelestialNavigationUI.cpp:760 +#: src\CelestialNavigationUI.cpp:656 src\CelestialNavigationUI.cpp:769 msgid "Latitude" msgstr "Latitude" -#: src/CelestialNavigationUI.cpp:658 src/CelestialNavigationUI.cpp:768 +#: src\CelestialNavigationUI.cpp:665 src\CelestialNavigationUI.cpp:777 msgid "Longitude" msgstr "Longitude" -#: src/CelestialNavigationUI.cpp:669 src/CelestialNavigationUI.cpp:679 -msgid "MyLabel" -msgstr "MyLabel" +#: src\CelestialNavigationUI.cpp:691 +msgid "Boat Position" +msgstr "Posição do barco" -#: src/CelestialNavigationUI.cpp:686 -msgid "Done" -msgstr "Feito" - -#: src/CelestialNavigationUI.cpp:689 +#: src\CelestialNavigationUI.cpp:695 msgid "Magnetic" msgstr "Magnético" -#: src/CelestialNavigationUI.cpp:753 +#: src\CelestialNavigationUI.cpp:698 +msgid "Done" +msgstr "Feito" + +#: src\CelestialNavigationUI.cpp:762 msgid "Fix From Visible Sights" msgstr "Solução de Avistamentos visíveis" -#: src/CelestialNavigationUI.cpp:764 +#: src\CelestialNavigationUI.cpp:773 msgid " N/A " msgstr " N/A " -#: src/CelestialNavigationUI.cpp:772 +#: src\CelestialNavigationUI.cpp:781 msgid " N/A " msgstr " N/A " -#: src/CelestialNavigationUI.cpp:776 +#: src\CelestialNavigationUI.cpp:785 msgid "Error" msgstr "Erro" -#: src/CelestialNavigationUI.cpp:780 +#: src\CelestialNavigationUI.cpp:789 msgid " N/A " msgstr " N/A " -#: src/CelestialNavigationUI.cpp:787 src/CelestialNavigationUI.cpp:794 +#: src\CelestialNavigationUI.cpp:796 src\CelestialNavigationUI.cpp:803 msgid "Initial" msgstr "Inicial" -#: src/CelestialNavigationUI.cpp:801 +#: src\CelestialNavigationUI.cpp:810 msgid "Alg" msgstr "Alg" -#: src/CelestialNavigationUI.cpp:806 +#: src\CelestialNavigationUI.cpp:815 msgid "Plane" msgstr "Plano" -#: src/CelestialNavigationUI.cpp:807 +#: src\CelestialNavigationUI.cpp:816 msgid "Sphere" msgstr "Esfera" -#: src/CelestialNavigationUI.cpp:808 +#: src\CelestialNavigationUI.cpp:817 msgid "Cone" msgstr "Cone" -#: src/CelestialNavigationUI.cpp:809 +#: src\CelestialNavigationUI.cpp:818 msgid "Cone 2" msgstr "Cone 2" -#: src/CelestialNavigationUI.cpp:813 +#: src\CelestialNavigationUI.cpp:822 msgid "Go" msgstr "Calcular" -#: src/CelestialNavigationUI.cpp:850 src/CelestialNavigationUI.h:303 +#: src\CelestialNavigationUI.cpp:859 src\CelestialNavigationUI.h:308 msgid "Clock Correction" msgstr "Correcção do relógio" -#: src/CelestialNavigationUI.h:78 +#: src\CelestialNavigationUI.h:82 msgid "Celestial Navigation Sights" msgstr "Observações de Navegação Astronómica" -#: src/CelestialNavigationUI.h:169 +#: src\CelestialNavigationUI.h:173 msgid "Sight Properties" msgstr "Propriedades Observação" -#: src/CelestialNavigationUI.h:200 +#: src\CelestialNavigationUI.h:204 msgid "Dead Reckoning shift" msgstr "Desvio da Posição estimada" -#: src/CelestialNavigationUI.h:227 +#: src\CelestialNavigationUI.h:232 msgid "Find Celestial Body" msgstr "Procurar corpo celeste" -#: src/Sight.cpp:160 +#: src\FixDialog.cpp:192 +msgid "Shifted sights are not used to compute a fix, determine fix visually instead.\n" +msgstr "Posições deslocados não são usadas para calcular uma solução, determinar solução visualmente em vez disso. \n" + +#: src\FixDialog.cpp:193 +msgid "Fix Position" +msgstr "Posicão calculada" + +#: src\FixDialog.cpp:338 src\FixDialog.cpp:339 src\FixDialog.cpp:340 +msgid " N/A " +msgstr " N/A " + +#: src\Sight.cpp:172 src\Sight.cpp.bak:173 msgid "Astrolab failed, data unavailable:\n" msgstr "Astrolabio falhou, dados indisponíveis: \n" -#: src/Sight.cpp:161 +#: src\Sight.cpp:173 src\Sight.cpp.bak:174 msgid "\n" "Did you forget to install vsop87d.txt?\n" msgstr "\n" "Esqueceu-s de instalar vsop87d.txt?\n" -#: src/Sight.cpp:162 +#: src\Sight.cpp:174 src\Sight.cpp.bak:175 msgid "The plugin will not work correctly" msgstr "A extensão não funcionará corretamente" -#: src/Sight.cpp:163 +#: src\Sight.cpp:175 src\Sight.cpp.bak:176 msgid "Failure Alert" msgstr "Alerta de falha" -#: src/Sight.cpp:474 +#: src\Sight.cpp:495 src\Sight.cpp.bak:496 #, c-format msgid "Applying clock correction of %d seconds\n\n" msgstr "Aplicar correcção do relógio de %d segundos\n\n" -#: src/Sight.cpp:536 +#: src\Sight.cpp:557 src\Sight.cpp.bak:558 msgid "Almanac Data For " msgstr "Dados do almanaque para " -#: src/Sight.cpp:537 +#: src\Sight.cpp:558 src\Sight.cpp.bak:559 #, c-format msgid "\n" "Geographical Position (lat, lon) = %.4f %.4f\n" @@ -418,16 +482,19 @@ msgstr "\n" "SD = %.1f'\n" "HP = %.1f'\n\n" -#: src/Sight.cpp:552 src/Sight.cpp:690 +#: src\Sight.cpp:573 src\Sight.cpp:711 src\Sight.cpp.bak:574 +#: src\Sight.cpp.bak:712 msgid "Formulas used to calculate sight\n\n" msgstr "Fórmulas utilizadas para calcular observação\n\n" -#: src/Sight.cpp:556 src/Sight.cpp:694 +#: src\Sight.cpp:577 src\Sight.cpp:715 src\Sight.cpp.bak:578 +#: src\Sight.cpp.bak:716 #, c-format msgid "Index Error is %.4f degrees\n\n" msgstr "Erro de índice é %.4f graus\n\n" -#: src/Sight.cpp:561 src/Sight.cpp:699 +#: src\Sight.cpp:582 src\Sight.cpp:720 src\Sight.cpp.bak:583 +#: src\Sight.cpp.bak:721 #, c-format msgid "Eye Height is %.4f meters\n" "Height Correction Degrees = 1.758*sqrt(%.4f) / 60.0\n" @@ -436,7 +503,8 @@ msgstr "Altura dos olhos é %.4f metros\n" "Graus de correção da altura = 1.758*sqrt(%.4f) / 60.0\n" "Graus de correção da altura = %.4f\n" -#: src/Sight.cpp:568 +#: src\Sight.cpp:589 src\Sight.cpp:799 src\Sight.cpp.bak:590 +#: src\Sight.cpp.bak:800 #, c-format msgid "\n" "Apparent Altitude (Ha)\n" @@ -449,7 +517,8 @@ msgstr "\n" "Altitude Aparente = %.4f - %.4f - %.4f\n" "Altitude Aparente = %.4f\n" -#: src/Sight.cpp:586 src/Sight.cpp:789 +#: src\Sight.cpp:607 src\Sight.cpp:810 src\Sight.cpp.bak:608 +#: src\Sight.cpp.bak:811 #, c-format msgid "\n" "Refraction Correction\n" @@ -462,7 +531,8 @@ msgstr "\n" "x = tan (Pi/180*%.4f + 4.848e-2*(Pi/180) / (tan(Pi/180*%.4f) +.028)) \n" "x = %.4f\n" -#: src/Sight.cpp:591 src/Sight.cpp:794 +#: src\Sight.cpp:612 src\Sight.cpp:815 src\Sight.cpp.bak:613 +#: src\Sight.cpp.bak:816 #, c-format msgid "RefractionCorrection = .267 * Pressure / (x*(Temperature + 273.15)) / 60.0\n" "RefractionCorrection = .267 * %.4f / (x*(%.4f + 273.15)) / 60.0\n" @@ -471,7 +541,8 @@ msgstr "Correção da Refracão =.267 * pressão / (x * (temperatura + 273.15)) "Correção da Refração =.267 * %.4f / (x * (%.4f + 273.15)) / 60.0\n" "Correção da Refração = %.4f\n" -#: src/Sight.cpp:606 src/Sight.cpp:808 +#: src\Sight.cpp:627 src\Sight.cpp:829 src\Sight.cpp.bak:628 +#: src\Sight.cpp.bak:830 #, c-format msgid "\n" "Sun selected, Limb Correction\n" @@ -480,7 +551,8 @@ msgstr "\n" "Selecionado Sol, Correção Limbo\n" "ra = %.4f, lc = 0.266564/ra = %.4f\n" -#: src/Sight.cpp:616 src/Sight.cpp:732 +#: src\Sight.cpp:637 src\Sight.cpp:753 src\Sight.cpp.bak:638 +#: src\Sight.cpp.bak:754 #, c-format msgid "\n" "Moon selected, Limb Correction\n" @@ -493,22 +565,26 @@ msgstr "\n" "lc = 180/Pi * asin (Pi/180 * SD) \n" "lc = %.4f\n" -#: src/Sight.cpp:626 src/Sight.cpp:741 src/Sight.cpp:816 +#: src\Sight.cpp:647 src\Sight.cpp:762 src\Sight.cpp:837 src\Sight.cpp.bak:648 +#: src\Sight.cpp.bak:763 src\Sight.cpp.bak:838 msgid "Upper Limb" msgstr "Limbo superior" -#: src/Sight.cpp:629 src/Sight.cpp:744 src/Sight.cpp:819 +#: src\Sight.cpp:650 src\Sight.cpp:765 src\Sight.cpp:840 src\Sight.cpp.bak:651 +#: src\Sight.cpp.bak:766 src\Sight.cpp.bak:841 msgid "Lower Limb" msgstr "Limbo inferior" -#: src/Sight.cpp:632 src/Sight.cpp:822 +#: src\Sight.cpp:653 src\Sight.cpp:843 src\Sight.cpp.bak:654 +#: src\Sight.cpp.bak:844 #, c-format msgid "\n" "LimbCorrection = %.4f\n" msgstr "\n" "LimbCorrection = %.4f\n" -#: src/Sight.cpp:636 src/Sight.cpp:826 +#: src\Sight.cpp:657 src\Sight.cpp:847 src\Sight.cpp.bak:658 +#: src\Sight.cpp.bak:848 #, c-format msgid "\n" "Corrected Altitude\n" @@ -521,7 +597,8 @@ msgstr "\n" "Altitude Corrigida = %.4f - %.4f - %.4f\n" "Altitude Corrigida = %.4f\n" -#: src/Sight.cpp:650 src/Sight.cpp:840 +#: src\Sight.cpp:671 src\Sight.cpp:861 src\Sight.cpp.bak:672 +#: src\Sight.cpp.bak:862 #, c-format msgid "\n" "Sun selected, parallax correction\n" @@ -530,7 +607,8 @@ msgstr "\n" "Selecionado Sol, correção paralaxe\n" "rad = %.4f, HP = 0.002442/rad = %.4f\n" -#: src/Sight.cpp:659 src/Sight.cpp:764 +#: src\Sight.cpp:680 src\Sight.cpp:785 src\Sight.cpp.bak:681 +#: src\Sight.cpp.bak:786 #, c-format msgid "\n" "Moon selected, parallax correction\n" @@ -539,7 +617,8 @@ msgstr "\n" "Lua seleccionada, correção de parallaxe\n" "HP = %.4f\n" -#: src/Sight.cpp:665 src/Sight.cpp:846 +#: src\Sight.cpp:686 src\Sight.cpp:867 src\Sight.cpp.bak:687 +#: src\Sight.cpp.bak:868 #, c-format msgid "ParallaxCorrection = -180/Pi * asin( sin(Pi/180 * HP ) * cos(Pi/180 * CorrectedAltitude))\n" "ParallaxCorrection = -180/Pi * asin( sin(Pi/180 * %.4f ) * cos(Pi/180 * %.4f))\n" @@ -548,7 +627,7 @@ msgstr "ParallaxCorrection = -180/Pi * asin (sin (Pi/180 * HP) * cos (Pi/180 * C "ParallaxCorrection = -180/Pi * asin (sin (Pi/180 * %.4f) * cos (Pi/180 * %.4f))\n" "ParallaxCorrection = %.4f\n" -#: src/Sight.cpp:672 +#: src\Sight.cpp:693 src\Sight.cpp.bak:694 #, c-format msgid "\n" "Observed Altitude (Ho)\n" @@ -561,12 +640,12 @@ msgstr "\n" "AltitudeObservada = %.4f - %.4f\n" "AltitudeObservada = %.4f\n" -#: src/Sight.cpp:706 +#: src\Sight.cpp:727 src\Sight.cpp.bak:728 #, c-format msgid "\n" "Apparent Moon Altitude (Ha)\n" "ApparentAltitudeMoon = MeasurementMoon - IndexCorrection - EyeHeightCorrection\n" -" ApparentAltitudeMoon = %.4f - %.4f - %.4f\n" +"ApparentAltitudeMoon = %.4f - %.4f - %.4f\n" "ApparentAltitudeMoon = %.4f\n" msgstr "\n" "Altitude aparente da Lua (Ha)\n" @@ -574,7 +653,7 @@ msgstr "\n" " ApparentAltitudeMoon = %.4f - %.4f - %.4f\n" "ApparentAltitudeMoon = %.4f\n" -#: src/Sight.cpp:717 +#: src\Sight.cpp:738 src\Sight.cpp.bak:739 #, c-format msgid "\n" "Refraction Correction\n" @@ -587,7 +666,7 @@ msgstr "\n" "x = tan(Pi/180*%.4f + 4.848e-2*(Pi/180) / (tan(Pi/180*%.4f) + .028))\n" "x = %.4f\n" -#: src/Sight.cpp:722 +#: src\Sight.cpp:743 src\Sight.cpp.bak:744 #, c-format msgid "RefractionCorrectionMoon = .267 * Pressure / (x*(Temperature + 273.15)) / 60.0\n" "RefractionCorrectionMoon = .267 * %.4f / (x*(%.4f + 273.15)) / 60.0\n" @@ -596,14 +675,15 @@ msgstr "RefractionCorrectionMoon = .267 * Pressure / (x*(Temperature + 273.15)) "RefractionCorrectionMoon = .267 * %.4f / (x*(%.4f + 273.15)) / 60.0\n" "RefractionCorrectionMoon = %.4f\n" -#: src/Sight.cpp:747 src/Sight.cpp:750 +#: src\Sight.cpp:768 src\Sight.cpp:771 src\Sight.cpp.bak:769 +#: src\Sight.cpp.bak:772 #, c-format msgid "\n" "LimbCorrectionMoon = %.4f\n" msgstr "\n" "LimbCorrectionMoon = %.4f\n" -#: src/Sight.cpp:753 +#: src\Sight.cpp:774 src\Sight.cpp.bak:775 #, c-format msgid "\n" "Corrected Altitude\n" @@ -616,29 +696,16 @@ msgstr "\n" "CorrectedAltitudeMoon = %.4f - %.4f - %.4f\n" "CorrectedAltitudeMoon = %.4f\n" -#: src/Sight.cpp:768 +#: src\Sight.cpp:789 src\Sight.cpp.bak:790 #, c-format msgid "ParallaxCorrectionMoon = -180/Pi * asin( sin(Pi/180 * HP ) * cos(Pi/180 * CorrectedAltitude))\n" -" ParallaxCorrectionMoon = -180/Pi * asin( sin(Pi/180 * %.4f ) * cos(Pi/180 * %.4f))\n" +"ParallaxCorrectionMoon = -180/Pi * asin( sin(Pi/180 * %.4f ) * cos(Pi/180 * %.4f))\n" "ParallaxCorrectionMoon = %.4f\n" msgstr "ParallaxCorrectionMoon = -180/Pi * asin( sin(Pi/180 * HP ) * cos(Pi/180 * CorrectedAltitude))\n" " ParallaxCorrectionMoon = -180/Pi * asin( sin(Pi/180 * %.4f ) * cos(Pi/180 * %.4f))\n" "ParallaxCorrectionMoon = %.4f\n" -#: src/Sight.cpp:778 -#, c-format -msgid "\n" -"Apparent Altitude (Ha)\n" -"ApparentAltitude = Measurement - IndexCorrection - EyeHeightCorrection\n" -" ApparentAltitude = %.4f - %.4f - %.4f\n" -"ApparentAltitude = %.4f\n" -msgstr "\n" -"Altitude Aparente (Ha)\n" -"ApparentAltitude = Measurement - IndexCorrection - EyeHeightCorrection\n" -" ApparentAltitude = %.4f - %.4f - %.4f\n" -"ApparentAltitude = %.4f\n" - -#: src/Sight.cpp:857 +#: src\Sight.cpp:878 src\Sight.cpp.bak:879 #, c-format msgid "CorrectionsMoon = %.4f\n" "CorrectionsBody = %.4f\n" @@ -647,7 +714,7 @@ msgstr "CorrectionsMoon = %.4f\n" "CorrectionsBody = %.4f\n" "Corrections = abs(CorrectionsMoon - CorrectionsBody) = %.4f\n" -#: src/Sight.cpp:863 +#: src\Sight.cpp:884 src\Sight.cpp.bak:885 #, c-format msgid "CorrectedMeasurement = Measurement - Corrections - IndexCorrection\n" "CorrectedMeasurement = %.4f - %.4f - %.4f\n" @@ -656,85 +723,65 @@ msgstr "CorrectedMeasurement = Measurement - Corrections - IndexCorrection\n" "CorrectedMeasurement = %.4f - %.4f - %.4f\n" "CorrectedMeasurement = %.4f\n" -#: src/Sight.cpp:888 +#: src\Sight.cpp:909 src\Sight.cpp.bak:910 msgid "\n" "Calculated angle between Moon and " msgstr "\n" "Angulo calculado entre a Lua e " -#: src/Sight.cpp:890 +#: src\Sight.cpp:911 src\Sight.cpp.bak:912 #, c-format msgid "\n" "Error from measurement: %.4f" msgstr "\n" "Erro de medida: %.4f" -#: src/Sight.cpp:894 +#: src\Sight.cpp:915 src\Sight.cpp.bak:916 msgid "\n" "Moon takes 28 days to orbit, one degree of error takes 6720 seconds" msgstr "\n" "A Lua demora 28 dias a completar a orbita, um erro de um grau representa 6720 segundos" -#: src/Sight.cpp:895 +#: src\Sight.cpp:916 src\Sight.cpp.bak:917 #, c-format msgid "\n" "Time correction %.4f seconds" msgstr "\n" "Correção de tempo %.4f segundos" -#: src/Sight.cpp:1099 +#: src\Sight.cpp:1120 src\Sight.cpp.bak:1121 msgid "Building bearing Sight Positions" msgstr "Construindo posições de marcação" -#: src/SightDialog.cpp:172 +#: src\SightDialog.cpp:184 msgid "Measurement certainty likely set to small, sight may not appear " msgstr "Provavelmente pequena a certeza de medição, posição pode não aparecer " -#: src/SightDialog.cpp:173 src/SightDialog.cpp:256 +#: src\SightDialog.cpp:185 src\SightDialog.cpp:279 msgid "Warning" msgstr "Aviso" -#: src/SightDialog.cpp:255 +#: src\SightDialog.cpp:278 msgid "Lunar shot will be invalid taking distance from moon to itself" -msgstr "Observação Lunar será inválida considerandoa distancia da Lua a ela própria" +msgstr "Observação Lunar será inválida considerando a distância da Lua a ela própria" -#: src/celestial_navigation_pi.cpp:90 -msgid "Failed to load file:\n" -msgstr "Falha a carregar ficheiro:\n" +#: src\celestial_navigation_pi.cpp:179 +msgid "open error" +msgstr "erro de abertura" -#: src/celestial_navigation_pi.cpp:91 -msgid "\n" -"Magnetic data will not be available for the celestial navigation plugin." -msgstr "\n" -"Dados Magnéticos não estarão disponíveis para a extensão de navegação astronómica." +#: src\celestial_navigation_pi.cpp:180 +msgid "corrupt record" +msgstr "registo corrompido" -#: src/celestial_navigation_pi.cpp:92 -msgid "OpenCPN Alert" -msgstr "Alerta OpenCPN" +#: src\celestial_navigation_pi.cpp:181 +msgid "too many models" +msgstr "demasiados modelos" -#: src/celestial_navigation_pi.cpp:157 -msgid "Celestial Navigation PlugIn for OpenCPN" -msgstr "Extensão de Navegação Astronomica para OpenCPN" - -#: src/celestial_navigation_pi.cpp:162 -msgid "Celestial Navigation PlugIn for OpenCPN.\n" -"Implements nautical almanac for sun, moon, planets,\n" -"and various navigational stars.\n" -"Compute position fix from celestial measurements." -msgstr "Extensão de Navegação Celeste para OpenCPN.\n" -"Implementa um almanaque nautico do Sol, Lua, planetas,\n" -"e várias estrelas para navegação.\n" -"Calcula a posição a partir de medições astronómicas." - -#: src/FixDialog.cpp:189 -msgid "Shifted sights are not used to compute a fix, determine fix visually instead.\n" -msgstr "Posições deslocados não são usadas para calcular uma solução, determinar solução visualmente em vez disso. \n" - -#: src/FixDialog.cpp:190 -msgid "Fix Position" -msgstr "Posicão calculada" +#: src\celestial_navigation_pi.cpp:184 +msgid "Magnetic data will not be available for the celestial navigation plugin." +msgstr "Dados Magnéticos não estarão disponíveis para a extensão de navegação astronómica." -#: src/FixDialog.cpp:335 src/FixDialog.cpp:336 src/FixDialog.cpp:337 -msgid " N/A " -msgstr " N/A " +#: src\celestial_navigation_pi.cpp:185 +msgid "OpenCPN Alert" +msgstr "Alerta OpenCPN" diff --git a/po/ro_RO.po b/po/ro_RO.po index da5e2ad..5ebffb8 100644 --- a/po/ro_RO.po +++ b/po/ro_RO.po @@ -2,403 +2,467 @@ msgid "" msgstr "" "Project-Id-Version: opencpn\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-02-28 14:10-0300\n" -"PO-Revision-Date: 2018-03-03 08:25-0500\n" -"Last-Translator: nohal \n" +"POT-Creation-Date: 2021-10-27 22:15+0200\n" +"PO-Revision-Date: 2023-10-04 18:33\n" +"Last-Translator: \n" "Language-Team: Romanian\n" "Language: ro_RO\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=3; plural=(n==1 ? 0 : (n==0 || (n%100>0 && n%100<20)) ? 1 : 2);\n" -"X-Generator: crowdin.com\n" "X-Crowdin-Project: opencpn\n" +"X-Crowdin-Project-ID: 49843\n" "X-Crowdin-Language: ro\n" "X-Crowdin-File: /plugins/celestial_navigation_pi/po/celestial_navigation_pi.pot\n" +"X-Crowdin-File-ID: 108\n" -#: src/CelestialNavigationDialog.cpp:123 src/CelestialNavigationUI.cpp:132 +#: src\CelestialNavigationDialog-2.3.5.1-no-android.cpp:149 +#: src\CelestialNavigationDialog-2.3.5.2-android.cpp:150 +#: src\CelestialNavigationDialog-partial-android.cpp:149 +#: src\CelestialNavigationDialog.cpp:150 src\CelestialNavigationUI.cpp:137 msgid "Type" msgstr "" -#: src/CelestialNavigationDialog.cpp:124 +#: src\CelestialNavigationDialog-2.3.5.1-no-android.cpp:150 +#: src\CelestialNavigationDialog-2.3.5.2-android.cpp:151 +#: src\CelestialNavigationDialog-partial-android.cpp:150 +#: src\CelestialNavigationDialog.cpp:151 msgid "Body" msgstr "" -#: src/CelestialNavigationDialog.cpp:125 -msgid "Time (UTC)" +#: src\CelestialNavigationDialog-2.3.5.1-no-android.cpp:151 +#: src\CelestialNavigationDialog-2.3.5.2-android.cpp:152 +#: src\CelestialNavigationDialog-partial-android.cpp:151 +#: src\CelestialNavigationDialog.cpp:152 src\CelestialNavigationUI.cpp:328 +msgid "Time (UT)" msgstr "" -#: src/CelestialNavigationDialog.cpp:126 src/CelestialNavigationUI.cpp:179 +#: src\CelestialNavigationDialog-2.3.5.1-no-android.cpp:152 +#: src\CelestialNavigationDialog-2.3.5.2-android.cpp:153 +#: src\CelestialNavigationDialog-partial-android.cpp:152 +#: src\CelestialNavigationDialog.cpp:153 src\CelestialNavigationUI.cpp:184 msgid "Measurement" msgstr "" -#: src/CelestialNavigationDialog.cpp:127 src/CelestialNavigationUI.cpp:376 +#: src\CelestialNavigationDialog-2.3.5.1-no-android.cpp:153 +#: src\CelestialNavigationDialog-2.3.5.2-android.cpp:154 +#: src\CelestialNavigationDialog-partial-android.cpp:153 +#: src\CelestialNavigationDialog.cpp:154 src\CelestialNavigationUI.cpp:381 msgid "Color" msgstr "" -#: src/CelestialNavigationDialog.cpp:193 -msgid "Failed to load file." +#: src\CelestialNavigationDialog-2.3.5.1-no-android.cpp:266 +#: src\CelestialNavigationDialog-2.3.5.2-android.cpp:272 +#: src\CelestialNavigationDialog-partial-android.cpp:266 +#: src\CelestialNavigationDialog.cpp:272 src\celestial_navigation_pi.cpp:177 +msgid "Failed to load file: " msgstr "" -#: src/CelestialNavigationDialog.cpp:198 +#: src\CelestialNavigationDialog-2.3.5.1-no-android.cpp:271 +#: src\CelestialNavigationDialog-2.3.5.2-android.cpp:277 +#: src\CelestialNavigationDialog-partial-android.cpp:271 +#: src\CelestialNavigationDialog.cpp:277 msgid "Invalid xml file" msgstr "" -#: src/CelestialNavigationDialog.cpp:250 +#: src\CelestialNavigationDialog-2.3.5.1-no-android.cpp:323 +#: src\CelestialNavigationDialog-2.3.5.2-android.cpp:329 +#: src\CelestialNavigationDialog-partial-android.cpp:323 +#: src\CelestialNavigationDialog.cpp:329 msgid "Unrecognized xml node" msgstr "" -#: src/CelestialNavigationDialog.cpp:260 -msgid "Weather Routing" +#: src\CelestialNavigationDialog-2.3.5.1-no-android.cpp:332 +#: src\CelestialNavigationDialog-2.3.5.1-no-android.cpp:392 +#: src\CelestialNavigationDialog-2.3.5.1-no-android.cpp:532 +#: src\CelestialNavigationDialog-2.3.5.2-android.cpp:338 +#: src\CelestialNavigationDialog-2.3.5.2-android.cpp:398 +#: src\CelestialNavigationDialog-2.3.5.2-android.cpp:538 +#: src\CelestialNavigationDialog-partial-android.cpp:332 +#: src\CelestialNavigationDialog-partial-android.cpp:392 +#: src\CelestialNavigationDialog-partial-android.cpp:532 +#: src\CelestialNavigationDialog.cpp:338 src\CelestialNavigationDialog.cpp:398 +#: src\CelestialNavigationDialog.cpp:538 src\Sight.cpp:1120 +#: src\Sight.cpp.bak:1121 src\celestial_navigation_pi.cpp:95 +#: src\celestial_navigation_pi.cpp:99 +msgid "Celestial Navigation" msgstr "" -#: src/CelestialNavigationDialog.cpp:320 +#: src\CelestialNavigationDialog-2.3.5.1-no-android.cpp:391 +#: src\CelestialNavigationDialog-2.3.5.2-android.cpp:397 +#: src\CelestialNavigationDialog-partial-android.cpp:391 +#: src\CelestialNavigationDialog.cpp:397 msgid "Failed to save xml file: " msgstr "" -#: src/CelestialNavigationDialog.cpp:321 src/CelestialNavigationDialog.cpp:466 -#: src/Sight.cpp:1099 src/celestial_navigation_pi.cpp:99 -#: src/celestial_navigation_pi.cpp:152 -msgid "Celestial Navigation" -msgstr "" - -#: src/CelestialNavigationDialog.cpp:351 +#: src\CelestialNavigationDialog-2.3.5.1-no-android.cpp:424 +#: src\CelestialNavigationDialog-2.3.5.2-android.cpp:430 +#: src\CelestialNavigationDialog-partial-android.cpp:424 +#: src\CelestialNavigationDialog.cpp:430 msgid "Time Correction" msgstr "" -#: src/CelestialNavigationDialog.cpp:409 +#: src\CelestialNavigationDialog-2.3.5.1-no-android.cpp:473 +#: src\CelestialNavigationDialog-2.3.5.2-android.cpp:479 +#: src\CelestialNavigationDialog-partial-android.cpp:473 +#: src\CelestialNavigationDialog.cpp:479 msgid "Sun" msgstr "" -#: src/CelestialNavigationDialog.cpp:465 +#: src\CelestialNavigationDialog-2.3.5.1-no-android.cpp:531 +#: src\CelestialNavigationDialog-2.3.5.2-android.cpp:537 +#: src\CelestialNavigationDialog-partial-android.cpp:531 +#: src\CelestialNavigationDialog.cpp:537 msgid "Are you sure you want to delete all sights?" msgstr "" -#: src/CelestialNavigationDialog.cpp:510 +#: src\CelestialNavigationDialog-2.3.5.1-no-android.cpp:582 +#: src\CelestialNavigationDialog-2.3.5.2-android.cpp:588 +#: src\CelestialNavigationDialog-partial-android.cpp:582 +#: src\CelestialNavigationDialog.cpp:588 msgid "Celestial_Navigation_Information.html" msgstr "" -#: src/CelestialNavigationDialog.cpp:516 -msgid "Show" +#: src\CelestialNavigationDialog-2.3.5.1-no-android.cpp:589 +#: src\CelestialNavigationDialog-2.3.5.2-android.cpp:595 +#: src\CelestialNavigationDialog-partial-android.cpp:589 +#: src\CelestialNavigationDialog.cpp:595 src\CelestialNavigationUI.cpp:55 +msgid "Hide" msgstr "" -#: src/CelestialNavigationDialog.cpp:516 src/CelestialNavigationUI.cpp:58 -msgid "Hide" +#: src\CelestialNavigationDialog-2.3.5.1-no-android.cpp:589 +#: src\CelestialNavigationDialog-2.3.5.2-android.cpp:595 +#: src\CelestialNavigationDialog-partial-android.cpp:589 +#: src\CelestialNavigationDialog.cpp:595 +msgid "Show" msgstr "" -#: src/CelestialNavigationUI.cpp:40 +#: src\CelestialNavigationUI.cpp:40 msgid "New" msgstr "" -#: src/CelestialNavigationUI.cpp:43 -msgid "Edit" +#: src\CelestialNavigationUI.cpp:43 src\CelestialNavigationUI.h:286 +msgid "Fix" msgstr "" -#: src/CelestialNavigationUI.cpp:46 -msgid "Delete" +#: src\CelestialNavigationUI.cpp:46 +msgid "Duplicate" msgstr "" -#: src/CelestialNavigationUI.cpp:49 -msgid "Delete All" +#: src\CelestialNavigationUI.cpp:49 +msgid "Clock Offset" msgstr "" -#: src/CelestialNavigationUI.cpp:52 src/CelestialNavigationUI.h:281 -msgid "Fix" +#: src\CelestialNavigationUI.cpp:52 +msgid "Edit" msgstr "" -#: src/CelestialNavigationUI.cpp:55 -msgid "Clock Offset" +#: src\CelestialNavigationUI.cpp:58 +msgid "Delete" msgstr "" -#: src/CelestialNavigationUI.cpp:61 +#: src\CelestialNavigationUI.cpp:61 msgid "Information" msgstr "" -#: src/CelestialNavigationUI.cpp:136 src/CelestialNavigationUI.cpp:667 -#: src/Sight.h:49 +#: src\CelestialNavigationUI.cpp:64 +msgid "Delete All" +msgstr "" + +#: src\CelestialNavigationUI.cpp:141 src\CelestialNavigationUI.cpp:674 +#: src\Sight.h:49 msgid "Altitude" msgstr "" -#: src/CelestialNavigationUI.cpp:136 src/CelestialNavigationUI.cpp:677 -#: src/Sight.h:49 +#: src\CelestialNavigationUI.cpp:141 src\CelestialNavigationUI.cpp:683 +#: src\Sight.h:49 msgid "Azimuth" msgstr "" -#: src/CelestialNavigationUI.cpp:136 src/Sight.h:49 +#: src\CelestialNavigationUI.cpp:141 src\Sight.h:49 msgid "Lunar" msgstr "" -#: src/CelestialNavigationUI.cpp:142 +#: src\CelestialNavigationUI.cpp:147 msgid "Magnetic Azimuth" msgstr "" -#: src/CelestialNavigationUI.cpp:145 +#: src\CelestialNavigationUI.cpp:150 msgid "Celestial Body" msgstr "" -#: src/CelestialNavigationUI.cpp:154 +#: src\CelestialNavigationUI.cpp:159 msgid "Find" msgstr "" -#: src/CelestialNavigationUI.cpp:157 +#: src\CelestialNavigationUI.cpp:162 msgid "Limb" msgstr "" -#: src/CelestialNavigationUI.cpp:161 -msgid "Lower" +#: src\CelestialNavigationUI.cpp:166 +msgid "Center" msgstr "" -#: src/CelestialNavigationUI.cpp:161 -msgid "Center" +#: src\CelestialNavigationUI.cpp:166 +msgid "Lower" msgstr "" -#: src/CelestialNavigationUI.cpp:161 +#: src\CelestialNavigationUI.cpp:166 msgid "Upper" msgstr "" -#: src/CelestialNavigationUI.cpp:186 src/CelestialNavigationUI.cpp:193 -#: src/CelestialNavigationUI.cpp:223 src/CelestialNavigationUI.cpp:230 +#: src\CelestialNavigationUI.cpp:191 src\CelestialNavigationUI.cpp:198 +#: src\CelestialNavigationUI.cpp:228 src\CelestialNavigationUI.cpp:235 msgid "0" msgstr "" -#: src/CelestialNavigationUI.cpp:189 src/CelestialNavigationUI.cpp:348 -#: src/CelestialNavigationUI.cpp:598 +#: src\CelestialNavigationUI.cpp:194 src\CelestialNavigationUI.cpp:353 +#: src\CelestialNavigationUI.cpp:605 msgid "Degrees" msgstr "" -#: src/CelestialNavigationUI.cpp:196 src/CelestialNavigationUI.cpp:278 -#: src/CelestialNavigationUI.cpp:439 +#: src\CelestialNavigationUI.cpp:201 src\CelestialNavigationUI.cpp:283 +#: src\CelestialNavigationUI.cpp:444 msgid "Minutes" msgstr "" -#: src/CelestialNavigationUI.cpp:200 +#: src\CelestialNavigationUI.cpp:205 msgid "10" msgstr "" -#: src/CelestialNavigationUI.cpp:203 +#: src\CelestialNavigationUI.cpp:208 msgid "Minutes Certainty" msgstr "" -#: src/CelestialNavigationUI.cpp:217 +#: src\CelestialNavigationUI.cpp:222 msgid "Lunar Altitude" msgstr "" -#: src/CelestialNavigationUI.cpp:226 +#: src\CelestialNavigationUI.cpp:231 msgid "Body Altitude" msgstr "" -#: src/CelestialNavigationUI.cpp:243 +#: src\CelestialNavigationUI.cpp:248 msgid "Sight" msgstr "" -#: src/CelestialNavigationUI.cpp:271 +#: src\CelestialNavigationUI.cpp:276 msgid "Hours" msgstr "" -#: src/CelestialNavigationUI.cpp:285 src/CelestialNavigationUI.cpp:303 -#: src/CelestialNavigationUI.cpp:860 +#: src\CelestialNavigationUI.cpp:290 src\CelestialNavigationUI.cpp:308 +#: src\CelestialNavigationUI.cpp:869 msgid "Seconds" msgstr "" -#: src/CelestialNavigationUI.cpp:293 +#: src\CelestialNavigationUI.cpp:298 msgid "Certainty" msgstr "" -#: src/CelestialNavigationUI.cpp:323 -msgid "Time" -msgstr "" - -#: src/CelestialNavigationUI.cpp:330 src/CelestialNavigationUI.cpp:580 +#: src\CelestialNavigationUI.cpp:335 src\CelestialNavigationUI.cpp:587 msgid "Distance" msgstr "" -#: src/CelestialNavigationUI.cpp:337 src/CelestialNavigationUI.cpp:587 +#: src\CelestialNavigationUI.cpp:342 src\CelestialNavigationUI.cpp:594 msgid "Nm" msgstr "" -#: src/CelestialNavigationUI.cpp:341 src/CelestialNavigationUI.cpp:591 +#: src\CelestialNavigationUI.cpp:346 src\CelestialNavigationUI.cpp:598 msgid "Bearing" msgstr "" -#: src/CelestialNavigationUI.cpp:352 src/CelestialNavigationUI.cpp:602 +#: src\CelestialNavigationUI.cpp:357 src\CelestialNavigationUI.cpp:609 msgid "Magnetic Bearing" msgstr "" -#: src/CelestialNavigationUI.cpp:359 +#: src\CelestialNavigationUI.cpp:364 msgid "DR Shift" msgstr "" -#: src/CelestialNavigationUI.cpp:366 +#: src\CelestialNavigationUI.cpp:371 msgid "Transparency" msgstr "" -#: src/CelestialNavigationUI.cpp:387 +#: src\CelestialNavigationUI.cpp:392 msgid "Config" msgstr "" -#: src/CelestialNavigationUI.cpp:399 +#: src\CelestialNavigationUI.cpp:404 msgid "Eye Height" msgstr "" -#: src/CelestialNavigationUI.cpp:403 +#: src\CelestialNavigationUI.cpp:408 msgid "2" msgstr "" -#: src/CelestialNavigationUI.cpp:406 +#: src\CelestialNavigationUI.cpp:411 msgid "Meters" msgstr "" -#: src/CelestialNavigationUI.cpp:410 +#: src\CelestialNavigationUI.cpp:415 msgid "Temperature" msgstr "" -#: src/CelestialNavigationUI.cpp:417 +#: src\CelestialNavigationUI.cpp:422 msgid "Celcius" msgstr "" -#: src/CelestialNavigationUI.cpp:421 +#: src\CelestialNavigationUI.cpp:426 msgid "Pressure" msgstr "" -#: src/CelestialNavigationUI.cpp:428 +#: src\CelestialNavigationUI.cpp:433 msgid "MilliBars" msgstr "" -#: src/CelestialNavigationUI.cpp:432 +#: src\CelestialNavigationUI.cpp:437 msgid "Index Error" msgstr "" -#: src/CelestialNavigationUI.cpp:446 +#: src\CelestialNavigationUI.cpp:451 msgid "Set As Defaults" msgstr "" -#: src/CelestialNavigationUI.cpp:453 +#: src\CelestialNavigationUI.cpp:458 msgid "Parameters" msgstr "" -#: src/CelestialNavigationUI.cpp:469 +#: src\CelestialNavigationUI.cpp:474 msgid "Calculations" msgstr "" -#: src/CelestialNavigationUI.cpp:571 +#: src\CelestialNavigationUI.cpp:578 msgid "Shift all visible Sights" msgstr "" -#: src/CelestialNavigationUI.cpp:649 src/CelestialNavigationUI.cpp:760 +#: src\CelestialNavigationUI.cpp:656 src\CelestialNavigationUI.cpp:769 msgid "Latitude" msgstr "" -#: src/CelestialNavigationUI.cpp:658 src/CelestialNavigationUI.cpp:768 +#: src\CelestialNavigationUI.cpp:665 src\CelestialNavigationUI.cpp:777 msgid "Longitude" msgstr "" -#: src/CelestialNavigationUI.cpp:669 src/CelestialNavigationUI.cpp:679 -msgid "MyLabel" +#: src\CelestialNavigationUI.cpp:691 +msgid "Boat Position" msgstr "" -#: src/CelestialNavigationUI.cpp:686 -msgid "Done" +#: src\CelestialNavigationUI.cpp:695 +msgid "Magnetic" msgstr "" -#: src/CelestialNavigationUI.cpp:689 -msgid "Magnetic" +#: src\CelestialNavigationUI.cpp:698 +msgid "Done" msgstr "" -#: src/CelestialNavigationUI.cpp:753 +#: src\CelestialNavigationUI.cpp:762 msgid "Fix From Visible Sights" msgstr "" -#: src/CelestialNavigationUI.cpp:764 +#: src\CelestialNavigationUI.cpp:773 msgid " N/A " msgstr "" -#: src/CelestialNavigationUI.cpp:772 +#: src\CelestialNavigationUI.cpp:781 msgid " N/A " msgstr "" -#: src/CelestialNavigationUI.cpp:776 +#: src\CelestialNavigationUI.cpp:785 msgid "Error" msgstr "" -#: src/CelestialNavigationUI.cpp:780 +#: src\CelestialNavigationUI.cpp:789 msgid " N/A " msgstr "" -#: src/CelestialNavigationUI.cpp:787 src/CelestialNavigationUI.cpp:794 +#: src\CelestialNavigationUI.cpp:796 src\CelestialNavigationUI.cpp:803 msgid "Initial" msgstr "" -#: src/CelestialNavigationUI.cpp:801 +#: src\CelestialNavigationUI.cpp:810 msgid "Alg" msgstr "" -#: src/CelestialNavigationUI.cpp:806 +#: src\CelestialNavigationUI.cpp:815 msgid "Plane" msgstr "" -#: src/CelestialNavigationUI.cpp:807 +#: src\CelestialNavigationUI.cpp:816 msgid "Sphere" msgstr "" -#: src/CelestialNavigationUI.cpp:808 +#: src\CelestialNavigationUI.cpp:817 msgid "Cone" msgstr "" -#: src/CelestialNavigationUI.cpp:809 +#: src\CelestialNavigationUI.cpp:818 msgid "Cone 2" msgstr "" -#: src/CelestialNavigationUI.cpp:813 +#: src\CelestialNavigationUI.cpp:822 msgid "Go" msgstr "" -#: src/CelestialNavigationUI.cpp:850 src/CelestialNavigationUI.h:303 +#: src\CelestialNavigationUI.cpp:859 src\CelestialNavigationUI.h:308 msgid "Clock Correction" msgstr "" -#: src/CelestialNavigationUI.h:78 +#: src\CelestialNavigationUI.h:82 msgid "Celestial Navigation Sights" msgstr "" -#: src/CelestialNavigationUI.h:169 +#: src\CelestialNavigationUI.h:173 msgid "Sight Properties" msgstr "" -#: src/CelestialNavigationUI.h:200 +#: src\CelestialNavigationUI.h:204 msgid "Dead Reckoning shift" msgstr "" -#: src/CelestialNavigationUI.h:227 +#: src\CelestialNavigationUI.h:232 msgid "Find Celestial Body" msgstr "" -#: src/Sight.cpp:160 +#: src\FixDialog.cpp:192 +msgid "Shifted sights are not used to compute a fix, determine fix visually instead.\n" +msgstr "" + +#: src\FixDialog.cpp:193 +msgid "Fix Position" +msgstr "" + +#: src\FixDialog.cpp:338 src\FixDialog.cpp:339 src\FixDialog.cpp:340 +msgid " N/A " +msgstr "" + +#: src\Sight.cpp:172 src\Sight.cpp.bak:173 msgid "Astrolab failed, data unavailable:\n" msgstr "" -#: src/Sight.cpp:161 +#: src\Sight.cpp:173 src\Sight.cpp.bak:174 msgid "\n" "Did you forget to install vsop87d.txt?\n" msgstr "" -#: src/Sight.cpp:162 +#: src\Sight.cpp:174 src\Sight.cpp.bak:175 msgid "The plugin will not work correctly" msgstr "" -#: src/Sight.cpp:163 +#: src\Sight.cpp:175 src\Sight.cpp.bak:176 msgid "Failure Alert" msgstr "" -#: src/Sight.cpp:474 +#: src\Sight.cpp:495 src\Sight.cpp.bak:496 #, c-format msgid "Applying clock correction of %d seconds\n\n" msgstr "" -#: src/Sight.cpp:536 +#: src\Sight.cpp:557 src\Sight.cpp.bak:558 msgid "Almanac Data For " msgstr "" -#: src/Sight.cpp:537 +#: src\Sight.cpp:558 src\Sight.cpp.bak:559 #, c-format msgid "\n" "Geographical Position (lat, lon) = %.4f %.4f\n" @@ -410,23 +474,27 @@ msgid "\n" "HP = %.1f'\n\n" msgstr "" -#: src/Sight.cpp:552 src/Sight.cpp:690 +#: src\Sight.cpp:573 src\Sight.cpp:711 src\Sight.cpp.bak:574 +#: src\Sight.cpp.bak:712 msgid "Formulas used to calculate sight\n\n" msgstr "" -#: src/Sight.cpp:556 src/Sight.cpp:694 +#: src\Sight.cpp:577 src\Sight.cpp:715 src\Sight.cpp.bak:578 +#: src\Sight.cpp.bak:716 #, c-format msgid "Index Error is %.4f degrees\n\n" msgstr "" -#: src/Sight.cpp:561 src/Sight.cpp:699 +#: src\Sight.cpp:582 src\Sight.cpp:720 src\Sight.cpp.bak:583 +#: src\Sight.cpp.bak:721 #, c-format msgid "Eye Height is %.4f meters\n" "Height Correction Degrees = 1.758*sqrt(%.4f) / 60.0\n" "Height Correction Degrees = %.4f\n" msgstr "" -#: src/Sight.cpp:568 +#: src\Sight.cpp:589 src\Sight.cpp:799 src\Sight.cpp.bak:590 +#: src\Sight.cpp.bak:800 #, c-format msgid "\n" "Apparent Altitude (Ha)\n" @@ -435,7 +503,8 @@ msgid "\n" "ApparentAltitude = %.4f\n" msgstr "" -#: src/Sight.cpp:586 src/Sight.cpp:789 +#: src\Sight.cpp:607 src\Sight.cpp:810 src\Sight.cpp.bak:608 +#: src\Sight.cpp.bak:811 #, c-format msgid "\n" "Refraction Correction\n" @@ -444,21 +513,24 @@ msgid "\n" "x = %.4f\n" msgstr "" -#: src/Sight.cpp:591 src/Sight.cpp:794 +#: src\Sight.cpp:612 src\Sight.cpp:815 src\Sight.cpp.bak:613 +#: src\Sight.cpp.bak:816 #, c-format msgid "RefractionCorrection = .267 * Pressure / (x*(Temperature + 273.15)) / 60.0\n" "RefractionCorrection = .267 * %.4f / (x*(%.4f + 273.15)) / 60.0\n" "RefractionCorrection = %.4f\n" msgstr "" -#: src/Sight.cpp:606 src/Sight.cpp:808 +#: src\Sight.cpp:627 src\Sight.cpp:829 src\Sight.cpp.bak:628 +#: src\Sight.cpp.bak:830 #, c-format msgid "\n" "Sun selected, Limb Correction\n" "ra = %.4f, lc = 0.266564/ra = %.4f\n" msgstr "" -#: src/Sight.cpp:616 src/Sight.cpp:732 +#: src\Sight.cpp:637 src\Sight.cpp:753 src\Sight.cpp.bak:638 +#: src\Sight.cpp.bak:754 #, c-format msgid "\n" "Moon selected, Limb Correction\n" @@ -467,21 +539,25 @@ msgid "\n" "lc = %.4f\n" msgstr "" -#: src/Sight.cpp:626 src/Sight.cpp:741 src/Sight.cpp:816 +#: src\Sight.cpp:647 src\Sight.cpp:762 src\Sight.cpp:837 src\Sight.cpp.bak:648 +#: src\Sight.cpp.bak:763 src\Sight.cpp.bak:838 msgid "Upper Limb" msgstr "" -#: src/Sight.cpp:629 src/Sight.cpp:744 src/Sight.cpp:819 +#: src\Sight.cpp:650 src\Sight.cpp:765 src\Sight.cpp:840 src\Sight.cpp.bak:651 +#: src\Sight.cpp.bak:766 src\Sight.cpp.bak:841 msgid "Lower Limb" msgstr "" -#: src/Sight.cpp:632 src/Sight.cpp:822 +#: src\Sight.cpp:653 src\Sight.cpp:843 src\Sight.cpp.bak:654 +#: src\Sight.cpp.bak:844 #, c-format msgid "\n" "LimbCorrection = %.4f\n" msgstr "" -#: src/Sight.cpp:636 src/Sight.cpp:826 +#: src\Sight.cpp:657 src\Sight.cpp:847 src\Sight.cpp.bak:658 +#: src\Sight.cpp.bak:848 #, c-format msgid "\n" "Corrected Altitude\n" @@ -490,28 +566,31 @@ msgid "\n" "CorrectedAltitude = %.4f\n" msgstr "" -#: src/Sight.cpp:650 src/Sight.cpp:840 +#: src\Sight.cpp:671 src\Sight.cpp:861 src\Sight.cpp.bak:672 +#: src\Sight.cpp.bak:862 #, c-format msgid "\n" "Sun selected, parallax correction\n" "rad = %.4f, HP = 0.002442/rad = %.4f\n" msgstr "" -#: src/Sight.cpp:659 src/Sight.cpp:764 +#: src\Sight.cpp:680 src\Sight.cpp:785 src\Sight.cpp.bak:681 +#: src\Sight.cpp.bak:786 #, c-format msgid "\n" "Moon selected, parallax correction\n" "HP = %.4f\n" msgstr "" -#: src/Sight.cpp:665 src/Sight.cpp:846 +#: src\Sight.cpp:686 src\Sight.cpp:867 src\Sight.cpp.bak:687 +#: src\Sight.cpp.bak:868 #, c-format msgid "ParallaxCorrection = -180/Pi * asin( sin(Pi/180 * HP ) * cos(Pi/180 * CorrectedAltitude))\n" "ParallaxCorrection = -180/Pi * asin( sin(Pi/180 * %.4f ) * cos(Pi/180 * %.4f))\n" "ParallaxCorrection = %.4f\n" msgstr "" -#: src/Sight.cpp:672 +#: src\Sight.cpp:693 src\Sight.cpp.bak:694 #, c-format msgid "\n" "Observed Altitude (Ho)\n" @@ -520,16 +599,16 @@ msgid "\n" "ObservedAltitude = %.4f\n" msgstr "" -#: src/Sight.cpp:706 +#: src\Sight.cpp:727 src\Sight.cpp.bak:728 #, c-format msgid "\n" "Apparent Moon Altitude (Ha)\n" "ApparentAltitudeMoon = MeasurementMoon - IndexCorrection - EyeHeightCorrection\n" -" ApparentAltitudeMoon = %.4f - %.4f - %.4f\n" +"ApparentAltitudeMoon = %.4f - %.4f - %.4f\n" "ApparentAltitudeMoon = %.4f\n" msgstr "" -#: src/Sight.cpp:717 +#: src\Sight.cpp:738 src\Sight.cpp.bak:739 #, c-format msgid "\n" "Refraction Correction\n" @@ -538,20 +617,21 @@ msgid "\n" "x = %.4f\n" msgstr "" -#: src/Sight.cpp:722 +#: src\Sight.cpp:743 src\Sight.cpp.bak:744 #, c-format msgid "RefractionCorrectionMoon = .267 * Pressure / (x*(Temperature + 273.15)) / 60.0\n" "RefractionCorrectionMoon = .267 * %.4f / (x*(%.4f + 273.15)) / 60.0\n" "RefractionCorrectionMoon = %.4f\n" msgstr "" -#: src/Sight.cpp:747 src/Sight.cpp:750 +#: src\Sight.cpp:768 src\Sight.cpp:771 src\Sight.cpp.bak:769 +#: src\Sight.cpp.bak:772 #, c-format msgid "\n" "LimbCorrectionMoon = %.4f\n" msgstr "" -#: src/Sight.cpp:753 +#: src\Sight.cpp:774 src\Sight.cpp.bak:775 #, c-format msgid "\n" "Corrected Altitude\n" @@ -560,107 +640,82 @@ msgid "\n" "CorrectedAltitudeMoon = %.4f\n" msgstr "" -#: src/Sight.cpp:768 +#: src\Sight.cpp:789 src\Sight.cpp.bak:790 #, c-format msgid "ParallaxCorrectionMoon = -180/Pi * asin( sin(Pi/180 * HP ) * cos(Pi/180 * CorrectedAltitude))\n" -" ParallaxCorrectionMoon = -180/Pi * asin( sin(Pi/180 * %.4f ) * cos(Pi/180 * %.4f))\n" +"ParallaxCorrectionMoon = -180/Pi * asin( sin(Pi/180 * %.4f ) * cos(Pi/180 * %.4f))\n" "ParallaxCorrectionMoon = %.4f\n" msgstr "" -#: src/Sight.cpp:778 -#, c-format -msgid "\n" -"Apparent Altitude (Ha)\n" -"ApparentAltitude = Measurement - IndexCorrection - EyeHeightCorrection\n" -" ApparentAltitude = %.4f - %.4f - %.4f\n" -"ApparentAltitude = %.4f\n" -msgstr "" - -#: src/Sight.cpp:857 +#: src\Sight.cpp:878 src\Sight.cpp.bak:879 #, c-format msgid "CorrectionsMoon = %.4f\n" "CorrectionsBody = %.4f\n" "Corrections = abs(CorrectionsMoon - CorrectionsBody) = %.4f\n" msgstr "" -#: src/Sight.cpp:863 +#: src\Sight.cpp:884 src\Sight.cpp.bak:885 #, c-format msgid "CorrectedMeasurement = Measurement - Corrections - IndexCorrection\n" "CorrectedMeasurement = %.4f - %.4f - %.4f\n" "CorrectedMeasurement = %.4f\n" msgstr "" -#: src/Sight.cpp:888 +#: src\Sight.cpp:909 src\Sight.cpp.bak:910 msgid "\n" "Calculated angle between Moon and " msgstr "" -#: src/Sight.cpp:890 +#: src\Sight.cpp:911 src\Sight.cpp.bak:912 #, c-format msgid "\n" "Error from measurement: %.4f" msgstr "" -#: src/Sight.cpp:894 +#: src\Sight.cpp:915 src\Sight.cpp.bak:916 msgid "\n" "Moon takes 28 days to orbit, one degree of error takes 6720 seconds" msgstr "" -#: src/Sight.cpp:895 +#: src\Sight.cpp:916 src\Sight.cpp.bak:917 #, c-format msgid "\n" "Time correction %.4f seconds" msgstr "" -#: src/Sight.cpp:1099 +#: src\Sight.cpp:1120 src\Sight.cpp.bak:1121 msgid "Building bearing Sight Positions" msgstr "" -#: src/SightDialog.cpp:172 +#: src\SightDialog.cpp:184 msgid "Measurement certainty likely set to small, sight may not appear " msgstr "" -#: src/SightDialog.cpp:173 src/SightDialog.cpp:256 +#: src\SightDialog.cpp:185 src\SightDialog.cpp:279 msgid "Warning" msgstr "" -#: src/SightDialog.cpp:255 +#: src\SightDialog.cpp:278 msgid "Lunar shot will be invalid taking distance from moon to itself" msgstr "" -#: src/celestial_navigation_pi.cpp:90 -msgid "Failed to load file:\n" -msgstr "" - -#: src/celestial_navigation_pi.cpp:91 -msgid "\n" -"Magnetic data will not be available for the celestial navigation plugin." -msgstr "" - -#: src/celestial_navigation_pi.cpp:92 -msgid "OpenCPN Alert" +#: src\celestial_navigation_pi.cpp:179 +msgid "open error" msgstr "" -#: src/celestial_navigation_pi.cpp:157 -msgid "Celestial Navigation PlugIn for OpenCPN" +#: src\celestial_navigation_pi.cpp:180 +msgid "corrupt record" msgstr "" -#: src/celestial_navigation_pi.cpp:162 -msgid "Celestial Navigation PlugIn for OpenCPN.\n" -"Implements nautical almanac for sun, moon, planets,\n" -"and various navigational stars.\n" -"Compute position fix from celestial measurements." +#: src\celestial_navigation_pi.cpp:181 +msgid "too many models" msgstr "" -#: src/FixDialog.cpp:189 -msgid "Shifted sights are not used to compute a fix, determine fix visually instead.\n" +#: src\celestial_navigation_pi.cpp:184 +msgid "Magnetic data will not be available for the celestial navigation plugin." msgstr "" -#: src/FixDialog.cpp:190 -msgid "Fix Position" -msgstr "" - -#: src/FixDialog.cpp:335 src/FixDialog.cpp:336 src/FixDialog.cpp:337 -msgid " N/A " +#: src\celestial_navigation_pi.cpp:185 +msgid "OpenCPN Alert" msgstr "" diff --git a/po/ru_RU.po b/po/ru_RU.po index 453d490..c9d2306 100644 --- a/po/ru_RU.po +++ b/po/ru_RU.po @@ -2,404 +2,468 @@ msgid "" msgstr "" "Project-Id-Version: opencpn\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-02-28 14:10-0300\n" -"PO-Revision-Date: 2018-03-03 08:25-0500\n" -"Last-Translator: nohal \n" +"POT-Creation-Date: 2021-10-27 22:15+0200\n" +"PO-Revision-Date: 2023-10-04 18:33\n" +"Last-Translator: \n" "Language-Team: Russian\n" "Language: ru_RU\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=4; plural=((n%10==1 && n%100!=11) ? 0 : ((n%10 >= 2 && n%10 <=4 && (n%100 < 12 || n%100 > 14)) ? 1 : ((n%10 == 0 || (n%10 >= 5 && n%10 <=9)) || (n%100 >= 11 && n%100 <= 14)) ? 2 : 3));\n" -"X-Generator: crowdin.com\n" "X-Crowdin-Project: opencpn\n" +"X-Crowdin-Project-ID: 49843\n" "X-Crowdin-Language: ru\n" "X-Crowdin-File: /plugins/celestial_navigation_pi/po/celestial_navigation_pi.pot\n" +"X-Crowdin-File-ID: 108\n" -#: src/CelestialNavigationDialog.cpp:123 src/CelestialNavigationUI.cpp:132 +#: src\CelestialNavigationDialog-2.3.5.1-no-android.cpp:149 +#: src\CelestialNavigationDialog-2.3.5.2-android.cpp:150 +#: src\CelestialNavigationDialog-partial-android.cpp:149 +#: src\CelestialNavigationDialog.cpp:150 src\CelestialNavigationUI.cpp:137 msgid "Type" msgstr "Тип" -#: src/CelestialNavigationDialog.cpp:124 +#: src\CelestialNavigationDialog-2.3.5.1-no-android.cpp:150 +#: src\CelestialNavigationDialog-2.3.5.2-android.cpp:151 +#: src\CelestialNavigationDialog-partial-android.cpp:150 +#: src\CelestialNavigationDialog.cpp:151 msgid "Body" msgstr "Небесное тело" -#: src/CelestialNavigationDialog.cpp:125 -msgid "Time (UTC)" -msgstr "Время (UTC)" +#: src\CelestialNavigationDialog-2.3.5.1-no-android.cpp:151 +#: src\CelestialNavigationDialog-2.3.5.2-android.cpp:152 +#: src\CelestialNavigationDialog-partial-android.cpp:151 +#: src\CelestialNavigationDialog.cpp:152 src\CelestialNavigationUI.cpp:328 +msgid "Time (UT)" +msgstr "" -#: src/CelestialNavigationDialog.cpp:126 src/CelestialNavigationUI.cpp:179 +#: src\CelestialNavigationDialog-2.3.5.1-no-android.cpp:152 +#: src\CelestialNavigationDialog-2.3.5.2-android.cpp:153 +#: src\CelestialNavigationDialog-partial-android.cpp:152 +#: src\CelestialNavigationDialog.cpp:153 src\CelestialNavigationUI.cpp:184 msgid "Measurement" msgstr "Измерения" -#: src/CelestialNavigationDialog.cpp:127 src/CelestialNavigationUI.cpp:376 +#: src\CelestialNavigationDialog-2.3.5.1-no-android.cpp:153 +#: src\CelestialNavigationDialog-2.3.5.2-android.cpp:154 +#: src\CelestialNavigationDialog-partial-android.cpp:153 +#: src\CelestialNavigationDialog.cpp:154 src\CelestialNavigationUI.cpp:381 msgid "Color" msgstr "Цвет" -#: src/CelestialNavigationDialog.cpp:193 -msgid "Failed to load file." -msgstr "Не удалось загрузить файл." +#: src\CelestialNavigationDialog-2.3.5.1-no-android.cpp:266 +#: src\CelestialNavigationDialog-2.3.5.2-android.cpp:272 +#: src\CelestialNavigationDialog-partial-android.cpp:266 +#: src\CelestialNavigationDialog.cpp:272 src\celestial_navigation_pi.cpp:177 +msgid "Failed to load file: " +msgstr "" -#: src/CelestialNavigationDialog.cpp:198 +#: src\CelestialNavigationDialog-2.3.5.1-no-android.cpp:271 +#: src\CelestialNavigationDialog-2.3.5.2-android.cpp:277 +#: src\CelestialNavigationDialog-partial-android.cpp:271 +#: src\CelestialNavigationDialog.cpp:277 msgid "Invalid xml file" msgstr "Недопустимый Xml-файл" -#: src/CelestialNavigationDialog.cpp:250 +#: src\CelestialNavigationDialog-2.3.5.1-no-android.cpp:323 +#: src\CelestialNavigationDialog-2.3.5.2-android.cpp:329 +#: src\CelestialNavigationDialog-partial-android.cpp:323 +#: src\CelestialNavigationDialog.cpp:329 msgid "Unrecognized xml node" msgstr "Нераспознанный Xml-узел" -#: src/CelestialNavigationDialog.cpp:260 -msgid "Weather Routing" -msgstr "Учет данных о погоде при планировании маршрута" +#: src\CelestialNavigationDialog-2.3.5.1-no-android.cpp:332 +#: src\CelestialNavigationDialog-2.3.5.1-no-android.cpp:392 +#: src\CelestialNavigationDialog-2.3.5.1-no-android.cpp:532 +#: src\CelestialNavigationDialog-2.3.5.2-android.cpp:338 +#: src\CelestialNavigationDialog-2.3.5.2-android.cpp:398 +#: src\CelestialNavigationDialog-2.3.5.2-android.cpp:538 +#: src\CelestialNavigationDialog-partial-android.cpp:332 +#: src\CelestialNavigationDialog-partial-android.cpp:392 +#: src\CelestialNavigationDialog-partial-android.cpp:532 +#: src\CelestialNavigationDialog.cpp:338 src\CelestialNavigationDialog.cpp:398 +#: src\CelestialNavigationDialog.cpp:538 src\Sight.cpp:1120 +#: src\Sight.cpp.bak:1121 src\celestial_navigation_pi.cpp:95 +#: src\celestial_navigation_pi.cpp:99 +msgid "Celestial Navigation" +msgstr "Мореходная астрономия" -#: src/CelestialNavigationDialog.cpp:320 +#: src\CelestialNavigationDialog-2.3.5.1-no-android.cpp:391 +#: src\CelestialNavigationDialog-2.3.5.2-android.cpp:397 +#: src\CelestialNavigationDialog-partial-android.cpp:391 +#: src\CelestialNavigationDialog.cpp:397 msgid "Failed to save xml file: " msgstr "Не удалось сохранить Xml-файл: " -#: src/CelestialNavigationDialog.cpp:321 src/CelestialNavigationDialog.cpp:466 -#: src/Sight.cpp:1099 src/celestial_navigation_pi.cpp:99 -#: src/celestial_navigation_pi.cpp:152 -msgid "Celestial Navigation" -msgstr "Мореходная астрономия" - -#: src/CelestialNavigationDialog.cpp:351 +#: src\CelestialNavigationDialog-2.3.5.1-no-android.cpp:424 +#: src\CelestialNavigationDialog-2.3.5.2-android.cpp:430 +#: src\CelestialNavigationDialog-partial-android.cpp:424 +#: src\CelestialNavigationDialog.cpp:430 msgid "Time Correction" msgstr "Коррекция времени" -#: src/CelestialNavigationDialog.cpp:409 +#: src\CelestialNavigationDialog-2.3.5.1-no-android.cpp:473 +#: src\CelestialNavigationDialog-2.3.5.2-android.cpp:479 +#: src\CelestialNavigationDialog-partial-android.cpp:473 +#: src\CelestialNavigationDialog.cpp:479 msgid "Sun" msgstr "Солнце" -#: src/CelestialNavigationDialog.cpp:465 +#: src\CelestialNavigationDialog-2.3.5.1-no-android.cpp:531 +#: src\CelestialNavigationDialog-2.3.5.2-android.cpp:537 +#: src\CelestialNavigationDialog-partial-android.cpp:531 +#: src\CelestialNavigationDialog.cpp:537 msgid "Are you sure you want to delete all sights?" msgstr "Вы уверены, что хотите удалить все наблюдения?" -#: src/CelestialNavigationDialog.cpp:510 +#: src\CelestialNavigationDialog-2.3.5.1-no-android.cpp:582 +#: src\CelestialNavigationDialog-2.3.5.2-android.cpp:588 +#: src\CelestialNavigationDialog-partial-android.cpp:582 +#: src\CelestialNavigationDialog.cpp:588 msgid "Celestial_Navigation_Information.html" msgstr "Celestial_Navigation_Information.html" -#: src/CelestialNavigationDialog.cpp:516 -msgid "Show" -msgstr "Показать" - -#: src/CelestialNavigationDialog.cpp:516 src/CelestialNavigationUI.cpp:58 +#: src\CelestialNavigationDialog-2.3.5.1-no-android.cpp:589 +#: src\CelestialNavigationDialog-2.3.5.2-android.cpp:595 +#: src\CelestialNavigationDialog-partial-android.cpp:589 +#: src\CelestialNavigationDialog.cpp:595 src\CelestialNavigationUI.cpp:55 msgid "Hide" msgstr "Скрыть" -#: src/CelestialNavigationUI.cpp:40 +#: src\CelestialNavigationDialog-2.3.5.1-no-android.cpp:589 +#: src\CelestialNavigationDialog-2.3.5.2-android.cpp:595 +#: src\CelestialNavigationDialog-partial-android.cpp:589 +#: src\CelestialNavigationDialog.cpp:595 +msgid "Show" +msgstr "Показать" + +#: src\CelestialNavigationUI.cpp:40 msgid "New" msgstr "Новый" -#: src/CelestialNavigationUI.cpp:43 -msgid "Edit" -msgstr "Правка" - -#: src/CelestialNavigationUI.cpp:46 -msgid "Delete" -msgstr "Удалить" - -#: src/CelestialNavigationUI.cpp:49 -msgid "Delete All" -msgstr "Удалить все" - -#: src/CelestialNavigationUI.cpp:52 src/CelestialNavigationUI.h:281 +#: src\CelestialNavigationUI.cpp:43 src\CelestialNavigationUI.h:286 msgid "Fix" msgstr "Исправить" -#: src/CelestialNavigationUI.cpp:55 +#: src\CelestialNavigationUI.cpp:46 +msgid "Duplicate" +msgstr "" + +#: src\CelestialNavigationUI.cpp:49 msgid "Clock Offset" msgstr "Уход эталона времени" -#: src/CelestialNavigationUI.cpp:61 +#: src\CelestialNavigationUI.cpp:52 +msgid "Edit" +msgstr "Правка" + +#: src\CelestialNavigationUI.cpp:58 +msgid "Delete" +msgstr "Удалить" + +#: src\CelestialNavigationUI.cpp:61 msgid "Information" msgstr "Информация" -#: src/CelestialNavigationUI.cpp:136 src/CelestialNavigationUI.cpp:667 -#: src/Sight.h:49 +#: src\CelestialNavigationUI.cpp:64 +msgid "Delete All" +msgstr "Удалить все" + +#: src\CelestialNavigationUI.cpp:141 src\CelestialNavigationUI.cpp:674 +#: src\Sight.h:49 msgid "Altitude" msgstr "Высота" -#: src/CelestialNavigationUI.cpp:136 src/CelestialNavigationUI.cpp:677 -#: src/Sight.h:49 +#: src\CelestialNavigationUI.cpp:141 src\CelestialNavigationUI.cpp:683 +#: src\Sight.h:49 msgid "Azimuth" msgstr "Азимут" -#: src/CelestialNavigationUI.cpp:136 src/Sight.h:49 +#: src\CelestialNavigationUI.cpp:141 src\Sight.h:49 msgid "Lunar" msgstr "Луны" -#: src/CelestialNavigationUI.cpp:142 +#: src\CelestialNavigationUI.cpp:147 msgid "Magnetic Azimuth" msgstr "Магнитный азимут" -#: src/CelestialNavigationUI.cpp:145 +#: src\CelestialNavigationUI.cpp:150 msgid "Celestial Body" msgstr "Небесное тело" -#: src/CelestialNavigationUI.cpp:154 +#: src\CelestialNavigationUI.cpp:159 msgid "Find" msgstr "Найти" -#: src/CelestialNavigationUI.cpp:157 +#: src\CelestialNavigationUI.cpp:162 msgid "Limb" msgstr "Диск" -#: src/CelestialNavigationUI.cpp:161 -msgid "Lower" -msgstr "Ниже" - -#: src/CelestialNavigationUI.cpp:161 +#: src\CelestialNavigationUI.cpp:166 msgid "Center" msgstr "По центру" -#: src/CelestialNavigationUI.cpp:161 +#: src\CelestialNavigationUI.cpp:166 +msgid "Lower" +msgstr "Ниже" + +#: src\CelestialNavigationUI.cpp:166 msgid "Upper" msgstr "Выше" -#: src/CelestialNavigationUI.cpp:186 src/CelestialNavigationUI.cpp:193 -#: src/CelestialNavigationUI.cpp:223 src/CelestialNavigationUI.cpp:230 +#: src\CelestialNavigationUI.cpp:191 src\CelestialNavigationUI.cpp:198 +#: src\CelestialNavigationUI.cpp:228 src\CelestialNavigationUI.cpp:235 msgid "0" msgstr "0" -#: src/CelestialNavigationUI.cpp:189 src/CelestialNavigationUI.cpp:348 -#: src/CelestialNavigationUI.cpp:598 +#: src\CelestialNavigationUI.cpp:194 src\CelestialNavigationUI.cpp:353 +#: src\CelestialNavigationUI.cpp:605 msgid "Degrees" msgstr "Градусов" -#: src/CelestialNavigationUI.cpp:196 src/CelestialNavigationUI.cpp:278 -#: src/CelestialNavigationUI.cpp:439 +#: src\CelestialNavigationUI.cpp:201 src\CelestialNavigationUI.cpp:283 +#: src\CelestialNavigationUI.cpp:444 msgid "Minutes" msgstr "Минут" -#: src/CelestialNavigationUI.cpp:200 +#: src\CelestialNavigationUI.cpp:205 msgid "10" msgstr "10" -#: src/CelestialNavigationUI.cpp:203 +#: src\CelestialNavigationUI.cpp:208 msgid "Minutes Certainty" msgstr "Достоверность минут" -#: src/CelestialNavigationUI.cpp:217 +#: src\CelestialNavigationUI.cpp:222 msgid "Lunar Altitude" msgstr "Высота Луны" -#: src/CelestialNavigationUI.cpp:226 +#: src\CelestialNavigationUI.cpp:231 msgid "Body Altitude" msgstr "Высота небесного тела" -#: src/CelestialNavigationUI.cpp:243 +#: src\CelestialNavigationUI.cpp:248 msgid "Sight" msgstr "Наблюдение" -#: src/CelestialNavigationUI.cpp:271 +#: src\CelestialNavigationUI.cpp:276 msgid "Hours" msgstr "Часов" -#: src/CelestialNavigationUI.cpp:285 src/CelestialNavigationUI.cpp:303 -#: src/CelestialNavigationUI.cpp:860 +#: src\CelestialNavigationUI.cpp:290 src\CelestialNavigationUI.cpp:308 +#: src\CelestialNavigationUI.cpp:869 msgid "Seconds" msgstr "Секунд" -#: src/CelestialNavigationUI.cpp:293 +#: src\CelestialNavigationUI.cpp:298 msgid "Certainty" msgstr "Достоверность" -#: src/CelestialNavigationUI.cpp:323 -msgid "Time" -msgstr "Время" - -#: src/CelestialNavigationUI.cpp:330 src/CelestialNavigationUI.cpp:580 +#: src\CelestialNavigationUI.cpp:335 src\CelestialNavigationUI.cpp:587 msgid "Distance" msgstr "Расстояние" -#: src/CelestialNavigationUI.cpp:337 src/CelestialNavigationUI.cpp:587 +#: src\CelestialNavigationUI.cpp:342 src\CelestialNavigationUI.cpp:594 msgid "Nm" msgstr "миль" -#: src/CelestialNavigationUI.cpp:341 src/CelestialNavigationUI.cpp:591 +#: src\CelestialNavigationUI.cpp:346 src\CelestialNavigationUI.cpp:598 msgid "Bearing" msgstr "Азимут" -#: src/CelestialNavigationUI.cpp:352 src/CelestialNavigationUI.cpp:602 +#: src\CelestialNavigationUI.cpp:357 src\CelestialNavigationUI.cpp:609 msgid "Magnetic Bearing" msgstr "Магнитный азимут" -#: src/CelestialNavigationUI.cpp:359 +#: src\CelestialNavigationUI.cpp:364 msgid "DR Shift" msgstr "Ошибка счисления" -#: src/CelestialNavigationUI.cpp:366 +#: src\CelestialNavigationUI.cpp:371 msgid "Transparency" msgstr "Прозрачность" -#: src/CelestialNavigationUI.cpp:387 +#: src\CelestialNavigationUI.cpp:392 msgid "Config" msgstr "Настройка" -#: src/CelestialNavigationUI.cpp:399 +#: src\CelestialNavigationUI.cpp:404 msgid "Eye Height" msgstr "Высота глаз" -#: src/CelestialNavigationUI.cpp:403 +#: src\CelestialNavigationUI.cpp:408 msgid "2" msgstr "2" -#: src/CelestialNavigationUI.cpp:406 +#: src\CelestialNavigationUI.cpp:411 msgid "Meters" msgstr "М" -#: src/CelestialNavigationUI.cpp:410 +#: src\CelestialNavigationUI.cpp:415 msgid "Temperature" msgstr "Температура" -#: src/CelestialNavigationUI.cpp:417 +#: src\CelestialNavigationUI.cpp:422 msgid "Celcius" msgstr "Цельсия" -#: src/CelestialNavigationUI.cpp:421 +#: src\CelestialNavigationUI.cpp:426 msgid "Pressure" msgstr "Давление" -#: src/CelestialNavigationUI.cpp:428 +#: src\CelestialNavigationUI.cpp:433 msgid "MilliBars" msgstr "мбар" -#: src/CelestialNavigationUI.cpp:432 +#: src\CelestialNavigationUI.cpp:437 msgid "Index Error" msgstr "Ошибка индекса" -#: src/CelestialNavigationUI.cpp:446 +#: src\CelestialNavigationUI.cpp:451 msgid "Set As Defaults" msgstr "Установить по умолчанию" -#: src/CelestialNavigationUI.cpp:453 +#: src\CelestialNavigationUI.cpp:458 msgid "Parameters" msgstr "Параметры" -#: src/CelestialNavigationUI.cpp:469 +#: src\CelestialNavigationUI.cpp:474 msgid "Calculations" msgstr "Расчеты" -#: src/CelestialNavigationUI.cpp:571 +#: src\CelestialNavigationUI.cpp:578 msgid "Shift all visible Sights" msgstr "Сместить все текущие наблюдения" -#: src/CelestialNavigationUI.cpp:649 src/CelestialNavigationUI.cpp:760 +#: src\CelestialNavigationUI.cpp:656 src\CelestialNavigationUI.cpp:769 msgid "Latitude" msgstr "Широта" -#: src/CelestialNavigationUI.cpp:658 src/CelestialNavigationUI.cpp:768 +#: src\CelestialNavigationUI.cpp:665 src\CelestialNavigationUI.cpp:777 msgid "Longitude" msgstr "Долгота" -#: src/CelestialNavigationUI.cpp:669 src/CelestialNavigationUI.cpp:679 -msgid "MyLabel" -msgstr "MyLabel" - -#: src/CelestialNavigationUI.cpp:686 -msgid "Done" -msgstr "Готово" +#: src\CelestialNavigationUI.cpp:691 +msgid "Boat Position" +msgstr "" -#: src/CelestialNavigationUI.cpp:689 +#: src\CelestialNavigationUI.cpp:695 msgid "Magnetic" msgstr "Магнитн." -#: src/CelestialNavigationUI.cpp:753 +#: src\CelestialNavigationUI.cpp:698 +msgid "Done" +msgstr "Готово" + +#: src\CelestialNavigationUI.cpp:762 msgid "Fix From Visible Sights" msgstr "Исправление по данным текущих наблюдений" -#: src/CelestialNavigationUI.cpp:764 +#: src\CelestialNavigationUI.cpp:773 msgid " N/A " msgstr " Н/Д " -#: src/CelestialNavigationUI.cpp:772 +#: src\CelestialNavigationUI.cpp:781 msgid " N/A " msgstr " Н/Д " -#: src/CelestialNavigationUI.cpp:776 +#: src\CelestialNavigationUI.cpp:785 msgid "Error" msgstr "Oшибка" -#: src/CelestialNavigationUI.cpp:780 +#: src\CelestialNavigationUI.cpp:789 msgid " N/A " msgstr " Н/Д " -#: src/CelestialNavigationUI.cpp:787 src/CelestialNavigationUI.cpp:794 +#: src\CelestialNavigationUI.cpp:796 src\CelestialNavigationUI.cpp:803 msgid "Initial" msgstr "Исходные" -#: src/CelestialNavigationUI.cpp:801 +#: src\CelestialNavigationUI.cpp:810 msgid "Alg" msgstr "Алг" -#: src/CelestialNavigationUI.cpp:806 +#: src\CelestialNavigationUI.cpp:815 msgid "Plane" msgstr "Плоскость" -#: src/CelestialNavigationUI.cpp:807 +#: src\CelestialNavigationUI.cpp:816 msgid "Sphere" msgstr "Сфера" -#: src/CelestialNavigationUI.cpp:808 +#: src\CelestialNavigationUI.cpp:817 msgid "Cone" msgstr "Конус" -#: src/CelestialNavigationUI.cpp:809 +#: src\CelestialNavigationUI.cpp:818 msgid "Cone 2" msgstr "Конус 2" -#: src/CelestialNavigationUI.cpp:813 +#: src\CelestialNavigationUI.cpp:822 msgid "Go" msgstr "Перейти" -#: src/CelestialNavigationUI.cpp:850 src/CelestialNavigationUI.h:303 +#: src\CelestialNavigationUI.cpp:859 src\CelestialNavigationUI.h:308 msgid "Clock Correction" msgstr "Коррекция часов" -#: src/CelestialNavigationUI.h:78 +#: src\CelestialNavigationUI.h:82 msgid "Celestial Navigation Sights" msgstr "Астрономические наблюдения" -#: src/CelestialNavigationUI.h:169 +#: src\CelestialNavigationUI.h:173 msgid "Sight Properties" msgstr "Параметры наблюдения" -#: src/CelestialNavigationUI.h:200 +#: src\CelestialNavigationUI.h:204 msgid "Dead Reckoning shift" msgstr "Смещение от счисления" -#: src/CelestialNavigationUI.h:227 +#: src\CelestialNavigationUI.h:232 msgid "Find Celestial Body" msgstr "Поиск небесного тела" -#: src/Sight.cpp:160 +#: src\FixDialog.cpp:192 +msgid "Shifted sights are not used to compute a fix, determine fix visually instead.\n" +msgstr "Данные дистанционных наблюдений не используются для исправления ошибки счисления, вместо этого определите ошибку визуально.\n" + +#: src\FixDialog.cpp:193 +msgid "Fix Position" +msgstr "Исправить место" + +#: src\FixDialog.cpp:338 src\FixDialog.cpp:339 src\FixDialog.cpp:340 +msgid " N/A " +msgstr " Н/Д " + +#: src\Sight.cpp:172 src\Sight.cpp.bak:173 msgid "Astrolab failed, data unavailable:\n" msgstr "Ошибка Astrolab, нет данных:\n" -#: src/Sight.cpp:161 +#: src\Sight.cpp:173 src\Sight.cpp.bak:174 msgid "\n" "Did you forget to install vsop87d.txt?\n" msgstr "\n" "Вы забыли установить vsop87d.txt?\n" -#: src/Sight.cpp:162 +#: src\Sight.cpp:174 src\Sight.cpp.bak:175 msgid "The plugin will not work correctly" msgstr "Плагин не будет работать правильно" -#: src/Sight.cpp:163 +#: src\Sight.cpp:175 src\Sight.cpp.bak:176 msgid "Failure Alert" msgstr "Оповещение о сбое" -#: src/Sight.cpp:474 +#: src\Sight.cpp:495 src\Sight.cpp.bak:496 #, c-format msgid "Applying clock correction of %d seconds\n\n" msgstr "Применение коррекции времени на %d секунд\n\n" -#: src/Sight.cpp:536 +#: src\Sight.cpp:557 src\Sight.cpp.bak:558 msgid "Almanac Data For " msgstr "Данные альманаха для " -#: src/Sight.cpp:537 +#: src\Sight.cpp:558 src\Sight.cpp.bak:559 #, c-format msgid "\n" "Geographical Position (lat, lon) = %.4f %.4f\n" @@ -418,16 +482,19 @@ msgstr "\n" "SD = %.1f'\n" "HP = %.1f'\n\n" -#: src/Sight.cpp:552 src/Sight.cpp:690 +#: src\Sight.cpp:573 src\Sight.cpp:711 src\Sight.cpp.bak:574 +#: src\Sight.cpp.bak:712 msgid "Formulas used to calculate sight\n\n" msgstr "Формулы, используемые для вычисления наблюдений\n\n" -#: src/Sight.cpp:556 src/Sight.cpp:694 +#: src\Sight.cpp:577 src\Sight.cpp:715 src\Sight.cpp.bak:578 +#: src\Sight.cpp.bak:716 #, c-format msgid "Index Error is %.4f degrees\n\n" msgstr "Ошибка индекса на %.4f градусов\n\n" -#: src/Sight.cpp:561 src/Sight.cpp:699 +#: src\Sight.cpp:582 src\Sight.cpp:720 src\Sight.cpp.bak:583 +#: src\Sight.cpp.bak:721 #, c-format msgid "Eye Height is %.4f meters\n" "Height Correction Degrees = 1.758*sqrt(%.4f) / 60.0\n" @@ -436,7 +503,8 @@ msgstr "Высота глаз-%.4f метров\n" "Поправка на высоту, градусов = 1.758*sqrt(%.4f) / 60.0\n" "Поправка на высоту, градусов = %.4f\n" -#: src/Sight.cpp:568 +#: src\Sight.cpp:589 src\Sight.cpp:799 src\Sight.cpp.bak:590 +#: src\Sight.cpp.bak:800 #, c-format msgid "\n" "Apparent Altitude (Ha)\n" @@ -449,7 +517,8 @@ msgstr "\n" " ИстиннаяВысота = %.4f - %.4f - %.4f\n" "ИстиннаяВысота = %.4f\n" -#: src/Sight.cpp:586 src/Sight.cpp:789 +#: src\Sight.cpp:607 src\Sight.cpp:810 src\Sight.cpp.bak:608 +#: src\Sight.cpp.bak:811 #, c-format msgid "\n" "Refraction Correction\n" @@ -462,7 +531,8 @@ msgstr "\n" "x = tan(Pi/180*%.4f + 4.848e-2*(Pi/180) / (tan(Pi/180*%.4f) + .028))\n" "x = %.4f\n" -#: src/Sight.cpp:591 src/Sight.cpp:794 +#: src\Sight.cpp:612 src\Sight.cpp:815 src\Sight.cpp.bak:613 +#: src\Sight.cpp.bak:816 #, c-format msgid "RefractionCorrection = .267 * Pressure / (x*(Temperature + 273.15)) / 60.0\n" "RefractionCorrection = .267 * %.4f / (x*(%.4f + 273.15)) / 60.0\n" @@ -471,7 +541,8 @@ msgstr "КоррекцияРефракции = .267 * Давление / (x*(Т "КоррекцияРефракции = .267 * %.4f / (x*(%.4f + 273.15)) / 60.0\n" "КоррекцияРефракции = %.4f\n" -#: src/Sight.cpp:606 src/Sight.cpp:808 +#: src\Sight.cpp:627 src\Sight.cpp:829 src\Sight.cpp.bak:628 +#: src\Sight.cpp.bak:830 #, c-format msgid "\n" "Sun selected, Limb Correction\n" @@ -480,7 +551,8 @@ msgstr "\n" "Выбрано Солнце, коррекция диска\n" "ra = %.4f, lc = 0.266564/ra = %.4f\n" -#: src/Sight.cpp:616 src/Sight.cpp:732 +#: src\Sight.cpp:637 src\Sight.cpp:753 src\Sight.cpp.bak:638 +#: src\Sight.cpp.bak:754 #, c-format msgid "\n" "Moon selected, Limb Correction\n" @@ -493,22 +565,26 @@ msgstr "\n" "lc = 180/Pi * asin(Pi/180*SD)\n" "lc = %.4f\n" -#: src/Sight.cpp:626 src/Sight.cpp:741 src/Sight.cpp:816 +#: src\Sight.cpp:647 src\Sight.cpp:762 src\Sight.cpp:837 src\Sight.cpp.bak:648 +#: src\Sight.cpp.bak:763 src\Sight.cpp.bak:838 msgid "Upper Limb" msgstr "Верхний край диска" -#: src/Sight.cpp:629 src/Sight.cpp:744 src/Sight.cpp:819 +#: src\Sight.cpp:650 src\Sight.cpp:765 src\Sight.cpp:840 src\Sight.cpp.bak:651 +#: src\Sight.cpp.bak:766 src\Sight.cpp.bak:841 msgid "Lower Limb" msgstr "Нижний край диска" -#: src/Sight.cpp:632 src/Sight.cpp:822 +#: src\Sight.cpp:653 src\Sight.cpp:843 src\Sight.cpp.bak:654 +#: src\Sight.cpp.bak:844 #, c-format msgid "\n" "LimbCorrection = %.4f\n" msgstr "\n" "ПоправкаНаРазмерДиска = %.4f\n" -#: src/Sight.cpp:636 src/Sight.cpp:826 +#: src\Sight.cpp:657 src\Sight.cpp:847 src\Sight.cpp.bak:658 +#: src\Sight.cpp.bak:848 #, c-format msgid "\n" "Corrected Altitude\n" @@ -521,7 +597,8 @@ msgstr "\n" "ИстиннаяВысота = %.4f - %.4f - %.4f\n" "ИстиннаяВысота = %.4f\n" -#: src/Sight.cpp:650 src/Sight.cpp:840 +#: src\Sight.cpp:671 src\Sight.cpp:861 src\Sight.cpp.bak:672 +#: src\Sight.cpp.bak:862 #, c-format msgid "\n" "Sun selected, parallax correction\n" @@ -530,7 +607,8 @@ msgstr "\n" "Выбрано Солнце, коррекция параллакса\n" "rad = %.4f, HP = 0.002442/rad = %.4f\n" -#: src/Sight.cpp:659 src/Sight.cpp:764 +#: src\Sight.cpp:680 src\Sight.cpp:785 src\Sight.cpp.bak:681 +#: src\Sight.cpp.bak:786 #, c-format msgid "\n" "Moon selected, parallax correction\n" @@ -539,7 +617,8 @@ msgstr "\n" "Выбрана Луна, коррекция параллакса\n" "HP = %.4f\n" -#: src/Sight.cpp:665 src/Sight.cpp:846 +#: src\Sight.cpp:686 src\Sight.cpp:867 src\Sight.cpp.bak:687 +#: src\Sight.cpp.bak:868 #, c-format msgid "ParallaxCorrection = -180/Pi * asin( sin(Pi/180 * HP ) * cos(Pi/180 * CorrectedAltitude))\n" "ParallaxCorrection = -180/Pi * asin( sin(Pi/180 * %.4f ) * cos(Pi/180 * %.4f))\n" @@ -548,7 +627,7 @@ msgstr "КоррекцияПараллакса = -180/Pi * asin( sin(Pi/180 * HP "КоррекцияПараллакса = -180/Pi * asin( sin(Pi/180 * %.4f ) * cos(Pi/180 * %.4f))\n" "КоррекцияПараллакса = %.4f\n" -#: src/Sight.cpp:672 +#: src\Sight.cpp:693 src\Sight.cpp.bak:694 #, c-format msgid "\n" "Observed Altitude (Ho)\n" @@ -561,20 +640,16 @@ msgstr "\n" "ВидимаяВысота = %.4f - %.4f\n" "ВидимаяВысота = %.4f\n" -#: src/Sight.cpp:706 +#: src\Sight.cpp:727 src\Sight.cpp.bak:728 #, c-format msgid "\n" "Apparent Moon Altitude (Ha)\n" "ApparentAltitudeMoon = MeasurementMoon - IndexCorrection - EyeHeightCorrection\n" -" ApparentAltitudeMoon = %.4f - %.4f - %.4f\n" +"ApparentAltitudeMoon = %.4f - %.4f - %.4f\n" "ApparentAltitudeMoon = %.4f\n" -msgstr "\n" -"Истинная Высота Луны (Ha) \n" -"ИстиннаяВысотаЛуны = ИзмерениеЛуны - ПоправкаСекстанта - ИсправлениеВысотыГлаз\n" -" ИстиннаяВысотаЛуны = %.4f - %.4f - %.4f\n" -"ИстиннаяВысотаЛуны = %.4f\n" +msgstr "" -#: src/Sight.cpp:717 +#: src\Sight.cpp:738 src\Sight.cpp.bak:739 #, c-format msgid "\n" "Refraction Correction\n" @@ -587,7 +662,7 @@ msgstr "\n" "x = tan(Pi/180*%.4f + 4.848e-2*(Pi/180) / (tan(Pi/180*%.4f) + .028))\n" "x = %.4f\n" -#: src/Sight.cpp:722 +#: src\Sight.cpp:743 src\Sight.cpp.bak:744 #, c-format msgid "RefractionCorrectionMoon = .267 * Pressure / (x*(Temperature + 273.15)) / 60.0\n" "RefractionCorrectionMoon = .267 * %.4f / (x*(%.4f + 273.15)) / 60.0\n" @@ -596,14 +671,15 @@ msgstr "КоррекцияРефракцииЛуны = .267 * Давление / "КоррекцияРефракцииЛуны = .267 * %.4f / (x*(%.4f + 273.15)) / 60.0\n" "КоррекцияРефракцииЛуны = %.4f\n" -#: src/Sight.cpp:747 src/Sight.cpp:750 +#: src\Sight.cpp:768 src\Sight.cpp:771 src\Sight.cpp.bak:769 +#: src\Sight.cpp.bak:772 #, c-format msgid "\n" "LimbCorrectionMoon = %.4f\n" msgstr "\n" "ПоправкаНаРазмерДискаЛуны = %.4f\n" -#: src/Sight.cpp:753 +#: src\Sight.cpp:774 src\Sight.cpp.bak:775 #, c-format msgid "\n" "Corrected Altitude\n" @@ -616,29 +692,14 @@ msgstr "\n" "ИсправленнаяВысотаЛуны = %.4f - %.4f - %.4f\n" "ИсправленнаяВысотаЛуны = %.4f\n" -#: src/Sight.cpp:768 +#: src\Sight.cpp:789 src\Sight.cpp.bak:790 #, c-format msgid "ParallaxCorrectionMoon = -180/Pi * asin( sin(Pi/180 * HP ) * cos(Pi/180 * CorrectedAltitude))\n" -" ParallaxCorrectionMoon = -180/Pi * asin( sin(Pi/180 * %.4f ) * cos(Pi/180 * %.4f))\n" +"ParallaxCorrectionMoon = -180/Pi * asin( sin(Pi/180 * %.4f ) * cos(Pi/180 * %.4f))\n" "ParallaxCorrectionMoon = %.4f\n" -msgstr "КоррекцияПараллаксаЛуны = -180/Pi * asin( sin(Pi/180 * HP ) * cos(Pi/180 * ИсправленнаяВысота))\n" -" КоррекцияПараллаксаЛуны = -180/Pi * asin( sin(Pi/180 * %.4f ) * cos(Pi/180 * %.4f))\n" -"КоррекцияПараллаксаЛуны = %.4f\n" - -#: src/Sight.cpp:778 -#, c-format -msgid "\n" -"Apparent Altitude (Ha)\n" -"ApparentAltitude = Measurement - IndexCorrection - EyeHeightCorrection\n" -" ApparentAltitude = %.4f - %.4f - %.4f\n" -"ApparentAltitude = %.4f\n" -msgstr "\n" -"ИстиннаяВысота (Ha) \n" -"ИстиннаяВысота = Измерение - ПоправкаСекстанта - ИсправлениеВысотыГлаз\n" -" ИстиннаяВысота = %.4f - %.4f - %.4f\n" -"ИстиннаяВысота = %.4f\n" +msgstr "" -#: src/Sight.cpp:857 +#: src\Sight.cpp:878 src\Sight.cpp.bak:879 #, c-format msgid "CorrectionsMoon = %.4f\n" "CorrectionsBody = %.4f\n" @@ -647,7 +708,7 @@ msgstr "ИсправленияЛунные = %.4f\n" "ИсправленияНебесногоТела = %.4f\n" "Исправления = abs(ИсправленияЛунные - ИсправленияНебесногоТела) = %.4f\n" -#: src/Sight.cpp:863 +#: src\Sight.cpp:884 src\Sight.cpp.bak:885 #, c-format msgid "CorrectedMeasurement = Measurement - Corrections - IndexCorrection\n" "CorrectedMeasurement = %.4f - %.4f - %.4f\n" @@ -656,85 +717,65 @@ msgstr "ИсправленноеИзмерение = Измерение - Исп "ИсправленноеИзмерение = %.4f - %.4f - %.4f\n" "ИсправленноеИзмерение = %.4f\n" -#: src/Sight.cpp:888 +#: src\Sight.cpp:909 src\Sight.cpp.bak:910 msgid "\n" "Calculated angle between Moon and " msgstr "\n" "Рассчитанный угол между Луной и " -#: src/Sight.cpp:890 +#: src\Sight.cpp:911 src\Sight.cpp.bak:912 #, c-format msgid "\n" "Error from measurement: %.4f" msgstr "\n" "Ошибка измерения: %.4f" -#: src/Sight.cpp:894 +#: src\Sight.cpp:915 src\Sight.cpp.bak:916 msgid "\n" "Moon takes 28 days to orbit, one degree of error takes 6720 seconds" msgstr "\n" "Оборот Луны 28 дней, один градус ошибки накапливается за - 6720 секунд" -#: src/Sight.cpp:895 +#: src\Sight.cpp:916 src\Sight.cpp.bak:917 #, c-format msgid "\n" "Time correction %.4f seconds" msgstr "\n" "Коррекция времени %.4f секунд" -#: src/Sight.cpp:1099 +#: src\Sight.cpp:1120 src\Sight.cpp.bak:1121 msgid "Building bearing Sight Positions" msgstr "Строим позиции азимутов наблюдения" -#: src/SightDialog.cpp:172 +#: src\SightDialog.cpp:184 msgid "Measurement certainty likely set to small, sight may not appear " msgstr "Точность определения места скорее всего установлена малой, азимуты наблюдения могут не отображаться " -#: src/SightDialog.cpp:173 src/SightDialog.cpp:256 +#: src\SightDialog.cpp:185 src\SightDialog.cpp:279 msgid "Warning" msgstr "Внимание" -#: src/SightDialog.cpp:255 +#: src\SightDialog.cpp:278 msgid "Lunar shot will be invalid taking distance from moon to itself" msgstr "Измерение дистанции от Луны до самой себя неверно" -#: src/celestial_navigation_pi.cpp:90 -msgid "Failed to load file:\n" -msgstr "Не удалось загрузить файл:\n" - -#: src/celestial_navigation_pi.cpp:91 -msgid "\n" -"Magnetic data will not be available for the celestial navigation plugin." -msgstr "\n" -"Магнитные данные не будут доступны для плагина астронавигации." +#: src\celestial_navigation_pi.cpp:179 +msgid "open error" +msgstr "" -#: src/celestial_navigation_pi.cpp:92 -msgid "OpenCPN Alert" -msgstr "OpenCPN — Предупреждение" +#: src\celestial_navigation_pi.cpp:180 +msgid "corrupt record" +msgstr "" -#: src/celestial_navigation_pi.cpp:157 -msgid "Celestial Navigation PlugIn for OpenCPN" -msgstr "Плагин астронавигации для OpenCPN" - -#: src/celestial_navigation_pi.cpp:162 -msgid "Celestial Navigation PlugIn for OpenCPN.\n" -"Implements nautical almanac for sun, moon, planets,\n" -"and various navigational stars.\n" -"Compute position fix from celestial measurements." -msgstr "Плагин астронавигации для OpenCPN.\n" -"Включает альманахи Солнца, Луны, планет \n" -"и навигационных звёзд. \n" -"Расчет определения места по астрометрии." - -#: src/FixDialog.cpp:189 -msgid "Shifted sights are not used to compute a fix, determine fix visually instead.\n" -msgstr "Данные дистанционных наблюдений не используются для исправления ошибки счисления, вместо этого определите ошибку визуально.\n" +#: src\celestial_navigation_pi.cpp:181 +msgid "too many models" +msgstr "" -#: src/FixDialog.cpp:190 -msgid "Fix Position" -msgstr "Исправить место" +#: src\celestial_navigation_pi.cpp:184 +msgid "Magnetic data will not be available for the celestial navigation plugin." +msgstr "" -#: src/FixDialog.cpp:335 src/FixDialog.cpp:336 src/FixDialog.cpp:337 -msgid " N/A " -msgstr " Н/Д " +#: src\celestial_navigation_pi.cpp:185 +msgid "OpenCPN Alert" +msgstr "OpenCPN — Предупреждение" diff --git a/po/sv_SE.po b/po/sv_SE.po index 7a1f783..32caef1 100644 --- a/po/sv_SE.po +++ b/po/sv_SE.po @@ -2,403 +2,468 @@ msgid "" msgstr "" "Project-Id-Version: opencpn\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-02-28 14:10-0300\n" -"PO-Revision-Date: 2018-03-03 08:25-0500\n" -"Last-Translator: nohal \n" +"POT-Creation-Date: 2021-10-27 22:15+0200\n" +"PO-Revision-Date: 2023-10-04 18:33\n" +"Last-Translator: \n" "Language-Team: Swedish\n" "Language: sv_SE\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -"X-Generator: crowdin.com\n" "X-Crowdin-Project: opencpn\n" +"X-Crowdin-Project-ID: 49843\n" "X-Crowdin-Language: sv-SE\n" "X-Crowdin-File: /plugins/celestial_navigation_pi/po/celestial_navigation_pi.pot\n" +"X-Crowdin-File-ID: 108\n" -#: src/CelestialNavigationDialog.cpp:123 src/CelestialNavigationUI.cpp:132 +#: src\CelestialNavigationDialog-2.3.5.1-no-android.cpp:149 +#: src\CelestialNavigationDialog-2.3.5.2-android.cpp:150 +#: src\CelestialNavigationDialog-partial-android.cpp:149 +#: src\CelestialNavigationDialog.cpp:150 src\CelestialNavigationUI.cpp:137 msgid "Type" msgstr "Typ" -#: src/CelestialNavigationDialog.cpp:124 +#: src\CelestialNavigationDialog-2.3.5.1-no-android.cpp:150 +#: src\CelestialNavigationDialog-2.3.5.2-android.cpp:151 +#: src\CelestialNavigationDialog-partial-android.cpp:150 +#: src\CelestialNavigationDialog.cpp:151 msgid "Body" -msgstr "" +msgstr "Himlakropp" -#: src/CelestialNavigationDialog.cpp:125 -msgid "Time (UTC)" +#: src\CelestialNavigationDialog-2.3.5.1-no-android.cpp:151 +#: src\CelestialNavigationDialog-2.3.5.2-android.cpp:152 +#: src\CelestialNavigationDialog-partial-android.cpp:151 +#: src\CelestialNavigationDialog.cpp:152 src\CelestialNavigationUI.cpp:328 +msgid "Time (UT)" msgstr "Tid (UTC)" -#: src/CelestialNavigationDialog.cpp:126 src/CelestialNavigationUI.cpp:179 +#: src\CelestialNavigationDialog-2.3.5.1-no-android.cpp:152 +#: src\CelestialNavigationDialog-2.3.5.2-android.cpp:153 +#: src\CelestialNavigationDialog-partial-android.cpp:152 +#: src\CelestialNavigationDialog.cpp:153 src\CelestialNavigationUI.cpp:184 msgid "Measurement" msgstr "Mätning" -#: src/CelestialNavigationDialog.cpp:127 src/CelestialNavigationUI.cpp:376 +#: src\CelestialNavigationDialog-2.3.5.1-no-android.cpp:153 +#: src\CelestialNavigationDialog-2.3.5.2-android.cpp:154 +#: src\CelestialNavigationDialog-partial-android.cpp:153 +#: src\CelestialNavigationDialog.cpp:154 src\CelestialNavigationUI.cpp:381 msgid "Color" msgstr "Färg" -#: src/CelestialNavigationDialog.cpp:193 -msgid "Failed to load file." -msgstr "Misslyckades ladda fil." - -#: src/CelestialNavigationDialog.cpp:198 +#: src\CelestialNavigationDialog-2.3.5.1-no-android.cpp:266 +#: src\CelestialNavigationDialog-2.3.5.2-android.cpp:272 +#: src\CelestialNavigationDialog-partial-android.cpp:266 +#: src\CelestialNavigationDialog.cpp:272 src\celestial_navigation_pi.cpp:177 +msgid "Failed to load file: " +msgstr "Det gick inte att ladda filen: " + +#: src\CelestialNavigationDialog-2.3.5.1-no-android.cpp:271 +#: src\CelestialNavigationDialog-2.3.5.2-android.cpp:277 +#: src\CelestialNavigationDialog-partial-android.cpp:271 +#: src\CelestialNavigationDialog.cpp:277 msgid "Invalid xml file" msgstr "Ogiltig xml fil" -#: src/CelestialNavigationDialog.cpp:250 +#: src\CelestialNavigationDialog-2.3.5.1-no-android.cpp:323 +#: src\CelestialNavigationDialog-2.3.5.2-android.cpp:329 +#: src\CelestialNavigationDialog-partial-android.cpp:323 +#: src\CelestialNavigationDialog.cpp:329 msgid "Unrecognized xml node" msgstr "Okänd Xml-nod" -#: src/CelestialNavigationDialog.cpp:260 -msgid "Weather Routing" -msgstr "" +#: src\CelestialNavigationDialog-2.3.5.1-no-android.cpp:332 +#: src\CelestialNavigationDialog-2.3.5.1-no-android.cpp:392 +#: src\CelestialNavigationDialog-2.3.5.1-no-android.cpp:532 +#: src\CelestialNavigationDialog-2.3.5.2-android.cpp:338 +#: src\CelestialNavigationDialog-2.3.5.2-android.cpp:398 +#: src\CelestialNavigationDialog-2.3.5.2-android.cpp:538 +#: src\CelestialNavigationDialog-partial-android.cpp:332 +#: src\CelestialNavigationDialog-partial-android.cpp:392 +#: src\CelestialNavigationDialog-partial-android.cpp:532 +#: src\CelestialNavigationDialog.cpp:338 src\CelestialNavigationDialog.cpp:398 +#: src\CelestialNavigationDialog.cpp:538 src\Sight.cpp:1120 +#: src\Sight.cpp.bak:1121 src\celestial_navigation_pi.cpp:95 +#: src\celestial_navigation_pi.cpp:99 +msgid "Celestial Navigation" +msgstr "Astronomisk navigering" -#: src/CelestialNavigationDialog.cpp:320 +#: src\CelestialNavigationDialog-2.3.5.1-no-android.cpp:391 +#: src\CelestialNavigationDialog-2.3.5.2-android.cpp:397 +#: src\CelestialNavigationDialog-partial-android.cpp:391 +#: src\CelestialNavigationDialog.cpp:397 msgid "Failed to save xml file: " msgstr "Det gick inte att spara XML-filen: " -#: src/CelestialNavigationDialog.cpp:321 src/CelestialNavigationDialog.cpp:466 -#: src/Sight.cpp:1099 src/celestial_navigation_pi.cpp:99 -#: src/celestial_navigation_pi.cpp:152 -msgid "Celestial Navigation" -msgstr "Astronomisk navigering" - -#: src/CelestialNavigationDialog.cpp:351 +#: src\CelestialNavigationDialog-2.3.5.1-no-android.cpp:424 +#: src\CelestialNavigationDialog-2.3.5.2-android.cpp:430 +#: src\CelestialNavigationDialog-partial-android.cpp:424 +#: src\CelestialNavigationDialog.cpp:430 msgid "Time Correction" msgstr "Tidskorrigering" -#: src/CelestialNavigationDialog.cpp:409 +#: src\CelestialNavigationDialog-2.3.5.1-no-android.cpp:473 +#: src\CelestialNavigationDialog-2.3.5.2-android.cpp:479 +#: src\CelestialNavigationDialog-partial-android.cpp:473 +#: src\CelestialNavigationDialog.cpp:479 msgid "Sun" msgstr "Solen" -#: src/CelestialNavigationDialog.cpp:465 +#: src\CelestialNavigationDialog-2.3.5.1-no-android.cpp:531 +#: src\CelestialNavigationDialog-2.3.5.2-android.cpp:537 +#: src\CelestialNavigationDialog-partial-android.cpp:531 +#: src\CelestialNavigationDialog.cpp:537 msgid "Are you sure you want to delete all sights?" msgstr "Är du säker på att du vill ta bort alla sevärdheter?" -#: src/CelestialNavigationDialog.cpp:510 +#: src\CelestialNavigationDialog-2.3.5.1-no-android.cpp:582 +#: src\CelestialNavigationDialog-2.3.5.2-android.cpp:588 +#: src\CelestialNavigationDialog-partial-android.cpp:582 +#: src\CelestialNavigationDialog.cpp:588 msgid "Celestial_Navigation_Information.html" -msgstr "" - -#: src/CelestialNavigationDialog.cpp:516 -msgid "Show" -msgstr "Visa" +msgstr "Celestial_Navigation_Information.html" -#: src/CelestialNavigationDialog.cpp:516 src/CelestialNavigationUI.cpp:58 +#: src\CelestialNavigationDialog-2.3.5.1-no-android.cpp:589 +#: src\CelestialNavigationDialog-2.3.5.2-android.cpp:595 +#: src\CelestialNavigationDialog-partial-android.cpp:589 +#: src\CelestialNavigationDialog.cpp:595 src\CelestialNavigationUI.cpp:55 msgid "Hide" msgstr "Dölj" -#: src/CelestialNavigationUI.cpp:40 +#: src\CelestialNavigationDialog-2.3.5.1-no-android.cpp:589 +#: src\CelestialNavigationDialog-2.3.5.2-android.cpp:595 +#: src\CelestialNavigationDialog-partial-android.cpp:589 +#: src\CelestialNavigationDialog.cpp:595 +msgid "Show" +msgstr "Visa" + +#: src\CelestialNavigationUI.cpp:40 msgid "New" msgstr "Ny" -#: src/CelestialNavigationUI.cpp:43 +#: src\CelestialNavigationUI.cpp:43 src\CelestialNavigationUI.h:286 +msgid "Fix" +msgstr "Position" + +#: src\CelestialNavigationUI.cpp:46 +msgid "Duplicate" +msgstr "Kopiera" + +#: src\CelestialNavigationUI.cpp:49 +msgid "Clock Offset" +msgstr "Klockjustering" + +#: src\CelestialNavigationUI.cpp:52 msgid "Edit" msgstr "Redigera" -#: src/CelestialNavigationUI.cpp:46 +#: src\CelestialNavigationUI.cpp:58 msgid "Delete" msgstr "Radera" -#: src/CelestialNavigationUI.cpp:49 -msgid "Delete All" -msgstr "Radera allt" - -#: src/CelestialNavigationUI.cpp:52 src/CelestialNavigationUI.h:281 -msgid "Fix" -msgstr "Lås" - -#: src/CelestialNavigationUI.cpp:55 -msgid "Clock Offset" -msgstr "" - -#: src/CelestialNavigationUI.cpp:61 +#: src\CelestialNavigationUI.cpp:61 msgid "Information" msgstr "Information" -#: src/CelestialNavigationUI.cpp:136 src/CelestialNavigationUI.cpp:667 -#: src/Sight.h:49 +#: src\CelestialNavigationUI.cpp:64 +msgid "Delete All" +msgstr "Radera allt" + +#: src\CelestialNavigationUI.cpp:141 src\CelestialNavigationUI.cpp:674 +#: src\Sight.h:49 msgid "Altitude" msgstr "Höjd" -#: src/CelestialNavigationUI.cpp:136 src/CelestialNavigationUI.cpp:677 -#: src/Sight.h:49 +#: src\CelestialNavigationUI.cpp:141 src\CelestialNavigationUI.cpp:683 +#: src\Sight.h:49 msgid "Azimuth" msgstr "Azimut" -#: src/CelestialNavigationUI.cpp:136 src/Sight.h:49 +#: src\CelestialNavigationUI.cpp:141 src\Sight.h:49 msgid "Lunar" -msgstr "" +msgstr "Lunar" -#: src/CelestialNavigationUI.cpp:142 +#: src\CelestialNavigationUI.cpp:147 msgid "Magnetic Azimuth" -msgstr "" +msgstr "Magnetisk Asimut" -#: src/CelestialNavigationUI.cpp:145 +#: src\CelestialNavigationUI.cpp:150 msgid "Celestial Body" -msgstr "" +msgstr "Himmlakropp" -#: src/CelestialNavigationUI.cpp:154 +#: src\CelestialNavigationUI.cpp:159 msgid "Find" msgstr "Hitta" -#: src/CelestialNavigationUI.cpp:157 +#: src\CelestialNavigationUI.cpp:162 msgid "Limb" -msgstr "" - -#: src/CelestialNavigationUI.cpp:161 -msgid "Lower" -msgstr "Lägre" +msgstr "Limb" -#: src/CelestialNavigationUI.cpp:161 +#: src\CelestialNavigationUI.cpp:166 msgid "Center" msgstr "Center" -#: src/CelestialNavigationUI.cpp:161 +#: src\CelestialNavigationUI.cpp:166 +msgid "Lower" +msgstr "Lägre" + +#: src\CelestialNavigationUI.cpp:166 msgid "Upper" msgstr "Övre" -#: src/CelestialNavigationUI.cpp:186 src/CelestialNavigationUI.cpp:193 -#: src/CelestialNavigationUI.cpp:223 src/CelestialNavigationUI.cpp:230 +#: src\CelestialNavigationUI.cpp:191 src\CelestialNavigationUI.cpp:198 +#: src\CelestialNavigationUI.cpp:228 src\CelestialNavigationUI.cpp:235 msgid "0" -msgstr "" +msgstr "0" -#: src/CelestialNavigationUI.cpp:189 src/CelestialNavigationUI.cpp:348 -#: src/CelestialNavigationUI.cpp:598 +#: src\CelestialNavigationUI.cpp:194 src\CelestialNavigationUI.cpp:353 +#: src\CelestialNavigationUI.cpp:605 msgid "Degrees" msgstr "Grader" -#: src/CelestialNavigationUI.cpp:196 src/CelestialNavigationUI.cpp:278 -#: src/CelestialNavigationUI.cpp:439 +#: src\CelestialNavigationUI.cpp:201 src\CelestialNavigationUI.cpp:283 +#: src\CelestialNavigationUI.cpp:444 msgid "Minutes" msgstr "Minuter" -#: src/CelestialNavigationUI.cpp:200 +#: src\CelestialNavigationUI.cpp:205 msgid "10" -msgstr "" +msgstr "10" -#: src/CelestialNavigationUI.cpp:203 +#: src\CelestialNavigationUI.cpp:208 msgid "Minutes Certainty" -msgstr "" +msgstr "Minutosäkerhet" -#: src/CelestialNavigationUI.cpp:217 +#: src\CelestialNavigationUI.cpp:222 msgid "Lunar Altitude" -msgstr "" +msgstr "Månhöjd" -#: src/CelestialNavigationUI.cpp:226 +#: src\CelestialNavigationUI.cpp:231 msgid "Body Altitude" -msgstr "" +msgstr "Kroppens höjd" -#: src/CelestialNavigationUI.cpp:243 +#: src\CelestialNavigationUI.cpp:248 msgid "Sight" -msgstr "" +msgstr "Observation" -#: src/CelestialNavigationUI.cpp:271 +#: src\CelestialNavigationUI.cpp:276 msgid "Hours" -msgstr "" +msgstr "Timmar" -#: src/CelestialNavigationUI.cpp:285 src/CelestialNavigationUI.cpp:303 -#: src/CelestialNavigationUI.cpp:860 +#: src\CelestialNavigationUI.cpp:290 src\CelestialNavigationUI.cpp:308 +#: src\CelestialNavigationUI.cpp:869 msgid "Seconds" -msgstr "" +msgstr "Sekunder" -#: src/CelestialNavigationUI.cpp:293 +#: src\CelestialNavigationUI.cpp:298 msgid "Certainty" -msgstr "" +msgstr "Minutosäkerhet" -#: src/CelestialNavigationUI.cpp:323 -msgid "Time" -msgstr "" - -#: src/CelestialNavigationUI.cpp:330 src/CelestialNavigationUI.cpp:580 +#: src\CelestialNavigationUI.cpp:335 src\CelestialNavigationUI.cpp:587 msgid "Distance" msgstr "Avstånd" -#: src/CelestialNavigationUI.cpp:337 src/CelestialNavigationUI.cpp:587 +#: src\CelestialNavigationUI.cpp:342 src\CelestialNavigationUI.cpp:594 msgid "Nm" -msgstr "" +msgstr "Nm" -#: src/CelestialNavigationUI.cpp:341 src/CelestialNavigationUI.cpp:591 +#: src\CelestialNavigationUI.cpp:346 src\CelestialNavigationUI.cpp:598 msgid "Bearing" -msgstr "" +msgstr "Bäring" -#: src/CelestialNavigationUI.cpp:352 src/CelestialNavigationUI.cpp:602 +#: src\CelestialNavigationUI.cpp:357 src\CelestialNavigationUI.cpp:609 msgid "Magnetic Bearing" -msgstr "" +msgstr "Magnetisk bäring" -#: src/CelestialNavigationUI.cpp:359 +#: src\CelestialNavigationUI.cpp:364 msgid "DR Shift" -msgstr "" +msgstr "DR Skift" -#: src/CelestialNavigationUI.cpp:366 +#: src\CelestialNavigationUI.cpp:371 msgid "Transparency" -msgstr "" +msgstr "Transparens" -#: src/CelestialNavigationUI.cpp:387 +#: src\CelestialNavigationUI.cpp:392 msgid "Config" msgstr "Konfiguration" -#: src/CelestialNavigationUI.cpp:399 +#: src\CelestialNavigationUI.cpp:404 msgid "Eye Height" -msgstr "" +msgstr "Ögonhöjd" -#: src/CelestialNavigationUI.cpp:403 +#: src\CelestialNavigationUI.cpp:408 msgid "2" -msgstr "" +msgstr "2" -#: src/CelestialNavigationUI.cpp:406 +#: src\CelestialNavigationUI.cpp:411 msgid "Meters" msgstr "Meter" -#: src/CelestialNavigationUI.cpp:410 +#: src\CelestialNavigationUI.cpp:415 msgid "Temperature" msgstr "Temperatur" -#: src/CelestialNavigationUI.cpp:417 +#: src\CelestialNavigationUI.cpp:422 msgid "Celcius" msgstr "Celcius" -#: src/CelestialNavigationUI.cpp:421 +#: src\CelestialNavigationUI.cpp:426 msgid "Pressure" msgstr "Tryck" -#: src/CelestialNavigationUI.cpp:428 +#: src\CelestialNavigationUI.cpp:433 msgid "MilliBars" msgstr "MilliBar" -#: src/CelestialNavigationUI.cpp:432 +#: src\CelestialNavigationUI.cpp:437 msgid "Index Error" msgstr "Indexfel" -#: src/CelestialNavigationUI.cpp:446 +#: src\CelestialNavigationUI.cpp:451 msgid "Set As Defaults" msgstr "Ange som standard" -#: src/CelestialNavigationUI.cpp:453 +#: src\CelestialNavigationUI.cpp:458 msgid "Parameters" msgstr "Parametrar" -#: src/CelestialNavigationUI.cpp:469 +#: src\CelestialNavigationUI.cpp:474 msgid "Calculations" msgstr "Beräkningar" -#: src/CelestialNavigationUI.cpp:571 +#: src\CelestialNavigationUI.cpp:578 msgid "Shift all visible Sights" msgstr "Flytta alla synliga sevärdheter" -#: src/CelestialNavigationUI.cpp:649 src/CelestialNavigationUI.cpp:760 +#: src\CelestialNavigationUI.cpp:656 src\CelestialNavigationUI.cpp:769 msgid "Latitude" msgstr "Latitude" -#: src/CelestialNavigationUI.cpp:658 src/CelestialNavigationUI.cpp:768 +#: src\CelestialNavigationUI.cpp:665 src\CelestialNavigationUI.cpp:777 msgid "Longitude" msgstr "Longitude" -#: src/CelestialNavigationUI.cpp:669 src/CelestialNavigationUI.cpp:679 -msgid "MyLabel" -msgstr "Min Etikett" - -#: src/CelestialNavigationUI.cpp:686 -msgid "Done" -msgstr "Färdig" +#: src\CelestialNavigationUI.cpp:691 +msgid "Boat Position" +msgstr "Båtens position" -#: src/CelestialNavigationUI.cpp:689 +#: src\CelestialNavigationUI.cpp:695 msgid "Magnetic" msgstr "Magnetisk" -#: src/CelestialNavigationUI.cpp:753 +#: src\CelestialNavigationUI.cpp:698 +msgid "Done" +msgstr "Färdig" + +#: src\CelestialNavigationUI.cpp:762 msgid "Fix From Visible Sights" -msgstr "" +msgstr "Position från aktiva observationer" -#: src/CelestialNavigationUI.cpp:764 +#: src\CelestialNavigationUI.cpp:773 msgid " N/A " -msgstr "" +msgstr " N/A " -#: src/CelestialNavigationUI.cpp:772 +#: src\CelestialNavigationUI.cpp:781 msgid " N/A " -msgstr "" +msgstr " N/A " -#: src/CelestialNavigationUI.cpp:776 +#: src\CelestialNavigationUI.cpp:785 msgid "Error" msgstr "Fel" -#: src/CelestialNavigationUI.cpp:780 +#: src\CelestialNavigationUI.cpp:789 msgid " N/A " msgstr " Ej Tillämpligt " -#: src/CelestialNavigationUI.cpp:787 src/CelestialNavigationUI.cpp:794 +#: src\CelestialNavigationUI.cpp:796 src\CelestialNavigationUI.cpp:803 msgid "Initial" msgstr "Inledande" -#: src/CelestialNavigationUI.cpp:801 +#: src\CelestialNavigationUI.cpp:810 msgid "Alg" -msgstr "" +msgstr "Beräkn." -#: src/CelestialNavigationUI.cpp:806 +#: src\CelestialNavigationUI.cpp:815 msgid "Plane" -msgstr "" +msgstr "Plan" -#: src/CelestialNavigationUI.cpp:807 +#: src\CelestialNavigationUI.cpp:816 msgid "Sphere" -msgstr "" +msgstr "Sfärisk" -#: src/CelestialNavigationUI.cpp:808 +#: src\CelestialNavigationUI.cpp:817 msgid "Cone" -msgstr "" +msgstr "Kon" -#: src/CelestialNavigationUI.cpp:809 +#: src\CelestialNavigationUI.cpp:818 msgid "Cone 2" -msgstr "" +msgstr "Kon 2" -#: src/CelestialNavigationUI.cpp:813 +#: src\CelestialNavigationUI.cpp:822 msgid "Go" -msgstr "" +msgstr "Kör" -#: src/CelestialNavigationUI.cpp:850 src/CelestialNavigationUI.h:303 +#: src\CelestialNavigationUI.cpp:859 src\CelestialNavigationUI.h:308 msgid "Clock Correction" -msgstr "" +msgstr "Korrigering av klockan" -#: src/CelestialNavigationUI.h:78 +#: src\CelestialNavigationUI.h:82 msgid "Celestial Navigation Sights" -msgstr "" +msgstr "Astronomiska observationer" -#: src/CelestialNavigationUI.h:169 +#: src\CelestialNavigationUI.h:173 msgid "Sight Properties" -msgstr "" +msgstr "Observationsegenskaper" -#: src/CelestialNavigationUI.h:200 +#: src\CelestialNavigationUI.h:204 msgid "Dead Reckoning shift" -msgstr "" +msgstr "Växla död räkning (DR)" -#: src/CelestialNavigationUI.h:227 +#: src\CelestialNavigationUI.h:232 msgid "Find Celestial Body" -msgstr "" +msgstr "Sök himmlakropp" -#: src/Sight.cpp:160 +#: src\FixDialog.cpp:192 +msgid "Shifted sights are not used to compute a fix, determine fix visually instead.\n" +msgstr "Astronomisk navigation används inte för att beräkna en geografiska positionen, använd visuell positionering istället.\n" + +#: src\FixDialog.cpp:193 +msgid "Fix Position" +msgstr "Fixposition" + +#: src\FixDialog.cpp:338 src\FixDialog.cpp:339 src\FixDialog.cpp:340 +msgid " N/A " +msgstr " N/A " + +#: src\Sight.cpp:172 src\Sight.cpp.bak:173 msgid "Astrolab failed, data unavailable:\n" -msgstr "" +msgstr "Astrolab misslyckades, data inte tillgänglig:\n" -#: src/Sight.cpp:161 +#: src\Sight.cpp:173 src\Sight.cpp.bak:174 msgid "\n" "Did you forget to install vsop87d.txt?\n" -msgstr "" +msgstr "\n" +"Glömde du att installera vsop87d.txt?\n" -#: src/Sight.cpp:162 +#: src\Sight.cpp:174 src\Sight.cpp.bak:175 msgid "The plugin will not work correctly" msgstr "Plugin fungerar inte korrekt" -#: src/Sight.cpp:163 +#: src\Sight.cpp:175 src\Sight.cpp.bak:176 msgid "Failure Alert" -msgstr "" +msgstr "Varning - Fel" -#: src/Sight.cpp:474 +#: src\Sight.cpp:495 src\Sight.cpp.bak:496 #, c-format msgid "Applying clock correction of %d seconds\n\n" -msgstr "" +msgstr "Tillämpar tidjustering med %d sekunder\n\n" -#: src/Sight.cpp:536 +#: src\Sight.cpp:557 src\Sight.cpp.bak:558 msgid "Almanac Data For " -msgstr "" +msgstr "Kalenderdata för " -#: src/Sight.cpp:537 +#: src\Sight.cpp:558 src\Sight.cpp.bak:559 #, c-format msgid "\n" "Geographical Position (lat, lon) = %.4f %.4f\n" @@ -408,259 +473,315 @@ msgid "\n" "Dec = %c %.0f %.1f'\n" "SD = %.1f'\n" "HP = %.1f'\n\n" -msgstr "" +msgstr "\n" +"Geografisk position (lat, lon) = %.4f %.4f\n" +"GHAAST = %.0f %.1f'\n" +"SHA = %.0f %.1f'\n" +"GHA = %.0f %.1f'\n" +"Dec = %c %.0f %.1f'\n" +"SD = %.1f'\n" +"HP = %.1f'\n\n" -#: src/Sight.cpp:552 src/Sight.cpp:690 +#: src\Sight.cpp:573 src\Sight.cpp:711 src\Sight.cpp.bak:574 +#: src\Sight.cpp.bak:712 msgid "Formulas used to calculate sight\n\n" -msgstr "" +msgstr "Beräkning som använts för observationen\n\n" -#: src/Sight.cpp:556 src/Sight.cpp:694 +#: src\Sight.cpp:577 src\Sight.cpp:715 src\Sight.cpp.bak:578 +#: src\Sight.cpp.bak:716 #, c-format msgid "Index Error is %.4f degrees\n\n" -msgstr "" +msgstr "Indexfelet är %.4f grader\n\n" -#: src/Sight.cpp:561 src/Sight.cpp:699 +#: src\Sight.cpp:582 src\Sight.cpp:720 src\Sight.cpp.bak:583 +#: src\Sight.cpp.bak:721 #, c-format msgid "Eye Height is %.4f meters\n" "Height Correction Degrees = 1.758*sqrt(%.4f) / 60.0\n" "Height Correction Degrees = %.4f\n" -msgstr "" +msgstr "Ögonhöjd är %.4f meter\n" +"Höjdkorrigering grader = 1.758*sqrt(%.4f) / 60.0\n" +"Höjdkorrigeringsgrader = %.4f\n" -#: src/Sight.cpp:568 +#: src\Sight.cpp:589 src\Sight.cpp:799 src\Sight.cpp.bak:590 +#: src\Sight.cpp.bak:800 #, c-format msgid "\n" "Apparent Altitude (Ha)\n" "ApparentAltitude = Measurement - IndexCorrection - EyeHeightCorrection\n" "ApparentAltitude = %.4f - %.4f - %.4f\n" "ApparentAltitude = %.4f\n" -msgstr "" +msgstr "\n" +"Apparent Altitude (Ha)\n" +"ApparentAltitude = Measurement - IndexCorrection - EyeHeightCorrection\n" +"ApparentAltitude = %.4f - %.4f - %.4f\n" +"ApparentAltitude = %.4f\n" -#: src/Sight.cpp:586 src/Sight.cpp:789 +#: src\Sight.cpp:607 src\Sight.cpp:810 src\Sight.cpp.bak:608 +#: src\Sight.cpp.bak:811 #, c-format msgid "\n" "Refraction Correction\n" "x = tan(Pi/180*ApparentAltitude + 4.848e-2*(Pi/180) / (tan(Pi/180*ApparentAltitude) + .028))\n" "x = tan(Pi/180*%.4f + 4.848e-2*(Pi/180) / (tan(Pi/180*%.4f) + .028))\n" "x = %.4f\n" -msgstr "" +msgstr "\n" +"Refraction Correction\n" +"x = tan(Pi/180*ApparentAltitude + 4.848e-2*(Pi/180) / (tan(Pi/180*ApparentAltitude) + .028))\n" +"x = tan(Pi/180*%.4f + 4.848e-2*(Pi/180) / (tan(Pi/180*%.4f) + .028))\n" +"x = %.4f\n" -#: src/Sight.cpp:591 src/Sight.cpp:794 +#: src\Sight.cpp:612 src\Sight.cpp:815 src\Sight.cpp.bak:613 +#: src\Sight.cpp.bak:816 #, c-format msgid "RefractionCorrection = .267 * Pressure / (x*(Temperature + 273.15)) / 60.0\n" "RefractionCorrection = .267 * %.4f / (x*(%.4f + 273.15)) / 60.0\n" "RefractionCorrection = %.4f\n" -msgstr "" +msgstr "RefractionCorrection = .267 * Pressure / (x*(Temperature + 273.15)) / 60.0\n" +"RefractionCorrection = .267 * %.4f / (x*(%.4f + 273.15)) / 60.0\n" +"RefractionCorrection = %.4f\n" -#: src/Sight.cpp:606 src/Sight.cpp:808 +#: src\Sight.cpp:627 src\Sight.cpp:829 src\Sight.cpp.bak:628 +#: src\Sight.cpp.bak:830 #, c-format msgid "\n" "Sun selected, Limb Correction\n" "ra = %.4f, lc = 0.266564/ra = %.4f\n" -msgstr "" +msgstr "\n" +"Sun selected, Limb Correction\n" +"ra = %.4f, lc = 0.266564/ra = %.4f\n" -#: src/Sight.cpp:616 src/Sight.cpp:732 +#: src\Sight.cpp:637 src\Sight.cpp:753 src\Sight.cpp.bak:638 +#: src\Sight.cpp.bak:754 #, c-format msgid "\n" "Moon selected, Limb Correction\n" "SD = %.4f\n" "lc = 180/Pi * asin(Pi/180*SD)\n" "lc = %.4f\n" -msgstr "" +msgstr "\n" +"Moon selected, Limb Correction\n" +"SD = %.4f\n" +"lc = 180/Pi * asin(Pi/180*SD)\n" +"lc = %.4f\n" -#: src/Sight.cpp:626 src/Sight.cpp:741 src/Sight.cpp:816 +#: src\Sight.cpp:647 src\Sight.cpp:762 src\Sight.cpp:837 src\Sight.cpp.bak:648 +#: src\Sight.cpp.bak:763 src\Sight.cpp.bak:838 msgid "Upper Limb" -msgstr "" +msgstr "Övre Limb" -#: src/Sight.cpp:629 src/Sight.cpp:744 src/Sight.cpp:819 +#: src\Sight.cpp:650 src\Sight.cpp:765 src\Sight.cpp:840 src\Sight.cpp.bak:651 +#: src\Sight.cpp.bak:766 src\Sight.cpp.bak:841 msgid "Lower Limb" -msgstr "" +msgstr "Nedre Limb" -#: src/Sight.cpp:632 src/Sight.cpp:822 +#: src\Sight.cpp:653 src\Sight.cpp:843 src\Sight.cpp.bak:654 +#: src\Sight.cpp.bak:844 #, c-format msgid "\n" "LimbCorrection = %.4f\n" -msgstr "" +msgstr "\n" +"LimbCorrection = %.4f\n" -#: src/Sight.cpp:636 src/Sight.cpp:826 +#: src\Sight.cpp:657 src\Sight.cpp:847 src\Sight.cpp.bak:658 +#: src\Sight.cpp.bak:848 #, c-format msgid "\n" "Corrected Altitude\n" "CorrectedAltitude = ApparentAltitude - RefractionCorrection - LimbCorrection\n" "CorrectedAltitude = %.4f - %.4f - %.4f\n" "CorrectedAltitude = %.4f\n" -msgstr "" +msgstr "\n" +"Corrected Altitude\n" +"CorrectedAltitude = ApparentAltitude - RefractionCorrection - LimbCorrection\n" +"CorrectedAltitude = %.4f - %.4f - %.4f\n" +"CorrectedAltitude = %.4f\n" -#: src/Sight.cpp:650 src/Sight.cpp:840 +#: src\Sight.cpp:671 src\Sight.cpp:861 src\Sight.cpp.bak:672 +#: src\Sight.cpp.bak:862 #, c-format msgid "\n" "Sun selected, parallax correction\n" "rad = %.4f, HP = 0.002442/rad = %.4f\n" -msgstr "" +msgstr "\n" +"Sun selected, parallax correction\n" +"rad = %.4f, HP = 0.002442/rad = %.4f\n" -#: src/Sight.cpp:659 src/Sight.cpp:764 +#: src\Sight.cpp:680 src\Sight.cpp:785 src\Sight.cpp.bak:681 +#: src\Sight.cpp.bak:786 #, c-format msgid "\n" "Moon selected, parallax correction\n" "HP = %.4f\n" -msgstr "" +msgstr "\n" +"Moon selected, parallax correction\n" +"HP = %.4f\n" -#: src/Sight.cpp:665 src/Sight.cpp:846 +#: src\Sight.cpp:686 src\Sight.cpp:867 src\Sight.cpp.bak:687 +#: src\Sight.cpp.bak:868 #, c-format msgid "ParallaxCorrection = -180/Pi * asin( sin(Pi/180 * HP ) * cos(Pi/180 * CorrectedAltitude))\n" "ParallaxCorrection = -180/Pi * asin( sin(Pi/180 * %.4f ) * cos(Pi/180 * %.4f))\n" "ParallaxCorrection = %.4f\n" -msgstr "" +msgstr "ParallaxCorrection = -180/Pi * asin( sin(Pi/180 * HP ) * cos(Pi/180 * CorrectedAltitude))\n" +"ParallaxCorrection = -180/Pi * asin( sin(Pi/180 * %.4f ) * cos(Pi/180 * %.4f))\n" +"ParallaxCorrection = %.4f\n" -#: src/Sight.cpp:672 +#: src\Sight.cpp:693 src\Sight.cpp.bak:694 #, c-format msgid "\n" "Observed Altitude (Ho)\n" "ObservedAltitude = CorrectedAltitude - ParallaxCorrection\n" "ObservedAltitude = %.4f - %.4f\n" "ObservedAltitude = %.4f\n" -msgstr "" +msgstr "\n" +"Observed Altitude (Ho)\n" +"ObservedAltitude = CorrectedAltitude - ParallaxCorrection\n" +"ObservedAltitude = %.4f - %.4f\n" +"ObservedAltitude = %.4f\n" -#: src/Sight.cpp:706 +#: src\Sight.cpp:727 src\Sight.cpp.bak:728 #, c-format msgid "\n" "Apparent Moon Altitude (Ha)\n" "ApparentAltitudeMoon = MeasurementMoon - IndexCorrection - EyeHeightCorrection\n" +"ApparentAltitudeMoon = %.4f - %.4f - %.4f\n" +"ApparentAltitudeMoon = %.4f\n" +msgstr "\n" +"Synliga höjden hos månen (Ha)\n" +"ApparentAltitudeMoon = MeasurementMoon - IndexCorrection - EyeHeightCorrection\n" " ApparentAltitudeMoon = %.4f - %.4f - %.4f\n" "ApparentAltitudeMoon = %.4f\n" -msgstr "" -#: src/Sight.cpp:717 +#: src\Sight.cpp:738 src\Sight.cpp.bak:739 #, c-format msgid "\n" "Refraction Correction\n" "x = tan(Pi/180*ApparentAltitudeMoon + 4.848e-2*(Pi/180) / (tan(Pi/180*ApparentAltitudeMoon) + .028))\n" "x = tan(Pi/180*%.4f + 4.848e-2*(Pi/180) / (tan(Pi/180*%.4f) + .028))\n" "x = %.4f\n" -msgstr "" +msgstr "\n" +"Refraction Correction\n" +"x = tan(Pi/180*ApparentAltitudeMoon + 4.848e-2*(Pi/180) / (tan(Pi/180*ApparentAltitudeMoon) + .028))\n" +"x = tan(Pi/180*%.4f + 4.848e-2*(Pi/180) / (tan(Pi/180*%.4f) + .028))\n" +"x = %.4f\n" -#: src/Sight.cpp:722 +#: src\Sight.cpp:743 src\Sight.cpp.bak:744 #, c-format msgid "RefractionCorrectionMoon = .267 * Pressure / (x*(Temperature + 273.15)) / 60.0\n" "RefractionCorrectionMoon = .267 * %.4f / (x*(%.4f + 273.15)) / 60.0\n" "RefractionCorrectionMoon = %.4f\n" -msgstr "" +msgstr "RefractionCorrectionMoon = .267 * Pressure / (x*(Temperature + 273.15)) / 60.0\n" +"RefractionCorrectionMoon = .267 * %.4f / (x*(%.4f + 273.15)) / 60.0\n" +"RefractionCorrectionMoon = %.4f\n" -#: src/Sight.cpp:747 src/Sight.cpp:750 +#: src\Sight.cpp:768 src\Sight.cpp:771 src\Sight.cpp.bak:769 +#: src\Sight.cpp.bak:772 #, c-format msgid "\n" "LimbCorrectionMoon = %.4f\n" -msgstr "" +msgstr "\n" +"LimbCorrectionMoon = %.4f\n" -#: src/Sight.cpp:753 +#: src\Sight.cpp:774 src\Sight.cpp.bak:775 #, c-format msgid "\n" "Corrected Altitude\n" "CorrectedAltitudeMoon = ApparentAltitudeMoon - RefractionCorrectionMoon - LimbCorrectionMoon\n" "CorrectedAltitudeMoon = %.4f - %.4f - %.4f\n" "CorrectedAltitudeMoon = %.4f\n" -msgstr "" +msgstr "\n" +"Corrected Altitude\n" +"CorrectedAltitudeMoon = ApparentAltitudeMoon - RefractionCorrectionMoon - LimbCorrectionMoon\n" +"CorrectedAltitudeMoon = %.4f - %.4f - %.4f\n" +"CorrectedAltitudeMoon = %.4f\n" -#: src/Sight.cpp:768 +#: src\Sight.cpp:789 src\Sight.cpp.bak:790 #, c-format msgid "ParallaxCorrectionMoon = -180/Pi * asin( sin(Pi/180 * HP ) * cos(Pi/180 * CorrectedAltitude))\n" +"ParallaxCorrectionMoon = -180/Pi * asin( sin(Pi/180 * %.4f ) * cos(Pi/180 * %.4f))\n" +"ParallaxCorrectionMoon = %.4f\n" +msgstr "ParallaxCorrectionMoon = -180/Pi * asin( sin(Pi/180 * HP ) * cos(Pi/180 * CorrectedAltitude))\n" " ParallaxCorrectionMoon = -180/Pi * asin( sin(Pi/180 * %.4f ) * cos(Pi/180 * %.4f))\n" "ParallaxCorrectionMoon = %.4f\n" -msgstr "" - -#: src/Sight.cpp:778 -#, c-format -msgid "\n" -"Apparent Altitude (Ha)\n" -"ApparentAltitude = Measurement - IndexCorrection - EyeHeightCorrection\n" -" ApparentAltitude = %.4f - %.4f - %.4f\n" -"ApparentAltitude = %.4f\n" -msgstr "" -#: src/Sight.cpp:857 +#: src\Sight.cpp:878 src\Sight.cpp.bak:879 #, c-format msgid "CorrectionsMoon = %.4f\n" "CorrectionsBody = %.4f\n" "Corrections = abs(CorrectionsMoon - CorrectionsBody) = %.4f\n" -msgstr "" +msgstr "CorrectionsMoon = %.4f\n" +"CorrectionsBody = %.4f\n" +"Corrections = abs(CorrectionsMoon - CorrectionsBody) = %.4f\n" -#: src/Sight.cpp:863 +#: src\Sight.cpp:884 src\Sight.cpp.bak:885 #, c-format msgid "CorrectedMeasurement = Measurement - Corrections - IndexCorrection\n" "CorrectedMeasurement = %.4f - %.4f - %.4f\n" "CorrectedMeasurement = %.4f\n" -msgstr "" +msgstr "CorrectedMeasurement = Measurement - Corrections - IndexCorrection\n" +"CorrectedMeasurement = %.4f - %.4f - %.4f\n" +"CorrectedMeasurement = %.4f\n" -#: src/Sight.cpp:888 +#: src\Sight.cpp:909 src\Sight.cpp.bak:910 msgid "\n" "Calculated angle between Moon and " -msgstr "" +msgstr "\n" +"Beräknad vinkel mellan månen och " -#: src/Sight.cpp:890 +#: src\Sight.cpp:911 src\Sight.cpp.bak:912 #, c-format msgid "\n" "Error from measurement: %.4f" -msgstr "" +msgstr "\n" +"Fel från mätning: %.4f" -#: src/Sight.cpp:894 +#: src\Sight.cpp:915 src\Sight.cpp.bak:916 msgid "\n" "Moon takes 28 days to orbit, one degree of error takes 6720 seconds" -msgstr "" +msgstr "\n" +"Månen tar 28 dagar i omloppsbanan, en grad av fel tar 6720 sekunder" -#: src/Sight.cpp:895 +#: src\Sight.cpp:916 src\Sight.cpp.bak:917 #, c-format msgid "\n" "Time correction %.4f seconds" -msgstr "" +msgstr "\n" +"Tidskorrigering %.4f sekunder" -#: src/Sight.cpp:1099 +#: src\Sight.cpp:1120 src\Sight.cpp.bak:1121 msgid "Building bearing Sight Positions" -msgstr "" +msgstr "Beräknar vinklar för observationspunkter" -#: src/SightDialog.cpp:172 +#: src\SightDialog.cpp:184 msgid "Measurement certainty likely set to small, sight may not appear " -msgstr "" +msgstr "Mätosäkerheten är sannolikt för snålt tilltagen, observationen kan inte visas " -#: src/SightDialog.cpp:173 src/SightDialog.cpp:256 +#: src\SightDialog.cpp:185 src\SightDialog.cpp:279 msgid "Warning" msgstr "Varning" -#: src/SightDialog.cpp:255 +#: src\SightDialog.cpp:278 msgid "Lunar shot will be invalid taking distance from moon to itself" -msgstr "" +msgstr "Månobservationen är ogiltig om man tar avstånd från månen till sig själv" -#: src/celestial_navigation_pi.cpp:90 -msgid "Failed to load file:\n" -msgstr "Misslyckades med att läsa filen:\n" +#: src\celestial_navigation_pi.cpp:179 +msgid "open error" +msgstr "Fel vid start" -#: src/celestial_navigation_pi.cpp:91 -msgid "\n" -"Magnetic data will not be available for the celestial navigation plugin." -msgstr "" +#: src\celestial_navigation_pi.cpp:180 +msgid "corrupt record" +msgstr "korrupt post" -#: src/celestial_navigation_pi.cpp:92 -msgid "OpenCPN Alert" -msgstr "OpenCPN Varning" +#: src\celestial_navigation_pi.cpp:181 +msgid "too many models" +msgstr "för många modeller" -#: src/celestial_navigation_pi.cpp:157 -msgid "Celestial Navigation PlugIn for OpenCPN" -msgstr "" +#: src\celestial_navigation_pi.cpp:184 +msgid "Magnetic data will not be available for the celestial navigation plugin." +msgstr "Geomagnetiska data kommer inte att vara tillgängligt." -#: src/celestial_navigation_pi.cpp:162 -msgid "Celestial Navigation PlugIn for OpenCPN.\n" -"Implements nautical almanac for sun, moon, planets,\n" -"and various navigational stars.\n" -"Compute position fix from celestial measurements." -msgstr "" - -#: src/FixDialog.cpp:189 -msgid "Shifted sights are not used to compute a fix, determine fix visually instead.\n" -msgstr "" - -#: src/FixDialog.cpp:190 -msgid "Fix Position" -msgstr "" - -#: src/FixDialog.cpp:335 src/FixDialog.cpp:336 src/FixDialog.cpp:337 -msgid " N/A " -msgstr "" +#: src\celestial_navigation_pi.cpp:185 +msgid "OpenCPN Alert" +msgstr "OpenCPN Varning" diff --git a/po/th_TH.po b/po/th_TH.po index e8ca199..6285302 100644 --- a/po/th_TH.po +++ b/po/th_TH.po @@ -2,403 +2,467 @@ msgid "" msgstr "" "Project-Id-Version: opencpn\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-02-28 14:10-0300\n" -"PO-Revision-Date: 2018-03-03 08:26-0500\n" -"Last-Translator: nohal \n" +"POT-Creation-Date: 2021-10-27 22:15+0200\n" +"PO-Revision-Date: 2023-10-04 18:33\n" +"Last-Translator: \n" "Language-Team: Thai\n" "Language: th_TH\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=1; plural=0;\n" -"X-Generator: crowdin.com\n" "X-Crowdin-Project: opencpn\n" +"X-Crowdin-Project-ID: 49843\n" "X-Crowdin-Language: th\n" "X-Crowdin-File: /plugins/celestial_navigation_pi/po/celestial_navigation_pi.pot\n" +"X-Crowdin-File-ID: 108\n" -#: src/CelestialNavigationDialog.cpp:123 src/CelestialNavigationUI.cpp:132 +#: src\CelestialNavigationDialog-2.3.5.1-no-android.cpp:149 +#: src\CelestialNavigationDialog-2.3.5.2-android.cpp:150 +#: src\CelestialNavigationDialog-partial-android.cpp:149 +#: src\CelestialNavigationDialog.cpp:150 src\CelestialNavigationUI.cpp:137 msgid "Type" msgstr "" -#: src/CelestialNavigationDialog.cpp:124 +#: src\CelestialNavigationDialog-2.3.5.1-no-android.cpp:150 +#: src\CelestialNavigationDialog-2.3.5.2-android.cpp:151 +#: src\CelestialNavigationDialog-partial-android.cpp:150 +#: src\CelestialNavigationDialog.cpp:151 msgid "Body" msgstr "" -#: src/CelestialNavigationDialog.cpp:125 -msgid "Time (UTC)" +#: src\CelestialNavigationDialog-2.3.5.1-no-android.cpp:151 +#: src\CelestialNavigationDialog-2.3.5.2-android.cpp:152 +#: src\CelestialNavigationDialog-partial-android.cpp:151 +#: src\CelestialNavigationDialog.cpp:152 src\CelestialNavigationUI.cpp:328 +msgid "Time (UT)" msgstr "" -#: src/CelestialNavigationDialog.cpp:126 src/CelestialNavigationUI.cpp:179 +#: src\CelestialNavigationDialog-2.3.5.1-no-android.cpp:152 +#: src\CelestialNavigationDialog-2.3.5.2-android.cpp:153 +#: src\CelestialNavigationDialog-partial-android.cpp:152 +#: src\CelestialNavigationDialog.cpp:153 src\CelestialNavigationUI.cpp:184 msgid "Measurement" msgstr "" -#: src/CelestialNavigationDialog.cpp:127 src/CelestialNavigationUI.cpp:376 +#: src\CelestialNavigationDialog-2.3.5.1-no-android.cpp:153 +#: src\CelestialNavigationDialog-2.3.5.2-android.cpp:154 +#: src\CelestialNavigationDialog-partial-android.cpp:153 +#: src\CelestialNavigationDialog.cpp:154 src\CelestialNavigationUI.cpp:381 msgid "Color" msgstr "" -#: src/CelestialNavigationDialog.cpp:193 -msgid "Failed to load file." +#: src\CelestialNavigationDialog-2.3.5.1-no-android.cpp:266 +#: src\CelestialNavigationDialog-2.3.5.2-android.cpp:272 +#: src\CelestialNavigationDialog-partial-android.cpp:266 +#: src\CelestialNavigationDialog.cpp:272 src\celestial_navigation_pi.cpp:177 +msgid "Failed to load file: " msgstr "" -#: src/CelestialNavigationDialog.cpp:198 +#: src\CelestialNavigationDialog-2.3.5.1-no-android.cpp:271 +#: src\CelestialNavigationDialog-2.3.5.2-android.cpp:277 +#: src\CelestialNavigationDialog-partial-android.cpp:271 +#: src\CelestialNavigationDialog.cpp:277 msgid "Invalid xml file" msgstr "" -#: src/CelestialNavigationDialog.cpp:250 +#: src\CelestialNavigationDialog-2.3.5.1-no-android.cpp:323 +#: src\CelestialNavigationDialog-2.3.5.2-android.cpp:329 +#: src\CelestialNavigationDialog-partial-android.cpp:323 +#: src\CelestialNavigationDialog.cpp:329 msgid "Unrecognized xml node" msgstr "" -#: src/CelestialNavigationDialog.cpp:260 -msgid "Weather Routing" +#: src\CelestialNavigationDialog-2.3.5.1-no-android.cpp:332 +#: src\CelestialNavigationDialog-2.3.5.1-no-android.cpp:392 +#: src\CelestialNavigationDialog-2.3.5.1-no-android.cpp:532 +#: src\CelestialNavigationDialog-2.3.5.2-android.cpp:338 +#: src\CelestialNavigationDialog-2.3.5.2-android.cpp:398 +#: src\CelestialNavigationDialog-2.3.5.2-android.cpp:538 +#: src\CelestialNavigationDialog-partial-android.cpp:332 +#: src\CelestialNavigationDialog-partial-android.cpp:392 +#: src\CelestialNavigationDialog-partial-android.cpp:532 +#: src\CelestialNavigationDialog.cpp:338 src\CelestialNavigationDialog.cpp:398 +#: src\CelestialNavigationDialog.cpp:538 src\Sight.cpp:1120 +#: src\Sight.cpp.bak:1121 src\celestial_navigation_pi.cpp:95 +#: src\celestial_navigation_pi.cpp:99 +msgid "Celestial Navigation" msgstr "" -#: src/CelestialNavigationDialog.cpp:320 +#: src\CelestialNavigationDialog-2.3.5.1-no-android.cpp:391 +#: src\CelestialNavigationDialog-2.3.5.2-android.cpp:397 +#: src\CelestialNavigationDialog-partial-android.cpp:391 +#: src\CelestialNavigationDialog.cpp:397 msgid "Failed to save xml file: " msgstr "" -#: src/CelestialNavigationDialog.cpp:321 src/CelestialNavigationDialog.cpp:466 -#: src/Sight.cpp:1099 src/celestial_navigation_pi.cpp:99 -#: src/celestial_navigation_pi.cpp:152 -msgid "Celestial Navigation" -msgstr "" - -#: src/CelestialNavigationDialog.cpp:351 +#: src\CelestialNavigationDialog-2.3.5.1-no-android.cpp:424 +#: src\CelestialNavigationDialog-2.3.5.2-android.cpp:430 +#: src\CelestialNavigationDialog-partial-android.cpp:424 +#: src\CelestialNavigationDialog.cpp:430 msgid "Time Correction" msgstr "" -#: src/CelestialNavigationDialog.cpp:409 +#: src\CelestialNavigationDialog-2.3.5.1-no-android.cpp:473 +#: src\CelestialNavigationDialog-2.3.5.2-android.cpp:479 +#: src\CelestialNavigationDialog-partial-android.cpp:473 +#: src\CelestialNavigationDialog.cpp:479 msgid "Sun" msgstr "" -#: src/CelestialNavigationDialog.cpp:465 +#: src\CelestialNavigationDialog-2.3.5.1-no-android.cpp:531 +#: src\CelestialNavigationDialog-2.3.5.2-android.cpp:537 +#: src\CelestialNavigationDialog-partial-android.cpp:531 +#: src\CelestialNavigationDialog.cpp:537 msgid "Are you sure you want to delete all sights?" msgstr "" -#: src/CelestialNavigationDialog.cpp:510 +#: src\CelestialNavigationDialog-2.3.5.1-no-android.cpp:582 +#: src\CelestialNavigationDialog-2.3.5.2-android.cpp:588 +#: src\CelestialNavigationDialog-partial-android.cpp:582 +#: src\CelestialNavigationDialog.cpp:588 msgid "Celestial_Navigation_Information.html" msgstr "" -#: src/CelestialNavigationDialog.cpp:516 -msgid "Show" +#: src\CelestialNavigationDialog-2.3.5.1-no-android.cpp:589 +#: src\CelestialNavigationDialog-2.3.5.2-android.cpp:595 +#: src\CelestialNavigationDialog-partial-android.cpp:589 +#: src\CelestialNavigationDialog.cpp:595 src\CelestialNavigationUI.cpp:55 +msgid "Hide" msgstr "" -#: src/CelestialNavigationDialog.cpp:516 src/CelestialNavigationUI.cpp:58 -msgid "Hide" +#: src\CelestialNavigationDialog-2.3.5.1-no-android.cpp:589 +#: src\CelestialNavigationDialog-2.3.5.2-android.cpp:595 +#: src\CelestialNavigationDialog-partial-android.cpp:589 +#: src\CelestialNavigationDialog.cpp:595 +msgid "Show" msgstr "" -#: src/CelestialNavigationUI.cpp:40 +#: src\CelestialNavigationUI.cpp:40 msgid "New" msgstr "" -#: src/CelestialNavigationUI.cpp:43 -msgid "Edit" +#: src\CelestialNavigationUI.cpp:43 src\CelestialNavigationUI.h:286 +msgid "Fix" msgstr "" -#: src/CelestialNavigationUI.cpp:46 -msgid "Delete" +#: src\CelestialNavigationUI.cpp:46 +msgid "Duplicate" msgstr "" -#: src/CelestialNavigationUI.cpp:49 -msgid "Delete All" +#: src\CelestialNavigationUI.cpp:49 +msgid "Clock Offset" msgstr "" -#: src/CelestialNavigationUI.cpp:52 src/CelestialNavigationUI.h:281 -msgid "Fix" +#: src\CelestialNavigationUI.cpp:52 +msgid "Edit" msgstr "" -#: src/CelestialNavigationUI.cpp:55 -msgid "Clock Offset" +#: src\CelestialNavigationUI.cpp:58 +msgid "Delete" msgstr "" -#: src/CelestialNavigationUI.cpp:61 +#: src\CelestialNavigationUI.cpp:61 msgid "Information" msgstr "" -#: src/CelestialNavigationUI.cpp:136 src/CelestialNavigationUI.cpp:667 -#: src/Sight.h:49 +#: src\CelestialNavigationUI.cpp:64 +msgid "Delete All" +msgstr "" + +#: src\CelestialNavigationUI.cpp:141 src\CelestialNavigationUI.cpp:674 +#: src\Sight.h:49 msgid "Altitude" msgstr "" -#: src/CelestialNavigationUI.cpp:136 src/CelestialNavigationUI.cpp:677 -#: src/Sight.h:49 +#: src\CelestialNavigationUI.cpp:141 src\CelestialNavigationUI.cpp:683 +#: src\Sight.h:49 msgid "Azimuth" msgstr "" -#: src/CelestialNavigationUI.cpp:136 src/Sight.h:49 +#: src\CelestialNavigationUI.cpp:141 src\Sight.h:49 msgid "Lunar" msgstr "" -#: src/CelestialNavigationUI.cpp:142 +#: src\CelestialNavigationUI.cpp:147 msgid "Magnetic Azimuth" msgstr "" -#: src/CelestialNavigationUI.cpp:145 +#: src\CelestialNavigationUI.cpp:150 msgid "Celestial Body" msgstr "" -#: src/CelestialNavigationUI.cpp:154 +#: src\CelestialNavigationUI.cpp:159 msgid "Find" msgstr "" -#: src/CelestialNavigationUI.cpp:157 +#: src\CelestialNavigationUI.cpp:162 msgid "Limb" msgstr "" -#: src/CelestialNavigationUI.cpp:161 -msgid "Lower" +#: src\CelestialNavigationUI.cpp:166 +msgid "Center" msgstr "" -#: src/CelestialNavigationUI.cpp:161 -msgid "Center" +#: src\CelestialNavigationUI.cpp:166 +msgid "Lower" msgstr "" -#: src/CelestialNavigationUI.cpp:161 +#: src\CelestialNavigationUI.cpp:166 msgid "Upper" msgstr "" -#: src/CelestialNavigationUI.cpp:186 src/CelestialNavigationUI.cpp:193 -#: src/CelestialNavigationUI.cpp:223 src/CelestialNavigationUI.cpp:230 +#: src\CelestialNavigationUI.cpp:191 src\CelestialNavigationUI.cpp:198 +#: src\CelestialNavigationUI.cpp:228 src\CelestialNavigationUI.cpp:235 msgid "0" msgstr "" -#: src/CelestialNavigationUI.cpp:189 src/CelestialNavigationUI.cpp:348 -#: src/CelestialNavigationUI.cpp:598 +#: src\CelestialNavigationUI.cpp:194 src\CelestialNavigationUI.cpp:353 +#: src\CelestialNavigationUI.cpp:605 msgid "Degrees" msgstr "" -#: src/CelestialNavigationUI.cpp:196 src/CelestialNavigationUI.cpp:278 -#: src/CelestialNavigationUI.cpp:439 +#: src\CelestialNavigationUI.cpp:201 src\CelestialNavigationUI.cpp:283 +#: src\CelestialNavigationUI.cpp:444 msgid "Minutes" msgstr "" -#: src/CelestialNavigationUI.cpp:200 +#: src\CelestialNavigationUI.cpp:205 msgid "10" msgstr "" -#: src/CelestialNavigationUI.cpp:203 +#: src\CelestialNavigationUI.cpp:208 msgid "Minutes Certainty" msgstr "" -#: src/CelestialNavigationUI.cpp:217 +#: src\CelestialNavigationUI.cpp:222 msgid "Lunar Altitude" msgstr "" -#: src/CelestialNavigationUI.cpp:226 +#: src\CelestialNavigationUI.cpp:231 msgid "Body Altitude" msgstr "" -#: src/CelestialNavigationUI.cpp:243 +#: src\CelestialNavigationUI.cpp:248 msgid "Sight" msgstr "" -#: src/CelestialNavigationUI.cpp:271 +#: src\CelestialNavigationUI.cpp:276 msgid "Hours" msgstr "" -#: src/CelestialNavigationUI.cpp:285 src/CelestialNavigationUI.cpp:303 -#: src/CelestialNavigationUI.cpp:860 +#: src\CelestialNavigationUI.cpp:290 src\CelestialNavigationUI.cpp:308 +#: src\CelestialNavigationUI.cpp:869 msgid "Seconds" msgstr "" -#: src/CelestialNavigationUI.cpp:293 +#: src\CelestialNavigationUI.cpp:298 msgid "Certainty" msgstr "" -#: src/CelestialNavigationUI.cpp:323 -msgid "Time" -msgstr "" - -#: src/CelestialNavigationUI.cpp:330 src/CelestialNavigationUI.cpp:580 +#: src\CelestialNavigationUI.cpp:335 src\CelestialNavigationUI.cpp:587 msgid "Distance" msgstr "" -#: src/CelestialNavigationUI.cpp:337 src/CelestialNavigationUI.cpp:587 +#: src\CelestialNavigationUI.cpp:342 src\CelestialNavigationUI.cpp:594 msgid "Nm" msgstr "" -#: src/CelestialNavigationUI.cpp:341 src/CelestialNavigationUI.cpp:591 +#: src\CelestialNavigationUI.cpp:346 src\CelestialNavigationUI.cpp:598 msgid "Bearing" msgstr "" -#: src/CelestialNavigationUI.cpp:352 src/CelestialNavigationUI.cpp:602 +#: src\CelestialNavigationUI.cpp:357 src\CelestialNavigationUI.cpp:609 msgid "Magnetic Bearing" msgstr "" -#: src/CelestialNavigationUI.cpp:359 +#: src\CelestialNavigationUI.cpp:364 msgid "DR Shift" msgstr "" -#: src/CelestialNavigationUI.cpp:366 +#: src\CelestialNavigationUI.cpp:371 msgid "Transparency" msgstr "" -#: src/CelestialNavigationUI.cpp:387 +#: src\CelestialNavigationUI.cpp:392 msgid "Config" msgstr "" -#: src/CelestialNavigationUI.cpp:399 +#: src\CelestialNavigationUI.cpp:404 msgid "Eye Height" msgstr "" -#: src/CelestialNavigationUI.cpp:403 +#: src\CelestialNavigationUI.cpp:408 msgid "2" msgstr "" -#: src/CelestialNavigationUI.cpp:406 +#: src\CelestialNavigationUI.cpp:411 msgid "Meters" msgstr "" -#: src/CelestialNavigationUI.cpp:410 +#: src\CelestialNavigationUI.cpp:415 msgid "Temperature" msgstr "" -#: src/CelestialNavigationUI.cpp:417 +#: src\CelestialNavigationUI.cpp:422 msgid "Celcius" msgstr "" -#: src/CelestialNavigationUI.cpp:421 +#: src\CelestialNavigationUI.cpp:426 msgid "Pressure" msgstr "" -#: src/CelestialNavigationUI.cpp:428 +#: src\CelestialNavigationUI.cpp:433 msgid "MilliBars" msgstr "" -#: src/CelestialNavigationUI.cpp:432 +#: src\CelestialNavigationUI.cpp:437 msgid "Index Error" msgstr "" -#: src/CelestialNavigationUI.cpp:446 +#: src\CelestialNavigationUI.cpp:451 msgid "Set As Defaults" msgstr "" -#: src/CelestialNavigationUI.cpp:453 +#: src\CelestialNavigationUI.cpp:458 msgid "Parameters" msgstr "" -#: src/CelestialNavigationUI.cpp:469 +#: src\CelestialNavigationUI.cpp:474 msgid "Calculations" msgstr "" -#: src/CelestialNavigationUI.cpp:571 +#: src\CelestialNavigationUI.cpp:578 msgid "Shift all visible Sights" msgstr "" -#: src/CelestialNavigationUI.cpp:649 src/CelestialNavigationUI.cpp:760 +#: src\CelestialNavigationUI.cpp:656 src\CelestialNavigationUI.cpp:769 msgid "Latitude" msgstr "" -#: src/CelestialNavigationUI.cpp:658 src/CelestialNavigationUI.cpp:768 +#: src\CelestialNavigationUI.cpp:665 src\CelestialNavigationUI.cpp:777 msgid "Longitude" msgstr "" -#: src/CelestialNavigationUI.cpp:669 src/CelestialNavigationUI.cpp:679 -msgid "MyLabel" +#: src\CelestialNavigationUI.cpp:691 +msgid "Boat Position" msgstr "" -#: src/CelestialNavigationUI.cpp:686 -msgid "Done" +#: src\CelestialNavigationUI.cpp:695 +msgid "Magnetic" msgstr "" -#: src/CelestialNavigationUI.cpp:689 -msgid "Magnetic" +#: src\CelestialNavigationUI.cpp:698 +msgid "Done" msgstr "" -#: src/CelestialNavigationUI.cpp:753 +#: src\CelestialNavigationUI.cpp:762 msgid "Fix From Visible Sights" msgstr "" -#: src/CelestialNavigationUI.cpp:764 +#: src\CelestialNavigationUI.cpp:773 msgid " N/A " msgstr "" -#: src/CelestialNavigationUI.cpp:772 +#: src\CelestialNavigationUI.cpp:781 msgid " N/A " msgstr "" -#: src/CelestialNavigationUI.cpp:776 +#: src\CelestialNavigationUI.cpp:785 msgid "Error" msgstr "" -#: src/CelestialNavigationUI.cpp:780 +#: src\CelestialNavigationUI.cpp:789 msgid " N/A " msgstr "" -#: src/CelestialNavigationUI.cpp:787 src/CelestialNavigationUI.cpp:794 +#: src\CelestialNavigationUI.cpp:796 src\CelestialNavigationUI.cpp:803 msgid "Initial" msgstr "" -#: src/CelestialNavigationUI.cpp:801 +#: src\CelestialNavigationUI.cpp:810 msgid "Alg" msgstr "" -#: src/CelestialNavigationUI.cpp:806 +#: src\CelestialNavigationUI.cpp:815 msgid "Plane" msgstr "" -#: src/CelestialNavigationUI.cpp:807 +#: src\CelestialNavigationUI.cpp:816 msgid "Sphere" msgstr "" -#: src/CelestialNavigationUI.cpp:808 +#: src\CelestialNavigationUI.cpp:817 msgid "Cone" msgstr "" -#: src/CelestialNavigationUI.cpp:809 +#: src\CelestialNavigationUI.cpp:818 msgid "Cone 2" msgstr "" -#: src/CelestialNavigationUI.cpp:813 +#: src\CelestialNavigationUI.cpp:822 msgid "Go" msgstr "" -#: src/CelestialNavigationUI.cpp:850 src/CelestialNavigationUI.h:303 +#: src\CelestialNavigationUI.cpp:859 src\CelestialNavigationUI.h:308 msgid "Clock Correction" msgstr "" -#: src/CelestialNavigationUI.h:78 +#: src\CelestialNavigationUI.h:82 msgid "Celestial Navigation Sights" msgstr "" -#: src/CelestialNavigationUI.h:169 +#: src\CelestialNavigationUI.h:173 msgid "Sight Properties" msgstr "" -#: src/CelestialNavigationUI.h:200 +#: src\CelestialNavigationUI.h:204 msgid "Dead Reckoning shift" msgstr "" -#: src/CelestialNavigationUI.h:227 +#: src\CelestialNavigationUI.h:232 msgid "Find Celestial Body" msgstr "" -#: src/Sight.cpp:160 +#: src\FixDialog.cpp:192 +msgid "Shifted sights are not used to compute a fix, determine fix visually instead.\n" +msgstr "" + +#: src\FixDialog.cpp:193 +msgid "Fix Position" +msgstr "" + +#: src\FixDialog.cpp:338 src\FixDialog.cpp:339 src\FixDialog.cpp:340 +msgid " N/A " +msgstr "" + +#: src\Sight.cpp:172 src\Sight.cpp.bak:173 msgid "Astrolab failed, data unavailable:\n" msgstr "" -#: src/Sight.cpp:161 +#: src\Sight.cpp:173 src\Sight.cpp.bak:174 msgid "\n" "Did you forget to install vsop87d.txt?\n" msgstr "" -#: src/Sight.cpp:162 +#: src\Sight.cpp:174 src\Sight.cpp.bak:175 msgid "The plugin will not work correctly" msgstr "" -#: src/Sight.cpp:163 +#: src\Sight.cpp:175 src\Sight.cpp.bak:176 msgid "Failure Alert" msgstr "" -#: src/Sight.cpp:474 +#: src\Sight.cpp:495 src\Sight.cpp.bak:496 #, c-format msgid "Applying clock correction of %d seconds\n\n" msgstr "" -#: src/Sight.cpp:536 +#: src\Sight.cpp:557 src\Sight.cpp.bak:558 msgid "Almanac Data For " msgstr "" -#: src/Sight.cpp:537 +#: src\Sight.cpp:558 src\Sight.cpp.bak:559 #, c-format msgid "\n" "Geographical Position (lat, lon) = %.4f %.4f\n" @@ -410,23 +474,27 @@ msgid "\n" "HP = %.1f'\n\n" msgstr "" -#: src/Sight.cpp:552 src/Sight.cpp:690 +#: src\Sight.cpp:573 src\Sight.cpp:711 src\Sight.cpp.bak:574 +#: src\Sight.cpp.bak:712 msgid "Formulas used to calculate sight\n\n" msgstr "" -#: src/Sight.cpp:556 src/Sight.cpp:694 +#: src\Sight.cpp:577 src\Sight.cpp:715 src\Sight.cpp.bak:578 +#: src\Sight.cpp.bak:716 #, c-format msgid "Index Error is %.4f degrees\n\n" msgstr "" -#: src/Sight.cpp:561 src/Sight.cpp:699 +#: src\Sight.cpp:582 src\Sight.cpp:720 src\Sight.cpp.bak:583 +#: src\Sight.cpp.bak:721 #, c-format msgid "Eye Height is %.4f meters\n" "Height Correction Degrees = 1.758*sqrt(%.4f) / 60.0\n" "Height Correction Degrees = %.4f\n" msgstr "" -#: src/Sight.cpp:568 +#: src\Sight.cpp:589 src\Sight.cpp:799 src\Sight.cpp.bak:590 +#: src\Sight.cpp.bak:800 #, c-format msgid "\n" "Apparent Altitude (Ha)\n" @@ -435,7 +503,8 @@ msgid "\n" "ApparentAltitude = %.4f\n" msgstr "" -#: src/Sight.cpp:586 src/Sight.cpp:789 +#: src\Sight.cpp:607 src\Sight.cpp:810 src\Sight.cpp.bak:608 +#: src\Sight.cpp.bak:811 #, c-format msgid "\n" "Refraction Correction\n" @@ -444,21 +513,24 @@ msgid "\n" "x = %.4f\n" msgstr "" -#: src/Sight.cpp:591 src/Sight.cpp:794 +#: src\Sight.cpp:612 src\Sight.cpp:815 src\Sight.cpp.bak:613 +#: src\Sight.cpp.bak:816 #, c-format msgid "RefractionCorrection = .267 * Pressure / (x*(Temperature + 273.15)) / 60.0\n" "RefractionCorrection = .267 * %.4f / (x*(%.4f + 273.15)) / 60.0\n" "RefractionCorrection = %.4f\n" msgstr "" -#: src/Sight.cpp:606 src/Sight.cpp:808 +#: src\Sight.cpp:627 src\Sight.cpp:829 src\Sight.cpp.bak:628 +#: src\Sight.cpp.bak:830 #, c-format msgid "\n" "Sun selected, Limb Correction\n" "ra = %.4f, lc = 0.266564/ra = %.4f\n" msgstr "" -#: src/Sight.cpp:616 src/Sight.cpp:732 +#: src\Sight.cpp:637 src\Sight.cpp:753 src\Sight.cpp.bak:638 +#: src\Sight.cpp.bak:754 #, c-format msgid "\n" "Moon selected, Limb Correction\n" @@ -467,21 +539,25 @@ msgid "\n" "lc = %.4f\n" msgstr "" -#: src/Sight.cpp:626 src/Sight.cpp:741 src/Sight.cpp:816 +#: src\Sight.cpp:647 src\Sight.cpp:762 src\Sight.cpp:837 src\Sight.cpp.bak:648 +#: src\Sight.cpp.bak:763 src\Sight.cpp.bak:838 msgid "Upper Limb" msgstr "" -#: src/Sight.cpp:629 src/Sight.cpp:744 src/Sight.cpp:819 +#: src\Sight.cpp:650 src\Sight.cpp:765 src\Sight.cpp:840 src\Sight.cpp.bak:651 +#: src\Sight.cpp.bak:766 src\Sight.cpp.bak:841 msgid "Lower Limb" msgstr "" -#: src/Sight.cpp:632 src/Sight.cpp:822 +#: src\Sight.cpp:653 src\Sight.cpp:843 src\Sight.cpp.bak:654 +#: src\Sight.cpp.bak:844 #, c-format msgid "\n" "LimbCorrection = %.4f\n" msgstr "" -#: src/Sight.cpp:636 src/Sight.cpp:826 +#: src\Sight.cpp:657 src\Sight.cpp:847 src\Sight.cpp.bak:658 +#: src\Sight.cpp.bak:848 #, c-format msgid "\n" "Corrected Altitude\n" @@ -490,28 +566,31 @@ msgid "\n" "CorrectedAltitude = %.4f\n" msgstr "" -#: src/Sight.cpp:650 src/Sight.cpp:840 +#: src\Sight.cpp:671 src\Sight.cpp:861 src\Sight.cpp.bak:672 +#: src\Sight.cpp.bak:862 #, c-format msgid "\n" "Sun selected, parallax correction\n" "rad = %.4f, HP = 0.002442/rad = %.4f\n" msgstr "" -#: src/Sight.cpp:659 src/Sight.cpp:764 +#: src\Sight.cpp:680 src\Sight.cpp:785 src\Sight.cpp.bak:681 +#: src\Sight.cpp.bak:786 #, c-format msgid "\n" "Moon selected, parallax correction\n" "HP = %.4f\n" msgstr "" -#: src/Sight.cpp:665 src/Sight.cpp:846 +#: src\Sight.cpp:686 src\Sight.cpp:867 src\Sight.cpp.bak:687 +#: src\Sight.cpp.bak:868 #, c-format msgid "ParallaxCorrection = -180/Pi * asin( sin(Pi/180 * HP ) * cos(Pi/180 * CorrectedAltitude))\n" "ParallaxCorrection = -180/Pi * asin( sin(Pi/180 * %.4f ) * cos(Pi/180 * %.4f))\n" "ParallaxCorrection = %.4f\n" msgstr "" -#: src/Sight.cpp:672 +#: src\Sight.cpp:693 src\Sight.cpp.bak:694 #, c-format msgid "\n" "Observed Altitude (Ho)\n" @@ -520,16 +599,16 @@ msgid "\n" "ObservedAltitude = %.4f\n" msgstr "" -#: src/Sight.cpp:706 +#: src\Sight.cpp:727 src\Sight.cpp.bak:728 #, c-format msgid "\n" "Apparent Moon Altitude (Ha)\n" "ApparentAltitudeMoon = MeasurementMoon - IndexCorrection - EyeHeightCorrection\n" -" ApparentAltitudeMoon = %.4f - %.4f - %.4f\n" +"ApparentAltitudeMoon = %.4f - %.4f - %.4f\n" "ApparentAltitudeMoon = %.4f\n" msgstr "" -#: src/Sight.cpp:717 +#: src\Sight.cpp:738 src\Sight.cpp.bak:739 #, c-format msgid "\n" "Refraction Correction\n" @@ -538,20 +617,21 @@ msgid "\n" "x = %.4f\n" msgstr "" -#: src/Sight.cpp:722 +#: src\Sight.cpp:743 src\Sight.cpp.bak:744 #, c-format msgid "RefractionCorrectionMoon = .267 * Pressure / (x*(Temperature + 273.15)) / 60.0\n" "RefractionCorrectionMoon = .267 * %.4f / (x*(%.4f + 273.15)) / 60.0\n" "RefractionCorrectionMoon = %.4f\n" msgstr "" -#: src/Sight.cpp:747 src/Sight.cpp:750 +#: src\Sight.cpp:768 src\Sight.cpp:771 src\Sight.cpp.bak:769 +#: src\Sight.cpp.bak:772 #, c-format msgid "\n" "LimbCorrectionMoon = %.4f\n" msgstr "" -#: src/Sight.cpp:753 +#: src\Sight.cpp:774 src\Sight.cpp.bak:775 #, c-format msgid "\n" "Corrected Altitude\n" @@ -560,107 +640,82 @@ msgid "\n" "CorrectedAltitudeMoon = %.4f\n" msgstr "" -#: src/Sight.cpp:768 +#: src\Sight.cpp:789 src\Sight.cpp.bak:790 #, c-format msgid "ParallaxCorrectionMoon = -180/Pi * asin( sin(Pi/180 * HP ) * cos(Pi/180 * CorrectedAltitude))\n" -" ParallaxCorrectionMoon = -180/Pi * asin( sin(Pi/180 * %.4f ) * cos(Pi/180 * %.4f))\n" +"ParallaxCorrectionMoon = -180/Pi * asin( sin(Pi/180 * %.4f ) * cos(Pi/180 * %.4f))\n" "ParallaxCorrectionMoon = %.4f\n" msgstr "" -#: src/Sight.cpp:778 -#, c-format -msgid "\n" -"Apparent Altitude (Ha)\n" -"ApparentAltitude = Measurement - IndexCorrection - EyeHeightCorrection\n" -" ApparentAltitude = %.4f - %.4f - %.4f\n" -"ApparentAltitude = %.4f\n" -msgstr "" - -#: src/Sight.cpp:857 +#: src\Sight.cpp:878 src\Sight.cpp.bak:879 #, c-format msgid "CorrectionsMoon = %.4f\n" "CorrectionsBody = %.4f\n" "Corrections = abs(CorrectionsMoon - CorrectionsBody) = %.4f\n" msgstr "" -#: src/Sight.cpp:863 +#: src\Sight.cpp:884 src\Sight.cpp.bak:885 #, c-format msgid "CorrectedMeasurement = Measurement - Corrections - IndexCorrection\n" "CorrectedMeasurement = %.4f - %.4f - %.4f\n" "CorrectedMeasurement = %.4f\n" msgstr "" -#: src/Sight.cpp:888 +#: src\Sight.cpp:909 src\Sight.cpp.bak:910 msgid "\n" "Calculated angle between Moon and " msgstr "" -#: src/Sight.cpp:890 +#: src\Sight.cpp:911 src\Sight.cpp.bak:912 #, c-format msgid "\n" "Error from measurement: %.4f" msgstr "" -#: src/Sight.cpp:894 +#: src\Sight.cpp:915 src\Sight.cpp.bak:916 msgid "\n" "Moon takes 28 days to orbit, one degree of error takes 6720 seconds" msgstr "" -#: src/Sight.cpp:895 +#: src\Sight.cpp:916 src\Sight.cpp.bak:917 #, c-format msgid "\n" "Time correction %.4f seconds" msgstr "" -#: src/Sight.cpp:1099 +#: src\Sight.cpp:1120 src\Sight.cpp.bak:1121 msgid "Building bearing Sight Positions" msgstr "" -#: src/SightDialog.cpp:172 +#: src\SightDialog.cpp:184 msgid "Measurement certainty likely set to small, sight may not appear " msgstr "" -#: src/SightDialog.cpp:173 src/SightDialog.cpp:256 +#: src\SightDialog.cpp:185 src\SightDialog.cpp:279 msgid "Warning" msgstr "" -#: src/SightDialog.cpp:255 +#: src\SightDialog.cpp:278 msgid "Lunar shot will be invalid taking distance from moon to itself" msgstr "" -#: src/celestial_navigation_pi.cpp:90 -msgid "Failed to load file:\n" -msgstr "" - -#: src/celestial_navigation_pi.cpp:91 -msgid "\n" -"Magnetic data will not be available for the celestial navigation plugin." -msgstr "" - -#: src/celestial_navigation_pi.cpp:92 -msgid "OpenCPN Alert" +#: src\celestial_navigation_pi.cpp:179 +msgid "open error" msgstr "" -#: src/celestial_navigation_pi.cpp:157 -msgid "Celestial Navigation PlugIn for OpenCPN" +#: src\celestial_navigation_pi.cpp:180 +msgid "corrupt record" msgstr "" -#: src/celestial_navigation_pi.cpp:162 -msgid "Celestial Navigation PlugIn for OpenCPN.\n" -"Implements nautical almanac for sun, moon, planets,\n" -"and various navigational stars.\n" -"Compute position fix from celestial measurements." +#: src\celestial_navigation_pi.cpp:181 +msgid "too many models" msgstr "" -#: src/FixDialog.cpp:189 -msgid "Shifted sights are not used to compute a fix, determine fix visually instead.\n" +#: src\celestial_navigation_pi.cpp:184 +msgid "Magnetic data will not be available for the celestial navigation plugin." msgstr "" -#: src/FixDialog.cpp:190 -msgid "Fix Position" -msgstr "" - -#: src/FixDialog.cpp:335 src/FixDialog.cpp:336 src/FixDialog.cpp:337 -msgid " N/A " +#: src\celestial_navigation_pi.cpp:185 +msgid "OpenCPN Alert" msgstr "" diff --git a/po/tr_TR.po b/po/tr_TR.po new file mode 100644 index 0000000..c67e578 --- /dev/null +++ b/po/tr_TR.po @@ -0,0 +1,781 @@ +msgid "" +msgstr "" +"Project-Id-Version: opencpn\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2021-10-27 22:15+0200\n" +"PO-Revision-Date: 2023-10-04 18:33\n" +"Last-Translator: \n" +"Language-Team: Turkish\n" +"Language: tr_TR\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" +"X-Crowdin-Project: opencpn\n" +"X-Crowdin-Project-ID: 49843\n" +"X-Crowdin-Language: tr\n" +"X-Crowdin-File: /plugins/celestial_navigation_pi/po/celestial_navigation_pi.pot\n" +"X-Crowdin-File-ID: 108\n" + +#: src\CelestialNavigationDialog-2.3.5.1-no-android.cpp:149 +#: src\CelestialNavigationDialog-2.3.5.2-android.cpp:150 +#: src\CelestialNavigationDialog-partial-android.cpp:149 +#: src\CelestialNavigationDialog.cpp:150 src\CelestialNavigationUI.cpp:137 +msgid "Type" +msgstr "Tip" + +#: src\CelestialNavigationDialog-2.3.5.1-no-android.cpp:150 +#: src\CelestialNavigationDialog-2.3.5.2-android.cpp:151 +#: src\CelestialNavigationDialog-partial-android.cpp:150 +#: src\CelestialNavigationDialog.cpp:151 +msgid "Body" +msgstr "Gövde" + +#: src\CelestialNavigationDialog-2.3.5.1-no-android.cpp:151 +#: src\CelestialNavigationDialog-2.3.5.2-android.cpp:152 +#: src\CelestialNavigationDialog-partial-android.cpp:151 +#: src\CelestialNavigationDialog.cpp:152 src\CelestialNavigationUI.cpp:328 +msgid "Time (UT)" +msgstr "" + +#: src\CelestialNavigationDialog-2.3.5.1-no-android.cpp:152 +#: src\CelestialNavigationDialog-2.3.5.2-android.cpp:153 +#: src\CelestialNavigationDialog-partial-android.cpp:152 +#: src\CelestialNavigationDialog.cpp:153 src\CelestialNavigationUI.cpp:184 +msgid "Measurement" +msgstr "Ölçüm" + +#: src\CelestialNavigationDialog-2.3.5.1-no-android.cpp:153 +#: src\CelestialNavigationDialog-2.3.5.2-android.cpp:154 +#: src\CelestialNavigationDialog-partial-android.cpp:153 +#: src\CelestialNavigationDialog.cpp:154 src\CelestialNavigationUI.cpp:381 +msgid "Color" +msgstr "Renk" + +#: src\CelestialNavigationDialog-2.3.5.1-no-android.cpp:266 +#: src\CelestialNavigationDialog-2.3.5.2-android.cpp:272 +#: src\CelestialNavigationDialog-partial-android.cpp:266 +#: src\CelestialNavigationDialog.cpp:272 src\celestial_navigation_pi.cpp:177 +msgid "Failed to load file: " +msgstr "" + +#: src\CelestialNavigationDialog-2.3.5.1-no-android.cpp:271 +#: src\CelestialNavigationDialog-2.3.5.2-android.cpp:277 +#: src\CelestialNavigationDialog-partial-android.cpp:271 +#: src\CelestialNavigationDialog.cpp:277 +msgid "Invalid xml file" +msgstr "Geçersiz xml dosyası" + +#: src\CelestialNavigationDialog-2.3.5.1-no-android.cpp:323 +#: src\CelestialNavigationDialog-2.3.5.2-android.cpp:329 +#: src\CelestialNavigationDialog-partial-android.cpp:323 +#: src\CelestialNavigationDialog.cpp:329 +msgid "Unrecognized xml node" +msgstr "Tanınmayan xml düğümü" + +#: src\CelestialNavigationDialog-2.3.5.1-no-android.cpp:332 +#: src\CelestialNavigationDialog-2.3.5.1-no-android.cpp:392 +#: src\CelestialNavigationDialog-2.3.5.1-no-android.cpp:532 +#: src\CelestialNavigationDialog-2.3.5.2-android.cpp:338 +#: src\CelestialNavigationDialog-2.3.5.2-android.cpp:398 +#: src\CelestialNavigationDialog-2.3.5.2-android.cpp:538 +#: src\CelestialNavigationDialog-partial-android.cpp:332 +#: src\CelestialNavigationDialog-partial-android.cpp:392 +#: src\CelestialNavigationDialog-partial-android.cpp:532 +#: src\CelestialNavigationDialog.cpp:338 src\CelestialNavigationDialog.cpp:398 +#: src\CelestialNavigationDialog.cpp:538 src\Sight.cpp:1120 +#: src\Sight.cpp.bak:1121 src\celestial_navigation_pi.cpp:95 +#: src\celestial_navigation_pi.cpp:99 +msgid "Celestial Navigation" +msgstr "Astronomik Seyir" + +#: src\CelestialNavigationDialog-2.3.5.1-no-android.cpp:391 +#: src\CelestialNavigationDialog-2.3.5.2-android.cpp:397 +#: src\CelestialNavigationDialog-partial-android.cpp:391 +#: src\CelestialNavigationDialog.cpp:397 +msgid "Failed to save xml file: " +msgstr "Xml dosyası kaydedilemedi: " + +#: src\CelestialNavigationDialog-2.3.5.1-no-android.cpp:424 +#: src\CelestialNavigationDialog-2.3.5.2-android.cpp:430 +#: src\CelestialNavigationDialog-partial-android.cpp:424 +#: src\CelestialNavigationDialog.cpp:430 +msgid "Time Correction" +msgstr "Zaman Düzeltmesi" + +#: src\CelestialNavigationDialog-2.3.5.1-no-android.cpp:473 +#: src\CelestialNavigationDialog-2.3.5.2-android.cpp:479 +#: src\CelestialNavigationDialog-partial-android.cpp:473 +#: src\CelestialNavigationDialog.cpp:479 +msgid "Sun" +msgstr "Güneş" + +#: src\CelestialNavigationDialog-2.3.5.1-no-android.cpp:531 +#: src\CelestialNavigationDialog-2.3.5.2-android.cpp:537 +#: src\CelestialNavigationDialog-partial-android.cpp:531 +#: src\CelestialNavigationDialog.cpp:537 +msgid "Are you sure you want to delete all sights?" +msgstr "Tüm gözlemleri silmek istediğinizden emin misiniz?" + +#: src\CelestialNavigationDialog-2.3.5.1-no-android.cpp:582 +#: src\CelestialNavigationDialog-2.3.5.2-android.cpp:588 +#: src\CelestialNavigationDialog-partial-android.cpp:582 +#: src\CelestialNavigationDialog.cpp:588 +msgid "Celestial_Navigation_Information.html" +msgstr "Astronomik_Seyir_Bilgisi.html" + +#: src\CelestialNavigationDialog-2.3.5.1-no-android.cpp:589 +#: src\CelestialNavigationDialog-2.3.5.2-android.cpp:595 +#: src\CelestialNavigationDialog-partial-android.cpp:589 +#: src\CelestialNavigationDialog.cpp:595 src\CelestialNavigationUI.cpp:55 +msgid "Hide" +msgstr "Gizle" + +#: src\CelestialNavigationDialog-2.3.5.1-no-android.cpp:589 +#: src\CelestialNavigationDialog-2.3.5.2-android.cpp:595 +#: src\CelestialNavigationDialog-partial-android.cpp:589 +#: src\CelestialNavigationDialog.cpp:595 +msgid "Show" +msgstr "Göster" + +#: src\CelestialNavigationUI.cpp:40 +msgid "New" +msgstr "Yeni" + +#: src\CelestialNavigationUI.cpp:43 src\CelestialNavigationUI.h:286 +msgid "Fix" +msgstr "Düzelt" + +#: src\CelestialNavigationUI.cpp:46 +msgid "Duplicate" +msgstr "" + +#: src\CelestialNavigationUI.cpp:49 +msgid "Clock Offset" +msgstr "Saat düzeltmesi" + +#: src\CelestialNavigationUI.cpp:52 +msgid "Edit" +msgstr "Düzenle" + +#: src\CelestialNavigationUI.cpp:58 +msgid "Delete" +msgstr "Sil" + +#: src\CelestialNavigationUI.cpp:61 +msgid "Information" +msgstr "Bilgilendirme" + +#: src\CelestialNavigationUI.cpp:64 +msgid "Delete All" +msgstr "Tümünü Sil" + +#: src\CelestialNavigationUI.cpp:141 src\CelestialNavigationUI.cpp:674 +#: src\Sight.h:49 +msgid "Altitude" +msgstr "Rakım" + +#: src\CelestialNavigationUI.cpp:141 src\CelestialNavigationUI.cpp:683 +#: src\Sight.h:49 +msgid "Azimuth" +msgstr "Azimut" + +#: src\CelestialNavigationUI.cpp:141 src\Sight.h:49 +msgid "Lunar" +msgstr "Ay" + +#: src\CelestialNavigationUI.cpp:147 +msgid "Magnetic Azimuth" +msgstr "Manyetik Azimut" + +#: src\CelestialNavigationUI.cpp:150 +msgid "Celestial Body" +msgstr "Gökcismi" + +#: src\CelestialNavigationUI.cpp:159 +msgid "Find" +msgstr "Bulmak" + +#: src\CelestialNavigationUI.cpp:162 +msgid "Limb" +msgstr "Bacak" + +#: src\CelestialNavigationUI.cpp:166 +msgid "Center" +msgstr "Ortada" + +#: src\CelestialNavigationUI.cpp:166 +msgid "Lower" +msgstr "Alçak" + +#: src\CelestialNavigationUI.cpp:166 +msgid "Upper" +msgstr "Üst" + +#: src\CelestialNavigationUI.cpp:191 src\CelestialNavigationUI.cpp:198 +#: src\CelestialNavigationUI.cpp:228 src\CelestialNavigationUI.cpp:235 +msgid "0" +msgstr "0" + +#: src\CelestialNavigationUI.cpp:194 src\CelestialNavigationUI.cpp:353 +#: src\CelestialNavigationUI.cpp:605 +msgid "Degrees" +msgstr "Derece" + +#: src\CelestialNavigationUI.cpp:201 src\CelestialNavigationUI.cpp:283 +#: src\CelestialNavigationUI.cpp:444 +msgid "Minutes" +msgstr "Dakika" + +#: src\CelestialNavigationUI.cpp:205 +msgid "10" +msgstr "10" + +#: src\CelestialNavigationUI.cpp:208 +msgid "Minutes Certainty" +msgstr "Dakika kesinliği" + +#: src\CelestialNavigationUI.cpp:222 +msgid "Lunar Altitude" +msgstr "Ay irtifası" + +#: src\CelestialNavigationUI.cpp:231 +msgid "Body Altitude" +msgstr "Gövde yüksekliği" + +#: src\CelestialNavigationUI.cpp:248 +msgid "Sight" +msgstr "Gözlem" + +#: src\CelestialNavigationUI.cpp:276 +msgid "Hours" +msgstr "Saatler" + +#: src\CelestialNavigationUI.cpp:290 src\CelestialNavigationUI.cpp:308 +#: src\CelestialNavigationUI.cpp:869 +msgid "Seconds" +msgstr "Saniyeler" + +#: src\CelestialNavigationUI.cpp:298 +msgid "Certainty" +msgstr "Kesinlik" + +#: src\CelestialNavigationUI.cpp:335 src\CelestialNavigationUI.cpp:587 +msgid "Distance" +msgstr "Mesafe" + +#: src\CelestialNavigationUI.cpp:342 src\CelestialNavigationUI.cpp:594 +msgid "Nm" +msgstr "Nm" + +#: src\CelestialNavigationUI.cpp:346 src\CelestialNavigationUI.cpp:598 +msgid "Bearing" +msgstr "Kerteriz" + +#: src\CelestialNavigationUI.cpp:357 src\CelestialNavigationUI.cpp:609 +msgid "Magnetic Bearing" +msgstr "Manyetik kerteriz" + +#: src\CelestialNavigationUI.cpp:364 +msgid "DR Shift" +msgstr "DR Değiştirme" + +#: src\CelestialNavigationUI.cpp:371 +msgid "Transparency" +msgstr "Saydamlık" + +#: src\CelestialNavigationUI.cpp:392 +msgid "Config" +msgstr "Yapılandır" + +#: src\CelestialNavigationUI.cpp:404 +msgid "Eye Height" +msgstr "Göz yüksekliği" + +#: src\CelestialNavigationUI.cpp:408 +msgid "2" +msgstr "2" + +#: src\CelestialNavigationUI.cpp:411 +msgid "Meters" +msgstr "Metre" + +#: src\CelestialNavigationUI.cpp:415 +msgid "Temperature" +msgstr "Sıcaklık" + +#: src\CelestialNavigationUI.cpp:422 +msgid "Celcius" +msgstr "Celcius" + +#: src\CelestialNavigationUI.cpp:426 +msgid "Pressure" +msgstr "Basınç" + +#: src\CelestialNavigationUI.cpp:433 +msgid "MilliBars" +msgstr "MiliBar" + +#: src\CelestialNavigationUI.cpp:437 +msgid "Index Error" +msgstr "Ayna hatası" + +#: src\CelestialNavigationUI.cpp:451 +msgid "Set As Defaults" +msgstr "Varsayılan olarak ata" + +#: src\CelestialNavigationUI.cpp:458 +msgid "Parameters" +msgstr "Değişkenler" + +#: src\CelestialNavigationUI.cpp:474 +msgid "Calculations" +msgstr "Hesaplamalar" + +#: src\CelestialNavigationUI.cpp:578 +msgid "Shift all visible Sights" +msgstr "Görünürdeki tüm yerleri kaydır" + +#: src\CelestialNavigationUI.cpp:656 src\CelestialNavigationUI.cpp:769 +msgid "Latitude" +msgstr "Enlem" + +#: src\CelestialNavigationUI.cpp:665 src\CelestialNavigationUI.cpp:777 +msgid "Longitude" +msgstr "Boylam" + +#: src\CelestialNavigationUI.cpp:691 +msgid "Boat Position" +msgstr "" + +#: src\CelestialNavigationUI.cpp:695 +msgid "Magnetic" +msgstr "Manyetik" + +#: src\CelestialNavigationUI.cpp:698 +msgid "Done" +msgstr "Tamam" + +#: src\CelestialNavigationUI.cpp:762 +msgid "Fix From Visible Sights" +msgstr "Görünür görüntüleri düzeltmek" + +#: src\CelestialNavigationUI.cpp:773 +msgid " N/A " +msgstr " Bulunamadı " + +#: src\CelestialNavigationUI.cpp:781 +msgid " N/A " +msgstr " N/A " + +#: src\CelestialNavigationUI.cpp:785 +msgid "Error" +msgstr "Hata" + +#: src\CelestialNavigationUI.cpp:789 +msgid " N/A " +msgstr " N/A " + +#: src\CelestialNavigationUI.cpp:796 src\CelestialNavigationUI.cpp:803 +msgid "Initial" +msgstr "İlk" + +#: src\CelestialNavigationUI.cpp:810 +msgid "Alg" +msgstr "Alg" + +#: src\CelestialNavigationUI.cpp:815 +msgid "Plane" +msgstr "Düzlem" + +#: src\CelestialNavigationUI.cpp:816 +msgid "Sphere" +msgstr "Küre" + +#: src\CelestialNavigationUI.cpp:817 +msgid "Cone" +msgstr "Koni" + +#: src\CelestialNavigationUI.cpp:818 +msgid "Cone 2" +msgstr "Koni 2" + +#: src\CelestialNavigationUI.cpp:822 +msgid "Go" +msgstr "Git" + +#: src\CelestialNavigationUI.cpp:859 src\CelestialNavigationUI.h:308 +msgid "Clock Correction" +msgstr "Saat düzeltmesi" + +#: src\CelestialNavigationUI.h:82 +msgid "Celestial Navigation Sights" +msgstr "Astronomik Seyir Gözlemleri" + +#: src\CelestialNavigationUI.h:173 +msgid "Sight Properties" +msgstr "Gözlem özellikleri" + +#: src\CelestialNavigationUI.h:204 +msgid "Dead Reckoning shift" +msgstr "DR mevki değişimi" + +#: src\CelestialNavigationUI.h:232 +msgid "Find Celestial Body" +msgstr "Gökcismi bulmak" + +#: src\FixDialog.cpp:192 +msgid "Shifted sights are not used to compute a fix, determine fix visually instead.\n" +msgstr "Yer değiştirmiş yerler, bir düzeltmeyi hesaplamak için yerine düzeltmeyi belirlemek için kullanılmaz.\n" + +#: src\FixDialog.cpp:193 +msgid "Fix Position" +msgstr "Pozisyon düzeltmek" + +#: src\FixDialog.cpp:338 src\FixDialog.cpp:339 src\FixDialog.cpp:340 +msgid " N/A " +msgstr " N/A " + +#: src\Sight.cpp:172 src\Sight.cpp.bak:173 +msgid "Astrolab failed, data unavailable:\n" +msgstr "Astrolab başarısız oldu, veri kullanılamaz: \n" + +#: src\Sight.cpp:173 src\Sight.cpp.bak:174 +msgid "\n" +"Did you forget to install vsop87d.txt?\n" +msgstr "\n" +"Vsop87d.txt dosyasını yüklemeyi mi unuttunuz?\n" + +#: src\Sight.cpp:174 src\Sight.cpp.bak:175 +msgid "The plugin will not work correctly" +msgstr "Eklenti düzgün çalışmayacak" + +#: src\Sight.cpp:175 src\Sight.cpp.bak:176 +msgid "Failure Alert" +msgstr "Arıza Uyarısı" + +#: src\Sight.cpp:495 src\Sight.cpp.bak:496 +#, c-format +msgid "Applying clock correction of %d seconds\n\n" +msgstr "Saate %d saniye düzeltmesi uygulanıyor\n\n" + +#: src\Sight.cpp:557 src\Sight.cpp.bak:558 +msgid "Almanac Data For " +msgstr "Almanak Verileri için " + +#: src\Sight.cpp:558 src\Sight.cpp.bak:559 +#, c-format +msgid "\n" +"Geographical Position (lat, lon) = %.4f %.4f\n" +"GHAAST = %.0f %.1f'\n" +"SHA = %.0f %.1f'\n" +"GHA = %.0f %.1f'\n" +"Dec = %c %.0f %.1f'\n" +"SD = %.1f'\n" +"HP = %.1f'\n\n" +msgstr "\n" +"Coğrafi Pozisyon(enlem, boylam) = %.4f%.4f'\n" +"Greenwich Saat Açısı AST(Ghaast) = %.0f%.1f'\n" +"Yıldızsal Saat Açısı(Sha) = %.0f%.1f'\n" +"Greenwich Saat Açısı(Gha)=%.0f%.1f'\n" +"Deklinasyon =%c%.0f%.1f\n" +"Yarıçap = %.1f'\n" +"Yatay Paralaks =%.1f'\n\n" + +#: src\Sight.cpp:573 src\Sight.cpp:711 src\Sight.cpp.bak:574 +#: src\Sight.cpp.bak:712 +msgid "Formulas used to calculate sight\n\n" +msgstr "Gözlemi hesaplamak için kullanılan formüller\n\n" + +#: src\Sight.cpp:577 src\Sight.cpp:715 src\Sight.cpp.bak:578 +#: src\Sight.cpp.bak:716 +#, c-format +msgid "Index Error is %.4f degrees\n\n" +msgstr "İndeks Hatası %.4f derece\n\n" + +#: src\Sight.cpp:582 src\Sight.cpp:720 src\Sight.cpp.bak:583 +#: src\Sight.cpp.bak:721 +#, c-format +msgid "Eye Height is %.4f meters\n" +"Height Correction Degrees = 1.758*sqrt(%.4f) / 60.0\n" +"Height Correction Degrees = %.4f\n" +msgstr "Göz Yüksekliği %.4f metre\n" +"Yükseklik Düzeltme Derecesi = 1.758*sqrt(%.4f)/60.0\n" +"Yükseklik Düzeltme Derecesi= %.4f\n" + +#: src\Sight.cpp:589 src\Sight.cpp:799 src\Sight.cpp.bak:590 +#: src\Sight.cpp.bak:800 +#, c-format +msgid "\n" +"Apparent Altitude (Ha)\n" +"ApparentAltitude = Measurement - IndexCorrection - EyeHeightCorrection\n" +"ApparentAltitude = %.4f - %.4f - %.4f\n" +"ApparentAltitude = %.4f\n" +msgstr "\n" +"Gözüken Yükseklik(Ha)\n" +"GözükenYükseklik = Ölçüm - İndeksDüzeltme-GözselYükseklikDüzeltme\n" +"GözükenYükseklik = %.4f - %.4f - %.4f\n" +"GözükenYükseklik = %.4f\n" + +#: src\Sight.cpp:607 src\Sight.cpp:810 src\Sight.cpp.bak:608 +#: src\Sight.cpp.bak:811 +#, c-format +msgid "\n" +"Refraction Correction\n" +"x = tan(Pi/180*ApparentAltitude + 4.848e-2*(Pi/180) / (tan(Pi/180*ApparentAltitude) + .028))\n" +"x = tan(Pi/180*%.4f + 4.848e-2*(Pi/180) / (tan(Pi/180*%.4f) + .028))\n" +"x = %.4f\n" +msgstr "\n" +"Yeniden Kırılma Düzeltimi\n" +"x = tan(Pi/180*GözükenYükseklik + 4.848e-2*(Pi/180) / (tan(Pi/180*GözükenYükseklik) + .028))\n" +"x = tan(Pi/180*%.4f + 4.848e-2*(Pi/180) / (tan(Pi/180*%.4f) + .028))\n" +"x = %.4f\n" + +#: src\Sight.cpp:612 src\Sight.cpp:815 src\Sight.cpp.bak:613 +#: src\Sight.cpp.bak:816 +#, c-format +msgid "RefractionCorrection = .267 * Pressure / (x*(Temperature + 273.15)) / 60.0\n" +"RefractionCorrection = .267 * %.4f / (x*(%.4f + 273.15)) / 60.0\n" +"RefractionCorrection = %.4f\n" +msgstr "Yeniden Kırılma Düzeltimi = .267 * Basınç / (x*(Sıcaklık + 273.15)) / 60.0\n" +"Yeniden Kırılım Düzeltimi = .267 * %.4f / (x*(%.4f + 273.15)) / 60.0\n" +"RefractionCorrection = %.4f\n" + +#: src\Sight.cpp:627 src\Sight.cpp:829 src\Sight.cpp.bak:628 +#: src\Sight.cpp.bak:830 +#, c-format +msgid "\n" +"Sun selected, Limb Correction\n" +"ra = %.4f, lc = 0.266564/ra = %.4f\n" +msgstr "\n" +"Güneş seçili,Uzuvsal Düzeltme\n" +"ra=%.4f,Ic = 0.266564/ra = %.4f\n" + +#: src\Sight.cpp:637 src\Sight.cpp:753 src\Sight.cpp.bak:638 +#: src\Sight.cpp.bak:754 +#, c-format +msgid "\n" +"Moon selected, Limb Correction\n" +"SD = %.4f\n" +"lc = 180/Pi * asin(Pi/180*SD)\n" +"lc = %.4f\n" +msgstr "\n" +"Ay seçili, Uzuvsal Düzeltme\n" +"SD = %.4f\n" +"lc = 180/Pi * asin(Pi/180*SD)\n" +"lc = %.4f\n" + +#: src\Sight.cpp:647 src\Sight.cpp:762 src\Sight.cpp:837 src\Sight.cpp.bak:648 +#: src\Sight.cpp.bak:763 src\Sight.cpp.bak:838 +msgid "Upper Limb" +msgstr "Üst uzuv, Göksel cismin ya da bedenin ufuktan en uzak kenarı" + +#: src\Sight.cpp:650 src\Sight.cpp:765 src\Sight.cpp:840 src\Sight.cpp.bak:651 +#: src\Sight.cpp.bak:766 src\Sight.cpp.bak:841 +msgid "Lower Limb" +msgstr "Alt kenar, Göksel cismin ya da bedenin ufka en yakın kenarı" + +#: src\Sight.cpp:653 src\Sight.cpp:843 src\Sight.cpp.bak:654 +#: src\Sight.cpp.bak:844 +#, c-format +msgid "\n" +"LimbCorrection = %.4f\n" +msgstr "\n" +"UzuvsalDüzeltme = %.4f\n" + +#: src\Sight.cpp:657 src\Sight.cpp:847 src\Sight.cpp.bak:658 +#: src\Sight.cpp.bak:848 +#, c-format +msgid "\n" +"Corrected Altitude\n" +"CorrectedAltitude = ApparentAltitude - RefractionCorrection - LimbCorrection\n" +"CorrectedAltitude = %.4f - %.4f - %.4f\n" +"CorrectedAltitude = %.4f\n" +msgstr "\n" +"Düzeltilmiş Yüseklik\n" +"DüzeltilmişYükseklik = GözükenYükseklik - KırılımsalDüzeltme - UzuvsalDüzeltme\n" +"DüzeltilmişYükseklik = %.4f - %.4f - %.4f\n" +"DüzeltilmişYükseklik = %.4f\n" + +#: src\Sight.cpp:671 src\Sight.cpp:861 src\Sight.cpp.bak:672 +#: src\Sight.cpp.bak:862 +#, c-format +msgid "\n" +"Sun selected, parallax correction\n" +"rad = %.4f, HP = 0.002442/rad = %.4f\n" +msgstr "\n" +"Güneş seçili, paralaks düzeltimi\n" +"rad=%.4f, HP = 0.002442/rad = %.4f\n" + +#: src\Sight.cpp:680 src\Sight.cpp:785 src\Sight.cpp.bak:681 +#: src\Sight.cpp.bak:786 +#, c-format +msgid "\n" +"Moon selected, parallax correction\n" +"HP = %.4f\n" +msgstr "\n" +"Ay seçili, paralaks düzeltimi\n" +"HP = %.4f\n" + +#: src\Sight.cpp:686 src\Sight.cpp:867 src\Sight.cpp.bak:687 +#: src\Sight.cpp.bak:868 +#, c-format +msgid "ParallaxCorrection = -180/Pi * asin( sin(Pi/180 * HP ) * cos(Pi/180 * CorrectedAltitude))\n" +"ParallaxCorrection = -180/Pi * asin( sin(Pi/180 * %.4f ) * cos(Pi/180 * %.4f))\n" +"ParallaxCorrection = %.4f\n" +msgstr "ParallaxCorrection = -180/Pi * asin( sin(Pi/180 * HP ) * cos(Pi/180 * CorrectedAltitude))\n" +"ParallaxCorrection = -180/Pi * asin( sin(Pi/180 * %.4f ) * cos(Pi/180 * %.4f))\n" +"ParallaxCorrection = %.4f\n" + +#: src\Sight.cpp:693 src\Sight.cpp.bak:694 +#, c-format +msgid "\n" +"Observed Altitude (Ho)\n" +"ObservedAltitude = CorrectedAltitude - ParallaxCorrection\n" +"ObservedAltitude = %.4f - %.4f\n" +"ObservedAltitude = %.4f\n" +msgstr "\n" +"Observed irtifa (Ho) \n" +"ObservedAltitude CorrectedAltitude - ParallaxCorrection\n" +"ObservedAltitude = %.4f - %.4f\n" +"ObservedAltitude = %.4f\n" + +#: src\Sight.cpp:727 src\Sight.cpp.bak:728 +#, c-format +msgid "\n" +"Apparent Moon Altitude (Ha)\n" +"ApparentAltitudeMoon = MeasurementMoon - IndexCorrection - EyeHeightCorrection\n" +"ApparentAltitudeMoon = %.4f - %.4f - %.4f\n" +"ApparentAltitudeMoon = %.4f\n" +msgstr "" + +#: src\Sight.cpp:738 src\Sight.cpp.bak:739 +#, c-format +msgid "\n" +"Refraction Correction\n" +"x = tan(Pi/180*ApparentAltitudeMoon + 4.848e-2*(Pi/180) / (tan(Pi/180*ApparentAltitudeMoon) + .028))\n" +"x = tan(Pi/180*%.4f + 4.848e-2*(Pi/180) / (tan(Pi/180*%.4f) + .028))\n" +"x = %.4f\n" +msgstr "\n" +"Yeniden Kırılma Düzeltimi\n" +"x = tan(Pi/180*GözükenYükseklik + 4.848e-2*(Pi/180) / (tan(Pi/180*GözükenYükseklik) + .028))\n" +"x = tan(Pi/180*%.4f + 4.848e-2*(Pi/180) / (tan(Pi/180*%.4f) + .028))\n" +"x = %.4f\n" + +#: src\Sight.cpp:743 src\Sight.cpp.bak:744 +#, c-format +msgid "RefractionCorrectionMoon = .267 * Pressure / (x*(Temperature + 273.15)) / 60.0\n" +"RefractionCorrectionMoon = .267 * %.4f / (x*(%.4f + 273.15)) / 60.0\n" +"RefractionCorrectionMoon = %.4f\n" +msgstr "Yeniden Kırılma Düzeltimi = .267 * Basınç / (x*(Sıcaklık + 273.15)) / 60.0\n" +"Yeniden Kırılım Düzeltimi = .267 * %.4f / (x*(%.4f + 273.15)) / 60.0\n" +"RefractionCorrection = %.4f\n" + +#: src\Sight.cpp:768 src\Sight.cpp:771 src\Sight.cpp.bak:769 +#: src\Sight.cpp.bak:772 +#, c-format +msgid "\n" +"LimbCorrectionMoon = %.4f\n" +msgstr "\n" +"UzuvsalDüzeltme = %.4f\n" + +#: src\Sight.cpp:774 src\Sight.cpp.bak:775 +#, c-format +msgid "\n" +"Corrected Altitude\n" +"CorrectedAltitudeMoon = ApparentAltitudeMoon - RefractionCorrectionMoon - LimbCorrectionMoon\n" +"CorrectedAltitudeMoon = %.4f - %.4f - %.4f\n" +"CorrectedAltitudeMoon = %.4f\n" +msgstr "\n" +"Düzeltilmiş Yüseklik\n" +"DüzeltilmişYükseklik = GözükenYükseklik - KırılımsalDüzeltme - UzuvsalDüzeltme\n" +"DüzeltilmişYükseklik = %.4f - %.4f - %.4f\n" +"DüzeltilmişYükseklik = %.4f\n" + +#: src\Sight.cpp:789 src\Sight.cpp.bak:790 +#, c-format +msgid "ParallaxCorrectionMoon = -180/Pi * asin( sin(Pi/180 * HP ) * cos(Pi/180 * CorrectedAltitude))\n" +"ParallaxCorrectionMoon = -180/Pi * asin( sin(Pi/180 * %.4f ) * cos(Pi/180 * %.4f))\n" +"ParallaxCorrectionMoon = %.4f\n" +msgstr "" + +#: src\Sight.cpp:878 src\Sight.cpp.bak:879 +#, c-format +msgid "CorrectionsMoon = %.4f\n" +"CorrectionsBody = %.4f\n" +"Corrections = abs(CorrectionsMoon - CorrectionsBody) = %.4f\n" +msgstr "CorrectionsMoon = %.4f\n" +"CorrectionsBody = %.4f\n" +"Corrections = abs(CorrectionsMoon - CorrectionsBody) = %.4f\n" + +#: src\Sight.cpp:884 src\Sight.cpp.bak:885 +#, c-format +msgid "CorrectedMeasurement = Measurement - Corrections - IndexCorrection\n" +"CorrectedMeasurement = %.4f - %.4f - %.4f\n" +"CorrectedMeasurement = %.4f\n" +msgstr "CorrectedMeasurement = Measurement - Corrections - IndexCorrection\n" +"CorrectedMeasurement = %.4f - %.4f - %.4f\n" +"CorrectedMeasurement = %.4f\n" + +#: src\Sight.cpp:909 src\Sight.cpp.bak:910 +msgid "\n" +"Calculated angle between Moon and " +msgstr "\n" +"Ay ile arasındaki hesaplanmış açı " + +#: src\Sight.cpp:911 src\Sight.cpp.bak:912 +#, c-format +msgid "\n" +"Error from measurement: %.4f" +msgstr "\n" +"Ölçüm hatası:%.4f" + +#: src\Sight.cpp:915 src\Sight.cpp.bak:916 +msgid "\n" +"Moon takes 28 days to orbit, one degree of error takes 6720 seconds" +msgstr "\n" +"Ayın yörüngesini tamamlayışı 28 gün sürer, 1 derecelik hata 6720 saniye demektir" + +#: src\Sight.cpp:916 src\Sight.cpp.bak:917 +#, c-format +msgid "\n" +"Time correction %.4f seconds" +msgstr "\n" +"Zamansal Düzeltim %.4f saniye" + +#: src\Sight.cpp:1120 src\Sight.cpp.bak:1121 +msgid "Building bearing Sight Positions" +msgstr "Bina taşıyan Görüş Pozisyonları" + +#: src\SightDialog.cpp:184 +msgid "Measurement certainty likely set to small, sight may not appear " +msgstr "Ölçüm kesinliği büyük olasılıkla küçük ayarlanmış, görme görünmeyebilir " + +#: src\SightDialog.cpp:185 src\SightDialog.cpp:279 +msgid "Warning" +msgstr "Uyarı" + +#: src\SightDialog.cpp:278 +msgid "Lunar shot will be invalid taking distance from moon to itself" +msgstr "Ay atışı Ay'ı kendisini geçersiz alarak hesaplar" + +#: src\celestial_navigation_pi.cpp:179 +msgid "open error" +msgstr "" + +#: src\celestial_navigation_pi.cpp:180 +msgid "corrupt record" +msgstr "" + +#: src\celestial_navigation_pi.cpp:181 +msgid "too many models" +msgstr "" + +#: src\celestial_navigation_pi.cpp:184 +msgid "Magnetic data will not be available for the celestial navigation plugin." +msgstr "" + +#: src\celestial_navigation_pi.cpp:185 +msgid "OpenCPN Alert" +msgstr "OpenCPN Alarmı" + diff --git a/po/vi_VN.po b/po/vi_VN.po index 21030e2..b8cacc1 100644 --- a/po/vi_VN.po +++ b/po/vi_VN.po @@ -2,403 +2,467 @@ msgid "" msgstr "" "Project-Id-Version: opencpn\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-02-28 14:10-0300\n" -"PO-Revision-Date: 2018-03-03 08:26-0500\n" -"Last-Translator: nohal \n" +"POT-Creation-Date: 2021-10-27 22:15+0200\n" +"PO-Revision-Date: 2023-10-04 18:33\n" +"Last-Translator: \n" "Language-Team: Vietnamese\n" "Language: vi_VN\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=1; plural=0;\n" -"X-Generator: crowdin.com\n" "X-Crowdin-Project: opencpn\n" +"X-Crowdin-Project-ID: 49843\n" "X-Crowdin-Language: vi\n" "X-Crowdin-File: /plugins/celestial_navigation_pi/po/celestial_navigation_pi.pot\n" +"X-Crowdin-File-ID: 108\n" -#: src/CelestialNavigationDialog.cpp:123 src/CelestialNavigationUI.cpp:132 +#: src\CelestialNavigationDialog-2.3.5.1-no-android.cpp:149 +#: src\CelestialNavigationDialog-2.3.5.2-android.cpp:150 +#: src\CelestialNavigationDialog-partial-android.cpp:149 +#: src\CelestialNavigationDialog.cpp:150 src\CelestialNavigationUI.cpp:137 msgid "Type" msgstr "" -#: src/CelestialNavigationDialog.cpp:124 +#: src\CelestialNavigationDialog-2.3.5.1-no-android.cpp:150 +#: src\CelestialNavigationDialog-2.3.5.2-android.cpp:151 +#: src\CelestialNavigationDialog-partial-android.cpp:150 +#: src\CelestialNavigationDialog.cpp:151 msgid "Body" msgstr "" -#: src/CelestialNavigationDialog.cpp:125 -msgid "Time (UTC)" +#: src\CelestialNavigationDialog-2.3.5.1-no-android.cpp:151 +#: src\CelestialNavigationDialog-2.3.5.2-android.cpp:152 +#: src\CelestialNavigationDialog-partial-android.cpp:151 +#: src\CelestialNavigationDialog.cpp:152 src\CelestialNavigationUI.cpp:328 +msgid "Time (UT)" msgstr "" -#: src/CelestialNavigationDialog.cpp:126 src/CelestialNavigationUI.cpp:179 +#: src\CelestialNavigationDialog-2.3.5.1-no-android.cpp:152 +#: src\CelestialNavigationDialog-2.3.5.2-android.cpp:153 +#: src\CelestialNavigationDialog-partial-android.cpp:152 +#: src\CelestialNavigationDialog.cpp:153 src\CelestialNavigationUI.cpp:184 msgid "Measurement" msgstr "" -#: src/CelestialNavigationDialog.cpp:127 src/CelestialNavigationUI.cpp:376 +#: src\CelestialNavigationDialog-2.3.5.1-no-android.cpp:153 +#: src\CelestialNavigationDialog-2.3.5.2-android.cpp:154 +#: src\CelestialNavigationDialog-partial-android.cpp:153 +#: src\CelestialNavigationDialog.cpp:154 src\CelestialNavigationUI.cpp:381 msgid "Color" msgstr "" -#: src/CelestialNavigationDialog.cpp:193 -msgid "Failed to load file." +#: src\CelestialNavigationDialog-2.3.5.1-no-android.cpp:266 +#: src\CelestialNavigationDialog-2.3.5.2-android.cpp:272 +#: src\CelestialNavigationDialog-partial-android.cpp:266 +#: src\CelestialNavigationDialog.cpp:272 src\celestial_navigation_pi.cpp:177 +msgid "Failed to load file: " msgstr "" -#: src/CelestialNavigationDialog.cpp:198 +#: src\CelestialNavigationDialog-2.3.5.1-no-android.cpp:271 +#: src\CelestialNavigationDialog-2.3.5.2-android.cpp:277 +#: src\CelestialNavigationDialog-partial-android.cpp:271 +#: src\CelestialNavigationDialog.cpp:277 msgid "Invalid xml file" msgstr "" -#: src/CelestialNavigationDialog.cpp:250 +#: src\CelestialNavigationDialog-2.3.5.1-no-android.cpp:323 +#: src\CelestialNavigationDialog-2.3.5.2-android.cpp:329 +#: src\CelestialNavigationDialog-partial-android.cpp:323 +#: src\CelestialNavigationDialog.cpp:329 msgid "Unrecognized xml node" msgstr "" -#: src/CelestialNavigationDialog.cpp:260 -msgid "Weather Routing" +#: src\CelestialNavigationDialog-2.3.5.1-no-android.cpp:332 +#: src\CelestialNavigationDialog-2.3.5.1-no-android.cpp:392 +#: src\CelestialNavigationDialog-2.3.5.1-no-android.cpp:532 +#: src\CelestialNavigationDialog-2.3.5.2-android.cpp:338 +#: src\CelestialNavigationDialog-2.3.5.2-android.cpp:398 +#: src\CelestialNavigationDialog-2.3.5.2-android.cpp:538 +#: src\CelestialNavigationDialog-partial-android.cpp:332 +#: src\CelestialNavigationDialog-partial-android.cpp:392 +#: src\CelestialNavigationDialog-partial-android.cpp:532 +#: src\CelestialNavigationDialog.cpp:338 src\CelestialNavigationDialog.cpp:398 +#: src\CelestialNavigationDialog.cpp:538 src\Sight.cpp:1120 +#: src\Sight.cpp.bak:1121 src\celestial_navigation_pi.cpp:95 +#: src\celestial_navigation_pi.cpp:99 +msgid "Celestial Navigation" msgstr "" -#: src/CelestialNavigationDialog.cpp:320 +#: src\CelestialNavigationDialog-2.3.5.1-no-android.cpp:391 +#: src\CelestialNavigationDialog-2.3.5.2-android.cpp:397 +#: src\CelestialNavigationDialog-partial-android.cpp:391 +#: src\CelestialNavigationDialog.cpp:397 msgid "Failed to save xml file: " msgstr "" -#: src/CelestialNavigationDialog.cpp:321 src/CelestialNavigationDialog.cpp:466 -#: src/Sight.cpp:1099 src/celestial_navigation_pi.cpp:99 -#: src/celestial_navigation_pi.cpp:152 -msgid "Celestial Navigation" -msgstr "" - -#: src/CelestialNavigationDialog.cpp:351 +#: src\CelestialNavigationDialog-2.3.5.1-no-android.cpp:424 +#: src\CelestialNavigationDialog-2.3.5.2-android.cpp:430 +#: src\CelestialNavigationDialog-partial-android.cpp:424 +#: src\CelestialNavigationDialog.cpp:430 msgid "Time Correction" msgstr "" -#: src/CelestialNavigationDialog.cpp:409 +#: src\CelestialNavigationDialog-2.3.5.1-no-android.cpp:473 +#: src\CelestialNavigationDialog-2.3.5.2-android.cpp:479 +#: src\CelestialNavigationDialog-partial-android.cpp:473 +#: src\CelestialNavigationDialog.cpp:479 msgid "Sun" msgstr "" -#: src/CelestialNavigationDialog.cpp:465 +#: src\CelestialNavigationDialog-2.3.5.1-no-android.cpp:531 +#: src\CelestialNavigationDialog-2.3.5.2-android.cpp:537 +#: src\CelestialNavigationDialog-partial-android.cpp:531 +#: src\CelestialNavigationDialog.cpp:537 msgid "Are you sure you want to delete all sights?" msgstr "" -#: src/CelestialNavigationDialog.cpp:510 +#: src\CelestialNavigationDialog-2.3.5.1-no-android.cpp:582 +#: src\CelestialNavigationDialog-2.3.5.2-android.cpp:588 +#: src\CelestialNavigationDialog-partial-android.cpp:582 +#: src\CelestialNavigationDialog.cpp:588 msgid "Celestial_Navigation_Information.html" msgstr "" -#: src/CelestialNavigationDialog.cpp:516 -msgid "Show" +#: src\CelestialNavigationDialog-2.3.5.1-no-android.cpp:589 +#: src\CelestialNavigationDialog-2.3.5.2-android.cpp:595 +#: src\CelestialNavigationDialog-partial-android.cpp:589 +#: src\CelestialNavigationDialog.cpp:595 src\CelestialNavigationUI.cpp:55 +msgid "Hide" msgstr "" -#: src/CelestialNavigationDialog.cpp:516 src/CelestialNavigationUI.cpp:58 -msgid "Hide" +#: src\CelestialNavigationDialog-2.3.5.1-no-android.cpp:589 +#: src\CelestialNavigationDialog-2.3.5.2-android.cpp:595 +#: src\CelestialNavigationDialog-partial-android.cpp:589 +#: src\CelestialNavigationDialog.cpp:595 +msgid "Show" msgstr "" -#: src/CelestialNavigationUI.cpp:40 +#: src\CelestialNavigationUI.cpp:40 msgid "New" msgstr "" -#: src/CelestialNavigationUI.cpp:43 -msgid "Edit" +#: src\CelestialNavigationUI.cpp:43 src\CelestialNavigationUI.h:286 +msgid "Fix" msgstr "" -#: src/CelestialNavigationUI.cpp:46 -msgid "Delete" +#: src\CelestialNavigationUI.cpp:46 +msgid "Duplicate" msgstr "" -#: src/CelestialNavigationUI.cpp:49 -msgid "Delete All" +#: src\CelestialNavigationUI.cpp:49 +msgid "Clock Offset" msgstr "" -#: src/CelestialNavigationUI.cpp:52 src/CelestialNavigationUI.h:281 -msgid "Fix" +#: src\CelestialNavigationUI.cpp:52 +msgid "Edit" msgstr "" -#: src/CelestialNavigationUI.cpp:55 -msgid "Clock Offset" +#: src\CelestialNavigationUI.cpp:58 +msgid "Delete" msgstr "" -#: src/CelestialNavigationUI.cpp:61 +#: src\CelestialNavigationUI.cpp:61 msgid "Information" msgstr "" -#: src/CelestialNavigationUI.cpp:136 src/CelestialNavigationUI.cpp:667 -#: src/Sight.h:49 +#: src\CelestialNavigationUI.cpp:64 +msgid "Delete All" +msgstr "" + +#: src\CelestialNavigationUI.cpp:141 src\CelestialNavigationUI.cpp:674 +#: src\Sight.h:49 msgid "Altitude" msgstr "" -#: src/CelestialNavigationUI.cpp:136 src/CelestialNavigationUI.cpp:677 -#: src/Sight.h:49 +#: src\CelestialNavigationUI.cpp:141 src\CelestialNavigationUI.cpp:683 +#: src\Sight.h:49 msgid "Azimuth" msgstr "" -#: src/CelestialNavigationUI.cpp:136 src/Sight.h:49 +#: src\CelestialNavigationUI.cpp:141 src\Sight.h:49 msgid "Lunar" msgstr "" -#: src/CelestialNavigationUI.cpp:142 +#: src\CelestialNavigationUI.cpp:147 msgid "Magnetic Azimuth" msgstr "" -#: src/CelestialNavigationUI.cpp:145 +#: src\CelestialNavigationUI.cpp:150 msgid "Celestial Body" msgstr "" -#: src/CelestialNavigationUI.cpp:154 +#: src\CelestialNavigationUI.cpp:159 msgid "Find" msgstr "" -#: src/CelestialNavigationUI.cpp:157 +#: src\CelestialNavigationUI.cpp:162 msgid "Limb" msgstr "" -#: src/CelestialNavigationUI.cpp:161 -msgid "Lower" +#: src\CelestialNavigationUI.cpp:166 +msgid "Center" msgstr "" -#: src/CelestialNavigationUI.cpp:161 -msgid "Center" +#: src\CelestialNavigationUI.cpp:166 +msgid "Lower" msgstr "" -#: src/CelestialNavigationUI.cpp:161 +#: src\CelestialNavigationUI.cpp:166 msgid "Upper" msgstr "" -#: src/CelestialNavigationUI.cpp:186 src/CelestialNavigationUI.cpp:193 -#: src/CelestialNavigationUI.cpp:223 src/CelestialNavigationUI.cpp:230 +#: src\CelestialNavigationUI.cpp:191 src\CelestialNavigationUI.cpp:198 +#: src\CelestialNavigationUI.cpp:228 src\CelestialNavigationUI.cpp:235 msgid "0" msgstr "" -#: src/CelestialNavigationUI.cpp:189 src/CelestialNavigationUI.cpp:348 -#: src/CelestialNavigationUI.cpp:598 +#: src\CelestialNavigationUI.cpp:194 src\CelestialNavigationUI.cpp:353 +#: src\CelestialNavigationUI.cpp:605 msgid "Degrees" msgstr "" -#: src/CelestialNavigationUI.cpp:196 src/CelestialNavigationUI.cpp:278 -#: src/CelestialNavigationUI.cpp:439 +#: src\CelestialNavigationUI.cpp:201 src\CelestialNavigationUI.cpp:283 +#: src\CelestialNavigationUI.cpp:444 msgid "Minutes" msgstr "" -#: src/CelestialNavigationUI.cpp:200 +#: src\CelestialNavigationUI.cpp:205 msgid "10" msgstr "" -#: src/CelestialNavigationUI.cpp:203 +#: src\CelestialNavigationUI.cpp:208 msgid "Minutes Certainty" msgstr "" -#: src/CelestialNavigationUI.cpp:217 +#: src\CelestialNavigationUI.cpp:222 msgid "Lunar Altitude" msgstr "" -#: src/CelestialNavigationUI.cpp:226 +#: src\CelestialNavigationUI.cpp:231 msgid "Body Altitude" msgstr "" -#: src/CelestialNavigationUI.cpp:243 +#: src\CelestialNavigationUI.cpp:248 msgid "Sight" msgstr "" -#: src/CelestialNavigationUI.cpp:271 +#: src\CelestialNavigationUI.cpp:276 msgid "Hours" msgstr "" -#: src/CelestialNavigationUI.cpp:285 src/CelestialNavigationUI.cpp:303 -#: src/CelestialNavigationUI.cpp:860 +#: src\CelestialNavigationUI.cpp:290 src\CelestialNavigationUI.cpp:308 +#: src\CelestialNavigationUI.cpp:869 msgid "Seconds" msgstr "" -#: src/CelestialNavigationUI.cpp:293 +#: src\CelestialNavigationUI.cpp:298 msgid "Certainty" msgstr "" -#: src/CelestialNavigationUI.cpp:323 -msgid "Time" -msgstr "" - -#: src/CelestialNavigationUI.cpp:330 src/CelestialNavigationUI.cpp:580 +#: src\CelestialNavigationUI.cpp:335 src\CelestialNavigationUI.cpp:587 msgid "Distance" msgstr "" -#: src/CelestialNavigationUI.cpp:337 src/CelestialNavigationUI.cpp:587 +#: src\CelestialNavigationUI.cpp:342 src\CelestialNavigationUI.cpp:594 msgid "Nm" msgstr "" -#: src/CelestialNavigationUI.cpp:341 src/CelestialNavigationUI.cpp:591 +#: src\CelestialNavigationUI.cpp:346 src\CelestialNavigationUI.cpp:598 msgid "Bearing" msgstr "" -#: src/CelestialNavigationUI.cpp:352 src/CelestialNavigationUI.cpp:602 +#: src\CelestialNavigationUI.cpp:357 src\CelestialNavigationUI.cpp:609 msgid "Magnetic Bearing" msgstr "" -#: src/CelestialNavigationUI.cpp:359 +#: src\CelestialNavigationUI.cpp:364 msgid "DR Shift" msgstr "" -#: src/CelestialNavigationUI.cpp:366 +#: src\CelestialNavigationUI.cpp:371 msgid "Transparency" msgstr "" -#: src/CelestialNavigationUI.cpp:387 +#: src\CelestialNavigationUI.cpp:392 msgid "Config" msgstr "" -#: src/CelestialNavigationUI.cpp:399 +#: src\CelestialNavigationUI.cpp:404 msgid "Eye Height" msgstr "" -#: src/CelestialNavigationUI.cpp:403 +#: src\CelestialNavigationUI.cpp:408 msgid "2" msgstr "" -#: src/CelestialNavigationUI.cpp:406 +#: src\CelestialNavigationUI.cpp:411 msgid "Meters" msgstr "" -#: src/CelestialNavigationUI.cpp:410 +#: src\CelestialNavigationUI.cpp:415 msgid "Temperature" msgstr "" -#: src/CelestialNavigationUI.cpp:417 +#: src\CelestialNavigationUI.cpp:422 msgid "Celcius" msgstr "" -#: src/CelestialNavigationUI.cpp:421 +#: src\CelestialNavigationUI.cpp:426 msgid "Pressure" msgstr "" -#: src/CelestialNavigationUI.cpp:428 +#: src\CelestialNavigationUI.cpp:433 msgid "MilliBars" msgstr "" -#: src/CelestialNavigationUI.cpp:432 +#: src\CelestialNavigationUI.cpp:437 msgid "Index Error" msgstr "" -#: src/CelestialNavigationUI.cpp:446 +#: src\CelestialNavigationUI.cpp:451 msgid "Set As Defaults" msgstr "" -#: src/CelestialNavigationUI.cpp:453 +#: src\CelestialNavigationUI.cpp:458 msgid "Parameters" msgstr "" -#: src/CelestialNavigationUI.cpp:469 +#: src\CelestialNavigationUI.cpp:474 msgid "Calculations" msgstr "" -#: src/CelestialNavigationUI.cpp:571 +#: src\CelestialNavigationUI.cpp:578 msgid "Shift all visible Sights" msgstr "" -#: src/CelestialNavigationUI.cpp:649 src/CelestialNavigationUI.cpp:760 +#: src\CelestialNavigationUI.cpp:656 src\CelestialNavigationUI.cpp:769 msgid "Latitude" msgstr "" -#: src/CelestialNavigationUI.cpp:658 src/CelestialNavigationUI.cpp:768 +#: src\CelestialNavigationUI.cpp:665 src\CelestialNavigationUI.cpp:777 msgid "Longitude" msgstr "" -#: src/CelestialNavigationUI.cpp:669 src/CelestialNavigationUI.cpp:679 -msgid "MyLabel" +#: src\CelestialNavigationUI.cpp:691 +msgid "Boat Position" msgstr "" -#: src/CelestialNavigationUI.cpp:686 -msgid "Done" +#: src\CelestialNavigationUI.cpp:695 +msgid "Magnetic" msgstr "" -#: src/CelestialNavigationUI.cpp:689 -msgid "Magnetic" +#: src\CelestialNavigationUI.cpp:698 +msgid "Done" msgstr "" -#: src/CelestialNavigationUI.cpp:753 +#: src\CelestialNavigationUI.cpp:762 msgid "Fix From Visible Sights" msgstr "" -#: src/CelestialNavigationUI.cpp:764 +#: src\CelestialNavigationUI.cpp:773 msgid " N/A " msgstr "" -#: src/CelestialNavigationUI.cpp:772 +#: src\CelestialNavigationUI.cpp:781 msgid " N/A " msgstr "" -#: src/CelestialNavigationUI.cpp:776 +#: src\CelestialNavigationUI.cpp:785 msgid "Error" msgstr "" -#: src/CelestialNavigationUI.cpp:780 +#: src\CelestialNavigationUI.cpp:789 msgid " N/A " msgstr "" -#: src/CelestialNavigationUI.cpp:787 src/CelestialNavigationUI.cpp:794 +#: src\CelestialNavigationUI.cpp:796 src\CelestialNavigationUI.cpp:803 msgid "Initial" msgstr "" -#: src/CelestialNavigationUI.cpp:801 +#: src\CelestialNavigationUI.cpp:810 msgid "Alg" msgstr "" -#: src/CelestialNavigationUI.cpp:806 +#: src\CelestialNavigationUI.cpp:815 msgid "Plane" msgstr "" -#: src/CelestialNavigationUI.cpp:807 +#: src\CelestialNavigationUI.cpp:816 msgid "Sphere" msgstr "" -#: src/CelestialNavigationUI.cpp:808 +#: src\CelestialNavigationUI.cpp:817 msgid "Cone" msgstr "" -#: src/CelestialNavigationUI.cpp:809 +#: src\CelestialNavigationUI.cpp:818 msgid "Cone 2" msgstr "" -#: src/CelestialNavigationUI.cpp:813 +#: src\CelestialNavigationUI.cpp:822 msgid "Go" msgstr "" -#: src/CelestialNavigationUI.cpp:850 src/CelestialNavigationUI.h:303 +#: src\CelestialNavigationUI.cpp:859 src\CelestialNavigationUI.h:308 msgid "Clock Correction" msgstr "" -#: src/CelestialNavigationUI.h:78 +#: src\CelestialNavigationUI.h:82 msgid "Celestial Navigation Sights" msgstr "" -#: src/CelestialNavigationUI.h:169 +#: src\CelestialNavigationUI.h:173 msgid "Sight Properties" msgstr "" -#: src/CelestialNavigationUI.h:200 +#: src\CelestialNavigationUI.h:204 msgid "Dead Reckoning shift" msgstr "" -#: src/CelestialNavigationUI.h:227 +#: src\CelestialNavigationUI.h:232 msgid "Find Celestial Body" msgstr "" -#: src/Sight.cpp:160 +#: src\FixDialog.cpp:192 +msgid "Shifted sights are not used to compute a fix, determine fix visually instead.\n" +msgstr "" + +#: src\FixDialog.cpp:193 +msgid "Fix Position" +msgstr "" + +#: src\FixDialog.cpp:338 src\FixDialog.cpp:339 src\FixDialog.cpp:340 +msgid " N/A " +msgstr "" + +#: src\Sight.cpp:172 src\Sight.cpp.bak:173 msgid "Astrolab failed, data unavailable:\n" msgstr "" -#: src/Sight.cpp:161 +#: src\Sight.cpp:173 src\Sight.cpp.bak:174 msgid "\n" "Did you forget to install vsop87d.txt?\n" msgstr "" -#: src/Sight.cpp:162 +#: src\Sight.cpp:174 src\Sight.cpp.bak:175 msgid "The plugin will not work correctly" msgstr "" -#: src/Sight.cpp:163 +#: src\Sight.cpp:175 src\Sight.cpp.bak:176 msgid "Failure Alert" msgstr "" -#: src/Sight.cpp:474 +#: src\Sight.cpp:495 src\Sight.cpp.bak:496 #, c-format msgid "Applying clock correction of %d seconds\n\n" msgstr "" -#: src/Sight.cpp:536 +#: src\Sight.cpp:557 src\Sight.cpp.bak:558 msgid "Almanac Data For " msgstr "" -#: src/Sight.cpp:537 +#: src\Sight.cpp:558 src\Sight.cpp.bak:559 #, c-format msgid "\n" "Geographical Position (lat, lon) = %.4f %.4f\n" @@ -410,23 +474,27 @@ msgid "\n" "HP = %.1f'\n\n" msgstr "" -#: src/Sight.cpp:552 src/Sight.cpp:690 +#: src\Sight.cpp:573 src\Sight.cpp:711 src\Sight.cpp.bak:574 +#: src\Sight.cpp.bak:712 msgid "Formulas used to calculate sight\n\n" msgstr "" -#: src/Sight.cpp:556 src/Sight.cpp:694 +#: src\Sight.cpp:577 src\Sight.cpp:715 src\Sight.cpp.bak:578 +#: src\Sight.cpp.bak:716 #, c-format msgid "Index Error is %.4f degrees\n\n" msgstr "" -#: src/Sight.cpp:561 src/Sight.cpp:699 +#: src\Sight.cpp:582 src\Sight.cpp:720 src\Sight.cpp.bak:583 +#: src\Sight.cpp.bak:721 #, c-format msgid "Eye Height is %.4f meters\n" "Height Correction Degrees = 1.758*sqrt(%.4f) / 60.0\n" "Height Correction Degrees = %.4f\n" msgstr "" -#: src/Sight.cpp:568 +#: src\Sight.cpp:589 src\Sight.cpp:799 src\Sight.cpp.bak:590 +#: src\Sight.cpp.bak:800 #, c-format msgid "\n" "Apparent Altitude (Ha)\n" @@ -435,7 +503,8 @@ msgid "\n" "ApparentAltitude = %.4f\n" msgstr "" -#: src/Sight.cpp:586 src/Sight.cpp:789 +#: src\Sight.cpp:607 src\Sight.cpp:810 src\Sight.cpp.bak:608 +#: src\Sight.cpp.bak:811 #, c-format msgid "\n" "Refraction Correction\n" @@ -444,21 +513,24 @@ msgid "\n" "x = %.4f\n" msgstr "" -#: src/Sight.cpp:591 src/Sight.cpp:794 +#: src\Sight.cpp:612 src\Sight.cpp:815 src\Sight.cpp.bak:613 +#: src\Sight.cpp.bak:816 #, c-format msgid "RefractionCorrection = .267 * Pressure / (x*(Temperature + 273.15)) / 60.0\n" "RefractionCorrection = .267 * %.4f / (x*(%.4f + 273.15)) / 60.0\n" "RefractionCorrection = %.4f\n" msgstr "" -#: src/Sight.cpp:606 src/Sight.cpp:808 +#: src\Sight.cpp:627 src\Sight.cpp:829 src\Sight.cpp.bak:628 +#: src\Sight.cpp.bak:830 #, c-format msgid "\n" "Sun selected, Limb Correction\n" "ra = %.4f, lc = 0.266564/ra = %.4f\n" msgstr "" -#: src/Sight.cpp:616 src/Sight.cpp:732 +#: src\Sight.cpp:637 src\Sight.cpp:753 src\Sight.cpp.bak:638 +#: src\Sight.cpp.bak:754 #, c-format msgid "\n" "Moon selected, Limb Correction\n" @@ -467,21 +539,25 @@ msgid "\n" "lc = %.4f\n" msgstr "" -#: src/Sight.cpp:626 src/Sight.cpp:741 src/Sight.cpp:816 +#: src\Sight.cpp:647 src\Sight.cpp:762 src\Sight.cpp:837 src\Sight.cpp.bak:648 +#: src\Sight.cpp.bak:763 src\Sight.cpp.bak:838 msgid "Upper Limb" msgstr "" -#: src/Sight.cpp:629 src/Sight.cpp:744 src/Sight.cpp:819 +#: src\Sight.cpp:650 src\Sight.cpp:765 src\Sight.cpp:840 src\Sight.cpp.bak:651 +#: src\Sight.cpp.bak:766 src\Sight.cpp.bak:841 msgid "Lower Limb" msgstr "" -#: src/Sight.cpp:632 src/Sight.cpp:822 +#: src\Sight.cpp:653 src\Sight.cpp:843 src\Sight.cpp.bak:654 +#: src\Sight.cpp.bak:844 #, c-format msgid "\n" "LimbCorrection = %.4f\n" msgstr "" -#: src/Sight.cpp:636 src/Sight.cpp:826 +#: src\Sight.cpp:657 src\Sight.cpp:847 src\Sight.cpp.bak:658 +#: src\Sight.cpp.bak:848 #, c-format msgid "\n" "Corrected Altitude\n" @@ -490,28 +566,31 @@ msgid "\n" "CorrectedAltitude = %.4f\n" msgstr "" -#: src/Sight.cpp:650 src/Sight.cpp:840 +#: src\Sight.cpp:671 src\Sight.cpp:861 src\Sight.cpp.bak:672 +#: src\Sight.cpp.bak:862 #, c-format msgid "\n" "Sun selected, parallax correction\n" "rad = %.4f, HP = 0.002442/rad = %.4f\n" msgstr "" -#: src/Sight.cpp:659 src/Sight.cpp:764 +#: src\Sight.cpp:680 src\Sight.cpp:785 src\Sight.cpp.bak:681 +#: src\Sight.cpp.bak:786 #, c-format msgid "\n" "Moon selected, parallax correction\n" "HP = %.4f\n" msgstr "" -#: src/Sight.cpp:665 src/Sight.cpp:846 +#: src\Sight.cpp:686 src\Sight.cpp:867 src\Sight.cpp.bak:687 +#: src\Sight.cpp.bak:868 #, c-format msgid "ParallaxCorrection = -180/Pi * asin( sin(Pi/180 * HP ) * cos(Pi/180 * CorrectedAltitude))\n" "ParallaxCorrection = -180/Pi * asin( sin(Pi/180 * %.4f ) * cos(Pi/180 * %.4f))\n" "ParallaxCorrection = %.4f\n" msgstr "" -#: src/Sight.cpp:672 +#: src\Sight.cpp:693 src\Sight.cpp.bak:694 #, c-format msgid "\n" "Observed Altitude (Ho)\n" @@ -520,16 +599,16 @@ msgid "\n" "ObservedAltitude = %.4f\n" msgstr "" -#: src/Sight.cpp:706 +#: src\Sight.cpp:727 src\Sight.cpp.bak:728 #, c-format msgid "\n" "Apparent Moon Altitude (Ha)\n" "ApparentAltitudeMoon = MeasurementMoon - IndexCorrection - EyeHeightCorrection\n" -" ApparentAltitudeMoon = %.4f - %.4f - %.4f\n" +"ApparentAltitudeMoon = %.4f - %.4f - %.4f\n" "ApparentAltitudeMoon = %.4f\n" msgstr "" -#: src/Sight.cpp:717 +#: src\Sight.cpp:738 src\Sight.cpp.bak:739 #, c-format msgid "\n" "Refraction Correction\n" @@ -538,20 +617,21 @@ msgid "\n" "x = %.4f\n" msgstr "" -#: src/Sight.cpp:722 +#: src\Sight.cpp:743 src\Sight.cpp.bak:744 #, c-format msgid "RefractionCorrectionMoon = .267 * Pressure / (x*(Temperature + 273.15)) / 60.0\n" "RefractionCorrectionMoon = .267 * %.4f / (x*(%.4f + 273.15)) / 60.0\n" "RefractionCorrectionMoon = %.4f\n" msgstr "" -#: src/Sight.cpp:747 src/Sight.cpp:750 +#: src\Sight.cpp:768 src\Sight.cpp:771 src\Sight.cpp.bak:769 +#: src\Sight.cpp.bak:772 #, c-format msgid "\n" "LimbCorrectionMoon = %.4f\n" msgstr "" -#: src/Sight.cpp:753 +#: src\Sight.cpp:774 src\Sight.cpp.bak:775 #, c-format msgid "\n" "Corrected Altitude\n" @@ -560,107 +640,82 @@ msgid "\n" "CorrectedAltitudeMoon = %.4f\n" msgstr "" -#: src/Sight.cpp:768 +#: src\Sight.cpp:789 src\Sight.cpp.bak:790 #, c-format msgid "ParallaxCorrectionMoon = -180/Pi * asin( sin(Pi/180 * HP ) * cos(Pi/180 * CorrectedAltitude))\n" -" ParallaxCorrectionMoon = -180/Pi * asin( sin(Pi/180 * %.4f ) * cos(Pi/180 * %.4f))\n" +"ParallaxCorrectionMoon = -180/Pi * asin( sin(Pi/180 * %.4f ) * cos(Pi/180 * %.4f))\n" "ParallaxCorrectionMoon = %.4f\n" msgstr "" -#: src/Sight.cpp:778 -#, c-format -msgid "\n" -"Apparent Altitude (Ha)\n" -"ApparentAltitude = Measurement - IndexCorrection - EyeHeightCorrection\n" -" ApparentAltitude = %.4f - %.4f - %.4f\n" -"ApparentAltitude = %.4f\n" -msgstr "" - -#: src/Sight.cpp:857 +#: src\Sight.cpp:878 src\Sight.cpp.bak:879 #, c-format msgid "CorrectionsMoon = %.4f\n" "CorrectionsBody = %.4f\n" "Corrections = abs(CorrectionsMoon - CorrectionsBody) = %.4f\n" msgstr "" -#: src/Sight.cpp:863 +#: src\Sight.cpp:884 src\Sight.cpp.bak:885 #, c-format msgid "CorrectedMeasurement = Measurement - Corrections - IndexCorrection\n" "CorrectedMeasurement = %.4f - %.4f - %.4f\n" "CorrectedMeasurement = %.4f\n" msgstr "" -#: src/Sight.cpp:888 +#: src\Sight.cpp:909 src\Sight.cpp.bak:910 msgid "\n" "Calculated angle between Moon and " msgstr "" -#: src/Sight.cpp:890 +#: src\Sight.cpp:911 src\Sight.cpp.bak:912 #, c-format msgid "\n" "Error from measurement: %.4f" msgstr "" -#: src/Sight.cpp:894 +#: src\Sight.cpp:915 src\Sight.cpp.bak:916 msgid "\n" "Moon takes 28 days to orbit, one degree of error takes 6720 seconds" msgstr "" -#: src/Sight.cpp:895 +#: src\Sight.cpp:916 src\Sight.cpp.bak:917 #, c-format msgid "\n" "Time correction %.4f seconds" msgstr "" -#: src/Sight.cpp:1099 +#: src\Sight.cpp:1120 src\Sight.cpp.bak:1121 msgid "Building bearing Sight Positions" msgstr "" -#: src/SightDialog.cpp:172 +#: src\SightDialog.cpp:184 msgid "Measurement certainty likely set to small, sight may not appear " msgstr "" -#: src/SightDialog.cpp:173 src/SightDialog.cpp:256 +#: src\SightDialog.cpp:185 src\SightDialog.cpp:279 msgid "Warning" msgstr "" -#: src/SightDialog.cpp:255 +#: src\SightDialog.cpp:278 msgid "Lunar shot will be invalid taking distance from moon to itself" msgstr "" -#: src/celestial_navigation_pi.cpp:90 -msgid "Failed to load file:\n" -msgstr "" - -#: src/celestial_navigation_pi.cpp:91 -msgid "\n" -"Magnetic data will not be available for the celestial navigation plugin." -msgstr "" - -#: src/celestial_navigation_pi.cpp:92 -msgid "OpenCPN Alert" +#: src\celestial_navigation_pi.cpp:179 +msgid "open error" msgstr "" -#: src/celestial_navigation_pi.cpp:157 -msgid "Celestial Navigation PlugIn for OpenCPN" +#: src\celestial_navigation_pi.cpp:180 +msgid "corrupt record" msgstr "" -#: src/celestial_navigation_pi.cpp:162 -msgid "Celestial Navigation PlugIn for OpenCPN.\n" -"Implements nautical almanac for sun, moon, planets,\n" -"and various navigational stars.\n" -"Compute position fix from celestial measurements." +#: src\celestial_navigation_pi.cpp:181 +msgid "too many models" msgstr "" -#: src/FixDialog.cpp:189 -msgid "Shifted sights are not used to compute a fix, determine fix visually instead.\n" +#: src\celestial_navigation_pi.cpp:184 +msgid "Magnetic data will not be available for the celestial navigation plugin." msgstr "" -#: src/FixDialog.cpp:190 -msgid "Fix Position" -msgstr "" - -#: src/FixDialog.cpp:335 src/FixDialog.cpp:336 src/FixDialog.cpp:337 -msgid " N/A " +#: src\celestial_navigation_pi.cpp:185 +msgid "OpenCPN Alert" msgstr "" diff --git a/po/zh_CN.po b/po/zh_CN.po new file mode 100644 index 0000000..8921b05 --- /dev/null +++ b/po/zh_CN.po @@ -0,0 +1,721 @@ +msgid "" +msgstr "" +"Project-Id-Version: opencpn\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2021-10-27 22:15+0200\n" +"PO-Revision-Date: 2023-10-04 18:32\n" +"Last-Translator: \n" +"Language-Team: Chinese Simplified\n" +"Language: zh_CN\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=1; plural=0;\n" +"X-Crowdin-Project: opencpn\n" +"X-Crowdin-Project-ID: 49843\n" +"X-Crowdin-Language: zh-CN\n" +"X-Crowdin-File: /plugins/celestial_navigation_pi/po/celestial_navigation_pi.pot\n" +"X-Crowdin-File-ID: 108\n" + +#: src\CelestialNavigationDialog-2.3.5.1-no-android.cpp:149 +#: src\CelestialNavigationDialog-2.3.5.2-android.cpp:150 +#: src\CelestialNavigationDialog-partial-android.cpp:149 +#: src\CelestialNavigationDialog.cpp:150 src\CelestialNavigationUI.cpp:137 +msgid "Type" +msgstr "" + +#: src\CelestialNavigationDialog-2.3.5.1-no-android.cpp:150 +#: src\CelestialNavigationDialog-2.3.5.2-android.cpp:151 +#: src\CelestialNavigationDialog-partial-android.cpp:150 +#: src\CelestialNavigationDialog.cpp:151 +msgid "Body" +msgstr "" + +#: src\CelestialNavigationDialog-2.3.5.1-no-android.cpp:151 +#: src\CelestialNavigationDialog-2.3.5.2-android.cpp:152 +#: src\CelestialNavigationDialog-partial-android.cpp:151 +#: src\CelestialNavigationDialog.cpp:152 src\CelestialNavigationUI.cpp:328 +msgid "Time (UT)" +msgstr "" + +#: src\CelestialNavigationDialog-2.3.5.1-no-android.cpp:152 +#: src\CelestialNavigationDialog-2.3.5.2-android.cpp:153 +#: src\CelestialNavigationDialog-partial-android.cpp:152 +#: src\CelestialNavigationDialog.cpp:153 src\CelestialNavigationUI.cpp:184 +msgid "Measurement" +msgstr "" + +#: src\CelestialNavigationDialog-2.3.5.1-no-android.cpp:153 +#: src\CelestialNavigationDialog-2.3.5.2-android.cpp:154 +#: src\CelestialNavigationDialog-partial-android.cpp:153 +#: src\CelestialNavigationDialog.cpp:154 src\CelestialNavigationUI.cpp:381 +msgid "Color" +msgstr "颜色" + +#: src\CelestialNavigationDialog-2.3.5.1-no-android.cpp:266 +#: src\CelestialNavigationDialog-2.3.5.2-android.cpp:272 +#: src\CelestialNavigationDialog-partial-android.cpp:266 +#: src\CelestialNavigationDialog.cpp:272 src\celestial_navigation_pi.cpp:177 +msgid "Failed to load file: " +msgstr "" + +#: src\CelestialNavigationDialog-2.3.5.1-no-android.cpp:271 +#: src\CelestialNavigationDialog-2.3.5.2-android.cpp:277 +#: src\CelestialNavigationDialog-partial-android.cpp:271 +#: src\CelestialNavigationDialog.cpp:277 +msgid "Invalid xml file" +msgstr "" + +#: src\CelestialNavigationDialog-2.3.5.1-no-android.cpp:323 +#: src\CelestialNavigationDialog-2.3.5.2-android.cpp:329 +#: src\CelestialNavigationDialog-partial-android.cpp:323 +#: src\CelestialNavigationDialog.cpp:329 +msgid "Unrecognized xml node" +msgstr "" + +#: src\CelestialNavigationDialog-2.3.5.1-no-android.cpp:332 +#: src\CelestialNavigationDialog-2.3.5.1-no-android.cpp:392 +#: src\CelestialNavigationDialog-2.3.5.1-no-android.cpp:532 +#: src\CelestialNavigationDialog-2.3.5.2-android.cpp:338 +#: src\CelestialNavigationDialog-2.3.5.2-android.cpp:398 +#: src\CelestialNavigationDialog-2.3.5.2-android.cpp:538 +#: src\CelestialNavigationDialog-partial-android.cpp:332 +#: src\CelestialNavigationDialog-partial-android.cpp:392 +#: src\CelestialNavigationDialog-partial-android.cpp:532 +#: src\CelestialNavigationDialog.cpp:338 src\CelestialNavigationDialog.cpp:398 +#: src\CelestialNavigationDialog.cpp:538 src\Sight.cpp:1120 +#: src\Sight.cpp.bak:1121 src\celestial_navigation_pi.cpp:95 +#: src\celestial_navigation_pi.cpp:99 +msgid "Celestial Navigation" +msgstr "" + +#: src\CelestialNavigationDialog-2.3.5.1-no-android.cpp:391 +#: src\CelestialNavigationDialog-2.3.5.2-android.cpp:397 +#: src\CelestialNavigationDialog-partial-android.cpp:391 +#: src\CelestialNavigationDialog.cpp:397 +msgid "Failed to save xml file: " +msgstr "" + +#: src\CelestialNavigationDialog-2.3.5.1-no-android.cpp:424 +#: src\CelestialNavigationDialog-2.3.5.2-android.cpp:430 +#: src\CelestialNavigationDialog-partial-android.cpp:424 +#: src\CelestialNavigationDialog.cpp:430 +msgid "Time Correction" +msgstr "" + +#: src\CelestialNavigationDialog-2.3.5.1-no-android.cpp:473 +#: src\CelestialNavigationDialog-2.3.5.2-android.cpp:479 +#: src\CelestialNavigationDialog-partial-android.cpp:473 +#: src\CelestialNavigationDialog.cpp:479 +msgid "Sun" +msgstr "" + +#: src\CelestialNavigationDialog-2.3.5.1-no-android.cpp:531 +#: src\CelestialNavigationDialog-2.3.5.2-android.cpp:537 +#: src\CelestialNavigationDialog-partial-android.cpp:531 +#: src\CelestialNavigationDialog.cpp:537 +msgid "Are you sure you want to delete all sights?" +msgstr "" + +#: src\CelestialNavigationDialog-2.3.5.1-no-android.cpp:582 +#: src\CelestialNavigationDialog-2.3.5.2-android.cpp:588 +#: src\CelestialNavigationDialog-partial-android.cpp:582 +#: src\CelestialNavigationDialog.cpp:588 +msgid "Celestial_Navigation_Information.html" +msgstr "" + +#: src\CelestialNavigationDialog-2.3.5.1-no-android.cpp:589 +#: src\CelestialNavigationDialog-2.3.5.2-android.cpp:595 +#: src\CelestialNavigationDialog-partial-android.cpp:589 +#: src\CelestialNavigationDialog.cpp:595 src\CelestialNavigationUI.cpp:55 +msgid "Hide" +msgstr "" + +#: src\CelestialNavigationDialog-2.3.5.1-no-android.cpp:589 +#: src\CelestialNavigationDialog-2.3.5.2-android.cpp:595 +#: src\CelestialNavigationDialog-partial-android.cpp:589 +#: src\CelestialNavigationDialog.cpp:595 +msgid "Show" +msgstr "" + +#: src\CelestialNavigationUI.cpp:40 +msgid "New" +msgstr "" + +#: src\CelestialNavigationUI.cpp:43 src\CelestialNavigationUI.h:286 +msgid "Fix" +msgstr "" + +#: src\CelestialNavigationUI.cpp:46 +msgid "Duplicate" +msgstr "" + +#: src\CelestialNavigationUI.cpp:49 +msgid "Clock Offset" +msgstr "" + +#: src\CelestialNavigationUI.cpp:52 +msgid "Edit" +msgstr "" + +#: src\CelestialNavigationUI.cpp:58 +msgid "Delete" +msgstr "" + +#: src\CelestialNavigationUI.cpp:61 +msgid "Information" +msgstr "" + +#: src\CelestialNavigationUI.cpp:64 +msgid "Delete All" +msgstr "" + +#: src\CelestialNavigationUI.cpp:141 src\CelestialNavigationUI.cpp:674 +#: src\Sight.h:49 +msgid "Altitude" +msgstr "" + +#: src\CelestialNavigationUI.cpp:141 src\CelestialNavigationUI.cpp:683 +#: src\Sight.h:49 +msgid "Azimuth" +msgstr "" + +#: src\CelestialNavigationUI.cpp:141 src\Sight.h:49 +msgid "Lunar" +msgstr "" + +#: src\CelestialNavigationUI.cpp:147 +msgid "Magnetic Azimuth" +msgstr "" + +#: src\CelestialNavigationUI.cpp:150 +msgid "Celestial Body" +msgstr "" + +#: src\CelestialNavigationUI.cpp:159 +msgid "Find" +msgstr "" + +#: src\CelestialNavigationUI.cpp:162 +msgid "Limb" +msgstr "" + +#: src\CelestialNavigationUI.cpp:166 +msgid "Center" +msgstr "" + +#: src\CelestialNavigationUI.cpp:166 +msgid "Lower" +msgstr "" + +#: src\CelestialNavigationUI.cpp:166 +msgid "Upper" +msgstr "" + +#: src\CelestialNavigationUI.cpp:191 src\CelestialNavigationUI.cpp:198 +#: src\CelestialNavigationUI.cpp:228 src\CelestialNavigationUI.cpp:235 +msgid "0" +msgstr "" + +#: src\CelestialNavigationUI.cpp:194 src\CelestialNavigationUI.cpp:353 +#: src\CelestialNavigationUI.cpp:605 +msgid "Degrees" +msgstr "" + +#: src\CelestialNavigationUI.cpp:201 src\CelestialNavigationUI.cpp:283 +#: src\CelestialNavigationUI.cpp:444 +msgid "Minutes" +msgstr "分钟" + +#: src\CelestialNavigationUI.cpp:205 +msgid "10" +msgstr "10" + +#: src\CelestialNavigationUI.cpp:208 +msgid "Minutes Certainty" +msgstr "" + +#: src\CelestialNavigationUI.cpp:222 +msgid "Lunar Altitude" +msgstr "" + +#: src\CelestialNavigationUI.cpp:231 +msgid "Body Altitude" +msgstr "" + +#: src\CelestialNavigationUI.cpp:248 +msgid "Sight" +msgstr "" + +#: src\CelestialNavigationUI.cpp:276 +msgid "Hours" +msgstr "小时" + +#: src\CelestialNavigationUI.cpp:290 src\CelestialNavigationUI.cpp:308 +#: src\CelestialNavigationUI.cpp:869 +msgid "Seconds" +msgstr "秒" + +#: src\CelestialNavigationUI.cpp:298 +msgid "Certainty" +msgstr "" + +#: src\CelestialNavigationUI.cpp:335 src\CelestialNavigationUI.cpp:587 +msgid "Distance" +msgstr "" + +#: src\CelestialNavigationUI.cpp:342 src\CelestialNavigationUI.cpp:594 +msgid "Nm" +msgstr "" + +#: src\CelestialNavigationUI.cpp:346 src\CelestialNavigationUI.cpp:598 +msgid "Bearing" +msgstr "" + +#: src\CelestialNavigationUI.cpp:357 src\CelestialNavigationUI.cpp:609 +msgid "Magnetic Bearing" +msgstr "" + +#: src\CelestialNavigationUI.cpp:364 +msgid "DR Shift" +msgstr "" + +#: src\CelestialNavigationUI.cpp:371 +msgid "Transparency" +msgstr "" + +#: src\CelestialNavigationUI.cpp:392 +msgid "Config" +msgstr "" + +#: src\CelestialNavigationUI.cpp:404 +msgid "Eye Height" +msgstr "" + +#: src\CelestialNavigationUI.cpp:408 +msgid "2" +msgstr "" + +#: src\CelestialNavigationUI.cpp:411 +msgid "Meters" +msgstr "" + +#: src\CelestialNavigationUI.cpp:415 +msgid "Temperature" +msgstr "" + +#: src\CelestialNavigationUI.cpp:422 +msgid "Celcius" +msgstr "" + +#: src\CelestialNavigationUI.cpp:426 +msgid "Pressure" +msgstr "" + +#: src\CelestialNavigationUI.cpp:433 +msgid "MilliBars" +msgstr "" + +#: src\CelestialNavigationUI.cpp:437 +msgid "Index Error" +msgstr "" + +#: src\CelestialNavigationUI.cpp:451 +msgid "Set As Defaults" +msgstr "" + +#: src\CelestialNavigationUI.cpp:458 +msgid "Parameters" +msgstr "" + +#: src\CelestialNavigationUI.cpp:474 +msgid "Calculations" +msgstr "" + +#: src\CelestialNavigationUI.cpp:578 +msgid "Shift all visible Sights" +msgstr "" + +#: src\CelestialNavigationUI.cpp:656 src\CelestialNavigationUI.cpp:769 +msgid "Latitude" +msgstr "" + +#: src\CelestialNavigationUI.cpp:665 src\CelestialNavigationUI.cpp:777 +msgid "Longitude" +msgstr "" + +#: src\CelestialNavigationUI.cpp:691 +msgid "Boat Position" +msgstr "" + +#: src\CelestialNavigationUI.cpp:695 +msgid "Magnetic" +msgstr "" + +#: src\CelestialNavigationUI.cpp:698 +msgid "Done" +msgstr "" + +#: src\CelestialNavigationUI.cpp:762 +msgid "Fix From Visible Sights" +msgstr "" + +#: src\CelestialNavigationUI.cpp:773 +msgid " N/A " +msgstr "" + +#: src\CelestialNavigationUI.cpp:781 +msgid " N/A " +msgstr "" + +#: src\CelestialNavigationUI.cpp:785 +msgid "Error" +msgstr "" + +#: src\CelestialNavigationUI.cpp:789 +msgid " N/A " +msgstr "" + +#: src\CelestialNavigationUI.cpp:796 src\CelestialNavigationUI.cpp:803 +msgid "Initial" +msgstr "" + +#: src\CelestialNavigationUI.cpp:810 +msgid "Alg" +msgstr "" + +#: src\CelestialNavigationUI.cpp:815 +msgid "Plane" +msgstr "" + +#: src\CelestialNavigationUI.cpp:816 +msgid "Sphere" +msgstr "" + +#: src\CelestialNavigationUI.cpp:817 +msgid "Cone" +msgstr "" + +#: src\CelestialNavigationUI.cpp:818 +msgid "Cone 2" +msgstr "" + +#: src\CelestialNavigationUI.cpp:822 +msgid "Go" +msgstr "" + +#: src\CelestialNavigationUI.cpp:859 src\CelestialNavigationUI.h:308 +msgid "Clock Correction" +msgstr "" + +#: src\CelestialNavigationUI.h:82 +msgid "Celestial Navigation Sights" +msgstr "" + +#: src\CelestialNavigationUI.h:173 +msgid "Sight Properties" +msgstr "" + +#: src\CelestialNavigationUI.h:204 +msgid "Dead Reckoning shift" +msgstr "" + +#: src\CelestialNavigationUI.h:232 +msgid "Find Celestial Body" +msgstr "" + +#: src\FixDialog.cpp:192 +msgid "Shifted sights are not used to compute a fix, determine fix visually instead.\n" +msgstr "" + +#: src\FixDialog.cpp:193 +msgid "Fix Position" +msgstr "" + +#: src\FixDialog.cpp:338 src\FixDialog.cpp:339 src\FixDialog.cpp:340 +msgid " N/A " +msgstr "" + +#: src\Sight.cpp:172 src\Sight.cpp.bak:173 +msgid "Astrolab failed, data unavailable:\n" +msgstr "" + +#: src\Sight.cpp:173 src\Sight.cpp.bak:174 +msgid "\n" +"Did you forget to install vsop87d.txt?\n" +msgstr "" + +#: src\Sight.cpp:174 src\Sight.cpp.bak:175 +msgid "The plugin will not work correctly" +msgstr "" + +#: src\Sight.cpp:175 src\Sight.cpp.bak:176 +msgid "Failure Alert" +msgstr "" + +#: src\Sight.cpp:495 src\Sight.cpp.bak:496 +#, c-format +msgid "Applying clock correction of %d seconds\n\n" +msgstr "" + +#: src\Sight.cpp:557 src\Sight.cpp.bak:558 +msgid "Almanac Data For " +msgstr "" + +#: src\Sight.cpp:558 src\Sight.cpp.bak:559 +#, c-format +msgid "\n" +"Geographical Position (lat, lon) = %.4f %.4f\n" +"GHAAST = %.0f %.1f'\n" +"SHA = %.0f %.1f'\n" +"GHA = %.0f %.1f'\n" +"Dec = %c %.0f %.1f'\n" +"SD = %.1f'\n" +"HP = %.1f'\n\n" +msgstr "" + +#: src\Sight.cpp:573 src\Sight.cpp:711 src\Sight.cpp.bak:574 +#: src\Sight.cpp.bak:712 +msgid "Formulas used to calculate sight\n\n" +msgstr "" + +#: src\Sight.cpp:577 src\Sight.cpp:715 src\Sight.cpp.bak:578 +#: src\Sight.cpp.bak:716 +#, c-format +msgid "Index Error is %.4f degrees\n\n" +msgstr "" + +#: src\Sight.cpp:582 src\Sight.cpp:720 src\Sight.cpp.bak:583 +#: src\Sight.cpp.bak:721 +#, c-format +msgid "Eye Height is %.4f meters\n" +"Height Correction Degrees = 1.758*sqrt(%.4f) / 60.0\n" +"Height Correction Degrees = %.4f\n" +msgstr "" + +#: src\Sight.cpp:589 src\Sight.cpp:799 src\Sight.cpp.bak:590 +#: src\Sight.cpp.bak:800 +#, c-format +msgid "\n" +"Apparent Altitude (Ha)\n" +"ApparentAltitude = Measurement - IndexCorrection - EyeHeightCorrection\n" +"ApparentAltitude = %.4f - %.4f - %.4f\n" +"ApparentAltitude = %.4f\n" +msgstr "" + +#: src\Sight.cpp:607 src\Sight.cpp:810 src\Sight.cpp.bak:608 +#: src\Sight.cpp.bak:811 +#, c-format +msgid "\n" +"Refraction Correction\n" +"x = tan(Pi/180*ApparentAltitude + 4.848e-2*(Pi/180) / (tan(Pi/180*ApparentAltitude) + .028))\n" +"x = tan(Pi/180*%.4f + 4.848e-2*(Pi/180) / (tan(Pi/180*%.4f) + .028))\n" +"x = %.4f\n" +msgstr "" + +#: src\Sight.cpp:612 src\Sight.cpp:815 src\Sight.cpp.bak:613 +#: src\Sight.cpp.bak:816 +#, c-format +msgid "RefractionCorrection = .267 * Pressure / (x*(Temperature + 273.15)) / 60.0\n" +"RefractionCorrection = .267 * %.4f / (x*(%.4f + 273.15)) / 60.0\n" +"RefractionCorrection = %.4f\n" +msgstr "" + +#: src\Sight.cpp:627 src\Sight.cpp:829 src\Sight.cpp.bak:628 +#: src\Sight.cpp.bak:830 +#, c-format +msgid "\n" +"Sun selected, Limb Correction\n" +"ra = %.4f, lc = 0.266564/ra = %.4f\n" +msgstr "" + +#: src\Sight.cpp:637 src\Sight.cpp:753 src\Sight.cpp.bak:638 +#: src\Sight.cpp.bak:754 +#, c-format +msgid "\n" +"Moon selected, Limb Correction\n" +"SD = %.4f\n" +"lc = 180/Pi * asin(Pi/180*SD)\n" +"lc = %.4f\n" +msgstr "" + +#: src\Sight.cpp:647 src\Sight.cpp:762 src\Sight.cpp:837 src\Sight.cpp.bak:648 +#: src\Sight.cpp.bak:763 src\Sight.cpp.bak:838 +msgid "Upper Limb" +msgstr "" + +#: src\Sight.cpp:650 src\Sight.cpp:765 src\Sight.cpp:840 src\Sight.cpp.bak:651 +#: src\Sight.cpp.bak:766 src\Sight.cpp.bak:841 +msgid "Lower Limb" +msgstr "" + +#: src\Sight.cpp:653 src\Sight.cpp:843 src\Sight.cpp.bak:654 +#: src\Sight.cpp.bak:844 +#, c-format +msgid "\n" +"LimbCorrection = %.4f\n" +msgstr "" + +#: src\Sight.cpp:657 src\Sight.cpp:847 src\Sight.cpp.bak:658 +#: src\Sight.cpp.bak:848 +#, c-format +msgid "\n" +"Corrected Altitude\n" +"CorrectedAltitude = ApparentAltitude - RefractionCorrection - LimbCorrection\n" +"CorrectedAltitude = %.4f - %.4f - %.4f\n" +"CorrectedAltitude = %.4f\n" +msgstr "" + +#: src\Sight.cpp:671 src\Sight.cpp:861 src\Sight.cpp.bak:672 +#: src\Sight.cpp.bak:862 +#, c-format +msgid "\n" +"Sun selected, parallax correction\n" +"rad = %.4f, HP = 0.002442/rad = %.4f\n" +msgstr "" + +#: src\Sight.cpp:680 src\Sight.cpp:785 src\Sight.cpp.bak:681 +#: src\Sight.cpp.bak:786 +#, c-format +msgid "\n" +"Moon selected, parallax correction\n" +"HP = %.4f\n" +msgstr "" + +#: src\Sight.cpp:686 src\Sight.cpp:867 src\Sight.cpp.bak:687 +#: src\Sight.cpp.bak:868 +#, c-format +msgid "ParallaxCorrection = -180/Pi * asin( sin(Pi/180 * HP ) * cos(Pi/180 * CorrectedAltitude))\n" +"ParallaxCorrection = -180/Pi * asin( sin(Pi/180 * %.4f ) * cos(Pi/180 * %.4f))\n" +"ParallaxCorrection = %.4f\n" +msgstr "" + +#: src\Sight.cpp:693 src\Sight.cpp.bak:694 +#, c-format +msgid "\n" +"Observed Altitude (Ho)\n" +"ObservedAltitude = CorrectedAltitude - ParallaxCorrection\n" +"ObservedAltitude = %.4f - %.4f\n" +"ObservedAltitude = %.4f\n" +msgstr "" + +#: src\Sight.cpp:727 src\Sight.cpp.bak:728 +#, c-format +msgid "\n" +"Apparent Moon Altitude (Ha)\n" +"ApparentAltitudeMoon = MeasurementMoon - IndexCorrection - EyeHeightCorrection\n" +"ApparentAltitudeMoon = %.4f - %.4f - %.4f\n" +"ApparentAltitudeMoon = %.4f\n" +msgstr "" + +#: src\Sight.cpp:738 src\Sight.cpp.bak:739 +#, c-format +msgid "\n" +"Refraction Correction\n" +"x = tan(Pi/180*ApparentAltitudeMoon + 4.848e-2*(Pi/180) / (tan(Pi/180*ApparentAltitudeMoon) + .028))\n" +"x = tan(Pi/180*%.4f + 4.848e-2*(Pi/180) / (tan(Pi/180*%.4f) + .028))\n" +"x = %.4f\n" +msgstr "" + +#: src\Sight.cpp:743 src\Sight.cpp.bak:744 +#, c-format +msgid "RefractionCorrectionMoon = .267 * Pressure / (x*(Temperature + 273.15)) / 60.0\n" +"RefractionCorrectionMoon = .267 * %.4f / (x*(%.4f + 273.15)) / 60.0\n" +"RefractionCorrectionMoon = %.4f\n" +msgstr "" + +#: src\Sight.cpp:768 src\Sight.cpp:771 src\Sight.cpp.bak:769 +#: src\Sight.cpp.bak:772 +#, c-format +msgid "\n" +"LimbCorrectionMoon = %.4f\n" +msgstr "" + +#: src\Sight.cpp:774 src\Sight.cpp.bak:775 +#, c-format +msgid "\n" +"Corrected Altitude\n" +"CorrectedAltitudeMoon = ApparentAltitudeMoon - RefractionCorrectionMoon - LimbCorrectionMoon\n" +"CorrectedAltitudeMoon = %.4f - %.4f - %.4f\n" +"CorrectedAltitudeMoon = %.4f\n" +msgstr "" + +#: src\Sight.cpp:789 src\Sight.cpp.bak:790 +#, c-format +msgid "ParallaxCorrectionMoon = -180/Pi * asin( sin(Pi/180 * HP ) * cos(Pi/180 * CorrectedAltitude))\n" +"ParallaxCorrectionMoon = -180/Pi * asin( sin(Pi/180 * %.4f ) * cos(Pi/180 * %.4f))\n" +"ParallaxCorrectionMoon = %.4f\n" +msgstr "" + +#: src\Sight.cpp:878 src\Sight.cpp.bak:879 +#, c-format +msgid "CorrectionsMoon = %.4f\n" +"CorrectionsBody = %.4f\n" +"Corrections = abs(CorrectionsMoon - CorrectionsBody) = %.4f\n" +msgstr "" + +#: src\Sight.cpp:884 src\Sight.cpp.bak:885 +#, c-format +msgid "CorrectedMeasurement = Measurement - Corrections - IndexCorrection\n" +"CorrectedMeasurement = %.4f - %.4f - %.4f\n" +"CorrectedMeasurement = %.4f\n" +msgstr "" + +#: src\Sight.cpp:909 src\Sight.cpp.bak:910 +msgid "\n" +"Calculated angle between Moon and " +msgstr "" + +#: src\Sight.cpp:911 src\Sight.cpp.bak:912 +#, c-format +msgid "\n" +"Error from measurement: %.4f" +msgstr "" + +#: src\Sight.cpp:915 src\Sight.cpp.bak:916 +msgid "\n" +"Moon takes 28 days to orbit, one degree of error takes 6720 seconds" +msgstr "" + +#: src\Sight.cpp:916 src\Sight.cpp.bak:917 +#, c-format +msgid "\n" +"Time correction %.4f seconds" +msgstr "" + +#: src\Sight.cpp:1120 src\Sight.cpp.bak:1121 +msgid "Building bearing Sight Positions" +msgstr "" + +#: src\SightDialog.cpp:184 +msgid "Measurement certainty likely set to small, sight may not appear " +msgstr "" + +#: src\SightDialog.cpp:185 src\SightDialog.cpp:279 +msgid "Warning" +msgstr "" + +#: src\SightDialog.cpp:278 +msgid "Lunar shot will be invalid taking distance from moon to itself" +msgstr "" + +#: src\celestial_navigation_pi.cpp:179 +msgid "open error" +msgstr "" + +#: src\celestial_navigation_pi.cpp:180 +msgid "corrupt record" +msgstr "" + +#: src\celestial_navigation_pi.cpp:181 +msgid "too many models" +msgstr "" + +#: src\celestial_navigation_pi.cpp:184 +msgid "Magnetic data will not be available for the celestial navigation plugin." +msgstr "" + +#: src\celestial_navigation_pi.cpp:185 +msgid "OpenCPN Alert" +msgstr "" + diff --git a/po/zh_TW.po b/po/zh_TW.po index b4fda68..e6eecc8 100644 --- a/po/zh_TW.po +++ b/po/zh_TW.po @@ -2,403 +2,467 @@ msgid "" msgstr "" "Project-Id-Version: opencpn\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-02-28 14:10-0300\n" -"PO-Revision-Date: 2017-06-10 12:04-0400\n" -"Last-Translator: nohal \n" +"POT-Creation-Date: 2021-10-27 22:15+0200\n" +"PO-Revision-Date: 2023-10-04 18:32\n" +"Last-Translator: \n" "Language-Team: Chinese Traditional\n" "Language: zh_TW\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=1; plural=0;\n" -"X-Generator: crowdin.com\n" "X-Crowdin-Project: opencpn\n" +"X-Crowdin-Project-ID: 49843\n" "X-Crowdin-Language: zh-TW\n" "X-Crowdin-File: /plugins/celestial_navigation_pi/po/celestial_navigation_pi.pot\n" +"X-Crowdin-File-ID: 108\n" -#: src/CelestialNavigationDialog.cpp:123 src/CelestialNavigationUI.cpp:132 +#: src\CelestialNavigationDialog-2.3.5.1-no-android.cpp:149 +#: src\CelestialNavigationDialog-2.3.5.2-android.cpp:150 +#: src\CelestialNavigationDialog-partial-android.cpp:149 +#: src\CelestialNavigationDialog.cpp:150 src\CelestialNavigationUI.cpp:137 msgid "Type" msgstr "" -#: src/CelestialNavigationDialog.cpp:124 +#: src\CelestialNavigationDialog-2.3.5.1-no-android.cpp:150 +#: src\CelestialNavigationDialog-2.3.5.2-android.cpp:151 +#: src\CelestialNavigationDialog-partial-android.cpp:150 +#: src\CelestialNavigationDialog.cpp:151 msgid "Body" msgstr "" -#: src/CelestialNavigationDialog.cpp:125 -msgid "Time (UTC)" +#: src\CelestialNavigationDialog-2.3.5.1-no-android.cpp:151 +#: src\CelestialNavigationDialog-2.3.5.2-android.cpp:152 +#: src\CelestialNavigationDialog-partial-android.cpp:151 +#: src\CelestialNavigationDialog.cpp:152 src\CelestialNavigationUI.cpp:328 +msgid "Time (UT)" msgstr "" -#: src/CelestialNavigationDialog.cpp:126 src/CelestialNavigationUI.cpp:179 +#: src\CelestialNavigationDialog-2.3.5.1-no-android.cpp:152 +#: src\CelestialNavigationDialog-2.3.5.2-android.cpp:153 +#: src\CelestialNavigationDialog-partial-android.cpp:152 +#: src\CelestialNavigationDialog.cpp:153 src\CelestialNavigationUI.cpp:184 msgid "Measurement" msgstr "" -#: src/CelestialNavigationDialog.cpp:127 src/CelestialNavigationUI.cpp:376 +#: src\CelestialNavigationDialog-2.3.5.1-no-android.cpp:153 +#: src\CelestialNavigationDialog-2.3.5.2-android.cpp:154 +#: src\CelestialNavigationDialog-partial-android.cpp:153 +#: src\CelestialNavigationDialog.cpp:154 src\CelestialNavigationUI.cpp:381 msgid "Color" msgstr "" -#: src/CelestialNavigationDialog.cpp:193 -msgid "Failed to load file." +#: src\CelestialNavigationDialog-2.3.5.1-no-android.cpp:266 +#: src\CelestialNavigationDialog-2.3.5.2-android.cpp:272 +#: src\CelestialNavigationDialog-partial-android.cpp:266 +#: src\CelestialNavigationDialog.cpp:272 src\celestial_navigation_pi.cpp:177 +msgid "Failed to load file: " msgstr "" -#: src/CelestialNavigationDialog.cpp:198 +#: src\CelestialNavigationDialog-2.3.5.1-no-android.cpp:271 +#: src\CelestialNavigationDialog-2.3.5.2-android.cpp:277 +#: src\CelestialNavigationDialog-partial-android.cpp:271 +#: src\CelestialNavigationDialog.cpp:277 msgid "Invalid xml file" msgstr "" -#: src/CelestialNavigationDialog.cpp:250 +#: src\CelestialNavigationDialog-2.3.5.1-no-android.cpp:323 +#: src\CelestialNavigationDialog-2.3.5.2-android.cpp:329 +#: src\CelestialNavigationDialog-partial-android.cpp:323 +#: src\CelestialNavigationDialog.cpp:329 msgid "Unrecognized xml node" msgstr "" -#: src/CelestialNavigationDialog.cpp:260 -msgid "Weather Routing" +#: src\CelestialNavigationDialog-2.3.5.1-no-android.cpp:332 +#: src\CelestialNavigationDialog-2.3.5.1-no-android.cpp:392 +#: src\CelestialNavigationDialog-2.3.5.1-no-android.cpp:532 +#: src\CelestialNavigationDialog-2.3.5.2-android.cpp:338 +#: src\CelestialNavigationDialog-2.3.5.2-android.cpp:398 +#: src\CelestialNavigationDialog-2.3.5.2-android.cpp:538 +#: src\CelestialNavigationDialog-partial-android.cpp:332 +#: src\CelestialNavigationDialog-partial-android.cpp:392 +#: src\CelestialNavigationDialog-partial-android.cpp:532 +#: src\CelestialNavigationDialog.cpp:338 src\CelestialNavigationDialog.cpp:398 +#: src\CelestialNavigationDialog.cpp:538 src\Sight.cpp:1120 +#: src\Sight.cpp.bak:1121 src\celestial_navigation_pi.cpp:95 +#: src\celestial_navigation_pi.cpp:99 +msgid "Celestial Navigation" msgstr "" -#: src/CelestialNavigationDialog.cpp:320 +#: src\CelestialNavigationDialog-2.3.5.1-no-android.cpp:391 +#: src\CelestialNavigationDialog-2.3.5.2-android.cpp:397 +#: src\CelestialNavigationDialog-partial-android.cpp:391 +#: src\CelestialNavigationDialog.cpp:397 msgid "Failed to save xml file: " msgstr "" -#: src/CelestialNavigationDialog.cpp:321 src/CelestialNavigationDialog.cpp:466 -#: src/Sight.cpp:1099 src/celestial_navigation_pi.cpp:99 -#: src/celestial_navigation_pi.cpp:152 -msgid "Celestial Navigation" -msgstr "" - -#: src/CelestialNavigationDialog.cpp:351 +#: src\CelestialNavigationDialog-2.3.5.1-no-android.cpp:424 +#: src\CelestialNavigationDialog-2.3.5.2-android.cpp:430 +#: src\CelestialNavigationDialog-partial-android.cpp:424 +#: src\CelestialNavigationDialog.cpp:430 msgid "Time Correction" msgstr "" -#: src/CelestialNavigationDialog.cpp:409 +#: src\CelestialNavigationDialog-2.3.5.1-no-android.cpp:473 +#: src\CelestialNavigationDialog-2.3.5.2-android.cpp:479 +#: src\CelestialNavigationDialog-partial-android.cpp:473 +#: src\CelestialNavigationDialog.cpp:479 msgid "Sun" msgstr "" -#: src/CelestialNavigationDialog.cpp:465 +#: src\CelestialNavigationDialog-2.3.5.1-no-android.cpp:531 +#: src\CelestialNavigationDialog-2.3.5.2-android.cpp:537 +#: src\CelestialNavigationDialog-partial-android.cpp:531 +#: src\CelestialNavigationDialog.cpp:537 msgid "Are you sure you want to delete all sights?" msgstr "" -#: src/CelestialNavigationDialog.cpp:510 +#: src\CelestialNavigationDialog-2.3.5.1-no-android.cpp:582 +#: src\CelestialNavigationDialog-2.3.5.2-android.cpp:588 +#: src\CelestialNavigationDialog-partial-android.cpp:582 +#: src\CelestialNavigationDialog.cpp:588 msgid "Celestial_Navigation_Information.html" msgstr "" -#: src/CelestialNavigationDialog.cpp:516 -msgid "Show" +#: src\CelestialNavigationDialog-2.3.5.1-no-android.cpp:589 +#: src\CelestialNavigationDialog-2.3.5.2-android.cpp:595 +#: src\CelestialNavigationDialog-partial-android.cpp:589 +#: src\CelestialNavigationDialog.cpp:595 src\CelestialNavigationUI.cpp:55 +msgid "Hide" msgstr "" -#: src/CelestialNavigationDialog.cpp:516 src/CelestialNavigationUI.cpp:58 -msgid "Hide" +#: src\CelestialNavigationDialog-2.3.5.1-no-android.cpp:589 +#: src\CelestialNavigationDialog-2.3.5.2-android.cpp:595 +#: src\CelestialNavigationDialog-partial-android.cpp:589 +#: src\CelestialNavigationDialog.cpp:595 +msgid "Show" msgstr "" -#: src/CelestialNavigationUI.cpp:40 +#: src\CelestialNavigationUI.cpp:40 msgid "New" msgstr "" -#: src/CelestialNavigationUI.cpp:43 -msgid "Edit" +#: src\CelestialNavigationUI.cpp:43 src\CelestialNavigationUI.h:286 +msgid "Fix" msgstr "" -#: src/CelestialNavigationUI.cpp:46 -msgid "Delete" +#: src\CelestialNavigationUI.cpp:46 +msgid "Duplicate" msgstr "" -#: src/CelestialNavigationUI.cpp:49 -msgid "Delete All" +#: src\CelestialNavigationUI.cpp:49 +msgid "Clock Offset" msgstr "" -#: src/CelestialNavigationUI.cpp:52 src/CelestialNavigationUI.h:281 -msgid "Fix" +#: src\CelestialNavigationUI.cpp:52 +msgid "Edit" msgstr "" -#: src/CelestialNavigationUI.cpp:55 -msgid "Clock Offset" +#: src\CelestialNavigationUI.cpp:58 +msgid "Delete" msgstr "" -#: src/CelestialNavigationUI.cpp:61 +#: src\CelestialNavigationUI.cpp:61 msgid "Information" msgstr "" -#: src/CelestialNavigationUI.cpp:136 src/CelestialNavigationUI.cpp:667 -#: src/Sight.h:49 +#: src\CelestialNavigationUI.cpp:64 +msgid "Delete All" +msgstr "" + +#: src\CelestialNavigationUI.cpp:141 src\CelestialNavigationUI.cpp:674 +#: src\Sight.h:49 msgid "Altitude" msgstr "" -#: src/CelestialNavigationUI.cpp:136 src/CelestialNavigationUI.cpp:677 -#: src/Sight.h:49 +#: src\CelestialNavigationUI.cpp:141 src\CelestialNavigationUI.cpp:683 +#: src\Sight.h:49 msgid "Azimuth" msgstr "" -#: src/CelestialNavigationUI.cpp:136 src/Sight.h:49 +#: src\CelestialNavigationUI.cpp:141 src\Sight.h:49 msgid "Lunar" msgstr "" -#: src/CelestialNavigationUI.cpp:142 +#: src\CelestialNavigationUI.cpp:147 msgid "Magnetic Azimuth" msgstr "" -#: src/CelestialNavigationUI.cpp:145 +#: src\CelestialNavigationUI.cpp:150 msgid "Celestial Body" msgstr "" -#: src/CelestialNavigationUI.cpp:154 +#: src\CelestialNavigationUI.cpp:159 msgid "Find" msgstr "" -#: src/CelestialNavigationUI.cpp:157 +#: src\CelestialNavigationUI.cpp:162 msgid "Limb" msgstr "" -#: src/CelestialNavigationUI.cpp:161 -msgid "Lower" +#: src\CelestialNavigationUI.cpp:166 +msgid "Center" msgstr "" -#: src/CelestialNavigationUI.cpp:161 -msgid "Center" +#: src\CelestialNavigationUI.cpp:166 +msgid "Lower" msgstr "" -#: src/CelestialNavigationUI.cpp:161 +#: src\CelestialNavigationUI.cpp:166 msgid "Upper" msgstr "" -#: src/CelestialNavigationUI.cpp:186 src/CelestialNavigationUI.cpp:193 -#: src/CelestialNavigationUI.cpp:223 src/CelestialNavigationUI.cpp:230 +#: src\CelestialNavigationUI.cpp:191 src\CelestialNavigationUI.cpp:198 +#: src\CelestialNavigationUI.cpp:228 src\CelestialNavigationUI.cpp:235 msgid "0" msgstr "" -#: src/CelestialNavigationUI.cpp:189 src/CelestialNavigationUI.cpp:348 -#: src/CelestialNavigationUI.cpp:598 +#: src\CelestialNavigationUI.cpp:194 src\CelestialNavigationUI.cpp:353 +#: src\CelestialNavigationUI.cpp:605 msgid "Degrees" msgstr "" -#: src/CelestialNavigationUI.cpp:196 src/CelestialNavigationUI.cpp:278 -#: src/CelestialNavigationUI.cpp:439 +#: src\CelestialNavigationUI.cpp:201 src\CelestialNavigationUI.cpp:283 +#: src\CelestialNavigationUI.cpp:444 msgid "Minutes" msgstr "" -#: src/CelestialNavigationUI.cpp:200 +#: src\CelestialNavigationUI.cpp:205 msgid "10" msgstr "" -#: src/CelestialNavigationUI.cpp:203 +#: src\CelestialNavigationUI.cpp:208 msgid "Minutes Certainty" msgstr "" -#: src/CelestialNavigationUI.cpp:217 +#: src\CelestialNavigationUI.cpp:222 msgid "Lunar Altitude" msgstr "" -#: src/CelestialNavigationUI.cpp:226 +#: src\CelestialNavigationUI.cpp:231 msgid "Body Altitude" msgstr "" -#: src/CelestialNavigationUI.cpp:243 +#: src\CelestialNavigationUI.cpp:248 msgid "Sight" msgstr "" -#: src/CelestialNavigationUI.cpp:271 +#: src\CelestialNavigationUI.cpp:276 msgid "Hours" msgstr "" -#: src/CelestialNavigationUI.cpp:285 src/CelestialNavigationUI.cpp:303 -#: src/CelestialNavigationUI.cpp:860 +#: src\CelestialNavigationUI.cpp:290 src\CelestialNavigationUI.cpp:308 +#: src\CelestialNavigationUI.cpp:869 msgid "Seconds" msgstr "" -#: src/CelestialNavigationUI.cpp:293 +#: src\CelestialNavigationUI.cpp:298 msgid "Certainty" msgstr "" -#: src/CelestialNavigationUI.cpp:323 -msgid "Time" -msgstr "" - -#: src/CelestialNavigationUI.cpp:330 src/CelestialNavigationUI.cpp:580 +#: src\CelestialNavigationUI.cpp:335 src\CelestialNavigationUI.cpp:587 msgid "Distance" msgstr "" -#: src/CelestialNavigationUI.cpp:337 src/CelestialNavigationUI.cpp:587 +#: src\CelestialNavigationUI.cpp:342 src\CelestialNavigationUI.cpp:594 msgid "Nm" msgstr "" -#: src/CelestialNavigationUI.cpp:341 src/CelestialNavigationUI.cpp:591 +#: src\CelestialNavigationUI.cpp:346 src\CelestialNavigationUI.cpp:598 msgid "Bearing" msgstr "" -#: src/CelestialNavigationUI.cpp:352 src/CelestialNavigationUI.cpp:602 +#: src\CelestialNavigationUI.cpp:357 src\CelestialNavigationUI.cpp:609 msgid "Magnetic Bearing" msgstr "" -#: src/CelestialNavigationUI.cpp:359 +#: src\CelestialNavigationUI.cpp:364 msgid "DR Shift" msgstr "" -#: src/CelestialNavigationUI.cpp:366 +#: src\CelestialNavigationUI.cpp:371 msgid "Transparency" msgstr "" -#: src/CelestialNavigationUI.cpp:387 +#: src\CelestialNavigationUI.cpp:392 msgid "Config" msgstr "" -#: src/CelestialNavigationUI.cpp:399 +#: src\CelestialNavigationUI.cpp:404 msgid "Eye Height" msgstr "" -#: src/CelestialNavigationUI.cpp:403 +#: src\CelestialNavigationUI.cpp:408 msgid "2" msgstr "" -#: src/CelestialNavigationUI.cpp:406 +#: src\CelestialNavigationUI.cpp:411 msgid "Meters" msgstr "" -#: src/CelestialNavigationUI.cpp:410 +#: src\CelestialNavigationUI.cpp:415 msgid "Temperature" msgstr "" -#: src/CelestialNavigationUI.cpp:417 +#: src\CelestialNavigationUI.cpp:422 msgid "Celcius" msgstr "" -#: src/CelestialNavigationUI.cpp:421 +#: src\CelestialNavigationUI.cpp:426 msgid "Pressure" msgstr "" -#: src/CelestialNavigationUI.cpp:428 +#: src\CelestialNavigationUI.cpp:433 msgid "MilliBars" msgstr "" -#: src/CelestialNavigationUI.cpp:432 +#: src\CelestialNavigationUI.cpp:437 msgid "Index Error" msgstr "" -#: src/CelestialNavigationUI.cpp:446 +#: src\CelestialNavigationUI.cpp:451 msgid "Set As Defaults" msgstr "" -#: src/CelestialNavigationUI.cpp:453 +#: src\CelestialNavigationUI.cpp:458 msgid "Parameters" msgstr "" -#: src/CelestialNavigationUI.cpp:469 +#: src\CelestialNavigationUI.cpp:474 msgid "Calculations" msgstr "" -#: src/CelestialNavigationUI.cpp:571 +#: src\CelestialNavigationUI.cpp:578 msgid "Shift all visible Sights" msgstr "" -#: src/CelestialNavigationUI.cpp:649 src/CelestialNavigationUI.cpp:760 +#: src\CelestialNavigationUI.cpp:656 src\CelestialNavigationUI.cpp:769 msgid "Latitude" msgstr "" -#: src/CelestialNavigationUI.cpp:658 src/CelestialNavigationUI.cpp:768 +#: src\CelestialNavigationUI.cpp:665 src\CelestialNavigationUI.cpp:777 msgid "Longitude" msgstr "" -#: src/CelestialNavigationUI.cpp:669 src/CelestialNavigationUI.cpp:679 -msgid "MyLabel" +#: src\CelestialNavigationUI.cpp:691 +msgid "Boat Position" msgstr "" -#: src/CelestialNavigationUI.cpp:686 -msgid "Done" +#: src\CelestialNavigationUI.cpp:695 +msgid "Magnetic" msgstr "" -#: src/CelestialNavigationUI.cpp:689 -msgid "Magnetic" +#: src\CelestialNavigationUI.cpp:698 +msgid "Done" msgstr "" -#: src/CelestialNavigationUI.cpp:753 +#: src\CelestialNavigationUI.cpp:762 msgid "Fix From Visible Sights" msgstr "" -#: src/CelestialNavigationUI.cpp:764 +#: src\CelestialNavigationUI.cpp:773 msgid " N/A " msgstr "" -#: src/CelestialNavigationUI.cpp:772 +#: src\CelestialNavigationUI.cpp:781 msgid " N/A " msgstr "" -#: src/CelestialNavigationUI.cpp:776 +#: src\CelestialNavigationUI.cpp:785 msgid "Error" msgstr "" -#: src/CelestialNavigationUI.cpp:780 +#: src\CelestialNavigationUI.cpp:789 msgid " N/A " msgstr "" -#: src/CelestialNavigationUI.cpp:787 src/CelestialNavigationUI.cpp:794 +#: src\CelestialNavigationUI.cpp:796 src\CelestialNavigationUI.cpp:803 msgid "Initial" msgstr "" -#: src/CelestialNavigationUI.cpp:801 +#: src\CelestialNavigationUI.cpp:810 msgid "Alg" msgstr "" -#: src/CelestialNavigationUI.cpp:806 +#: src\CelestialNavigationUI.cpp:815 msgid "Plane" msgstr "" -#: src/CelestialNavigationUI.cpp:807 +#: src\CelestialNavigationUI.cpp:816 msgid "Sphere" msgstr "" -#: src/CelestialNavigationUI.cpp:808 +#: src\CelestialNavigationUI.cpp:817 msgid "Cone" msgstr "" -#: src/CelestialNavigationUI.cpp:809 +#: src\CelestialNavigationUI.cpp:818 msgid "Cone 2" msgstr "" -#: src/CelestialNavigationUI.cpp:813 +#: src\CelestialNavigationUI.cpp:822 msgid "Go" msgstr "" -#: src/CelestialNavigationUI.cpp:850 src/CelestialNavigationUI.h:303 +#: src\CelestialNavigationUI.cpp:859 src\CelestialNavigationUI.h:308 msgid "Clock Correction" msgstr "" -#: src/CelestialNavigationUI.h:78 +#: src\CelestialNavigationUI.h:82 msgid "Celestial Navigation Sights" msgstr "" -#: src/CelestialNavigationUI.h:169 +#: src\CelestialNavigationUI.h:173 msgid "Sight Properties" msgstr "" -#: src/CelestialNavigationUI.h:200 +#: src\CelestialNavigationUI.h:204 msgid "Dead Reckoning shift" msgstr "" -#: src/CelestialNavigationUI.h:227 +#: src\CelestialNavigationUI.h:232 msgid "Find Celestial Body" msgstr "" -#: src/Sight.cpp:160 +#: src\FixDialog.cpp:192 +msgid "Shifted sights are not used to compute a fix, determine fix visually instead.\n" +msgstr "" + +#: src\FixDialog.cpp:193 +msgid "Fix Position" +msgstr "" + +#: src\FixDialog.cpp:338 src\FixDialog.cpp:339 src\FixDialog.cpp:340 +msgid " N/A " +msgstr "" + +#: src\Sight.cpp:172 src\Sight.cpp.bak:173 msgid "Astrolab failed, data unavailable:\n" msgstr "" -#: src/Sight.cpp:161 +#: src\Sight.cpp:173 src\Sight.cpp.bak:174 msgid "\n" "Did you forget to install vsop87d.txt?\n" msgstr "" -#: src/Sight.cpp:162 +#: src\Sight.cpp:174 src\Sight.cpp.bak:175 msgid "The plugin will not work correctly" msgstr "" -#: src/Sight.cpp:163 +#: src\Sight.cpp:175 src\Sight.cpp.bak:176 msgid "Failure Alert" msgstr "" -#: src/Sight.cpp:474 +#: src\Sight.cpp:495 src\Sight.cpp.bak:496 #, c-format msgid "Applying clock correction of %d seconds\n\n" msgstr "" -#: src/Sight.cpp:536 +#: src\Sight.cpp:557 src\Sight.cpp.bak:558 msgid "Almanac Data For " msgstr "" -#: src/Sight.cpp:537 +#: src\Sight.cpp:558 src\Sight.cpp.bak:559 #, c-format msgid "\n" "Geographical Position (lat, lon) = %.4f %.4f\n" @@ -410,23 +474,27 @@ msgid "\n" "HP = %.1f'\n\n" msgstr "" -#: src/Sight.cpp:552 src/Sight.cpp:690 +#: src\Sight.cpp:573 src\Sight.cpp:711 src\Sight.cpp.bak:574 +#: src\Sight.cpp.bak:712 msgid "Formulas used to calculate sight\n\n" msgstr "" -#: src/Sight.cpp:556 src/Sight.cpp:694 +#: src\Sight.cpp:577 src\Sight.cpp:715 src\Sight.cpp.bak:578 +#: src\Sight.cpp.bak:716 #, c-format msgid "Index Error is %.4f degrees\n\n" msgstr "" -#: src/Sight.cpp:561 src/Sight.cpp:699 +#: src\Sight.cpp:582 src\Sight.cpp:720 src\Sight.cpp.bak:583 +#: src\Sight.cpp.bak:721 #, c-format msgid "Eye Height is %.4f meters\n" "Height Correction Degrees = 1.758*sqrt(%.4f) / 60.0\n" "Height Correction Degrees = %.4f\n" msgstr "" -#: src/Sight.cpp:568 +#: src\Sight.cpp:589 src\Sight.cpp:799 src\Sight.cpp.bak:590 +#: src\Sight.cpp.bak:800 #, c-format msgid "\n" "Apparent Altitude (Ha)\n" @@ -435,7 +503,8 @@ msgid "\n" "ApparentAltitude = %.4f\n" msgstr "" -#: src/Sight.cpp:586 src/Sight.cpp:789 +#: src\Sight.cpp:607 src\Sight.cpp:810 src\Sight.cpp.bak:608 +#: src\Sight.cpp.bak:811 #, c-format msgid "\n" "Refraction Correction\n" @@ -444,21 +513,24 @@ msgid "\n" "x = %.4f\n" msgstr "" -#: src/Sight.cpp:591 src/Sight.cpp:794 +#: src\Sight.cpp:612 src\Sight.cpp:815 src\Sight.cpp.bak:613 +#: src\Sight.cpp.bak:816 #, c-format msgid "RefractionCorrection = .267 * Pressure / (x*(Temperature + 273.15)) / 60.0\n" "RefractionCorrection = .267 * %.4f / (x*(%.4f + 273.15)) / 60.0\n" "RefractionCorrection = %.4f\n" msgstr "" -#: src/Sight.cpp:606 src/Sight.cpp:808 +#: src\Sight.cpp:627 src\Sight.cpp:829 src\Sight.cpp.bak:628 +#: src\Sight.cpp.bak:830 #, c-format msgid "\n" "Sun selected, Limb Correction\n" "ra = %.4f, lc = 0.266564/ra = %.4f\n" msgstr "" -#: src/Sight.cpp:616 src/Sight.cpp:732 +#: src\Sight.cpp:637 src\Sight.cpp:753 src\Sight.cpp.bak:638 +#: src\Sight.cpp.bak:754 #, c-format msgid "\n" "Moon selected, Limb Correction\n" @@ -467,21 +539,25 @@ msgid "\n" "lc = %.4f\n" msgstr "" -#: src/Sight.cpp:626 src/Sight.cpp:741 src/Sight.cpp:816 +#: src\Sight.cpp:647 src\Sight.cpp:762 src\Sight.cpp:837 src\Sight.cpp.bak:648 +#: src\Sight.cpp.bak:763 src\Sight.cpp.bak:838 msgid "Upper Limb" msgstr "" -#: src/Sight.cpp:629 src/Sight.cpp:744 src/Sight.cpp:819 +#: src\Sight.cpp:650 src\Sight.cpp:765 src\Sight.cpp:840 src\Sight.cpp.bak:651 +#: src\Sight.cpp.bak:766 src\Sight.cpp.bak:841 msgid "Lower Limb" msgstr "" -#: src/Sight.cpp:632 src/Sight.cpp:822 +#: src\Sight.cpp:653 src\Sight.cpp:843 src\Sight.cpp.bak:654 +#: src\Sight.cpp.bak:844 #, c-format msgid "\n" "LimbCorrection = %.4f\n" msgstr "" -#: src/Sight.cpp:636 src/Sight.cpp:826 +#: src\Sight.cpp:657 src\Sight.cpp:847 src\Sight.cpp.bak:658 +#: src\Sight.cpp.bak:848 #, c-format msgid "\n" "Corrected Altitude\n" @@ -490,28 +566,31 @@ msgid "\n" "CorrectedAltitude = %.4f\n" msgstr "" -#: src/Sight.cpp:650 src/Sight.cpp:840 +#: src\Sight.cpp:671 src\Sight.cpp:861 src\Sight.cpp.bak:672 +#: src\Sight.cpp.bak:862 #, c-format msgid "\n" "Sun selected, parallax correction\n" "rad = %.4f, HP = 0.002442/rad = %.4f\n" msgstr "" -#: src/Sight.cpp:659 src/Sight.cpp:764 +#: src\Sight.cpp:680 src\Sight.cpp:785 src\Sight.cpp.bak:681 +#: src\Sight.cpp.bak:786 #, c-format msgid "\n" "Moon selected, parallax correction\n" "HP = %.4f\n" msgstr "" -#: src/Sight.cpp:665 src/Sight.cpp:846 +#: src\Sight.cpp:686 src\Sight.cpp:867 src\Sight.cpp.bak:687 +#: src\Sight.cpp.bak:868 #, c-format msgid "ParallaxCorrection = -180/Pi * asin( sin(Pi/180 * HP ) * cos(Pi/180 * CorrectedAltitude))\n" "ParallaxCorrection = -180/Pi * asin( sin(Pi/180 * %.4f ) * cos(Pi/180 * %.4f))\n" "ParallaxCorrection = %.4f\n" msgstr "" -#: src/Sight.cpp:672 +#: src\Sight.cpp:693 src\Sight.cpp.bak:694 #, c-format msgid "\n" "Observed Altitude (Ho)\n" @@ -520,16 +599,16 @@ msgid "\n" "ObservedAltitude = %.4f\n" msgstr "" -#: src/Sight.cpp:706 +#: src\Sight.cpp:727 src\Sight.cpp.bak:728 #, c-format msgid "\n" "Apparent Moon Altitude (Ha)\n" "ApparentAltitudeMoon = MeasurementMoon - IndexCorrection - EyeHeightCorrection\n" -" ApparentAltitudeMoon = %.4f - %.4f - %.4f\n" +"ApparentAltitudeMoon = %.4f - %.4f - %.4f\n" "ApparentAltitudeMoon = %.4f\n" msgstr "" -#: src/Sight.cpp:717 +#: src\Sight.cpp:738 src\Sight.cpp.bak:739 #, c-format msgid "\n" "Refraction Correction\n" @@ -538,20 +617,21 @@ msgid "\n" "x = %.4f\n" msgstr "" -#: src/Sight.cpp:722 +#: src\Sight.cpp:743 src\Sight.cpp.bak:744 #, c-format msgid "RefractionCorrectionMoon = .267 * Pressure / (x*(Temperature + 273.15)) / 60.0\n" "RefractionCorrectionMoon = .267 * %.4f / (x*(%.4f + 273.15)) / 60.0\n" "RefractionCorrectionMoon = %.4f\n" msgstr "" -#: src/Sight.cpp:747 src/Sight.cpp:750 +#: src\Sight.cpp:768 src\Sight.cpp:771 src\Sight.cpp.bak:769 +#: src\Sight.cpp.bak:772 #, c-format msgid "\n" "LimbCorrectionMoon = %.4f\n" msgstr "" -#: src/Sight.cpp:753 +#: src\Sight.cpp:774 src\Sight.cpp.bak:775 #, c-format msgid "\n" "Corrected Altitude\n" @@ -560,107 +640,82 @@ msgid "\n" "CorrectedAltitudeMoon = %.4f\n" msgstr "" -#: src/Sight.cpp:768 +#: src\Sight.cpp:789 src\Sight.cpp.bak:790 #, c-format msgid "ParallaxCorrectionMoon = -180/Pi * asin( sin(Pi/180 * HP ) * cos(Pi/180 * CorrectedAltitude))\n" -" ParallaxCorrectionMoon = -180/Pi * asin( sin(Pi/180 * %.4f ) * cos(Pi/180 * %.4f))\n" +"ParallaxCorrectionMoon = -180/Pi * asin( sin(Pi/180 * %.4f ) * cos(Pi/180 * %.4f))\n" "ParallaxCorrectionMoon = %.4f\n" msgstr "" -#: src/Sight.cpp:778 -#, c-format -msgid "\n" -"Apparent Altitude (Ha)\n" -"ApparentAltitude = Measurement - IndexCorrection - EyeHeightCorrection\n" -" ApparentAltitude = %.4f - %.4f - %.4f\n" -"ApparentAltitude = %.4f\n" -msgstr "" - -#: src/Sight.cpp:857 +#: src\Sight.cpp:878 src\Sight.cpp.bak:879 #, c-format msgid "CorrectionsMoon = %.4f\n" "CorrectionsBody = %.4f\n" "Corrections = abs(CorrectionsMoon - CorrectionsBody) = %.4f\n" msgstr "" -#: src/Sight.cpp:863 +#: src\Sight.cpp:884 src\Sight.cpp.bak:885 #, c-format msgid "CorrectedMeasurement = Measurement - Corrections - IndexCorrection\n" "CorrectedMeasurement = %.4f - %.4f - %.4f\n" "CorrectedMeasurement = %.4f\n" msgstr "" -#: src/Sight.cpp:888 +#: src\Sight.cpp:909 src\Sight.cpp.bak:910 msgid "\n" "Calculated angle between Moon and " msgstr "" -#: src/Sight.cpp:890 +#: src\Sight.cpp:911 src\Sight.cpp.bak:912 #, c-format msgid "\n" "Error from measurement: %.4f" msgstr "" -#: src/Sight.cpp:894 +#: src\Sight.cpp:915 src\Sight.cpp.bak:916 msgid "\n" "Moon takes 28 days to orbit, one degree of error takes 6720 seconds" msgstr "" -#: src/Sight.cpp:895 +#: src\Sight.cpp:916 src\Sight.cpp.bak:917 #, c-format msgid "\n" "Time correction %.4f seconds" msgstr "" -#: src/Sight.cpp:1099 +#: src\Sight.cpp:1120 src\Sight.cpp.bak:1121 msgid "Building bearing Sight Positions" msgstr "" -#: src/SightDialog.cpp:172 +#: src\SightDialog.cpp:184 msgid "Measurement certainty likely set to small, sight may not appear " msgstr "" -#: src/SightDialog.cpp:173 src/SightDialog.cpp:256 +#: src\SightDialog.cpp:185 src\SightDialog.cpp:279 msgid "Warning" msgstr "" -#: src/SightDialog.cpp:255 +#: src\SightDialog.cpp:278 msgid "Lunar shot will be invalid taking distance from moon to itself" msgstr "" -#: src/celestial_navigation_pi.cpp:90 -msgid "Failed to load file:\n" -msgstr "" - -#: src/celestial_navigation_pi.cpp:91 -msgid "\n" -"Magnetic data will not be available for the celestial navigation plugin." -msgstr "" - -#: src/celestial_navigation_pi.cpp:92 -msgid "OpenCPN Alert" +#: src\celestial_navigation_pi.cpp:179 +msgid "open error" msgstr "" -#: src/celestial_navigation_pi.cpp:157 -msgid "Celestial Navigation PlugIn for OpenCPN" +#: src\celestial_navigation_pi.cpp:180 +msgid "corrupt record" msgstr "" -#: src/celestial_navigation_pi.cpp:162 -msgid "Celestial Navigation PlugIn for OpenCPN.\n" -"Implements nautical almanac for sun, moon, planets,\n" -"and various navigational stars.\n" -"Compute position fix from celestial measurements." +#: src\celestial_navigation_pi.cpp:181 +msgid "too many models" msgstr "" -#: src/FixDialog.cpp:189 -msgid "Shifted sights are not used to compute a fix, determine fix visually instead.\n" +#: src\celestial_navigation_pi.cpp:184 +msgid "Magnetic data will not be available for the celestial navigation plugin." msgstr "" -#: src/FixDialog.cpp:190 -msgid "Fix Position" -msgstr "" - -#: src/FixDialog.cpp:335 src/FixDialog.cpp:336 src/FixDialog.cpp:337 -msgid " N/A " +#: src\celestial_navigation_pi.cpp:185 +msgid "OpenCPN Alert" msgstr "" diff --git a/src/CelestialNavigationDialog-2.3.5.1-no-android.cpp b/src/CelestialNavigationDialog-2.3.5.1-no-android.cpp new file mode 100644 index 0000000..fa37432 --- /dev/null +++ b/src/CelestialNavigationDialog-2.3.5.1-no-android.cpp @@ -0,0 +1,618 @@ +/****************************************************************************** + * + * Project: OpenCPN + * Purpose: Celestial Navigation Support + * Author: Sean D'Epagnier + * + *************************************************************************** + * Copyright (C) 2015 by Sean D'Epagnier * + * * + * This program is free software; you can redistribute it and/or modify * + * it under the terms of the GNU General Public License as published by * + * the Free Software Foundation; either version 3 of the License, or * + * (at your option) any later version. * + * * + * This program is distributed in the hope that it will be useful, * + * but WITHOUT ANY WARRANTY; without even the implied warranty of * + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * + * GNU General Public License for more details. * + * * + * You should have received a copy of the GNU General Public License * + * along with this program; if not, write to the * + * Free Software Foundation, Inc., * + * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. * + *************************************************************************** + * + */ + +#include +#include + +#include +#include +#include + +#include "tinyxml.h" + +#include + +#include "ocpn_plugin.h" + +#include "Sight.h" +#include "SightDialog.h" +#include "CelestialNavigationDialog.h" +#include "celestial_navigation_pi.h" +//HEAD +// line +//#include "zuFile.h" + +//#include "astrolabe/astrolabe.hpp" +//static wxString DataDirectory()//{ +// wxString s = wxFileName::GetPathSeparator(); +// return *GetpSharedDataLocation() + "plugins" + s + "celestial_navigation_pi" + s + "data" + s; +//} + +//static wxString UserDataDirectory() +// { +// wxString s = wxFileName::GetPathSeparator(); +// return *GetpPrivateApplicationDataLocation() + s + "plugins" +// + s + "celestial_navigation" + s; +// } +// master + +/* XPM */ +static const char *eye[]={ +"20 20 7 1", +". c none", +"# c #000000", +"a c #333333", +"b c #666666", +"c c #999999", +"d c #cccccc", +"e c #ffffff", +"....................", +"....................", +"....................", +"....................", +".......######.......", +".....#aabccb#a#.....", +"....#deeeddeebcb#...", +"..#aeeeec##aceaec#..", +".#bedaeee####dbcec#.", +"#aeedbdabc###bcceea#", +".#bedad######abcec#.", +"..#be#d######dadb#..", +"...#abac####abba#...", +".....##acbaca##.....", +".......######.......", +"....................", +"....................", +"....................", +"....................", +"...................."}; + +enum { rmVISIBLE = 0, rmTYPE, rmBODY, rmTIME, rmMEASUREMENT, rmCOLOR };// RMColumns; + +// sort callback. Sort by body. +#if wxCHECK_VERSION(2, 9, 0) +int wxCALLBACK SortSights(long item1, long item2, wxIntPtr list) +#else +int wxCALLBACK SortSights(long item1, long item2, long list) +#endif +{ + wxListCtrl *lc = (wxListCtrl*)list; + + wxListItem it1, it2; + it1.SetId(lc->FindItem(-1, item1)); + it1.SetColumn(1); + + it2.SetId(lc->FindItem(-1, item2)); + it2.SetColumn(1); + + lc->GetItem(it1); + lc->GetItem(it2); + + return it1.GetText().Cmp(it2.GetText()); +} + +CelestialNavigationDialog::CelestialNavigationDialog(wxWindow *parent) + : CelestialNavigationDialogBase(parent), + m_FixDialog(this), + m_ClockCorrectionDialog(this) +{ + wxFileConfig *pConf = GetOCPNConfigObject(); + + pConf->SetPath( _T("/PlugIns/CelestialNavigation") ); + +//#ifdef __WXGTK__ +// Move(0, 0); // workaround for gtk autocentre dialog behavior +//#endif +// Move(pConf->Read ( _T ( "DialogPosX" ), 20L ), pConf->Read ( _T ( "DialogPosY" ), 20L )); + wxPoint p = GetPosition(); + pConf->Read ( _T ( "DialogX" ), &p.x, p.x); + pConf->Read ( _T ( "DialogY" ), &p.y, p.y); + SetPosition(p); + + wxSize s = GetSize(); + pConf->Read ( _T ( "DialogWidth" ), &s.x, s.x); + pConf->Read ( _T ( "DialogHeight" ), &s.y, s.y); + SetSize(s); + +// create a image list for the list with just the eye icon + wxImageList *imglist = new wxImageList(20, 20, true, 1); + imglist->Add(wxBitmap(eye)); + m_lSights->AssignImageList(imglist, wxIMAGE_LIST_SMALL); + + m_lSights->InsertColumn(rmVISIBLE, wxT("")); + m_lSights->SetColumnWidth(0, 28); + + m_lSights->InsertColumn(rmTYPE, _("Type")); + m_lSights->InsertColumn(rmBODY, _("Body")); + m_lSights->InsertColumn(rmTIME, _("Time (UT)")); + m_lSights->InsertColumn(rmMEASUREMENT, _("Measurement")); + m_lSights->InsertColumn(rmCOLOR, _("Color")); + + m_sights_path = celestial_navigation_pi::StandardPath() + _T("Sights.xml"); + + if(!OpenXML(m_sights_path, false)) { + /* create directory for plugin files if it doesn't already exist */ + wxFileName fn(m_sights_path); + wxFileName fn2 = fn.GetPath(); + if(!fn.DirExists()) { + fn2.Mkdir(); + fn.Mkdir(); + } + } +// HEAD +// line + +// from HEAD +//#ifdef __OCPN__ANDROID__ +// GetHandle()->setAttribute(Qt::WA_AcceptTouchEvents); +// GetHandle()->grabGesture(Qt::PanGesture); +// GetHandle()->setStyleSheet( qtStyleSheet); +// +// m_lSights->GetHandle()->setAttribute(Qt::WA_AcceptTouchEvents); +// m_lSights->GetHandle()->grabGesture(Qt::PanGesture); +// m_lSights->Connect( wxEVT_QT_PANGESTURE, +// (wxObjectEventFunction) (wxEventFunction) &CelestialNavigationDialog::OnEvtPanGesture, NULL, this ); + +// GetHandle()->setStyleSheet( qtStyleSheet); +// Move(0, 0); +// #endif +// beginning of parent of parent of ddd0bac... android build +// +// end of parent of ddd0bac... android build +//} + +//#ifdef __OCPN__ANDROID__ +//void CelestialNavigationDialog::OnEvtPanGesture( wxQT_PanGestureEvent &event) +//{ +// switch(event.GetState()){ +// case GestureStarted: +// m_startPos = GetPosition(); +// m_startMouse = event.GetCursorPos(); //g_mouse_pos_screen; +// break; +// default: +// { +// wxPoint pos = event.GetCursorPos(); +// int x = wxMax(0, pos.x + m_startPos.x - m_startMouse.x); +// int y = wxMax(0, pos.y + m_startPos.y - m_startMouse.y); +// int xmax = ::wxGetDisplaySize().x - GetSize().x; +// x = wxMin(x, xmax); +// int ymax = ::wxGetDisplaySize().y - GetSize().y; // Some fluff at the bottom +// y = wxMin(y, ymax); +// +// Move(x, y); +// } break; +// } +// master +} + +CelestialNavigationDialog::~CelestialNavigationDialog() +{ + wxFileConfig *pConf = GetOCPNConfigObject(); + pConf->SetPath( _T("/PlugIns/CelestialNavigation") ); + + wxPoint p = GetPosition(); + pConf->Write ( _T ( "DialogX" ), p.x); + pConf->Write ( _T ( "DialogY" ), p.y); + + wxSize s = GetSize(); + pConf->Write ( _T ( "DialogWidth" ), s.x); + pConf->Write ( _T ( "DialogHeight" ), s.y); + + SaveXML(m_sights_path); +} + +#define FAIL(X) do { error = X; goto failed; } while(0) +double AttributeDouble(TiXmlElement *e, const char *name, double def) +{ + const char *attr = e->Attribute(name); + if(!attr) + return def; + char *end; + double d = strtod(attr, &end); + if(end == attr) + return def; + return d; +} + +int AttributeInt(TiXmlElement *e, const char *name, int def) +{ + const char *attr = e->Attribute(name); + if(!attr) + return def; + char *end; + long d = strtol(attr, &end, 10); + if(end == attr) + return def; + return d; +} + +bool AttributeBool(TiXmlElement *e, const char *name, bool def) +{ + return AttributeInt(e, name, def) != 0; +} + +bool CelestialNavigationDialog::OpenXML(wxString filename, bool reportfailure) +{ + TiXmlDocument doc; + wxString error; + + wxFileName fn(filename); + + if(!doc.LoadFile(filename.mb_str())) + FAIL(_("Failed to load file: ") + filename); + else { + TiXmlHandle root(doc.RootElement()); + + if(strcmp(root.Element()->Value(), "OpenCPNCelestialNavigation")) + FAIL(_("Invalid xml file")); + + m_lSights->DeleteAllItems(); + + for(TiXmlElement* e = root.FirstChild().Element(); e; e = e->NextSiblingElement()) { + if(!strcmp(e->Value(), "ClockError")) { + m_ClockCorrectionDialog.m_sClockCorrection->SetValue(AttributeInt(e, "Seconds", 0)); + } else if(!strcmp(e->Value(), "Sight")) { + Sight s; + + s.m_bVisible = AttributeBool(e, "Visible", true); + s.m_Type = (Sight::Type)AttributeInt(e, "Type", 0); + s.m_Body = wxString::FromUTF8(e->Attribute("Body")); + s.m_BodyLimb = (Sight::BodyLimb)AttributeInt(e, "BodyLimb", 0); + + s.m_DateTime.ParseISODate(wxString::FromUTF8(e->Attribute("Date"))); + + wxDateTime time; + time.ParseISOTime(wxString::FromUTF8(e->Attribute("Time"))); + + if(s.m_DateTime.IsValid() && time.IsValid()) { + s.m_DateTime.SetHour(time.GetHour()); + s.m_DateTime.SetMinute(time.GetMinute()); + s.m_DateTime.SetSecond(time.GetSecond()); + } else + continue; /* skip if invalid */ + + s.m_TimeCertainty = AttributeDouble(e, "TimeCertainty", 0); + + s.m_Measurement = AttributeDouble(e, "Measurement", 0); + s.m_MeasurementCertainty = AttributeDouble(e, "MeasurementCertainty", .25); + + s.m_EyeHeight = AttributeDouble(e, "EyeHeight", 2); + s.m_Temperature = AttributeDouble(e, "Temperature", 10); + s.m_Pressure = AttributeDouble(e, "Pressure", 1010); + s.m_IndexError = AttributeDouble(e, "IndexError", 0); + + s.m_ShiftNm = AttributeDouble(e, "ShiftNm", 0); + s.m_ShiftBearing = AttributeDouble(e, "ShiftBearing", 0); + s.m_bMagneticShiftBearing = AttributeBool(e, "MagneticShiftBearing", 0); + + s.m_ColourName = wxString::FromUTF8(e->Attribute("ColourName")); + s.m_Colour = wxColour(wxString::FromUTF8(e->Attribute("Colour"))); + s.m_Colour.Set(s.m_Colour.Red(), s.m_Colour.Green(), s.m_Colour.Blue(), + AttributeInt(e, "Transparency", 150)); + + Sight *ns = new Sight(s); + + ns->Recompute(m_ClockCorrectionDialog.m_sClockCorrection->GetValue()); + ns->RebuildPolygons(); + InsertSight(ns, false); + } else + FAIL(_("Unrecognized xml node")); + } + } + + RequestRefresh( GetParent() ); + return true; +failed: + + if(reportfailure) { + wxMessageDialog mdlg(this, error, _("Celestial Navigation"), wxOK | wxICON_ERROR); + mdlg.ShowModal(); + } + return false; +} + +void CelestialNavigationDialog::SaveXML(wxString filename) +{ + TiXmlDocument doc; + TiXmlDeclaration* decl = new TiXmlDeclaration( "1.0", "utf-8", "" ); + doc.LinkEndChild( decl ); + + TiXmlElement * root = new TiXmlElement( "OpenCPNCelestialNavigation" ); + doc.LinkEndChild( root ); + + char version[24]; + sprintf(version, "%d.%d", PLUGIN_VERSION_MAJOR, PLUGIN_VERSION_MINOR); + root->SetAttribute("version", version); + root->SetAttribute("creator", "Opencpn Celestial Navigation plugin"); + + TiXmlElement *c = new TiXmlElement( "ClockError" ); + c->SetAttribute("Seconds", m_ClockCorrectionDialog.m_sClockCorrection->GetValue()); + root->LinkEndChild(c); + + for(int i = 0; iGetItemCount(); i++) { + TiXmlElement *c = new TiXmlElement( "Sight" ); + + Sight *s = (Sight*)wxUIntToPtr(m_lSights->GetItemData(i)); + + c->SetAttribute("Visible", s->m_bVisible); + c->SetAttribute("Type", s->m_Type); + c->SetAttribute("Body", s->m_Body.mb_str()); + c->SetAttribute("BodyLimb", s->m_BodyLimb); + + c->SetAttribute("Date", s->m_DateTime.FormatISODate().mb_str()); + c->SetAttribute("Time", s->m_DateTime.FormatISOTime().mb_str()); + + c->SetDoubleAttribute("TimeCertainty", s->m_TimeCertainty); + + c->SetDoubleAttribute("Measurement", s->m_Measurement); + c->SetDoubleAttribute("MeasurementCertainty", s->m_MeasurementCertainty); + + c->SetDoubleAttribute("EyeHeight", s->m_EyeHeight); + c->SetDoubleAttribute("Temperature", s->m_Temperature); + c->SetDoubleAttribute("Pressure", s->m_Pressure); + c->SetDoubleAttribute("IndexError", s->m_IndexError); + + c->SetDoubleAttribute("ShiftNm", s->m_ShiftNm); + c->SetDoubleAttribute("ShiftBearing", s->m_ShiftBearing); + c->SetDoubleAttribute("MagneticShiftBearing", s->m_bMagneticShiftBearing); + + c->SetAttribute("ColourName", s->m_ColourName.mb_str()); + c->SetAttribute("Colour", s->m_Colour.GetAsString().mb_str()); + c->SetAttribute("Transparency", s->m_Colour.Alpha()); + + root->LinkEndChild(c); + } + + if(!doc.SaveFile(filename.mb_str())) { + wxMessageDialog mdlg(this, _("Failed to save xml file: ") + filename, + _("Celestial Navigation"), wxOK | wxICON_ERROR); + mdlg.ShowModal(); + } +} + +void CelestialNavigationDialog::InsertSight(Sight *s, bool warnings) +{ +#if 1 + wxListItem item; + item.SetId(m_lSights->GetItemCount()); + item.SetData(s); + item.SetMask(item.GetMask() | wxLIST_MASK_TEXT); + + int idx = m_lSights->InsertItem(item); + m_lSights->SetItemImage(idx, s->IsVisible() ? 0 : -1); +#else + idx = m_lSights->InsertItem(idx+1, (*it)->IsVisible() ? 0 : -1); +#endif + UpdateSight(idx, warnings); +} + +void CelestialNavigationDialog::UpdateSight(int idx, bool warnings) +{ + Sight *s = (Sight*)wxUIntToPtr(m_lSights->GetItemData(idx)); + + // then add sights to the listctrl + m_lSights->SetItem(idx, rmTYPE, SightType[s->m_Type]); + m_lSights->SetItem(idx, rmBODY, s->m_Body); + wxDateTime dt = s->m_DateTime; + m_lSights->SetItem(idx, rmTIME, dt.FormatISODate() + _T(" ") + dt.FormatISOTime()); + m_lSights->SetItem(idx, rmMEASUREMENT, wxString::Format(_T("%.4f"), s->m_Measurement)); + if(s->m_Type == Sight::LUNAR) + m_lSights->SetItem(idx, rmCOLOR, _("Time Correction") + + wxString::Format(_T(": %.4f"), s->m_TimeCorrection)); + else + m_lSights->SetItem(idx, rmCOLOR, s->m_ColourName); + + m_lSights->SetColumnWidth(rmTYPE, wxLIST_AUTOSIZE); + m_lSights->SetColumnWidth(rmBODY, wxLIST_AUTOSIZE); + m_lSights->SetColumnWidth(rmTIME, wxLIST_AUTOSIZE); + m_lSights->SetColumnWidth(rmCOLOR, wxLIST_AUTOSIZE); + + if(m_lSights->GetColumnWidth(1) < 20) + m_lSights->SetColumnWidth(1, 50); + + if(m_lSights->GetColumnWidth(2) < 20) + m_lSights->SetColumnWidth(2, 50); + + m_lSights->SortItems(SortSights, (long)m_lSights); + + UpdateButtons(); + UpdateFix(warnings); +} + +void CelestialNavigationDialog::UpdateSights() +{ + for(int i = 0; iGetItemCount(); i++) + UpdateSight(i); +} + +void CelestialNavigationDialog::UpdateButtons() +{ + // enable/disable buttons + long selected_index_index = m_lSights->GetNextItem(-1, wxLIST_NEXT_ALL, wxLIST_STATE_SELECTED); + bool enable = !(selected_index_index < 0); + + m_bEditSight->Enable(enable); + m_bDeleteSight->Enable(enable); + m_bDeleteAllSights->Enable(m_lSights->GetItemCount() > 0); + m_bDeleteSight->Enable(enable); +} + +void CelestialNavigationDialog::UpdateFix(bool warnings) +{ + m_FixDialog.Update(m_ClockCorrectionDialog.m_sClockCorrection->GetValue(), warnings); +} + +void CelestialNavigationDialog::OnNew(wxCommandEvent &event) +{ + wxDateTime now = wxDateTime::Now().ToUTC(); + + Sight s(Sight::ALTITUDE, _("Sun"), Sight::LOWER, now, 0, 0, 10); + SightDialog dialog(GetParent(), s, m_ClockCorrectionDialog.m_sClockCorrection->GetValue()); + + if( dialog.ShowModal() == wxID_OK ) { + Sight *ns = new Sight(s); + + dialog.Recompute(); + ns->RebuildPolygons(); + InsertSight(ns); + RequestRefresh( GetParent() ); + } +} + +void CelestialNavigationDialog::OnDuplicate(wxCommandEvent &event) +{ + long selected_index = m_lSights->GetNextItem(-1, wxLIST_NEXT_ALL, wxLIST_STATE_SELECTED); + if (selected_index < 0) return; + + Sight *psight = (Sight*)wxUIntToPtr(m_lSights->GetItemData(selected_index)); + Sight *ns = new Sight(*psight); + ns->RebuildPolygons(); + InsertSight(ns); + RequestRefresh( GetParent() ); +} + +void CelestialNavigationDialog::OnEdit( ) +{ + // Manipulate selected_index sight/track + long selected_index = m_lSights->GetNextItem(-1, wxLIST_NEXT_ALL, wxLIST_STATE_SELECTED); + if (selected_index < 0) return; + + Sight *psight = (Sight*)wxUIntToPtr(m_lSights->GetItemData(selected_index)); + Sight originalsight = *psight; /* in case of cancel */ + + SightDialog dialog(GetParent(), *psight, m_ClockCorrectionDialog.m_sClockCorrection->GetValue()); + + if( dialog.ShowModal() == wxID_OK ) { + dialog.Recompute(); + psight->RebuildPolygons(); + UpdateSight(selected_index); + } else + *psight = originalsight; + + RequestRefresh( GetParent() ); +} + +void CelestialNavigationDialog::OnDelete(wxCommandEvent &event) +{ + // Delete selected_index sight/track + long selected_index = m_lSights->GetNextItem(-1, wxLIST_NEXT_ALL, wxLIST_STATE_SELECTED); + if (selected_index < 0) return; + + m_lSights->DeleteItem(selected_index); + RequestRefresh( GetParent() ); +} + +void CelestialNavigationDialog::OnDeleteAll(wxCommandEvent &event) +{ + wxMessageDialog mdlg(this, _("Are you sure you want to delete all sights?"), + _("Celestial Navigation"), wxYES_NO); + if(mdlg.ShowModal() == wxID_YES) { + m_lSights->DeleteAllItems(); + RequestRefresh( GetParent() ); + } +} + +void CelestialNavigationDialog::OnFix( wxCommandEvent& event ) +{ + m_FixDialog.Show(); +} + +void CelestialNavigationDialog::OnDRShift( wxCommandEvent& event ) +{ + #if 0 + DRShiftDialog dialog; + if(dialog.ShowModel() == wxID_OK) { + double shiftnm, shiftbearing; + dialog.m_tShiftNm->GetValue().ToDouble(&shiftnm); + dialog.m_tShiftBearing->GetValue().ToDouble(&shiftbearing); + bool MagneticShiftBearing = dialog.m_cbMagneticShiftBearing->GetValue(); + + for (std::list::iterator it = m_SightList.begin(); it != m_SightList.end(); it++) { + Sight *s = *it; + if(!s->IsVisible()) + continue; + + if(s->m_bMagneticShiftBearing != MagneticShiftBearing + } + } + #endif +} + +void CelestialNavigationDialog::OnClockOffset( wxCommandEvent& event ) +{ + m_ClockCorrectionDialog.Show(); +} + +//void CelestialNavigationDialog::OnInformation( wxCommandEvent& event ) +//{ +// wxString infolocation = *GetpSharedDataLocation() +// + _T("plugins/celestial_navigation_pi/data/") +// + _("Celestial_Navigation_Information.html"); +// wxLaunchDefaultBrowser(_T("file://") + infolocation); +//} + + void CelestialNavigationDialog::OnInformation( wxCommandEvent& event ) +{ + wxString infolocation =GetPluginDataDir("celestial_navigation_pi") + + _T("/data/") + + _("Celestial_Navigation_Information.html"); + wxLaunchDefaultBrowser(_T("file://") + infolocation); +} + + +void CelestialNavigationDialog::OnHide( wxCommandEvent& event ) +{ + m_tbHide->SetLabel(m_tbHide->GetValue() ? _("Show") : _("Hide")); + SetSize(m_tbHide->GetValue() ? 100 : 500, GetSize().y); +} + +void CelestialNavigationDialog::OnSightListLeftDown(wxMouseEvent &event) +{ + wxPoint pos = event.GetPosition(); + int flags = 0; + long clicked_index = m_lSights->HitTest(pos, flags); + + // Clicking Visibility column? + if (clicked_index > -1 && event.GetX() < m_lSights->GetColumnWidth(0)) + { + // Process the clicked item + Sight *sight = (Sight*)wxUIntToPtr(m_lSights->GetItemData(clicked_index)); + sight->SetVisible(!sight->IsVisible()); + m_lSights->SetItemImage(clicked_index, sight->IsVisible() ? 0 : -1); + + UpdateFix(); + RequestRefresh( GetParent() ); + } + + // Allow wx to process... + event.Skip(); +} + +void CelestialNavigationDialog::OnSightSelected(wxListEvent &event) +{ + UpdateButtons(); +} diff --git a/src/CelestialNavigationDialog-2.3.5.2-android.cpp b/src/CelestialNavigationDialog-2.3.5.2-android.cpp new file mode 100644 index 0000000..9497418 --- /dev/null +++ b/src/CelestialNavigationDialog-2.3.5.2-android.cpp @@ -0,0 +1,624 @@ +/****************************************************************************** + * + * Project: OpenCPN + * Purpose: Celestial Navigation Support + * Author: Sean D'Epagnier + * + *************************************************************************** + * Copyright (C) 2015 by Sean D'Epagnier * + * * + * This program is free software; you can redistribute it and/or modify * + * it under the terms of the GNU General Public License as published by * + * the Free Software Foundation; either version 3 of the License, or * + * (at your option) any later version. * + * * + * This program is distributed in the hope that it will be useful, * + * but WITHOUT ANY WARRANTY; without even the implied warranty of * + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * + * GNU General Public License for more details. * + * * + * You should have received a copy of the GNU General Public License * + * along with this program; if not, write to the * + * Free Software Foundation, Inc., * + * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. * + *************************************************************************** + * + */ + +#include +#include + +#include +#include +#include + +#include "tinyxml.h" + +#include + +#include "ocpn_plugin.h" + +#include "Sight.h" +#include "SightDialog.h" +#include "CelestialNavigationDialog.h" +#include "celestial_navigation_pi.h" +//HEAD +// line +#include "zuFile.h" + +#include "astrolabe/astrolabe.hpp" +static wxString DataDirectory() +{ + wxString s = wxFileName::GetPathSeparator(); + return *GetpSharedDataLocation() + "plugins" + s + "celestial_navigation_pi" + s + "data" + s; +} + +static wxString UserDataDirectory() + { + wxString s = wxFileName::GetPathSeparator(); + return *GetpPrivateApplicationDataLocation() + s + "plugins" + + s + "celestial_navigation" + s; + } +// master + +/* XPM */ +static const char *eye[]={ +"20 20 7 1", +". c none", +"# c #000000", +"a c #333333", +"b c #666666", +"c c #999999", +"d c #cccccc", +"e c #ffffff", +"....................", +"....................", +"....................", +"....................", +".......######.......", +".....#aabccb#a#.....", +"....#deeeddeebcb#...", +"..#aeeeec##aceaec#..", +".#bedaeee####dbcec#.", +"#aeedbdabc###bcceea#", +".#bedad######abcec#.", +"..#be#d######dadb#..", +"...#abac####abba#...", +".....##acbaca##.....", +".......######.......", +"....................", +"....................", +"....................", +"....................", +"...................."}; + +enum { rmVISIBLE = 0, rmTYPE, rmBODY, rmTIME, rmMEASUREMENT, rmCOLOR };// RMColumns; + +// sort callback. Sort by body. +#if wxCHECK_VERSION(2, 9, 0) +int wxCALLBACK SortSights(long item1, long item2, wxIntPtr list) +#else +int wxCALLBACK SortSights(long item1, long item2, long list) +#endif +{ + wxListCtrl *lc = (wxListCtrl*)list; + + wxListItem it1, it2; + it1.SetId(lc->FindItem(-1, item1)); + it1.SetColumn(1); + + it2.SetId(lc->FindItem(-1, item2)); + it2.SetColumn(1); + + lc->GetItem(it1); + lc->GetItem(it2); + + return it1.GetText().Cmp(it2.GetText()); +} + +CelestialNavigationDialog::CelestialNavigationDialog(wxWindow *parent) + : CelestialNavigationDialogBase(parent), + m_FixDialog(this), + m_ClockCorrectionDialog(this) +{ + wxFileConfig *pConf = GetOCPNConfigObject(); + + pConf->SetPath( _T("/PlugIns/CelestialNavigation") ); + +//#ifdef __WXGTK__ +// Move(0, 0); // workaround for gtk autocentre dialog behavior +//#endif +// Move(pConf->Read ( _T ( "DialogPosX" ), 20L ), pConf->Read ( _T ( "DialogPosY" ), 20L )); + wxPoint p = GetPosition(); + pConf->Read ( _T ( "DialogX" ), &p.x, p.x); + pConf->Read ( _T ( "DialogY" ), &p.y, p.y); + SetPosition(p); + + wxSize s = GetSize(); + pConf->Read ( _T ( "DialogWidth" ), &s.x, s.x); + pConf->Read ( _T ( "DialogHeight" ), &s.y, s.y); + SetSize(s); + +// create a image list for the list with just the eye icon + wxImageList *imglist = new wxImageList(20, 20, true, 1); + imglist->Add(wxBitmap(eye)); + m_lSights->AssignImageList(imglist, wxIMAGE_LIST_SMALL); + + m_lSights->InsertColumn(rmVISIBLE, wxT("")); + m_lSights->SetColumnWidth(0, 28); + + m_lSights->InsertColumn(rmTYPE, _("Type")); + m_lSights->InsertColumn(rmBODY, _("Body")); + m_lSights->InsertColumn(rmTIME, _("Time (UT)")); + m_lSights->InsertColumn(rmMEASUREMENT, _("Measurement")); + m_lSights->InsertColumn(rmCOLOR, _("Color")); + + m_sights_path = celestial_navigation_pi::StandardPath() + _T("Sights.xml"); + + if(!OpenXML(m_sights_path, false)) { + /* create directory for plugin files if it doesn't already exist */ + wxFileName fn(m_sights_path); + wxFileName fn2 = fn.GetPath(); + if(!fn.DirExists()) { + fn2.Mkdir(); + fn.Mkdir(); + } + } +// HEAD +// line + +// from HEAD +#ifdef __OCPN__ANDROID__ + GetHandle()->setAttribute(Qt::WA_AcceptTouchEvents); + GetHandle()->grabGesture(Qt::PanGesture); + GetHandle()->setStyleSheet( qtStyleSheet); + + + + + + + m_lSights->GetHandle()->setAttribute(Qt::WA_AcceptTouchEvents); + m_lSights->GetHandle()->grabGesture(Qt::PanGesture); + m_lSights->Connect( wxEVT_QT_PANGESTURE, + (wxObjectEventFunction) (wxEventFunction) &CelestialNavigationDialog::OnEvtPanGesture, NULL, this ); + + GetHandle()->setStyleSheet( qtStyleSheet); + Move(0, 0); +#endif +// beginning of parent of parent of ddd0bac... android build +// +// end of parent of ddd0bac... android build +} + +#ifdef __OCPN__ANDROID__ +void CelestialNavigationDialog::OnEvtPanGesture( wxQT_PanGestureEvent &event) +{ + switch(event.GetState()){ + case GestureStarted: + m_startPos = GetPosition(); + m_startMouse = event.GetCursorPos(); //g_mouse_pos_screen; + break; + default: + { + wxPoint pos = event.GetCursorPos(); + int x = wxMax(0, pos.x + m_startPos.x - m_startMouse.x); + int y = wxMax(0, pos.y + m_startPos.y - m_startMouse.y); + int xmax = ::wxGetDisplaySize().x - GetSize().x; + x = wxMin(x, xmax); + int ymax = ::wxGetDisplaySize().y - GetSize().y; // Some fluff at the bottom + y = wxMin(y, ymax); + + Move(x, y); + } break; + } +// master +} + +CelestialNavigationDialog::~CelestialNavigationDialog() +{ + wxFileConfig *pConf = GetOCPNConfigObject(); + pConf->SetPath( _T("/PlugIns/CelestialNavigation") ); + + wxPoint p = GetPosition(); + pConf->Write ( _T ( "DialogX" ), p.x); + pConf->Write ( _T ( "DialogY" ), p.y); + + wxSize s = GetSize(); + pConf->Write ( _T ( "DialogWidth" ), s.x); + pConf->Write ( _T ( "DialogHeight" ), s.y); + + SaveXML(m_sights_path); +} + +#define FAIL(X) do { error = X; goto failed; } while(0) +double AttributeDouble(TiXmlElement *e, const char *name, double def) +{ + const char *attr = e->Attribute(name); + if(!attr) + return def; + char *end; + double d = strtod(attr, &end); + if(end == attr) + return def; + return d; +} + +int AttributeInt(TiXmlElement *e, const char *name, int def) +{ + const char *attr = e->Attribute(name); + if(!attr) + return def; + char *end; + long d = strtol(attr, &end, 10); + if(end == attr) + return def; + return d; +} + +bool AttributeBool(TiXmlElement *e, const char *name, bool def) +{ + return AttributeInt(e, name, def) != 0; +} + +bool CelestialNavigationDialog::OpenXML(wxString filename, bool reportfailure) +{ + TiXmlDocument doc; + wxString error; + + wxFileName fn(filename); + + if(!doc.LoadFile(filename.mb_str())) + FAIL(_("Failed to load file: ") + filename); + else { + TiXmlHandle root(doc.RootElement()); + + if(strcmp(root.Element()->Value(), "OpenCPNCelestialNavigation")) + FAIL(_("Invalid xml file")); + + m_lSights->DeleteAllItems(); + + for(TiXmlElement* e = root.FirstChild().Element(); e; e = e->NextSiblingElement()) { + if(!strcmp(e->Value(), "ClockError")) { + m_ClockCorrectionDialog.m_sClockCorrection->SetValue(AttributeInt(e, "Seconds", 0)); + } else if(!strcmp(e->Value(), "Sight")) { + Sight s; + + s.m_bVisible = AttributeBool(e, "Visible", true); + s.m_Type = (Sight::Type)AttributeInt(e, "Type", 0); + s.m_Body = wxString::FromUTF8(e->Attribute("Body")); + s.m_BodyLimb = (Sight::BodyLimb)AttributeInt(e, "BodyLimb", 0); + + s.m_DateTime.ParseISODate(wxString::FromUTF8(e->Attribute("Date"))); + + wxDateTime time; + time.ParseISOTime(wxString::FromUTF8(e->Attribute("Time"))); + + if(s.m_DateTime.IsValid() && time.IsValid()) { + s.m_DateTime.SetHour(time.GetHour()); + s.m_DateTime.SetMinute(time.GetMinute()); + s.m_DateTime.SetSecond(time.GetSecond()); + } else + continue; /* skip if invalid */ + + s.m_TimeCertainty = AttributeDouble(e, "TimeCertainty", 0); + + s.m_Measurement = AttributeDouble(e, "Measurement", 0); + s.m_MeasurementCertainty = AttributeDouble(e, "MeasurementCertainty", .25); + + s.m_EyeHeight = AttributeDouble(e, "EyeHeight", 2); + s.m_Temperature = AttributeDouble(e, "Temperature", 10); + s.m_Pressure = AttributeDouble(e, "Pressure", 1010); + s.m_IndexError = AttributeDouble(e, "IndexError", 0); + + s.m_ShiftNm = AttributeDouble(e, "ShiftNm", 0); + s.m_ShiftBearing = AttributeDouble(e, "ShiftBearing", 0); + s.m_bMagneticShiftBearing = AttributeBool(e, "MagneticShiftBearing", 0); + + s.m_ColourName = wxString::FromUTF8(e->Attribute("ColourName")); + s.m_Colour = wxColour(wxString::FromUTF8(e->Attribute("Colour"))); + s.m_Colour.Set(s.m_Colour.Red(), s.m_Colour.Green(), s.m_Colour.Blue(), + AttributeInt(e, "Transparency", 150)); + + Sight *ns = new Sight(s); + + ns->Recompute(m_ClockCorrectionDialog.m_sClockCorrection->GetValue()); + ns->RebuildPolygons(); + InsertSight(ns, false); + } else + FAIL(_("Unrecognized xml node")); + } + } + + RequestRefresh( GetParent() ); + return true; +failed: + + if(reportfailure) { + wxMessageDialog mdlg(this, error, _("Celestial Navigation"), wxOK | wxICON_ERROR); + mdlg.ShowModal(); + } + return false; +} + +void CelestialNavigationDialog::SaveXML(wxString filename) +{ + TiXmlDocument doc; + TiXmlDeclaration* decl = new TiXmlDeclaration( "1.0", "utf-8", "" ); + doc.LinkEndChild( decl ); + + TiXmlElement * root = new TiXmlElement( "OpenCPNCelestialNavigation" ); + doc.LinkEndChild( root ); + + char version[24]; + sprintf(version, "%d.%d", PLUGIN_VERSION_MAJOR, PLUGIN_VERSION_MINOR); + root->SetAttribute("version", version); + root->SetAttribute("creator", "Opencpn Celestial Navigation plugin"); + + TiXmlElement *c = new TiXmlElement( "ClockError" ); + c->SetAttribute("Seconds", m_ClockCorrectionDialog.m_sClockCorrection->GetValue()); + root->LinkEndChild(c); + + for(int i = 0; iGetItemCount(); i++) { + TiXmlElement *c = new TiXmlElement( "Sight" ); + + Sight *s = (Sight*)wxUIntToPtr(m_lSights->GetItemData(i)); + + c->SetAttribute("Visible", s->m_bVisible); + c->SetAttribute("Type", s->m_Type); + c->SetAttribute("Body", s->m_Body.mb_str()); + c->SetAttribute("BodyLimb", s->m_BodyLimb); + + c->SetAttribute("Date", s->m_DateTime.FormatISODate().mb_str()); + c->SetAttribute("Time", s->m_DateTime.FormatISOTime().mb_str()); + + c->SetDoubleAttribute("TimeCertainty", s->m_TimeCertainty); + + c->SetDoubleAttribute("Measurement", s->m_Measurement); + c->SetDoubleAttribute("MeasurementCertainty", s->m_MeasurementCertainty); + + c->SetDoubleAttribute("EyeHeight", s->m_EyeHeight); + c->SetDoubleAttribute("Temperature", s->m_Temperature); + c->SetDoubleAttribute("Pressure", s->m_Pressure); + c->SetDoubleAttribute("IndexError", s->m_IndexError); + + c->SetDoubleAttribute("ShiftNm", s->m_ShiftNm); + c->SetDoubleAttribute("ShiftBearing", s->m_ShiftBearing); + c->SetDoubleAttribute("MagneticShiftBearing", s->m_bMagneticShiftBearing); + + c->SetAttribute("ColourName", s->m_ColourName.mb_str()); + c->SetAttribute("Colour", s->m_Colour.GetAsString().mb_str()); + c->SetAttribute("Transparency", s->m_Colour.Alpha()); + + root->LinkEndChild(c); + } + + if(!doc.SaveFile(filename.mb_str())) { + wxMessageDialog mdlg(this, _("Failed to save xml file: ") + filename, + _("Celestial Navigation"), wxOK | wxICON_ERROR); + mdlg.ShowModal(); + } +} + +void CelestialNavigationDialog::InsertSight(Sight *s, bool warnings) +{ +#if 1 + wxListItem item; + item.SetId(m_lSights->GetItemCount()); + item.SetData(s); + item.SetMask(item.GetMask() | wxLIST_MASK_TEXT); + + int idx = m_lSights->InsertItem(item); + m_lSights->SetItemImage(idx, s->IsVisible() ? 0 : -1); +#else + idx = m_lSights->InsertItem(idx+1, (*it)->IsVisible() ? 0 : -1); +#endif + UpdateSight(idx, warnings); +} + +void CelestialNavigationDialog::UpdateSight(int idx, bool warnings) +{ + Sight *s = (Sight*)wxUIntToPtr(m_lSights->GetItemData(idx)); + + // then add sights to the listctrl + m_lSights->SetItem(idx, rmTYPE, SightType[s->m_Type]); + m_lSights->SetItem(idx, rmBODY, s->m_Body); + wxDateTime dt = s->m_DateTime; + m_lSights->SetItem(idx, rmTIME, dt.FormatISODate() + _T(" ") + dt.FormatISOTime()); + m_lSights->SetItem(idx, rmMEASUREMENT, wxString::Format(_T("%.4f"), s->m_Measurement)); + if(s->m_Type == Sight::LUNAR) + m_lSights->SetItem(idx, rmCOLOR, _("Time Correction") + + wxString::Format(_T(": %.4f"), s->m_TimeCorrection)); + else + m_lSights->SetItem(idx, rmCOLOR, s->m_ColourName); + + m_lSights->SetColumnWidth(rmTYPE, wxLIST_AUTOSIZE); + m_lSights->SetColumnWidth(rmBODY, wxLIST_AUTOSIZE); + m_lSights->SetColumnWidth(rmTIME, wxLIST_AUTOSIZE); + m_lSights->SetColumnWidth(rmCOLOR, wxLIST_AUTOSIZE); + + if(m_lSights->GetColumnWidth(1) < 20) + m_lSights->SetColumnWidth(1, 50); + + if(m_lSights->GetColumnWidth(2) < 20) + m_lSights->SetColumnWidth(2, 50); + + m_lSights->SortItems(SortSights, (long)m_lSights); + + UpdateButtons(); + UpdateFix(warnings); +} + +void CelestialNavigationDialog::UpdateSights() +{ + for(int i = 0; iGetItemCount(); i++) + UpdateSight(i); +} + +void CelestialNavigationDialog::UpdateButtons() +{ + // enable/disable buttons + long selected_index_index = m_lSights->GetNextItem(-1, wxLIST_NEXT_ALL, wxLIST_STATE_SELECTED); + bool enable = !(selected_index_index < 0); + + m_bEditSight->Enable(enable); + m_bDeleteSight->Enable(enable); + m_bDeleteAllSights->Enable(m_lSights->GetItemCount() > 0); + m_bDeleteSight->Enable(enable); +} + +void CelestialNavigationDialog::UpdateFix(bool warnings) +{ + m_FixDialog.Update(m_ClockCorrectionDialog.m_sClockCorrection->GetValue(), warnings); +} + +void CelestialNavigationDialog::OnNew(wxCommandEvent &event) +{ + wxDateTime now = wxDateTime::Now().ToUTC(); + + Sight s(Sight::ALTITUDE, _("Sun"), Sight::LOWER, now, 0, 0, 10); + SightDialog dialog(GetParent(), s, m_ClockCorrectionDialog.m_sClockCorrection->GetValue()); + + if( dialog.ShowModal() == wxID_OK ) { + Sight *ns = new Sight(s); + + dialog.Recompute(); + ns->RebuildPolygons(); + InsertSight(ns); + RequestRefresh( GetParent() ); + } +} + +void CelestialNavigationDialog::OnDuplicate(wxCommandEvent &event) +{ + long selected_index = m_lSights->GetNextItem(-1, wxLIST_NEXT_ALL, wxLIST_STATE_SELECTED); + if (selected_index < 0) return; + + Sight *psight = (Sight*)wxUIntToPtr(m_lSights->GetItemData(selected_index)); + Sight *ns = new Sight(*psight); + ns->RebuildPolygons(); + InsertSight(ns); + RequestRefresh( GetParent() ); +} + +void CelestialNavigationDialog::OnEdit( ) +{ + // Manipulate selected_index sight/track + long selected_index = m_lSights->GetNextItem(-1, wxLIST_NEXT_ALL, wxLIST_STATE_SELECTED); + if (selected_index < 0) return; + + Sight *psight = (Sight*)wxUIntToPtr(m_lSights->GetItemData(selected_index)); + Sight originalsight = *psight; /* in case of cancel */ + + SightDialog dialog(GetParent(), *psight, m_ClockCorrectionDialog.m_sClockCorrection->GetValue()); + + if( dialog.ShowModal() == wxID_OK ) { + dialog.Recompute(); + psight->RebuildPolygons(); + UpdateSight(selected_index); + } else + *psight = originalsight; + + RequestRefresh( GetParent() ); +} + +void CelestialNavigationDialog::OnDelete(wxCommandEvent &event) +{ + // Delete selected_index sight/track + long selected_index = m_lSights->GetNextItem(-1, wxLIST_NEXT_ALL, wxLIST_STATE_SELECTED); + if (selected_index < 0) return; + + m_lSights->DeleteItem(selected_index); + RequestRefresh( GetParent() ); +} + +void CelestialNavigationDialog::OnDeleteAll(wxCommandEvent &event) +{ + wxMessageDialog mdlg(this, _("Are you sure you want to delete all sights?"), + _("Celestial Navigation"), wxYES_NO); + if(mdlg.ShowModal() == wxID_YES) { + m_lSights->DeleteAllItems(); + RequestRefresh( GetParent() ); + } +} + +void CelestialNavigationDialog::OnFix( wxCommandEvent& event ) +{ + m_FixDialog.Show(); +} + +void CelestialNavigationDialog::OnDRShift( wxCommandEvent& event ) +{ + #if 0 + DRShiftDialog dialog; + if(dialog.ShowModel() == wxID_OK) { + double shiftnm, shiftbearing; + dialog.m_tShiftNm->GetValue().ToDouble(&shiftnm); + dialog.m_tShiftBearing->GetValue().ToDouble(&shiftbearing); + bool MagneticShiftBearing = dialog.m_cbMagneticShiftBearing->GetValue(); + + for (std::list::iterator it = m_SightList.begin(); it != m_SightList.end(); it++) { + Sight *s = *it; + if(!s->IsVisible()) + continue; + + if(s->m_bMagneticShiftBearing != MagneticShiftBearing + } + } + #endif +} + +void CelestialNavigationDialog::OnClockOffset( wxCommandEvent& event ) +{ + m_ClockCorrectionDialog.Show(); +} + +//void CelestialNavigationDialog::OnInformation( wxCommandEvent& event ) +//{ +// wxString infolocation = *GetpSharedDataLocation() +// + _T("plugins/celestial_navigation_pi/data/") +// + _("Celestial_Navigation_Information.html"); +// wxLaunchDefaultBrowser(_T("file://") + infolocation); +//} + + void CelestialNavigationDialog::OnInformation( wxCommandEvent& event ) +{ + wxString infolocation =GetPluginDataDir("celestial_navigation_pi") + + _T("/data/") + + _("Celestial_Navigation_Information.html"); + wxLaunchDefaultBrowser(_T("file://") + infolocation); +} + + +void CelestialNavigationDialog::OnHide( wxCommandEvent& event ) +{ + m_tbHide->SetLabel(m_tbHide->GetValue() ? _("Show") : _("Hide")); + SetSize(m_tbHide->GetValue() ? 100 : 500, GetSize().y); +} + +void CelestialNavigationDialog::OnSightListLeftDown(wxMouseEvent &event) +{ + wxPoint pos = event.GetPosition(); + int flags = 0; + long clicked_index = m_lSights->HitTest(pos, flags); + + // Clicking Visibility column? + if (clicked_index > -1 && event.GetX() < m_lSights->GetColumnWidth(0)) + { + // Process the clicked item + Sight *sight = (Sight*)wxUIntToPtr(m_lSights->GetItemData(clicked_index)); + sight->SetVisible(!sight->IsVisible()); + m_lSights->SetItemImage(clicked_index, sight->IsVisible() ? 0 : -1); + + UpdateFix(); + RequestRefresh( GetParent() ); + } + + // Allow wx to process... + event.Skip(); +} + +void CelestialNavigationDialog::OnSightSelected(wxListEvent &event) +{ + UpdateButtons(); +} diff --git a/src/CelestialNavigationDialog-partial-android.cpp b/src/CelestialNavigationDialog-partial-android.cpp new file mode 100644 index 0000000..658027e --- /dev/null +++ b/src/CelestialNavigationDialog-partial-android.cpp @@ -0,0 +1,618 @@ +/****************************************************************************** + * + * Project: OpenCPN + * Purpose: Celestial Navigation Support + * Author: Sean D'Epagnier + * + *************************************************************************** + * Copyright (C) 2015 by Sean D'Epagnier * + * * + * This program is free software; you can redistribute it and/or modify * + * it under the terms of the GNU General Public License as published by * + * the Free Software Foundation; either version 3 of the License, or * + * (at your option) any later version. * + * * + * This program is distributed in the hope that it will be useful, * + * but WITHOUT ANY WARRANTY; without even the implied warranty of * + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * + * GNU General Public License for more details. * + * * + * You should have received a copy of the GNU General Public License * + * along with this program; if not, write to the * + * Free Software Foundation, Inc., * + * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. * + *************************************************************************** + * + */ + +#include +#include + +#include +#include +#include + +#include "tinyxml.h" + +#include + +#include "ocpn_plugin.h" + +#include "Sight.h" +#include "SightDialog.h" +#include "CelestialNavigationDialog.h" +#include "celestial_navigation_pi.h" +//HEAD +// line +#include "zuFile.h" + +#include "astrolabe/astrolabe.hpp" +static wxString DataDirectory()//{ + wxString s = wxFileName::GetPathSeparator(); + return *GetpSharedDataLocation() + "plugins" + s + "celestial_navigation_pi" + s + "data" + s; +} + +static wxString UserDataDirectory() + { + wxString s = wxFileName::GetPathSeparator(); + return *GetpPrivateApplicationDataLocation() + s + "plugins" + + s + "celestial_navigation" + s; + } +// master + +/* XPM */ +static const char *eye[]={ +"20 20 7 1", +". c none", +"# c #000000", +"a c #333333", +"b c #666666", +"c c #999999", +"d c #cccccc", +"e c #ffffff", +"....................", +"....................", +"....................", +"....................", +".......######.......", +".....#aabccb#a#.....", +"....#deeeddeebcb#...", +"..#aeeeec##aceaec#..", +".#bedaeee####dbcec#.", +"#aeedbdabc###bcceea#", +".#bedad######abcec#.", +"..#be#d######dadb#..", +"...#abac####abba#...", +".....##acbaca##.....", +".......######.......", +"....................", +"....................", +"....................", +"....................", +"...................."}; + +enum { rmVISIBLE = 0, rmTYPE, rmBODY, rmTIME, rmMEASUREMENT, rmCOLOR };// RMColumns; + +// sort callback. Sort by body. +#if wxCHECK_VERSION(2, 9, 0) +int wxCALLBACK SortSights(long item1, long item2, wxIntPtr list) +#else +int wxCALLBACK SortSights(long item1, long item2, long list) +#endif +{ + wxListCtrl *lc = (wxListCtrl*)list; + + wxListItem it1, it2; + it1.SetId(lc->FindItem(-1, item1)); + it1.SetColumn(1); + + it2.SetId(lc->FindItem(-1, item2)); + it2.SetColumn(1); + + lc->GetItem(it1); + lc->GetItem(it2); + + return it1.GetText().Cmp(it2.GetText()); +} + +CelestialNavigationDialog::CelestialNavigationDialog(wxWindow *parent) + : CelestialNavigationDialogBase(parent), + m_FixDialog(this), + m_ClockCorrectionDialog(this) +{ + wxFileConfig *pConf = GetOCPNConfigObject(); + + pConf->SetPath( _T("/PlugIns/CelestialNavigation") ); + +//#ifdef __WXGTK__ +// Move(0, 0); // workaround for gtk autocentre dialog behavior +//#endif +// Move(pConf->Read ( _T ( "DialogPosX" ), 20L ), pConf->Read ( _T ( "DialogPosY" ), 20L )); + wxPoint p = GetPosition(); + pConf->Read ( _T ( "DialogX" ), &p.x, p.x); + pConf->Read ( _T ( "DialogY" ), &p.y, p.y); + SetPosition(p); + + wxSize s = GetSize(); + pConf->Read ( _T ( "DialogWidth" ), &s.x, s.x); + pConf->Read ( _T ( "DialogHeight" ), &s.y, s.y); + SetSize(s); + +// create a image list for the list with just the eye icon + wxImageList *imglist = new wxImageList(20, 20, true, 1); + imglist->Add(wxBitmap(eye)); + m_lSights->AssignImageList(imglist, wxIMAGE_LIST_SMALL); + + m_lSights->InsertColumn(rmVISIBLE, wxT("")); + m_lSights->SetColumnWidth(0, 28); + + m_lSights->InsertColumn(rmTYPE, _("Type")); + m_lSights->InsertColumn(rmBODY, _("Body")); + m_lSights->InsertColumn(rmTIME, _("Time (UT)")); + m_lSights->InsertColumn(rmMEASUREMENT, _("Measurement")); + m_lSights->InsertColumn(rmCOLOR, _("Color")); + + m_sights_path = celestial_navigation_pi::StandardPath() + _T("Sights.xml"); + + if(!OpenXML(m_sights_path, false)) { + /* create directory for plugin files if it doesn't already exist */ + wxFileName fn(m_sights_path); + wxFileName fn2 = fn.GetPath(); + if(!fn.DirExists()) { + fn2.Mkdir(); + fn.Mkdir(); + } + } +// HEAD +// line + +// from HEAD +#ifdef __OCPN__ANDROID__ + GetHandle()->setAttribute(Qt::WA_AcceptTouchEvents); + GetHandle()->grabGesture(Qt::PanGesture); + GetHandle()->setStyleSheet( qtStyleSheet); + + m_lSights->GetHandle()->setAttribute(Qt::WA_AcceptTouchEvents); + m_lSights->GetHandle()->grabGesture(Qt::PanGesture); + m_lSights->Connect( wxEVT_QT_PANGESTURE, + (wxObjectEventFunction) (wxEventFunction) &CelestialNavigationDialog::OnEvtPanGesture, NULL, this ); + + GetHandle()->setStyleSheet( qtStyleSheet); + Move(0, 0); + #endif +// beginning of parent of parent of ddd0bac... android build +// +// end of parent of ddd0bac... android build +//} + +//#ifdef __OCPN__ANDROID__ +//void CelestialNavigationDialog::OnEvtPanGesture( wxQT_PanGestureEvent &event) +//{ +// switch(event.GetState()){ +// case GestureStarted: +// m_startPos = GetPosition(); +// m_startMouse = event.GetCursorPos(); //g_mouse_pos_screen; +// break; +// default: +// { +// wxPoint pos = event.GetCursorPos(); +// int x = wxMax(0, pos.x + m_startPos.x - m_startMouse.x); +// int y = wxMax(0, pos.y + m_startPos.y - m_startMouse.y); +// int xmax = ::wxGetDisplaySize().x - GetSize().x; +// x = wxMin(x, xmax); +// int ymax = ::wxGetDisplaySize().y - GetSize().y; // Some fluff at the bottom +// y = wxMin(y, ymax); +// +// Move(x, y); +// } break; +// } +// master +} + +CelestialNavigationDialog::~CelestialNavigationDialog() +{ + wxFileConfig *pConf = GetOCPNConfigObject(); + pConf->SetPath( _T("/PlugIns/CelestialNavigation") ); + + wxPoint p = GetPosition(); + pConf->Write ( _T ( "DialogX" ), p.x); + pConf->Write ( _T ( "DialogY" ), p.y); + + wxSize s = GetSize(); + pConf->Write ( _T ( "DialogWidth" ), s.x); + pConf->Write ( _T ( "DialogHeight" ), s.y); + + SaveXML(m_sights_path); +} + +#define FAIL(X) do { error = X; goto failed; } while(0) +double AttributeDouble(TiXmlElement *e, const char *name, double def) +{ + const char *attr = e->Attribute(name); + if(!attr) + return def; + char *end; + double d = strtod(attr, &end); + if(end == attr) + return def; + return d; +} + +int AttributeInt(TiXmlElement *e, const char *name, int def) +{ + const char *attr = e->Attribute(name); + if(!attr) + return def; + char *end; + long d = strtol(attr, &end, 10); + if(end == attr) + return def; + return d; +} + +bool AttributeBool(TiXmlElement *e, const char *name, bool def) +{ + return AttributeInt(e, name, def) != 0; +} + +bool CelestialNavigationDialog::OpenXML(wxString filename, bool reportfailure) +{ + TiXmlDocument doc; + wxString error; + + wxFileName fn(filename); + + if(!doc.LoadFile(filename.mb_str())) + FAIL(_("Failed to load file: ") + filename); + else { + TiXmlHandle root(doc.RootElement()); + + if(strcmp(root.Element()->Value(), "OpenCPNCelestialNavigation")) + FAIL(_("Invalid xml file")); + + m_lSights->DeleteAllItems(); + + for(TiXmlElement* e = root.FirstChild().Element(); e; e = e->NextSiblingElement()) { + if(!strcmp(e->Value(), "ClockError")) { + m_ClockCorrectionDialog.m_sClockCorrection->SetValue(AttributeInt(e, "Seconds", 0)); + } else if(!strcmp(e->Value(), "Sight")) { + Sight s; + + s.m_bVisible = AttributeBool(e, "Visible", true); + s.m_Type = (Sight::Type)AttributeInt(e, "Type", 0); + s.m_Body = wxString::FromUTF8(e->Attribute("Body")); + s.m_BodyLimb = (Sight::BodyLimb)AttributeInt(e, "BodyLimb", 0); + + s.m_DateTime.ParseISODate(wxString::FromUTF8(e->Attribute("Date"))); + + wxDateTime time; + time.ParseISOTime(wxString::FromUTF8(e->Attribute("Time"))); + + if(s.m_DateTime.IsValid() && time.IsValid()) { + s.m_DateTime.SetHour(time.GetHour()); + s.m_DateTime.SetMinute(time.GetMinute()); + s.m_DateTime.SetSecond(time.GetSecond()); + } else + continue; /* skip if invalid */ + + s.m_TimeCertainty = AttributeDouble(e, "TimeCertainty", 0); + + s.m_Measurement = AttributeDouble(e, "Measurement", 0); + s.m_MeasurementCertainty = AttributeDouble(e, "MeasurementCertainty", .25); + + s.m_EyeHeight = AttributeDouble(e, "EyeHeight", 2); + s.m_Temperature = AttributeDouble(e, "Temperature", 10); + s.m_Pressure = AttributeDouble(e, "Pressure", 1010); + s.m_IndexError = AttributeDouble(e, "IndexError", 0); + + s.m_ShiftNm = AttributeDouble(e, "ShiftNm", 0); + s.m_ShiftBearing = AttributeDouble(e, "ShiftBearing", 0); + s.m_bMagneticShiftBearing = AttributeBool(e, "MagneticShiftBearing", 0); + + s.m_ColourName = wxString::FromUTF8(e->Attribute("ColourName")); + s.m_Colour = wxColour(wxString::FromUTF8(e->Attribute("Colour"))); + s.m_Colour.Set(s.m_Colour.Red(), s.m_Colour.Green(), s.m_Colour.Blue(), + AttributeInt(e, "Transparency", 150)); + + Sight *ns = new Sight(s); + + ns->Recompute(m_ClockCorrectionDialog.m_sClockCorrection->GetValue()); + ns->RebuildPolygons(); + InsertSight(ns, false); + } else + FAIL(_("Unrecognized xml node")); + } + } + + RequestRefresh( GetParent() ); + return true; +failed: + + if(reportfailure) { + wxMessageDialog mdlg(this, error, _("Celestial Navigation"), wxOK | wxICON_ERROR); + mdlg.ShowModal(); + } + return false; +} + +void CelestialNavigationDialog::SaveXML(wxString filename) +{ + TiXmlDocument doc; + TiXmlDeclaration* decl = new TiXmlDeclaration( "1.0", "utf-8", "" ); + doc.LinkEndChild( decl ); + + TiXmlElement * root = new TiXmlElement( "OpenCPNCelestialNavigation" ); + doc.LinkEndChild( root ); + + char version[24]; + sprintf(version, "%d.%d", PLUGIN_VERSION_MAJOR, PLUGIN_VERSION_MINOR); + root->SetAttribute("version", version); + root->SetAttribute("creator", "Opencpn Celestial Navigation plugin"); + + TiXmlElement *c = new TiXmlElement( "ClockError" ); + c->SetAttribute("Seconds", m_ClockCorrectionDialog.m_sClockCorrection->GetValue()); + root->LinkEndChild(c); + + for(int i = 0; iGetItemCount(); i++) { + TiXmlElement *c = new TiXmlElement( "Sight" ); + + Sight *s = (Sight*)wxUIntToPtr(m_lSights->GetItemData(i)); + + c->SetAttribute("Visible", s->m_bVisible); + c->SetAttribute("Type", s->m_Type); + c->SetAttribute("Body", s->m_Body.mb_str()); + c->SetAttribute("BodyLimb", s->m_BodyLimb); + + c->SetAttribute("Date", s->m_DateTime.FormatISODate().mb_str()); + c->SetAttribute("Time", s->m_DateTime.FormatISOTime().mb_str()); + + c->SetDoubleAttribute("TimeCertainty", s->m_TimeCertainty); + + c->SetDoubleAttribute("Measurement", s->m_Measurement); + c->SetDoubleAttribute("MeasurementCertainty", s->m_MeasurementCertainty); + + c->SetDoubleAttribute("EyeHeight", s->m_EyeHeight); + c->SetDoubleAttribute("Temperature", s->m_Temperature); + c->SetDoubleAttribute("Pressure", s->m_Pressure); + c->SetDoubleAttribute("IndexError", s->m_IndexError); + + c->SetDoubleAttribute("ShiftNm", s->m_ShiftNm); + c->SetDoubleAttribute("ShiftBearing", s->m_ShiftBearing); + c->SetDoubleAttribute("MagneticShiftBearing", s->m_bMagneticShiftBearing); + + c->SetAttribute("ColourName", s->m_ColourName.mb_str()); + c->SetAttribute("Colour", s->m_Colour.GetAsString().mb_str()); + c->SetAttribute("Transparency", s->m_Colour.Alpha()); + + root->LinkEndChild(c); + } + + if(!doc.SaveFile(filename.mb_str())) { + wxMessageDialog mdlg(this, _("Failed to save xml file: ") + filename, + _("Celestial Navigation"), wxOK | wxICON_ERROR); + mdlg.ShowModal(); + } +} + +void CelestialNavigationDialog::InsertSight(Sight *s, bool warnings) +{ +#if 1 + wxListItem item; + item.SetId(m_lSights->GetItemCount()); + item.SetData(s); + item.SetMask(item.GetMask() | wxLIST_MASK_TEXT); + + int idx = m_lSights->InsertItem(item); + m_lSights->SetItemImage(idx, s->IsVisible() ? 0 : -1); +#else + idx = m_lSights->InsertItem(idx+1, (*it)->IsVisible() ? 0 : -1); +#endif + UpdateSight(idx, warnings); +} + +void CelestialNavigationDialog::UpdateSight(int idx, bool warnings) +{ + Sight *s = (Sight*)wxUIntToPtr(m_lSights->GetItemData(idx)); + + // then add sights to the listctrl + m_lSights->SetItem(idx, rmTYPE, SightType[s->m_Type]); + m_lSights->SetItem(idx, rmBODY, s->m_Body); + wxDateTime dt = s->m_DateTime; + m_lSights->SetItem(idx, rmTIME, dt.FormatISODate() + _T(" ") + dt.FormatISOTime()); + m_lSights->SetItem(idx, rmMEASUREMENT, wxString::Format(_T("%.4f"), s->m_Measurement)); + if(s->m_Type == Sight::LUNAR) + m_lSights->SetItem(idx, rmCOLOR, _("Time Correction") + + wxString::Format(_T(": %.4f"), s->m_TimeCorrection)); + else + m_lSights->SetItem(idx, rmCOLOR, s->m_ColourName); + + m_lSights->SetColumnWidth(rmTYPE, wxLIST_AUTOSIZE); + m_lSights->SetColumnWidth(rmBODY, wxLIST_AUTOSIZE); + m_lSights->SetColumnWidth(rmTIME, wxLIST_AUTOSIZE); + m_lSights->SetColumnWidth(rmCOLOR, wxLIST_AUTOSIZE); + + if(m_lSights->GetColumnWidth(1) < 20) + m_lSights->SetColumnWidth(1, 50); + + if(m_lSights->GetColumnWidth(2) < 20) + m_lSights->SetColumnWidth(2, 50); + + m_lSights->SortItems(SortSights, (long)m_lSights); + + UpdateButtons(); + UpdateFix(warnings); +} + +void CelestialNavigationDialog::UpdateSights() +{ + for(int i = 0; iGetItemCount(); i++) + UpdateSight(i); +} + +void CelestialNavigationDialog::UpdateButtons() +{ + // enable/disable buttons + long selected_index_index = m_lSights->GetNextItem(-1, wxLIST_NEXT_ALL, wxLIST_STATE_SELECTED); + bool enable = !(selected_index_index < 0); + + m_bEditSight->Enable(enable); + m_bDeleteSight->Enable(enable); + m_bDeleteAllSights->Enable(m_lSights->GetItemCount() > 0); + m_bDeleteSight->Enable(enable); +} + +void CelestialNavigationDialog::UpdateFix(bool warnings) +{ + m_FixDialog.Update(m_ClockCorrectionDialog.m_sClockCorrection->GetValue(), warnings); +} + +void CelestialNavigationDialog::OnNew(wxCommandEvent &event) +{ + wxDateTime now = wxDateTime::Now().ToUTC(); + + Sight s(Sight::ALTITUDE, _("Sun"), Sight::LOWER, now, 0, 0, 10); + SightDialog dialog(GetParent(), s, m_ClockCorrectionDialog.m_sClockCorrection->GetValue()); + + if( dialog.ShowModal() == wxID_OK ) { + Sight *ns = new Sight(s); + + dialog.Recompute(); + ns->RebuildPolygons(); + InsertSight(ns); + RequestRefresh( GetParent() ); + } +} + +void CelestialNavigationDialog::OnDuplicate(wxCommandEvent &event) +{ + long selected_index = m_lSights->GetNextItem(-1, wxLIST_NEXT_ALL, wxLIST_STATE_SELECTED); + if (selected_index < 0) return; + + Sight *psight = (Sight*)wxUIntToPtr(m_lSights->GetItemData(selected_index)); + Sight *ns = new Sight(*psight); + ns->RebuildPolygons(); + InsertSight(ns); + RequestRefresh( GetParent() ); +} + +void CelestialNavigationDialog::OnEdit( ) +{ + // Manipulate selected_index sight/track + long selected_index = m_lSights->GetNextItem(-1, wxLIST_NEXT_ALL, wxLIST_STATE_SELECTED); + if (selected_index < 0) return; + + Sight *psight = (Sight*)wxUIntToPtr(m_lSights->GetItemData(selected_index)); + Sight originalsight = *psight; /* in case of cancel */ + + SightDialog dialog(GetParent(), *psight, m_ClockCorrectionDialog.m_sClockCorrection->GetValue()); + + if( dialog.ShowModal() == wxID_OK ) { + dialog.Recompute(); + psight->RebuildPolygons(); + UpdateSight(selected_index); + } else + *psight = originalsight; + + RequestRefresh( GetParent() ); +} + +void CelestialNavigationDialog::OnDelete(wxCommandEvent &event) +{ + // Delete selected_index sight/track + long selected_index = m_lSights->GetNextItem(-1, wxLIST_NEXT_ALL, wxLIST_STATE_SELECTED); + if (selected_index < 0) return; + + m_lSights->DeleteItem(selected_index); + RequestRefresh( GetParent() ); +} + +void CelestialNavigationDialog::OnDeleteAll(wxCommandEvent &event) +{ + wxMessageDialog mdlg(this, _("Are you sure you want to delete all sights?"), + _("Celestial Navigation"), wxYES_NO); + if(mdlg.ShowModal() == wxID_YES) { + m_lSights->DeleteAllItems(); + RequestRefresh( GetParent() ); + } +} + +void CelestialNavigationDialog::OnFix( wxCommandEvent& event ) +{ + m_FixDialog.Show(); +} + +void CelestialNavigationDialog::OnDRShift( wxCommandEvent& event ) +{ + #if 0 + DRShiftDialog dialog; + if(dialog.ShowModel() == wxID_OK) { + double shiftnm, shiftbearing; + dialog.m_tShiftNm->GetValue().ToDouble(&shiftnm); + dialog.m_tShiftBearing->GetValue().ToDouble(&shiftbearing); + bool MagneticShiftBearing = dialog.m_cbMagneticShiftBearing->GetValue(); + + for (std::list::iterator it = m_SightList.begin(); it != m_SightList.end(); it++) { + Sight *s = *it; + if(!s->IsVisible()) + continue; + + if(s->m_bMagneticShiftBearing != MagneticShiftBearing + } + } + #endif +} + +void CelestialNavigationDialog::OnClockOffset( wxCommandEvent& event ) +{ + m_ClockCorrectionDialog.Show(); +} + +//void CelestialNavigationDialog::OnInformation( wxCommandEvent& event ) +//{ +// wxString infolocation = *GetpSharedDataLocation() +// + _T("plugins/celestial_navigation_pi/data/") +// + _("Celestial_Navigation_Information.html"); +// wxLaunchDefaultBrowser(_T("file://") + infolocation); +//} + + void CelestialNavigationDialog::OnInformation( wxCommandEvent& event ) +{ + wxString infolocation =GetPluginDataDir("celestial_navigation_pi") + + _T("/data/") + + _("Celestial_Navigation_Information.html"); + wxLaunchDefaultBrowser(_T("file://") + infolocation); +} + + +void CelestialNavigationDialog::OnHide( wxCommandEvent& event ) +{ + m_tbHide->SetLabel(m_tbHide->GetValue() ? _("Show") : _("Hide")); + SetSize(m_tbHide->GetValue() ? 100 : 500, GetSize().y); +} + +void CelestialNavigationDialog::OnSightListLeftDown(wxMouseEvent &event) +{ + wxPoint pos = event.GetPosition(); + int flags = 0; + long clicked_index = m_lSights->HitTest(pos, flags); + + // Clicking Visibility column? + if (clicked_index > -1 && event.GetX() < m_lSights->GetColumnWidth(0)) + { + // Process the clicked item + Sight *sight = (Sight*)wxUIntToPtr(m_lSights->GetItemData(clicked_index)); + sight->SetVisible(!sight->IsVisible()); + m_lSights->SetItemImage(clicked_index, sight->IsVisible() ? 0 : -1); + + UpdateFix(); + RequestRefresh( GetParent() ); + } + + // Allow wx to process... + event.Skip(); +} + +void CelestialNavigationDialog::OnSightSelected(wxListEvent &event) +{ + UpdateButtons(); +} diff --git a/src/CelestialNavigationDialog.cpp b/src/CelestialNavigationDialog.cpp index b9d1018..b8ad4a0 100644 --- a/src/CelestialNavigationDialog.cpp +++ b/src/CelestialNavigationDialog.cpp @@ -32,16 +32,15 @@ #include #include -#include "tinyxml/tinyxml.h" +#include "tinyxml.h" #include "ocpn_plugin.h" -#include "icons.h" #include "Sight.h" #include "SightDialog.h" #include "CelestialNavigationDialog.h" #include "celestial_navigation_pi.h" -#include "zuFile.h" + #include "astrolabe/astrolabe.hpp" static wxString DataDirectory() @@ -51,11 +50,12 @@ static wxString DataDirectory() } static wxString UserDataDirectory() -{ + { wxString s = wxFileName::GetPathSeparator(); return *GetpPrivateApplicationDataLocation() + s + "plugins" + s + "celestial_navigation" + s; -} + } + /* XPM */ static const char *eye[]={ @@ -95,20 +95,20 @@ enum { rmVISIBLE = 0, rmTYPE, rmBODY, rmTIME, rmMEASUREMENT, rmCOLOR };// RMColu int wxCALLBACK SortSights(long item1, long item2, wxIntPtr list) #else int wxCALLBACK SortSights(long item1, long item2, long list) -#endif +#endif { wxListCtrl *lc = (wxListCtrl*)list; wxListItem it1, it2; it1.SetId(lc->FindItem(-1, item1)); it1.SetColumn(1); - + it2.SetId(lc->FindItem(-1, item2)); it2.SetColumn(1); - + lc->GetItem(it1); lc->GetItem(it2); - + return it1.GetText().Cmp(it2.GetText()); } @@ -134,51 +134,6 @@ CelestialNavigationDialog::CelestialNavigationDialog(wxWindow *parent) pConf->Read ( _T ( "DialogWidth" ), &s.x, s.x); pConf->Read ( _T ( "DialogHeight" ), &s.y, s.y); SetSize(s); - - wxString filename = DataDirectory() + "vsop87d.txt"; - wxFileName fn(filename); - if(!fn.Exists()) - filename = UserDataDirectory() + "vsop87d.txt"; - - wxFileName fn2(filename); -#ifndef WIN32 // never hit because data is distribued easier to not compile compression support - if(!fn2.Exists()) { - wxMessageDialog mdlg(this, _("Astrolab data unavailable.\n") - + filename + "\n" - + _("\nWould you like to download?"), - _("Failure Alert"), wxYES | wxNO | wxICON_ERROR); - if(mdlg.ShowModal() == wxID_YES) { - wxString url = "https://cfhcable.dl.sourceforge.net/project/opencpnplugins/celestial_navigation_pi/"; - wxString path = UserDataDirectory(); - wxString fn = "vsop87d.txt.gz"; - - _OCPN_DLStatus status = OCPN_downloadFile( - url+fn, path+fn, _("downloading celestial navigation data file"), - "downloading...", - *_img_celestial_navigation, this, - OCPN_DLDS_CAN_ABORT|OCPN_DLDS_ELAPSED_TIME|OCPN_DLDS_ESTIMATED_TIME|OCPN_DLDS_REMAINING_TIME|OCPN_DLDS_SPEED|OCPN_DLDS_SIZE|OCPN_DLDS_URL|OCPN_DLDS_AUTO_CLOSE, 20); - if(status == OCPN_DL_NO_ERROR) { - // now decompress downloaded file - ZUFILE *f = zu_open(path+fn.mb_str(), "rb", ZU_COMPRESS_AUTO); - if(f) { - FILE *out = fopen(path+"vsop87d.txt", "w"); - if(out) { - char buf[1024]; - for(;;) { - size_t size = zu_read(f, buf, sizeof buf); - fwrite(buf, size, 1, out); - if(size != sizeof buf) - break; - } - fclose(out); - } - zu_close(f); - } - } - } - } -#endif - astrolabe::globals::vsop87d_text_path = (const char *)filename.mb_str(); // create a image list for the list with just the eye icon wxImageList *imglist = new wxImageList(20, 20, true, 1); @@ -194,7 +149,7 @@ CelestialNavigationDialog::CelestialNavigationDialog(wxWindow *parent) m_lSights->InsertColumn(rmMEASUREMENT, _("Measurement")); m_lSights->InsertColumn(rmCOLOR, _("Color")); - m_sights_path = UserDataDirectory() + "Sights.xml"; + m_sights_path = celestial_navigation_pi::StandardPath() + _T("Sights.xml"); if(!OpenXML(m_sights_path, false)) { /* create directory for plugin files if it doesn't already exist */ @@ -206,23 +161,28 @@ CelestialNavigationDialog::CelestialNavigationDialog(wxWindow *parent) } } - +// +#if 0 // TODO (DSR) This Android GUI interface needs work #ifdef __OCPN__ANDROID__ GetHandle()->setAttribute(Qt::WA_AcceptTouchEvents); GetHandle()->grabGesture(Qt::PanGesture); GetHandle()->setStyleSheet( qtStyleSheet); - - m_lSights->GetHandle()->setAttribute(Qt::WA_AcceptTouchEvents); + m_lSights->GetHandle()->setAttribute(Qt::WA_AcceptTouchEvents);// m_lSights->GetHandle()->grabGesture(Qt::PanGesture); m_lSights->Connect( wxEVT_QT_PANGESTURE, (wxObjectEventFunction) (wxEventFunction) &CelestialNavigationDialog::OnEvtPanGesture, NULL, this ); - - GetHandle()->setStyleSheet( qtStyleSheet); - Move(0, 0); + GetHandle()->setStyleSheet( qtStyleSheet);// + Move(0, 0); #endif +#endif //if 0 + +// + } -#ifdef __OCPN__ANDROID__ +#if 0 // TODO (DSR) This Android GUI interface needs work + +#ifdef __OCPN__ANDROID__ void CelestialNavigationDialog::OnEvtPanGesture( wxQT_PanGestureEvent &event) { switch(event.GetState()){ @@ -239,12 +199,14 @@ void CelestialNavigationDialog::OnEvtPanGesture( wxQT_PanGestureEvent &event) x = wxMin(x, xmax); int ymax = ::wxGetDisplaySize().y - GetSize().y; // Some fluff at the bottom y = wxMin(y, ymax); - + Move(x, y); } break; } +// master } #endif +#endif //if 0 CelestialNavigationDialog::~CelestialNavigationDialog() { @@ -331,7 +293,7 @@ bool CelestialNavigationDialog::OpenXML(wxString filename, bool reportfailure) s.m_DateTime.SetSecond(time.GetSecond()); } else continue; /* skip if invalid */ - + s.m_TimeCertainty = AttributeDouble(e, "TimeCertainty", 0); s.m_Measurement = AttributeDouble(e, "Measurement", 0); @@ -412,7 +374,7 @@ void CelestialNavigationDialog::SaveXML(wxString filename) c->SetDoubleAttribute("Temperature", s->m_Temperature); c->SetDoubleAttribute("Pressure", s->m_Pressure); c->SetDoubleAttribute("IndexError", s->m_IndexError); - + c->SetDoubleAttribute("ShiftNm", s->m_ShiftNm); c->SetDoubleAttribute("ShiftBearing", s->m_ShiftBearing); c->SetDoubleAttribute("MagneticShiftBearing", s->m_bMagneticShiftBearing); @@ -443,7 +405,7 @@ void CelestialNavigationDialog::InsertSight(Sight *s, bool warnings) m_lSights->SetItemImage(idx, s->IsVisible() ? 0 : -1); #else idx = m_lSights->InsertItem(idx+1, (*it)->IsVisible() ? 0 : -1); -#endif +#endif UpdateSight(idx, warnings); } @@ -462,20 +424,20 @@ void CelestialNavigationDialog::UpdateSight(int idx, bool warnings) wxString::Format(_T(": %.4f"), s->m_TimeCorrection)); else m_lSights->SetItem(idx, rmCOLOR, s->m_ColourName); - + m_lSights->SetColumnWidth(rmTYPE, wxLIST_AUTOSIZE); m_lSights->SetColumnWidth(rmBODY, wxLIST_AUTOSIZE); m_lSights->SetColumnWidth(rmTIME, wxLIST_AUTOSIZE); m_lSights->SetColumnWidth(rmCOLOR, wxLIST_AUTOSIZE); - + if(m_lSights->GetColumnWidth(1) < 20) m_lSights->SetColumnWidth(1, 50); if(m_lSights->GetColumnWidth(2) < 20) m_lSights->SetColumnWidth(2, 50); - + m_lSights->SortItems(SortSights, (long)m_lSights); - + UpdateButtons(); UpdateFix(warnings); } @@ -491,7 +453,7 @@ void CelestialNavigationDialog::UpdateButtons() // enable/disable buttons long selected_index_index = m_lSights->GetNextItem(-1, wxLIST_NEXT_ALL, wxLIST_STATE_SELECTED); bool enable = !(selected_index_index < 0); - + m_bEditSight->Enable(enable); m_bDeleteSight->Enable(enable); m_bDeleteAllSights->Enable(m_lSights->GetItemCount() > 0); @@ -509,7 +471,7 @@ void CelestialNavigationDialog::OnNew(wxCommandEvent &event) Sight s(Sight::ALTITUDE, _("Sun"), Sight::LOWER, now, 0, 0, 10); SightDialog dialog(GetParent(), s, m_ClockCorrectionDialog.m_sClockCorrection->GetValue()); - + if( dialog.ShowModal() == wxID_OK ) { Sight *ns = new Sight(s); @@ -540,9 +502,9 @@ void CelestialNavigationDialog::OnEdit( ) Sight *psight = (Sight*)wxUIntToPtr(m_lSights->GetItemData(selected_index)); Sight originalsight = *psight; /* in case of cancel */ - + SightDialog dialog(GetParent(), *psight, m_ClockCorrectionDialog.m_sClockCorrection->GetValue()); - + if( dialog.ShowModal() == wxID_OK ) { dialog.Recompute(); psight->RebuildPolygons(); @@ -558,7 +520,7 @@ void CelestialNavigationDialog::OnDelete(wxCommandEvent &event) // Delete selected_index sight/track long selected_index = m_lSights->GetNextItem(-1, wxLIST_NEXT_ALL, wxLIST_STATE_SELECTED); if (selected_index < 0) return; - + m_lSights->DeleteItem(selected_index); RequestRefresh( GetParent() ); } @@ -604,14 +566,23 @@ void CelestialNavigationDialog::OnClockOffset( wxCommandEvent& event ) m_ClockCorrectionDialog.Show(); } -void CelestialNavigationDialog::OnInformation( wxCommandEvent& event ) +//void CelestialNavigationDialog::OnInformation( wxCommandEvent& event ) +//{ +// wxString infolocation = *GetpSharedDataLocation() +// + _T("plugins/celestial_navigation_pi/data/") +// + _("Celestial_Navigation_Information.html"); +// wxLaunchDefaultBrowser(_T("file://") + infolocation); +//} + + void CelestialNavigationDialog::OnInformation( wxCommandEvent& event ) { - wxString infolocation = *GetpSharedDataLocation() - + _T("plugins/celestial_navigation_pi/data/") - + _("Celestial_Navigation_Information.html"); + wxString infolocation =GetPluginDataDir("celestial_navigation_pi") + + _T("/data/") + + _("Celestial_Navigation_Information.html"); wxLaunchDefaultBrowser(_T("file://") + infolocation); } + void CelestialNavigationDialog::OnHide( wxCommandEvent& event ) { m_tbHide->SetLabel(m_tbHide->GetValue() ? _("Show") : _("Hide")); @@ -623,7 +594,7 @@ void CelestialNavigationDialog::OnSightListLeftDown(wxMouseEvent &event) wxPoint pos = event.GetPosition(); int flags = 0; long clicked_index = m_lSights->HitTest(pos, flags); - + // Clicking Visibility column? if (clicked_index > -1 && event.GetX() < m_lSights->GetColumnWidth(0)) { diff --git a/src/CelestialNavigationDialog.h b/src/CelestialNavigationDialog.h index 3f2357c..3052234 100644 --- a/src/CelestialNavigationDialog.h +++ b/src/CelestialNavigationDialog.h @@ -29,9 +29,6 @@ #define _CelestialNavigationDialog_h_ #include -#ifdef __OCPN__ANDROID__ -#include -#endif #include "geodesic.h" #include "CelestialNavigationUI.h" @@ -43,9 +40,6 @@ class CelestialNavigationDialog : public CelestialNavigationDialogBase public: CelestialNavigationDialog(wxWindow *parent); ~CelestialNavigationDialog(); -#ifdef __OCPN__ANDROID__ - void OnEvtPanGesture( wxQT_PanGestureEvent &event); -#endif void UpdateSights(); FixDialog m_FixDialog; @@ -71,7 +65,6 @@ class CelestialNavigationDialog : public CelestialNavigationDialogBase void OnClockOffset( wxCommandEvent& event ); void OnInformation( wxCommandEvent& event ); void OnHide( wxCommandEvent& event ); - void OnClose( wxCommandEvent& event ) { Hide(); } void OnClockCorrection( wxSpinEvent& event ); void OnSightListLeftDown(wxMouseEvent &event); @@ -85,9 +78,8 @@ class CelestialNavigationDialog : public CelestialNavigationDialogBase int clock_correction; ClockCorrectionDialog m_ClockCorrectionDialog; -#ifdef __OCPN__ANDROID__ - wxPoint m_downPos, m_startPos, m_startMouse; -#endif + wxPoint m_startPos; + wxPoint m_startMouse; }; #endif // _CelestialNavigationDialog_h_ diff --git a/src/CelestialNavigationUI.cpp b/src/CelestialNavigationUI.cpp index 76540cd..b222fdb 100755 --- a/src/CelestialNavigationUI.cpp +++ b/src/CelestialNavigationUI.cpp @@ -1,5 +1,5 @@ /////////////////////////////////////////////////////////////////////////// -// C++ code generated with wxFormBuilder (version May 19 2018) +// C++ code generated with wxFormBuilder (version Dec 20 2017) // http://www.wxformbuilder.org/ // // PLEASE DO *NOT* EDIT THIS FILE! @@ -49,20 +49,17 @@ CelestialNavigationDialogBase::CelestialNavigationDialogBase( wxWindow* parent, m_bClockOffset = new wxButton( this, wxID_ANY, _("Clock Offset"), wxDefaultPosition, wxDefaultSize, 0 ); fgSizer24->Add( m_bClockOffset, 0, wxALL|wxEXPAND, 5 ); - m_tbHide = new wxToggleButton( this, wxID_ANY, _("Hide"), wxDefaultPosition, wxDefaultSize, 0 ); - fgSizer24->Add( m_tbHide, 0, wxALL|wxEXPAND, 5 ); - m_bEditSight = new wxButton( this, wxID_ANY, _("Edit"), wxDefaultPosition, wxDefaultSize, 0 ); fgSizer24->Add( m_bEditSight, 0, wxALL|wxEXPAND, 5 ); - m_bInformation = new wxButton( this, wxID_ANY, _("Information"), wxDefaultPosition, wxDefaultSize, 0 ); - fgSizer24->Add( m_bInformation, 0, wxALL|wxEXPAND, 5 ); + m_tbHide = new wxToggleButton( this, wxID_ANY, _("Hide"), wxDefaultPosition, wxDefaultSize, 0 ); + fgSizer24->Add( m_tbHide, 0, wxALL|wxEXPAND, 5 ); m_bDeleteSight = new wxButton( this, wxID_ANY, _("Delete"), wxDefaultPosition, wxDefaultSize, 0 ); fgSizer24->Add( m_bDeleteSight, 0, wxALL|wxEXPAND, 5 ); - m_bClose = new wxButton( this, wxID_ANY, _("Close"), wxDefaultPosition, wxDefaultSize, 0 ); - fgSizer24->Add( m_bClose, 0, wxALL, 5 ); + m_bInformation = new wxButton( this, wxID_ANY, _("Information"), wxDefaultPosition, wxDefaultSize, 0 ); + fgSizer24->Add( m_bInformation, 0, wxALL|wxEXPAND, 5 ); m_bDeleteAllSights = new wxButton( this, wxID_ANY, _("Delete All"), wxDefaultPosition, wxDefaultSize, 0 ); fgSizer24->Add( m_bDeleteAllSights, 0, wxALL|wxEXPAND, 5 ); @@ -88,12 +85,10 @@ CelestialNavigationDialogBase::CelestialNavigationDialogBase( wxWindow* parent, m_bFix->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( CelestialNavigationDialogBase::OnFix ), NULL, this ); m_bDuplicateSight->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( CelestialNavigationDialogBase::OnDuplicate ), NULL, this ); m_bClockOffset->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( CelestialNavigationDialogBase::OnClockOffset ), NULL, this ); - m_tbHide->Connect( wxEVT_COMMAND_TOGGLEBUTTON_CLICKED, wxCommandEventHandler( CelestialNavigationDialogBase::OnHide ), NULL, this ); m_bEditSight->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( CelestialNavigationDialogBase::OnEdit ), NULL, this ); - m_bInformation->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( CelestialNavigationDialogBase::OnInformation ), NULL, this ); + m_tbHide->Connect( wxEVT_COMMAND_TOGGLEBUTTON_CLICKED, wxCommandEventHandler( CelestialNavigationDialogBase::OnHide ), NULL, this ); m_bDeleteSight->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( CelestialNavigationDialogBase::OnDelete ), NULL, this ); - m_bClose->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( CelestialNavigationDialogBase::OnClose ), NULL, this ); - m_bClose->Connect( wxEVT_LEFT_DCLICK, wxMouseEventHandler( CelestialNavigationDialogBase::OnClose ), NULL, this ); + m_bInformation->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( CelestialNavigationDialogBase::OnInformation ), NULL, this ); m_bDeleteAllSights->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( CelestialNavigationDialogBase::OnDeleteAll ), NULL, this ); } @@ -108,12 +103,10 @@ CelestialNavigationDialogBase::~CelestialNavigationDialogBase() m_bFix->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( CelestialNavigationDialogBase::OnFix ), NULL, this ); m_bDuplicateSight->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( CelestialNavigationDialogBase::OnDuplicate ), NULL, this ); m_bClockOffset->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( CelestialNavigationDialogBase::OnClockOffset ), NULL, this ); - m_tbHide->Disconnect( wxEVT_COMMAND_TOGGLEBUTTON_CLICKED, wxCommandEventHandler( CelestialNavigationDialogBase::OnHide ), NULL, this ); m_bEditSight->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( CelestialNavigationDialogBase::OnEdit ), NULL, this ); - m_bInformation->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( CelestialNavigationDialogBase::OnInformation ), NULL, this ); + m_tbHide->Disconnect( wxEVT_COMMAND_TOGGLEBUTTON_CLICKED, wxCommandEventHandler( CelestialNavigationDialogBase::OnHide ), NULL, this ); m_bDeleteSight->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( CelestialNavigationDialogBase::OnDelete ), NULL, this ); - m_bClose->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( CelestialNavigationDialogBase::OnClose ), NULL, this ); - m_bClose->Disconnect( wxEVT_LEFT_DCLICK, wxMouseEventHandler( CelestialNavigationDialogBase::OnClose ), NULL, this ); + m_bInformation->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( CelestialNavigationDialogBase::OnInformation ), NULL, this ); m_bDeleteAllSights->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( CelestialNavigationDialogBase::OnDeleteAll ), NULL, this ); } diff --git a/src/CelestialNavigationUI.h b/src/CelestialNavigationUI.h index 702dd31..723d1d2 100755 --- a/src/CelestialNavigationUI.h +++ b/src/CelestialNavigationUI.h @@ -1,5 +1,5 @@ /////////////////////////////////////////////////////////////////////////// -// C++ code generated with wxFormBuilder (version May 19 2018) +// C++ code generated with wxFormBuilder (version Dec 20 2017) // http://www.wxformbuilder.org/ // // PLEASE DO *NOT* EDIT THIS FILE! @@ -55,11 +55,10 @@ class CelestialNavigationDialogBase : public wxDialog wxButton* m_bFix; wxButton* m_bDuplicateSight; wxButton* m_bClockOffset; - wxToggleButton* m_tbHide; wxButton* m_bEditSight; - wxButton* m_bInformation; + wxToggleButton* m_tbHide; wxButton* m_bDeleteSight; - wxButton* m_bClose; + wxButton* m_bInformation; wxButton* m_bDeleteAllSights; // Virtual event handlers, overide them in your derived class @@ -70,12 +69,10 @@ class CelestialNavigationDialogBase : public wxDialog virtual void OnFix( wxCommandEvent& event ) { event.Skip(); } virtual void OnDuplicate( wxCommandEvent& event ) { event.Skip(); } virtual void OnClockOffset( wxCommandEvent& event ) { event.Skip(); } - virtual void OnHide( wxCommandEvent& event ) { event.Skip(); } virtual void OnEdit( wxCommandEvent& event ) { event.Skip(); } - virtual void OnInformation( wxCommandEvent& event ) { event.Skip(); } + virtual void OnHide( wxCommandEvent& event ) { event.Skip(); } virtual void OnDelete( wxCommandEvent& event ) { event.Skip(); } - virtual void OnClose( wxCommandEvent& event ) { event.Skip(); } - virtual void OnClose( wxMouseEvent& event ) { event.Skip(); } + virtual void OnInformation( wxCommandEvent& event ) { event.Skip(); } virtual void OnDeleteAll( wxCommandEvent& event ) { event.Skip(); } diff --git a/src/FixDialog.cpp b/src/FixDialog.cpp index dc02109..63a9e2a 100644 --- a/src/FixDialog.cpp +++ b/src/FixDialog.cpp @@ -33,6 +33,8 @@ #include "Sight.h" #include + +//#include using namespace std; FixDialog::FixDialog(wxWindow *parent) : diff --git a/src/Sight.cpp b/src/Sight.cpp index ea237cf..635c8b1 100644 --- a/src/Sight.cpp +++ b/src/Sight.cpp @@ -25,6 +25,12 @@ * */ +//#include "wx/wxprec.h" + +//#ifndef WX_PRECOMP +// #include "wx/wx.h" +//#endif //precompiled headers + #include #include #include @@ -34,9 +40,15 @@ #include #include +#ifdef __WXOSX__ +#include +#else +#include +#endif + #include "ocpn_plugin.h" -#include "plugingl/pidc.h" +#include "celestial_navigation_pi.h" #include "Sight.h" #include "transform_star.hpp" @@ -133,7 +145,11 @@ using namespace astrolabe::vsop87d; /* calculate what position the body for this sight is directly over at a given time */ void Sight::BodyLocation(wxDateTime time, double *lat, double *lon, double *ghaast, double *rad) { - static int error_message = 1; +// astrolabe::globals::vsop87d_text_path = (const char *)GetPluginDataDir(celestial_navigation_pi)->mb_str(); + astrolabe::globals::vsop87d_text_path = GetPluginDataDir("celestial_navigation_pi"); +// astrolabe::globals::vsop87d_text_path.append("plugins/celestial_navigation_pi/data/"); + astrolabe::globals::vsop87d_text_path.append("/data/"); + astrolabe::globals::vsop87d_text_path.append("vsop87d.txt"); time.MakeFromUTC(); double jdu = time.GetJulianDayNumber(); @@ -152,21 +168,19 @@ void Sight::BodyLocation(wxDateTime time, double *lat, double *lon, double *ghaa Sun sun; sun.dimension3(jdd, l, b, r); } catch (Error e) { - if(error_message) { - error_message--; + static bool showonce = false; + if(!showonce) { wxString err; const char *what = e.what(); while(*what) err += *what++; - wxMessageDialog mdlg(NULL, _("vsop87d.txt missing or corrupt\n") - + err + _("The plugin will not work correctly"), - _("Failure Alert"), wxOK | wxICON_ERROR); + wxMessageDialog mdlg(NULL, _("Astrolab failed, data unavailable:\n") + + err + _("\nDid you forget to install vsop87d.txt?\n") + +_("The plugin will not work correctly"), + wxString(_("Failure Alert"), wxOK | wxICON_ERROR)); mdlg.ShowModal(); - wxRemoveFile(astrolabe::globals::vsop87d_text_path); + showonce = true; + } - if(lat) *lat = 0; - if(lon) *lon = 0; - if(ghaast) *ghaast = 0; - if(rad) *rad = 0; return; } @@ -391,7 +405,7 @@ wxRealPointList *Sight::ReduceToConvexPolygon(wxRealPointList *points) } /* Draw a polygon (specified in lat/lon coords) to dc given a list of points */ -void Sight::DrawPolygon(piDC &dc, PlugIn_ViewPort &vp, wxRealPointList &area) +void Sight::DrawPolygon(PlugIn_ViewPort &VP, wxRealPointList &area) { int n = area.size(); wxPoint *ppoints = new wxPoint[n]; @@ -407,7 +421,7 @@ void Sight::DrawPolygon(piDC &dc, PlugIn_ViewPort &vp, wxRealPointList &area) wxPoint r; /* don't draw areas crossing opposite from center longitude */ - double lon = (*it)->y - vp.clon; + double lon = (*it)->y - VP.clon; lon = resolve_heading_positive(lon); if(lon > 90 && lon <= 180) @@ -422,13 +436,21 @@ void Sight::DrawPolygon(piDC &dc, PlugIn_ViewPort &vp, wxRealPointList &area) maxx = wxMax(maxx, (*it)->x); maxy = wxMax(maxy, (*it)->y); - GetCanvasPixLL(&vp, &r, (*it)->x, (*it)->y); + GetCanvasPixLL(&VP, &r, (*it)->x, (*it)->y); ppoints[i] = r; } - if(!(rear1 && rear2)) - dc.DrawPolygon(n, ppoints); + if(!(rear1 && rear2)) { + if(m_dc) + m_dc->DrawPolygon(n, ppoints); + else { + glBegin(GL_POLYGON); + for(int i=n-1; i>=0; i--) + glVertex2i(ppoints[i].x, ppoints[i].y); + glEnd(); + } + } delete [] ppoints; } @@ -440,19 +462,33 @@ double Sight::ComputeStepSize(double certainty, double stepsize, double min, dou } /* render the area of position for this sight */ -void Sight::Render( piDC &dc, PlugIn_ViewPort &vp ) +void Sight::Render( wxDC *dc, PlugIn_ViewPort &VP ) { if ( !m_bVisible ) return; - dc.SetPen ( wxPen(m_Colour, 1) ); - dc.SetBrush ( wxBrush(m_Colour) ); + m_dc = dc; + + if(dc) { + dc->SetPen ( wxPen(m_Colour, 1) ); + dc->SetBrush ( wxBrush(m_Colour) ); + } else { + glColor4ub(m_Colour.Red(), m_Colour.Green(), m_Colour.Blue(), m_Colour.Alpha()); + glPushAttrib(GL_COLOR_BUFFER_BIT | GL_POLYGON_BIT); //Save state + + glEnable(GL_POLYGON_SMOOTH); + glEnable(GL_BLEND); + glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); + } std::list::iterator it = polygons.begin(); while(it != polygons.end()) { - DrawPolygon(dc, vp, **it); + DrawPolygon(VP, **it); ++it; } + + if(!m_dc) + glPopAttrib(); // restore state } void Sight::Recompute(int clock_offset) diff --git a/src/Sight.h b/src/Sight.h index 22d0db7..49c6f56 100644 --- a/src/Sight.h +++ b/src/Sight.h @@ -43,8 +43,6 @@ WX_DECLARE_LIST(wxRealPoint, wxRealPointList); -class piDC; - // Sight //---------------------------------------------------------------------------- @@ -101,7 +99,7 @@ class Sight : public wxObject wxString m_ColourName; wxColour m_Colour; // Color of the sight - virtual void Render(piDC &dc, PlugIn_ViewPort &pVP); + virtual void Render(wxDC *dc, PlugIn_ViewPort &pVP); void BodyLocation(wxDateTime time, double *lat, double *lon, double *ghaash, double *rad); std::list GetPoints(); @@ -137,7 +135,9 @@ class Sight : public wxObject double azimuthmin, double azimuthmax, double azimuthstep, double timemin, double timemax, double timestep); - void DrawPolygon(piDC &dc, PlugIn_ViewPort &vp, wxRealPointList &area); + void DrawPolygon(PlugIn_ViewPort &VP, wxRealPointList &area); + + wxDC *m_dc; wxDateTime m_CorrectedDateTime; diff --git a/src/SightDialog.cpp b/src/SightDialog.cpp index e51e6bc..3774fe8 100755 --- a/src/SightDialog.cpp +++ b/src/SightDialog.cpp @@ -27,7 +27,6 @@ #include #include // toh, 2009.02.22 - #include "wx/notebook.h" #include "wx/datetime.h" #include "wx/colordlg.h" @@ -166,7 +165,7 @@ SightDialog::SightDialog( wxWindow* parent, Sight &s, int clock_offset) m_ColourPicker->SetColour(m_Sight.m_Colour); // calculate approximate lunar altitude - if(wxIsNaN(m_Sight.m_LunarMoonAltitude)) + if(isnan(m_Sight.m_LunarMoonAltitude)) m_Sight.m_LunarMoonAltitude = BodyAltitude(_T("moon")); m_tLunarMoonAltitude->SetValue(wxString::Format(_T("%.2f"), m_Sight.m_LunarMoonAltitude)); m_tLunarBodyAltitude->SetValue(wxString::Format(_T("%.2f"), m_Sight.m_LunarBodyAltitude)); @@ -174,11 +173,6 @@ SightDialog::SightDialog( wxWindow* parent, Sight &s, int clock_offset) m_breadytorecompute = true; Recompute(); - -#ifdef __OCPN__ANDROID__ - GetHandle()->setStyleSheet( qtStyleSheet); - Move(0, 0); -#endif } SightDialog::~SightDialog( ) diff --git a/src/bzip2/blocksort.c b/src/bzip2/blocksort.c deleted file mode 100644 index aba3efc..0000000 --- a/src/bzip2/blocksort.c +++ /dev/null @@ -1,1141 +0,0 @@ - -/*-------------------------------------------------------------*/ -/*--- Block sorting machinery ---*/ -/*--- blocksort.c ---*/ -/*-------------------------------------------------------------*/ - -/*-- - This file is a part of bzip2 and/or libbzip2, a program and - library for lossless, block-sorting data compression. - - Copyright (C) 1996-2002 Julian R Seward. All rights reserved. - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions - are met: - - 1. Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - - 2. The origin of this software must not be misrepresented; you must - not claim that you wrote the original software. If you use this - software in a product, an acknowledgment in the product - documentation would be appreciated but is not required. - - 3. Altered source versions must be plainly marked as such, and must - not be misrepresented as being the original software. - - 4. The name of the author may not be used to endorse or promote - products derived from this software without specific prior written - permission. - - THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS - OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY - DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE - GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS - INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, - WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - - Julian Seward, Cambridge, UK. - jseward@acm.org - bzip2/libbzip2 version 1.0 of 21 March 2000 - - This program is based on (at least) the work of: - Mike Burrows - David Wheeler - Peter Fenwick - Alistair Moffat - Radford Neal - Ian H. Witten - Robert Sedgewick - Jon L. Bentley - - For more information on these sources, see the manual. - - To get some idea how the block sorting algorithms in this file - work, read my paper - On the Performance of BWT Sorting Algorithms - in Proceedings of the IEEE Data Compression Conference 2000, - Snowbird, Utah, USA, 27-30 March 2000. The main sort in this - file implements the algorithm called cache in the paper. ---*/ - - -#include "bzlib_private.h" - -/*---------------------------------------------*/ -/*--- Fallback O(N log(N)^2) sorting ---*/ -/*--- algorithm, for repetitive blocks ---*/ -/*---------------------------------------------*/ - -/*---------------------------------------------*/ -static -__inline__ -void fallbackSimpleSort ( UInt32* fmap, - UInt32* eclass, - Int32 lo, - Int32 hi ) -{ - Int32 i, j, tmp; - UInt32 ec_tmp; - - if (lo == hi) return; - - if (hi - lo > 3) { - for ( i = hi-4; i >= lo; i-- ) { - tmp = fmap[i]; - ec_tmp = eclass[tmp]; - for ( j = i+4; j <= hi && ec_tmp > eclass[fmap[j]]; j += 4 ) - fmap[j-4] = fmap[j]; - fmap[j-4] = tmp; - } - } - - for ( i = hi-1; i >= lo; i-- ) { - tmp = fmap[i]; - ec_tmp = eclass[tmp]; - for ( j = i+1; j <= hi && ec_tmp > eclass[fmap[j]]; j++ ) - fmap[j-1] = fmap[j]; - fmap[j-1] = tmp; - } -} - - -/*---------------------------------------------*/ -#define fswap(zz1, zz2) \ - { Int32 zztmp = zz1; zz1 = zz2; zz2 = zztmp; } - -#define fvswap(zzp1, zzp2, zzn) \ -{ \ - Int32 yyp1 = (zzp1); \ - Int32 yyp2 = (zzp2); \ - Int32 yyn = (zzn); \ - while (yyn > 0) { \ - fswap(fmap[yyp1], fmap[yyp2]); \ - yyp1++; yyp2++; yyn--; \ - } \ -} - - -#define fmin(a,b) ((a) < (b)) ? (a) : (b) - -#define fpush(lz,hz) { stackLo[sp] = lz; \ - stackHi[sp] = hz; \ - sp++; } - -#define fpop(lz,hz) { sp--; \ - lz = stackLo[sp]; \ - hz = stackHi[sp]; } - -#define FALLBACK_QSORT_SMALL_THRESH 10 -#define FALLBACK_QSORT_STACK_SIZE 100 - - -static -void fallbackQSort3 ( UInt32* fmap, - UInt32* eclass, - Int32 loSt, - Int32 hiSt ) -{ - Int32 unLo, unHi, ltLo, gtHi, n, m; - Int32 sp, lo, hi; - UInt32 med, r, r3; - Int32 stackLo[FALLBACK_QSORT_STACK_SIZE]; - Int32 stackHi[FALLBACK_QSORT_STACK_SIZE]; - - r = 0; - - sp = 0; - fpush ( loSt, hiSt ); - - while (sp > 0) { - - AssertH ( sp < FALLBACK_QSORT_STACK_SIZE, 1004 ); - - fpop ( lo, hi ); - if (hi - lo < FALLBACK_QSORT_SMALL_THRESH) { - fallbackSimpleSort ( fmap, eclass, lo, hi ); - continue; - } - - /* Random partitioning. Median of 3 sometimes fails to - avoid bad cases. Median of 9 seems to help but - looks rather expensive. This too seems to work but - is cheaper. Guidance for the magic constants - 7621 and 32768 is taken from Sedgewick's algorithms - book, chapter 35. - */ - r = ((r * 7621) + 1) % 32768; - r3 = r % 3; - if (r3 == 0) med = eclass[fmap[lo]]; else - if (r3 == 1) med = eclass[fmap[(lo+hi)>>1]]; else - med = eclass[fmap[hi]]; - - unLo = ltLo = lo; - unHi = gtHi = hi; - - while (1) { - while (1) { - if (unLo > unHi) break; - n = (Int32)eclass[fmap[unLo]] - (Int32)med; - if (n == 0) { - fswap(fmap[unLo], fmap[ltLo]); - ltLo++; unLo++; - continue; - }; - if (n > 0) break; - unLo++; - } - while (1) { - if (unLo > unHi) break; - n = (Int32)eclass[fmap[unHi]] - (Int32)med; - if (n == 0) { - fswap(fmap[unHi], fmap[gtHi]); - gtHi--; unHi--; - continue; - }; - if (n < 0) break; - unHi--; - } - if (unLo > unHi) break; - fswap(fmap[unLo], fmap[unHi]); unLo++; unHi--; - } - - AssertD ( unHi == unLo-1, "fallbackQSort3(2)" ); - - if (gtHi < ltLo) continue; - - n = fmin(ltLo-lo, unLo-ltLo); fvswap(lo, unLo-n, n); - m = fmin(hi-gtHi, gtHi-unHi); fvswap(unLo, hi-m+1, m); - - n = lo + unLo - ltLo - 1; - m = hi - (gtHi - unHi) + 1; - - if (n - lo > hi - m) { - fpush ( lo, n ); - fpush ( m, hi ); - } else { - fpush ( m, hi ); - fpush ( lo, n ); - } - } -} - -#undef fmin -#undef fpush -#undef fpop -#undef fswap -#undef fvswap -#undef FALLBACK_QSORT_SMALL_THRESH -#undef FALLBACK_QSORT_STACK_SIZE - - -/*---------------------------------------------*/ -/* Pre: - nblock > 0 - eclass exists for [0 .. nblock-1] - ((UChar*)eclass) [0 .. nblock-1] holds block - ptr exists for [0 .. nblock-1] - - Post: - ((UChar*)eclass) [0 .. nblock-1] holds block - All other areas of eclass destroyed - fmap [0 .. nblock-1] holds sorted order - bhtab [ 0 .. 2+(nblock/32) ] destroyed -*/ - -#define SET_BH(zz) bhtab[(zz) >> 5] |= (1 << ((zz) & 31)) -#define CLEAR_BH(zz) bhtab[(zz) >> 5] &= ~(1 << ((zz) & 31)) -#define ISSET_BH(zz) (bhtab[(zz) >> 5] & (1 << ((zz) & 31))) -#define WORD_BH(zz) bhtab[(zz) >> 5] -#define UNALIGNED_BH(zz) ((zz) & 0x01f) - -static -void fallbackSort ( UInt32* fmap, - UInt32* eclass, - UInt32* bhtab, - Int32 nblock, - Int32 verb ) -{ - Int32 ftab[257]; - Int32 ftabCopy[256]; - Int32 H, i, j, k, l, r, cc, cc1; - Int32 nNotDone; - Int32 nBhtab; - UChar* eclass8 = (UChar*)eclass; - - /*-- - Initial 1-char radix sort to generate - initial fmap and initial BH bits. - --*/ - if (verb >= 4) - VPrintf0 ( " bucket sorting ...\n" ); - for (i = 0; i < 257; i++) ftab[i] = 0; - for (i = 0; i < nblock; i++) ftab[eclass8[i]]++; - for (i = 0; i < 256; i++) ftabCopy[i] = ftab[i]; - for (i = 1; i < 257; i++) ftab[i] += ftab[i-1]; - - for (i = 0; i < nblock; i++) { - j = eclass8[i]; - k = ftab[j] - 1; - ftab[j] = k; - fmap[k] = i; - } - - nBhtab = 2 + (nblock / 32); - for (i = 0; i < nBhtab; i++) bhtab[i] = 0; - for (i = 0; i < 256; i++) SET_BH(ftab[i]); - - /*-- - Inductively refine the buckets. Kind-of an - "exponential radix sort" (!), inspired by the - Manber-Myers suffix array construction algorithm. - --*/ - - /*-- set sentinel bits for block-end detection --*/ - for (i = 0; i < 32; i++) { - SET_BH(nblock + 2*i); - CLEAR_BH(nblock + 2*i + 1); - } - - /*-- the log(N) loop --*/ - H = 1; - while (1) { - - if (verb >= 4) - VPrintf1 ( " depth %6d has ", H ); - - j = 0; - for (i = 0; i < nblock; i++) { - if (ISSET_BH(i)) j = i; - k = fmap[i] - H; if (k < 0) k += nblock; - eclass[k] = j; - } - - nNotDone = 0; - r = -1; - while (1) { - - /*-- find the next non-singleton bucket --*/ - k = r + 1; - while (ISSET_BH(k) && UNALIGNED_BH(k)) k++; - if (ISSET_BH(k)) { - while (WORD_BH(k) == 0xffffffff) k += 32; - while (ISSET_BH(k)) k++; - } - l = k - 1; - if (l >= nblock) break; - while (!ISSET_BH(k) && UNALIGNED_BH(k)) k++; - if (!ISSET_BH(k)) { - while (WORD_BH(k) == 0x00000000) k += 32; - while (!ISSET_BH(k)) k++; - } - r = k - 1; - if (r >= nblock) break; - - /*-- now [l, r] bracket current bucket --*/ - if (r > l) { - nNotDone += (r - l + 1); - fallbackQSort3 ( fmap, eclass, l, r ); - - /*-- scan bucket and generate header bits-- */ - cc = -1; - for (i = l; i <= r; i++) { - cc1 = eclass[fmap[i]]; - if (cc != cc1) { SET_BH(i); cc = cc1; }; - } - } - } - - if (verb >= 4) - VPrintf1 ( "%6d unresolved strings\n", nNotDone ); - - H *= 2; - if (H > nblock || nNotDone == 0) break; - } - - /*-- - Reconstruct the original block in - eclass8 [0 .. nblock-1], since the - previous phase destroyed it. - --*/ - if (verb >= 4) - VPrintf0 ( " reconstructing block ...\n" ); - j = 0; - for (i = 0; i < nblock; i++) { - while (ftabCopy[j] == 0) j++; - ftabCopy[j]--; - eclass8[fmap[i]] = (UChar)j; - } - AssertH ( j < 256, 1005 ); -} - -#undef SET_BH -#undef CLEAR_BH -#undef ISSET_BH -#undef WORD_BH -#undef UNALIGNED_BH - - -/*---------------------------------------------*/ -/*--- The main, O(N^2 log(N)) sorting ---*/ -/*--- algorithm. Faster for "normal" ---*/ -/*--- non-repetitive blocks. ---*/ -/*---------------------------------------------*/ - -/*---------------------------------------------*/ -static -__inline__ -Bool mainGtU ( UInt32 i1, - UInt32 i2, - UChar* block, - UInt16* quadrant, - UInt32 nblock, - Int32* budget ) -{ - Int32 k; - UChar c1, c2; - UInt16 s1, s2; - - AssertD ( i1 != i2, "mainGtU" ); - /* 1 */ - c1 = block[i1]; c2 = block[i2]; - if (c1 != c2) return (c1 > c2); - i1++; i2++; - /* 2 */ - c1 = block[i1]; c2 = block[i2]; - if (c1 != c2) return (c1 > c2); - i1++; i2++; - /* 3 */ - c1 = block[i1]; c2 = block[i2]; - if (c1 != c2) return (c1 > c2); - i1++; i2++; - /* 4 */ - c1 = block[i1]; c2 = block[i2]; - if (c1 != c2) return (c1 > c2); - i1++; i2++; - /* 5 */ - c1 = block[i1]; c2 = block[i2]; - if (c1 != c2) return (c1 > c2); - i1++; i2++; - /* 6 */ - c1 = block[i1]; c2 = block[i2]; - if (c1 != c2) return (c1 > c2); - i1++; i2++; - /* 7 */ - c1 = block[i1]; c2 = block[i2]; - if (c1 != c2) return (c1 > c2); - i1++; i2++; - /* 8 */ - c1 = block[i1]; c2 = block[i2]; - if (c1 != c2) return (c1 > c2); - i1++; i2++; - /* 9 */ - c1 = block[i1]; c2 = block[i2]; - if (c1 != c2) return (c1 > c2); - i1++; i2++; - /* 10 */ - c1 = block[i1]; c2 = block[i2]; - if (c1 != c2) return (c1 > c2); - i1++; i2++; - /* 11 */ - c1 = block[i1]; c2 = block[i2]; - if (c1 != c2) return (c1 > c2); - i1++; i2++; - /* 12 */ - c1 = block[i1]; c2 = block[i2]; - if (c1 != c2) return (c1 > c2); - i1++; i2++; - - k = nblock + 8; - - do { - /* 1 */ - c1 = block[i1]; c2 = block[i2]; - if (c1 != c2) return (c1 > c2); - s1 = quadrant[i1]; s2 = quadrant[i2]; - if (s1 != s2) return (s1 > s2); - i1++; i2++; - /* 2 */ - c1 = block[i1]; c2 = block[i2]; - if (c1 != c2) return (c1 > c2); - s1 = quadrant[i1]; s2 = quadrant[i2]; - if (s1 != s2) return (s1 > s2); - i1++; i2++; - /* 3 */ - c1 = block[i1]; c2 = block[i2]; - if (c1 != c2) return (c1 > c2); - s1 = quadrant[i1]; s2 = quadrant[i2]; - if (s1 != s2) return (s1 > s2); - i1++; i2++; - /* 4 */ - c1 = block[i1]; c2 = block[i2]; - if (c1 != c2) return (c1 > c2); - s1 = quadrant[i1]; s2 = quadrant[i2]; - if (s1 != s2) return (s1 > s2); - i1++; i2++; - /* 5 */ - c1 = block[i1]; c2 = block[i2]; - if (c1 != c2) return (c1 > c2); - s1 = quadrant[i1]; s2 = quadrant[i2]; - if (s1 != s2) return (s1 > s2); - i1++; i2++; - /* 6 */ - c1 = block[i1]; c2 = block[i2]; - if (c1 != c2) return (c1 > c2); - s1 = quadrant[i1]; s2 = quadrant[i2]; - if (s1 != s2) return (s1 > s2); - i1++; i2++; - /* 7 */ - c1 = block[i1]; c2 = block[i2]; - if (c1 != c2) return (c1 > c2); - s1 = quadrant[i1]; s2 = quadrant[i2]; - if (s1 != s2) return (s1 > s2); - i1++; i2++; - /* 8 */ - c1 = block[i1]; c2 = block[i2]; - if (c1 != c2) return (c1 > c2); - s1 = quadrant[i1]; s2 = quadrant[i2]; - if (s1 != s2) return (s1 > s2); - i1++; i2++; - - if (i1 >= nblock) i1 -= nblock; - if (i2 >= nblock) i2 -= nblock; - - k -= 8; - (*budget)--; - } - while (k >= 0); - - return False; -} - - -/*---------------------------------------------*/ -/*-- - Knuth's increments seem to work better - than Incerpi-Sedgewick here. Possibly - because the number of elems to sort is - usually small, typically <= 20. ---*/ -static -Int32 incs[14] = { 1, 4, 13, 40, 121, 364, 1093, 3280, - 9841, 29524, 88573, 265720, - 797161, 2391484 }; - -static -void mainSimpleSort ( UInt32* ptr, - UChar* block, - UInt16* quadrant, - Int32 nblock, - Int32 lo, - Int32 hi, - Int32 d, - Int32* budget ) -{ - Int32 i, j, h, bigN, hp; - UInt32 v; - - bigN = hi - lo + 1; - if (bigN < 2) return; - - hp = 0; - while (incs[hp] < bigN) hp++; - hp--; - - for (; hp >= 0; hp--) { - h = incs[hp]; - - i = lo + h; - while (True) { - - /*-- copy 1 --*/ - if (i > hi) break; - v = ptr[i]; - j = i; - while ( mainGtU ( - ptr[j-h]+d, v+d, block, quadrant, nblock, budget - ) ) { - ptr[j] = ptr[j-h]; - j = j - h; - if (j <= (lo + h - 1)) break; - } - ptr[j] = v; - i++; - - /*-- copy 2 --*/ - if (i > hi) break; - v = ptr[i]; - j = i; - while ( mainGtU ( - ptr[j-h]+d, v+d, block, quadrant, nblock, budget - ) ) { - ptr[j] = ptr[j-h]; - j = j - h; - if (j <= (lo + h - 1)) break; - } - ptr[j] = v; - i++; - - /*-- copy 3 --*/ - if (i > hi) break; - v = ptr[i]; - j = i; - while ( mainGtU ( - ptr[j-h]+d, v+d, block, quadrant, nblock, budget - ) ) { - ptr[j] = ptr[j-h]; - j = j - h; - if (j <= (lo + h - 1)) break; - } - ptr[j] = v; - i++; - - if (*budget < 0) return; - } - } -} - - -/*---------------------------------------------*/ -/*-- - The following is an implementation of - an elegant 3-way quicksort for strings, - described in a paper "Fast Algorithms for - Sorting and Searching Strings", by Robert - Sedgewick and Jon L. Bentley. ---*/ - -#define mswap(zz1, zz2) \ - { Int32 zztmp = zz1; zz1 = zz2; zz2 = zztmp; } - -#define mvswap(zzp1, zzp2, zzn) \ -{ \ - Int32 yyp1 = (zzp1); \ - Int32 yyp2 = (zzp2); \ - Int32 yyn = (zzn); \ - while (yyn > 0) { \ - mswap(ptr[yyp1], ptr[yyp2]); \ - yyp1++; yyp2++; yyn--; \ - } \ -} - -static -__inline__ -UChar mmed3 ( UChar a, UChar b, UChar c ) -{ - UChar t; - if (a > b) { t = a; a = b; b = t; }; - if (b > c) { - b = c; - if (a > b) b = a; - } - return b; -} - -#define mmin(a,b) ((a) < (b)) ? (a) : (b) - -#define mpush(lz,hz,dz) { stackLo[sp] = lz; \ - stackHi[sp] = hz; \ - stackD [sp] = dz; \ - sp++; } - -#define mpop(lz,hz,dz) { sp--; \ - lz = stackLo[sp]; \ - hz = stackHi[sp]; \ - dz = stackD [sp]; } - - -#define mnextsize(az) (nextHi[az]-nextLo[az]) - -#define mnextswap(az,bz) \ - { Int32 tz; \ - tz = nextLo[az]; nextLo[az] = nextLo[bz]; nextLo[bz] = tz; \ - tz = nextHi[az]; nextHi[az] = nextHi[bz]; nextHi[bz] = tz; \ - tz = nextD [az]; nextD [az] = nextD [bz]; nextD [bz] = tz; } - - -#define MAIN_QSORT_SMALL_THRESH 20 -#define MAIN_QSORT_DEPTH_THRESH (BZ_N_RADIX + BZ_N_QSORT) -#define MAIN_QSORT_STACK_SIZE 100 - -static -void mainQSort3 ( UInt32* ptr, - UChar* block, - UInt16* quadrant, - Int32 nblock, - Int32 loSt, - Int32 hiSt, - Int32 dSt, - Int32* budget ) -{ - Int32 unLo, unHi, ltLo, gtHi, n, m, med; - Int32 sp, lo, hi, d; - - Int32 stackLo[MAIN_QSORT_STACK_SIZE]; - Int32 stackHi[MAIN_QSORT_STACK_SIZE]; - Int32 stackD [MAIN_QSORT_STACK_SIZE]; - - Int32 nextLo[3]; - Int32 nextHi[3]; - Int32 nextD [3]; - - sp = 0; - mpush ( loSt, hiSt, dSt ); - - while (sp > 0) { - - AssertH ( sp < MAIN_QSORT_STACK_SIZE, 1001 ); - - mpop ( lo, hi, d ); - if (hi - lo < MAIN_QSORT_SMALL_THRESH || - d > MAIN_QSORT_DEPTH_THRESH) { - mainSimpleSort ( ptr, block, quadrant, nblock, lo, hi, d, budget ); - if (*budget < 0) return; - continue; - } - - med = (Int32) - mmed3 ( block[ptr[ lo ]+d], - block[ptr[ hi ]+d], - block[ptr[ (lo+hi)>>1 ]+d] ); - - unLo = ltLo = lo; - unHi = gtHi = hi; - - while (True) { - while (True) { - if (unLo > unHi) break; - n = ((Int32)block[ptr[unLo]+d]) - med; - if (n == 0) { - mswap(ptr[unLo], ptr[ltLo]); - ltLo++; unLo++; continue; - }; - if (n > 0) break; - unLo++; - } - while (True) { - if (unLo > unHi) break; - n = ((Int32)block[ptr[unHi]+d]) - med; - if (n == 0) { - mswap(ptr[unHi], ptr[gtHi]); - gtHi--; unHi--; continue; - }; - if (n < 0) break; - unHi--; - } - if (unLo > unHi) break; - mswap(ptr[unLo], ptr[unHi]); unLo++; unHi--; - } - - AssertD ( unHi == unLo-1, "mainQSort3(2)" ); - - if (gtHi < ltLo) { - mpush(lo, hi, d+1 ); - continue; - } - - n = mmin(ltLo-lo, unLo-ltLo); mvswap(lo, unLo-n, n); - m = mmin(hi-gtHi, gtHi-unHi); mvswap(unLo, hi-m+1, m); - - n = lo + unLo - ltLo - 1; - m = hi - (gtHi - unHi) + 1; - - nextLo[0] = lo; nextHi[0] = n; nextD[0] = d; - nextLo[1] = m; nextHi[1] = hi; nextD[1] = d; - nextLo[2] = n+1; nextHi[2] = m-1; nextD[2] = d+1; - - if (mnextsize(0) < mnextsize(1)) mnextswap(0,1); - if (mnextsize(1) < mnextsize(2)) mnextswap(1,2); - if (mnextsize(0) < mnextsize(1)) mnextswap(0,1); - - AssertD (mnextsize(0) >= mnextsize(1), "mainQSort3(8)" ); - AssertD (mnextsize(1) >= mnextsize(2), "mainQSort3(9)" ); - - mpush (nextLo[0], nextHi[0], nextD[0]); - mpush (nextLo[1], nextHi[1], nextD[1]); - mpush (nextLo[2], nextHi[2], nextD[2]); - } -} - -#undef mswap -#undef mvswap -#undef mpush -#undef mpop -#undef mmin -#undef mnextsize -#undef mnextswap -#undef MAIN_QSORT_SMALL_THRESH -#undef MAIN_QSORT_DEPTH_THRESH -#undef MAIN_QSORT_STACK_SIZE - - -/*---------------------------------------------*/ -/* Pre: - nblock > N_OVERSHOOT - block32 exists for [0 .. nblock-1 +N_OVERSHOOT] - ((UChar*)block32) [0 .. nblock-1] holds block - ptr exists for [0 .. nblock-1] - - Post: - ((UChar*)block32) [0 .. nblock-1] holds block - All other areas of block32 destroyed - ftab [0 .. 65536 ] destroyed - ptr [0 .. nblock-1] holds sorted order - if (*budget < 0), sorting was abandoned -*/ - -#define BIGFREQ(b) (ftab[((b)+1) << 8] - ftab[(b) << 8]) -#define SETMASK (1 << 21) -#define CLEARMASK (~(SETMASK)) - -static -void mainSort ( UInt32* ptr, - UChar* block, - UInt16* quadrant, - UInt32* ftab, - Int32 nblock, - Int32 verb, - Int32* budget ) -{ - Int32 i, j, k, ss, sb; - Int32 runningOrder[256]; - Bool bigDone[256]; - Int32 copyStart[256]; - Int32 copyEnd [256]; - UChar c1; - Int32 numQSorted; - UInt16 s; - if (verb >= 4) VPrintf0 ( " main sort initialise ...\n" ); - - /*-- set up the 2-byte frequency table --*/ - for (i = 65536; i >= 0; i--) ftab[i] = 0; - - j = block[0] << 8; - i = nblock-1; - for (; i >= 3; i -= 4) { - quadrant[i] = 0; - j = (j >> 8) | ( ((UInt16)block[i]) << 8); - ftab[j]++; - quadrant[i-1] = 0; - j = (j >> 8) | ( ((UInt16)block[i-1]) << 8); - ftab[j]++; - quadrant[i-2] = 0; - j = (j >> 8) | ( ((UInt16)block[i-2]) << 8); - ftab[j]++; - quadrant[i-3] = 0; - j = (j >> 8) | ( ((UInt16)block[i-3]) << 8); - ftab[j]++; - } - for (; i >= 0; i--) { - quadrant[i] = 0; - j = (j >> 8) | ( ((UInt16)block[i]) << 8); - ftab[j]++; - } - - /*-- (emphasises close relationship of block & quadrant) --*/ - for (i = 0; i < BZ_N_OVERSHOOT; i++) { - block [nblock+i] = block[i]; - quadrant[nblock+i] = 0; - } - - if (verb >= 4) VPrintf0 ( " bucket sorting ...\n" ); - - /*-- Complete the initial radix sort --*/ - for (i = 1; i <= 65536; i++) ftab[i] += ftab[i-1]; - - s = block[0] << 8; - i = nblock-1; - for (; i >= 3; i -= 4) { - s = (s >> 8) | (block[i] << 8); - j = ftab[s] -1; - ftab[s] = j; - ptr[j] = i; - s = (s >> 8) | (block[i-1] << 8); - j = ftab[s] -1; - ftab[s] = j; - ptr[j] = i-1; - s = (s >> 8) | (block[i-2] << 8); - j = ftab[s] -1; - ftab[s] = j; - ptr[j] = i-2; - s = (s >> 8) | (block[i-3] << 8); - j = ftab[s] -1; - ftab[s] = j; - ptr[j] = i-3; - } - for (; i >= 0; i--) { - s = (s >> 8) | (block[i] << 8); - j = ftab[s] -1; - ftab[s] = j; - ptr[j] = i; - } - - /*-- - Now ftab contains the first loc of every small bucket. - Calculate the running order, from smallest to largest - big bucket. - --*/ - for (i = 0; i <= 255; i++) { - bigDone [i] = False; - runningOrder[i] = i; - } - - { - Int32 vv; - Int32 h = 1; - do h = 3 * h + 1; while (h <= 256); - do { - h = h / 3; - for (i = h; i <= 255; i++) { - vv = runningOrder[i]; - j = i; - while ( BIGFREQ(runningOrder[j-h]) > BIGFREQ(vv) ) { - runningOrder[j] = runningOrder[j-h]; - j = j - h; - if (j <= (h - 1)) goto zero; - } - zero: - runningOrder[j] = vv; - } - } while (h != 1); - } - - /*-- - The main sorting loop. - --*/ - - numQSorted = 0; - - for (i = 0; i <= 255; i++) { - - /*-- - Process big buckets, starting with the least full. - Basically this is a 3-step process in which we call - mainQSort3 to sort the small buckets [ss, j], but - also make a big effort to avoid the calls if we can. - --*/ - ss = runningOrder[i]; - - /*-- - Step 1: - Complete the big bucket [ss] by quicksorting - any unsorted small buckets [ss, j], for j != ss. - Hopefully previous pointer-scanning phases have already - completed many of the small buckets [ss, j], so - we don't have to sort them at all. - --*/ - for (j = 0; j <= 255; j++) { - if (j != ss) { - sb = (ss << 8) + j; - if ( ! (ftab[sb] & SETMASK) ) { - Int32 lo = ftab[sb] & CLEARMASK; - Int32 hi = (ftab[sb+1] & CLEARMASK) - 1; - if (hi > lo) { - if (verb >= 4) - VPrintf4 ( " qsort [0x%x, 0x%x] " - "done %d this %d\n", - ss, j, numQSorted, hi - lo + 1 ); - mainQSort3 ( - ptr, block, quadrant, nblock, - lo, hi, BZ_N_RADIX, budget - ); - numQSorted += (hi - lo + 1); - if (*budget < 0) return; - } - } - ftab[sb] |= SETMASK; - } - } - - AssertH ( !bigDone[ss], 1006 ); - - /*-- - Step 2: - Now scan this big bucket [ss] so as to synthesise the - sorted order for small buckets [t, ss] for all t, - including, magically, the bucket [ss,ss] too. - This will avoid doing Real Work in subsequent Step 1's. - --*/ - { - for (j = 0; j <= 255; j++) { - copyStart[j] = ftab[(j << 8) + ss] & CLEARMASK; - copyEnd [j] = (ftab[(j << 8) + ss + 1] & CLEARMASK) - 1; - } - for (j = ftab[ss << 8] & CLEARMASK; j < copyStart[ss]; j++) { - k = ptr[j]-1; if (k < 0) k += nblock; - c1 = block[k]; - if (!bigDone[c1]) - ptr[ copyStart[c1]++ ] = k; - } - for (j = (ftab[(ss+1) << 8] & CLEARMASK) - 1; j > copyEnd[ss]; j--) { - k = ptr[j]-1; if (k < 0) k += nblock; - c1 = block[k]; - if (!bigDone[c1]) - ptr[ copyEnd[c1]-- ] = k; - } - } - - AssertH ( (copyStart[ss]-1 == copyEnd[ss]) - || - /* Extremely rare case missing in bzip2-1.0.0 and 1.0.1. - Necessity for this case is demonstrated by compressing - a sequence of approximately 48.5 million of character - 251; 1.0.0/1.0.1 will then die here. */ - (copyStart[ss] == 0 && copyEnd[ss] == nblock-1), - 1007 ) - - for (j = 0; j <= 255; j++) ftab[(j << 8) + ss] |= SETMASK; - - /*-- - Step 3: - The [ss] big bucket is now done. Record this fact, - and update the quadrant descriptors. Remember to - update quadrants in the overshoot area too, if - necessary. The "if (i < 255)" test merely skips - this updating for the last bucket processed, since - updating for the last bucket is pointless. - - The quadrant array provides a way to incrementally - cache sort orderings, as they appear, so as to - make subsequent comparisons in fullGtU() complete - faster. For repetitive blocks this makes a big - difference (but not big enough to be able to avoid - the fallback sorting mechanism, exponential radix sort). - - The precise meaning is: at all times: - - for 0 <= i < nblock and 0 <= j <= nblock - - if block[i] != block[j], - - then the relative values of quadrant[i] and - quadrant[j] are meaningless. - - else { - if quadrant[i] < quadrant[j] - then the string starting at i lexicographically - precedes the string starting at j - - else if quadrant[i] > quadrant[j] - then the string starting at j lexicographically - precedes the string starting at i - - else - the relative ordering of the strings starting - at i and j has not yet been determined. - } - --*/ - bigDone[ss] = True; - - if (i < 255) { - Int32 bbStart = ftab[ss << 8] & CLEARMASK; - Int32 bbSize = (ftab[(ss+1) << 8] & CLEARMASK) - bbStart; - Int32 shifts = 0; - - while ((bbSize >> shifts) > 65534) shifts++; - - for (j = bbSize-1; j >= 0; j--) { - Int32 a2update = ptr[bbStart + j]; - UInt16 qVal = (UInt16)(j >> shifts); - quadrant[a2update] = qVal; - if (a2update < BZ_N_OVERSHOOT) - quadrant[a2update + nblock] = qVal; - } - AssertH ( ((bbSize-1) >> shifts) <= 65535, 1002 ); - } - - } - - if (verb >= 4) - VPrintf3 ( " %d pointers, %d sorted, %d scanned\n", - nblock, numQSorted, nblock - numQSorted ); -} - -#undef BIGFREQ -#undef SETMASK -#undef CLEARMASK - - -/*---------------------------------------------*/ -/* Pre: - nblock > 0 - arr2 exists for [0 .. nblock-1 +N_OVERSHOOT] - ((UChar*)arr2) [0 .. nblock-1] holds block - arr1 exists for [0 .. nblock-1] - - Post: - ((UChar*)arr2) [0 .. nblock-1] holds block - All other areas of block destroyed - ftab [ 0 .. 65536 ] destroyed - arr1 [0 .. nblock-1] holds sorted order -*/ -void BZ2_blockSort ( EState* s ) -{ - UInt32* ptr = s->ptr; - UChar* block = s->block; - UInt32* ftab = s->ftab; - Int32 nblock = s->nblock; - Int32 verb = s->verbosity; - Int32 wfact = s->workFactor; - UInt16* quadrant; - Int32 budget; - Int32 budgetInit; - Int32 i; - - if (nblock < 10000) { - fallbackSort ( s->arr1, s->arr2, ftab, nblock, verb ); - } else { - /* Calculate the location for quadrant, remembering to get - the alignment right. Assumes that &(block[0]) is at least - 2-byte aligned -- this should be ok since block is really - the first section of arr2. - */ - i = nblock+BZ_N_OVERSHOOT; - if (i & 1) i++; - quadrant = (UInt16*)(&(block[i])); - - /* (wfact-1) / 3 puts the default-factor-30 - transition point at very roughly the same place as - with v0.1 and v0.9.0. - Not that it particularly matters any more, since the - resulting compressed stream is now the same regardless - of whether or not we use the main sort or fallback sort. - */ - if (wfact < 1 ) wfact = 1; - if (wfact > 100) wfact = 100; - budgetInit = nblock * ((wfact-1) / 3); - budget = budgetInit; - - mainSort ( ptr, block, quadrant, ftab, nblock, verb, &budget ); - if (verb >= 3) - VPrintf3 ( " %d work, %d block, ratio %5.2f\n", - budgetInit - budget, - nblock, - (float)(budgetInit - budget) / - (float)(nblock==0 ? 1 : nblock) ); - if (budget < 0) { - if (verb >= 2) - VPrintf0 ( " too repetitive; using fallback" - " sorting algorithm\n" ); - fallbackSort ( s->arr1, s->arr2, ftab, nblock, verb ); - } - } - - s->origPtr = -1; - for (i = 0; i < s->nblock; i++) - if (ptr[i] == 0) - { s->origPtr = i; break; }; - - AssertH( s->origPtr != -1, 1003 ); -} - - -/*-------------------------------------------------------------*/ -/*--- end blocksort.c ---*/ -/*-------------------------------------------------------------*/ diff --git a/src/bzip2/bzlib.c b/src/bzip2/bzlib.c deleted file mode 100644 index c23cabf..0000000 --- a/src/bzip2/bzlib.c +++ /dev/null @@ -1,1593 +0,0 @@ - -/*-------------------------------------------------------------*/ -/*--- Library top-level functions. ---*/ -/*--- bzlib.c ---*/ -/*-------------------------------------------------------------*/ - -/*-- - This file is a part of bzip2 and/or libbzip2, a program and - library for lossless, block-sorting data compression. - - Copyright (C) 1996-2002 Julian R Seward. All rights reserved. - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions - are met: - - 1. Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - - 2. The origin of this software must not be misrepresented; you must - not claim that you wrote the original software. If you use this - software in a product, an acknowledgment in the product - documentation would be appreciated but is not required. - - 3. Altered source versions must be plainly marked as such, and must - not be misrepresented as being the original software. - - 4. The name of the author may not be used to endorse or promote - products derived from this software without specific prior written - permission. - - THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS - OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY - DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE - GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS - INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, - WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - - Julian Seward, Cambridge, UK. - jseward@acm.org - bzip2/libbzip2 version 1.0 of 21 March 2000 - - This program is based on (at least) the work of: - Mike Burrows - David Wheeler - Peter Fenwick - Alistair Moffat - Radford Neal - Ian H. Witten - Robert Sedgewick - Jon L. Bentley - - For more information on these sources, see the manual. ---*/ - -/*-- - CHANGES - ~~~~~~~ - 0.9.0 -- original version. - - 0.9.0a/b -- no changes in this file. - - 0.9.0c - * made zero-length BZ_FLUSH work correctly in bzCompress(). - * fixed bzWrite/bzRead to ignore zero-length requests. - * fixed bzread to correctly handle read requests after EOF. - * wrong parameter order in call to bzDecompressInit in - bzBuffToBuffDecompress. Fixed. ---*/ - -#include "bzlib_private.h" - - -/*---------------------------------------------------*/ -/*--- Compression stuff ---*/ -/*---------------------------------------------------*/ - - -/*---------------------------------------------------*/ -#ifndef BZ_NO_STDIO -void BZ2_bz__AssertH__fail ( int errcode ) -{ - fprintf(stderr, - "\n\nbzip2/libbzip2: internal error number %d.\n" - "This is a bug in bzip2/libbzip2, %s.\n" - "Please report it to me at: jseward@acm.org. If this happened\n" - "when you were using some program which uses libbzip2 as a\n" - "component, you should also report this bug to the author(s)\n" - "of that program. Please make an effort to report this bug;\n" - "timely and accurate bug reports eventually lead to higher\n" - "quality software. Thanks. Julian Seward, 30 December 2001.\n\n", - errcode, - BZ2_bzlibVersion() - ); - - if (errcode == 1007) { - fprintf(stderr, - "\n*** A special note about internal error number 1007 ***\n" - "\n" - "Experience suggests that a common cause of i.e. 1007\n" - "is unreliable memory or other hardware. The 1007 assertion\n" - "just happens to cross-check the results of huge numbers of\n" - "memory reads/writes, and so acts (unintendedly) as a stress\n" - "test of your memory system.\n" - "\n" - "I suggest the following: try compressing the file again,\n" - "possibly monitoring progress in detail with the -vv flag.\n" - "\n" - "* If the error cannot be reproduced, and/or happens at different\n" - " points in compression, you may have a flaky memory system.\n" - " Try a memory-test program. I have used Memtest86\n" - " (www.memtest86.com). At the time of writing it is free (GPLd).\n" - " Memtest86 tests memory much more thorougly than your BIOSs\n" - " power-on test, and may find failures that the BIOS doesn't.\n" - "\n" - "* If the error can be repeatably reproduced, this is a bug in\n" - " bzip2, and I would very much like to hear about it. Please\n" - " let me know, and, ideally, save a copy of the file causing the\n" - " problem -- without which I will be unable to investigate it.\n" - "\n" - ); - } - - exit(3); -} -#endif - - -/*---------------------------------------------------*/ -static -int bz_config_ok ( void ) -{ - if (sizeof(int) != 4) return 0; - if (sizeof(short) != 2) return 0; - if (sizeof(char) != 1) return 0; - return 1; -} - - -/*---------------------------------------------------*/ -static -void* default_bzalloc ( void* opaque, Int32 items, Int32 size ) -{ - void* v = malloc ( items * size ); - return v; -} - -static -void default_bzfree ( void* opaque, void* addr ) -{ - if (addr != NULL) free ( addr ); -} - - -/*---------------------------------------------------*/ -static -void prepare_new_block ( EState* s ) -{ - Int32 i; - s->nblock = 0; - s->numZ = 0; - s->state_out_pos = 0; - BZ_INITIALISE_CRC ( s->blockCRC ); - for (i = 0; i < 256; i++) s->inUse[i] = False; - s->blockNo++; -} - - -/*---------------------------------------------------*/ -static -void init_RL ( EState* s ) -{ - s->state_in_ch = 256; - s->state_in_len = 0; -} - - -static -Bool isempty_RL ( EState* s ) -{ - if (s->state_in_ch < 256 && s->state_in_len > 0) - return False; else - return True; -} - - -/*---------------------------------------------------*/ -int BZ_API(BZ2_bzCompressInit) - ( bz_stream* strm, - int blockSize100k, - int verbosity, - int workFactor ) -{ - Int32 n; - EState* s; - - if (!bz_config_ok()) return BZ_CONFIG_ERROR; - - if (strm == NULL || - blockSize100k < 1 || blockSize100k > 9 || - workFactor < 0 || workFactor > 250) - return BZ_PARAM_ERROR; - - if (workFactor == 0) workFactor = 30; - if (strm->bzalloc == NULL) strm->bzalloc = default_bzalloc; - if (strm->bzfree == NULL) strm->bzfree = default_bzfree; - - s = (EState *)BZALLOC( sizeof(EState) ); - if (s == NULL) return BZ_MEM_ERROR; - s->strm = strm; - - s->arr1 = NULL; - s->arr2 = NULL; - s->ftab = NULL; - - n = 100000 * blockSize100k; - s->arr1 = (UInt32 *)BZALLOC( n * sizeof(UInt32) ); - s->arr2 = (UInt32 *)BZALLOC( (n+BZ_N_OVERSHOOT) * sizeof(UInt32) ); - s->ftab = (UInt32 *)BZALLOC( 65537 * sizeof(UInt32) ); - - if (s->arr1 == NULL || s->arr2 == NULL || s->ftab == NULL) { - if (s->arr1 != NULL) BZFREE(s->arr1); - if (s->arr2 != NULL) BZFREE(s->arr2); - if (s->ftab != NULL) BZFREE(s->ftab); - if (s != NULL) BZFREE(s); - return BZ_MEM_ERROR; - } - - s->blockNo = 0; - s->state = BZ_S_INPUT; - s->mode = BZ_M_RUNNING; - s->combinedCRC = 0; - s->blockSize100k = blockSize100k; - s->nblockMAX = 100000 * blockSize100k - 19; - s->verbosity = verbosity; - s->workFactor = workFactor; - - s->block = (UChar*)s->arr2; - s->mtfv = (UInt16*)s->arr1; - s->zbits = NULL; - s->ptr = (UInt32*)s->arr1; - - strm->state = s; - strm->total_in_lo32 = 0; - strm->total_in_hi32 = 0; - strm->total_out_lo32 = 0; - strm->total_out_hi32 = 0; - init_RL ( s ); - prepare_new_block ( s ); - return BZ_OK; -} - - -/*---------------------------------------------------*/ -static -void add_pair_to_block ( EState* s ) -{ - Int32 i; - UChar ch = (UChar)(s->state_in_ch); - for (i = 0; i < s->state_in_len; i++) { - BZ_UPDATE_CRC( s->blockCRC, ch ); - } - s->inUse[s->state_in_ch] = True; - switch (s->state_in_len) { - case 1: - s->block[s->nblock] = (UChar)ch; s->nblock++; - break; - case 2: - s->block[s->nblock] = (UChar)ch; s->nblock++; - s->block[s->nblock] = (UChar)ch; s->nblock++; - break; - case 3: - s->block[s->nblock] = (UChar)ch; s->nblock++; - s->block[s->nblock] = (UChar)ch; s->nblock++; - s->block[s->nblock] = (UChar)ch; s->nblock++; - break; - default: - s->inUse[s->state_in_len-4] = True; - s->block[s->nblock] = (UChar)ch; s->nblock++; - s->block[s->nblock] = (UChar)ch; s->nblock++; - s->block[s->nblock] = (UChar)ch; s->nblock++; - s->block[s->nblock] = (UChar)ch; s->nblock++; - s->block[s->nblock] = ((UChar)(s->state_in_len-4)); - s->nblock++; - break; - } -} - - -/*---------------------------------------------------*/ -static -void flush_RL ( EState* s ) -{ - if (s->state_in_ch < 256) add_pair_to_block ( s ); - init_RL ( s ); -} - - -/*---------------------------------------------------*/ -#define ADD_CHAR_TO_BLOCK(zs,zchh0) \ -{ \ - UInt32 zchh = (UInt32)(zchh0); \ - /*-- fast track the common case --*/ \ - if (zchh != zs->state_in_ch && \ - zs->state_in_len == 1) { \ - UChar ch = (UChar)(zs->state_in_ch); \ - BZ_UPDATE_CRC( zs->blockCRC, ch ); \ - zs->inUse[zs->state_in_ch] = True; \ - zs->block[zs->nblock] = (UChar)ch; \ - zs->nblock++; \ - zs->state_in_ch = zchh; \ - } \ - else \ - /*-- general, uncommon cases --*/ \ - if (zchh != zs->state_in_ch || \ - zs->state_in_len == 255) { \ - if (zs->state_in_ch < 256) \ - add_pair_to_block ( zs ); \ - zs->state_in_ch = zchh; \ - zs->state_in_len = 1; \ - } else { \ - zs->state_in_len++; \ - } \ -} - - -/*---------------------------------------------------*/ -static -Bool copy_input_until_stop ( EState* s ) -{ - Bool progress_in = False; - - if (s->mode == BZ_M_RUNNING) { - - /*-- fast track the common case --*/ - while (True) { - /*-- block full? --*/ - if (s->nblock >= s->nblockMAX) break; - /*-- no input? --*/ - if (s->strm->avail_in == 0) break; - progress_in = True; - ADD_CHAR_TO_BLOCK ( s, (UInt32)(*((UChar*)(s->strm->next_in))) ); - s->strm->next_in++; - s->strm->avail_in--; - s->strm->total_in_lo32++; - if (s->strm->total_in_lo32 == 0) s->strm->total_in_hi32++; - } - - } else { - - /*-- general, uncommon case --*/ - while (True) { - /*-- block full? --*/ - if (s->nblock >= s->nblockMAX) break; - /*-- no input? --*/ - if (s->strm->avail_in == 0) break; - /*-- flush/finish end? --*/ - if (s->avail_in_expect == 0) break; - progress_in = True; - ADD_CHAR_TO_BLOCK ( s, (UInt32)(*((UChar*)(s->strm->next_in))) ); - s->strm->next_in++; - s->strm->avail_in--; - s->strm->total_in_lo32++; - if (s->strm->total_in_lo32 == 0) s->strm->total_in_hi32++; - s->avail_in_expect--; - } - } - return progress_in; -} - - -/*---------------------------------------------------*/ -static -Bool copy_output_until_stop ( EState* s ) -{ - Bool progress_out = False; - - while (True) { - - /*-- no output space? --*/ - if (s->strm->avail_out == 0) break; - - /*-- block done? --*/ - if (s->state_out_pos >= s->numZ) break; - - progress_out = True; - *(s->strm->next_out) = s->zbits[s->state_out_pos]; - s->state_out_pos++; - s->strm->avail_out--; - s->strm->next_out++; - s->strm->total_out_lo32++; - if (s->strm->total_out_lo32 == 0) s->strm->total_out_hi32++; - } - - return progress_out; -} - - -/*---------------------------------------------------*/ -static -Bool handle_compress ( bz_stream* strm ) -{ - Bool progress_in = False; - Bool progress_out = False; - EState* s = (EState *)strm->state; - - while (True) { - - if (s->state == BZ_S_OUTPUT) { - progress_out |= copy_output_until_stop ( s ); - if (s->state_out_pos < s->numZ) break; - if (s->mode == BZ_M_FINISHING && - s->avail_in_expect == 0 && - isempty_RL(s)) break; - prepare_new_block ( s ); - s->state = BZ_S_INPUT; - if (s->mode == BZ_M_FLUSHING && - s->avail_in_expect == 0 && - isempty_RL(s)) break; - } - - if (s->state == BZ_S_INPUT) { - progress_in |= copy_input_until_stop ( s ); - if (s->mode != BZ_M_RUNNING && s->avail_in_expect == 0) { - flush_RL ( s ); - BZ2_compressBlock ( s, (Bool)(s->mode == BZ_M_FINISHING) ); - s->state = BZ_S_OUTPUT; - } - else - if (s->nblock >= s->nblockMAX) { - BZ2_compressBlock ( s, False ); - s->state = BZ_S_OUTPUT; - } - else - if (s->strm->avail_in == 0) { - break; - } - } - - } - - return progress_in || progress_out; -} - - -/*---------------------------------------------------*/ -int BZ_API(BZ2_bzCompress) ( bz_stream *strm, int action ) -{ - Bool progress; - EState* s; - if (strm == NULL) return BZ_PARAM_ERROR; - s = (EState *)strm->state; - if (s == NULL) return BZ_PARAM_ERROR; - if (s->strm != strm) return BZ_PARAM_ERROR; - - preswitch: - switch (s->mode) { - - case BZ_M_IDLE: - return BZ_SEQUENCE_ERROR; - - case BZ_M_RUNNING: - if (action == BZ_RUN) { - progress = handle_compress ( strm ); - return progress ? BZ_RUN_OK : BZ_PARAM_ERROR; - } - else - if (action == BZ_FLUSH) { - s->avail_in_expect = strm->avail_in; - s->mode = BZ_M_FLUSHING; - goto preswitch; - } - else - if (action == BZ_FINISH) { - s->avail_in_expect = strm->avail_in; - s->mode = BZ_M_FINISHING; - goto preswitch; - } - else - return BZ_PARAM_ERROR; - - case BZ_M_FLUSHING: - if (action != BZ_FLUSH) return BZ_SEQUENCE_ERROR; - if (s->avail_in_expect != s->strm->avail_in) - return BZ_SEQUENCE_ERROR; - progress = handle_compress ( strm ); - if (s->avail_in_expect > 0 || !isempty_RL(s) || - s->state_out_pos < s->numZ) return BZ_FLUSH_OK; - s->mode = BZ_M_RUNNING; - return BZ_RUN_OK; - - case BZ_M_FINISHING: - if (action != BZ_FINISH) return BZ_SEQUENCE_ERROR; - if (s->avail_in_expect != s->strm->avail_in) - return BZ_SEQUENCE_ERROR; - progress = handle_compress ( strm ); - if (!progress) return BZ_SEQUENCE_ERROR; - if (s->avail_in_expect > 0 || !isempty_RL(s) || - s->state_out_pos < s->numZ) return BZ_FINISH_OK; - s->mode = BZ_M_IDLE; - return BZ_STREAM_END; - } - return BZ_OK; /*--not reached--*/ -} - - -/*---------------------------------------------------*/ -int BZ_API(BZ2_bzCompressEnd) ( bz_stream *strm ) -{ - EState* s; - if (strm == NULL) return BZ_PARAM_ERROR; - s = (EState *)strm->state; - if (s == NULL) return BZ_PARAM_ERROR; - if (s->strm != strm) return BZ_PARAM_ERROR; - - if (s->arr1 != NULL) BZFREE(s->arr1); - if (s->arr2 != NULL) BZFREE(s->arr2); - if (s->ftab != NULL) BZFREE(s->ftab); - BZFREE(strm->state); - - strm->state = NULL; - - return BZ_OK; -} - - -/*---------------------------------------------------*/ -/*--- Decompression stuff ---*/ -/*---------------------------------------------------*/ - -/*---------------------------------------------------*/ -int BZ_API(BZ2_bzDecompressInit) - ( bz_stream* strm, - int verbosity, - int small ) -{ - DState* s; - - if (!bz_config_ok()) return BZ_CONFIG_ERROR; - - if (strm == NULL) return BZ_PARAM_ERROR; - if (small != 0 && small != 1) return BZ_PARAM_ERROR; - if (verbosity < 0 || verbosity > 4) return BZ_PARAM_ERROR; - - if (strm->bzalloc == NULL) strm->bzalloc = default_bzalloc; - if (strm->bzfree == NULL) strm->bzfree = default_bzfree; - - s = (DState *)BZALLOC( sizeof(DState) ); - if (s == NULL) return BZ_MEM_ERROR; - s->strm = strm; - strm->state = s; - s->state = BZ_X_MAGIC_1; - s->bsLive = 0; - s->bsBuff = 0; - s->calculatedCombinedCRC = 0; - strm->total_in_lo32 = 0; - strm->total_in_hi32 = 0; - strm->total_out_lo32 = 0; - strm->total_out_hi32 = 0; - s->smallDecompress = (Bool)small; - s->ll4 = NULL; - s->ll16 = NULL; - s->tt = NULL; - s->currBlockNo = 0; - s->verbosity = verbosity; - - return BZ_OK; -} - - -/*---------------------------------------------------*/ -static -void unRLE_obuf_to_output_FAST ( DState* s ) -{ - UChar k1; - - if (s->blockRandomised) { - - while (True) { - /* try to finish existing run */ - while (True) { - if (s->strm->avail_out == 0) return; - if (s->state_out_len == 0) break; - *( (UChar*)(s->strm->next_out) ) = s->state_out_ch; - BZ_UPDATE_CRC ( s->calculatedBlockCRC, s->state_out_ch ); - s->state_out_len--; - s->strm->next_out++; - s->strm->avail_out--; - s->strm->total_out_lo32++; - if (s->strm->total_out_lo32 == 0) s->strm->total_out_hi32++; - } - - /* can a new run be started? */ - if (s->nblock_used == s->save_nblock+1) return; - - - s->state_out_len = 1; - s->state_out_ch = s->k0; - BZ_GET_FAST(k1); BZ_RAND_UPD_MASK; - k1 ^= BZ_RAND_MASK; s->nblock_used++; - if (s->nblock_used == s->save_nblock+1) continue; - if (k1 != s->k0) { s->k0 = k1; continue; }; - - s->state_out_len = 2; - BZ_GET_FAST(k1); BZ_RAND_UPD_MASK; - k1 ^= BZ_RAND_MASK; s->nblock_used++; - if (s->nblock_used == s->save_nblock+1) continue; - if (k1 != s->k0) { s->k0 = k1; continue; }; - - s->state_out_len = 3; - BZ_GET_FAST(k1); BZ_RAND_UPD_MASK; - k1 ^= BZ_RAND_MASK; s->nblock_used++; - if (s->nblock_used == s->save_nblock+1) continue; - if (k1 != s->k0) { s->k0 = k1; continue; }; - - BZ_GET_FAST(k1); BZ_RAND_UPD_MASK; - k1 ^= BZ_RAND_MASK; s->nblock_used++; - s->state_out_len = ((Int32)k1) + 4; - BZ_GET_FAST(s->k0); BZ_RAND_UPD_MASK; - s->k0 ^= BZ_RAND_MASK; s->nblock_used++; - } - - } else { - - /* restore */ - UInt32 c_calculatedBlockCRC = s->calculatedBlockCRC; - UChar c_state_out_ch = s->state_out_ch; - Int32 c_state_out_len = s->state_out_len; - Int32 c_nblock_used = s->nblock_used; - Int32 c_k0 = s->k0; - UInt32* c_tt = s->tt; - UInt32 c_tPos = s->tPos; - char* cs_next_out = s->strm->next_out; - unsigned int cs_avail_out = s->strm->avail_out; - /* end restore */ - - UInt32 avail_out_INIT = cs_avail_out; - Int32 s_save_nblockPP = s->save_nblock+1; - unsigned int total_out_lo32_old; - - while (True) { - - /* try to finish existing run */ - if (c_state_out_len > 0) { - while (True) { - if (cs_avail_out == 0) goto return_notr; - if (c_state_out_len == 1) break; - *( (UChar*)(cs_next_out) ) = c_state_out_ch; - BZ_UPDATE_CRC ( c_calculatedBlockCRC, c_state_out_ch ); - c_state_out_len--; - cs_next_out++; - cs_avail_out--; - } - s_state_out_len_eq_one: - { - if (cs_avail_out == 0) { - c_state_out_len = 1; goto return_notr; - }; - *( (UChar*)(cs_next_out) ) = c_state_out_ch; - BZ_UPDATE_CRC ( c_calculatedBlockCRC, c_state_out_ch ); - cs_next_out++; - cs_avail_out--; - } - } - /* can a new run be started? */ - if (c_nblock_used == s_save_nblockPP) { - c_state_out_len = 0; goto return_notr; - }; - c_state_out_ch = c_k0; - BZ_GET_FAST_C(k1); c_nblock_used++; - if (k1 != c_k0) { - c_k0 = k1; goto s_state_out_len_eq_one; - }; - if (c_nblock_used == s_save_nblockPP) - goto s_state_out_len_eq_one; - - c_state_out_len = 2; - BZ_GET_FAST_C(k1); c_nblock_used++; - if (c_nblock_used == s_save_nblockPP) continue; - if (k1 != c_k0) { c_k0 = k1; continue; }; - - c_state_out_len = 3; - BZ_GET_FAST_C(k1); c_nblock_used++; - if (c_nblock_used == s_save_nblockPP) continue; - if (k1 != c_k0) { c_k0 = k1; continue; }; - - BZ_GET_FAST_C(k1); c_nblock_used++; - c_state_out_len = ((Int32)k1) + 4; - BZ_GET_FAST_C(c_k0); c_nblock_used++; - } - - return_notr: - total_out_lo32_old = s->strm->total_out_lo32; - s->strm->total_out_lo32 += (avail_out_INIT - cs_avail_out); - if (s->strm->total_out_lo32 < total_out_lo32_old) - s->strm->total_out_hi32++; - - /* save */ - s->calculatedBlockCRC = c_calculatedBlockCRC; - s->state_out_ch = c_state_out_ch; - s->state_out_len = c_state_out_len; - s->nblock_used = c_nblock_used; - s->k0 = c_k0; - s->tt = c_tt; - s->tPos = c_tPos; - s->strm->next_out = cs_next_out; - s->strm->avail_out = cs_avail_out; - /* end save */ - } -} - - - -/*---------------------------------------------------*/ -__inline__ Int32 BZ2_indexIntoF ( Int32 indx, Int32 *cftab ) -{ - Int32 nb, na, mid; - nb = 0; - na = 256; - do { - mid = (nb + na) >> 1; - if (indx >= cftab[mid]) nb = mid; else na = mid; - } - while (na - nb != 1); - return nb; -} - - -/*---------------------------------------------------*/ -static -void unRLE_obuf_to_output_SMALL ( DState* s ) -{ - UChar k1; - - if (s->blockRandomised) { - - while (True) { - /* try to finish existing run */ - while (True) { - if (s->strm->avail_out == 0) return; - if (s->state_out_len == 0) break; - *( (UChar*)(s->strm->next_out) ) = s->state_out_ch; - BZ_UPDATE_CRC ( s->calculatedBlockCRC, s->state_out_ch ); - s->state_out_len--; - s->strm->next_out++; - s->strm->avail_out--; - s->strm->total_out_lo32++; - if (s->strm->total_out_lo32 == 0) s->strm->total_out_hi32++; - } - - /* can a new run be started? */ - if (s->nblock_used == s->save_nblock+1) return; - - - s->state_out_len = 1; - s->state_out_ch = s->k0; - BZ_GET_SMALL(k1); BZ_RAND_UPD_MASK; - k1 ^= BZ_RAND_MASK; s->nblock_used++; - if (s->nblock_used == s->save_nblock+1) continue; - if (k1 != s->k0) { s->k0 = k1; continue; }; - - s->state_out_len = 2; - BZ_GET_SMALL(k1); BZ_RAND_UPD_MASK; - k1 ^= BZ_RAND_MASK; s->nblock_used++; - if (s->nblock_used == s->save_nblock+1) continue; - if (k1 != s->k0) { s->k0 = k1; continue; }; - - s->state_out_len = 3; - BZ_GET_SMALL(k1); BZ_RAND_UPD_MASK; - k1 ^= BZ_RAND_MASK; s->nblock_used++; - if (s->nblock_used == s->save_nblock+1) continue; - if (k1 != s->k0) { s->k0 = k1; continue; }; - - BZ_GET_SMALL(k1); BZ_RAND_UPD_MASK; - k1 ^= BZ_RAND_MASK; s->nblock_used++; - s->state_out_len = ((Int32)k1) + 4; - BZ_GET_SMALL(s->k0); BZ_RAND_UPD_MASK; - s->k0 ^= BZ_RAND_MASK; s->nblock_used++; - } - - } else { - - while (True) { - /* try to finish existing run */ - while (True) { - if (s->strm->avail_out == 0) return; - if (s->state_out_len == 0) break; - *( (UChar*)(s->strm->next_out) ) = s->state_out_ch; - BZ_UPDATE_CRC ( s->calculatedBlockCRC, s->state_out_ch ); - s->state_out_len--; - s->strm->next_out++; - s->strm->avail_out--; - s->strm->total_out_lo32++; - if (s->strm->total_out_lo32 == 0) s->strm->total_out_hi32++; - } - - /* can a new run be started? */ - if (s->nblock_used == s->save_nblock+1) return; - - s->state_out_len = 1; - s->state_out_ch = s->k0; - BZ_GET_SMALL(k1); s->nblock_used++; - if (s->nblock_used == s->save_nblock+1) continue; - if (k1 != s->k0) { s->k0 = k1; continue; }; - - s->state_out_len = 2; - BZ_GET_SMALL(k1); s->nblock_used++; - if (s->nblock_used == s->save_nblock+1) continue; - if (k1 != s->k0) { s->k0 = k1; continue; }; - - s->state_out_len = 3; - BZ_GET_SMALL(k1); s->nblock_used++; - if (s->nblock_used == s->save_nblock+1) continue; - if (k1 != s->k0) { s->k0 = k1; continue; }; - - BZ_GET_SMALL(k1); s->nblock_used++; - s->state_out_len = ((Int32)k1) + 4; - BZ_GET_SMALL(s->k0); s->nblock_used++; - } - - } -} - - -/*---------------------------------------------------*/ -int BZ_API(BZ2_bzDecompress) ( bz_stream *strm ) -{ - DState* s; - if (strm == NULL) return BZ_PARAM_ERROR; - s = (DState *)strm->state; - if (s == NULL) return BZ_PARAM_ERROR; - if (s->strm != strm) return BZ_PARAM_ERROR; - - while (True) { - if (s->state == BZ_X_IDLE) return BZ_SEQUENCE_ERROR; - if (s->state == BZ_X_OUTPUT) { - if (s->smallDecompress) - unRLE_obuf_to_output_SMALL ( s ); else - unRLE_obuf_to_output_FAST ( s ); - if (s->nblock_used == s->save_nblock+1 && s->state_out_len == 0) { - BZ_FINALISE_CRC ( s->calculatedBlockCRC ); - if (s->verbosity >= 3) - VPrintf2 ( " {0x%x, 0x%x}", s->storedBlockCRC, - s->calculatedBlockCRC ); - if (s->verbosity >= 2) VPrintf0 ( "]" ); - if (s->calculatedBlockCRC != s->storedBlockCRC) - return BZ_DATA_ERROR; - s->calculatedCombinedCRC - = (s->calculatedCombinedCRC << 1) | - (s->calculatedCombinedCRC >> 31); - s->calculatedCombinedCRC ^= s->calculatedBlockCRC; - s->state = BZ_X_BLKHDR_1; - } else { - return BZ_OK; - } - } - if (s->state >= BZ_X_MAGIC_1) { - Int32 r = BZ2_decompress ( s ); - if (r == BZ_STREAM_END) { - if (s->verbosity >= 3) - VPrintf2 ( "\n combined CRCs: stored = 0x%x, computed = 0x%x", - s->storedCombinedCRC, s->calculatedCombinedCRC ); - if (s->calculatedCombinedCRC != s->storedCombinedCRC) - return BZ_DATA_ERROR; - return r; - } - if (s->state != BZ_X_OUTPUT) return r; - } - } - - AssertH ( 0, 6001 ); - - return 0; /*NOTREACHED*/ -} - - -/*---------------------------------------------------*/ -int BZ_API(BZ2_bzDecompressEnd) ( bz_stream *strm ) -{ - DState* s; - if (strm == NULL) return BZ_PARAM_ERROR; - s = (DState *)strm->state; - if (s == NULL) return BZ_PARAM_ERROR; - if (s->strm != strm) return BZ_PARAM_ERROR; - - if (s->tt != NULL) BZFREE(s->tt); - if (s->ll16 != NULL) BZFREE(s->ll16); - if (s->ll4 != NULL) BZFREE(s->ll4); - - BZFREE(strm->state); - strm->state = NULL; - - return BZ_OK; -} - - -#ifndef BZ_NO_STDIO -/*---------------------------------------------------*/ -/*--- File I/O stuff ---*/ -/*---------------------------------------------------*/ - -#define BZ_SETERR(eee) \ -{ \ - if (bzerror != NULL) *bzerror = eee; \ - if (bzf != NULL) bzf->lastErr = eee; \ -} - -typedef - struct { - FILE* handle; - Char buf[BZ_MAX_UNUSED]; - Int32 bufN; - Bool writing; - bz_stream strm; - Int32 lastErr; - Bool initialisedOk; - } - bzFile; - - -/*---------------------------------------------*/ -static Bool myfeof ( FILE* f ) -{ - Int32 c = fgetc ( f ); - if (c == EOF) return True; - ungetc ( c, f ); - return False; -} - - -/*---------------------------------------------------*/ -BZFILE* BZ_API(BZ2_bzWriteOpen) - ( int* bzerror, - FILE* f, - int blockSize100k, - int verbosity, - int workFactor ) -{ - Int32 ret; - bzFile* bzf = NULL; - - BZ_SETERR(BZ_OK); - - if (f == NULL || - (blockSize100k < 1 || blockSize100k > 9) || - (workFactor < 0 || workFactor > 250) || - (verbosity < 0 || verbosity > 4)) - { BZ_SETERR(BZ_PARAM_ERROR); return NULL; }; - - if (ferror(f)) - { BZ_SETERR(BZ_IO_ERROR); return NULL; }; - - bzf = (bzFile *)malloc ( sizeof(bzFile) ); - if (bzf == NULL) - { BZ_SETERR(BZ_MEM_ERROR); return NULL; }; - - BZ_SETERR(BZ_OK); - bzf->initialisedOk = False; - bzf->bufN = 0; - bzf->handle = f; - bzf->writing = True; - bzf->strm.bzalloc = NULL; - bzf->strm.bzfree = NULL; - bzf->strm.opaque = NULL; - - if (workFactor == 0) workFactor = 30; - ret = BZ2_bzCompressInit ( &(bzf->strm), blockSize100k, - verbosity, workFactor ); - if (ret != BZ_OK) - { BZ_SETERR(ret); free(bzf); return NULL; }; - - bzf->strm.avail_in = 0; - bzf->initialisedOk = True; - return bzf; -} - - - -/*---------------------------------------------------*/ -void BZ_API(BZ2_bzWrite) - ( int* bzerror, - BZFILE* b, - void* buf, - int len ) -{ - Int32 n, n2, ret; - bzFile* bzf = (bzFile*)b; - - BZ_SETERR(BZ_OK); - if (bzf == NULL || buf == NULL || len < 0) - { BZ_SETERR(BZ_PARAM_ERROR); return; }; - if (!(bzf->writing)) - { BZ_SETERR(BZ_SEQUENCE_ERROR); return; }; - if (ferror(bzf->handle)) - { BZ_SETERR(BZ_IO_ERROR); return; }; - - if (len == 0) - { BZ_SETERR(BZ_OK); return; }; - - bzf->strm.avail_in = len; - bzf->strm.next_in = (char *)buf; - - while (True) { - bzf->strm.avail_out = BZ_MAX_UNUSED; - bzf->strm.next_out = bzf->buf; - ret = BZ2_bzCompress ( &(bzf->strm), BZ_RUN ); - if (ret != BZ_RUN_OK) - { BZ_SETERR(ret); return; }; - - if (bzf->strm.avail_out < BZ_MAX_UNUSED) { - n = BZ_MAX_UNUSED - bzf->strm.avail_out; - n2 = fwrite ( (void*)(bzf->buf), sizeof(UChar), - n, bzf->handle ); - if (n != n2 || ferror(bzf->handle)) - { BZ_SETERR(BZ_IO_ERROR); return; }; - } - - if (bzf->strm.avail_in == 0) - { BZ_SETERR(BZ_OK); return; }; - } -} - - -/*---------------------------------------------------*/ -void BZ_API(BZ2_bzWriteClose) - ( int* bzerror, - BZFILE* b, - int abandon, - unsigned int* nbytes_in, - unsigned int* nbytes_out ) -{ - BZ2_bzWriteClose64 ( bzerror, b, abandon, - nbytes_in, NULL, nbytes_out, NULL ); -} - - -void BZ_API(BZ2_bzWriteClose64) - ( int* bzerror, - BZFILE* b, - int abandon, - unsigned int* nbytes_in_lo32, - unsigned int* nbytes_in_hi32, - unsigned int* nbytes_out_lo32, - unsigned int* nbytes_out_hi32 ) -{ - Int32 n, n2, ret; - bzFile* bzf = (bzFile*)b; - - if (bzf == NULL) - { BZ_SETERR(BZ_OK); return; }; - if (!(bzf->writing)) - { BZ_SETERR(BZ_SEQUENCE_ERROR); return; }; - if (ferror(bzf->handle)) - { BZ_SETERR(BZ_IO_ERROR); return; }; - - if (nbytes_in_lo32 != NULL) *nbytes_in_lo32 = 0; - if (nbytes_in_hi32 != NULL) *nbytes_in_hi32 = 0; - if (nbytes_out_lo32 != NULL) *nbytes_out_lo32 = 0; - if (nbytes_out_hi32 != NULL) *nbytes_out_hi32 = 0; - - if ((!abandon) && bzf->lastErr == BZ_OK) { - while (True) { - bzf->strm.avail_out = BZ_MAX_UNUSED; - bzf->strm.next_out = bzf->buf; - ret = BZ2_bzCompress ( &(bzf->strm), BZ_FINISH ); - if (ret != BZ_FINISH_OK && ret != BZ_STREAM_END) - { BZ_SETERR(ret); return; }; - - if (bzf->strm.avail_out < BZ_MAX_UNUSED) { - n = BZ_MAX_UNUSED - bzf->strm.avail_out; - n2 = fwrite ( (void*)(bzf->buf), sizeof(UChar), - n, bzf->handle ); - if (n != n2 || ferror(bzf->handle)) - { BZ_SETERR(BZ_IO_ERROR); return; }; - } - - if (ret == BZ_STREAM_END) break; - } - } - - if ( !abandon && !ferror ( bzf->handle ) ) { - fflush ( bzf->handle ); - if (ferror(bzf->handle)) - { BZ_SETERR(BZ_IO_ERROR); return; }; - } - - if (nbytes_in_lo32 != NULL) - *nbytes_in_lo32 = bzf->strm.total_in_lo32; - if (nbytes_in_hi32 != NULL) - *nbytes_in_hi32 = bzf->strm.total_in_hi32; - if (nbytes_out_lo32 != NULL) - *nbytes_out_lo32 = bzf->strm.total_out_lo32; - if (nbytes_out_hi32 != NULL) - *nbytes_out_hi32 = bzf->strm.total_out_hi32; - - BZ_SETERR(BZ_OK); - BZ2_bzCompressEnd ( &(bzf->strm) ); - free ( bzf ); -} - - -/*---------------------------------------------------*/ -BZFILE* BZ_API(BZ2_bzReadOpen) - ( int* bzerror, - FILE* f, - int verbosity, - int small, - void* unused, - int nUnused ) -{ - bzFile* bzf = NULL; - int ret; - - BZ_SETERR(BZ_OK); - - if (f == NULL || - (small != 0 && small != 1) || - (verbosity < 0 || verbosity > 4) || - (unused == NULL && nUnused != 0) || - (unused != NULL && (nUnused < 0 || nUnused > BZ_MAX_UNUSED))) - { BZ_SETERR(BZ_PARAM_ERROR); return NULL; }; - - if (ferror(f)) - { BZ_SETERR(BZ_IO_ERROR); return NULL; }; - - bzf = (bzFile *)malloc ( sizeof(bzFile) ); - if (bzf == NULL) - { BZ_SETERR(BZ_MEM_ERROR); return NULL; }; - - BZ_SETERR(BZ_OK); - - bzf->initialisedOk = False; - bzf->handle = f; - bzf->bufN = 0; - bzf->writing = False; - bzf->strm.bzalloc = NULL; - bzf->strm.bzfree = NULL; - bzf->strm.opaque = NULL; - - while (nUnused > 0) { - bzf->buf[bzf->bufN] = *((UChar*)(unused)); bzf->bufN++; - unused = ((void*)( 1 + ((UChar*)(unused)) )); - nUnused--; - } - - ret = BZ2_bzDecompressInit ( &(bzf->strm), verbosity, small ); - if (ret != BZ_OK) - { BZ_SETERR(ret); free(bzf); return NULL; }; - - bzf->strm.avail_in = bzf->bufN; - bzf->strm.next_in = bzf->buf; - - bzf->initialisedOk = True; - return bzf; -} - - -/*---------------------------------------------------*/ -void BZ_API(BZ2_bzReadClose) ( int *bzerror, BZFILE *b ) -{ - bzFile* bzf = (bzFile*)b; - - BZ_SETERR(BZ_OK); - if (bzf == NULL) - { BZ_SETERR(BZ_OK); return; }; - - if (bzf->writing) - { BZ_SETERR(BZ_SEQUENCE_ERROR); return; }; - - if (bzf->initialisedOk) - (void)BZ2_bzDecompressEnd ( &(bzf->strm) ); - free ( bzf ); -} - - -/*---------------------------------------------------*/ -int BZ_API(BZ2_bzRead) - ( int* bzerror, - BZFILE* b, - void* buf, - int len ) -{ - Int32 n, ret; - bzFile* bzf = (bzFile*)b; - - BZ_SETERR(BZ_OK); - - if (bzf == NULL || buf == NULL || len < 0) - { BZ_SETERR(BZ_PARAM_ERROR); return 0; }; - - if (bzf->writing) - { BZ_SETERR(BZ_SEQUENCE_ERROR); return 0; }; - - if (len == 0) - { BZ_SETERR(BZ_OK); return 0; }; - - bzf->strm.avail_out = len; - bzf->strm.next_out = (char *)buf; - - while (True) { - - if (ferror(bzf->handle)) - { BZ_SETERR(BZ_IO_ERROR); return 0; }; - - if (bzf->strm.avail_in == 0 && !myfeof(bzf->handle)) { - n = fread ( bzf->buf, sizeof(UChar), - BZ_MAX_UNUSED, bzf->handle ); - if (ferror(bzf->handle)) - { BZ_SETERR(BZ_IO_ERROR); return 0; }; - bzf->bufN = n; - bzf->strm.avail_in = bzf->bufN; - bzf->strm.next_in = bzf->buf; - } - - ret = BZ2_bzDecompress ( &(bzf->strm) ); - - if (ret != BZ_OK && ret != BZ_STREAM_END) - { BZ_SETERR(ret); return 0; }; - - if (ret == BZ_OK && myfeof(bzf->handle) && - bzf->strm.avail_in == 0 && bzf->strm.avail_out > 0) - { BZ_SETERR(BZ_UNEXPECTED_EOF); return 0; }; - - if (ret == BZ_STREAM_END) - { BZ_SETERR(BZ_STREAM_END); - return len - bzf->strm.avail_out; }; - if (bzf->strm.avail_out == 0) - { BZ_SETERR(BZ_OK); return len; }; - - } - - return 0; /*not reached*/ -} - - -/*---------------------------------------------------*/ -void BZ_API(BZ2_bzReadGetUnused) - ( int* bzerror, - BZFILE* b, - void** unused, - int* nUnused ) -{ - bzFile* bzf = (bzFile*)b; - if (bzf == NULL) - { BZ_SETERR(BZ_PARAM_ERROR); return; }; - if (bzf->lastErr != BZ_STREAM_END) - { BZ_SETERR(BZ_SEQUENCE_ERROR); return; }; - if (unused == NULL || nUnused == NULL) - { BZ_SETERR(BZ_PARAM_ERROR); return; }; - - BZ_SETERR(BZ_OK); - *nUnused = bzf->strm.avail_in; - *unused = bzf->strm.next_in; -} -#endif - - -/*---------------------------------------------------*/ -/*--- Misc convenience stuff ---*/ -/*---------------------------------------------------*/ - -/*---------------------------------------------------*/ -int BZ_API(BZ2_bzBuffToBuffCompress) - ( char* dest, - unsigned int* destLen, - char* source, - unsigned int sourceLen, - int blockSize100k, - int verbosity, - int workFactor ) -{ - bz_stream strm; - int ret; - - if (dest == NULL || destLen == NULL || - source == NULL || - blockSize100k < 1 || blockSize100k > 9 || - verbosity < 0 || verbosity > 4 || - workFactor < 0 || workFactor > 250) - return BZ_PARAM_ERROR; - - if (workFactor == 0) workFactor = 30; - strm.bzalloc = NULL; - strm.bzfree = NULL; - strm.opaque = NULL; - ret = BZ2_bzCompressInit ( &strm, blockSize100k, - verbosity, workFactor ); - if (ret != BZ_OK) return ret; - - strm.next_in = source; - strm.next_out = dest; - strm.avail_in = sourceLen; - strm.avail_out = *destLen; - - ret = BZ2_bzCompress ( &strm, BZ_FINISH ); - if (ret == BZ_FINISH_OK) goto output_overflow; - if (ret != BZ_STREAM_END) goto errhandler; - - /* normal termination */ - *destLen -= strm.avail_out; - BZ2_bzCompressEnd ( &strm ); - return BZ_OK; - - output_overflow: - BZ2_bzCompressEnd ( &strm ); - return BZ_OUTBUFF_FULL; - - errhandler: - BZ2_bzCompressEnd ( &strm ); - return ret; -} - - -/*---------------------------------------------------*/ -int BZ_API(BZ2_bzBuffToBuffDecompress) - ( char* dest, - unsigned int* destLen, - char* source, - unsigned int sourceLen, - int small, - int verbosity ) -{ - bz_stream strm; - int ret; - - if (dest == NULL || destLen == NULL || - source == NULL || - (small != 0 && small != 1) || - verbosity < 0 || verbosity > 4) - return BZ_PARAM_ERROR; - - strm.bzalloc = NULL; - strm.bzfree = NULL; - strm.opaque = NULL; - ret = BZ2_bzDecompressInit ( &strm, verbosity, small ); - if (ret != BZ_OK) return ret; - - strm.next_in = source; - strm.next_out = dest; - strm.avail_in = sourceLen; - strm.avail_out = *destLen; - - ret = BZ2_bzDecompress ( &strm ); - if (ret == BZ_OK) goto output_overflow_or_eof; - if (ret != BZ_STREAM_END) goto errhandler; - - /* normal termination */ - *destLen -= strm.avail_out; - BZ2_bzDecompressEnd ( &strm ); - return BZ_OK; - - output_overflow_or_eof: - if (strm.avail_out > 0) { - BZ2_bzDecompressEnd ( &strm ); - return BZ_UNEXPECTED_EOF; - } else { - BZ2_bzDecompressEnd ( &strm ); - return BZ_OUTBUFF_FULL; - }; - - errhandler: - BZ2_bzDecompressEnd ( &strm ); - return ret; -} - - -/*---------------------------------------------------*/ -/*-- - Code contributed by Yoshioka Tsuneo - (QWF00133@niftyserve.or.jp/tsuneo-y@is.aist-nara.ac.jp), - to support better zlib compatibility. - This code is not _officially_ part of libbzip2 (yet); - I haven't tested it, documented it, or considered the - threading-safeness of it. - If this code breaks, please contact both Yoshioka and me. ---*/ -/*---------------------------------------------------*/ - -/*---------------------------------------------------*/ -/*-- - return version like "0.9.0c". ---*/ -const char * BZ_API(BZ2_bzlibVersion)(void) -{ - return BZ_VERSION; -} - - -#ifndef BZ_NO_STDIO -/*---------------------------------------------------*/ - -#if defined(_WIN32) || defined(OS2) || defined(MSDOS) -# include -# include -# define SET_BINARY_MODE(file) setmode(fileno(file),O_BINARY) -#else -# define SET_BINARY_MODE(file) -#endif -static -BZFILE * bzopen_or_bzdopen - ( const char *path, /* no use when bzdopen */ - int fd, /* no use when bzdopen */ - const char *mode, - int open_mode) /* bzopen: 0, bzdopen:1 */ -{ - int bzerr; - char unused[BZ_MAX_UNUSED]; - int blockSize100k = 9; - int writing = 0; - char mode2[10] = ""; - FILE *fp = NULL; - BZFILE *bzfp = NULL; - int verbosity = 0; - int workFactor = 30; - int smallMode = 0; - int nUnused = 0; - - if (mode == NULL) return NULL; - while (*mode) { - switch (*mode) { - case 'r': - writing = 0; break; - case 'w': - writing = 1; break; - case 's': - smallMode = 1; break; - default: - if (isdigit((int)(*mode))) { - blockSize100k = *mode-BZ_HDR_0; - } - } - mode++; - } - strcat(mode2, writing ? "w" : "r" ); - strcat(mode2,"b"); /* binary mode */ - - if (open_mode==0) { - if (path==NULL || strcmp(path,"")==0) { - fp = (writing ? stdout : stdin); - SET_BINARY_MODE(fp); - } else { - fp = fopen(path,mode2); - } - } else { -#ifdef BZ_STRICT_ANSI - fp = NULL; -#else - fp = fdopen(fd,mode2); -#endif - } - if (fp == NULL) return NULL; - - if (writing) { - /* Guard against total chaos and anarchy -- JRS */ - if (blockSize100k < 1) blockSize100k = 1; - if (blockSize100k > 9) blockSize100k = 9; - bzfp = BZ2_bzWriteOpen(&bzerr,fp,blockSize100k, - verbosity,workFactor); - } else { - bzfp = BZ2_bzReadOpen(&bzerr,fp,verbosity,smallMode, - unused,nUnused); - } - if (bzfp == NULL) { - if (fp != stdin && fp != stdout) fclose(fp); - return NULL; - } - return bzfp; -} - - -/*---------------------------------------------------*/ -/*-- - open file for read or write. - ex) bzopen("file","w9") - case path="" or NULL => use stdin or stdout. ---*/ -BZFILE * BZ_API(BZ2_bzopen) - ( const char *path, - const char *mode ) -{ - return bzopen_or_bzdopen(path,-1,mode,/*bzopen*/0); -} - - -/*---------------------------------------------------*/ -BZFILE * BZ_API(BZ2_bzdopen) - ( int fd, - const char *mode ) -{ - return bzopen_or_bzdopen(NULL,fd,mode,/*bzdopen*/1); -} - - -/*---------------------------------------------------*/ -int BZ_API(BZ2_bzread) (BZFILE* b, void* buf, int len ) -{ - int bzerr, nread; - if (((bzFile*)b)->lastErr == BZ_STREAM_END) return 0; - nread = BZ2_bzRead(&bzerr,b,buf,len); - if (bzerr == BZ_OK || bzerr == BZ_STREAM_END) { - return nread; - } else { - return -1; - } -} - - -/*---------------------------------------------------*/ -int BZ_API(BZ2_bzwrite) (BZFILE* b, void* buf, int len ) -{ - int bzerr; - - BZ2_bzWrite(&bzerr,b,buf,len); - if(bzerr == BZ_OK){ - return len; - }else{ - return -1; - } -} - - -/*---------------------------------------------------*/ -int BZ_API(BZ2_bzflush) (BZFILE *b) -{ - /* do nothing now... */ - return 0; -} - - -/*---------------------------------------------------*/ -void BZ_API(BZ2_bzclose) (BZFILE* b) -{ - int bzerr; - FILE *fp = ((bzFile *)b)->handle; - - if (b==NULL) {return;} - if(((bzFile*)b)->writing){ - BZ2_bzWriteClose(&bzerr,b,0,NULL,NULL); - if(bzerr != BZ_OK){ - BZ2_bzWriteClose(NULL,b,1,NULL,NULL); - } - }else{ - BZ2_bzReadClose(&bzerr,b); - } - if(fp!=stdin && fp!=stdout){ - fclose(fp); - } -} - - -/*---------------------------------------------------*/ -/*-- - return last error code ---*/ -static char *bzerrorstrings[] = { - "OK" - ,"SEQUENCE_ERROR" - ,"PARAM_ERROR" - ,"MEM_ERROR" - ,"DATA_ERROR" - ,"DATA_ERROR_MAGIC" - ,"IO_ERROR" - ,"UNEXPECTED_EOF" - ,"OUTBUFF_FULL" - ,"CONFIG_ERROR" - ,"???" /* for future */ - ,"???" /* for future */ - ,"???" /* for future */ - ,"???" /* for future */ - ,"???" /* for future */ - ,"???" /* for future */ -}; - - -const char * BZ_API(BZ2_bzerror) (BZFILE *b, int *errnum) -{ - int err = ((bzFile *)b)->lastErr; - - if(err>0) err = 0; - *errnum = err; - return bzerrorstrings[err*-1]; -} -#endif - - -/*-------------------------------------------------------------*/ -/*--- end bzlib.c ---*/ -/*-------------------------------------------------------------*/ diff --git a/src/bzip2/bzlib.h b/src/bzip2/bzlib.h deleted file mode 100644 index 9ac43a1..0000000 --- a/src/bzip2/bzlib.h +++ /dev/null @@ -1,321 +0,0 @@ - -/*-------------------------------------------------------------*/ -/*--- Public header file for the library. ---*/ -/*--- bzlib.h ---*/ -/*-------------------------------------------------------------*/ - -/*-- - This file is a part of bzip2 and/or libbzip2, a program and - library for lossless, block-sorting data compression. - - Copyright (C) 1996-2002 Julian R Seward. All rights reserved. - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions - are met: - - 1. Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - - 2. The origin of this software must not be misrepresented; you must - not claim that you wrote the original software. If you use this - software in a product, an acknowledgment in the product - documentation would be appreciated but is not required. - - 3. Altered source versions must be plainly marked as such, and must - not be misrepresented as being the original software. - - 4. The name of the author may not be used to endorse or promote - products derived from this software without specific prior written - permission. - - THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS - OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY - DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE - GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS - INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, - WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - - Julian Seward, Cambridge, UK. - jseward@acm.org - bzip2/libbzip2 version 1.0 of 21 March 2000 - - This program is based on (at least) the work of: - Mike Burrows - David Wheeler - Peter Fenwick - Alistair Moffat - Radford Neal - Ian H. Witten - Robert Sedgewick - Jon L. Bentley - - For more information on these sources, see the manual. ---*/ - - -#ifndef _BZLIB_H -#define _BZLIB_H - -#ifdef __cplusplus -extern "C" { -#endif - -#define BZ_RUN 0 -#define BZ_FLUSH 1 -#define BZ_FINISH 2 - -#define BZ_OK 0 -#define BZ_RUN_OK 1 -#define BZ_FLUSH_OK 2 -#define BZ_FINISH_OK 3 -#define BZ_STREAM_END 4 -#define BZ_SEQUENCE_ERROR (-1) -#define BZ_PARAM_ERROR (-2) -#define BZ_MEM_ERROR (-3) -#define BZ_DATA_ERROR (-4) -#define BZ_DATA_ERROR_MAGIC (-5) -#define BZ_IO_ERROR (-6) -#define BZ_UNEXPECTED_EOF (-7) -#define BZ_OUTBUFF_FULL (-8) -#define BZ_CONFIG_ERROR (-9) - -typedef - struct { - char *next_in; - unsigned int avail_in; - unsigned int total_in_lo32; - unsigned int total_in_hi32; - - char *next_out; - unsigned int avail_out; - unsigned int total_out_lo32; - unsigned int total_out_hi32; - - void *state; - - void *(*bzalloc)(void *,int,int); - void (*bzfree)(void *,void *); - void *opaque; - } - bz_stream; - - -#ifndef BZ_IMPORT -#define BZ_EXPORT -#endif - -/* Need a definitition for FILE */ -#include - -#ifdef _WIN32 -# include -# ifdef small - /* windows.h define small to char */ -# undef small -# endif -# ifdef BZ_EXPORT -# define BZ_API(func) WINAPI func -# define BZ_EXTERN extern -# else - /* import windows dll dynamically */ -# define BZ_API(func) (WINAPI * func) -# define BZ_EXTERN -# endif -#else -# define BZ_API(func) func -# define BZ_EXTERN extern -#endif - - -/*-- Core (low-level) library functions --*/ - -BZ_EXTERN int BZ_API(BZ2_bzCompressInit) ( - bz_stream* strm, - int blockSize100k, - int verbosity, - int workFactor - ); - -BZ_EXTERN int BZ_API(BZ2_bzCompress) ( - bz_stream* strm, - int action - ); - -BZ_EXTERN int BZ_API(BZ2_bzCompressEnd) ( - bz_stream* strm - ); - -BZ_EXTERN int BZ_API(BZ2_bzDecompressInit) ( - bz_stream *strm, - int verbosity, - int small - ); - -BZ_EXTERN int BZ_API(BZ2_bzDecompress) ( - bz_stream* strm - ); - -BZ_EXTERN int BZ_API(BZ2_bzDecompressEnd) ( - bz_stream *strm - ); - - - -/*-- High(er) level library functions --*/ - -#ifndef BZ_NO_STDIO -#define BZ_MAX_UNUSED 5000 - -typedef void BZFILE; - -BZ_EXTERN BZFILE* BZ_API(BZ2_bzReadOpen) ( - int* bzerror, - FILE* f, - int verbosity, - int small, - void* unused, - int nUnused - ); - -BZ_EXTERN void BZ_API(BZ2_bzReadClose) ( - int* bzerror, - BZFILE* b - ); - -BZ_EXTERN void BZ_API(BZ2_bzReadGetUnused) ( - int* bzerror, - BZFILE* b, - void** unused, - int* nUnused - ); - -BZ_EXTERN int BZ_API(BZ2_bzRead) ( - int* bzerror, - BZFILE* b, - void* buf, - int len - ); - -BZ_EXTERN BZFILE* BZ_API(BZ2_bzWriteOpen) ( - int* bzerror, - FILE* f, - int blockSize100k, - int verbosity, - int workFactor - ); - -BZ_EXTERN void BZ_API(BZ2_bzWrite) ( - int* bzerror, - BZFILE* b, - void* buf, - int len - ); - -BZ_EXTERN void BZ_API(BZ2_bzWriteClose) ( - int* bzerror, - BZFILE* b, - int abandon, - unsigned int* nbytes_in, - unsigned int* nbytes_out - ); - -BZ_EXTERN void BZ_API(BZ2_bzWriteClose64) ( - int* bzerror, - BZFILE* b, - int abandon, - unsigned int* nbytes_in_lo32, - unsigned int* nbytes_in_hi32, - unsigned int* nbytes_out_lo32, - unsigned int* nbytes_out_hi32 - ); -#endif - - -/*-- Utility functions --*/ - -BZ_EXTERN int BZ_API(BZ2_bzBuffToBuffCompress) ( - char* dest, - unsigned int* destLen, - char* source, - unsigned int sourceLen, - int blockSize100k, - int verbosity, - int workFactor - ); - -BZ_EXTERN int BZ_API(BZ2_bzBuffToBuffDecompress) ( - char* dest, - unsigned int* destLen, - char* source, - unsigned int sourceLen, - int small, - int verbosity - ); - - -/*-- - Code contributed by Yoshioka Tsuneo - (QWF00133@niftyserve.or.jp/tsuneo-y@is.aist-nara.ac.jp), - to support better zlib compatibility. - This code is not _officially_ part of libbzip2 (yet); - I haven't tested it, documented it, or considered the - threading-safeness of it. - If this code breaks, please contact both Yoshioka and me. ---*/ - -BZ_EXTERN const char * BZ_API(BZ2_bzlibVersion) ( - void - ); - -#ifndef BZ_NO_STDIO -BZ_EXTERN BZFILE * BZ_API(BZ2_bzopen) ( - const char *path, - const char *mode - ); - -BZ_EXTERN BZFILE * BZ_API(BZ2_bzdopen) ( - int fd, - const char *mode - ); - -BZ_EXTERN int BZ_API(BZ2_bzread) ( - BZFILE* b, - void* buf, - int len - ); - -BZ_EXTERN int BZ_API(BZ2_bzwrite) ( - BZFILE* b, - void* buf, - int len - ); - -BZ_EXTERN int BZ_API(BZ2_bzflush) ( - BZFILE* b - ); - -BZ_EXTERN void BZ_API(BZ2_bzclose) ( - BZFILE* b - ); - -BZ_EXTERN const char * BZ_API(BZ2_bzerror) ( - BZFILE *b, - int *errnum - ); -#endif - -#ifdef __cplusplus -} -#endif - -#endif - -/*-------------------------------------------------------------*/ -/*--- end bzlib.h ---*/ -/*-------------------------------------------------------------*/ diff --git a/src/bzip2/bzlib_private.h b/src/bzip2/bzlib_private.h deleted file mode 100644 index ff973c3..0000000 --- a/src/bzip2/bzlib_private.h +++ /dev/null @@ -1,537 +0,0 @@ - -/*-------------------------------------------------------------*/ -/*--- Private header file for the library. ---*/ -/*--- bzlib_private.h ---*/ -/*-------------------------------------------------------------*/ - -/*-- - This file is a part of bzip2 and/or libbzip2, a program and - library for lossless, block-sorting data compression. - - Copyright (C) 1996-2002 Julian R Seward. All rights reserved. - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions - are met: - - 1. Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - - 2. The origin of this software must not be misrepresented; you must - not claim that you wrote the original software. If you use this - software in a product, an acknowledgment in the product - documentation would be appreciated but is not required. - - 3. Altered source versions must be plainly marked as such, and must - not be misrepresented as being the original software. - - 4. The name of the author may not be used to endorse or promote - products derived from this software without specific prior written - permission. - - THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS - OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY - DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE - GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS - INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, - WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - - Julian Seward, Cambridge, UK. - jseward@acm.org - bzip2/libbzip2 version 1.0 of 21 March 2000 - - This program is based on (at least) the work of: - Mike Burrows - David Wheeler - Peter Fenwick - Alistair Moffat - Radford Neal - Ian H. Witten - Robert Sedgewick - Jon L. Bentley - - For more information on these sources, see the manual. ---*/ - - -#ifndef _BZLIB_PRIVATE_H -#define _BZLIB_PRIVATE_H - -#include - -#ifndef BZ_NO_STDIO -#include -#include -#include -#endif - -#include "bzlib.h" - - - -/*-- General stuff. --*/ - -#define BZ_VERSION "1.0.2, 30-Dec-2001" - -typedef char Char; -typedef unsigned char Bool; -typedef unsigned char UChar; -typedef int Int32; -typedef unsigned int UInt32; -typedef short Int16; -typedef unsigned short UInt16; - -#define True ((Bool)1) -#define False ((Bool)0) - -#ifndef __GNUC__ -#define __inline__ /* */ -#endif - -#ifndef BZ_NO_STDIO -extern void BZ2_bz__AssertH__fail ( int errcode ); -#define AssertH(cond,errcode) \ - { if (!(cond)) BZ2_bz__AssertH__fail ( errcode ); } -#if BZ_DEBUG -#define AssertD(cond,msg) \ - { if (!(cond)) { \ - fprintf ( stderr, \ - "\n\nlibbzip2(debug build): internal error\n\t%s\n", msg );\ - exit(1); \ - }} -#else -#define AssertD(cond,msg) /* */ -#endif -#define VPrintf0(zf) \ - fprintf(stderr,zf) -#define VPrintf1(zf,za1) \ - fprintf(stderr,zf,za1) -#define VPrintf2(zf,za1,za2) \ - fprintf(stderr,zf,za1,za2) -#define VPrintf3(zf,za1,za2,za3) \ - fprintf(stderr,zf,za1,za2,za3) -#define VPrintf4(zf,za1,za2,za3,za4) \ - fprintf(stderr,zf,za1,za2,za3,za4) -#define VPrintf5(zf,za1,za2,za3,za4,za5) \ - fprintf(stderr,zf,za1,za2,za3,za4,za5) -#else -extern void bz_internal_error ( int errcode ); -#define AssertH(cond,errcode) \ - { if (!(cond)) bz_internal_error ( errcode ); } -#define AssertD(cond,msg) /* */ -#define VPrintf0(zf) /* */ -#define VPrintf1(zf,za1) /* */ -#define VPrintf2(zf,za1,za2) /* */ -#define VPrintf3(zf,za1,za2,za3) /* */ -#define VPrintf4(zf,za1,za2,za3,za4) /* */ -#define VPrintf5(zf,za1,za2,za3,za4,za5) /* */ -#endif - - -#define BZALLOC(nnn) (strm->bzalloc)(strm->opaque,(nnn),1) -#define BZFREE(ppp) (strm->bzfree)(strm->opaque,(ppp)) - - -/*-- Header bytes. --*/ - -#define BZ_HDR_B 0x42 /* 'B' */ -#define BZ_HDR_Z 0x5a /* 'Z' */ -#define BZ_HDR_h 0x68 /* 'h' */ -#define BZ_HDR_0 0x30 /* '0' */ - -/*-- Constants for the back end. --*/ - -#define BZ_MAX_ALPHA_SIZE 258 -#define BZ_MAX_CODE_LEN 23 - -#define BZ_RUNA 0 -#define BZ_RUNB 1 - -#define BZ_N_GROUPS 6 -#define BZ_G_SIZE 50 -#define BZ_N_ITERS 4 - -#define BZ_MAX_SELECTORS (2 + (900000 / BZ_G_SIZE)) - - - -/*-- Stuff for randomising repetitive blocks. --*/ - -extern Int32 BZ2_rNums[512]; - -#define BZ_RAND_DECLS \ - Int32 rNToGo; \ - Int32 rTPos \ - -#define BZ_RAND_INIT_MASK \ - s->rNToGo = 0; \ - s->rTPos = 0 \ - -#define BZ_RAND_MASK ((s->rNToGo == 1) ? 1 : 0) - -#define BZ_RAND_UPD_MASK \ - if (s->rNToGo == 0) { \ - s->rNToGo = BZ2_rNums[s->rTPos]; \ - s->rTPos++; \ - if (s->rTPos == 512) s->rTPos = 0; \ - } \ - s->rNToGo--; - - - -/*-- Stuff for doing CRCs. --*/ - -extern UInt32 BZ2_crc32Table[256]; - -#define BZ_INITIALISE_CRC(crcVar) \ -{ \ - crcVar = 0xffffffffL; \ -} - -#define BZ_FINALISE_CRC(crcVar) \ -{ \ - crcVar = ~(crcVar); \ -} - -#define BZ_UPDATE_CRC(crcVar,cha) \ -{ \ - crcVar = (crcVar << 8) ^ \ - BZ2_crc32Table[(crcVar >> 24) ^ \ - ((UChar)cha)]; \ -} - - - -/*-- States and modes for compression. --*/ - -#define BZ_M_IDLE 1 -#define BZ_M_RUNNING 2 -#define BZ_M_FLUSHING 3 -#define BZ_M_FINISHING 4 - -#define BZ_S_OUTPUT 1 -#define BZ_S_INPUT 2 - -#define BZ_N_RADIX 2 -#define BZ_N_QSORT 12 -#define BZ_N_SHELL 18 -#define BZ_N_OVERSHOOT (BZ_N_RADIX + BZ_N_QSORT + BZ_N_SHELL + 2) - - - - -/*-- Structure holding all the compression-side stuff. --*/ - -typedef - struct { - /* pointer back to the struct bz_stream */ - bz_stream* strm; - - /* mode this stream is in, and whether inputting */ - /* or outputting data */ - Int32 mode; - Int32 state; - - /* remembers avail_in when flush/finish requested */ - UInt32 avail_in_expect; - - /* for doing the block sorting */ - UInt32* arr1; - UInt32* arr2; - UInt32* ftab; - Int32 origPtr; - - /* aliases for arr1 and arr2 */ - UInt32* ptr; - UChar* block; - UInt16* mtfv; - UChar* zbits; - - /* for deciding when to use the fallback sorting algorithm */ - Int32 workFactor; - - /* run-length-encoding of the input */ - UInt32 state_in_ch; - Int32 state_in_len; - BZ_RAND_DECLS; - - /* input and output limits and current posns */ - Int32 nblock; - Int32 nblockMAX; - Int32 numZ; - Int32 state_out_pos; - - /* map of bytes used in block */ - Int32 nInUse; - Bool inUse[256]; - UChar unseqToSeq[256]; - - /* the buffer for bit stream creation */ - UInt32 bsBuff; - Int32 bsLive; - - /* block and combined CRCs */ - UInt32 blockCRC; - UInt32 combinedCRC; - - /* misc administratium */ - Int32 verbosity; - Int32 blockNo; - Int32 blockSize100k; - - /* stuff for coding the MTF values */ - Int32 nMTF; - Int32 mtfFreq [BZ_MAX_ALPHA_SIZE]; - UChar selector [BZ_MAX_SELECTORS]; - UChar selectorMtf[BZ_MAX_SELECTORS]; - - UChar len [BZ_N_GROUPS][BZ_MAX_ALPHA_SIZE]; - Int32 code [BZ_N_GROUPS][BZ_MAX_ALPHA_SIZE]; - Int32 rfreq [BZ_N_GROUPS][BZ_MAX_ALPHA_SIZE]; - /* second dimension: only 3 needed; 4 makes index calculations faster */ - UInt32 len_pack[BZ_MAX_ALPHA_SIZE][4]; - - } - EState; - - - -/*-- externs for compression. --*/ - -extern void -BZ2_blockSort ( EState* ); - -extern void -BZ2_compressBlock ( EState*, Bool ); - -extern void -BZ2_bsInitWrite ( EState* ); - -extern void -BZ2_hbAssignCodes ( Int32*, UChar*, Int32, Int32, Int32 ); - -extern void -BZ2_hbMakeCodeLengths ( UChar*, Int32*, Int32, Int32 ); - - - -/*-- states for decompression. --*/ - -#define BZ_X_IDLE 1 -#define BZ_X_OUTPUT 2 - -#define BZ_X_MAGIC_1 10 -#define BZ_X_MAGIC_2 11 -#define BZ_X_MAGIC_3 12 -#define BZ_X_MAGIC_4 13 -#define BZ_X_BLKHDR_1 14 -#define BZ_X_BLKHDR_2 15 -#define BZ_X_BLKHDR_3 16 -#define BZ_X_BLKHDR_4 17 -#define BZ_X_BLKHDR_5 18 -#define BZ_X_BLKHDR_6 19 -#define BZ_X_BCRC_1 20 -#define BZ_X_BCRC_2 21 -#define BZ_X_BCRC_3 22 -#define BZ_X_BCRC_4 23 -#define BZ_X_RANDBIT 24 -#define BZ_X_ORIGPTR_1 25 -#define BZ_X_ORIGPTR_2 26 -#define BZ_X_ORIGPTR_3 27 -#define BZ_X_MAPPING_1 28 -#define BZ_X_MAPPING_2 29 -#define BZ_X_SELECTOR_1 30 -#define BZ_X_SELECTOR_2 31 -#define BZ_X_SELECTOR_3 32 -#define BZ_X_CODING_1 33 -#define BZ_X_CODING_2 34 -#define BZ_X_CODING_3 35 -#define BZ_X_MTF_1 36 -#define BZ_X_MTF_2 37 -#define BZ_X_MTF_3 38 -#define BZ_X_MTF_4 39 -#define BZ_X_MTF_5 40 -#define BZ_X_MTF_6 41 -#define BZ_X_ENDHDR_2 42 -#define BZ_X_ENDHDR_3 43 -#define BZ_X_ENDHDR_4 44 -#define BZ_X_ENDHDR_5 45 -#define BZ_X_ENDHDR_6 46 -#define BZ_X_CCRC_1 47 -#define BZ_X_CCRC_2 48 -#define BZ_X_CCRC_3 49 -#define BZ_X_CCRC_4 50 - - - -/*-- Constants for the fast MTF decoder. --*/ - -#define MTFA_SIZE 4096 -#define MTFL_SIZE 16 - - - -/*-- Structure holding all the decompression-side stuff. --*/ - -typedef - struct { - /* pointer back to the struct bz_stream */ - bz_stream* strm; - - /* state indicator for this stream */ - Int32 state; - - /* for doing the final run-length decoding */ - UChar state_out_ch; - Int32 state_out_len; - Bool blockRandomised; - BZ_RAND_DECLS; - - /* the buffer for bit stream reading */ - UInt32 bsBuff; - Int32 bsLive; - - /* misc administratium */ - Int32 blockSize100k; - Bool smallDecompress; - Int32 currBlockNo; - Int32 verbosity; - - /* for undoing the Burrows-Wheeler transform */ - Int32 origPtr; - UInt32 tPos; - Int32 k0; - Int32 unzftab[256]; - Int32 nblock_used; - Int32 cftab[257]; - Int32 cftabCopy[257]; - - /* for undoing the Burrows-Wheeler transform (FAST) */ - UInt32 *tt; - - /* for undoing the Burrows-Wheeler transform (SMALL) */ - UInt16 *ll16; - UChar *ll4; - - /* stored and calculated CRCs */ - UInt32 storedBlockCRC; - UInt32 storedCombinedCRC; - UInt32 calculatedBlockCRC; - UInt32 calculatedCombinedCRC; - - /* map of bytes used in block */ - Int32 nInUse; - Bool inUse[256]; - Bool inUse16[16]; - UChar seqToUnseq[256]; - - /* for decoding the MTF values */ - UChar mtfa [MTFA_SIZE]; - Int32 mtfbase[256 / MTFL_SIZE]; - UChar selector [BZ_MAX_SELECTORS]; - UChar selectorMtf[BZ_MAX_SELECTORS]; - UChar len [BZ_N_GROUPS][BZ_MAX_ALPHA_SIZE]; - - Int32 limit [BZ_N_GROUPS][BZ_MAX_ALPHA_SIZE]; - Int32 base [BZ_N_GROUPS][BZ_MAX_ALPHA_SIZE]; - Int32 perm [BZ_N_GROUPS][BZ_MAX_ALPHA_SIZE]; - Int32 minLens[BZ_N_GROUPS]; - - /* save area for scalars in the main decompress code */ - Int32 save_i; - Int32 save_j; - Int32 save_t; - Int32 save_alphaSize; - Int32 save_nGroups; - Int32 save_nSelectors; - Int32 save_EOB; - Int32 save_groupNo; - Int32 save_groupPos; - Int32 save_nextSym; - Int32 save_nblockMAX; - Int32 save_nblock; - Int32 save_es; - Int32 save_N; - Int32 save_curr; - Int32 save_zt; - Int32 save_zn; - Int32 save_zvec; - Int32 save_zj; - Int32 save_gSel; - Int32 save_gMinlen; - Int32* save_gLimit; - Int32* save_gBase; - Int32* save_gPerm; - - } - DState; - - - -/*-- Macros for decompression. --*/ - -#define BZ_GET_FAST(cccc) \ - s->tPos = s->tt[s->tPos]; \ - cccc = (UChar)(s->tPos & 0xff); \ - s->tPos >>= 8; - -#define BZ_GET_FAST_C(cccc) \ - c_tPos = c_tt[c_tPos]; \ - cccc = (UChar)(c_tPos & 0xff); \ - c_tPos >>= 8; - -#define SET_LL4(i,n) \ - { if (((i) & 0x1) == 0) \ - s->ll4[(i) >> 1] = (s->ll4[(i) >> 1] & 0xf0) | (n); else \ - s->ll4[(i) >> 1] = (s->ll4[(i) >> 1] & 0x0f) | ((n) << 4); \ - } - -#define GET_LL4(i) \ - ((((UInt32)(s->ll4[(i) >> 1])) >> (((i) << 2) & 0x4)) & 0xF) - -#define SET_LL(i,n) \ - { s->ll16[i] = (UInt16)(n & 0x0000ffff); \ - SET_LL4(i, n >> 16); \ - } - -#define GET_LL(i) \ - (((UInt32)s->ll16[i]) | (GET_LL4(i) << 16)) - -#define BZ_GET_SMALL(cccc) \ - cccc = BZ2_indexIntoF ( s->tPos, s->cftab ); \ - s->tPos = GET_LL(s->tPos); - - -/*-- externs for decompression. --*/ - -extern Int32 -BZ2_indexIntoF ( Int32, Int32* ); - -extern Int32 -BZ2_decompress ( DState* ); - -extern void -BZ2_hbCreateDecodeTables ( Int32*, Int32*, Int32*, UChar*, - Int32, Int32, Int32 ); - - -#endif - - -/*-- BZ_NO_STDIO seems to make NULL disappear on some platforms. --*/ - -#ifdef BZ_NO_STDIO -#ifndef NULL -#define NULL 0 -#endif -#endif - - -/*-------------------------------------------------------------*/ -/*--- end bzlib_private.h ---*/ -/*-------------------------------------------------------------*/ diff --git a/src/bzip2/compress.c b/src/bzip2/compress.c deleted file mode 100644 index 56501c1..0000000 --- a/src/bzip2/compress.c +++ /dev/null @@ -1,714 +0,0 @@ - -/*-------------------------------------------------------------*/ -/*--- Compression machinery (not incl block sorting) ---*/ -/*--- compress.c ---*/ -/*-------------------------------------------------------------*/ - -/*-- - This file is a part of bzip2 and/or libbzip2, a program and - library for lossless, block-sorting data compression. - - Copyright (C) 1996-2002 Julian R Seward. All rights reserved. - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions - are met: - - 1. Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - - 2. The origin of this software must not be misrepresented; you must - not claim that you wrote the original software. If you use this - software in a product, an acknowledgment in the product - documentation would be appreciated but is not required. - - 3. Altered source versions must be plainly marked as such, and must - not be misrepresented as being the original software. - - 4. The name of the author may not be used to endorse or promote - products derived from this software without specific prior written - permission. - - THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS - OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY - DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE - GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS - INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, - WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - - Julian Seward, Cambridge, UK. - jseward@acm.org - bzip2/libbzip2 version 1.0 of 21 March 2000 - - This program is based on (at least) the work of: - Mike Burrows - David Wheeler - Peter Fenwick - Alistair Moffat - Radford Neal - Ian H. Witten - Robert Sedgewick - Jon L. Bentley - - For more information on these sources, see the manual. ---*/ - -/*-- - CHANGES - ~~~~~~~ - 0.9.0 -- original version. - - 0.9.0a/b -- no changes in this file. - - 0.9.0c - * changed setting of nGroups in sendMTFValues() so as to - do a bit better on small files ---*/ - -#include "bzlib_private.h" - - -/*---------------------------------------------------*/ -/*--- Bit stream I/O ---*/ -/*---------------------------------------------------*/ - -/*---------------------------------------------------*/ -void BZ2_bsInitWrite ( EState* s ) -{ - s->bsLive = 0; - s->bsBuff = 0; -} - - -/*---------------------------------------------------*/ -static -void bsFinishWrite ( EState* s ) -{ - while (s->bsLive > 0) { - s->zbits[s->numZ] = (UChar)(s->bsBuff >> 24); - s->numZ++; - s->bsBuff <<= 8; - s->bsLive -= 8; - } -} - - -/*---------------------------------------------------*/ -#define bsNEEDW(nz) \ -{ \ - while (s->bsLive >= 8) { \ - s->zbits[s->numZ] \ - = (UChar)(s->bsBuff >> 24); \ - s->numZ++; \ - s->bsBuff <<= 8; \ - s->bsLive -= 8; \ - } \ -} - - -/*---------------------------------------------------*/ -static -__inline__ -void bsW ( EState* s, Int32 n, UInt32 v ) -{ - bsNEEDW ( n ); - s->bsBuff |= (v << (32 - s->bsLive - n)); - s->bsLive += n; -} - - -/*---------------------------------------------------*/ -static -void bsPutUInt32 ( EState* s, UInt32 u ) -{ - bsW ( s, 8, (u >> 24) & 0xffL ); - bsW ( s, 8, (u >> 16) & 0xffL ); - bsW ( s, 8, (u >> 8) & 0xffL ); - bsW ( s, 8, u & 0xffL ); -} - - -/*---------------------------------------------------*/ -static -void bsPutUChar ( EState* s, UChar c ) -{ - bsW( s, 8, (UInt32)c ); -} - - -/*---------------------------------------------------*/ -/*--- The back end proper ---*/ -/*---------------------------------------------------*/ - -/*---------------------------------------------------*/ -static -void makeMaps_e ( EState* s ) -{ - Int32 i; - s->nInUse = 0; - for (i = 0; i < 256; i++) - if (s->inUse[i]) { - s->unseqToSeq[i] = s->nInUse; - s->nInUse++; - } -} - - -/*---------------------------------------------------*/ -static -void generateMTFValues ( EState* s ) -{ - UChar yy[256]; - Int32 i, j; - Int32 zPend; - Int32 wr; - Int32 EOB; - - /* - After sorting (eg, here), - s->arr1 [ 0 .. s->nblock-1 ] holds sorted order, - and - ((UChar*)s->arr2) [ 0 .. s->nblock-1 ] - holds the original block data. - - The first thing to do is generate the MTF values, - and put them in - ((UInt16*)s->arr1) [ 0 .. s->nblock-1 ]. - Because there are strictly fewer or equal MTF values - than block values, ptr values in this area are overwritten - with MTF values only when they are no longer needed. - - The final compressed bitstream is generated into the - area starting at - (UChar*) (&((UChar*)s->arr2)[s->nblock]) - - These storage aliases are set up in bzCompressInit(), - except for the last one, which is arranged in - compressBlock(). - */ - UInt32* ptr = s->ptr; - UChar* block = s->block; - UInt16* mtfv = s->mtfv; - - makeMaps_e ( s ); - EOB = s->nInUse+1; - - for (i = 0; i <= EOB; i++) s->mtfFreq[i] = 0; - - wr = 0; - zPend = 0; - for (i = 0; i < s->nInUse; i++) yy[i] = (UChar) i; - - for (i = 0; i < s->nblock; i++) { - UChar ll_i; - AssertD ( wr <= i, "generateMTFValues(1)" ); - j = ptr[i]-1; if (j < 0) j += s->nblock; - ll_i = s->unseqToSeq[block[j]]; - AssertD ( ll_i < s->nInUse, "generateMTFValues(2a)" ); - - if (yy[0] == ll_i) { - zPend++; - } else { - - if (zPend > 0) { - zPend--; - while (True) { - if (zPend & 1) { - mtfv[wr] = BZ_RUNB; wr++; - s->mtfFreq[BZ_RUNB]++; - } else { - mtfv[wr] = BZ_RUNA; wr++; - s->mtfFreq[BZ_RUNA]++; - } - if (zPend < 2) break; - zPend = (zPend - 2) / 2; - }; - zPend = 0; - } - { - register UChar rtmp; - register UChar* ryy_j; - register UChar rll_i; - rtmp = yy[1]; - yy[1] = yy[0]; - ryy_j = &(yy[1]); - rll_i = ll_i; - while ( rll_i != rtmp ) { - register UChar rtmp2; - ryy_j++; - rtmp2 = rtmp; - rtmp = *ryy_j; - *ryy_j = rtmp2; - }; - yy[0] = rtmp; - j = ryy_j - &(yy[0]); - mtfv[wr] = j+1; wr++; s->mtfFreq[j+1]++; - } - - } - } - - if (zPend > 0) { - zPend--; - while (True) { - if (zPend & 1) { - mtfv[wr] = BZ_RUNB; wr++; - s->mtfFreq[BZ_RUNB]++; - } else { - mtfv[wr] = BZ_RUNA; wr++; - s->mtfFreq[BZ_RUNA]++; - } - if (zPend < 2) break; - zPend = (zPend - 2) / 2; - }; - zPend = 0; - } - - mtfv[wr] = EOB; wr++; s->mtfFreq[EOB]++; - - s->nMTF = wr; -} - - -/*---------------------------------------------------*/ -#define BZ_LESSER_ICOST 0 -#define BZ_GREATER_ICOST 15 - -static -void sendMTFValues ( EState* s ) -{ - Int32 v, t, i, j, gs, ge, totc, bt, bc, iter; - Int32 nSelectors, alphaSize, minLen, maxLen, selCtr; - Int32 nGroups, nBytes; - - /*-- - UChar len [BZ_N_GROUPS][BZ_MAX_ALPHA_SIZE]; - is a global since the decoder also needs it. - - Int32 code[BZ_N_GROUPS][BZ_MAX_ALPHA_SIZE]; - Int32 rfreq[BZ_N_GROUPS][BZ_MAX_ALPHA_SIZE]; - are also globals only used in this proc. - Made global to keep stack frame size small. - --*/ - - - UInt16 cost[BZ_N_GROUPS]; - Int32 fave[BZ_N_GROUPS]; - - UInt16* mtfv = s->mtfv; - - if (s->verbosity >= 3) - VPrintf3( " %d in block, %d after MTF & 1-2 coding, " - "%d+2 syms in use\n", - s->nblock, s->nMTF, s->nInUse ); - - alphaSize = s->nInUse+2; - for (t = 0; t < BZ_N_GROUPS; t++) - for (v = 0; v < alphaSize; v++) - s->len[t][v] = BZ_GREATER_ICOST; - - /*--- Decide how many coding tables to use ---*/ - AssertH ( s->nMTF > 0, 3001 ); - if (s->nMTF < 200) nGroups = 2; else - if (s->nMTF < 600) nGroups = 3; else - if (s->nMTF < 1200) nGroups = 4; else - if (s->nMTF < 2400) nGroups = 5; else - nGroups = 6; - - /*--- Generate an initial set of coding tables ---*/ - { - Int32 nPart, remF, tFreq, aFreq; - - nPart = nGroups; - remF = s->nMTF; - gs = 0; - while (nPart > 0) { - tFreq = remF / nPart; - ge = gs-1; - aFreq = 0; - while (aFreq < tFreq && ge < alphaSize-1) { - ge++; - aFreq += s->mtfFreq[ge]; - } - - if (ge > gs - && nPart != nGroups && nPart != 1 - && ((nGroups-nPart) % 2 == 1)) { - aFreq -= s->mtfFreq[ge]; - ge--; - } - - if (s->verbosity >= 3) - VPrintf5( " initial group %d, [%d .. %d], " - "has %d syms (%4.1f%%)\n", - nPart, gs, ge, aFreq, - (100.0 * (float)aFreq) / (float)(s->nMTF) ); - - for (v = 0; v < alphaSize; v++) - if (v >= gs && v <= ge) - s->len[nPart-1][v] = BZ_LESSER_ICOST; else - s->len[nPart-1][v] = BZ_GREATER_ICOST; - - nPart--; - gs = ge+1; - remF -= aFreq; - } - } - - /*--- - Iterate up to BZ_N_ITERS times to improve the tables. - ---*/ - for (iter = 0; iter < BZ_N_ITERS; iter++) { - - for (t = 0; t < nGroups; t++) fave[t] = 0; - - for (t = 0; t < nGroups; t++) - for (v = 0; v < alphaSize; v++) - s->rfreq[t][v] = 0; - - /*--- - Set up an auxiliary length table which is used to fast-track - the common case (nGroups == 6). - ---*/ - if (nGroups == 6) { - for (v = 0; v < alphaSize; v++) { - s->len_pack[v][0] = (s->len[1][v] << 16) | s->len[0][v]; - s->len_pack[v][1] = (s->len[3][v] << 16) | s->len[2][v]; - s->len_pack[v][2] = (s->len[5][v] << 16) | s->len[4][v]; - } - } - - nSelectors = 0; - totc = 0; - gs = 0; - while (True) { - - /*--- Set group start & end marks. --*/ - if (gs >= s->nMTF) break; - ge = gs + BZ_G_SIZE - 1; - if (ge >= s->nMTF) ge = s->nMTF-1; - - /*-- - Calculate the cost of this group as coded - by each of the coding tables. - --*/ - for (t = 0; t < nGroups; t++) cost[t] = 0; - - if (nGroups == 6 && 50 == ge-gs+1) { - /*--- fast track the common case ---*/ - register UInt32 cost01, cost23, cost45; - register UInt16 icv; - cost01 = cost23 = cost45 = 0; - -# define BZ_ITER(nn) \ - icv = mtfv[gs+(nn)]; \ - cost01 += s->len_pack[icv][0]; \ - cost23 += s->len_pack[icv][1]; \ - cost45 += s->len_pack[icv][2]; \ - - BZ_ITER(0); BZ_ITER(1); BZ_ITER(2); BZ_ITER(3); BZ_ITER(4); - BZ_ITER(5); BZ_ITER(6); BZ_ITER(7); BZ_ITER(8); BZ_ITER(9); - BZ_ITER(10); BZ_ITER(11); BZ_ITER(12); BZ_ITER(13); BZ_ITER(14); - BZ_ITER(15); BZ_ITER(16); BZ_ITER(17); BZ_ITER(18); BZ_ITER(19); - BZ_ITER(20); BZ_ITER(21); BZ_ITER(22); BZ_ITER(23); BZ_ITER(24); - BZ_ITER(25); BZ_ITER(26); BZ_ITER(27); BZ_ITER(28); BZ_ITER(29); - BZ_ITER(30); BZ_ITER(31); BZ_ITER(32); BZ_ITER(33); BZ_ITER(34); - BZ_ITER(35); BZ_ITER(36); BZ_ITER(37); BZ_ITER(38); BZ_ITER(39); - BZ_ITER(40); BZ_ITER(41); BZ_ITER(42); BZ_ITER(43); BZ_ITER(44); - BZ_ITER(45); BZ_ITER(46); BZ_ITER(47); BZ_ITER(48); BZ_ITER(49); - -# undef BZ_ITER - - cost[0] = cost01 & 0xffff; cost[1] = cost01 >> 16; - cost[2] = cost23 & 0xffff; cost[3] = cost23 >> 16; - cost[4] = cost45 & 0xffff; cost[5] = cost45 >> 16; - - } else { - /*--- slow version which correctly handles all situations ---*/ - for (i = gs; i <= ge; i++) { - UInt16 icv = mtfv[i]; - for (t = 0; t < nGroups; t++) cost[t] += s->len[t][icv]; - } - } - - /*-- - Find the coding table which is best for this group, - and record its identity in the selector table. - --*/ - bc = 999999999; bt = -1; - for (t = 0; t < nGroups; t++) - if (cost[t] < bc) { bc = cost[t]; bt = t; }; - totc += bc; - fave[bt]++; - s->selector[nSelectors] = bt; - nSelectors++; - - /*-- - Increment the symbol frequencies for the selected table. - --*/ - if (nGroups == 6 && 50 == ge-gs+1) { - /*--- fast track the common case ---*/ - -# define BZ_ITUR(nn) s->rfreq[bt][ mtfv[gs+(nn)] ]++ - - BZ_ITUR(0); BZ_ITUR(1); BZ_ITUR(2); BZ_ITUR(3); BZ_ITUR(4); - BZ_ITUR(5); BZ_ITUR(6); BZ_ITUR(7); BZ_ITUR(8); BZ_ITUR(9); - BZ_ITUR(10); BZ_ITUR(11); BZ_ITUR(12); BZ_ITUR(13); BZ_ITUR(14); - BZ_ITUR(15); BZ_ITUR(16); BZ_ITUR(17); BZ_ITUR(18); BZ_ITUR(19); - BZ_ITUR(20); BZ_ITUR(21); BZ_ITUR(22); BZ_ITUR(23); BZ_ITUR(24); - BZ_ITUR(25); BZ_ITUR(26); BZ_ITUR(27); BZ_ITUR(28); BZ_ITUR(29); - BZ_ITUR(30); BZ_ITUR(31); BZ_ITUR(32); BZ_ITUR(33); BZ_ITUR(34); - BZ_ITUR(35); BZ_ITUR(36); BZ_ITUR(37); BZ_ITUR(38); BZ_ITUR(39); - BZ_ITUR(40); BZ_ITUR(41); BZ_ITUR(42); BZ_ITUR(43); BZ_ITUR(44); - BZ_ITUR(45); BZ_ITUR(46); BZ_ITUR(47); BZ_ITUR(48); BZ_ITUR(49); - -# undef BZ_ITUR - - } else { - /*--- slow version which correctly handles all situations ---*/ - for (i = gs; i <= ge; i++) - s->rfreq[bt][ mtfv[i] ]++; - } - - gs = ge+1; - } - if (s->verbosity >= 3) { - VPrintf2 ( " pass %d: size is %d, grp uses are ", - iter+1, totc/8 ); - for (t = 0; t < nGroups; t++) - VPrintf1 ( "%d ", fave[t] ); - VPrintf0 ( "\n" ); - } - - /*-- - Recompute the tables based on the accumulated frequencies. - --*/ - for (t = 0; t < nGroups; t++) - BZ2_hbMakeCodeLengths ( &(s->len[t][0]), &(s->rfreq[t][0]), - alphaSize, 20 ); - } - - - AssertH( nGroups < 8, 3002 ); - AssertH( nSelectors < 32768 && - nSelectors <= (2 + (900000 / BZ_G_SIZE)), - 3003 ); - - - /*--- Compute MTF values for the selectors. ---*/ - { - UChar pos[BZ_N_GROUPS], ll_i, tmp2, tmp; - for (i = 0; i < nGroups; i++) pos[i] = i; - for (i = 0; i < nSelectors; i++) { - ll_i = s->selector[i]; - j = 0; - tmp = pos[j]; - while ( ll_i != tmp ) { - j++; - tmp2 = tmp; - tmp = pos[j]; - pos[j] = tmp2; - }; - pos[0] = tmp; - s->selectorMtf[i] = j; - } - }; - - /*--- Assign actual codes for the tables. --*/ - for (t = 0; t < nGroups; t++) { - minLen = 32; - maxLen = 0; - for (i = 0; i < alphaSize; i++) { - if (s->len[t][i] > maxLen) maxLen = s->len[t][i]; - if (s->len[t][i] < minLen) minLen = s->len[t][i]; - } - AssertH ( !(maxLen > 20), 3004 ); - AssertH ( !(minLen < 1), 3005 ); - BZ2_hbAssignCodes ( &(s->code[t][0]), &(s->len[t][0]), - minLen, maxLen, alphaSize ); - } - - /*--- Transmit the mapping table. ---*/ - { - Bool inUse16[16]; - for (i = 0; i < 16; i++) { - inUse16[i] = False; - for (j = 0; j < 16; j++) - if (s->inUse[i * 16 + j]) inUse16[i] = True; - } - - nBytes = s->numZ; - for (i = 0; i < 16; i++) - if (inUse16[i]) bsW(s,1,1); else bsW(s,1,0); - - for (i = 0; i < 16; i++) - if (inUse16[i]) - for (j = 0; j < 16; j++) { - if (s->inUse[i * 16 + j]) bsW(s,1,1); else bsW(s,1,0); - } - - if (s->verbosity >= 3) - VPrintf1( " bytes: mapping %d, ", s->numZ-nBytes ); - } - - /*--- Now the selectors. ---*/ - nBytes = s->numZ; - bsW ( s, 3, nGroups ); - bsW ( s, 15, nSelectors ); - for (i = 0; i < nSelectors; i++) { - for (j = 0; j < s->selectorMtf[i]; j++) bsW(s,1,1); - bsW(s,1,0); - } - if (s->verbosity >= 3) - VPrintf1( "selectors %d, ", s->numZ-nBytes ); - - /*--- Now the coding tables. ---*/ - nBytes = s->numZ; - - for (t = 0; t < nGroups; t++) { - Int32 curr = s->len[t][0]; - bsW ( s, 5, curr ); - for (i = 0; i < alphaSize; i++) { - while (curr < s->len[t][i]) { bsW(s,2,2); curr++; /* 10 */ }; - while (curr > s->len[t][i]) { bsW(s,2,3); curr--; /* 11 */ }; - bsW ( s, 1, 0 ); - } - } - - if (s->verbosity >= 3) - VPrintf1 ( "code lengths %d, ", s->numZ-nBytes ); - - /*--- And finally, the block data proper ---*/ - nBytes = s->numZ; - selCtr = 0; - gs = 0; - while (True) { - if (gs >= s->nMTF) break; - ge = gs + BZ_G_SIZE - 1; - if (ge >= s->nMTF) ge = s->nMTF-1; - AssertH ( s->selector[selCtr] < nGroups, 3006 ); - - if (nGroups == 6 && 50 == ge-gs+1) { - /*--- fast track the common case ---*/ - UInt16 mtfv_i; - UChar* s_len_sel_selCtr - = &(s->len[s->selector[selCtr]][0]); - Int32* s_code_sel_selCtr - = &(s->code[s->selector[selCtr]][0]); - -# define BZ_ITAH(nn) \ - mtfv_i = mtfv[gs+(nn)]; \ - bsW ( s, \ - s_len_sel_selCtr[mtfv_i], \ - s_code_sel_selCtr[mtfv_i] ) - - BZ_ITAH(0); BZ_ITAH(1); BZ_ITAH(2); BZ_ITAH(3); BZ_ITAH(4); - BZ_ITAH(5); BZ_ITAH(6); BZ_ITAH(7); BZ_ITAH(8); BZ_ITAH(9); - BZ_ITAH(10); BZ_ITAH(11); BZ_ITAH(12); BZ_ITAH(13); BZ_ITAH(14); - BZ_ITAH(15); BZ_ITAH(16); BZ_ITAH(17); BZ_ITAH(18); BZ_ITAH(19); - BZ_ITAH(20); BZ_ITAH(21); BZ_ITAH(22); BZ_ITAH(23); BZ_ITAH(24); - BZ_ITAH(25); BZ_ITAH(26); BZ_ITAH(27); BZ_ITAH(28); BZ_ITAH(29); - BZ_ITAH(30); BZ_ITAH(31); BZ_ITAH(32); BZ_ITAH(33); BZ_ITAH(34); - BZ_ITAH(35); BZ_ITAH(36); BZ_ITAH(37); BZ_ITAH(38); BZ_ITAH(39); - BZ_ITAH(40); BZ_ITAH(41); BZ_ITAH(42); BZ_ITAH(43); BZ_ITAH(44); - BZ_ITAH(45); BZ_ITAH(46); BZ_ITAH(47); BZ_ITAH(48); BZ_ITAH(49); - -# undef BZ_ITAH - - } else { - /*--- slow version which correctly handles all situations ---*/ - for (i = gs; i <= ge; i++) { - bsW ( s, - s->len [s->selector[selCtr]] [mtfv[i]], - s->code [s->selector[selCtr]] [mtfv[i]] ); - } - } - - - gs = ge+1; - selCtr++; - } - AssertH( selCtr == nSelectors, 3007 ); - - if (s->verbosity >= 3) - VPrintf1( "codes %d\n", s->numZ-nBytes ); -} - - -/*---------------------------------------------------*/ -void BZ2_compressBlock ( EState* s, Bool is_last_block ) -{ - if (s->nblock > 0) { - - BZ_FINALISE_CRC ( s->blockCRC ); - s->combinedCRC = (s->combinedCRC << 1) | (s->combinedCRC >> 31); - s->combinedCRC ^= s->blockCRC; - if (s->blockNo > 1) s->numZ = 0; - - if (s->verbosity >= 2) - VPrintf4( " block %d: crc = 0x%8x, " - "combined CRC = 0x%8x, size = %d\n", - s->blockNo, s->blockCRC, s->combinedCRC, s->nblock ); - - BZ2_blockSort ( s ); - } - - s->zbits = (UChar*) (&((UChar*)s->arr2)[s->nblock]); - - /*-- If this is the first block, create the stream header. --*/ - if (s->blockNo == 1) { - BZ2_bsInitWrite ( s ); - bsPutUChar ( s, BZ_HDR_B ); - bsPutUChar ( s, BZ_HDR_Z ); - bsPutUChar ( s, BZ_HDR_h ); - bsPutUChar ( s, (UChar)(BZ_HDR_0 + s->blockSize100k) ); - } - - if (s->nblock > 0) { - - bsPutUChar ( s, 0x31 ); bsPutUChar ( s, 0x41 ); - bsPutUChar ( s, 0x59 ); bsPutUChar ( s, 0x26 ); - bsPutUChar ( s, 0x53 ); bsPutUChar ( s, 0x59 ); - - /*-- Now the block's CRC, so it is in a known place. --*/ - bsPutUInt32 ( s, s->blockCRC ); - - /*-- - Now a single bit indicating (non-)randomisation. - As of version 0.9.5, we use a better sorting algorithm - which makes randomisation unnecessary. So always set - the randomised bit to 'no'. Of course, the decoder - still needs to be able to handle randomised blocks - so as to maintain backwards compatibility with - older versions of bzip2. - --*/ - bsW(s,1,0); - - bsW ( s, 24, s->origPtr ); - generateMTFValues ( s ); - sendMTFValues ( s ); - } - - - /*-- If this is the last block, add the stream trailer. --*/ - if (is_last_block) { - - bsPutUChar ( s, 0x17 ); bsPutUChar ( s, 0x72 ); - bsPutUChar ( s, 0x45 ); bsPutUChar ( s, 0x38 ); - bsPutUChar ( s, 0x50 ); bsPutUChar ( s, 0x90 ); - bsPutUInt32 ( s, s->combinedCRC ); - if (s->verbosity >= 2) - VPrintf1( " final combined CRC = 0x%x\n ", s->combinedCRC ); - bsFinishWrite ( s ); - } -} - - -/*-------------------------------------------------------------*/ -/*--- end compress.c ---*/ -/*-------------------------------------------------------------*/ diff --git a/src/bzip2/crctable.c b/src/bzip2/crctable.c deleted file mode 100644 index b16746a..0000000 --- a/src/bzip2/crctable.c +++ /dev/null @@ -1,144 +0,0 @@ - -/*-------------------------------------------------------------*/ -/*--- Table for doing CRCs ---*/ -/*--- crctable.c ---*/ -/*-------------------------------------------------------------*/ - -/*-- - This file is a part of bzip2 and/or libbzip2, a program and - library for lossless, block-sorting data compression. - - Copyright (C) 1996-2002 Julian R Seward. All rights reserved. - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions - are met: - - 1. Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - - 2. The origin of this software must not be misrepresented; you must - not claim that you wrote the original software. If you use this - software in a product, an acknowledgment in the product - documentation would be appreciated but is not required. - - 3. Altered source versions must be plainly marked as such, and must - not be misrepresented as being the original software. - - 4. The name of the author may not be used to endorse or promote - products derived from this software without specific prior written - permission. - - THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS - OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY - DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE - GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS - INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, - WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - - Julian Seward, Cambridge, UK. - jseward@acm.org - bzip2/libbzip2 version 1.0 of 21 March 2000 - - This program is based on (at least) the work of: - Mike Burrows - David Wheeler - Peter Fenwick - Alistair Moffat - Radford Neal - Ian H. Witten - Robert Sedgewick - Jon L. Bentley - - For more information on these sources, see the manual. ---*/ - - -#include "bzlib_private.h" - -/*-- - I think this is an implementation of the AUTODIN-II, - Ethernet & FDDI 32-bit CRC standard. Vaguely derived - from code by Rob Warnock, in Section 51 of the - comp.compression FAQ. ---*/ - -UInt32 BZ2_crc32Table[256] = { - - /*-- Ugly, innit? --*/ - - 0x00000000L, 0x04c11db7L, 0x09823b6eL, 0x0d4326d9L, - 0x130476dcL, 0x17c56b6bL, 0x1a864db2L, 0x1e475005L, - 0x2608edb8L, 0x22c9f00fL, 0x2f8ad6d6L, 0x2b4bcb61L, - 0x350c9b64L, 0x31cd86d3L, 0x3c8ea00aL, 0x384fbdbdL, - 0x4c11db70L, 0x48d0c6c7L, 0x4593e01eL, 0x4152fda9L, - 0x5f15adacL, 0x5bd4b01bL, 0x569796c2L, 0x52568b75L, - 0x6a1936c8L, 0x6ed82b7fL, 0x639b0da6L, 0x675a1011L, - 0x791d4014L, 0x7ddc5da3L, 0x709f7b7aL, 0x745e66cdL, - 0x9823b6e0L, 0x9ce2ab57L, 0x91a18d8eL, 0x95609039L, - 0x8b27c03cL, 0x8fe6dd8bL, 0x82a5fb52L, 0x8664e6e5L, - 0xbe2b5b58L, 0xbaea46efL, 0xb7a96036L, 0xb3687d81L, - 0xad2f2d84L, 0xa9ee3033L, 0xa4ad16eaL, 0xa06c0b5dL, - 0xd4326d90L, 0xd0f37027L, 0xddb056feL, 0xd9714b49L, - 0xc7361b4cL, 0xc3f706fbL, 0xceb42022L, 0xca753d95L, - 0xf23a8028L, 0xf6fb9d9fL, 0xfbb8bb46L, 0xff79a6f1L, - 0xe13ef6f4L, 0xe5ffeb43L, 0xe8bccd9aL, 0xec7dd02dL, - 0x34867077L, 0x30476dc0L, 0x3d044b19L, 0x39c556aeL, - 0x278206abL, 0x23431b1cL, 0x2e003dc5L, 0x2ac12072L, - 0x128e9dcfL, 0x164f8078L, 0x1b0ca6a1L, 0x1fcdbb16L, - 0x018aeb13L, 0x054bf6a4L, 0x0808d07dL, 0x0cc9cdcaL, - 0x7897ab07L, 0x7c56b6b0L, 0x71159069L, 0x75d48ddeL, - 0x6b93dddbL, 0x6f52c06cL, 0x6211e6b5L, 0x66d0fb02L, - 0x5e9f46bfL, 0x5a5e5b08L, 0x571d7dd1L, 0x53dc6066L, - 0x4d9b3063L, 0x495a2dd4L, 0x44190b0dL, 0x40d816baL, - 0xaca5c697L, 0xa864db20L, 0xa527fdf9L, 0xa1e6e04eL, - 0xbfa1b04bL, 0xbb60adfcL, 0xb6238b25L, 0xb2e29692L, - 0x8aad2b2fL, 0x8e6c3698L, 0x832f1041L, 0x87ee0df6L, - 0x99a95df3L, 0x9d684044L, 0x902b669dL, 0x94ea7b2aL, - 0xe0b41de7L, 0xe4750050L, 0xe9362689L, 0xedf73b3eL, - 0xf3b06b3bL, 0xf771768cL, 0xfa325055L, 0xfef34de2L, - 0xc6bcf05fL, 0xc27dede8L, 0xcf3ecb31L, 0xcbffd686L, - 0xd5b88683L, 0xd1799b34L, 0xdc3abdedL, 0xd8fba05aL, - 0x690ce0eeL, 0x6dcdfd59L, 0x608edb80L, 0x644fc637L, - 0x7a089632L, 0x7ec98b85L, 0x738aad5cL, 0x774bb0ebL, - 0x4f040d56L, 0x4bc510e1L, 0x46863638L, 0x42472b8fL, - 0x5c007b8aL, 0x58c1663dL, 0x558240e4L, 0x51435d53L, - 0x251d3b9eL, 0x21dc2629L, 0x2c9f00f0L, 0x285e1d47L, - 0x36194d42L, 0x32d850f5L, 0x3f9b762cL, 0x3b5a6b9bL, - 0x0315d626L, 0x07d4cb91L, 0x0a97ed48L, 0x0e56f0ffL, - 0x1011a0faL, 0x14d0bd4dL, 0x19939b94L, 0x1d528623L, - 0xf12f560eL, 0xf5ee4bb9L, 0xf8ad6d60L, 0xfc6c70d7L, - 0xe22b20d2L, 0xe6ea3d65L, 0xeba91bbcL, 0xef68060bL, - 0xd727bbb6L, 0xd3e6a601L, 0xdea580d8L, 0xda649d6fL, - 0xc423cd6aL, 0xc0e2d0ddL, 0xcda1f604L, 0xc960ebb3L, - 0xbd3e8d7eL, 0xb9ff90c9L, 0xb4bcb610L, 0xb07daba7L, - 0xae3afba2L, 0xaafbe615L, 0xa7b8c0ccL, 0xa379dd7bL, - 0x9b3660c6L, 0x9ff77d71L, 0x92b45ba8L, 0x9675461fL, - 0x8832161aL, 0x8cf30badL, 0x81b02d74L, 0x857130c3L, - 0x5d8a9099L, 0x594b8d2eL, 0x5408abf7L, 0x50c9b640L, - 0x4e8ee645L, 0x4a4ffbf2L, 0x470cdd2bL, 0x43cdc09cL, - 0x7b827d21L, 0x7f436096L, 0x7200464fL, 0x76c15bf8L, - 0x68860bfdL, 0x6c47164aL, 0x61043093L, 0x65c52d24L, - 0x119b4be9L, 0x155a565eL, 0x18197087L, 0x1cd86d30L, - 0x029f3d35L, 0x065e2082L, 0x0b1d065bL, 0x0fdc1becL, - 0x3793a651L, 0x3352bbe6L, 0x3e119d3fL, 0x3ad08088L, - 0x2497d08dL, 0x2056cd3aL, 0x2d15ebe3L, 0x29d4f654L, - 0xc5a92679L, 0xc1683bceL, 0xcc2b1d17L, 0xc8ea00a0L, - 0xd6ad50a5L, 0xd26c4d12L, 0xdf2f6bcbL, 0xdbee767cL, - 0xe3a1cbc1L, 0xe760d676L, 0xea23f0afL, 0xeee2ed18L, - 0xf0a5bd1dL, 0xf464a0aaL, 0xf9278673L, 0xfde69bc4L, - 0x89b8fd09L, 0x8d79e0beL, 0x803ac667L, 0x84fbdbd0L, - 0x9abc8bd5L, 0x9e7d9662L, 0x933eb0bbL, 0x97ffad0cL, - 0xafb010b1L, 0xab710d06L, 0xa6322bdfL, 0xa2f33668L, - 0xbcb4666dL, 0xb8757bdaL, 0xb5365d03L, 0xb1f740b4L -}; - - -/*-------------------------------------------------------------*/ -/*--- end crctable.c ---*/ -/*-------------------------------------------------------------*/ diff --git a/src/bzip2/decompress.c b/src/bzip2/decompress.c deleted file mode 100644 index 0a16682..0000000 --- a/src/bzip2/decompress.c +++ /dev/null @@ -1,660 +0,0 @@ - -/*-------------------------------------------------------------*/ -/*--- Decompression machinery ---*/ -/*--- decompress.c ---*/ -/*-------------------------------------------------------------*/ - -/*-- - This file is a part of bzip2 and/or libbzip2, a program and - library for lossless, block-sorting data compression. - - Copyright (C) 1996-2002 Julian R Seward. All rights reserved. - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions - are met: - - 1. Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - - 2. The origin of this software must not be misrepresented; you must - not claim that you wrote the original software. If you use this - software in a product, an acknowledgment in the product - documentation would be appreciated but is not required. - - 3. Altered source versions must be plainly marked as such, and must - not be misrepresented as being the original software. - - 4. The name of the author may not be used to endorse or promote - products derived from this software without specific prior written - permission. - - THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS - OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY - DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE - GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS - INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, - WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - - Julian Seward, Cambridge, UK. - jseward@acm.org - bzip2/libbzip2 version 1.0 of 21 March 2000 - - This program is based on (at least) the work of: - Mike Burrows - David Wheeler - Peter Fenwick - Alistair Moffat - Radford Neal - Ian H. Witten - Robert Sedgewick - Jon L. Bentley - - For more information on these sources, see the manual. ---*/ - - -#include "bzlib_private.h" - - -/*---------------------------------------------------*/ -static -void makeMaps_d ( DState* s ) -{ - Int32 i; - s->nInUse = 0; - for (i = 0; i < 256; i++) - if (s->inUse[i]) { - s->seqToUnseq[s->nInUse] = i; - s->nInUse++; - } -} - - -/*---------------------------------------------------*/ -#define RETURN(rrr) \ - { retVal = rrr; goto save_state_and_return; }; - -#define GET_BITS(lll,vvv,nnn) \ - case lll: s->state = lll; \ - while (True) { \ - if (s->bsLive >= nnn) { \ - UInt32 v; \ - v = (s->bsBuff >> \ - (s->bsLive-nnn)) & ((1 << nnn)-1); \ - s->bsLive -= nnn; \ - vvv = v; \ - break; \ - } \ - if (s->strm->avail_in == 0) RETURN(BZ_OK); \ - s->bsBuff \ - = (s->bsBuff << 8) | \ - ((UInt32) \ - (*((UChar*)(s->strm->next_in)))); \ - s->bsLive += 8; \ - s->strm->next_in++; \ - s->strm->avail_in--; \ - s->strm->total_in_lo32++; \ - if (s->strm->total_in_lo32 == 0) \ - s->strm->total_in_hi32++; \ - } - -#define GET_UCHAR(lll,uuu) \ - GET_BITS(lll,uuu,8) - -#define GET_BIT(lll,uuu) \ - GET_BITS(lll,uuu,1) - -/*---------------------------------------------------*/ -#define GET_MTF_VAL(label1,label2,lval) \ -{ \ - if (groupPos == 0) { \ - groupNo++; \ - if (groupNo >= nSelectors) \ - RETURN(BZ_DATA_ERROR); \ - groupPos = BZ_G_SIZE; \ - gSel = s->selector[groupNo]; \ - gMinlen = s->minLens[gSel]; \ - gLimit = &(s->limit[gSel][0]); \ - gPerm = &(s->perm[gSel][0]); \ - gBase = &(s->base[gSel][0]); \ - } \ - groupPos--; \ - zn = gMinlen; \ - GET_BITS(label1, zvec, zn); \ - while (1) { \ - if (zn > 20 /* the longest code */) \ - RETURN(BZ_DATA_ERROR); \ - if (zvec <= gLimit[zn]) break; \ - zn++; \ - GET_BIT(label2, zj); \ - zvec = (zvec << 1) | zj; \ - }; \ - if (zvec - gBase[zn] < 0 \ - || zvec - gBase[zn] >= BZ_MAX_ALPHA_SIZE) \ - RETURN(BZ_DATA_ERROR); \ - lval = gPerm[zvec - gBase[zn]]; \ -} - - -/*---------------------------------------------------*/ -Int32 BZ2_decompress ( DState* s ) -{ - UChar uc; - Int32 retVal; - Int32 minLen, maxLen; - bz_stream* strm = s->strm; - - /* stuff that needs to be saved/restored */ - Int32 i; - Int32 j; - Int32 t; - Int32 alphaSize; - Int32 nGroups; - Int32 nSelectors; - Int32 EOB; - Int32 groupNo; - Int32 groupPos; - Int32 nextSym; - Int32 nblockMAX; - Int32 nblock; - Int32 es; - Int32 N; - Int32 curr; - Int32 zt; - Int32 zn; - Int32 zvec; - Int32 zj; - Int32 gSel; - Int32 gMinlen; - Int32* gLimit; - Int32* gBase; - Int32* gPerm; - - if (s->state == BZ_X_MAGIC_1) { - /*initialise the save area*/ - s->save_i = 0; - s->save_j = 0; - s->save_t = 0; - s->save_alphaSize = 0; - s->save_nGroups = 0; - s->save_nSelectors = 0; - s->save_EOB = 0; - s->save_groupNo = 0; - s->save_groupPos = 0; - s->save_nextSym = 0; - s->save_nblockMAX = 0; - s->save_nblock = 0; - s->save_es = 0; - s->save_N = 0; - s->save_curr = 0; - s->save_zt = 0; - s->save_zn = 0; - s->save_zvec = 0; - s->save_zj = 0; - s->save_gSel = 0; - s->save_gMinlen = 0; - s->save_gLimit = NULL; - s->save_gBase = NULL; - s->save_gPerm = NULL; - } - - /*restore from the save area*/ - i = s->save_i; - j = s->save_j; - t = s->save_t; - alphaSize = s->save_alphaSize; - nGroups = s->save_nGroups; - nSelectors = s->save_nSelectors; - EOB = s->save_EOB; - groupNo = s->save_groupNo; - groupPos = s->save_groupPos; - nextSym = s->save_nextSym; - nblockMAX = s->save_nblockMAX; - nblock = s->save_nblock; - es = s->save_es; - N = s->save_N; - curr = s->save_curr; - zt = s->save_zt; - zn = s->save_zn; - zvec = s->save_zvec; - zj = s->save_zj; - gSel = s->save_gSel; - gMinlen = s->save_gMinlen; - gLimit = s->save_gLimit; - gBase = s->save_gBase; - gPerm = s->save_gPerm; - - retVal = BZ_OK; - - switch (s->state) { - - GET_UCHAR(BZ_X_MAGIC_1, uc); - if (uc != BZ_HDR_B) RETURN(BZ_DATA_ERROR_MAGIC); - - GET_UCHAR(BZ_X_MAGIC_2, uc); - if (uc != BZ_HDR_Z) RETURN(BZ_DATA_ERROR_MAGIC); - - GET_UCHAR(BZ_X_MAGIC_3, uc) - if (uc != BZ_HDR_h) RETURN(BZ_DATA_ERROR_MAGIC); - - GET_BITS(BZ_X_MAGIC_4, s->blockSize100k, 8) - if (s->blockSize100k < (BZ_HDR_0 + 1) || - s->blockSize100k > (BZ_HDR_0 + 9)) RETURN(BZ_DATA_ERROR_MAGIC); - s->blockSize100k -= BZ_HDR_0; - - if (s->smallDecompress) { - s->ll16 = (UInt16 *)BZALLOC( s->blockSize100k * 100000 * sizeof(UInt16) ); - s->ll4 = (UChar *)BZALLOC( - ((1 + s->blockSize100k * 100000) >> 1) * sizeof(UChar) - ); - if (s->ll16 == NULL || s->ll4 == NULL) RETURN(BZ_MEM_ERROR); - } else { - s->tt = (UInt32 *)BZALLOC( s->blockSize100k * 100000 * sizeof(Int32) ); - if (s->tt == NULL) RETURN(BZ_MEM_ERROR); - } - - GET_UCHAR(BZ_X_BLKHDR_1, uc); - - if (uc == 0x17) goto endhdr_2; - if (uc != 0x31) RETURN(BZ_DATA_ERROR); - GET_UCHAR(BZ_X_BLKHDR_2, uc); - if (uc != 0x41) RETURN(BZ_DATA_ERROR); - GET_UCHAR(BZ_X_BLKHDR_3, uc); - if (uc != 0x59) RETURN(BZ_DATA_ERROR); - GET_UCHAR(BZ_X_BLKHDR_4, uc); - if (uc != 0x26) RETURN(BZ_DATA_ERROR); - GET_UCHAR(BZ_X_BLKHDR_5, uc); - if (uc != 0x53) RETURN(BZ_DATA_ERROR); - GET_UCHAR(BZ_X_BLKHDR_6, uc); - if (uc != 0x59) RETURN(BZ_DATA_ERROR); - - s->currBlockNo++; - if (s->verbosity >= 2) - VPrintf1 ( "\n [%d: huff+mtf ", s->currBlockNo ); - - s->storedBlockCRC = 0; - GET_UCHAR(BZ_X_BCRC_1, uc); - s->storedBlockCRC = (s->storedBlockCRC << 8) | ((UInt32)uc); - GET_UCHAR(BZ_X_BCRC_2, uc); - s->storedBlockCRC = (s->storedBlockCRC << 8) | ((UInt32)uc); - GET_UCHAR(BZ_X_BCRC_3, uc); - s->storedBlockCRC = (s->storedBlockCRC << 8) | ((UInt32)uc); - GET_UCHAR(BZ_X_BCRC_4, uc); - s->storedBlockCRC = (s->storedBlockCRC << 8) | ((UInt32)uc); - - GET_BITS(BZ_X_RANDBIT, s->blockRandomised, 1); - - s->origPtr = 0; - GET_UCHAR(BZ_X_ORIGPTR_1, uc); - s->origPtr = (s->origPtr << 8) | ((Int32)uc); - GET_UCHAR(BZ_X_ORIGPTR_2, uc); - s->origPtr = (s->origPtr << 8) | ((Int32)uc); - GET_UCHAR(BZ_X_ORIGPTR_3, uc); - s->origPtr = (s->origPtr << 8) | ((Int32)uc); - - if (s->origPtr < 0) - RETURN(BZ_DATA_ERROR); - if (s->origPtr > 10 + 100000*s->blockSize100k) - RETURN(BZ_DATA_ERROR); - - /*--- Receive the mapping table ---*/ - for (i = 0; i < 16; i++) { - GET_BIT(BZ_X_MAPPING_1, uc); - if (uc == 1) - s->inUse16[i] = True; else - s->inUse16[i] = False; - } - - for (i = 0; i < 256; i++) s->inUse[i] = False; - - for (i = 0; i < 16; i++) - if (s->inUse16[i]) - for (j = 0; j < 16; j++) { - GET_BIT(BZ_X_MAPPING_2, uc); - if (uc == 1) s->inUse[i * 16 + j] = True; - } - makeMaps_d ( s ); - if (s->nInUse == 0) RETURN(BZ_DATA_ERROR); - alphaSize = s->nInUse+2; - - /*--- Now the selectors ---*/ - GET_BITS(BZ_X_SELECTOR_1, nGroups, 3); - if (nGroups < 2 || nGroups > 6) RETURN(BZ_DATA_ERROR); - GET_BITS(BZ_X_SELECTOR_2, nSelectors, 15); - if (nSelectors < 1) RETURN(BZ_DATA_ERROR); - for (i = 0; i < nSelectors; i++) { - j = 0; - while (True) { - GET_BIT(BZ_X_SELECTOR_3, uc); - if (uc == 0) break; - j++; - if (j >= nGroups) RETURN(BZ_DATA_ERROR); - } - s->selectorMtf[i] = j; - } - - /*--- Undo the MTF values for the selectors. ---*/ - { - UChar pos[BZ_N_GROUPS], tmp, v; - for (v = 0; v < nGroups; v++) pos[v] = v; - - for (i = 0; i < nSelectors; i++) { - v = s->selectorMtf[i]; - tmp = pos[v]; - while (v > 0) { pos[v] = pos[v-1]; v--; } - pos[0] = tmp; - s->selector[i] = tmp; - } - } - - /*--- Now the coding tables ---*/ - for (t = 0; t < nGroups; t++) { - GET_BITS(BZ_X_CODING_1, curr, 5); - for (i = 0; i < alphaSize; i++) { - while (True) { - if (curr < 1 || curr > 20) RETURN(BZ_DATA_ERROR); - GET_BIT(BZ_X_CODING_2, uc); - if (uc == 0) break; - GET_BIT(BZ_X_CODING_3, uc); - if (uc == 0) curr++; else curr--; - } - s->len[t][i] = curr; - } - } - - /*--- Create the Huffman decoding tables ---*/ - for (t = 0; t < nGroups; t++) { - minLen = 32; - maxLen = 0; - for (i = 0; i < alphaSize; i++) { - if (s->len[t][i] > maxLen) maxLen = s->len[t][i]; - if (s->len[t][i] < minLen) minLen = s->len[t][i]; - } - BZ2_hbCreateDecodeTables ( - &(s->limit[t][0]), - &(s->base[t][0]), - &(s->perm[t][0]), - &(s->len[t][0]), - minLen, maxLen, alphaSize - ); - s->minLens[t] = minLen; - } - - /*--- Now the MTF values ---*/ - - EOB = s->nInUse+1; - nblockMAX = 100000 * s->blockSize100k; - groupNo = -1; - groupPos = 0; - - for (i = 0; i <= 255; i++) s->unzftab[i] = 0; - - /*-- MTF init --*/ - { - Int32 ii, jj, kk; - kk = MTFA_SIZE-1; - for (ii = 256 / MTFL_SIZE - 1; ii >= 0; ii--) { - for (jj = MTFL_SIZE-1; jj >= 0; jj--) { - s->mtfa[kk] = (UChar)(ii * MTFL_SIZE + jj); - kk--; - } - s->mtfbase[ii] = kk + 1; - } - } - /*-- end MTF init --*/ - - nblock = 0; - GET_MTF_VAL(BZ_X_MTF_1, BZ_X_MTF_2, nextSym); - - while (True) { - - if (nextSym == EOB) break; - - if (nextSym == BZ_RUNA || nextSym == BZ_RUNB) { - - es = -1; - N = 1; - do { - if (nextSym == BZ_RUNA) es = es + (0+1) * N; else - if (nextSym == BZ_RUNB) es = es + (1+1) * N; - N = N * 2; - GET_MTF_VAL(BZ_X_MTF_3, BZ_X_MTF_4, nextSym); - } - while (nextSym == BZ_RUNA || nextSym == BZ_RUNB); - - es++; - uc = s->seqToUnseq[ s->mtfa[s->mtfbase[0]] ]; - s->unzftab[uc] += es; - - if (s->smallDecompress) - while (es > 0) { - if (nblock >= nblockMAX) RETURN(BZ_DATA_ERROR); - s->ll16[nblock] = (UInt16)uc; - nblock++; - es--; - } - else - while (es > 0) { - if (nblock >= nblockMAX) RETURN(BZ_DATA_ERROR); - s->tt[nblock] = (UInt32)uc; - nblock++; - es--; - }; - - continue; - - } else { - - if (nblock >= nblockMAX) RETURN(BZ_DATA_ERROR); - - /*-- uc = MTF ( nextSym-1 ) --*/ - { - Int32 ii, jj, kk, pp, lno, off; - UInt32 nn; - nn = (UInt32)(nextSym - 1); - - if (nn < MTFL_SIZE) { - /* avoid general-case expense */ - pp = s->mtfbase[0]; - uc = s->mtfa[pp+nn]; - while (nn > 3) { - Int32 z = pp+nn; - s->mtfa[(z) ] = s->mtfa[(z)-1]; - s->mtfa[(z)-1] = s->mtfa[(z)-2]; - s->mtfa[(z)-2] = s->mtfa[(z)-3]; - s->mtfa[(z)-3] = s->mtfa[(z)-4]; - nn -= 4; - } - while (nn > 0) { - s->mtfa[(pp+nn)] = s->mtfa[(pp+nn)-1]; nn--; - }; - s->mtfa[pp] = uc; - } else { - /* general case */ - lno = nn / MTFL_SIZE; - off = nn % MTFL_SIZE; - pp = s->mtfbase[lno] + off; - uc = s->mtfa[pp]; - while (pp > s->mtfbase[lno]) { - s->mtfa[pp] = s->mtfa[pp-1]; pp--; - }; - s->mtfbase[lno]++; - while (lno > 0) { - s->mtfbase[lno]--; - s->mtfa[s->mtfbase[lno]] - = s->mtfa[s->mtfbase[lno-1] + MTFL_SIZE - 1]; - lno--; - } - s->mtfbase[0]--; - s->mtfa[s->mtfbase[0]] = uc; - if (s->mtfbase[0] == 0) { - kk = MTFA_SIZE-1; - for (ii = 256 / MTFL_SIZE-1; ii >= 0; ii--) { - for (jj = MTFL_SIZE-1; jj >= 0; jj--) { - s->mtfa[kk] = s->mtfa[s->mtfbase[ii] + jj]; - kk--; - } - s->mtfbase[ii] = kk + 1; - } - } - } - } - /*-- end uc = MTF ( nextSym-1 ) --*/ - - s->unzftab[s->seqToUnseq[uc]]++; - if (s->smallDecompress) - s->ll16[nblock] = (UInt16)(s->seqToUnseq[uc]); else - s->tt[nblock] = (UInt32)(s->seqToUnseq[uc]); - nblock++; - - GET_MTF_VAL(BZ_X_MTF_5, BZ_X_MTF_6, nextSym); - continue; - } - } - - /* Now we know what nblock is, we can do a better sanity - check on s->origPtr. - */ - if (s->origPtr < 0 || s->origPtr >= nblock) - RETURN(BZ_DATA_ERROR); - - s->state_out_len = 0; - s->state_out_ch = 0; - BZ_INITIALISE_CRC ( s->calculatedBlockCRC ); - s->state = BZ_X_OUTPUT; - if (s->verbosity >= 2) VPrintf0 ( "rt+rld" ); - - /*-- Set up cftab to facilitate generation of T^(-1) --*/ - s->cftab[0] = 0; - for (i = 1; i <= 256; i++) s->cftab[i] = s->unzftab[i-1]; - for (i = 1; i <= 256; i++) s->cftab[i] += s->cftab[i-1]; - - if (s->smallDecompress) { - - /*-- Make a copy of cftab, used in generation of T --*/ - for (i = 0; i <= 256; i++) s->cftabCopy[i] = s->cftab[i]; - - /*-- compute the T vector --*/ - for (i = 0; i < nblock; i++) { - uc = (UChar)(s->ll16[i]); - SET_LL(i, s->cftabCopy[uc]); - s->cftabCopy[uc]++; - } - - /*-- Compute T^(-1) by pointer reversal on T --*/ - i = s->origPtr; - j = GET_LL(i); - do { - Int32 tmp = GET_LL(j); - SET_LL(j, i); - i = j; - j = tmp; - } - while (i != s->origPtr); - - s->tPos = s->origPtr; - s->nblock_used = 0; - if (s->blockRandomised) { - BZ_RAND_INIT_MASK; - BZ_GET_SMALL(s->k0); s->nblock_used++; - BZ_RAND_UPD_MASK; s->k0 ^= BZ_RAND_MASK; - } else { - BZ_GET_SMALL(s->k0); s->nblock_used++; - } - - } else { - - /*-- compute the T^(-1) vector --*/ - for (i = 0; i < nblock; i++) { - uc = (UChar)(s->tt[i] & 0xff); - s->tt[s->cftab[uc]] |= (i << 8); - s->cftab[uc]++; - } - - s->tPos = s->tt[s->origPtr] >> 8; - s->nblock_used = 0; - if (s->blockRandomised) { - BZ_RAND_INIT_MASK; - BZ_GET_FAST(s->k0); s->nblock_used++; - BZ_RAND_UPD_MASK; s->k0 ^= BZ_RAND_MASK; - } else { - BZ_GET_FAST(s->k0); s->nblock_used++; - } - - } - - RETURN(BZ_OK); - - - - endhdr_2: - - GET_UCHAR(BZ_X_ENDHDR_2, uc); - if (uc != 0x72) RETURN(BZ_DATA_ERROR); - GET_UCHAR(BZ_X_ENDHDR_3, uc); - if (uc != 0x45) RETURN(BZ_DATA_ERROR); - GET_UCHAR(BZ_X_ENDHDR_4, uc); - if (uc != 0x38) RETURN(BZ_DATA_ERROR); - GET_UCHAR(BZ_X_ENDHDR_5, uc); - if (uc != 0x50) RETURN(BZ_DATA_ERROR); - GET_UCHAR(BZ_X_ENDHDR_6, uc); - if (uc != 0x90) RETURN(BZ_DATA_ERROR); - - s->storedCombinedCRC = 0; - GET_UCHAR(BZ_X_CCRC_1, uc); - s->storedCombinedCRC = (s->storedCombinedCRC << 8) | ((UInt32)uc); - GET_UCHAR(BZ_X_CCRC_2, uc); - s->storedCombinedCRC = (s->storedCombinedCRC << 8) | ((UInt32)uc); - GET_UCHAR(BZ_X_CCRC_3, uc); - s->storedCombinedCRC = (s->storedCombinedCRC << 8) | ((UInt32)uc); - GET_UCHAR(BZ_X_CCRC_4, uc); - s->storedCombinedCRC = (s->storedCombinedCRC << 8) | ((UInt32)uc); - - s->state = BZ_X_IDLE; - RETURN(BZ_STREAM_END); - - default: AssertH ( False, 4001 ); - } - - AssertH ( False, 4002 ); - - save_state_and_return: - - s->save_i = i; - s->save_j = j; - s->save_t = t; - s->save_alphaSize = alphaSize; - s->save_nGroups = nGroups; - s->save_nSelectors = nSelectors; - s->save_EOB = EOB; - s->save_groupNo = groupNo; - s->save_groupPos = groupPos; - s->save_nextSym = nextSym; - s->save_nblockMAX = nblockMAX; - s->save_nblock = nblock; - s->save_es = es; - s->save_N = N; - s->save_curr = curr; - s->save_zt = zt; - s->save_zn = zn; - s->save_zvec = zvec; - s->save_zj = zj; - s->save_gSel = gSel; - s->save_gMinlen = gMinlen; - s->save_gLimit = gLimit; - s->save_gBase = gBase; - s->save_gPerm = gPerm; - - return retVal; -} - - -/*-------------------------------------------------------------*/ -/*--- end decompress.c ---*/ -/*-------------------------------------------------------------*/ diff --git a/src/bzip2/huffman.c b/src/bzip2/huffman.c deleted file mode 100644 index 293095c..0000000 --- a/src/bzip2/huffman.c +++ /dev/null @@ -1,228 +0,0 @@ - -/*-------------------------------------------------------------*/ -/*--- Huffman coding low-level stuff ---*/ -/*--- huffman.c ---*/ -/*-------------------------------------------------------------*/ - -/*-- - This file is a part of bzip2 and/or libbzip2, a program and - library for lossless, block-sorting data compression. - - Copyright (C) 1996-2002 Julian R Seward. All rights reserved. - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions - are met: - - 1. Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - - 2. The origin of this software must not be misrepresented; you must - not claim that you wrote the original software. If you use this - software in a product, an acknowledgment in the product - documentation would be appreciated but is not required. - - 3. Altered source versions must be plainly marked as such, and must - not be misrepresented as being the original software. - - 4. The name of the author may not be used to endorse or promote - products derived from this software without specific prior written - permission. - - THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS - OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY - DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE - GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS - INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, - WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - - Julian Seward, Cambridge, UK. - jseward@acm.org - bzip2/libbzip2 version 1.0 of 21 March 2000 - - This program is based on (at least) the work of: - Mike Burrows - David Wheeler - Peter Fenwick - Alistair Moffat - Radford Neal - Ian H. Witten - Robert Sedgewick - Jon L. Bentley - - For more information on these sources, see the manual. ---*/ - - -#include "bzlib_private.h" - -/*---------------------------------------------------*/ -#define WEIGHTOF(zz0) ((zz0) & 0xffffff00) -#define DEPTHOF(zz1) ((zz1) & 0x000000ff) -#define MYMAX(zz2,zz3) ((zz2) > (zz3) ? (zz2) : (zz3)) - -#define ADDWEIGHTS(zw1,zw2) \ - (WEIGHTOF(zw1)+WEIGHTOF(zw2)) | \ - (1 + MYMAX(DEPTHOF(zw1),DEPTHOF(zw2))) - -#define UPHEAP(z) \ -{ \ - Int32 zz, tmp; \ - zz = z; tmp = heap[zz]; \ - while (weight[tmp] < weight[heap[zz >> 1]]) { \ - heap[zz] = heap[zz >> 1]; \ - zz >>= 1; \ - } \ - heap[zz] = tmp; \ -} - -#define DOWNHEAP(z) \ -{ \ - Int32 zz, yy, tmp; \ - zz = z; tmp = heap[zz]; \ - while (True) { \ - yy = zz << 1; \ - if (yy > nHeap) break; \ - if (yy < nHeap && \ - weight[heap[yy+1]] < weight[heap[yy]]) \ - yy++; \ - if (weight[tmp] < weight[heap[yy]]) break; \ - heap[zz] = heap[yy]; \ - zz = yy; \ - } \ - heap[zz] = tmp; \ -} - - -/*---------------------------------------------------*/ -void BZ2_hbMakeCodeLengths ( UChar *len, - Int32 *freq, - Int32 alphaSize, - Int32 maxLen ) -{ - /*-- - Nodes and heap entries run from 1. Entry 0 - for both the heap and nodes is a sentinel. - --*/ - Int32 nNodes, nHeap, n1, n2, i, j, k; - Bool tooLong; - - Int32 heap [ BZ_MAX_ALPHA_SIZE + 2 ]; - Int32 weight [ BZ_MAX_ALPHA_SIZE * 2 ]; - Int32 parent [ BZ_MAX_ALPHA_SIZE * 2 ]; - - for (i = 0; i < alphaSize; i++) - weight[i+1] = (freq[i] == 0 ? 1 : freq[i]) << 8; - - while (True) { - - nNodes = alphaSize; - nHeap = 0; - - heap[0] = 0; - weight[0] = 0; - parent[0] = -2; - - for (i = 1; i <= alphaSize; i++) { - parent[i] = -1; - nHeap++; - heap[nHeap] = i; - UPHEAP(nHeap); - } - - AssertH( nHeap < (BZ_MAX_ALPHA_SIZE+2), 2001 ); - - while (nHeap > 1) { - n1 = heap[1]; heap[1] = heap[nHeap]; nHeap--; DOWNHEAP(1); - n2 = heap[1]; heap[1] = heap[nHeap]; nHeap--; DOWNHEAP(1); - nNodes++; - parent[n1] = parent[n2] = nNodes; - weight[nNodes] = ADDWEIGHTS(weight[n1], weight[n2]); - parent[nNodes] = -1; - nHeap++; - heap[nHeap] = nNodes; - UPHEAP(nHeap); - } - - AssertH( nNodes < (BZ_MAX_ALPHA_SIZE * 2), 2002 ); - - tooLong = False; - for (i = 1; i <= alphaSize; i++) { - j = 0; - k = i; - while (parent[k] >= 0) { k = parent[k]; j++; } - len[i-1] = j; - if (j > maxLen) tooLong = True; - } - - if (! tooLong) break; - - for (i = 1; i < alphaSize; i++) { - j = weight[i] >> 8; - j = 1 + (j / 2); - weight[i] = j << 8; - } - } -} - - -/*---------------------------------------------------*/ -void BZ2_hbAssignCodes ( Int32 *code, - UChar *length, - Int32 minLen, - Int32 maxLen, - Int32 alphaSize ) -{ - Int32 n, vec, i; - - vec = 0; - for (n = minLen; n <= maxLen; n++) { - for (i = 0; i < alphaSize; i++) - if (length[i] == n) { code[i] = vec; vec++; }; - vec <<= 1; - } -} - - -/*---------------------------------------------------*/ -void BZ2_hbCreateDecodeTables ( Int32 *limit, - Int32 *base, - Int32 *perm, - UChar *length, - Int32 minLen, - Int32 maxLen, - Int32 alphaSize ) -{ - Int32 pp, i, j, vec; - - pp = 0; - for (i = minLen; i <= maxLen; i++) - for (j = 0; j < alphaSize; j++) - if (length[j] == i) { perm[pp] = j; pp++; }; - - for (i = 0; i < BZ_MAX_CODE_LEN; i++) base[i] = 0; - for (i = 0; i < alphaSize; i++) base[length[i]+1]++; - - for (i = 1; i < BZ_MAX_CODE_LEN; i++) base[i] += base[i-1]; - - for (i = 0; i < BZ_MAX_CODE_LEN; i++) limit[i] = 0; - vec = 0; - - for (i = minLen; i <= maxLen; i++) { - vec += (base[i+1] - base[i]); - limit[i] = vec-1; - vec <<= 1; - } - for (i = minLen + 1; i <= maxLen; i++) - base[i] = ((limit[i-1] + 1) << 1) - base[i]; -} - - -/*-------------------------------------------------------------*/ -/*--- end huffman.c ---*/ -/*-------------------------------------------------------------*/ diff --git a/src/bzip2/randtable.c b/src/bzip2/randtable.c deleted file mode 100644 index 5c922e9..0000000 --- a/src/bzip2/randtable.c +++ /dev/null @@ -1,124 +0,0 @@ - -/*-------------------------------------------------------------*/ -/*--- Table for randomising repetitive blocks ---*/ -/*--- randtable.c ---*/ -/*-------------------------------------------------------------*/ - -/*-- - This file is a part of bzip2 and/or libbzip2, a program and - library for lossless, block-sorting data compression. - - Copyright (C) 1996-2002 Julian R Seward. All rights reserved. - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions - are met: - - 1. Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - - 2. The origin of this software must not be misrepresented; you must - not claim that you wrote the original software. If you use this - software in a product, an acknowledgment in the product - documentation would be appreciated but is not required. - - 3. Altered source versions must be plainly marked as such, and must - not be misrepresented as being the original software. - - 4. The name of the author may not be used to endorse or promote - products derived from this software without specific prior written - permission. - - THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS - OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY - DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE - GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS - INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, - WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - - Julian Seward, Cambridge, UK. - jseward@acm.org - bzip2/libbzip2 version 1.0 of 21 March 2000 - - This program is based on (at least) the work of: - Mike Burrows - David Wheeler - Peter Fenwick - Alistair Moffat - Radford Neal - Ian H. Witten - Robert Sedgewick - Jon L. Bentley - - For more information on these sources, see the manual. ---*/ - - -#include "bzlib_private.h" - - -/*---------------------------------------------*/ -Int32 BZ2_rNums[512] = { - 619, 720, 127, 481, 931, 816, 813, 233, 566, 247, - 985, 724, 205, 454, 863, 491, 741, 242, 949, 214, - 733, 859, 335, 708, 621, 574, 73, 654, 730, 472, - 419, 436, 278, 496, 867, 210, 399, 680, 480, 51, - 878, 465, 811, 169, 869, 675, 611, 697, 867, 561, - 862, 687, 507, 283, 482, 129, 807, 591, 733, 623, - 150, 238, 59, 379, 684, 877, 625, 169, 643, 105, - 170, 607, 520, 932, 727, 476, 693, 425, 174, 647, - 73, 122, 335, 530, 442, 853, 695, 249, 445, 515, - 909, 545, 703, 919, 874, 474, 882, 500, 594, 612, - 641, 801, 220, 162, 819, 984, 589, 513, 495, 799, - 161, 604, 958, 533, 221, 400, 386, 867, 600, 782, - 382, 596, 414, 171, 516, 375, 682, 485, 911, 276, - 98, 553, 163, 354, 666, 933, 424, 341, 533, 870, - 227, 730, 475, 186, 263, 647, 537, 686, 600, 224, - 469, 68, 770, 919, 190, 373, 294, 822, 808, 206, - 184, 943, 795, 384, 383, 461, 404, 758, 839, 887, - 715, 67, 618, 276, 204, 918, 873, 777, 604, 560, - 951, 160, 578, 722, 79, 804, 96, 409, 713, 940, - 652, 934, 970, 447, 318, 353, 859, 672, 112, 785, - 645, 863, 803, 350, 139, 93, 354, 99, 820, 908, - 609, 772, 154, 274, 580, 184, 79, 626, 630, 742, - 653, 282, 762, 623, 680, 81, 927, 626, 789, 125, - 411, 521, 938, 300, 821, 78, 343, 175, 128, 250, - 170, 774, 972, 275, 999, 639, 495, 78, 352, 126, - 857, 956, 358, 619, 580, 124, 737, 594, 701, 612, - 669, 112, 134, 694, 363, 992, 809, 743, 168, 974, - 944, 375, 748, 52, 600, 747, 642, 182, 862, 81, - 344, 805, 988, 739, 511, 655, 814, 334, 249, 515, - 897, 955, 664, 981, 649, 113, 974, 459, 893, 228, - 433, 837, 553, 268, 926, 240, 102, 654, 459, 51, - 686, 754, 806, 760, 493, 403, 415, 394, 687, 700, - 946, 670, 656, 610, 738, 392, 760, 799, 887, 653, - 978, 321, 576, 617, 626, 502, 894, 679, 243, 440, - 680, 879, 194, 572, 640, 724, 926, 56, 204, 700, - 707, 151, 457, 449, 797, 195, 791, 558, 945, 679, - 297, 59, 87, 824, 713, 663, 412, 693, 342, 606, - 134, 108, 571, 364, 631, 212, 174, 643, 304, 329, - 343, 97, 430, 751, 497, 314, 983, 374, 822, 928, - 140, 206, 73, 263, 980, 736, 876, 478, 430, 305, - 170, 514, 364, 692, 829, 82, 855, 953, 676, 246, - 369, 970, 294, 750, 807, 827, 150, 790, 288, 923, - 804, 378, 215, 828, 592, 281, 565, 555, 710, 82, - 896, 831, 547, 261, 524, 462, 293, 465, 502, 56, - 661, 821, 976, 991, 658, 869, 905, 758, 745, 193, - 768, 550, 608, 933, 378, 286, 215, 979, 792, 961, - 61, 688, 793, 644, 986, 403, 106, 366, 905, 644, - 372, 567, 466, 434, 645, 210, 389, 550, 919, 135, - 780, 773, 635, 389, 707, 100, 626, 958, 165, 504, - 920, 176, 193, 713, 857, 265, 203, 50, 668, 108, - 645, 990, 626, 197, 510, 357, 358, 850, 858, 364, - 936, 638 -}; - - -/*-------------------------------------------------------------*/ -/*--- end randtable.c ---*/ -/*-------------------------------------------------------------*/ diff --git a/src/celestial_navigation_pi.cpp b/src/celestial_navigation_pi.cpp index a467add..3864639 100755 --- a/src/celestial_navigation_pi.cpp +++ b/src/celestial_navigation_pi.cpp @@ -24,8 +24,18 @@ *************************************************************************** */ -#include +#include "wx/wxprec.h" + +#ifndef WX_PRECOMP +#include "wx/wx.h" +#endif //precompiled headers + #include +#ifdef __WXOSX__ +#include +#else +#include +#endif #include "ocpn_plugin.h" @@ -33,8 +43,6 @@ #include "celestial_navigation_pi.h" #include "icons.h" -#include "plugingl/pidc.h" - using namespace std; // the class factories, used to create and destroy instances of the PlugIn @@ -56,10 +64,35 @@ extern "C" DECL_EXP void destroy_pi(opencpn_plugin* p) //--------------------------------------------------------------------------------------------------------- celestial_navigation_pi::celestial_navigation_pi(void *ppimgr) - :opencpn_plugin_111 (ppimgr) + :opencpn_plugin_118 (ppimgr) { // Create the PlugIn icons initialize_images(); + +// Create the PlugIn icons -from shipdriver +// loads png file for the listing panel icon + wxFileName fn; + auto path = GetPluginDataDir("celestial_navigation_pi"); + fn.SetPath(path); + fn.AppendDir("data"); + fn.SetFullName("celestial_navigation_panel.png"); + + path = fn.GetFullPath(); + + wxInitAllImageHandlers(); + + wxLogDebug(wxString("Using icon path: ") + path); + if (!wxImage::CanRead(path)) { + wxLogDebug("Initiating image handlers."); + wxInitAllImageHandlers(); + } + wxImage panelIcon(path); + if (panelIcon.IsOk()) + m_panelBitmap = wxBitmap(panelIcon); + else + wxLogWarning("Celestial Navigation Panel icon has NOT been loaded"); +// End of from Shipdriver + } celestial_navigation_pi::~celestial_navigation_pi(void){} @@ -77,16 +110,24 @@ int celestial_navigation_pi::Init(void) { AddLocaleCatalog( _T("opencpn-celestial_navigation_pi") ); + + + // Get a pointer to the opencpn display canvas, to use as a parent for windows created m_parent_window = GetOCPNCanvasWindow(); // This PlugIn needs a toolbar icon, so request its insertion - m_leftclick_tool_id = InsertPlugInTool(_T(""), _img_celestial_navigation, - _img_celestial_navigation, wxITEM_NORMAL, - _("Celestial Navigation"), _T(""), NULL, - CELESTIAL_NAVIGATION_TOOL_POSITION, 0, this); + +#ifdef PLUGIN_USE_SVG + m_leftclick_tool_id = InsertPlugInToolSVG( "Celestial Navigation" , _svg_celestial_navigation, _svg_celestial_navigation_rollover, + _svg_celestial_navigation_toggled, wxITEM_CHECK, _( "Celestial Navigation" ), "" , NULL, CELESTIAL_NAVIGATION_TOOL_POSITION, 0, this); +#else + m_leftclick_tool_id = InsertPlugInTool + ("", _img_celestial_navigation, _img_celestial_navigation, wxITEM_NORMAL, + _("Celestial Navigation"), "", NULL, CELESTIAL_NAVIGATION_TOOL_POSITION, 0, this); +#endif - m_pCelestialNavigationDialog = NULL; + m_pCelestialNavigationDialog = NULL; return (WANTS_OVERLAY_CALLBACK | WANTS_OPENGL_OVERLAY_CALLBACK | @@ -112,12 +153,12 @@ bool celestial_navigation_pi::DeInit(void) int celestial_navigation_pi::GetAPIVersionMajor() { - return MY_API_VERSION_MAJOR; + return OCPN_API_VERSION_MAJOR; } int celestial_navigation_pi::GetAPIVersionMinor() { - return MY_API_VERSION_MINOR; + return OCPN_API_VERSION_MINOR; } int celestial_navigation_pi::GetPlugInVersionMajor() @@ -130,27 +171,41 @@ int celestial_navigation_pi::GetPlugInVersionMinor() return PLUGIN_VERSION_MINOR; } -wxBitmap *celestial_navigation_pi::GetPlugInBitmap() +int celestial_navigation_pi::GetPlugInVersionPatch() { - return new wxBitmap(_img_celestial_navigation->ConvertToImage().Copy()); + return PLUGIN_VERSION_PATCH; } +int celestial_navigation_pi::GetPlugInVersionPost() +{ + return PLUGIN_VERSION_TWEAK; +} + + +//wxBitmap *celestial_navigation_pi::GetPlugInBitmap() +//{ +// return new wxBitmap(_img_celestial_navigation->ConvertToImage().Copy()); +//} + +// Shipdriver uses the climatology_panel.png file to make the bitmap. +wxBitmap *celestial_navigation_pi::GetPlugInBitmap() { return &m_panelBitmap; } +// End of shipdriver process + wxString celestial_navigation_pi::GetCommonName() { - return _("Celestial Navigation"); + // return _("Celestial Navigation"); + return _T(PLUGIN_COMMON_NAME); } wxString celestial_navigation_pi::GetShortDescription() { - return _("Celestial Navigation PlugIn for OpenCPN"); + return _(PLUGIN_SHORT_DESCRIPTION); } wxString celestial_navigation_pi::GetLongDescription() { - return _("Celestial Navigation PlugIn for OpenCPN.\n\ -Implements nautical almanac for sun, moon, planets,\n\ -and various navigational stars.\n\ -Compute position fix from celestial measurements."); + return _(PLUGIN_LONG_DESCRIPTION); + } void celestial_navigation_pi::OnToolbarToolCallback(int id) @@ -158,8 +213,9 @@ void celestial_navigation_pi::OnToolbarToolCallback(int id) int ret; if(!m_pCelestialNavigationDialog) { /* load the geographical magnetic table */ - wxString geomag_text_path = *GetpSharedDataLocation(); - geomag_text_path.Append(_T("plugins/celestial_navigation_pi/data/IGRF11.COF")); + wxString geomag_text_path = GetPluginDataDir("celestial_navigation_pi"); +// geomag_text_path.Append(_T("plugins/celestial_navigation_pi/data/IGRF11.COF")); + geomag_text_path.Append(_T("/data/IGRF11.COF")); if((ret = geomag_load(geomag_text_path.mb_str())) < 0) { wxString message = _("Failed to load file: ") + geomag_text_path + "\n"; switch (ret) { @@ -194,25 +250,18 @@ void celestial_navigation_pi::SetColorScheme(PI_ColorScheme cs) bool celestial_navigation_pi::RenderOverlay(wxDC &dc, PlugIn_ViewPort *vp) { - piDC pidc(dc); - Render(pidc, vp); - return true; + return RenderOverlayAll(&dc, vp); } bool celestial_navigation_pi::RenderGLOverlay(wxGLContext *pcontext, PlugIn_ViewPort *vp) { - piDC pidc; - glEnable( GL_BLEND ); - pidc.SetVP(vp); - Render(pidc, vp); - glDisable( GL_BLEND ); - return true; + return RenderOverlayAll(NULL, vp); } -void celestial_navigation_pi::Render(piDC &dc, PlugIn_ViewPort *vp) +bool celestial_navigation_pi::RenderOverlayAll(wxDC *dc, PlugIn_ViewPort *vp) { if(!m_pCelestialNavigationDialog || !m_pCelestialNavigationDialog->IsShown()) - return; + return false; /* draw sights */ wxListCtrl *lSights = m_pCelestialNavigationDialog->m_lSights; @@ -230,27 +279,32 @@ void celestial_navigation_pi::Render(piDC &dc, PlugIn_ViewPort *vp) GetCanvasPixLL(vp, &r2, lat+1, lon+1); if(!isnan(err)) { - dc.SetPen ( wxPen(wxColor(255, 0, 0), 1) ); - dc.SetBrush( *wxTRANSPARENT_BRUSH); - dc.DrawLine( r1.x, r1.y, r2.x, r2.y ); - dc.DrawLine( r1.x, r2.y, r2.x, r1.y ); + if(dc) { + dc->SetPen ( wxPen(wxColor(255, 0, 0), 1) ); + dc->SetBrush( *wxTRANSPARENT_BRUSH); + dc->DrawLine( r1.x, r1.y, r2.x, r2.y ); + dc->DrawLine( r1.x, r2.y, r2.x, r1.y ); + } else { + glColor3d(1, 0, 0); + glBegin(GL_LINES); + glVertex2i(r1.x, r1.y); + glVertex2i(r2.x, r2.y); + glVertex2i(r1.x, r2.y); + glVertex2i(r2.x, r1.y); + glEnd(); + } } + + return true; } + wxString celestial_navigation_pi::StandardPath() { - wxStandardPathsBase& std_path = wxStandardPathsBase::Get(); - wxString s = wxFileName::GetPathSeparator(); -#if defined(__WXMSW__) - wxString stdPath = std_path.GetConfigDir(); -#elif defined(__WXGTK__) || defined(__WXQT__) - wxString stdPath = std_path.GetUserDataDir(); -#elif defined(__WXOSX__) - wxString stdPath = (std_path.GetUserConfigDir() + s + _T("opencpn")); // should be ~/Library/Preferences/opencpn -#endif - - return stdPath + wxFileName::GetPathSeparator() + - _T("plugins") + wxFileName::GetPathSeparator() + - _T("celestial_navigation") + wxFileName::GetPathSeparator(); + wxString stdPath(*GetpPrivateApplicationDataLocation()); + stdPath = stdPath + wxFileName::GetPathSeparator() + "plugins" + + wxFileName::GetPathSeparator() + "celestial_navigation" + + wxFileName::GetPathSeparator(); + return stdPath; } static double s_boat_lat, s_boat_lon; diff --git a/src/celestial_navigation_pi.h b/src/celestial_navigation_pi.h index 02a3bec..bb4ed54 100755 --- a/src/celestial_navigation_pi.h +++ b/src/celestial_navigation_pi.h @@ -31,16 +31,11 @@ #include "version.h" -#define MY_API_VERSION_MAJOR 1 -#define MY_API_VERSION_MINOR 11 - #define ABOUT_AUTHOR_URL "http://seandepagnier.users.sourceforge.net" #include "ocpn_plugin.h" -#include "plugingl/qtstylesheet.h" -#include "CelestialNavigationDialog.h" -class piDC; +#include "CelestialNavigationDialog.h" //---------------------------------------------------------------------------------------------------------- // The PlugIn Class Definition @@ -48,7 +43,7 @@ class piDC; #define CELESTIAL_NAVIGATION_TOOL_POSITION -1 // Request default positioning of toolbar tool -class celestial_navigation_pi : public wxEvtHandler, opencpn_plugin_111 +class celestial_navigation_pi : public wxEvtHandler, opencpn_plugin_118 { public: celestial_navigation_pi(void *ppimgr); @@ -62,10 +57,15 @@ class celestial_navigation_pi : public wxEvtHandler, opencpn_plugin_111 int GetAPIVersionMinor(); int GetPlugInVersionMajor(); int GetPlugInVersionMinor(); + int GetPlugInVersionPatch(); + int GetPlugInVersionPost(); + wxBitmap *GetPlugInBitmap(); wxString GetCommonName(); wxString GetShortDescription(); wxString GetLongDescription(); + //Shipdriver Panel Icon definition + wxBitmap m_panelBitmap; void OnToolbarToolCallback(int id); @@ -74,11 +74,12 @@ class celestial_navigation_pi : public wxEvtHandler, opencpn_plugin_111 bool RenderOverlay( wxDC &dc, PlugIn_ViewPort *vp ); bool RenderGLOverlay( wxGLContext *pcontext, PlugIn_ViewPort *vp ); - void Render(piDC &dc, PlugIn_ViewPort *vp); + bool RenderOverlayAll(wxDC *dc, PlugIn_ViewPort *vp); static wxString StandardPath(); void SetPositionFixEx(PlugIn_Position_Fix_Ex &pfix); void SetCursorLatLon(double lat, double lon); + private: wxWindow *m_parent_window; diff --git a/src/icons.cpp b/src/icons.cpp index 8a1634f..88fee83 100644 --- a/src/icons.cpp +++ b/src/icons.cpp @@ -4,15 +4,50 @@ # include #endif #include +#include #include "icons.h" wxBitmap *_img_celestial_navigation; +#ifdef PLUGIN_USE_SVG +#include "ocpn_plugin.h" +wxString _svg_celestial_navigation; +wxString _svg_celestial_navigation_rollover; +wxString _svg_celestial_navigation_toggled; +#endif + void initialize_images(void) { { wxMemoryInputStream sm("\211PNG\r\n\032\n\000\000\000\rIHDR\000\000\000 \000\000\000 \b\006\000\000\000szz\364\000\000\000\001sRGB\000\256\316\034\351\000\000\000\006bKGD\000\377\000\377\000\377\240\275\247\223\000\000\000\011pHYs\000\000\r\327\000\000\r\327\001B(\233x\000\000\000\atIME\a\335\002\027\0017\025)b\267\377\000\000\0118IDATX\303M\227K\257e\327Q\307\177Uk\355\307y\334\333\367\341\333n\273\273m\267\301\261\215-\313\201\310\246A \024)\022\231\300\b\301\000\011\361\001\020\023\306(\237\000\0111\313\b\220\230@\200\001\003@\002\011\241\3044\235\304\030\223\304\217@\234\216\333m\273\351n\367\275\367<\366\336k\255*\006\353\270\205\3169\332Z\247\326^U\265\352\377\257\207,g\207.\200\213 \016\"\002\310\356+\000\210\200\0038\210\203\0138\276\223\033x]?\372\370\377\373\341\365Ew\314\0350\334\252\014\021b=D\020\001\021\335iP\202\200\001*\202\003Q\024s\303\001qA\304\301\034' b\270\201\002&\002b\b\202\211#V\3371\021\324\rGA\rL\000'\212*\237\373*\"\210\b\305\340\344\342\001\327_{\236O>}\310\215\233\357C\024B\210\2309\b\340\216\253\243\200\273\020\3241\034\261z\216\213U\231*\270\2438\246\202\270\324uT,g\242\240\210P\215P\001\027\256^9\342\017~\377\327\271\366\314e\026}\341\327~\363\217H)\243\252\b\006V\017S\247*\025p7\324\301\203\343\006\342\212IA0L\005\314Q\252aBD\334v!\250wO`\027h\021\256\277\366\"W\256\\a6\357\330;<\"h K\001s\232\330\222KB|\a\025\001\254\202\303\021\304\n\004\301]\320\342\230\b\342\206\310\347\267\256\250\n9\033\202\242*J\020\005\011H\210\250F>\372\350!\267><\243\233\035\363\215o\374+\233\355\210j@U1sbhQQT\204\340BP!\212\022\020T\265\312\024$hU\202\"\"(BPE\244\256\021A.\036^u\321\272\351s\364\273\303\245\213\207\000\334\271s\237\320\004\304\035w\000h\273\216i\032*\016\250\377k\014\224\234v\3107\314v\0140\307\314p7\034\247i\032\2064\324}f\310\223'\317\272\242\250\352\356J\005A1\367G\324C\034/\206;\270T\014t}\3070L;\243\254\032n\206\213\343\305q\251J\253r`g\200(L9\327\265;\261m[B\210\b\202j\000\367\212b\352\201\346N.\016bUAe)n\320\267\035c\232p\257HG\252@\002\230i%K\000J\025/\026=\353\325\232\200b\n\230\021\347\363%!\204\312w\253\312\315\035\014\212;X!\250Qr\241\310\316\200\0029\033\363\371\214\224s\365\332\034q\307\024\334\035\325\032\232hB\016F\333\366\214\343\204(\210\011\352\212\341\304\345bA\014\221\020\002\356`f\0243\274\030\305\n\245\030\301\2144N\250\031\245H\245^)\214\303\300|>g\263^\343\272KPVs\211\273\001\212\211\241(}\327q>\215\b\212\250\343V\020\224\270\\.\231\317\347;\257\035\333\201\246\230c93\214c\315\001(\271$\254\004\212\331nO!hd>_\260\035\006\034#\004\301\314j8\304Qw\372~NJ\011a\20737Djl\342r\261\244\237\367\270Q)\026\003m\3232\216\003\333a$\254#\323\224(mf;NXNL\323DA\021\204\2243{{K\034\310y\2527\026\002NuF%2\353gl\266\033$\204\212W\a\325*\217\375\254\247k\273\232\214\005\372\256\247\355[\206MG\333\r4\261au\276fJ\023\356NVA5b^HS\002\034+\306\245K\227\270\177\377>\245\024rN\024+\2108\207\207\a\234\235\237\0224`\305\260]\306u\253\005 \252\352\016\204J\214\221\030\003%\227\232\271\212\021TY,\346\364\271ch[\306\355\200\2313\245D\014\021\257Grrr\002\002\347\247\347\244\034I9\263\230\317\370\302\013?\315\277\337\270\211\206\260+\212\206\272\342j\210)\321v\374\326\240\204&`\005\246q\244\230\241\032\210\021\212\031\242\302\254\237qp\341\002\253U\275\221<%Dk\254c\014\274\366\372\317\361\326\233o\263ZoP\205\227_~\221;w>&\304H4\243\204\232\345\212\027\"\221L\"\202\020c\244i[r\312X1R1\260\352}\354C\345u\251\025PTx\354\370\230~\326\222rf\263\331\022\203\262wa\237+W.srr\314\355\333\037\263\267\267\344\350\370\200[\267>\244iZ\304\225\0222I\200,\024\257\305-\212\b^\274f<\027r.5\341XU\3265\rGG\207<\377\322s\\}\352\n\313\013\3734\363\031M\333\320\205@\323\004\246\315\300g\017\036\360\3643W9\271\370\030\242\302g\017\036r\363\215\357\360\355\033\a\334\275\373\277L\016);\356\r\bXr\324!\206\030(\2450\215S\245W\251y<\210\362\370\245\213|\351\365/\362\354\027\256\361\375\037\336\342?~r\217\321>e\023\032\346\363\226\313\217\355s\351\342\021\317>~\314KO_\246\321JA/\316r\271\340+_\3752w\356|BJ\211\207g\247l6k\326\353\r\233\365\026\001R\202\360\263\257\274\376\265\020\343#\000\252\006\272\266\343\227\276\362\313\034^~\202\357|\367M\376\371\237\376\205\037\374\340=N\317\a\326\331\011m\303`\316\303\002?>\037\370\321\371\212\017\316\267\374\360l$\026\347p\326\242*\270;\317=\377S\334\375\344\036}\327\3214\r!(M\333\320w=\261i\2101F\232\330\320v-A\225n\326\363\334\253/\363\346;\357\361\356\273\377C\030V,\273@h:tZ\261\264}\232\365@\311\202x\246\210\361\311\375\211\367Ys\266\236x\203\302o_\177\212\213\307{\\\271\374\004}\337QJ\341\354\354\234\365j\303\260\031\030\306\211a\263a\034Gb\2322}\337\023b\303\376\205=\236y\345%\376\354\317\377\202i\230\350TP\022aq\310b\377\2008\233\323FE\363\300\242k\350d\242\r\001\361\302\220\241\364\201`#\177\365\327\177\217\347\r\277\373;\277\305\323O=\301\227^{\225[\037|H\014\221\246\357\230\231\341\245Pr!\375\370.%gp\310\245`\030q\273\035(\305HGG\374\345\237\3741\245d\016\366\017h\202\023\003\304\0201w\306)1\235\rM\333\022=s6\024\376\366\037o\360\207\277\367\033\374\327\333\337\343\374\374\234\371r\306|1C^\371\342W\375\277\277\377-4DT\003M\337\323\267=M\323\022\2739q\266\317\362\370\210\343\223#\226\373K\242\266t@\257 b(\016\032q\011L\006\333\311X\r\211\363\011F\0037'Y&m\266\374\352\365\027\220\325\003\276{\363-\232Fq\034}\370\331\003\\\245\226\317\222\261\234)id\230\022S\3124\301\330o\nK\3330K+\304GRILV\030\2633\025a5\032\347\023l-PBC\333\367\354-Zf\255beb\332n\231\2065\337\274\3716O^y\022\304\231Rf\234&\342f\273F\375QC\214\245\211\011!2a)0l\326\234\236GD\214\261\024b\233\030\263\320\212\322w\r\247\233\011\327\206\020\033\306\"$s\314\nf`\226\260d\204iC\332\236s\357t\213\264\277@\210\201a\330bV\210\343\264\255\335\257\025\\\025\003(\011U\241$e\334\300\251\033\3238\321\315\006\346mKJ\205\256i8\025!\031\024\027V\233\221\355d\230\324y2\250\022\325\261\224(%\341yb\0326\334\276}\233\371\274c\273]c\356D\233\316\000\307\245N\257\352\245v\302\222v\263\"\270\025\362\270!\367=S\214\0243\332\256%g#\245\302\331fKNy\327\030\013\032\024\274>\333\250\214\343\000n\224\222x\357\235w\271pa\311\351\351)\030D/c-\204\273\376\336%\324~>Mu\230\360B\343-xf\353\231\355nr\031\307H\316\231\365zK)\231b\005\367\335\310.\273\026_\204\034\003\271\244G-\375\307w>bq\355\032\354\006\333\377\003\362y\254$M\364[\032\000\000\000\000IEND\256B`\202", 2488); _img_celestial_navigation = new wxBitmap(wxImage(sm)); } + +//#ifdef PLUGIN_USE_SVG +// wxFileName fn; +// fn.SetPath(*GetpSharedDataLocation()); +// fn.AppendDir(_T("plugins")); +// fn.AppendDir(_T("celestial_navigation_pi")); +// fn.AppendDir(_T("data")); +// fn.SetFullName(_T("celestial_navigation_pi.svg")); +// _svg_watchdog = fn.GetFullPath(); +//#endif + +#ifdef PLUGIN_USE_SVG + wxFileName fn; + fn.SetPath(GetPluginDataDir("celestial_navigation_pi")); + fn.AppendDir(_T("data")); + fn.SetFullName(_T("celestial_navigation.svg")); + _svg_celestial_navigation = fn.GetFullPath(); + wxLogMessage(_T("Loading toolbar icon: ") + _svg_celestial_navigation); + fn.SetFullName(_T("celestial_navigation_rollover.svg")); + _svg_celestial_navigation_rollover = fn.GetFullPath(); + wxLogMessage(_T("Loading toolbar icon: ") + _svg_celestial_navigation_rollover); + fn.SetFullName(_T("celestial_navigation_toggled.svg")); + _svg_celestial_navigation_toggled = fn.GetFullPath(); + wxLogMessage(_T("Loading toolbar icon: ") + _svg_celestial_navigation_toggled); +#endif + + return; } diff --git a/src/icons.h b/src/icons.h index 60953e2..5818bdc 100644 --- a/src/icons.h +++ b/src/icons.h @@ -7,8 +7,17 @@ # include #endif +#include +#include + extern void initialize_images(void); extern wxBitmap *_img_celestial_navigation; +#ifdef PLUGIN_USE_SVG +extern wxString _svg_celestial_navigation; +extern wxString _svg_celestial_navigation_rollover; +extern wxString _svg_celestial_navigation_toggled; +#endif + #endif /* ICONS_H */ diff --git a/src/ocpn_plugin.h b/src/ocpn_plugin.h deleted file mode 100644 index 84e8dab..0000000 --- a/src/ocpn_plugin.h +++ /dev/null @@ -1,1169 +0,0 @@ -/*************************************************************************** - * - * Project: OpenCPN - * Purpose: PlugIn Object Definition/API - * Author: David Register - * - *************************************************************************** - * Copyright (C) 2010 by David S. Register * - * * - * This program is free software; you can redistribute it and/or modify * - * it under the terms of the GNU General Public License as published by * - * the Free Software Foundation; either version 2 of the License, or * - * (at your option) any later version. * - * * - * This program is distributed in the hope that it will be useful, * - * but WITHOUT ANY WARRANTY; without even the implied warranty of * - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * - * GNU General Public License for more details. * - * * - * You should have received a copy of the GNU General Public License * - * along with this program; if not, write to the * - * Free Software Foundation, Inc., * - * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * - **************************************************************************/ - -#ifndef _PLUGIN_H_ -#define _PLUGIN_H_ - -#ifndef DECL_EXP -#ifdef __WXMSW__ -# define DECL_EXP __declspec(dllexport) -#else -# ifdef __GNUC__ -# define DECL_EXP __attribute__((visibility("default"))) -# endif -#endif -#endif - - -#include - -#ifdef ocpnUSE_SVG -#include "wxsvg/include/wxSVG/svg.h" -#endif // ocpnUSE_SVG - -class wxGLContext; - -// This is the most modern API Version number -// It is expected that the API will remain downward compatible, meaning that -// PlugIns conforming to API Version less then the most modern will also -// be correctly supported. -#define API_VERSION_MAJOR 1 -#define API_VERSION_MINOR 13 - -// Fwd Definitions -class wxFileConfig; -class wxNotebook; -class wxFont; -class wxAuiManager; -class wxScrolledWindow; - -//--------------------------------------------------------------------------------------------------------- -// -// Bitfield PlugIn Capabilites flag definition -// -//--------------------------------------------------------------------------------------------------------- -#define WANTS_OVERLAY_CALLBACK 0x00000001 -#define WANTS_CURSOR_LATLON 0x00000002 -#define WANTS_TOOLBAR_CALLBACK 0x00000004 -#define INSTALLS_TOOLBAR_TOOL 0x00000008 -#define WANTS_CONFIG 0x00000010 -#define INSTALLS_TOOLBOX_PAGE 0x00000020 -#define INSTALLS_CONTEXTMENU_ITEMS 0x00000040 -#define WANTS_NMEA_SENTENCES 0x00000080 -#define WANTS_NMEA_EVENTS 0x00000100 -#define WANTS_AIS_SENTENCES 0x00000200 -#define USES_AUI_MANAGER 0x00000400 -#define WANTS_PREFERENCES 0x00000800 -#define INSTALLS_PLUGIN_CHART 0x00001000 -#define WANTS_ONPAINT_VIEWPORT 0x00002000 -#define WANTS_PLUGIN_MESSAGING 0x00004000 -#define WANTS_OPENGL_OVERLAY_CALLBACK 0x00008000 -#define WANTS_DYNAMIC_OPENGL_OVERLAY_CALLBACK 0x00010000 -#define WANTS_LATE_INIT 0x00020000 -#define INSTALLS_PLUGIN_CHART_GL 0x00040000 -#define WANTS_MOUSE_EVENTS 0x00080000 -#define WANTS_VECTOR_CHART_OBJECT_INFO 0x00100000 -#define WANTS_KEYBOARD_EVENTS 0x00200000 - -//---------------------------------------------------------------------------------------------------------- -// Some PlugIn API interface object class definitions -//---------------------------------------------------------------------------------------------------------- -enum PI_ColorScheme -{ - PI_GLOBAL_COLOR_SCHEME_RGB, - PI_GLOBAL_COLOR_SCHEME_DAY, - PI_GLOBAL_COLOR_SCHEME_DUSK, - PI_GLOBAL_COLOR_SCHEME_NIGHT, - PI_N_COLOR_SCHEMES -}; - -class PlugIn_ViewPort -{ - public: - double clat; // center point - double clon; - double view_scale_ppm; - double skew; - double rotation; - - float chart_scale; // conventional chart displayed scale - - int pix_width; - int pix_height; - wxRect rv_rect; - bool b_quilt; - int m_projection_type; - - double lat_min, lat_max, lon_min, lon_max; - - bool bValid; // This VP is valid -}; - -class PlugIn_Position_Fix -{ - public: - double Lat; - double Lon; - double Cog; - double Sog; - double Var; // Variation, typically from RMC message - time_t FixTime; - int nSats; -}; - -class PlugIn_Position_Fix_Ex -{ - public: - double Lat; - double Lon; - double Cog; - double Sog; - double Var; // Variation, typically from RMC message - double Hdm; - double Hdt; - time_t FixTime; - int nSats; -}; - -// Describe AIS Alarm state -enum plugin_ais_alarm_type -{ - PI_AIS_NO_ALARM = 0, - PI_AIS_ALARM_SET, - PI_AIS_ALARM_ACKNOWLEDGED - -}; - - -class PlugIn_AIS_Target -{ - public: - - int MMSI; - int Class; - int NavStatus; - double SOG; - double COG; - double HDG; - double Lon; - double Lat; - int ROTAIS; - char CallSign[8]; // includes terminator - char ShipName[21]; - unsigned char ShipType; - int IMO; - - double Range_NM; - double Brg; - - // Per target collision parameters - bool bCPA_Valid; - double TCPA; // Minutes - double CPA; // Nautical Miles - - plugin_ais_alarm_type alarm_state; -}; - - -// ChartType constants -typedef enum ChartTypeEnumPI -{ - PI_CHART_TYPE_UNKNOWN = 0, - PI_CHART_TYPE_DUMMY, - PI_CHART_TYPE_DONTCARE, - PI_CHART_TYPE_KAP, - PI_CHART_TYPE_GEO, - PI_CHART_TYPE_S57, - PI_CHART_TYPE_CM93, - PI_CHART_TYPE_CM93COMP, - PI_CHART_TYPE_PLUGIN -}_ChartTypeEnumPI; - -// ChartFamily constants -typedef enum ChartFamilyEnumPI -{ - PI_CHART_FAMILY_UNKNOWN = 0, - PI_CHART_FAMILY_RASTER, - PI_CHART_FAMILY_VECTOR, - PI_CHART_FAMILY_DONTCARE -}_ChartFamilyEnumPI; - -// Depth unit type enum -typedef enum ChartDepthUnitTypePI -{ - PI_DEPTH_UNIT_UNKNOWN, - PI_DEPTH_UNIT_FEET, - PI_DEPTH_UNIT_METERS, - PI_DEPTH_UNIT_FATHOMS -}_ChartDepthUnitTypePI; - -// Projection type enum -typedef enum OcpnProjTypePI -{ - PI_PROJECTION_UNKNOWN, - PI_PROJECTION_MERCATOR, - PI_PROJECTION_TRANSVERSE_MERCATOR, - PI_PROJECTION_POLYCONIC, - - PI_PROJECTION_ORTHOGRAPHIC, - PI_PROJECTION_POLAR, - PI_PROJECTION_STEREOGRAPHIC, - PI_PROJECTION_GNOMONIC, - PI_PROJECTION_EQUIRECTANGULAR -}_OcpnProjTypePI; - -typedef struct _ExtentPI{ - double SLAT; - double WLON; - double NLAT; - double ELON; -}ExtentPI; - -// PlugInChartBase::Init() init_flags constants -#define PI_FULL_INIT 0 -#define PI_HEADER_ONLY 1 -#define PI_THUMB_ONLY 2 - - -// ---------------------------------------------------------------------------- -// PlugInChartBase -// This class is the base class for Plug-able chart types -// ---------------------------------------------------------------------------- - -class DECL_EXP PlugInChartBase : public wxObject -{ - public: - // These methods Must be overriden in any derived class - PlugInChartBase(); - virtual ~PlugInChartBase(); - - virtual wxString GetFileSearchMask(void); - - virtual int Init( const wxString& full_path, int init_flags ); - virtual void SetColorScheme(int cs, bool bApplyImmediate); - - virtual double GetNormalScaleMin(double canvas_scale_factor, bool b_allow_overzoom); - virtual double GetNormalScaleMax(double canvas_scale_factor, int canvas_width); - virtual double GetNearestPreferredScalePPM(double target_scale_ppm); - - virtual bool GetChartExtent(ExtentPI *pext); - - virtual wxBitmap &RenderRegionView(const PlugIn_ViewPort& VPoint, const wxRegion &Region); - - virtual bool AdjustVP(PlugIn_ViewPort &vp_last, PlugIn_ViewPort &vp_proposed); - - virtual void GetValidCanvasRegion(const PlugIn_ViewPort& VPoint, wxRegion *pValidRegion); - - virtual int GetCOVREntries(){ return 0; } - virtual int GetCOVRTablePoints(int iTable) { return 0; } - virtual int GetCOVRTablenPoints(int iTable){ return 0; } - virtual float *GetCOVRTableHead(int iTable){ return (float *)NULL; } - - virtual wxBitmap *GetThumbnail(int tnx, int tny, int cs); - -// Accessors, need not be overridden in derived class if the member variables are maintained - virtual wxString GetFullPath() const { return m_FullPath;} - virtual ChartTypeEnumPI GetChartType() { return m_ChartType;} - virtual ChartFamilyEnumPI GetChartFamily() { return m_ChartFamily;} - virtual OcpnProjTypePI GetChartProjection() { return m_projection;} - virtual wxString GetName() { return m_Name;} - virtual wxString GetDescription() { return m_Description;} - virtual wxString GetID() { return m_ID;} - virtual wxString GetSE() { return m_SE;} - virtual wxString GetDepthUnits() { return m_DepthUnits;} - virtual wxString GetSoundingsDatum() { return m_SoundingsDatum;} - virtual wxString GetDatumString() { return m_datum_str;} - virtual wxString GetExtraInfo() { return m_ExtraInfo; } - virtual wxString GetPubDate() { return m_PubYear;} - virtual double GetChartErrorFactor() { return m_Chart_Error_Factor;} - virtual ChartDepthUnitTypePI GetDepthUnitId() { return m_depth_unit_id;} - virtual bool IsReadyToRender() { return m_bReadyToRender;} - virtual int GetNativeScale() { return m_Chart_Scale; }; - virtual double GetChartSkew() { return m_Chart_Skew; } - virtual wxDateTime GetEditionDate(void) { return m_EdDate;} - -// Methods pertaining to CHART_FAMILY_RASTER type PlugIn charts only - virtual void ComputeSourceRectangle(const PlugIn_ViewPort &vp, wxRect *pSourceRect); - virtual double GetRasterScaleFactor(); - virtual bool GetChartBits( wxRect& source, unsigned char *pPix, int sub_samp ); - virtual int GetSize_X(); - virtual int GetSize_Y(); - virtual void latlong_to_chartpix(double lat, double lon, double &pixx, double &pixy); - virtual void chartpix_to_latlong(double pixx, double pixy, double *plat, double *plon); - - protected: - ChartTypeEnumPI m_ChartType; - ChartFamilyEnumPI m_ChartFamily; - - wxString m_FullPath; - OcpnProjTypePI m_projection; - int m_Chart_Scale; - double m_Chart_Skew; - - wxDateTime m_EdDate; - bool m_bReadyToRender; - - wxString m_Name; - wxString m_Description; - wxString m_ID; - wxString m_SE; - wxString m_SoundingsDatum; - wxString m_datum_str; - wxString m_PubYear; - wxString m_DepthUnits; - wxString m_ExtraInfo; - - ChartDepthUnitTypePI m_depth_unit_id; - - double m_Chart_Error_Factor; - - -}; - - - - - -// Declare an array of PlugIn_AIS_Targets -WX_DEFINE_ARRAY_PTR(PlugIn_AIS_Target *, ArrayOfPlugIn_AIS_Targets); - - - -//---------------------------------------------------------------------------------------------------------- -// The Generic PlugIn Interface Class Definition -// -// This is a virtual class. -// opencpn PlugIns must derive from this class. -// There are two types of methods in this class -// a. Required...must be overridden and implemented by PlugIns -// b. Optional..may be overridden by PlugIns - -// PlugIns must implement optional method overrides consistent with their -// declared capabilities flag as returned by Init(). -//---------------------------------------------------------------------------------------------------------- -class DECL_EXP opencpn_plugin -{ - -public: - opencpn_plugin(void *pmgr) {} - virtual ~opencpn_plugin(); - - // Public API to the PlugIn class - - // This group of methods is required, and will be called by the opencpn host - // opencpn PlugIns must implement this group - virtual int Init(void); // Return the PlugIn Capabilites flag - virtual bool DeInit(void); - - virtual int GetAPIVersionMajor(); - virtual int GetAPIVersionMinor(); - virtual int GetPlugInVersionMajor(); - virtual int GetPlugInVersionMinor(); - virtual wxBitmap *GetPlugInBitmap(); - - // These three methods should produce valid, meaningful strings always - // ---EVEN IF--- the PlugIn has not (yet) been initialized. - // They are used by the PlugInManager GUI - virtual wxString GetCommonName(); - virtual wxString GetShortDescription(); - virtual wxString GetLongDescription(); - - // This group is optional. - // PlugIns may override any of these methods as required - - virtual void SetDefaults(void); //This will be called upon enabling a PlugIn via the user Dialog - //It gives a chance to setup any default options and behavior - - virtual int GetToolbarToolCount(void); - - virtual int GetToolboxPanelCount(void); - virtual void SetupToolboxPanel(int page_sel, wxNotebook* pnotebook); - virtual void OnCloseToolboxPanel(int page_sel, int ok_apply_cancel); - - virtual void ShowPreferencesDialog( wxWindow* parent ); - - virtual bool RenderOverlay(wxMemoryDC *pmdc, PlugIn_ViewPort *vp); - virtual void SetCursorLatLon(double lat, double lon); - virtual void SetCurrentViewPort(PlugIn_ViewPort &vp); - - virtual void SetPositionFix(PlugIn_Position_Fix &pfix); - virtual void SetNMEASentence(wxString &sentence); - virtual void SetAISSentence(wxString &sentence); - - virtual void ProcessParentResize(int x, int y); - virtual void SetColorScheme(PI_ColorScheme cs); - - virtual void OnToolbarToolCallback(int id); - virtual void OnContextMenuItemCallback(int id); - - virtual void UpdateAuiStatus(void); - - virtual wxArrayString GetDynamicChartClassNameArray(void); - }; - - - // the types of the class factories used to create PlugIn instances - typedef opencpn_plugin* create_t(void*); - typedef void destroy_t(opencpn_plugin*); - - class DECL_EXP opencpn_plugin_16 : public opencpn_plugin - { - public: - opencpn_plugin_16(void *pmgr); - virtual ~opencpn_plugin_16(); - - virtual bool RenderOverlay(wxDC &dc, PlugIn_ViewPort *vp); - - virtual void SetPluginMessage(wxString &message_id, wxString &message_body); - - }; - -class DECL_EXP opencpn_plugin_17 : public opencpn_plugin -{ - public: - opencpn_plugin_17(void *pmgr); - virtual ~opencpn_plugin_17(); - - virtual bool RenderOverlay(wxDC &dc, PlugIn_ViewPort *vp); - virtual bool RenderGLOverlay(wxGLContext *pcontext, PlugIn_ViewPort *vp); - - virtual void SetPluginMessage(wxString &message_id, wxString &message_body); - -}; - -class DECL_EXP opencpn_plugin_18 : public opencpn_plugin -{ - public: - opencpn_plugin_18(void *pmgr); - virtual ~opencpn_plugin_18(); - - virtual bool RenderOverlay(wxDC &dc, PlugIn_ViewPort *vp); - virtual bool RenderGLOverlay(wxGLContext *pcontext, PlugIn_ViewPort *vp); - - virtual void SetPluginMessage(wxString &message_id, wxString &message_body); - virtual void SetPositionFixEx(PlugIn_Position_Fix_Ex &pfix); - -}; - -class DECL_EXP opencpn_plugin_19 : public opencpn_plugin_18 -{ - public: - opencpn_plugin_19(void *pmgr); - virtual ~opencpn_plugin_19(); - - virtual void OnSetupOptions(void); -}; - -class DECL_EXP opencpn_plugin_110 : public opencpn_plugin_19 -{ - public: - opencpn_plugin_110(void *pmgr); - virtual ~opencpn_plugin_110(); - - virtual void LateInit(void); // If WANTS_LATE_INIT is returned by Init() -}; - -class DECL_EXP opencpn_plugin_111 : public opencpn_plugin_110 -{ -public: - opencpn_plugin_111(void *pmgr); - virtual ~opencpn_plugin_111(); - -}; - -class DECL_EXP opencpn_plugin_112 : public opencpn_plugin_111 -{ -public: - opencpn_plugin_112(void *pmgr); - virtual ~opencpn_plugin_112(); - - virtual bool MouseEventHook( wxMouseEvent &event ); - virtual void SendVectorChartObjectInfo(wxString &chart, wxString &feature, wxString &objname, double lat, double lon, double scale, int nativescale); - -}; - -class DECL_EXP opencpn_plugin_113 : public opencpn_plugin_112 -{ -public: - opencpn_plugin_113(void *pmgr); - virtual ~opencpn_plugin_113(); - - virtual bool KeyboardEventHook( wxKeyEvent &event ); - virtual void OnToolbarToolDownCallback(int id); - virtual void OnToolbarToolUpCallback(int id); -}; - -//------------------------------------------------------------------ -// Route and Waypoint PlugIn support -// -//------------------------------------------------------------------ - -class DECL_EXP Plugin_Hyperlink -{ -public: - wxString DescrText; - wxString Link; - wxString Type; -}; - -WX_DECLARE_LIST(Plugin_Hyperlink, Plugin_HyperlinkList); - - - -class DECL_EXP PlugIn_Waypoint -{ -public: - PlugIn_Waypoint(); - PlugIn_Waypoint(double lat, double lon, - const wxString& icon_ident, const wxString& wp_name, - const wxString& GUID = _T("") ); - ~PlugIn_Waypoint(); - - double m_lat; - double m_lon; - - wxString m_GUID; - - wxString m_MarkName; - wxString m_MarkDescription; - wxDateTime m_CreateTime; - bool m_IsVisible; - - wxString m_IconName; - - Plugin_HyperlinkList *m_HyperlinkList; - -}; - -WX_DECLARE_LIST(PlugIn_Waypoint, Plugin_WaypointList); - -class DECL_EXP PlugIn_Route -{ -public: - PlugIn_Route(void); - ~PlugIn_Route(void); - - wxString m_NameString; - wxString m_StartString; - wxString m_EndString; - wxString m_GUID; - - Plugin_WaypointList *pWaypointList; -}; - -class DECL_EXP PlugIn_Track -{ -public: - PlugIn_Track(void); - ~PlugIn_Track(void); - - wxString m_NameString; - wxString m_StartString; - wxString m_EndString; - wxString m_GUID; - - Plugin_WaypointList *pWaypointList; -}; - - - -//---------------------------------------------------------------------------------------------------------- -// The PlugIn CallBack API Definition -// -// The API back up to the PlugIn Manager -// PlugIns may call these static functions as necessary for system services -// -//---------------------------------------------------------------------------------------------------------- - - -extern "C" DECL_EXP int InsertPlugInTool(wxString label, wxBitmap *bitmap, wxBitmap *bmpRollover, wxItemKind kind, - wxString shortHelp, wxString longHelp, wxObject *clientData, int position, - int tool_sel, opencpn_plugin *pplugin); -extern "C" DECL_EXP void RemovePlugInTool(int tool_id); -extern "C" DECL_EXP void SetToolbarToolViz(int item, bool viz); // Temporarily change toolbar tool viz -extern "C" DECL_EXP void SetToolbarItemState(int item, bool toggle); -extern "C" DECL_EXP void SetToolbarToolBitmaps(int item, wxBitmap *bitmap, wxBitmap *bmpRollover); - -extern "C" DECL_EXP int InsertPlugInToolSVG(wxString label, wxString SVGfile, wxString SVGfileRollover, wxString SVGfileToggled, - wxItemKind kind, wxString shortHelp, wxString longHelp, - wxObject *clientData, int position, int tool_sel, opencpn_plugin *pplugin); -extern "C" DECL_EXP void SetToolbarToolBitmapsSVG(int item, wxString SVGfile, - wxString SVGfileRollover, - wxString SVGfileToggled ); - -extern "C" DECL_EXP int AddCanvasContextMenuItem(wxMenuItem *pitem, opencpn_plugin *pplugin ); -extern "C" DECL_EXP void RemoveCanvasContextMenuItem(int item); // Fully remove this item -extern "C" DECL_EXP void SetCanvasContextMenuItemViz(int item, bool viz); // Temporarily change context menu ptions -extern "C" DECL_EXP void SetCanvasContextMenuItemGrey(int item, bool grey); - - -extern "C" DECL_EXP wxFileConfig *GetOCPNConfigObject(void); - -extern "C" DECL_EXP void RequestRefresh(wxWindow *); -extern "C" DECL_EXP bool GetGlobalColor(wxString colorName, wxColour *pcolour); - -extern "C" DECL_EXP void GetCanvasPixLL(PlugIn_ViewPort *vp, wxPoint *pp, double lat, double lon); -extern "C" DECL_EXP void GetCanvasLLPix( PlugIn_ViewPort *vp, wxPoint p, double *plat, double *plon); - -extern "C" DECL_EXP wxWindow *GetOCPNCanvasWindow(); - -extern "C" DECL_EXP wxFont *OCPNGetFont(wxString TextElement, int default_size); - -extern "C" DECL_EXP wxString *GetpSharedDataLocation(); - -extern "C" DECL_EXP ArrayOfPlugIn_AIS_Targets *GetAISTargetArray(void); - -extern "C" DECL_EXP wxAuiManager *GetFrameAuiManager(void); - -extern "C" DECL_EXP bool AddLocaleCatalog( wxString catalog ); - -extern "C" DECL_EXP void PushNMEABuffer( wxString str ); - -extern DECL_EXP wxXmlDocument GetChartDatabaseEntryXML(int dbIndex, bool b_getGeom); - -extern DECL_EXP bool UpdateChartDBInplace(wxArrayString dir_array, - bool b_force_update, - bool b_ProgressDialog); -extern DECL_EXP wxArrayString GetChartDBDirArrayString(); - -extern "C" DECL_EXP void SendPluginMessage( wxString message_id, wxString message_body ); - -extern "C" DECL_EXP void DimeWindow(wxWindow *); - -extern "C" DECL_EXP void JumpToPosition(double lat, double lon, double scale); - -/* API 1.9 adds some common cartographic functions to avoid unnecessary code duplication */ -/* Study the original OpenCPN source (georef.c) for functional definitions */ - -extern "C" DECL_EXP void PositionBearingDistanceMercator_Plugin(double lat, double lon, double brg, double dist, double *dlat, double *dlon); -extern "C" DECL_EXP void DistanceBearingMercator_Plugin(double lat0, double lon0, double lat1, double lon1, double *brg, double *dist); -extern "C" DECL_EXP double DistGreatCircle_Plugin(double slat, double slon, double dlat, double dlon); - -extern "C" DECL_EXP void toTM_Plugin(float lat, float lon, float lat0, float lon0, double *x, double *y); -extern "C" DECL_EXP void fromTM_Plugin(double x, double y, double lat0, double lon0, double *lat, double *lon); -extern "C" DECL_EXP void toSM_Plugin(double lat, double lon, double lat0, double lon0, double *x, double *y); -extern "C" DECL_EXP void fromSM_Plugin(double x, double y, double lat0, double lon0, double *lat, double *lon); -extern "C" DECL_EXP void toSM_ECC_Plugin(double lat, double lon, double lat0, double lon0, double *x, double *y); -extern "C" DECL_EXP void fromSM_ECC_Plugin(double x, double y, double lat0, double lon0, double *lat, double *lon); - -extern "C" DECL_EXP bool DecodeSingleVDOMessage( const wxString& str, PlugIn_Position_Fix_Ex *pos, wxString *acc ); -extern "C" DECL_EXP int GetChartbarHeight( void ); -extern "C" DECL_EXP bool GetActiveRoutepointGPX( char *buffer, unsigned int buffer_length ); - - - -/* API 1.9 */ -typedef enum OptionsParentPI -{ - PI_OPTIONS_PARENT_DISPLAY, - PI_OPTIONS_PARENT_CONNECTIONS, - PI_OPTIONS_PARENT_CHARTS, - PI_OPTIONS_PARENT_SHIPS, - PI_OPTIONS_PARENT_UI, - PI_OPTIONS_PARENT_PLUGINS -}_OptionsParentPI; -extern DECL_EXP wxScrolledWindow *AddOptionsPage( OptionsParentPI parent, wxString title ); -extern DECL_EXP bool DeleteOptionsPage( wxScrolledWindow* page ); - - -/* API 1.10 */ - -/* API 1.10 adds some common functions to avoid unnecessary code duplication */ -/* Study the original OpenCPN source for functional definitions */ -extern "C" DECL_EXP double toUsrDistance_Plugin( double nm_distance, int unit = -1 ); -extern "C" DECL_EXP double fromUsrDistance_Plugin( double usr_distance, int unit = -1 ); -extern "C" DECL_EXP double toUsrSpeed_Plugin( double kts_speed, int unit = -1 ); -extern "C" DECL_EXP double fromUsrSpeed_Plugin( double usr_speed, int unit = -1 ); -extern DECL_EXP wxString getUsrDistanceUnit_Plugin( int unit = -1 ); -extern DECL_EXP wxString getUsrSpeedUnit_Plugin( int unit = -1 ); -extern DECL_EXP wxString GetNewGUID(); -extern "C" DECL_EXP bool PlugIn_GSHHS_CrossesLand(double lat1, double lon1, double lat2, double lon2); -extern DECL_EXP void PlugInPlaySound( wxString &sound_file ); - - - - -// API 1.10 Route and Waypoint Support -extern DECL_EXP wxBitmap *FindSystemWaypointIcon( wxString& icon_name ); -extern DECL_EXP bool AddCustomWaypointIcon( wxBitmap *pimage, wxString key, wxString description ); - -extern DECL_EXP bool AddSingleWaypoint( PlugIn_Waypoint *pwaypoint, bool b_permanent = true); -extern DECL_EXP bool DeleteSingleWaypoint( wxString &GUID ); -extern DECL_EXP bool UpdateSingleWaypoint( PlugIn_Waypoint *pwaypoint ); - -extern DECL_EXP bool AddPlugInRoute( PlugIn_Route *proute, bool b_permanent = true ); -extern DECL_EXP bool DeletePlugInRoute( wxString& GUID ); -extern DECL_EXP bool UpdatePlugInRoute ( PlugIn_Route *proute ); - -extern DECL_EXP bool AddPlugInTrack( PlugIn_Track *ptrack, bool b_permanent = true ); -extern DECL_EXP bool DeletePlugInTrack( wxString& GUID ); -extern DECL_EXP bool UpdatePlugInTrack ( PlugIn_Track *ptrack ); - -/* API 1.11 */ - -/* API 1.11 adds some more common functions to avoid unnecessary code duplication */ -wxColour DECL_EXP GetBaseGlobalColor(wxString colorName); -int DECL_EXP OCPNMessageBox_PlugIn(wxWindow *parent, - const wxString& message, - const wxString& caption = _T("Message"), - int style = wxOK, int x = -1, int y = -1); - -extern DECL_EXP wxString toSDMM_PlugIn(int NEflag, double a, bool hi_precision = true); - -extern "C" DECL_EXP wxString *GetpPrivateApplicationDataLocation(); -extern DECL_EXP wxString GetOCPN_ExePath( void ); -extern "C" DECL_EXP wxString *GetpPlugInLocation(); -extern DECL_EXP wxString GetPlugInPath(opencpn_plugin *pplugin); - -extern "C" DECL_EXP int AddChartToDBInPlace( wxString &full_path, bool b_RefreshCanvas ); -extern "C" DECL_EXP int RemoveChartFromDBInPlace( wxString &full_path ); -extern DECL_EXP wxString GetLocaleCanonicalName(); - -// API 1.11 adds access to S52 Presentation library -//Types - -// A flag field that defines the object capabilities passed by a chart to the S52 PLIB - -#define PLIB_CAPS_LINE_VBO 1 -#define PLIB_CAPS_LINE_BUFFER 1 << 1 -#define PLIB_CAPS_SINGLEGEO_BUFFER 1 << 2 -#define PLIB_CAPS_OBJSEGLIST 1 << 3 -#define PLIB_CAPS_OBJCATMUTATE 1 << 4 - - -class PI_S57Obj; - -WX_DECLARE_LIST(PI_S57Obj, ListOfPI_S57Obj); - -// ---------------------------------------------------------------------------- -// PlugInChartBaseGL -// Derived from PlugInChartBase, add OpenGL Vector chart support -// ---------------------------------------------------------------------------- - -class DECL_EXP PlugInChartBaseGL : public PlugInChartBase -{ -public: - PlugInChartBaseGL(); - virtual ~PlugInChartBaseGL(); - - virtual int RenderRegionViewOnGL( const wxGLContext &glc, const PlugIn_ViewPort& VPoint, - const wxRegion &Region, bool b_use_stencil ); - - virtual ListOfPI_S57Obj *GetObjRuleListAtLatLon(float lat, float lon, float select_radius, PlugIn_ViewPort *VPoint); - virtual wxString CreateObjDescriptions( ListOfPI_S57Obj* obj_list ); - - virtual int GetNoCOVREntries(); - virtual int GetNoCOVRTablePoints(int iTable); - virtual int GetNoCOVRTablenPoints(int iTable); - virtual float *GetNoCOVRTableHead(int iTable); - -}; - - - - - - - -class wxArrayOfS57attVal; - -// name of the addressed look up table set (fifth letter) -typedef enum _PI_LUPname{ - PI_SIMPLIFIED = 'L', // points - PI_PAPER_CHART = 'R', // points - PI_LINES = 'S', // lines - PI_PLAIN_BOUNDARIES = 'N', // areas - PI_SYMBOLIZED_BOUNDARIES = 'O', // areas - PI_LUPNAME_NUM = 5 -}PI_LUPname; - -// display category type -typedef enum _PI_DisCat{ - PI_DISPLAYBASE = 'D', // - PI_STANDARD = 'S', // - PI_OTHER = 'O', // O for OTHER - PI_MARINERS_STANDARD = 'M', // Mariner specified - PI_MARINERS_OTHER, // value not defined - PI_DISP_CAT_NUM, // value not defined -}PI_DisCat; - -// Display Priority -typedef enum _PI_DisPrio{ - PI_PRIO_NODATA = '0', // no data fill area pattern - PI_PRIO_GROUP1 = '1', // S57 group 1 filled areas - PI_PRIO_AREA_1 = '2', // superimposed areas - PI_PRIO_AREA_2 = '3', // superimposed areas also water features - PI_PRIO_SYMB_POINT = '4', // point symbol also land features - PI_PRIO_SYMB_LINE = '5', // line symbol also restricted areas - PI_PRIO_SYMB_AREA = '6', // area symbol also traffic areas - PI_PRIO_ROUTEING = '7', // routeing lines - PI_PRIO_HAZARDS = '8', // hazards - PI_PRIO_MARINERS = '9', // VRM, EBL, own ship - PI_PRIO_NUM = 10 // number of priority levels - -}PI_DisPrio; - -typedef enum PI_InitReturn -{ - PI_INIT_OK = 0, - PI_INIT_FAIL_RETRY, // Init failed, retry suggested - PI_INIT_FAIL_REMOVE, // Init failed, suggest remove from further use - PI_INIT_FAIL_NOERROR // Init failed, request no explicit error message -}_PI_InitReturn; - -class PI_line_segment_element -{ -public: - size_t vbo_offset; - size_t n_points; - int priority; - float lat_max; // segment bounding box - float lat_min; - float lon_max; - float lon_min; - int type; - void *private0; - - PI_line_segment_element *next; -}; - - -class DECL_EXP PI_S57Obj -{ -public: - - // Public Methods - PI_S57Obj(); - ~PI_S57Obj(); - -public: - // Instance Data - char FeatureName[8]; - int Primitive_type; - - char *att_array; - wxArrayOfS57attVal *attVal; - int n_attr; - - int iOBJL; - int Index; - - double x; // for POINT - double y; - double z; - int npt; // number of points as needed by arrays - void *geoPt; // for LINE & AREA not described by PolyTessGeo - double *geoPtz; // an array[3] for MultiPoint, SM with Z, i.e. depth - double *geoPtMulti; // an array[2] for MultiPoint, lat/lon to make bbox - // of decomposed points - - void *pPolyTessGeo; - - double m_lat; // The lat/lon of the object's "reference" point - double m_lon; - - double chart_ref_lat; - double chart_ref_lon; - - double lat_min; - double lat_max; - double lon_min; - double lon_max; - - int Scamin; // SCAMIN attribute decoded during load - - bool bIsClone; - int nRef; // Reference counter, to signal OK for deletion - - bool bIsAton; // This object is an aid-to-navigation - bool bIsAssociable; // This object is DRGARE or DEPARE - - int m_n_lsindex; - int *m_lsindex_array; - int m_n_edge_max_points; - void *m_chart_context; - - PI_DisCat m_DisplayCat; - - void * S52_Context; - PI_S57Obj *child; // child list, used only for MultiPoint Soundings - - PI_S57Obj *next; // List linkage - - // This transform converts from object geometry - // to SM coordinates. - double x_rate; // These auxiliary transform coefficients are - double y_rate; // to be used in GetPointPix() and friends - double x_origin; // on a per-object basis if necessary - double y_origin; - - int auxParm0; // some per-object auxiliary parameters, used for OpenGL - int auxParm1; - int auxParm2; - int auxParm3; - - PI_line_segment_element *m_ls_list; - bool m_bcategory_mutable; - int m_DPRI; -}; - - - -wxString DECL_EXP PI_GetPLIBColorScheme(); -int DECL_EXP PI_GetPLIBDepthUnitInt(); -int DECL_EXP PI_GetPLIBSymbolStyle(); -int DECL_EXP PI_GetPLIBBoundaryStyle(); -int DECL_EXP PI_GetPLIBStateHash(); -double DECL_EXP PI_GetPLIBMarinerSafetyContour(); -bool DECL_EXP PI_GetObjectRenderBox( PI_S57Obj *pObj, double *lat_min, double *lat_max, double *lon_min, double *lon_max); -void DECL_EXP PI_UpdateContext(PI_S57Obj *pObj); - -bool DECL_EXP PI_PLIBObjectRenderCheck( PI_S57Obj *pObj, PlugIn_ViewPort *vp ); -PI_LUPname DECL_EXP PI_GetObjectLUPName( PI_S57Obj *pObj ); -PI_DisPrio DECL_EXP PI_GetObjectDisplayPriority( PI_S57Obj *pObj ); -PI_DisCat DECL_EXP PI_GetObjectDisplayCategory( PI_S57Obj *pObj ); -void DECL_EXP PI_PLIBSetLineFeaturePriority( PI_S57Obj *pObj, int prio ); -void DECL_EXP PI_PLIBPrepareForNewRender(void); -void DECL_EXP PI_PLIBFreeContext( void *pContext ); -void DECL_EXP PI_PLIBSetRenderCaps( unsigned int flags ); - -bool DECL_EXP PI_PLIBSetContext( PI_S57Obj *pObj ); - -int DECL_EXP PI_PLIBRenderObjectToDC( wxDC *pdc, PI_S57Obj *pObj, PlugIn_ViewPort *vp ); -int DECL_EXP PI_PLIBRenderAreaToDC( wxDC *pdc, PI_S57Obj *pObj, PlugIn_ViewPort *vp, wxRect rect, unsigned char *pixbuf ); - - -int DECL_EXP PI_PLIBRenderAreaToGL( const wxGLContext &glcc, PI_S57Obj *pObj, - PlugIn_ViewPort *vp, wxRect &render_rect ); - -int DECL_EXP PI_PLIBRenderObjectToGL( const wxGLContext &glcc, PI_S57Obj *pObj, - PlugIn_ViewPort *vp, wxRect &render_rect ); - -/* API 1.11 OpenGL Display List and vertex buffer object routines - - Effectively these two routines cancel each other so all - of the translation, scaling and rotation can be done by opengl. - - Display lists need only be built infrequently, but used in each frame - greatly accelerates the speed of rendering. This avoids costly calculations, - and also allows the vertexes to be stored in graphics memory. - - static int dl = 0; - glPushMatrix(); - PlugInMultMatrixViewport(current_viewport); - if(dl) - glCallList(dl); - else { - dl = glGenLists(1); - PlugInViewPort norm_viewport = current_viewport; - NormalizeViewPort(norm_viewport); - glNewList(dl, GL_COMPILE_AND_EXECUTE); - ... // use norm_viewport with GetCanvasLLPix here - glEndList(); - } - glPopMatrix(); - ... // use current_viewport with GetCanvasLLPix again -*/ - -extern DECL_EXP bool PlugInHasNormalizedViewPort ( PlugIn_ViewPort *vp ); -extern DECL_EXP void PlugInMultMatrixViewport ( PlugIn_ViewPort *vp, float lat=0, float lon=0 ); -extern DECL_EXP void PlugInNormalizeViewport ( PlugIn_ViewPort *vp, float lat=0, float lon=0 ); - -class wxPoint2DDouble; -extern "C" DECL_EXP void GetDoubleCanvasPixLL(PlugIn_ViewPort *vp, wxPoint2DDouble *pp, double lat, double lon); - -/* API 1.13 */ -/* API 1.13 adds some more common functions to avoid unnecessary code duplication */ - - -extern DECL_EXP double fromDMM_Plugin( wxString sdms ); -extern DECL_EXP void SetCanvasRotation(double rotation); -extern DECL_EXP void SetCanvasProjection(int projection); -extern DECL_EXP bool GetSingleWaypoint( wxString GUID, PlugIn_Waypoint *pwaypoint ); -extern DECL_EXP bool CheckEdgePan_PlugIn( int x, int y, bool dragging, int margin, int delta ); -extern DECL_EXP wxBitmap GetIcon_PlugIn(const wxString & name); -extern DECL_EXP void SetCursor_PlugIn( wxCursor *pPlugin_Cursor = NULL ); -extern DECL_EXP wxFont *GetOCPNScaledFont_PlugIn(wxString TextElement, int default_size = 0); -extern DECL_EXP wxFont GetOCPNGUIScaledFont_PlugIn(wxString item); -extern DECL_EXP double GetOCPNGUIToolScaleFactor_PlugIn(int GUIScaledFactor); -extern DECL_EXP double GetOCPNGUIToolScaleFactor_PlugIn(); -extern DECL_EXP float GetOCPNChartScaleFactor_Plugin(); -extern DECL_EXP wxColour GetFontColour_PlugIn(wxString TextElement); - -extern DECL_EXP double GetCanvasTilt(); -extern DECL_EXP void SetCanvasTilt(double tilt); - -extern DECL_EXP bool PlugInPlaySoundEx( wxString &sound_file, int deviceIndex=-1 ); -extern DECL_EXP void AddChartDirectory( wxString &path ); -extern DECL_EXP void ForceChartDBUpdate(); - -extern DECL_EXP wxString GetWritableDocumentsDir( void ); -extern DECL_EXP wxDialog *GetActiveOptionsDialog(); -extern DECL_EXP wxArrayString GetWaypointGUIDArray( void ); - -extern DECL_EXP bool AddPersistentFontKey(wxString TextElement); -extern DECL_EXP wxString GetActiveStyleName(); - -extern DECL_EXP wxBitmap GetBitmapFromSVGFile(wxString filename, unsigned int width, unsigned int height); -extern DECL_EXP bool IsTouchInterface_PlugIn(void); - -/* Platform optimized File/Dir selector dialogs */ -extern DECL_EXP int PlatformDirSelectorDialog( wxWindow *parent, wxString *file_spec, wxString Title, wxString initDir); - -extern DECL_EXP int PlatformFileSelectorDialog( wxWindow *parent, wxString *file_spec, wxString Title, wxString initDir, - wxString suggestedName, wxString wildcard); - - -/* OpenCPN HTTP File Download PlugIn Interface */ - -/* Various method Return Codes, etc */ -typedef enum _OCPN_DLStatus{ - OCPN_DL_UNKNOWN =-1, - OCPN_DL_NO_ERROR = 0, - OCPN_DL_FAILED = 1, - OCPN_DL_ABORTED = 2, - OCPN_DL_USER_TIMEOUT = 4, - OCPN_DL_STARTED = 8 -}OCPN_DLStatus; - - -typedef enum _OCPN_DLCondition{ - OCPN_DL_EVENT_TYPE_UNKNOWN = -1, - OCPN_DL_EVENT_TYPE_START = 80, - OCPN_DL_EVENT_TYPE_PROGRESS = 81, - OCPN_DL_EVENT_TYPE_END = 82 -}OCPN_DLCondition; - -// Style definitions for Synchronous file download modal dialogs, if desired. -// Abstracted from wxCURL package -enum OCPN_DLDialogStyle -{ - OCPN_DLDS_ELAPSED_TIME = 0x0001, //!< The dialog shows the elapsed time. - OCPN_DLDS_ESTIMATED_TIME = 0x0002, //!< The dialog shows the estimated total time. - OCPN_DLDS_REMAINING_TIME = 0x0004, //!< The dialog shows the remaining time. - OCPN_DLDS_SPEED = 0x0008, //!< The dialog shows the transfer speed. - OCPN_DLDS_SIZE = 0x0010, //!< The dialog shows the size of the resource to download/upload. - OCPN_DLDS_URL = 0x0020, //!< The dialog shows the URL involved in the transfer. - - // styles related to the use of wxCurlConnectionSettingsDialog: - - OCPN_DLDS_CONN_SETTINGS_AUTH = 0x0040, //!< The dialog allows the user to change the authentication settings. - OCPN_DLDS_CONN_SETTINGS_PORT = 0x0080, //!< The dialog allows the user to change the port for the transfer. - OCPN_DLDS_CONN_SETTINGS_PROXY = 0x0100, //!< The dialog allows the user to change the proxy settings. - - OCPN_DLDS_CONN_SETTINGS_ALL = OCPN_DLDS_CONN_SETTINGS_AUTH|OCPN_DLDS_CONN_SETTINGS_PORT|OCPN_DLDS_CONN_SETTINGS_PROXY, - - OCPN_DLDS_SHOW_ALL =OCPN_DLDS_ELAPSED_TIME|OCPN_DLDS_ESTIMATED_TIME|OCPN_DLDS_REMAINING_TIME| - OCPN_DLDS_SPEED|OCPN_DLDS_SIZE|OCPN_DLDS_URL|OCPN_DLDS_CONN_SETTINGS_ALL, - - OCPN_DLDS_CAN_ABORT = 0x0200, //!< The transfer can be aborted by the user. - OCPN_DLDS_CAN_START = 0x0400, //!< The transfer won't start automatically. The user needs to start it. - OCPN_DLDS_CAN_PAUSE = 0x0800, //!< The transfer can be paused. - - OCPN_DLDS_AUTO_CLOSE = 0x1000, //!< The dialog auto closes when transfer is complete. - - // by default all available features are enabled: - OCPN_DLDS_DEFAULT_STYLE = OCPN_DLDS_CAN_START|OCPN_DLDS_CAN_PAUSE|OCPN_DLDS_CAN_ABORT|OCPN_DLDS_SHOW_ALL|OCPN_DLDS_AUTO_CLOSE -}; - -#define ONLINE_CHECK_RETRY 30 // Recheck the Internet connection availability every ONLINE_CHECK_RETRY s - -/* Synchronous (Blocking) download of a single file */ - -extern DECL_EXP _OCPN_DLStatus OCPN_downloadFile( const wxString& url, const wxString &outputFile, - const wxString &title, const wxString &message, - const wxBitmap& bitmap, - wxWindow *parent, long style, int timeout_secs); - - -/* Asynchronous (Background) download of a single file */ - -extern DECL_EXP _OCPN_DLStatus OCPN_downloadFileBackground( const wxString& url, const wxString &outputFile, - wxEvtHandler *handler, long *handle); - -extern DECL_EXP void OCPN_cancelDownloadFileBackground( long handle ); - -/* Synchronous (Blocking) HTTP POST operation for small amounts of data */ - -extern DECL_EXP _OCPN_DLStatus OCPN_postDataHttp( const wxString& url, const wxString& parameters, wxString& result, int timeout_secs ); - -/* Check whether connection to the Internet is working */ - -extern DECL_EXP bool OCPN_isOnline(); - -/* Supporting Event for Background downloading */ -/* OCPN_downloadEvent Definition */ - -/* PlugIn should be ready/able to handle this event after initiating a background file transfer - * - * The event as received should be parsed primarily by the getDLEventCondition() method. - * This will allow identification of download start, progress, and end states. - * - * Other accessor methods contain status, byte counts, etc. - * - * A PlugIn may safely destroy its EvtHandler after receipt of an OCPN_downloadEvent with - * getDLEventCondition == OCPN_DL_EVENT_TYPE_END - */ - -class DECL_EXP OCPN_downloadEvent: public wxEvent -{ -public: - OCPN_downloadEvent( wxEventType commandType = wxEVT_NULL, int id = 0 ); - ~OCPN_downloadEvent( ); - - // accessors - _OCPN_DLStatus getDLEventStatus(){ return m_stat; } - OCPN_DLCondition getDLEventCondition(){ return m_condition; } - - void setDLEventStatus( _OCPN_DLStatus stat ){ m_stat = stat; } - void setDLEventCondition( OCPN_DLCondition cond ){ m_condition = cond; } - - void setTotal( long bytes ){m_totalBytes = bytes; } - void setTransferred( long bytes ){m_sofarBytes = bytes; } - long getTotal(){ return m_totalBytes; } - long getTransferred(){ return m_sofarBytes; } - - void setComplete(bool b_complete){ m_b_complete = b_complete; } - bool getComplete(){ return m_b_complete; } - - - // required for sending with wxPostEvent() - wxEvent *Clone() const; - -private: - OCPN_DLStatus m_stat; - OCPN_DLCondition m_condition; - - long m_totalBytes; - long m_sofarBytes; - bool m_b_complete; -}; - -//DECLARE_EVENT_TYPE(wxEVT_DOWNLOAD_EVENT, -1) -//extern const wxEventType DECL_EXP wxEVT_DOWNLOAD_EVENT; - -extern WXDLLIMPEXP_CORE const wxEventType wxEVT_DOWNLOAD_EVENT; - -#endif //_PLUGIN_H_ diff --git a/src/plugingl/TexFont.cpp b/src/plugingl/TexFont.cpp deleted file mode 100644 index a420d99..0000000 --- a/src/plugingl/TexFont.cpp +++ /dev/null @@ -1,413 +0,0 @@ -/*************************************************************************** - * - * Project: OpenCPN - * Purpose: texture OpenGL text rendering built from wxFont - * Author: Sean D'Epagnier - * - *************************************************************************** - * Copyright (C) 2014 Sean D'Epagnier * - * * - * This program is free software; you can redistribute it and/or modify * - * it under the terms of the GNU General Public License as published by * - * the Free Software Foundation; either version 2 of the License, or * - * (at your option) any later version. * - * * - * This program is distributed in the hope that it will be useful, * - * but WITHOUT ANY WARRANTY; without even the implied warranty of * - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * - * GNU General Public License for more details. * - * * - * You should have received a copy of the GNU General Public License * - * along with this program; if not, write to the * - * Free Software Foundation, Inc., * - * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * - **************************************************************************/ -#include -// #include -// #include - -#ifdef __OCPN__ANDROID__ -#include "qdebug.h" -#endif - -#include "TexFont.h" - -#if ocpnUSE_GL - -#ifdef USE_ANDROID_GLES2 -#include "GLES2/gl2.h" -#include "linmath.h" -#include "pi_shaders.h" -#else -#include "GL/gl.h" -#endif - -TexFont::TexFont( ) -{ - texobj = 0; - m_blur = false; - m_built = false; - m_color = wxColor(0,0,0); -} - -TexFont::~TexFont( ) -{ - Delete( ); -} - - -void TexFont::Build( wxFont &font, bool blur ) -{ - /* avoid rebuilding if the parameters are the same */ - if(font == m_font && blur == m_blur) - return; - - m_font = font; - m_blur = blur; - - m_maxglyphw = 0; - m_maxglyphh = 0; - - wxScreenDC sdc; - - sdc.SetFont( font ); - - for( int i = MIN_GLYPH; i < MAX_GLYPH; i++ ) { - wxCoord gw, gh; - wxString text; - if(i == DEGREE_GLYPH) - text = wxString::Format(_T("%c"), 0x00B0); //_T("°"); - else - text = wxString::Format(_T("%c"), i); - wxCoord descent, exlead; - sdc.GetTextExtent( text, &gw, &gh, &descent, &exlead, &font ); // measure the text - - tgi[i].width = gw; - tgi[i].height = gh; - - tgi[i].advance = gw; - - - m_maxglyphw = wxMax(tgi[i].width, m_maxglyphw); - m_maxglyphh = wxMax(tgi[i].height, m_maxglyphh); - } - - /* add extra pixel to give a border between rows of characters - without this, in some cases a faint line can be see on the edge - from the character above */ - m_maxglyphh++; - - int w = COLS_GLYPHS * m_maxglyphw; - int h = ROWS_GLYPHS * m_maxglyphh; - - wxASSERT(w < 2048 && h < 2048); - - /* make power of 2 */ - for(tex_w = 1; tex_w < w; tex_w *= 2); - for(tex_h = 1; tex_h < h; tex_h *= 2); - - wxBitmap tbmp(tex_w, tex_h); - wxMemoryDC dc; - dc.SelectObject(tbmp); - dc.SetFont( font ); - - /* fill bitmap with black */ - dc.SetBackground( wxBrush( wxColour( 0, 0, 0 ) ) ); - dc.Clear(); - - /* draw the text white */ - dc.SetTextForeground( wxColour( 255, 255, 255 ) ); - - /* wxPen pen(wxColour( 255, 255, 255 )); - wxBrush brush(wxColour( 255, 255, 255 ), wxTRANSPARENT); - dc.SetPen(pen); - dc.SetBrush(brush); - */ - int row = 0, col = 0; - for( int i = MIN_GLYPH; i < MAX_GLYPH; i++ ) { - if(col == COLS_GLYPHS) { - col = 0; - row++; - } - - tgi[i].x = col * m_maxglyphw; - tgi[i].y = row * m_maxglyphh; - - wxString text; - if(i == DEGREE_GLYPH) - text = wxString::Format(_T("%c"), 0x00B0); //_T("°"); - else - text = wxString::Format(_T("%c"), i); - - dc.DrawText(text, tgi[i].x, tgi[i].y ); - -// dc.DrawRectangle(tgi[i].x, tgi[i].y, tgi[i].advance, tgi[i].height); - col++; - } - - dc.SelectObject(wxNullBitmap); - - wxImage image = tbmp.ConvertToImage(); - - GLuint format, internalformat; - int stride; - - format = GL_ALPHA; - internalformat = format; - stride = 1; - - if( m_blur ) - image = image.Blur(1); - - unsigned char *imgdata = image.GetData(); - - if(imgdata){ - unsigned char *teximage = (unsigned char *) malloc( stride * tex_w * tex_h ); - - for( int j = 0; j < tex_w*tex_h; j++ ) - for( int k = 0; k < stride; k++ ) - teximage[j * stride + k] = imgdata[3*j]; - - Delete(); - - glGenTextures( 1, &texobj ); - glBindTexture( GL_TEXTURE_2D, texobj ); - - glTexParameteri( GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_REPEAT ); - glTexParameteri( GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_REPEAT ); - glTexParameteri( GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST/*GL_LINEAR*/ ); - glTexParameteri( GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST ); - - glTexImage2D( GL_TEXTURE_2D, 0, internalformat, tex_w, tex_h, 0, - format, GL_UNSIGNED_BYTE, teximage ); - - free(teximage); - } - - m_built = true; -} - -void TexFont::Delete( ) -{ - if (texobj) { - glDeleteTextures(1, &texobj); - texobj = 0; - } -} - -void TexFont::GetTextExtent(const char *string, int *width, int *height) -{ - int w=0, h=0; - - for(int i = 0; string[i]; i++ ) { - unsigned char c = string[i]; - if(c == '\n') { - h += tgi[(int)'A'].height; - continue; - } - if(c == 0xc2 && (unsigned char)string[i+1] == 0xb0) { - c = DEGREE_GLYPH; - i++; - } - if( c < MIN_GLYPH || c >= MAX_GLYPH) - continue; - - TexGlyphInfo &tgisi = tgi[c]; - w += tgisi.advance; - if(tgisi.height > h) - h = tgisi.height; - } - if(width) *width = w; - if(height) *height = h; -} - -void TexFont::GetTextExtent(const wxString &string, int *width, int *height) -{ - GetTextExtent((const char*)string.ToUTF8(), width, height); -} - -void TexFont::RenderGlyph( int c ) -{ - - if( c < MIN_GLYPH || c >= MAX_GLYPH) - return; - - TexGlyphInfo &tgic = tgi[c]; - - int x = tgic.x, y = tgic.y; - float w = m_maxglyphw, h = m_maxglyphh; - float tx1 = (float)x / (float)tex_w; - float tx2 = (float)(x + w) / (float)tex_w; - float ty1 = (float)y / (float)tex_h; - float ty2 = (float)(y + h) / (float)tex_h; - -#ifndef USE_ANDROID_GLES2 - - glBegin( GL_QUADS ); - - glTexCoord2f( tx1, ty1 ); glVertex2i( 0, 0 ); - glTexCoord2f( tx2, ty1 ); glVertex2i( w, 0 ); - glTexCoord2f( tx2, ty2 ); glVertex2i( w, h ); - glTexCoord2f( tx1, ty2 ); glVertex2i( 0, h ); - - glEnd(); - glTranslatef( tgic.advance, 0.0, 0.0 ); -#else - - float uv[8]; - float coords[8]; - - //normal uv - uv[0] = tx1; uv[1] = ty1; uv[2] = tx2; uv[3] = ty1; - uv[4] = tx2; uv[5] = ty2; uv[6] = tx1; uv[7] = ty2; - - // pixels - coords[0] = 0; coords[1] = 0; coords[2] = w; coords[3] = 0; - coords[4] = w; coords[5] = h; coords[6] = 0; coords[7] = h; - - glUseProgram( pi_texture_text_shader_program ); - - // Get pointers to the attributes in the program. - GLint mPosAttrib = glGetAttribLocation( pi_texture_text_shader_program, "aPos" ); - GLint mUvAttrib = glGetAttribLocation( pi_texture_text_shader_program, "aUV" ); - - // Set up the texture sampler to texture unit 0 - GLint texUni = glGetUniformLocation( pi_texture_text_shader_program, "uTex" ); - glUniform1i( texUni, 0 ); - - // Disable VBO's (vertex buffer objects) for attributes. - glBindBuffer( GL_ARRAY_BUFFER, 0 ); - glBindBuffer( GL_ELEMENT_ARRAY_BUFFER, 0 ); - - // Set the attribute mPosAttrib with the vertices in the screen coordinates... - glVertexAttribPointer( mPosAttrib, 2, GL_FLOAT, GL_FALSE, 0, coords ); - // ... and enable it. - glEnableVertexAttribArray( mPosAttrib ); - - float colorv[4]; - colorv[0] = m_color.Red() / 255.0f; - colorv[1] = m_color.Green() / 255.0f; - colorv[2] = m_color.Blue() / 255.0f; - colorv[3] = m_color.Alpha() / 255.0f; - - GLint colloc = glGetUniformLocation(pi_texture_text_shader_program, "color"); - glUniform4fv(colloc, 1, colorv); - - // Set the attribute mUvAttrib with the vertices in the GL coordinates... - glVertexAttribPointer( mUvAttrib, 2, GL_FLOAT, GL_FALSE, 0, uv ); - // ... and enable it. - glEnableVertexAttribArray( mUvAttrib ); - - // Rotate - float angle = 0; - mat4x4 I, Q; - mat4x4_identity(I); - mat4x4_rotate_Z(Q, I, angle); - - // Translate - Q[3][0] = m_dx; - Q[3][1] = m_dy; - - GLint matloc = glGetUniformLocation(pi_texture_text_shader_program, "TransformMatrix"); - glUniformMatrix4fv( matloc, 1, GL_FALSE, (const GLfloat*)Q); - - // Select the active texture unit. - glActiveTexture( GL_TEXTURE0 ); - - // For some reason, glDrawElements is busted on Android - // So we do this a hard ugly way, drawing two triangles... - #if 0 - GLushort indices1[] = {0,1,3,2}; - glDrawElements(GL_TRIANGLE_STRIP, 4, GL_UNSIGNED_SHORT, indices1); - #else - - float co1[8]; - co1[0] = coords[0]; - co1[1] = coords[1]; - co1[2] = coords[2]; - co1[3] = coords[3]; - co1[4] = coords[6]; - co1[5] = coords[7]; - co1[6] = coords[4]; - co1[7] = coords[5]; - - float tco1[8]; - tco1[0] = uv[0]; - tco1[1] = uv[1]; - tco1[2] = uv[2]; - tco1[3] = uv[3]; - tco1[4] = uv[6]; - tco1[5] = uv[7]; - tco1[6] = uv[4]; - tco1[7] = uv[5]; - - glVertexAttribPointer( mPosAttrib, 2, GL_FLOAT, GL_FALSE, 0, co1 ); - glVertexAttribPointer( mUvAttrib, 2, GL_FLOAT, GL_FALSE, 0, tco1 ); - - glDrawArrays(GL_TRIANGLE_STRIP, 0, 4); - - #endif - m_dx += tgic.advance; -#endif -} - -void TexFont::RenderString( const char *string, int x, int y ) -{ - -#ifndef USE_ANDROID_GLES2 - - glPushMatrix(); - glTranslatef(x, y, 0); - - glPushMatrix(); - glBindTexture( GL_TEXTURE_2D, texobj); - - for( int i = 0; string[i]; i++ ) { - if(string[i] == '\n') { - glPopMatrix(); - glTranslatef(0, tgi[(int)'A'].height, 0); - glPushMatrix(); - continue; - } - /* degree symbol */ - if((unsigned char)string[i] == 0xc2 && - (unsigned char)string[i+1] == 0xb0) { - RenderGlyph( DEGREE_GLYPH ); - i++; - continue; - } - RenderGlyph( string[i] ); - } - - glPopMatrix(); - glPopMatrix(); -#else - m_dx = x; - m_dy = y; - - glBindTexture( GL_TEXTURE_2D, texobj); - - for( int i = 0; string[i]; i++ ) { - if(string[i] == '\n') { - m_dy += tgi[(int)'A'].height; - continue; - } - /* degree symbol */ - if((unsigned char)string[i] == 0xc2 && - (unsigned char)string[i+1] == 0xb0) { - RenderGlyph( DEGREE_GLYPH ); - i++; - continue; - } - RenderGlyph( string[i] ); - } - -#endif -} - -void TexFont::RenderString( const wxString &string, int x, int y ) -{ - RenderString((const char*)string.ToUTF8(), x, y); -} - -#endif //#ifdef ocpnUSE_GL diff --git a/src/plugingl/TexFont.h b/src/plugingl/TexFont.h deleted file mode 100644 index 74687ce..0000000 --- a/src/plugingl/TexFont.h +++ /dev/null @@ -1,77 +0,0 @@ -/*************************************************************************** - * - * Project: OpenCPN - * Purpose: OpenGL text rendering - * Author: Sean D'Epagnier - * - *************************************************************************** - * Copyright (C) 2014 Sean D'Epagnier * - * * - * This program is free software; you can redistribute it and/or modify * - * it under the terms of the GNU General Public License as published by * - * the Free Software Foundation; either version 2 of the License, or * - * (at your option) any later version. * - * * - * This program is distributed in the hope that it will be useful, * - * but WITHOUT ANY WARRANTY; without even the implied warranty of * - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * - * GNU General Public License for more details. * - * * - * You should have received a copy of the GNU General Public License * - * along with this program; if not, write to the * - * Free Software Foundation, Inc., * - * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * - **************************************************************************/ - -#ifndef __TEXFONT_H__ -#define __TEXFONT_H__ - -/* support ascii plus degree symbol for now pack font in a single texture 16x8 */ -#define DEGREE_GLYPH 127 -#define MIN_GLYPH 32 -#define MAX_GLYPH 128 - -#define NUM_GLYPHS (MAX_GLYPH - MIN_GLYPH) - -#define COLS_GLYPHS 16 -#define ROWS_GLYPHS ((NUM_GLYPHS / COLS_GLYPHS)+1) - -struct TexGlyphInfo { - int x, y, width, height; - float advance; -}; - -class TexFont { -public: - TexFont(); - ~TexFont(); - - void Build( wxFont &font, bool blur = false ); - void Delete(); - - void GetTextExtent( const wxString &string, int *width, int *height); - void RenderString( const char *string, int x=0, int y=0 ); - void RenderString( const wxString &string, int x=0, int y=0 ); - bool IsBuilt(){ return m_built; } - void SetColor(wxColor &color){ m_color = color;} - -private: - void GetTextExtent( const char *string, int *width, int *height); - void RenderGlyph( int c ); - - wxFont m_font; - bool m_blur; - - TexGlyphInfo tgi[MAX_GLYPH]; - - unsigned int texobj; - int tex_w, tex_h; - int m_maxglyphw; - int m_maxglyphh; - bool m_built; - - float m_dx; - float m_dy; - wxColor m_color; -}; -#endif //guard diff --git a/src/plugingl/linmath.h b/src/plugingl/linmath.h deleted file mode 100644 index 5732a76..0000000 --- a/src/plugingl/linmath.h +++ /dev/null @@ -1,574 +0,0 @@ -#ifndef LINMATH_H -#define LINMATH_H - -#include - -#ifdef _MSC_VER -#define inline __inline -#endif - -#define LINMATH_H_DEFINE_VEC(n) \ -typedef float vec##n[n]; \ -static inline void vec##n##_add(vec##n r, vec##n const a, vec##n const b) \ -{ \ - int i; \ - for(i=0; i 1e-4) { - mat4x4 T, C, S; - - vec3_norm(u, u); - mat4x4_from_vec3_mul_outer(T, u, u); - - S[1][2] = u[0]; - S[2][1] = -u[0]; - S[2][0] = u[1]; - S[0][2] = -u[1]; - S[0][1] = u[2]; - S[1][0] = -u[2]; - - mat4x4_scale(S, S, s); - - mat4x4_identity(C); - mat4x4_sub(C, C, T); - - mat4x4_scale(C, C, c); - - mat4x4_add(T, T, C); - mat4x4_add(T, T, S); - - T[3][3] = 1.; - mat4x4_mul(R, M, T); - } else { - mat4x4_dup(R, M); - } -} -static inline void mat4x4_rotate_X(mat4x4 Q, mat4x4 M, float angle) -{ - float s = sinf(angle); - float c = cosf(angle); - mat4x4 R = { - {1.f, 0.f, 0.f, 0.f}, - {0.f, c, s, 0.f}, - {0.f, -s, c, 0.f}, - {0.f, 0.f, 0.f, 1.f} - }; - mat4x4_mul(Q, M, R); -} -static inline void mat4x4_rotate_Y(mat4x4 Q, mat4x4 M, float angle) -{ - float s = sinf(angle); - float c = cosf(angle); - mat4x4 R = { - { c, 0.f, s, 0.f}, - { 0.f, 1.f, 0.f, 0.f}, - { -s, 0.f, c, 0.f}, - { 0.f, 0.f, 0.f, 1.f} - }; - mat4x4_mul(Q, M, R); -} -static inline void mat4x4_rotate_Z(mat4x4 Q, mat4x4 M, float angle) -{ - float s = sinf(angle); - float c = cosf(angle); - mat4x4 R = { - { c, s, 0.f, 0.f}, - { -s, c, 0.f, 0.f}, - { 0.f, 0.f, 1.f, 0.f}, - { 0.f, 0.f, 0.f, 1.f} - }; - mat4x4_mul(Q, M, R); -} -static inline void mat4x4_invert(mat4x4 T, mat4x4 M) -{ - float idet; - float s[6]; - float c[6]; - s[0] = M[0][0]*M[1][1] - M[1][0]*M[0][1]; - s[1] = M[0][0]*M[1][2] - M[1][0]*M[0][2]; - s[2] = M[0][0]*M[1][3] - M[1][0]*M[0][3]; - s[3] = M[0][1]*M[1][2] - M[1][1]*M[0][2]; - s[4] = M[0][1]*M[1][3] - M[1][1]*M[0][3]; - s[5] = M[0][2]*M[1][3] - M[1][2]*M[0][3]; - - c[0] = M[2][0]*M[3][1] - M[3][0]*M[2][1]; - c[1] = M[2][0]*M[3][2] - M[3][0]*M[2][2]; - c[2] = M[2][0]*M[3][3] - M[3][0]*M[2][3]; - c[3] = M[2][1]*M[3][2] - M[3][1]*M[2][2]; - c[4] = M[2][1]*M[3][3] - M[3][1]*M[2][3]; - c[5] = M[2][2]*M[3][3] - M[3][2]*M[2][3]; - - /* Assumes it is invertible */ - idet = 1.0f/( s[0]*c[5]-s[1]*c[4]+s[2]*c[3]+s[3]*c[2]-s[4]*c[1]+s[5]*c[0] ); - - T[0][0] = ( M[1][1] * c[5] - M[1][2] * c[4] + M[1][3] * c[3]) * idet; - T[0][1] = (-M[0][1] * c[5] + M[0][2] * c[4] - M[0][3] * c[3]) * idet; - T[0][2] = ( M[3][1] * s[5] - M[3][2] * s[4] + M[3][3] * s[3]) * idet; - T[0][3] = (-M[2][1] * s[5] + M[2][2] * s[4] - M[2][3] * s[3]) * idet; - - T[1][0] = (-M[1][0] * c[5] + M[1][2] * c[2] - M[1][3] * c[1]) * idet; - T[1][1] = ( M[0][0] * c[5] - M[0][2] * c[2] + M[0][3] * c[1]) * idet; - T[1][2] = (-M[3][0] * s[5] + M[3][2] * s[2] - M[3][3] * s[1]) * idet; - T[1][3] = ( M[2][0] * s[5] - M[2][2] * s[2] + M[2][3] * s[1]) * idet; - - T[2][0] = ( M[1][0] * c[4] - M[1][1] * c[2] + M[1][3] * c[0]) * idet; - T[2][1] = (-M[0][0] * c[4] + M[0][1] * c[2] - M[0][3] * c[0]) * idet; - T[2][2] = ( M[3][0] * s[4] - M[3][1] * s[2] + M[3][3] * s[0]) * idet; - T[2][3] = (-M[2][0] * s[4] + M[2][1] * s[2] - M[2][3] * s[0]) * idet; - - T[3][0] = (-M[1][0] * c[3] + M[1][1] * c[1] - M[1][2] * c[0]) * idet; - T[3][1] = ( M[0][0] * c[3] - M[0][1] * c[1] + M[0][2] * c[0]) * idet; - T[3][2] = (-M[3][0] * s[3] + M[3][1] * s[1] - M[3][2] * s[0]) * idet; - T[3][3] = ( M[2][0] * s[3] - M[2][1] * s[1] + M[2][2] * s[0]) * idet; -} -static inline void mat4x4_orthonormalize(mat4x4 R, mat4x4 M) -{ - float s = 1.; - vec3 h; - - mat4x4_dup(R, M); - vec3_norm(R[2], R[2]); - - s = vec3_mul_inner(R[1], R[2]); - vec3_scale(h, R[2], s); - vec3_sub(R[1], R[1], h); - vec3_norm(R[2], R[2]); - - s = vec3_mul_inner(R[1], R[2]); - vec3_scale(h, R[2], s); - vec3_sub(R[1], R[1], h); - vec3_norm(R[1], R[1]); - - s = vec3_mul_inner(R[0], R[1]); - vec3_scale(h, R[1], s); - vec3_sub(R[0], R[0], h); - vec3_norm(R[0], R[0]); -} - -static inline void mat4x4_frustum(mat4x4 M, float l, float r, float b, float t, float n, float f) -{ - M[0][0] = 2.f*n/(r-l); - M[0][1] = M[0][2] = M[0][3] = 0.f; - - M[1][1] = 2.f*n/(t-b); - M[1][0] = M[1][2] = M[1][3] = 0.f; - - M[2][0] = (r+l)/(r-l); - M[2][1] = (t+b)/(t-b); - M[2][2] = -(f+n)/(f-n); - M[2][3] = -1.f; - - M[3][2] = -2.f*(f*n)/(f-n); - M[3][0] = M[3][1] = M[3][3] = 0.f; -} -static inline void mat4x4_ortho(mat4x4 M, float l, float r, float b, float t, float n, float f) -{ - M[0][0] = 2.f/(r-l); - M[0][1] = M[0][2] = M[0][3] = 0.f; - - M[1][1] = 2.f/(t-b); - M[1][0] = M[1][2] = M[1][3] = 0.f; - - M[2][2] = -2.f/(f-n); - M[2][0] = M[2][1] = M[2][3] = 0.f; - - M[3][0] = -(r+l)/(r-l); - M[3][1] = -(t+b)/(t-b); - M[3][2] = -(f+n)/(f-n); - M[3][3] = 1.f; -} -static inline void mat4x4_perspective(mat4x4 m, float y_fov, float aspect, float n, float f) -{ - /* NOTE: Degrees are an unhandy unit to work with. - * linmath.h uses radians for everything! */ - float const a = 1.f / (float) tan(y_fov / 2.f); - - m[0][0] = a / aspect; - m[0][1] = 0.f; - m[0][2] = 0.f; - m[0][3] = 0.f; - - m[1][0] = 0.f; - m[1][1] = a; - m[1][2] = 0.f; - m[1][3] = 0.f; - - m[2][0] = 0.f; - m[2][1] = 0.f; - m[2][2] = -((f + n) / (f - n)); - m[2][3] = -1.f; - - m[3][0] = 0.f; - m[3][1] = 0.f; - m[3][2] = -((2.f * f * n) / (f - n)); - m[3][3] = 0.f; -} -static inline void mat4x4_look_at(mat4x4 m, vec3 eye, vec3 center, vec3 up) -{ - /* Adapted from Android's OpenGL Matrix.java. */ - /* See the OpenGL GLUT documentation for gluLookAt for a description */ - /* of the algorithm. We implement it in a straightforward way: */ - - /* TODO: The negation of of can be spared by swapping the order of - * operands in the following cross products in the right way. */ - vec3 f; - vec3 s; - vec3 t; - - vec3_sub(f, center, eye); - vec3_norm(f, f); - - vec3_mul_cross(s, f, up); - vec3_norm(s, s); - - vec3_mul_cross(t, s, f); - - m[0][0] = s[0]; - m[0][1] = t[0]; - m[0][2] = -f[0]; - m[0][3] = 0.f; - - m[1][0] = s[1]; - m[1][1] = t[1]; - m[1][2] = -f[1]; - m[1][3] = 0.f; - - m[2][0] = s[2]; - m[2][1] = t[2]; - m[2][2] = -f[2]; - m[2][3] = 0.f; - - m[3][0] = 0.f; - m[3][1] = 0.f; - m[3][2] = 0.f; - m[3][3] = 1.f; - - mat4x4_translate_in_place(m, -eye[0], -eye[1], -eye[2]); -} - -typedef float quat[4]; -static inline void quat_identity(quat q) -{ - q[0] = q[1] = q[2] = 0.f; - q[3] = 1.f; -} -static inline void quat_add(quat r, quat a, quat b) -{ - int i; - for(i=0; i<4; ++i) - r[i] = a[i] + b[i]; -} -static inline void quat_sub(quat r, quat a, quat b) -{ - int i; - for(i=0; i<4; ++i) - r[i] = a[i] - b[i]; -} -static inline void quat_mul(quat r, quat p, quat q) -{ - vec3 w; - vec3_mul_cross(r, p, q); - vec3_scale(w, p, q[3]); - vec3_add(r, r, w); - vec3_scale(w, q, p[3]); - vec3_add(r, r, w); - r[3] = p[3]*q[3] - vec3_mul_inner(p, q); -} -static inline void quat_scale(quat r, quat v, float s) -{ - int i; - for(i=0; i<4; ++i) - r[i] = v[i] * s; -} -static inline float quat_inner_product(quat a, quat b) -{ - float p = 0.f; - int i; - for(i=0; i<4; ++i) - p += b[i]*a[i]; - return p; -} -static inline void quat_conj(quat r, quat q) -{ - int i; - for(i=0; i<3; ++i) - r[i] = -q[i]; - r[3] = q[3]; -} -static inline void quat_rotate(quat r, float angle, vec3 axis) { - int i; - vec3 v; - vec3_scale(v, axis, sinf(angle / 2)); - for(i=0; i<3; ++i) - r[i] = v[i]; - r[3] = cosf(angle / 2); -} -#define quat_norm vec4_norm -static inline void quat_mul_vec3(vec3 r, quat q, vec3 v) -{ -/* - * Method by Fabian 'ryg' Giessen (of Farbrausch) -t = 2 * cross(q.xyz, v) -v' = v + q.w * t + cross(q.xyz, t) - */ - vec3 t = {q[0], q[1], q[2]}; - vec3 u = {q[0], q[1], q[2]}; - - vec3_mul_cross(t, t, v); - vec3_scale(t, t, 2); - - vec3_mul_cross(u, u, t); - vec3_scale(t, t, q[3]); - - vec3_add(r, v, t); - vec3_add(r, r, u); -} -static inline void mat4x4_from_quat(mat4x4 M, quat q) -{ - float a = q[3]; - float b = q[0]; - float c = q[1]; - float d = q[2]; - float a2 = a*a; - float b2 = b*b; - float c2 = c*c; - float d2 = d*d; - - M[0][0] = a2 + b2 - c2 - d2; - M[0][1] = 2.f*(b*c + a*d); - M[0][2] = 2.f*(b*d - a*c); - M[0][3] = 0.f; - - M[1][0] = 2*(b*c - a*d); - M[1][1] = a2 - b2 + c2 - d2; - M[1][2] = 2.f*(c*d + a*b); - M[1][3] = 0.f; - - M[2][0] = 2.f*(b*d + a*c); - M[2][1] = 2.f*(c*d - a*b); - M[2][2] = a2 - b2 - c2 + d2; - M[2][3] = 0.f; - - M[3][0] = M[3][1] = M[3][2] = 0.f; - M[3][3] = 1.f; -} - -static inline void mat4x4o_mul_quat(mat4x4 R, mat4x4 M, quat q) -{ -/* XXX: The way this is written only works for othogonal matrices. */ -/* TODO: Take care of non-orthogonal case. */ - quat_mul_vec3(R[0], q, M[0]); - quat_mul_vec3(R[1], q, M[1]); - quat_mul_vec3(R[2], q, M[2]); - - R[3][0] = R[3][1] = R[3][2] = 0.f; - R[3][3] = 1.f; -} -static inline void quat_from_mat4x4(quat q, mat4x4 M) -{ - float r=0.f; - int i; - - int perm[] = { 0, 1, 2, 0, 1 }; - int *p = perm; - - for(i = 0; i<3; i++) { - float m = M[i][i]; - if( m < r ) - continue; - m = r; - p = &perm[i]; - } - - r = (float) sqrt(1.f + M[p[0]][p[0]] - M[p[1]][p[1]] - M[p[2]][p[2]] ); - - if(r < 1e-6) { - q[0] = 1.f; - q[1] = q[2] = q[3] = 0.f; - return; - } - - q[0] = r/2.f; - q[1] = (M[p[0]][p[1]] - M[p[1]][p[0]])/(2.f*r); - q[2] = (M[p[2]][p[0]] - M[p[0]][p[2]])/(2.f*r); - q[3] = (M[p[2]][p[1]] - M[p[1]][p[2]])/(2.f*r); -} - -#endif diff --git a/src/plugingl/pi_shaders.cpp b/src/plugingl/pi_shaders.cpp deleted file mode 100644 index 8fc7859..0000000 --- a/src/plugingl/pi_shaders.cpp +++ /dev/null @@ -1,664 +0,0 @@ -/*************************************************************************** - * - * Project: OpenCPN - * - *************************************************************************** - * Copyright (C) 2017 by David S. Register * - * * - * This program is free software; you can redistribute it and/or modify * - * it under the terms of the GNU General Public License as published by * - * the Free Software Foundation; either version 2 of the License, or * - * (at your option) any later version. * - * * - * This program is distributed in the hope that it will be useful, * - * but WITHOUT ANY WARRANTY; without even the implied warranty of * - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * - * GNU General Public License for more details. * - * * - * You should have received a copy of the GNU General Public License * - * along with this program; if not, write to the * - * Free Software Foundation, Inc., * - * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * - **************************************************************************/ - -#ifdef USE_ANDROID_GLES2 -#include "qdebug.h" - -#include "GLES2/gl2.h" -#include "pi_shaders.h" -#include "linmath.h" - -// Simple colored triangle shader - -static const GLchar* color_tri_vertex_shader_source = - "attribute vec2 position;\n" - "uniform mat4 MVMatrix;\n" - "uniform mat4 TransformMatrix;\n" - "uniform vec4 color;\n" - "varying vec4 fragColor;\n" - "void main() {\n" - " fragColor = color;\n" - " gl_Position = MVMatrix * TransformMatrix * vec4(position, 0.0, 1.0);\n" - "}\n"; - - static const GLchar* color_tri_fragment_shader_source = - "precision lowp float;\n" - "varying vec4 fragColor;\n" - "void main() {\n" - " gl_FragColor = fragColor;\n" - "}\n"; - -// Array colored triangle shader - static const GLchar* colorv_tri_vertex_shader_source = - "attribute vec2 position;\n" - "attribute vec4 colorv;\n" - "uniform mat4 MVMatrix;\n" - "uniform mat4 TransformMatrix;\n" - "varying vec4 fragColor;\n" - "void main() {\n" - " fragColor = colorv;\n" - " gl_Position = MVMatrix * TransformMatrix * vec4(position, 0.0, 1.0);\n" - "}\n"; - - static const GLchar* colorv_tri_fragment_shader_source = - "precision lowp float;\n" - "varying vec4 fragColor;\n" - "void main() {\n" - " gl_FragColor = fragColor;\n" - "}\n"; - - // Simple 2D texture shader -static const GLchar* texture_2D_vertex_shader_source = - "attribute vec2 aPos;\n" - "attribute vec2 aUV;\n" - "uniform mat4 MVMatrix;\n" - "uniform mat4 TransformMatrix;\n" - "varying vec2 varCoord;\n" - "void main() {\n" - " gl_Position = MVMatrix * TransformMatrix * vec4(aPos, 0.0, 1.0);\n" - " varCoord = aUV;\n" - "}\n"; - -static const GLchar* texture_2D_fragment_shader_source = - "precision lowp float;\n" - "uniform sampler2D uTex;\n" - "varying vec2 varCoord;\n" - "void main() {\n" - " gl_FragColor = texture2D(uTex, varCoord);\n" - "}\n"; - - // Alpah 2D texture shader -static const GLchar* pi_texture_2DA_vertex_shader_source = - "attribute vec2 aPos;\n" - "attribute vec2 aUV;\n" - "uniform mat4 MVMatrix;\n" - "uniform mat4 TransformMatrix;\n" - "varying vec2 varCoord;\n" - "void main() {\n" - " gl_Position = MVMatrix * TransformMatrix * vec4(aPos, 0.0, 1.0);\n" - " varCoord = aUV;\n" - "}\n"; - -static const GLchar* pi_texture_2DA_fragment_shader_source = - "precision lowp float;\n" - "uniform sampler2D uTex;\n" - "varying vec2 varCoord;\n" - "uniform vec4 color;\n" - "void main() {\n" - " gl_FragColor = texture2D(uTex, varCoord) + color;\n" - "}\n"; - -static const GLchar* pi_texture_text_vertex_shader_source = - "attribute vec2 aPos;\n" - "attribute vec2 aUV;\n" - "uniform mat4 MVMatrix;\n" - "uniform mat4 TransformMatrix;\n" - "varying vec2 varCoord;\n" - "void main() {\n" - " gl_Position = MVMatrix * TransformMatrix * vec4(aPos, 0.0, 1.0);\n" - " varCoord = aUV;\n" - "}\n"; - -static const GLchar* pi_texture_text_fragment_shader_source = - "precision lowp float;\n" - "uniform sampler2D uTex;\n" - "varying vec2 varCoord;\n" - "uniform vec4 color;\n" - "void main() {\n" - " gl_FragColor = vec4(color.r, color.g, color.b, color.a * texture2D(uTex, varCoord).a);\n" - "}\n"; - - - // Fade Texture shader -static const GLchar* fade_texture_2D_vertex_shader_source = - "precision highp float;\n" - "attribute vec2 aPos;\n" - "attribute vec2 aUV;\n" - "attribute vec2 aUV2;\n" - "uniform mat4 MVMatrix;\n" - "varying vec2 varCoord;\n" - "varying vec2 varCoord2;\n" - "void main() {\n" - " gl_Position = MVMatrix * vec4(aPos, 0.0, 1.0);\n" - " varCoord = aUV.st;\n" - " varCoord2 = aUV2.st;\n" - "}\n"; - -static const GLchar* fade_texture_2D_fragment_shader_source = - "precision highp float;\n" - "uniform sampler2D uTex;\n" - "uniform sampler2D uTex2;\n" - "uniform lowp float texAlpha;\n" - "varying vec2 varCoord;\n" - "varying vec2 varCoord2;\n" - "void main() {\n" - " mediump vec4 texColor = texture2D(uTex, varCoord);\n" - " mediump vec4 texTwoColor = texture2D(uTex2, varCoord2);\n" - " gl_FragColor = ((texTwoColor * (1.0 - texAlpha)) + (texColor * texAlpha));\n" - "}\n"; - - - - // Circle shader - -static const GLchar* circle_filled_vertex_shader_source = - "precision highp float;\n" - "attribute vec2 aPos;\n" - "uniform mat4 MVMatrix;\n" - "uniform mat4 TransformMatrix;\n" - "void main() {\n" - " gl_Position = MVMatrix * TransformMatrix * vec4(aPos, 0.0, 1.0);\n" - "}\n"; - -static const GLchar* circle_filled_fragment_shader_source = - "precision highp float;\n" - "uniform float border_width;\n" - "uniform float circle_radius;\n" - "uniform vec4 circle_color;\n" - "uniform vec4 border_color;\n" - "uniform vec2 circle_center;\n" - "void main(){\n" - "float d = distance(gl_FragCoord.xy, circle_center);\n" - "if (d < (circle_radius - border_width)) { gl_FragColor = circle_color; }\n" - "else if (d < circle_radius) { gl_FragColor = border_color; }\n" - "else { gl_FragColor = vec4(0.0, 0.0, 0.0, 0.0); }\n" - "}\n"; - - - // 2D texture shader for FBOs - static const GLchar* FBO_texture_2D_vertex_shader_source = - "attribute vec2 aPos;\n" - "attribute vec2 aUV;\n" - "uniform mat4 MVMatrix;\n" - "varying vec2 varCoord;\n" - "void main() {\n" - " gl_Position = MVMatrix * vec4(aPos, 0.0, 1.0);\n" - " varCoord = aUV;\n" - "}\n"; - - static const GLchar* FBO_texture_2D_fragment_shader_source = - "precision lowp float;\n" - "uniform sampler2D uTex;\n" - "varying vec2 varCoord;\n" - "void main() {\n" - " gl_FragColor = texture2D(uTex, varCoord);\n" - "}\n"; - - - GLint pi_color_tri_fragment_shader; - GLint pi_color_tri_shader_program; - GLint pi_color_tri_vertex_shader; - - GLint pi_colorv_tri_fragment_shader; - GLint pi_colorv_tri_shader_program; - GLint pi_colorv_tri_vertex_shader; - - GLint pi_texture_2D_fragment_shader; - GLint pi_texture_2D_shader_program; - GLint pi_texture_2D_vertex_shader; - - GLint pi_texture_2DA_fragment_shader; - GLint pi_texture_2DA_shader_program; - GLint pi_texture_2DA_vertex_shader; - - GLint pi_texture_text_fragment_shader; - GLint pi_texture_text_shader_program; - GLint pi_texture_text_vertex_shader; - -// GLint fade_texture_2D_fragment_shader; -// GLint fade_texture_2D_shader_program; -// GLint fade_texture_2D_vertex_shader; - - GLint pi_circle_filled_shader_program; - GLint pi_circle_filled_vertex_shader; - GLint pi_circle_filled_fragment_shader; - -// GLint FBO_texture_2D_fragment_shader; -// GLint FBO_texture_2D_shader_program; -// GLint FBO_texture_2D_vertex_shader; - -bool pi_loadShaders() -{ - - bool ret_val = true; - GLint success; - - enum Consts {INFOLOG_LEN = 512}; - GLchar infoLog[INFOLOG_LEN]; - - // Are the shaders ready? - - // Simple colored triangle shader - - if(!pi_color_tri_vertex_shader){ - /* Vertex shader */ - pi_color_tri_vertex_shader = glCreateShader(GL_VERTEX_SHADER); - glShaderSource(pi_color_tri_vertex_shader, 1, &color_tri_vertex_shader_source, NULL); - glCompileShader(pi_color_tri_vertex_shader); - glGetShaderiv(pi_color_tri_vertex_shader, GL_COMPILE_STATUS, &success); - if (!success) { - glGetShaderInfoLog(pi_color_tri_vertex_shader, INFOLOG_LEN, NULL, infoLog); - printf("ERROR::SHADER::VERTEX::COMPILATION_FAILED\n%s\n", infoLog); - ret_val = false; - } - } - - if(!pi_color_tri_fragment_shader){ - /* Fragment shader */ - pi_color_tri_fragment_shader = glCreateShader(GL_FRAGMENT_SHADER); - glShaderSource(pi_color_tri_fragment_shader, 1, &color_tri_fragment_shader_source, NULL); - glCompileShader(pi_color_tri_fragment_shader); - glGetShaderiv(pi_color_tri_fragment_shader, GL_COMPILE_STATUS, &success); - if (!success) { - glGetShaderInfoLog(pi_color_tri_fragment_shader, INFOLOG_LEN, NULL, infoLog); - printf("ERROR::SHADER::FRAGMENT::COMPILATION_FAILED\n%s\n", infoLog); - ret_val = false; - } - } - - if(!pi_color_tri_shader_program){ - /* Link shaders */ - pi_color_tri_shader_program = glCreateProgram(); - glAttachShader(pi_color_tri_shader_program, pi_color_tri_fragment_shader); - glAttachShader(pi_color_tri_shader_program, pi_color_tri_vertex_shader); - glLinkProgram(pi_color_tri_shader_program); - glGetProgramiv(pi_color_tri_shader_program, GL_LINK_STATUS, &success); - if (!success) { - glGetProgramInfoLog(pi_color_tri_shader_program, INFOLOG_LEN, NULL, infoLog); - printf("ERROR::SHADER::PROGRAM::LINKING_FAILED\n%s\n", infoLog); - ret_val = false; - } - } - - // Array colored triangle shader - - if(!pi_colorv_tri_vertex_shader){ - /* Vertex shader */ - pi_colorv_tri_vertex_shader = glCreateShader(GL_VERTEX_SHADER); - glShaderSource(pi_colorv_tri_vertex_shader, 1, &colorv_tri_vertex_shader_source, NULL); - glCompileShader(pi_colorv_tri_vertex_shader); - glGetShaderiv(pi_colorv_tri_vertex_shader, GL_COMPILE_STATUS, &success); - if (!success) { - glGetShaderInfoLog(pi_colorv_tri_vertex_shader, INFOLOG_LEN, NULL, infoLog); - printf("ERROR::SHADER::VERTEX::COMPILATION_FAILED\n%s\n", infoLog); - ret_val = false; - } - } - - if(!pi_colorv_tri_fragment_shader){ - /* Fragment shader */ - pi_colorv_tri_fragment_shader = glCreateShader(GL_FRAGMENT_SHADER); - glShaderSource(pi_colorv_tri_fragment_shader, 1, &colorv_tri_fragment_shader_source, NULL); - glCompileShader(pi_colorv_tri_fragment_shader); - glGetShaderiv(pi_colorv_tri_fragment_shader, GL_COMPILE_STATUS, &success); - if (!success) { - glGetShaderInfoLog(pi_colorv_tri_fragment_shader, INFOLOG_LEN, NULL, infoLog); - printf("ERROR::SHADER::FRAGMENT::COMPILATION_FAILED\n%s\n", infoLog); - ret_val = false; - } - } - - if(!pi_colorv_tri_shader_program){ - /* Link shaders */ - pi_colorv_tri_shader_program = glCreateProgram(); - glAttachShader(pi_colorv_tri_shader_program, pi_colorv_tri_fragment_shader); - glAttachShader(pi_colorv_tri_shader_program, pi_colorv_tri_vertex_shader); - glLinkProgram(pi_colorv_tri_shader_program); - glGetProgramiv(pi_colorv_tri_shader_program, GL_LINK_STATUS, &success); - if (!success) { - glGetProgramInfoLog(pi_colorv_tri_shader_program, INFOLOG_LEN, NULL, infoLog); - printf("ERROR::SHADER::PROGRAM::LINKING_FAILED\n%s\n", infoLog); - ret_val = false; - } - } - - // Simple 2D texture shader - - if(!pi_texture_2D_vertex_shader){ - /* Vertex shader */ - pi_texture_2D_vertex_shader = glCreateShader(GL_VERTEX_SHADER); - glShaderSource(pi_texture_2D_vertex_shader, 1, &texture_2D_vertex_shader_source, NULL); - glCompileShader(pi_texture_2D_vertex_shader); - glGetShaderiv(pi_texture_2D_vertex_shader, GL_COMPILE_STATUS, &success); - if (!success) { - glGetShaderInfoLog(pi_texture_2D_vertex_shader, INFOLOG_LEN, NULL, infoLog); - printf("ERROR::SHADER::VERTEX::COMPILATION_FAILED\n%s\n", infoLog); - ret_val = false; - } - } - - if(!pi_texture_2D_fragment_shader){ - /* Fragment shader */ - pi_texture_2D_fragment_shader = glCreateShader(GL_FRAGMENT_SHADER); - glShaderSource(pi_texture_2D_fragment_shader, 1, &texture_2D_fragment_shader_source, NULL); - glCompileShader(pi_texture_2D_fragment_shader); - glGetShaderiv(pi_texture_2D_fragment_shader, GL_COMPILE_STATUS, &success); - if (!success) { - glGetShaderInfoLog(pi_texture_2D_fragment_shader, INFOLOG_LEN, NULL, infoLog); - printf("ERROR::SHADER::FRAGMENT::COMPILATION_FAILED\n%s\n", infoLog); - ret_val = false; - } - } - - if(!pi_texture_2D_shader_program){ - /* Link shaders */ - pi_texture_2D_shader_program = glCreateProgram(); - glAttachShader(pi_texture_2D_shader_program, pi_texture_2D_vertex_shader); - glAttachShader(pi_texture_2D_shader_program, pi_texture_2D_fragment_shader); - glLinkProgram(pi_texture_2D_shader_program); - glGetProgramiv(pi_texture_2D_shader_program, GL_LINK_STATUS, &success); - if (!success) { - glGetProgramInfoLog(pi_texture_2D_shader_program, INFOLOG_LEN, NULL, infoLog); - printf("ERROR::SHADER::PROGRAM::LINKING_FAILED\n%s\n", infoLog); - ret_val = false; - } - } - - // 2D Alpha color texture shader - - if(!pi_texture_2DA_vertex_shader){ - /* Vertex shader */ - pi_texture_2DA_vertex_shader = glCreateShader(GL_VERTEX_SHADER); - glShaderSource(pi_texture_2DA_vertex_shader, 1, &pi_texture_2DA_vertex_shader_source, NULL); - glCompileShader(pi_texture_2DA_vertex_shader); - glGetShaderiv(pi_texture_2DA_vertex_shader, GL_COMPILE_STATUS, &success); - if (!success) { - glGetShaderInfoLog(pi_texture_2DA_vertex_shader, INFOLOG_LEN, NULL, infoLog); - printf("ERROR::SHADER::VERTEX::COMPILATION_FAILED\n%s\n", infoLog); - qDebug() << infoLog; - ret_val = false; - } - } - - if(!pi_texture_2DA_fragment_shader){ - /* Fragment shader */ - pi_texture_2DA_fragment_shader = glCreateShader(GL_FRAGMENT_SHADER); - glShaderSource(pi_texture_2DA_fragment_shader, 1, &pi_texture_2DA_fragment_shader_source, NULL); - glCompileShader(pi_texture_2DA_fragment_shader); - glGetShaderiv(pi_texture_2DA_fragment_shader, GL_COMPILE_STATUS, &success); - if (!success) { - glGetShaderInfoLog(pi_texture_2DA_fragment_shader, INFOLOG_LEN, NULL, infoLog); - printf("ERROR::SHADER::FRAGMENT::COMPILATION_FAILED\n%s\n", infoLog); - qDebug() << infoLog; - ret_val = false; - } - } - - if(!pi_texture_2DA_shader_program){ - /* Link shaders */ - pi_texture_2DA_shader_program = glCreateProgram(); - glAttachShader(pi_texture_2DA_shader_program, pi_texture_2DA_vertex_shader); - glAttachShader(pi_texture_2DA_shader_program, pi_texture_2DA_fragment_shader); - glLinkProgram(pi_texture_2DA_shader_program); - glGetProgramiv(pi_texture_2DA_shader_program, GL_LINK_STATUS, &success); - if (!success) { - glGetProgramInfoLog(pi_texture_2DA_shader_program, INFOLOG_LEN, NULL, infoLog); - printf("ERROR::SHADER::PROGRAM::LINKING_FAILED\n%s\n", infoLog); - qDebug() << infoLog; - ret_val = false; - } - } - - - - if(!pi_texture_text_vertex_shader){ - /* Vertex shader */ - pi_texture_text_vertex_shader = glCreateShader(GL_VERTEX_SHADER); - glShaderSource(pi_texture_text_vertex_shader, 1, &pi_texture_text_vertex_shader_source, NULL); - glCompileShader(pi_texture_text_vertex_shader); - glGetShaderiv(pi_texture_text_vertex_shader, GL_COMPILE_STATUS, &success); - if (!success) { - glGetShaderInfoLog(pi_texture_text_vertex_shader, INFOLOG_LEN, NULL, infoLog); - printf("ERROR::SHADER::VERTEX::COMPILATION_FAILED\n%s\n", infoLog); - qDebug() << infoLog; - ret_val = false; - } - } - - if(!pi_texture_text_fragment_shader){ - /* Fragment shader */ - pi_texture_text_fragment_shader = glCreateShader(GL_FRAGMENT_SHADER); - glShaderSource(pi_texture_text_fragment_shader, 1, &pi_texture_text_fragment_shader_source, NULL); - glCompileShader(pi_texture_text_fragment_shader); - glGetShaderiv(pi_texture_text_fragment_shader, GL_COMPILE_STATUS, &success); - if (!success) { - glGetShaderInfoLog(pi_texture_text_fragment_shader, INFOLOG_LEN, NULL, infoLog); - printf("ERROR::SHADER::FRAGMENT::COMPILATION_FAILED\n%s\n", infoLog); - qDebug() << infoLog; - ret_val = false; - } - } - - if(!pi_texture_text_shader_program){ - /* Link shaders */ - pi_texture_text_shader_program = glCreateProgram(); - glAttachShader(pi_texture_text_shader_program, pi_texture_text_vertex_shader); - glAttachShader(pi_texture_text_shader_program, pi_texture_text_fragment_shader); - glLinkProgram(pi_texture_text_shader_program); - glGetProgramiv(pi_texture_text_shader_program, GL_LINK_STATUS, &success); - if (!success) { - glGetProgramInfoLog(pi_texture_text_shader_program, INFOLOG_LEN, NULL, infoLog); - printf("ERROR::SHADER::PROGRAM::LINKING_FAILED\n%s\n", infoLog); - qDebug() << infoLog; - ret_val = false; - } - } - - -#if 0 - - // Fade texture shader - if(!fade_texture_2D_vertex_shader){ - /* Vertex shader */ - fade_texture_2D_vertex_shader = glCreateShader(GL_VERTEX_SHADER); - glShaderSource(fade_texture_2D_vertex_shader, 1, &fade_texture_2D_vertex_shader_source, NULL); - glCompileShader(fade_texture_2D_vertex_shader); - glGetShaderiv(fade_texture_2D_vertex_shader, GL_COMPILE_STATUS, &success); - if (!success) { - glGetShaderInfoLog(fade_texture_2D_vertex_shader, INFOLOG_LEN, NULL, infoLog); - printf("ERROR::SHADER::VERTEX::COMPILATION_FAILED\n%s\n", infoLog); - ret_val = false; - } - } - - if(!fade_texture_2D_fragment_shader){ - /* Fragment shader */ - fade_texture_2D_fragment_shader = glCreateShader(GL_FRAGMENT_SHADER); - glShaderSource(fade_texture_2D_fragment_shader, 1, &fade_texture_2D_fragment_shader_source, NULL); - glCompileShader(fade_texture_2D_fragment_shader); - glGetShaderiv(fade_texture_2D_fragment_shader, GL_COMPILE_STATUS, &success); - if (!success) { - glGetShaderInfoLog(fade_texture_2D_fragment_shader, INFOLOG_LEN, NULL, infoLog); - printf("ERROR::SHADER::FRAGMENT::COMPILATION_FAILED\n%s\n", infoLog); - ret_val = false; - } - } - - if(!fade_texture_2D_shader_program){ - /* Link shaders */ - fade_texture_2D_shader_program = glCreateProgram(); - glAttachShader(fade_texture_2D_shader_program, fade_texture_2D_vertex_shader); - glAttachShader(fade_texture_2D_shader_program, fade_texture_2D_fragment_shader); - glLinkProgram(fade_texture_2D_shader_program); - glGetProgramiv(fade_texture_2D_shader_program, GL_LINK_STATUS, &success); - if (!success) { - glGetProgramInfoLog(fade_texture_2D_shader_program, INFOLOG_LEN, NULL, infoLog); - printf("ERROR::SHADER::PROGRAM::LINKING_FAILED\n%s\n", infoLog); - ret_val = false; - } - } - -#endif - // Circle shader - if(!pi_circle_filled_vertex_shader){ - /* Vertex shader */ - pi_circle_filled_vertex_shader = glCreateShader(GL_VERTEX_SHADER); - glShaderSource(pi_circle_filled_vertex_shader, 1, &circle_filled_vertex_shader_source, NULL); - glCompileShader(pi_circle_filled_vertex_shader); - glGetShaderiv(pi_circle_filled_vertex_shader, GL_COMPILE_STATUS, &success); - if (!success) { - glGetShaderInfoLog(pi_circle_filled_vertex_shader, INFOLOG_LEN, NULL, infoLog); - printf("ERROR::SHADER::VERTEX::COMPILATION_FAILED\n%s\n", infoLog); - qDebug() << infoLog; - ret_val = false; - } - } - - if(!pi_circle_filled_fragment_shader){ - /* Fragment shader */ - pi_circle_filled_fragment_shader = glCreateShader(GL_FRAGMENT_SHADER); - glShaderSource(pi_circle_filled_fragment_shader, 1, &circle_filled_fragment_shader_source, NULL); - glCompileShader(pi_circle_filled_fragment_shader); - glGetShaderiv(pi_circle_filled_fragment_shader, GL_COMPILE_STATUS, &success); - if (!success) { - glGetShaderInfoLog(pi_circle_filled_fragment_shader, INFOLOG_LEN, NULL, infoLog); - printf("ERROR::SHADER::FRAGMENT::COMPILATION_FAILED\n%s\n", infoLog); - qDebug() << infoLog; - ret_val = false; - } - } - - if(!pi_circle_filled_shader_program){ - /* Link shaders */ - pi_circle_filled_shader_program = glCreateProgram(); - glAttachShader(pi_circle_filled_shader_program, pi_circle_filled_vertex_shader); - glAttachShader(pi_circle_filled_shader_program, pi_circle_filled_fragment_shader); - glLinkProgram(pi_circle_filled_shader_program); - glGetProgramiv(pi_circle_filled_shader_program, GL_LINK_STATUS, &success); - if (!success) { - glGetProgramInfoLog(pi_circle_filled_shader_program, INFOLOG_LEN, NULL, infoLog); - printf("ERROR::SHADER::PROGRAM::LINKING_FAILED\n%s\n", infoLog); - qDebug() << infoLog; - ret_val = false; - } - } - -#if 0 - // FBO 2D texture shader - - if(!FBO_texture_2D_vertex_shader){ - /* Vertex shader */ - FBO_texture_2D_vertex_shader = glCreateShader(GL_VERTEX_SHADER); - glShaderSource(FBO_texture_2D_vertex_shader, 1, &FBO_texture_2D_vertex_shader_source, NULL); - glCompileShader(FBO_texture_2D_vertex_shader); - glGetShaderiv(FBO_texture_2D_vertex_shader, GL_COMPILE_STATUS, &success); - if (!success) { - glGetShaderInfoLog(FBO_texture_2D_vertex_shader, INFOLOG_LEN, NULL, infoLog); - printf("ERROR::SHADER::VERTEX::COMPILATION_FAILED\n%s\n", infoLog); - ret_val = false; - } - } - - if(!FBO_texture_2D_fragment_shader){ - /* Fragment shader */ - FBO_texture_2D_fragment_shader = glCreateShader(GL_FRAGMENT_SHADER); - glShaderSource(FBO_texture_2D_fragment_shader, 1, &FBO_texture_2D_fragment_shader_source, NULL); - glCompileShader(FBO_texture_2D_fragment_shader); - glGetShaderiv(FBO_texture_2D_fragment_shader, GL_COMPILE_STATUS, &success); - if (!success) { - glGetShaderInfoLog(FBO_texture_2D_fragment_shader, INFOLOG_LEN, NULL, infoLog); - printf("ERROR::SHADER::FRAGMENT::COMPILATION_FAILED\n%s\n", infoLog); - ret_val = false; - } - } - - if(!FBO_texture_2D_shader_program){ - /* Link shaders */ - FBO_texture_2D_shader_program = glCreateProgram(); - glAttachShader(FBO_texture_2D_shader_program, FBO_texture_2D_vertex_shader); - glAttachShader(FBO_texture_2D_shader_program, FBO_texture_2D_fragment_shader); - glLinkProgram(FBO_texture_2D_shader_program); - glGetProgramiv(FBO_texture_2D_shader_program, GL_LINK_STATUS, &success); - if (!success) { - glGetProgramInfoLog(FBO_texture_2D_shader_program, INFOLOG_LEN, NULL, infoLog); - printf("ERROR::SHADER::PROGRAM::LINKING_FAILED\n%s\n", infoLog); - ret_val = false; - } - } -#endif - - //qDebug() << "pi_loadShaders: " << ret_val; - return ret_val; -} - - -void configureShaders(float width, float height) -{ - // Set the shader viewport transform matrix - float vp_transform[16]; - mat4x4 m; - mat4x4_identity(m); - mat4x4_scale_aniso((float (*)[4])vp_transform, m, 2.0 / width, -2.0 / height, 1.0); - mat4x4_translate_in_place((float (*)[4])vp_transform, -width/2, -height/2, 0); - - mat4x4 I; - mat4x4_identity(I); - - glUseProgram(pi_color_tri_shader_program); - GLint matloc = glGetUniformLocation(pi_color_tri_shader_program,"MVMatrix"); - glUniformMatrix4fv( matloc, 1, GL_FALSE, (const GLfloat*)vp_transform); - GLint transloc = glGetUniformLocation(pi_color_tri_shader_program,"TransformMatrix"); - glUniformMatrix4fv( transloc, 1, GL_FALSE, (const GLfloat*)I); - - //qDebug() << pi_color_tri_shader_program << transloc; - - glUseProgram(pi_circle_filled_shader_program); - matloc = glGetUniformLocation(pi_circle_filled_shader_program,"MVMatrix"); - glUniformMatrix4fv( matloc, 1, GL_FALSE, (const GLfloat*)vp_transform); - transloc = glGetUniformLocation(pi_circle_filled_shader_program,"TransformMatrix"); - glUniformMatrix4fv( transloc, 1, GL_FALSE, (const GLfloat*)I); - - //qDebug() << pi_circle_filled_shader_program << transloc; - - glUseProgram(pi_texture_2D_shader_program); - matloc = glGetUniformLocation(pi_texture_2D_shader_program,"MVMatrix"); - glUniformMatrix4fv( matloc, 1, GL_FALSE, (const GLfloat*)vp_transform); - transloc = glGetUniformLocation(pi_texture_2D_shader_program,"TransformMatrix"); - glUniformMatrix4fv( transloc, 1, GL_FALSE, (const GLfloat*)I); - - glUseProgram(pi_texture_2DA_shader_program); - matloc = glGetUniformLocation(pi_texture_2DA_shader_program,"MVMatrix"); - glUniformMatrix4fv( matloc, 1, GL_FALSE, (const GLfloat*)vp_transform); - transloc = glGetUniformLocation(pi_texture_2DA_shader_program,"TransformMatrix"); - glUniformMatrix4fv( transloc, 1, GL_FALSE, (const GLfloat*)I); - - glUseProgram(pi_texture_text_shader_program); - matloc = glGetUniformLocation(pi_texture_text_shader_program,"MVMatrix"); - glUniformMatrix4fv( matloc, 1, GL_FALSE, (const GLfloat*)vp_transform); - transloc = glGetUniformLocation(pi_texture_text_shader_program,"TransformMatrix"); - glUniformMatrix4fv( transloc, 1, GL_FALSE, (const GLfloat*)I); - - //qDebug() << pi_texture_2D_shader_program << transloc; - - glUseProgram(pi_colorv_tri_shader_program); - matloc = glGetUniformLocation(pi_colorv_tri_shader_program,"MVMatrix"); - glUniformMatrix4fv( matloc, 1, GL_FALSE, (const GLfloat*)vp_transform); - transloc = glGetUniformLocation(pi_colorv_tri_shader_program,"TransformMatrix"); - glUniformMatrix4fv( transloc, 1, GL_FALSE, (const GLfloat*)I); - -} -#else -bool pi_loadShaders() { return true; } -void configureShaders(float width, float height) {} - -#endif diff --git a/src/plugingl/pi_shaders.h b/src/plugingl/pi_shaders.h deleted file mode 100644 index 297bee8..0000000 --- a/src/plugingl/pi_shaders.h +++ /dev/null @@ -1,47 +0,0 @@ -/*************************************************************************** - * - * Project: OpenCPN - * - *************************************************************************** - * Copyright (C) 2017 by David S. Register * - * * - * This program is free software; you can redistribute it and/or modify * - * it under the terms of the GNU General Public License as published by * - * the Free Software Foundation; either version 2 of the License, or * - * (at your option) any later version. * - * * - * This program is distributed in the hope that it will be useful, * - * but WITHOUT ANY WARRANTY; without even the implied warranty of * - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * - * GNU General Public License for more details. * - * * - * You should have received a copy of the GNU General Public License * - * along with this program; if not, write to the * - * Free Software Foundation, Inc., * - * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * - **************************************************************************/ - -#ifndef __PISHADERS_H__ -#define __PISHADERS_H__ - -#include "wx/wxprec.h" -#ifndef WX_PRECOMP -#include "wx/wx.h" -#endif //precompiled headers - -#ifdef ocpnUSE_GLES2 -#include "GLES2/gl2.h" -#endif - - extern GLint pi_color_tri_shader_program; - extern GLint pi_colorv_tri_shader_program; - extern GLint pi_texture_2D_shader_program; - extern GLint pi_texture_2DA_shader_program; - extern GLint pi_texture_text_shader_program; - extern GLint pi_circle_filled_shader_program; - - -bool pi_loadShaders(); -void configureShaders(float width, float height); - -#endif diff --git a/src/plugingl/pidc.cpp b/src/plugingl/pidc.cpp deleted file mode 100644 index cf4a3ec..0000000 --- a/src/plugingl/pidc.cpp +++ /dev/null @@ -1,2064 +0,0 @@ -/****************************************************************************** - * - * Project: OpenCPN - * Purpose: Layer to perform wxDC drawing using wxDC or opengl - * Author: Sean D'Epagnier - * - *************************************************************************** - * Copyright (C) 2011 by Sean D'Epagnier * - * * - * This program is free software; you can redistribute it and/or modify * - * it under the terms of the GNU General Public License as published by * - * the Free Software Foundation; either version 2 of the License, or * - * (at your option) any later version. * - * * - * This program is distributed in the hope that it will be useful, * - * but WITHOUT ANY WARRANTY; without even the implied warranty of * - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * - * GNU General Public License for more details. * - * * - * You should have received a copy of the GNU General Public License * - * along with this program; if not, write to the * - * Free Software Foundation, Inc., * - * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * - *************************************************************************** - * - */ - -#include "wx/wxprec.h" - -#ifndef WX_PRECOMP -#include "wx/wx.h" -#endif - -#include "ocpn_plugin.h" - -#ifdef __MSVC__ -#include -#endif - -#ifdef ocpnUSE_GL -#include -#endif - -#include -#include - -#include - -#include "pidc.h" - -#ifdef __OCPN__ANDROID__ -#include -#include "GL/gl_private.h" -#else -#include "GL/gl.h" -#include "GL/glu.h" -#endif - -#include "linmath.h" -#include "plugingl/pi_shaders.h" - -#ifdef __OCPN__ANDROID__ -#include "qdebug.h" -#endif - -static float GLMinSymbolLineWidth; -static wxArrayPtrVoid pi_gTesselatorVertices; - -#ifdef USE_ANDROID_GLES2 -extern GLint pi_color_tri_shader_program; -extern GLint pi_circle_filled_shader_program; -#endif - -//---------------------------------------------------------------------------- -/* pass the dc to the constructor, or NULL to use opengl */ -piDC::piDC( wxGLCanvas &canvas ) : - glcanvas( &canvas ), dc( NULL ), m_pen( wxNullPen ), m_brush( wxNullBrush ) -{ -#if wxUSE_GRAPHICS_CONTEXT - pgc = NULL; -#endif -#ifdef ocpnUSE_GL - m_textforegroundcolour = wxColour( 0, 0, 0 ); - m_textbackgroundcolour = wxTransparentColour; - wxFont font = wxFont(20, wxFONTFAMILY_DEFAULT, wxFONTSTYLE_NORMAL, wxFONTWEIGHT_NORMAL, false, "Roboto"); - SetFont(font); -#endif - m_buseTex = GetLocaleCanonicalName().IsSameAs(_T("en_US")); - workBuf = NULL; - workBufSize = 0; - s_odc_tess_work_buf = NULL; - -#ifdef USE_ANDROID_GLES2 - s_odc_tess_vertex_idx = 0; - s_odc_tess_vertex_idx_this = 0; - s_odc_tess_buf_len = 0; - - s_odc_tess_work_buf = (GLfloat *)malloc( 100 * sizeof(GLfloat)); - s_odc_tess_buf_len = 100; - - pi_loadShaders(); - - #endif - -} - -piDC::piDC( wxDC &pdc ) : - glcanvas( NULL ), dc( &pdc ), m_pen( wxNullPen ), m_brush( wxNullBrush ) -{ -#if wxUSE_GRAPHICS_CONTEXT - pgc = NULL; - wxMemoryDC *pmdc = wxDynamicCast(dc, wxMemoryDC); - if( pmdc ) pgc = wxGraphicsContext::Create( *pmdc ); - else { - wxClientDC *pcdc = wxDynamicCast(dc, wxClientDC); - if( pcdc ) pgc = wxGraphicsContext::Create( *pcdc ); - } -#endif - m_textforegroundcolour = wxColour( 0, 0, 0 ); - m_buseTex = GetLocaleCanonicalName().IsSameAs(_T("en_US")); - workBuf = NULL; - workBufSize = 0; - s_odc_tess_work_buf = NULL; - -} - -piDC::piDC() : - glcanvas( NULL ), dc( NULL ), m_pen( wxNullPen ), m_brush( wxNullBrush ) -{ -#if wxUSE_GRAPHICS_CONTEXT - pgc = NULL; -#endif -#ifdef ocpnUSE_GL - m_textforegroundcolour = wxColour( 0, 0, 0 ); - m_textbackgroundcolour = wxTransparentColour; - wxFont font = wxFont(20, wxFONTFAMILY_DEFAULT, wxFONTSTYLE_NORMAL, wxFONTWEIGHT_NORMAL, false, "Roboto"); - SetFont(font); -#endif - m_buseTex = GetLocaleCanonicalName().IsSameAs(_T("en_US")); - workBuf = NULL; - workBufSize = 0; - s_odc_tess_work_buf = NULL; - - GLint parms[2]; - glGetIntegerv( GL_SMOOTH_LINE_WIDTH_RANGE, &parms[0] ); - GLMinSymbolLineWidth = wxMax(parms[0], 1); - - pi_loadShaders(); - -} - -piDC::~piDC() -{ -#if wxUSE_GRAPHICS_CONTEXT - if( pgc ) delete pgc; -#endif - free(workBuf); - - free(s_odc_tess_work_buf); - -} - -void piDC::SetVP(PlugIn_ViewPort *vp) -{ - configureShaders(vp->pix_width, vp->pix_height); - m_vpSize = wxSize(vp->pix_width, vp->pix_height); -} - - -void piDC::Clear() -{ - if( dc ) dc->Clear(); - else { -#ifdef ocpnUSE_GL - wxBrush tmpBrush = m_brush; - int w, h; - SetBrush( wxBrush( glcanvas->GetBackgroundColour() ) ); - glcanvas->GetSize( &w, &h ); - DrawRectangle( 0, 0, w, h ); - SetBrush( tmpBrush ); -#endif - } -} - -void piDC::SetBackground( const wxBrush &brush ) -{ - if( dc ) - dc->SetBackground( brush ); - else { -#ifdef ocpnUSE_GL - glcanvas->SetBackgroundColour( brush.GetColour() ); -#endif - } -} - -void piDC::SetPen( const wxPen &pen ) -{ - if( dc ) { - if( pen == wxNullPen ) dc->SetPen( *wxTRANSPARENT_PEN ); - else - dc->SetPen( pen ); - } else - m_pen = pen; -} - -void piDC::SetBrush( const wxBrush &brush ) -{ - if( dc ) dc->SetBrush( brush ); - else - m_brush = brush; -} - -void piDC::SetTextForeground( const wxColour &colour ) -{ - if( dc ) dc->SetTextForeground( colour ); - else - m_textforegroundcolour = colour; -} - -void piDC::SetTextBackground( const wxColour &colour ) -{ - if( dc ) dc->SetTextBackground( colour ); - else - m_textbackgroundcolour = colour; -} - -void piDC::SetFont( const wxFont& font ) -{ - if( dc ) dc->SetFont( font ); - else - m_font = font; -} - -const wxPen& piDC::GetPen() const -{ - if( dc ) return dc->GetPen(); - return m_pen; -} - -const wxBrush& piDC::GetBrush() const -{ - if( dc ) return dc->GetBrush(); - return m_brush; -} - -const wxFont& piDC::GetFont() const -{ - if( dc ) return dc->GetFont(); - return m_font; -} - -void piDC::GetSize( wxCoord *width, wxCoord *height ) const -{ - if( dc ) - dc->GetSize( width, height ); - else { -#ifdef ocpnUSE_GL - glcanvas->GetSize( width, height ); -#endif - } -} - -void piDC::SetGLAttrs( bool highQuality ) -{ -#ifdef ocpnUSE_GL - glEnable( GL_BLEND ); - - // Enable anti-aliased polys, at best quality - if( highQuality ) { - glEnable( GL_LINE_SMOOTH ); - glEnable( GL_POLYGON_SMOOTH ); - } else { - glDisable(GL_LINE_SMOOTH); - glDisable( GL_POLYGON_SMOOTH ); - } -#endif -} - -void piDC::SetGLStipple() const -{ -#ifdef ocpnUSE_GL - -#ifndef USE_ANDROID_GLES2 - switch( m_pen.GetStyle() ) { - case wxDOT: { - glLineStipple( 1, 0x3333 ); - glEnable( GL_LINE_STIPPLE ); - break; - } - case wxLONG_DASH: { - glLineStipple( 1, 0xFFF8 ); - glEnable( GL_LINE_STIPPLE ); - break; - } - case wxSHORT_DASH: { - glLineStipple( 1, 0x3F3F ); - glEnable( GL_LINE_STIPPLE ); - break; - } - case wxDOT_DASH: { - glLineStipple( 1, 0x8FF1 ); - glEnable( GL_LINE_STIPPLE ); - break; - } - default: break; - } -#endif -#endif -} - -#ifdef ocpnUSE_GL -/* draw a half circle using triangles */ -void piDrawEndCap(float x1, float y1, float t1, float angle) -{ -#ifndef USE_ANDROID_GLES2 - const int steps = 16; - float xa, ya; - bool first = true; - for(int i = 0; i <= steps; i++) { - float a = angle + M_PI/2 + M_PI/steps*i; - - float xb = x1 + t1 / 2 * cos( a ); - float yb = y1 + t1 / 2 * sin( a ); - if(first) - first = false; - else { - glVertex2f( x1, y1 ); - glVertex2f( xa, ya ); - glVertex2f( xb, yb ); - } - xa = xb, ya = yb; - } -#endif -} -#endif - -// Draws a line between (x1,y1) - (x2,y2) with a start thickness of t1 -void piDrawGLThickLine( float x1, float y1, float x2, float y2, wxPen pen, bool b_hiqual ) -{ -#ifdef ocpnUSE_GL - - float angle = atan2f( y2 - y1, x2 - x1 ); - float t1 = pen.GetWidth(); - float t2sina1 = t1 / 2 * sinf( angle ); - float t2cosa1 = t1 / 2 * cosf( angle ); - -#ifndef USE_ANDROID_GLES2 - glBegin( GL_TRIANGLES ); - - // n.b. The dwxDash interpretation for GL only allows for 2 elements in the dash table. - // The first is assumed drawn, second is assumed space - wxDash *dashes; - int n_dashes = pen.GetDashes( &dashes ); - if( n_dashes ) { - float lpix = sqrtf( powf( (float) (x1 - x2), 2) + powf( (float) (y1 - y2), 2) ); - float lrun = 0.; - float xa = x1; - float ya = y1; - float ldraw = t1 * dashes[0]; - float lspace = t1 * dashes[1]; - - while( lrun < lpix ) { - // Dash - float xb = xa + ldraw * cosf( angle ); - float yb = ya + ldraw * sinf( angle ); - - if( ( lrun + ldraw ) >= lpix ) // last segment is partial draw - { - xb = x2; - yb = y2; - } - - glVertex2f( xa + t2sina1, ya - t2cosa1 ); - glVertex2f( xb + t2sina1, yb - t2cosa1 ); - glVertex2f( xb - t2sina1, yb + t2cosa1 ); - - glVertex2f( xb - t2sina1, yb + t2cosa1 ); - glVertex2f( xa - t2sina1, ya + t2cosa1 ); - glVertex2f( xa + t2sina1, ya - t2cosa1 ); - - xa = xb; - ya = yb; - lrun += ldraw; - - // Space - xb = xa + lspace * cos( angle ); - yb = ya + lspace * sin( angle ); - - xa = xb; - ya = yb; - lrun += lspace; - } - } else { - glVertex2f( x1 + t2sina1, y1 - t2cosa1 ); - glVertex2f( x2 + t2sina1, y2 - t2cosa1 ); - glVertex2f( x2 - t2sina1, y2 + t2cosa1 ); - - glVertex2f( x2 - t2sina1, y2 + t2cosa1 ); - glVertex2f( x1 - t2sina1, y1 + t2cosa1 ); - glVertex2f( x1 + t2sina1, y1 - t2cosa1 ); - - /* wx draws a nice rounded end in dc mode, so replicate - this for opengl mode, should this be done for the dashed mode case? */ - if(pen.GetCap() == wxCAP_ROUND) { - piDrawEndCap( x1, y1, t1, angle); - piDrawEndCap( x2, y2, t1, angle + M_PI); - } - - } - - glEnd(); -#else - - // n.b. The dwxDash interpretation for GL only allows for 2 elements in the dash table. - // The first is assumed drawn, second is assumed space - wxDash *dashes; - int n_dashes = pen.GetDashes( &dashes ); - if( n_dashes ) { - float lpix = sqrtf( powf( (float) (x1 - x2), 2) + powf( (float) (y1 - y2), 2) ); - float lrun = 0.; - float xa = x1; - float ya = y1; - float ldraw = t1 * dashes[0]; - float lspace = t1 * dashes[1]; - - glUseProgram(pi_color_tri_shader_program); - - float vert[12]; - - // Disable VBO's (vertex buffer objects) for attributes. - glBindBuffer( GL_ARRAY_BUFFER, 0 ); - glBindBuffer( GL_ELEMENT_ARRAY_BUFFER, 0 ); - - GLint pos = glGetAttribLocation(pi_color_tri_shader_program, "position"); - glEnableVertexAttribArray(pos); - glVertexAttribPointer(pos, 2, GL_FLOAT, GL_FALSE, 2*sizeof(float), vert); - - // Build Transform matrix - mat4x4 I; - mat4x4_identity(I); - - GLint matloc = glGetUniformLocation(pi_color_tri_shader_program,"TransformMatrix"); - glUniformMatrix4fv( matloc, 1, GL_FALSE, (const GLfloat*)I); - - wxColor c = pen.GetColour(); - float colorv[4]; - colorv[0] = c.Red() / 255.0f; - colorv[1] = c.Green() / 255.0f; - colorv[2] = c.Blue() / 255.0f; - colorv[3] = c.Alpha() / 255.0f; - - GLint colloc = glGetUniformLocation(pi_color_tri_shader_program,"color"); - glUniform4fv(colloc, 1, colorv); - - while( lrun < lpix ) { - // Dash - float xb = xa + ldraw * cosf( angle ); - float yb = ya + ldraw * sinf( angle ); - - if( ( lrun + ldraw ) >= lpix ) // last segment is partial draw - { - xb = x2; - yb = y2; - } - - vert[0] = xa + t2sina1; vert[1] = ya - t2cosa1; vert[2] = xb + t2sina1; vert[3] = yb - t2cosa1; vert[4] = xb - t2sina1; vert[5] = yb + t2cosa1; - vert[6] = xb - t2sina1; vert[7] = yb + t2cosa1; vert[8] = xa - t2sina1; vert[9] = ya + t2cosa1; vert[10] = xa + t2sina1; vert[11] = ya - t2cosa1; - - glDrawArrays(GL_TRIANGLES, 0, 6); - - - xa = xb; - ya = yb; - lrun += ldraw; - - // Space - xb = xa + lspace * cos( angle ); - yb = ya + lspace * sin( angle ); - - xa = xb; - ya = yb; - lrun += lspace; - } - } else { - - float vert[12]; - vert[0] = x1 + t2sina1; vert[1] = y1 - t2cosa1; vert[2] = x2 + t2sina1; vert[3] = y2 - t2cosa1; vert[4] = x2 - t2sina1; vert[5] = y2 + t2cosa1; - vert[6] = x2 - t2sina1; vert[7] = y2 + t2cosa1; vert[8] = x1 - t2sina1; vert[9] = y1 + t2cosa1; vert[10] = x1 + t2sina1; vert[11] = y1 - t2cosa1; - - glUseProgram(pi_color_tri_shader_program); - - // Disable VBO's (vertex buffer objects) for attributes. - glBindBuffer( GL_ARRAY_BUFFER, 0 ); - glBindBuffer( GL_ELEMENT_ARRAY_BUFFER, 0 ); - - GLint pos = glGetAttribLocation(pi_color_tri_shader_program, "position"); - glEnableVertexAttribArray(pos); - glVertexAttribPointer(pos, 2, GL_FLOAT, GL_FALSE, 2*sizeof(float), vert); - - // Build Transform matrix - mat4x4 I; - mat4x4_identity(I); - - GLint matloc = glGetUniformLocation(pi_color_tri_shader_program,"TransformMatrix"); - glUniformMatrix4fv( matloc, 1, GL_FALSE, (const GLfloat*)I); - - wxColor c = pen.GetColour(); - float colorv[4]; - colorv[0] = c.Red() / 255.0f; - colorv[1] = c.Green() / 255.0f; - colorv[2] = c.Blue() / 255.0f; - colorv[3] = c.Alpha() / 255.0f; - - GLint colloc = glGetUniformLocation(pi_color_tri_shader_program,"color"); - glUniform4fv(colloc, 1, colorv); - - glDrawArrays(GL_TRIANGLES, 0, 6); - - - /* wx draws a nice rounded end in dc mode, so replicate - * this for opengl mode, should this be done for the dashed mode case? */ -// if(pen.GetCap() == wxCAP_ROUND) { -// DrawEndCap( x1, y1, t1, angle); -// DrawEndCap( x2, y2, t1, angle + M_PI); -// } -// - } - -#endif - -#endif -} - -void piDC::DrawLine( wxCoord x1, wxCoord y1, wxCoord x2, wxCoord y2, bool b_hiqual ) -{ - - if( dc ) - dc->DrawLine( x1, y1, x2, y2 ); -#ifdef ocpnUSE_GL - else if( ConfigurePen() ) { - bool b_draw_thick = false; - - float pen_width = wxMax(GLMinSymbolLineWidth, m_pen.GetWidth()); - - // Enable anti-aliased lines, at best quality - if( b_hiqual ) { - SetGLStipple(); - - glEnable( GL_BLEND ); -#ifndef __WXQT__ - glEnable( GL_LINE_SMOOTH ); -#endif - - if( pen_width > 1.0 ) { - GLint parms[2]; - glGetIntegerv( GL_SMOOTH_LINE_WIDTH_RANGE, &parms[0] ); - if(glGetError()) - glGetIntegerv( GL_ALIASED_LINE_WIDTH_RANGE, &parms[0] ); - if( pen_width > parms[1] ) - b_draw_thick = true; - else - glLineWidth( pen_width ); - } else - glLineWidth( pen_width ); - } else { - if( pen_width > 1 ) { - GLint parms[2]; - glGetIntegerv( GL_ALIASED_LINE_WIDTH_RANGE, &parms[0] ); - if( pen_width > parms[1] ) b_draw_thick = true; - else - glLineWidth( pen_width ); - } else - glLineWidth( pen_width ); - } - - -#ifdef USE_ANDROID_GLES2 - if( b_draw_thick ) - piDrawGLThickLine( x1, y1, x2, y2, m_pen, b_hiqual ); - else { - glUseProgram(pi_color_tri_shader_program); - - float fBuf[4]; - GLint pos = glGetAttribLocation(pi_color_tri_shader_program, "position"); - glVertexAttribPointer(pos, 2, GL_FLOAT, GL_FALSE, 2*sizeof(float), fBuf); - glEnableVertexAttribArray(pos); - -// GLint matloc = glGetUniformLocation(pi_color_tri_shader_program,"MVMatrix"); -// glUniformMatrix4fv( matloc, 1, GL_FALSE, (const GLfloat*)cc1->GetpVP()->vp_transform); - - float colorv[4]; - colorv[0] = m_pen.GetColour().Red() / 255.0f; - colorv[1] = m_pen.GetColour().Green() / 255.0f; - colorv[2] = m_pen.GetColour().Blue() / 255.0f; - colorv[3] = m_pen.GetColour().Alpha() / 255.0f; - - GLint colloc = glGetUniformLocation(pi_color_tri_shader_program,"color"); - glUniform4fv(colloc, 1, colorv); - - wxDash *dashes; - int n_dashes = m_pen.GetDashes( &dashes ); - if( n_dashes ) { - float angle = atan2f( (float) ( y2 - y1 ), (float) ( x2 - x1 ) ); - float cosa = cosf( angle ); - float sina = sinf( angle ); - float t1 = m_pen.GetWidth(); - - float lpix = sqrtf( powf(x1 - x2, 2) + powf(y1 - y2, 2) ); - float lrun = 0.; - float xa = x1; - float ya = y1; - float ldraw = t1 * dashes[0]; - float lspace = t1 * dashes[1]; - - ldraw = wxMax(ldraw, 4.0); - lspace = wxMax(lspace, 4.0); - lpix = wxMin(lpix, 2000.0); - - while( lrun < lpix ) { - // Dash - float xb = xa + ldraw * cosa; - float yb = ya + ldraw * sina; - - if( ( lrun + ldraw ) >= lpix ) // last segment is partial draw - { - xb = x2; - yb = y2; - } - - fBuf[0] = xa; - fBuf[1] = ya; - fBuf[2] = xb; - fBuf[3] = yb; - - glDrawArrays(GL_LINES, 0, 2); - - xa = xa + ( lspace + ldraw ) * cosa; - ya = ya + ( lspace + ldraw ) * sina; - lrun += lspace + ldraw; - - } - } else // not dashed - { - fBuf[0] = x1; - fBuf[1] = y1; - fBuf[2] = x2; - fBuf[3] = y2; - - glDrawArrays(GL_LINES, 0, 2); - } - } - -#else - if( b_draw_thick ) - piDrawGLThickLine( x1, y1, x2, y2, m_pen, b_hiqual ); - else { - wxDash *dashes; - int n_dashes = m_pen.GetDashes( &dashes ); - if( n_dashes ) { - float angle = atan2f( (float) ( y2 - y1 ), (float) ( x2 - x1 ) ); - float cosa = cosf( angle ); - float sina = sinf( angle ); - float t1 = m_pen.GetWidth(); - - float lpix = sqrtf( powf(x1 - x2, 2) + powf(y1 - y2, 2) ); - float lrun = 0.; - float xa = x1; - float ya = y1; - float ldraw = t1 * dashes[0]; - float lspace = t1 * dashes[1]; - - ldraw = wxMax(ldraw, 4.0); - lspace = wxMax(lspace, 4.0); - lpix = wxMin(lpix, 2000.0); - - glBegin( GL_LINES ); - while( lrun < lpix ) { - // Dash - float xb = xa + ldraw * cosa; - float yb = ya + ldraw * sina; - - if( ( lrun + ldraw ) >= lpix ) // last segment is partial draw - { - xb = x2; - yb = y2; - } - - glVertex2f( xa, ya ); - glVertex2f( xb, yb ); - - xa = xa + ( lspace + ldraw ) * cosa; - ya = ya + ( lspace + ldraw ) * sina; - lrun += lspace + ldraw; - - } - glEnd(); - } else // not dashed - { - glBegin( GL_LINES ); - glVertex2i( x1, y1 ); - glVertex2i( x2, y2 ); - glEnd(); - } - } -#endif - glDisable( GL_LINE_STIPPLE ); - - if( b_hiqual ) - glDisable( GL_LINE_SMOOTH ); - glDisable( GL_BLEND ); - } -#endif -} - -// Draws thick lines from triangles -void piDrawGLThickLines( int n, wxPoint points[],wxCoord xoffset, - wxCoord yoffset, wxPen pen, bool b_hiqual ) -{ -#ifdef ocpnUSE_GL - if(n < 2) - return; - -#ifdef USE_ANDROID_GLES2 - wxPoint p0 = points[0]; - for( int i = 1; i < n; i++ ) { - piDrawGLThickLine( p0.x + xoffset, p0.y + yoffset, points[i].x + xoffset, - points[i].y + yoffset, pen, b_hiqual ); - p0 = points[i]; - } - return; -#else - - /* for dashed case, for now just draw thick lines */ - wxDash *dashes; - if( pen.GetDashes( &dashes ) ) - { - wxPoint p0 = points[0]; - for( int i = 1; i < n; i++ ) { - piDrawGLThickLine( p0.x + xoffset, p0.y + yoffset, points[i].x + xoffset, - points[i].y + yoffset, pen, b_hiqual ); - p0 = points[i]; - } - return; - } - - /* cull zero segments */ - wxPoint *cpoints = new wxPoint[n]; - cpoints[0] = points[0]; - int c = 1; - for( int i = 1; i < n; i++ ) { - if(points[i].x != points[i-1].x || points[i].y != points[i-1].y) - cpoints[c++] = points[i]; - } - - /* nicer than than rendering each segment separately, this is because thick - line segments drawn as rectangles which have different angles have - rectangles which overlap and also leave a gap. - This code properly calculates vertexes for adjoining segments */ - float t1 = pen.GetWidth(); - - float x0 = cpoints[0].x, y0 = cpoints[0].y, x1 = cpoints[1].x, y1 = cpoints[1].y; - float a0 = atan2f( y1 - y0, x1 - x0 ); - - // It is also possible to use triangle strip, (and triangle fan for endcap) - // to reduce vertex count.. is it worth it? - glBegin( GL_TRIANGLES ); - - float t2sina0 = t1 / 2 * sinf( a0 ); - float t2cosa0 = t1 / 2 * cosf( a0 ); - - for( int i = 1; i < c; i++ ) { - float x2, y2; - float a1; - - if(i < c - 1) { - x2 = cpoints[i + 1].x, y2 = cpoints[i + 1].y; - a1 = atan2f( y2 - y1, x2 - x1 ); - } else { - x2 = x1, y2 = y1; - a1 = a0; - } - - float aa = (a0 + a1) / 2; - float diff = fabsf(a0 - a1); - if(diff > M_PI) - diff -= 2 * (float)M_PI; - float rad = t1 / 2 / wxMax(cosf(diff / 2), .4); - - float t2sina1 = rad * sinf( aa ); - float t2cosa1 = rad * cosf( aa ); - - glVertex2f( x1 + t2sina1, y1 - t2cosa1 ); - glVertex2f( x1 - t2sina1, y1 + t2cosa1 ); - glVertex2f( x0 + t2sina0, y0 - t2cosa0 ); - - glVertex2f( x0 - t2sina0, y0 + t2cosa0 ); - glVertex2f( x0 + t2sina0, y0 - t2cosa0 ); - - float dot = t2sina0 * t2sina1 + t2cosa0 * t2cosa1; - if(dot > 0) - glVertex2f( x1 - t2sina1, y1 + t2cosa1 ); - else - glVertex2f( x1 + t2sina1, y1 - t2cosa1 ); - - x0 = x1, x1 = x2; - y0 = y1, y1 = y2; - a0 = a1; - t2sina0 = t2sina1, t2cosa0 = t2cosa1; - } - - if(pen.GetCap() == wxCAP_ROUND) { - piDrawEndCap( x0, y0, t1, a0); - piDrawEndCap( x0, y0, t1, a0 + M_PI); - } - - glEnd(); - - glPopAttrib(); - - delete [] cpoints; - #endif - #endif - } - - void piDC::DrawLines( int n, wxPoint points[], wxCoord xoffset, wxCoord yoffset, bool b_hiqual ) -{ - if( dc ) - dc->DrawLines( n, points, xoffset, yoffset ); -#ifdef ocpnUSE_GL - else if( ConfigurePen() ) { - -#ifdef __WXQT__ - SetGLAttrs( false ); // Some QT platforms (Android) have trouble with GL_BLEND / GL_LINE_SMOOTH -#else - SetGLAttrs( b_hiqual ); -#endif - bool b_draw_thick = false; - - glDisable( GL_LINE_STIPPLE ); - SetGLStipple(); - - // Enable anti-aliased lines, at best quality - if( b_hiqual ) { - if( m_pen.GetWidth() > 1 ) { - GLint parms[2]; - glGetIntegerv( GL_SMOOTH_LINE_WIDTH_RANGE, &parms[0] ); - if(glGetError()) - glGetIntegerv( GL_ALIASED_LINE_WIDTH_RANGE, &parms[0] ); - - if( m_pen.GetWidth() > parms[1] ) - b_draw_thick = true; - else - glLineWidth( wxMax(GLMinSymbolLineWidth, m_pen.GetWidth()) ); - } else - glLineWidth( wxMax(GLMinSymbolLineWidth, 1) ); - } else { - if( m_pen.GetWidth() > 1 ) { - GLint parms[2]; - glGetIntegerv( GL_ALIASED_LINE_WIDTH_RANGE, &parms[0] ); - if( m_pen.GetWidth() > parms[1] ) b_draw_thick = true; - else - glLineWidth( wxMax(GLMinSymbolLineWidth, m_pen.GetWidth()) ); - } else - glLineWidth( wxMax(GLMinSymbolLineWidth, 1) ); - } - - if( b_draw_thick) { - piDrawGLThickLines( n, points, xoffset, yoffset, m_pen, b_hiqual ); - - if( b_hiqual ) { - glDisable( GL_LINE_STIPPLE ); - glDisable( GL_POLYGON_SMOOTH ); - } - - return; - } - -#ifndef USE_ANDROID_GLES2 - - glBegin( GL_LINE_STRIP ); - for( int i = 0; i < n; i++ ) - glVertex2i( points[i].x + xoffset, points[i].y + yoffset ); - glEnd(); - -#else - - // Grow the work buffer as necessary - if( workBufSize < (size_t)n*2 ){ - workBuf = (float *)realloc(workBuf, (n*4) * sizeof(float)); - workBufSize = n*4; - } - - for( int i = 0; i < n; i++ ){ - workBuf[i*2] = points[i].x + xoffset; - workBuf[(i*2) + 1] = points[i].y + yoffset; - } - - glUseProgram(pi_color_tri_shader_program); - - GLint pos = glGetAttribLocation(pi_color_tri_shader_program, "position"); - glVertexAttribPointer(pos, 2, GL_FLOAT, GL_FALSE, 2*sizeof(float), workBuf); - glEnableVertexAttribArray(pos); -// GLint matloc = glGetUniformLocation(pi_color_tri_shader_program,"MVMatrix"); -// glUniformMatrix4fv( matloc, 1, GL_FALSE, (const GLfloat*)cc1->GetpVP()->vp_transform); - - float colorv[4]; - colorv[0] = m_pen.GetColour().Red() / 255.0f; - colorv[1] = m_pen.GetColour().Green() / 255.0f; - colorv[2] = m_pen.GetColour().Blue() / 255.0f; - colorv[3] = m_pen.GetColour().Alpha() / 255.0f; - - GLint colloc = glGetUniformLocation(pi_color_tri_shader_program,"color"); - glUniform4fv(colloc, 1, colorv); - - glDrawArrays(GL_LINE_STRIP, 0, n); - - -#endif - - - if( b_hiqual ) { - glDisable( GL_LINE_STIPPLE ); - glDisable( GL_POLYGON_SMOOTH ); - } - } -#endif -} - -void piDC::StrokeLine( wxCoord x1, wxCoord y1, wxCoord x2, wxCoord y2 ) -{ -#if wxUSE_GRAPHICS_CONTEXT - if( pgc ) { - pgc->SetPen( dc->GetPen() ); - pgc->StrokeLine( x1, y1, x2, y2 ); - - dc->CalcBoundingBox( x1, y1 ); - dc->CalcBoundingBox( x2, y2 ); - } else -#endif - DrawLine( x1, y1, x2, y2, true ); -} - -void piDC::StrokeLines( int n, wxPoint *points) { - if(n < 2) /* optimization and also to avoid assertion in pgc->StrokeLines */ - return; - -#if wxUSE_GRAPHICS_CONTEXT - if( pgc ) { - wxPoint2DDouble* dPoints = (wxPoint2DDouble*) malloc( n * sizeof( wxPoint2DDouble ) ); - for( int i=0; iSetPen( dc->GetPen() ); - pgc->StrokeLines( n, dPoints ); - free( dPoints ); - } else -#endif - DrawLines( n, points, 0, 0, true ); -} - -void piDC::DrawGLLineArray( int n, float *vertex_array, float *color_array, bool b_hiqual ) -{ -#ifdef ocpnUSE_GL - if( ConfigurePen() ) { - - #ifdef __WXQT__ - SetGLAttrs( false ); // Some QT platforms (Android) have trouble with GL_BLEND / GL_LINE_SMOOTH - #else - SetGLAttrs( b_hiqual ); - #endif - //bool b_draw_thick = false; - - glDisable( GL_LINE_STIPPLE ); - SetGLStipple(); - - // Enable anti-aliased lines, at best quality - if( b_hiqual ) { - if( m_pen.GetWidth() > 1 ) { - //GLint parms[2]; - //glGetIntegerv( GL_SMOOTH_LINE_WIDTH_RANGE, &parms[0] ); - //if(glGetError()) - //glGetIntegerv( GL_ALIASED_LINE_WIDTH_RANGE, &parms[0] ); - - glLineWidth( wxMax(GLMinSymbolLineWidth, m_pen.GetWidth()) ); - } else - glLineWidth( wxMax(GLMinSymbolLineWidth, 1) ); - } else { - if( m_pen.GetWidth() > 1 ) { - //GLint parms[2]; - //glGetIntegerv( GL_ALIASED_LINE_WIDTH_RANGE, &parms[0] ); - glLineWidth( wxMax(GLMinSymbolLineWidth, m_pen.GetWidth()) ); - } else - glLineWidth( wxMax(GLMinSymbolLineWidth, 1) ); - } - -#ifndef USE_ANDROID_GLES2 - - glBegin( GL_LINE_STRIP ); - for( int i = 0; i < n; i++ ) - glVertex2f( vertex_array[2*i], vertex_array[2*i+1] ); - glEnd(); - -#else - glUseProgram(pi_colorv_tri_shader_program); - - GLint pos = glGetAttribLocation(pi_colorv_tri_shader_program, "position"); - glVertexAttribPointer(pos, 2, GL_FLOAT, GL_FALSE, 2*sizeof(float), vertex_array); - glEnableVertexAttribArray(pos); - - GLint colloc = glGetAttribLocation(pi_colorv_tri_shader_program, "colorv"); - glVertexAttribPointer(colloc, 4, GL_FLOAT, GL_FALSE, 4*sizeof(float), color_array); - glEnableVertexAttribArray(colloc); - - glDrawArrays(GL_LINES, 0, n); -#endif - if( b_hiqual ) { - glDisable( GL_LINE_STIPPLE ); - glDisable( GL_POLYGON_SMOOTH ); - } - } -#endif -} - - -void piDC::DrawRectangle( wxCoord x, wxCoord y, wxCoord w, wxCoord h ) -{ - if( dc ) - dc->DrawRectangle( x, y, w, h ); -#ifdef ocpnUSE_GL - else { -#ifndef USE_ANDROID_GLES2 - if( ConfigureBrush() ) { - glBegin( GL_QUADS ); - glVertex2i( x, y ); - glVertex2i( x + w, y ); - glVertex2i( x + w, y + h ); - glVertex2i( x, y + h ); - glEnd(); - } - - if( ConfigurePen() ) { - glBegin( GL_LINE_LOOP ); - glVertex2i( x, y ); - glVertex2i( x + w, y ); - glVertex2i( x + w, y + h ); - glVertex2i( x, y + h ); - glEnd(); - } -#endif - } -#endif -} - -/* draw the arc along corners */ -static void drawrrhelper( wxCoord x0, wxCoord y0, wxCoord r, int quadrant, int steps ) -{ -#ifdef ocpnUSE_GL -#ifndef USE_ANDROID_GLES2 - float step = 1.0/steps, rs = 2.0*r*step, rss = rs*step, x, y, dx, dy, ddx, ddy; - switch(quadrant) { - case 0: x = r, y = 0, dx = 0, dy = -rs, ddx = -rss, ddy = rss; break; - case 1: x = 0, y = -r, dx = -rs, dy = 0, ddx = rss, ddy = rss; break; - case 2: x = -r, y = 0, dx = 0, dy = rs, ddx = rss, ddy = -rss; break; - case 3: x = 0, y = r, dx = rs, dy = 0, ddx = -rss, ddy = -rss; break; - default: return; // avoid unitialized compiler warnings - } - - for(int i=0; iDrawRoundedRectangle( x, y, w, h, r ); -#ifdef ocpnUSE_GL - else { - r++; - int steps = ceil(sqrt((float)r)); - - wxCoord x1 = x + r, x2 = x + w - r; - wxCoord y1 = y + r, y2 = y + h - r; - -#ifdef USE_ANDROID_GLES2 - - // Grow the work buffer as necessary - size_t bufReq = steps * 8 * 2 * sizeof(float); // large, to be sure - - if( workBufSize < bufReq ){ - workBuf = (float *)realloc(workBuf, bufReq); - workBufSize = bufReq; - } - workBufIndex = 0; - - drawrrhelperGLES2( x2, y1, r, 0, steps ); - drawrrhelperGLES2( x1, y1, r, 1, steps ); - drawrrhelperGLES2( x1, y2, r, 2, steps ); - drawrrhelperGLES2( x2, y2, r, 3, steps ); - - glUseProgram( pi_color_tri_shader_program ); - - // Get pointers to the attributes in the program. - GLint mPosAttrib = glGetAttribLocation( pi_color_tri_shader_program, "position" ); - - // Disable VBO's (vertex buffer objects) for attributes. - glBindBuffer( GL_ARRAY_BUFFER, 0 ); - glBindBuffer( GL_ELEMENT_ARRAY_BUFFER, 0 ); - - glVertexAttribPointer( mPosAttrib, 2, GL_FLOAT, GL_FALSE, 0, workBuf ); - glEnableVertexAttribArray( mPosAttrib ); - - - // Border color - float bcolorv[4]; - bcolorv[0] = m_brush.GetColour().Red() / 255.0f; - bcolorv[1] = m_brush.GetColour().Green() / 255.0f; - bcolorv[2] = m_brush.GetColour().Blue() / 255.0f; - bcolorv[3] = m_brush.GetColour().Alpha() / 255.0f; - - GLint bcolloc = glGetUniformLocation(pi_color_tri_shader_program,"color"); - glUniform4fv(bcolloc, 1, bcolorv); - - - float angle = 0.; - float xoffset = 0; - float yoffset = 0; - - // Rotate - mat4x4 I, Q; - mat4x4_identity(I); - mat4x4_rotate_Z(Q, I, angle); - - // Translate - Q[3][0] = xoffset; - Q[3][1] = yoffset; - - GLint matloc = glGetUniformLocation(pi_color_tri_shader_program,"TransformMatrix"); - glUniformMatrix4fv( matloc, 1, GL_FALSE, (const GLfloat*)Q); - - // Perform the actual drawing. - glDrawArrays(GL_TRIANGLE_FAN, 0, workBufIndex/2); - - // Restore the per-object transform to Identity Matrix - mat4x4 IM; - mat4x4_identity(IM); - GLint matlocf = glGetUniformLocation(pi_color_tri_shader_program,"TransformMatrix"); - glUniformMatrix4fv( matlocf, 1, GL_FALSE, (const GLfloat*)IM); - - -#else - if( ConfigureBrush() ) { - glBegin( GL_TRIANGLE_FAN ); - drawrrhelper( x2, y1, r, 0, steps ); - drawrrhelper( x1, y1, r, 1, steps ); - drawrrhelper( x1, y2, r, 2, steps ); - drawrrhelper( x2, y2, r, 3, steps ); - glEnd(); - } - - if( ConfigurePen() ) { - glBegin( GL_LINE_LOOP ); - drawrrhelper( x2, y1, r, 0, steps ); - drawrrhelper( x1, y1, r, 1, steps ); - drawrrhelper( x1, y2, r, 2, steps ); - drawrrhelper( x2, y2, r, 3, steps ); - glEnd(); - } -#endif - } -#endif -} - -void piDC::DrawCircle( wxCoord x, wxCoord y, wxCoord radius ) -{ -#ifdef USE_ANDROID_GLES2 - - // Enable anti-aliased lines, at best quality - glEnable( GL_BLEND ); - - float coords[8]; - coords[0] = x - radius; coords[1] = y + radius; - coords[2] = x + radius; coords[3] = y + radius; - coords[4] = x - radius; coords[5] = y - radius; - coords[6] = x + radius; coords[7] = y - radius; - - glUseProgram( pi_circle_filled_shader_program ); - - // Get pointers to the attributes in the program. - GLint mPosAttrib = glGetAttribLocation( pi_circle_filled_shader_program, "aPos" ); - - // Disable VBO's (vertex buffer objects) for attributes. - glBindBuffer( GL_ARRAY_BUFFER, 0 ); - glBindBuffer( GL_ELEMENT_ARRAY_BUFFER, 0 ); - - glVertexAttribPointer( mPosAttrib, 2, GL_FLOAT, GL_FALSE, 0, coords ); - glEnableVertexAttribArray( mPosAttrib ); - - // Circle radius - GLint radiusloc = glGetUniformLocation(pi_circle_filled_shader_program,"circle_radius"); - glUniform1f(radiusloc, radius); - - // Circle center point - GLint centerloc = glGetUniformLocation(pi_circle_filled_shader_program,"circle_center"); - float ctrv[2]; - ctrv[0] = x; ctrv[1] = m_vpSize.y - y; - glUniform2fv(centerloc, 1, ctrv); - - // Circle color - float colorv[4]; - colorv[0] = m_brush.GetColour().Red() / 255.0f; - colorv[1] = m_brush.GetColour().Green() / 255.0f; - colorv[2] = m_brush.GetColour().Blue() / 255.0f; - colorv[3] = (m_brush == wxNullBrush || m_brush.GetStyle() == wxBRUSHSTYLE_TRANSPARENT) ? 0.0 : 1.0; - - GLint colloc = glGetUniformLocation(pi_circle_filled_shader_program,"circle_color"); - glUniform4fv(colloc, 1, colorv); - - // Border color - float bcolorv[4]; - bcolorv[0] = m_pen.GetColour().Red() / 255.0f; - bcolorv[1] = m_pen.GetColour().Green() / 255.0f; - bcolorv[2] = m_pen.GetColour().Blue() / 255.0f; - bcolorv[3] = m_pen.GetColour().Alpha() / 255.0f; - - GLint bcolloc = glGetUniformLocation(pi_circle_filled_shader_program,"border_color"); - glUniform4fv(bcolloc, 1, bcolorv); - - // Border Width - GLint borderWidthloc = glGetUniformLocation(pi_circle_filled_shader_program,"border_width"); - glUniform1f(borderWidthloc, m_pen.GetWidth()); - - -// GLint matloc = glGetUniformLocation(pi_circle_filled_shader_program,"MVMatrix"); -// glUniformMatrix4fv( matloc, 1, GL_FALSE, (const GLfloat*)(cc1->GetpVP()->vp_transform) ); - - // Perform the actual drawing. - glDrawArrays(GL_TRIANGLE_STRIP, 0, 4); - - glDisable( GL_BLEND ); - -#else - DrawEllipse( x - radius, y - radius, 2 * radius, 2 * radius ); -#endif -} - -void piDC::StrokeCircle( wxCoord x, wxCoord y, wxCoord radius ) -{ -#if wxUSE_GRAPHICS_CONTEXT - if( pgc ) { - wxGraphicsPath gpath = pgc->CreatePath(); - gpath.AddCircle( x, y, radius ); - - pgc->SetPen( GetPen() ); - pgc->SetBrush( GetBrush() ); - pgc->DrawPath( gpath ); - - // keep dc dirty box up-to-date - dc->CalcBoundingBox( x + radius + 2, y + radius + 2 ); - dc->CalcBoundingBox( x - radius - 2, y - radius - 2 ); - } else -#endif - DrawCircle( x, y, radius ); -} - -void piDC::DrawEllipse( wxCoord x, wxCoord y, wxCoord width, wxCoord height ) -{ - if( dc ) - dc->DrawEllipse( x, y, width, height ); -#ifdef ocpnUSE_GL - else { - float r1 = width / 2, r2 = height / 2; - float cx = x + r1, cy = y + r2; - - // Enable anti-aliased lines, at best quality - glEnable( GL_BLEND ); - - /* formula for variable step count to produce smooth ellipse */ - float steps = floorf(wxMax(sqrtf(sqrtf((float)(width*width + height*height))), 1) * M_PI); - -#ifndef USE_ANDROID_GLES2 - if( ConfigureBrush() ) { - glBegin( GL_TRIANGLE_FAN ); - glVertex2f( cx, cy ); - for( float a = 0; a <= 2 * M_PI + M_PI/steps; a += 2 * M_PI / steps ) - glVertex2f( cx + r1 * sinf( a ), cy + r2 * cosf( a ) ); - glEnd(); - } - - if( ConfigurePen() ) { - glBegin( GL_LINE_LOOP ); - for( float a = 0; a < 2 * M_PI - M_PI/steps; a += 2 * M_PI / steps ) - glVertex2f( cx + r1 * sinf( a ), cy + r2 * cosf( a ) ); - glEnd(); - } -#else -#endif - glDisable( GL_BLEND ); - } -#endif -} - -void piDC::DrawPolygon( int n, wxPoint points[], wxCoord xoffset, wxCoord yoffset, float scale, float angle ) -{ - if( dc ) - dc->DrawPolygon( n, points, xoffset, yoffset ); -#ifdef ocpnUSE_GL - else { - -#ifdef __WXQT__ - SetGLAttrs( false ); // Some QT platforms (Android) have trouble with GL_BLEND / GL_LINE_SMOOTH -#else - SetGLAttrs( true ); -#endif - -#ifdef USE_ANDROID_GLES2 - if(n > 4) - DrawPolygonTessellated( n, points, xoffset, yoffset); - else{ // n = 3 or 4, most common case for pre-tesselated shapes - - - // Grow the work buffer as necessary - if( workBufSize < (size_t)n*2 ){ - workBuf = (float *)realloc(workBuf, (n*4) * sizeof(float)); - workBufSize = n*4; - } - - for( int i = 0; i < n; i++ ){ - workBuf[i*2] = (points[i].x * scale); // + xoffset; - workBuf[i*2 + 1] = (points[i].y * scale); // + yoffset; - } - - glUseProgram( pi_color_tri_shader_program ); - - // Get pointers to the attributes in the program. - GLint mPosAttrib = glGetAttribLocation( pi_color_tri_shader_program, "position" ); - - // Disable VBO's (vertex buffer objects) for attributes. - glBindBuffer( GL_ARRAY_BUFFER, 0 ); - glBindBuffer( GL_ELEMENT_ARRAY_BUFFER, 0 ); - - glVertexAttribPointer( mPosAttrib, 2, GL_FLOAT, GL_FALSE, 0, workBuf ); - glEnableVertexAttribArray( mPosAttrib ); - - - // Border color - float bcolorv[4]; - bcolorv[0] = m_pen.GetColour().Red() / 255.0f; - bcolorv[1] = m_pen.GetColour().Green() / 255.0f; - bcolorv[2] = m_pen.GetColour().Blue() / 255.0f; - bcolorv[3] = m_pen.GetColour().Alpha() / 255.0f; - - GLint bcolloc = glGetUniformLocation(pi_color_tri_shader_program,"color"); - glUniform4fv(bcolloc, 1, bcolorv); - - - // Rotate - mat4x4 I, Q; - mat4x4_identity(I); - mat4x4_rotate_Z(Q, I, angle); - - // Translate - Q[3][0] = xoffset; - Q[3][1] = yoffset; - - GLint matloc = glGetUniformLocation(pi_color_tri_shader_program,"TransformMatrix"); - glUniformMatrix4fv( matloc, 1, GL_FALSE, (const GLfloat*)Q); - - // Perform the actual drawing. - glDrawArrays(GL_LINE_LOOP, 0, n); - - // Fill color - bcolorv[0] = m_brush.GetColour().Red() / 255.0f; - bcolorv[1] = m_brush.GetColour().Green() / 255.0f; - bcolorv[2] = m_brush.GetColour().Blue() / 255.0f; - bcolorv[3] = m_brush.GetColour().Alpha() / 255.0f; - - glUniform4fv(bcolloc, 1, bcolorv); - - // For the simple common case of a convex rectangle... - // swizzle the array points to enable GL_TRIANGLE_STRIP - if(n == 4){ - float x1 = workBuf[4]; - float y1 = workBuf[5]; - workBuf[4] = workBuf[6]; - workBuf[5] = workBuf[7]; - workBuf[6] = x1; - workBuf[7] = y1; - - glDrawArrays(GL_TRIANGLE_STRIP, 0, 4); - } - else if(n == 3){ - glDrawArrays(GL_TRIANGLES, 0, 3); - } - - // Restore the per-object transform to Identity Matrix - mat4x4 IM; - mat4x4_identity(IM); - GLint matlocf = glGetUniformLocation(pi_color_tri_shader_program,"TransformMatrix"); - glUniformMatrix4fv( matlocf, 1, GL_FALSE, (const GLfloat*)IM); - - } - - -#else - - if( ConfigureBrush() ) { - glEnable( GL_POLYGON_SMOOTH ); - glBegin( GL_POLYGON ); - for( int i = 0; i < n; i++ ) - glVertex2f( (points[i].x * scale) + xoffset, (points[i].y * scale) + yoffset ); - glEnd(); - glDisable( GL_POLYGON_SMOOTH ); - } - - if( ConfigurePen() ) { - glEnable( GL_LINE_SMOOTH ); - glBegin( GL_LINE_LOOP ); - for( int i = 0; i < n; i++ ) - glVertex2f( (points[i].x * scale) + xoffset, (points[i].y * scale) + yoffset ); - glEnd(); - glDisable( GL_LINE_SMOOTH ); - } -#endif - - SetGLAttrs( false ); - - } -#endif -} - -#ifdef ocpnUSE_GL - -// GL callbacks - -typedef union { - GLdouble data[6]; - struct sGLvertex { - GLdouble x; - GLdouble y; - GLdouble z; - GLdouble r; - GLdouble g; - GLdouble b; - } info; -} GLvertex; - -#ifndef USE_ANDROID_GLES2 -static void piDCcombineCallback( GLdouble coords[3], GLdouble *vertex_data[4], GLfloat weight[4], - GLdouble **dataOut ) -{ - GLvertex *vertex; - - vertex = new GLvertex(); - pi_gTesselatorVertices.Add(vertex ); - - vertex->info.x = coords[0]; - vertex->info.y = coords[1]; - vertex->info.z = coords[2]; - - for( int i = 3; i < 6; i++ ) { - vertex->data[i] = weight[0] * vertex_data[0][i] + weight[1] * vertex_data[1][i]; - } - - *dataOut = &(vertex->data[0]); -} - -static void piDCvertexCallback( GLvoid* arg ) -{ - GLvertex* vertex; - vertex = (GLvertex*) arg; - glVertex2f( (float)vertex->info.x, (float)vertex->info.y ); -} - -static void piDCerrorCallback( GLenum errorCode ) -{ -// const GLubyte *estring; -// estring = gluErrorString(errorCode); - //wxLogMessage( _T("OpenGL Tessellation Error: %s"), (char *)estring ); -} - -static void piDCbeginCallback( GLenum type ) -{ - glBegin( type ); -} - -static void piDCendCallback() -{ - glEnd(); -} -#endif - - -// GLSL callbacks - - -#ifdef USE_ANDROID_GLES2 - -static std::list odc_combine_work_data; -static void pi_odc_combineCallbackD(GLdouble coords[3], - GLdouble *vertex_data[4], - GLfloat weight[4], GLdouble **dataOut, void *data ) -{ -// double *vertex = new double[3]; -// odc_combine_work_data.push_back(vertex); -// memcpy(vertex, coords, 3*(sizeof *coords)); -// *dataOut = vertex; -} - -void pi_odc_vertexCallbackD_GLSL(GLvoid *vertex, void *data) -{ - piDC* pDC = (piDC*)data; - - // Grow the work buffer if necessary - if(pDC->s_odc_tess_vertex_idx > pDC->s_odc_tess_buf_len - 8) - { - int new_buf_len = pDC->s_odc_tess_buf_len + 100; - GLfloat * tmp = pDC->s_odc_tess_work_buf; - - pDC->s_odc_tess_work_buf = (GLfloat *)realloc(pDC->s_odc_tess_work_buf, new_buf_len * sizeof(GLfloat)); - if (NULL == pDC->s_odc_tess_work_buf) - { - free(tmp); - tmp = NULL; - } - else - pDC->s_odc_tess_buf_len = new_buf_len; - } - - GLdouble *pointer = (GLdouble *) vertex; - - pDC->s_odc_tess_work_buf[pDC->s_odc_tess_vertex_idx++] = (float)pointer[0]; - pDC->s_odc_tess_work_buf[pDC->s_odc_tess_vertex_idx++] = (float)pointer[1]; - - pDC->s_odc_nvertex++; -} - -void pi_odc_beginCallbackD_GLSL( GLenum mode, void *data) -{ - piDC* pDC = (piDC*)data; - pDC->s_odc_tess_vertex_idx_this = pDC->s_odc_tess_vertex_idx; - pDC->s_odc_tess_mode = mode; - pDC->s_odc_nvertex = 0; -} - -void pi_odc_endCallbackD_GLSL(void *data) -{ - //qDebug() << "End" << s_odc_nvertex << s_odc_tess_buf_len << s_odc_tess_vertex_idx << s_odc_tess_vertex_idx_this; - //End 5 100 10 0 -#if 1 - piDC* pDC = (piDC*)data; - - glUseProgram(pi_color_tri_shader_program); - - // Disable VBO's (vertex buffer objects) for attributes. - glBindBuffer( GL_ARRAY_BUFFER, 0 ); - glBindBuffer( GL_ELEMENT_ARRAY_BUFFER, 0 ); - - float *bufPt = &(pDC->s_odc_tess_work_buf[pDC->s_odc_tess_vertex_idx_this]); - GLint pos = glGetAttribLocation(pi_color_tri_shader_program, "position"); - glVertexAttribPointer(pos, 2, GL_FLOAT, GL_FALSE, 2*sizeof(float), bufPt); - glEnableVertexAttribArray(pos); - - ///GLint matloc = glGetUniformLocation(pi_color_tri_shader_program,"MVMatrix"); - ///glUniformMatrix4fv( matloc, 1, GL_FALSE, (const GLfloat*)s_tessVP.vp_transform); - - float colorv[4]; - wxColour c = pDC->GetBrush().GetColour(); - - colorv[0] = c.Red() / 255.0f; - colorv[1] = c.Green() / 255.0f; - colorv[2] = c.Blue() / 255.0f; - colorv[3] = c.Alpha() / 255.0f; - - GLint colloc = glGetUniformLocation(pi_color_tri_shader_program,"color"); - glUniform4fv(colloc, 1, colorv); - - glDrawArrays(pDC->s_odc_tess_mode, 0, pDC->s_odc_nvertex); -#endif -} -#endif - - -#endif //#ifdef ocpnUSE_GL - -void piDC::DrawPolygonTessellated( int n, wxPoint points[], wxCoord xoffset, wxCoord yoffset ) -{ - if( dc ) - dc->DrawPolygon( n, points, xoffset, yoffset ); -#ifdef ocpnUSE_GL - else { -#if !defined(ocpnUSE_GLES) || defined(USE_ANDROID_GLES2) // tessalator in glues is broken - if( n < 5 ) -# endif - { - DrawPolygon( n, points, xoffset, yoffset ); - return; - } - - - -#ifdef USE_ANDROID_GLES2 - m_tobj = gluNewTess(); - s_odc_tess_vertex_idx = 0; - - gluTessCallback( m_tobj, GLU_TESS_VERTEX_DATA, (_GLUfuncptr) &pi_odc_vertexCallbackD_GLSL ); - gluTessCallback( m_tobj, GLU_TESS_BEGIN_DATA, (_GLUfuncptr) &pi_odc_beginCallbackD_GLSL ); - gluTessCallback( m_tobj, GLU_TESS_END_DATA, (_GLUfuncptr) &pi_odc_endCallbackD_GLSL ); - gluTessCallback( m_tobj, GLU_TESS_COMBINE_DATA, (_GLUfuncptr) &pi_odc_combineCallbackD ); - //s_tessVP = vp; - - gluTessNormal( m_tobj, 0, 0, 1); - gluTessProperty( m_tobj, GLU_TESS_WINDING_RULE, GLU_TESS_WINDING_NONZERO ); - - if( ConfigureBrush() ) { - gluTessBeginPolygon( m_tobj, this ); - gluTessBeginContour( m_tobj ); - - for( int i = 0; i < n; i++ ) { - double *p = new double[6]; - p[0] = points[i].x, p[1] = points[i].y, p[2] = 0; - gluTessVertex(m_tobj, p, p); - //odc_combine_work_data.push_back(p); - - } - gluTessEndContour( m_tobj ); - gluTessEndPolygon( m_tobj ); - } - - gluDeleteTess(m_tobj); - - -// for(std::list::iterator i = odc_combine_work_data.begin(); i!=odc_combine_work_data.end(); i++) -// delete [] *i; -// odc_combine_work_data.clear(); - - } -#else - static GLUtesselator *tobj = NULL; - if( ! tobj ) tobj = gluNewTess(); - - gluTessCallback( tobj, GLU_TESS_VERTEX, (_GLUfuncptr) &piDCvertexCallback ); - gluTessCallback( tobj, GLU_TESS_BEGIN, (_GLUfuncptr) &piDCbeginCallback ); - gluTessCallback( tobj, GLU_TESS_END, (_GLUfuncptr) &piDCendCallback ); - gluTessCallback( tobj, GLU_TESS_COMBINE, (_GLUfuncptr) &piDCcombineCallback ); - gluTessCallback( tobj, GLU_TESS_ERROR, (_GLUfuncptr) &piDCerrorCallback ); - - gluTessNormal( tobj, 0, 0, 1); - gluTessProperty( tobj, GLU_TESS_WINDING_RULE, GLU_TESS_WINDING_NONZERO ); - - if( ConfigureBrush() ) { - gluTessBeginPolygon( tobj, NULL ); - gluTessBeginContour( tobj ); - - for( int i = 0; i < n; i++ ) { - GLvertex* vertex = new GLvertex(); - pi_gTesselatorVertices.Add( vertex ); - vertex->info.x = (GLdouble) points[i].x; - vertex->info.y = (GLdouble) points[i].y; - vertex->info.z = (GLdouble) 0.0; - vertex->info.r = (GLdouble) 0.0; - vertex->info.g = (GLdouble) 0.0; - vertex->info.b = (GLdouble) 0.0; - gluTessVertex( tobj, (GLdouble*)vertex, (GLdouble*)vertex ); - } - gluTessEndContour( tobj ); - gluTessEndPolygon( tobj ); - } - - for( unsigned int i=0; iCreatePath(); - gpath.MoveToPoint( points[0].x + xoffset, points[0].y + yoffset ); - for( int i = 1; i < n; i++ ) - gpath.AddLineToPoint( points[i].x + xoffset, points[i].y + yoffset ); - gpath.AddLineToPoint( points[0].x + xoffset, points[0].y + yoffset ); - - pgc->SetPen( GetPen() ); - pgc->SetBrush( GetBrush() ); - pgc->DrawPath( gpath ); - - for( int i = 0; i < n; i++ ) - dc->CalcBoundingBox( points[i].x + xoffset, points[i].y + yoffset ); - } else -#endif - DrawPolygon( n, points, xoffset, yoffset, scale ); -} - -void piDC::DrawBitmap( const wxBitmap &bitmap, wxCoord x, wxCoord y, bool usemask ) -{ - wxBitmap bmp; - if( x < 0 || y < 0 ) { - int dx = ( x < 0 ? -x : 0 ); - int dy = ( y < 0 ? -y : 0 ); - int w = bitmap.GetWidth() - dx; - int h = bitmap.GetHeight() - dy; - /* picture is out of viewport */ - if( w <= 0 || h <= 0 ) return; - wxBitmap newBitmap = bitmap.GetSubBitmap( wxRect( dx, dy, w, h ) ); - x += dx; - y += dy; - bmp = newBitmap; - } else { - bmp = bitmap; - } - if( dc ) - dc->DrawBitmap( bmp, x, y, usemask ); -#ifdef ocpnUSE_GL - else { -#ifdef ocpnUSE_GLES // Do not attempt to do anything with glDrawPixels if using opengles - return; // this should not be hit anymore ever anyway -#endif - -#ifndef USE_ANDROID_GLES2 - wxImage image = bmp.ConvertToImage(); - int w = image.GetWidth(), h = image.GetHeight(); - - if( usemask ) { - unsigned char *d = image.GetData(); - unsigned char *a = image.GetAlpha(); - - unsigned char mr, mg, mb; - if( !image.GetOrFindMaskColour( &mr, &mg, &mb ) && !a ){ - printf("trying to use mask to draw a bitmap without alpha or mask\n" ); - } - -#ifdef __WXOSX__ - if(image.HasMask()) - a=0; -#endif - - unsigned char *e = new unsigned char[4 * w * h]; - if(e && d){ - for( int y = 0; y < h; y++ ) - for( int x = 0; x < w; x++ ) { - unsigned char r, g, b; - int off = ( y * image.GetWidth() + x ); - r = d[off * 3 + 0]; - g = d[off * 3 + 1]; - b = d[off * 3 + 2]; - - e[off * 4 + 0] = r; - e[off * 4 + 1] = g; - e[off * 4 + 2] = b; - - e[off * 4 + 3] = - a ? a[off] : ( ( r == mr ) && ( g == mg ) && ( b == mb ) ? 0 : 255 ); -// e[off * 4 + 3] = ( ( r == mr ) && ( g == mg ) && ( b == mb ) ? 0 : 255 ); - } - } - - glColor4f( 1, 1, 1, 1 ); - GLDrawBlendData( x, y, w, h, GL_RGBA, e ); - delete[] ( e ); - } else { - glRasterPos2i( x, y ); - glPixelZoom( 1, -1 ); /* draw data from top to bottom */ - if(image.GetData()) - glDrawPixels( w, h, GL_RGB, GL_UNSIGNED_BYTE, image.GetData() ); - glPixelZoom( 1, 1 ); - } -#endif // GLES2 - } - -#endif -} - -static int NextPow2(int size) -{ - int n = size-1; // compute dimensions needed as next larger power of 2 - int shift = 1; - while ((n+1) & n){ - n |= n >> shift; - shift <<= 1; - } - - return n + 1; -} - -void piDC::DrawText( const wxString &text, wxCoord x, wxCoord y ) -{ - if( dc ) - dc->DrawText( text, x, y ); -#ifdef ocpnUSE_GL - else { - wxCoord w = 0; - wxCoord h = 0; - - if(m_buseTex){ - - m_texfont.Build( m_font ); // make sure the font is ready - m_texfont.GetTextExtent(text, &w, &h); - - if( w && h ) { - - if(m_textbackgroundcolour.Alpha() != 0) { - wxPen p = m_pen; - wxBrush b = m_brush; - SetPen(*wxTRANSPARENT_PEN); - SetBrush(wxBrush(m_textbackgroundcolour)); - DrawRoundedRectangle(x, y, w, h, 3); - SetPen(p); - SetBrush(b); - } - - glEnable( GL_BLEND ); - glEnable( GL_TEXTURE_2D ); - glBlendFunc( GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA ); - -#ifndef USE_ANDROID_GLES2 - glTexEnvi( GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_MODULATE ); - glPushMatrix(); - glTranslatef(x, y, 0); - - glColor3ub( m_textforegroundcolour.Red(), - m_textforegroundcolour.Green(), - m_textforegroundcolour.Blue() ); - - - m_texfont.RenderString(text); - glPopMatrix(); -#else - m_texfont.SetColor(m_textforegroundcolour); - m_texfont.RenderString(text, x, y); -#endif - glDisable( GL_TEXTURE_2D ); - glDisable( GL_BLEND ); - - } - } - else{ - wxScreenDC sdc; - sdc.SetFont(m_font); - sdc.GetTextExtent(text, &w, &h, NULL, NULL, &m_font); - - /* create bitmap of appropriate size and select it */ - wxBitmap bmp( w, h ); - wxMemoryDC temp_dc; - temp_dc.SelectObject( bmp ); - - /* fill bitmap with black */ - temp_dc.SetBackground( wxBrush( wxColour( 0, 0, 0 ) ) ); - temp_dc.Clear(); - - /* draw the text white */ - temp_dc.SetFont( m_font ); - temp_dc.SetTextForeground( wxColour( 255, 255, 255 ) ); - temp_dc.DrawText( text, 0, 0 ); - temp_dc.SelectObject( wxNullBitmap ); - - /* use the data in the bitmap for alpha channel, - and set the color to text foreground */ - wxImage image = bmp.ConvertToImage(); - if( x < 0 || y < 0 ) { // Allow Drawing text which is offset to start off screen - int dx = ( x < 0 ? -x : 0 ); - int dy = ( y < 0 ? -y : 0 ); - w = bmp.GetWidth() - dx; - h = bmp.GetHeight() - dy; - /* picture is out of viewport */ - if( w <= 0 || h <= 0 ) return; - image = image.GetSubImage( wxRect( dx, dy, w, h ) ); - x += dx; - y += dy; - } - - unsigned char *data = new unsigned char[w * h * 4]; - unsigned char *im = image.GetData(); - - - if(im){ - unsigned int r = m_textforegroundcolour.Red(); - unsigned int g = m_textforegroundcolour.Green(); - unsigned int b = m_textforegroundcolour.Blue(); - for( int i = 0; i < h; i++ ){ - for(int j=0 ; j < w ; j++){ - unsigned int index = ((i*w) + j) * 4; - data[index] = r; - data[index+1] = g; - data[index+2] = b; - data[index+3] = im[((i*w) + j) * 3]; - } - } - } -#if 0 - glColor4ub( 255, 255, 255, 255 ); - glEnable( GL_BLEND ); - glBlendFunc( GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA ); - glRasterPos2i( x, y ); - glPixelZoom( 1, -1 ); - glDrawPixels( w, h, GL_RGBA, GL_UNSIGNED_BYTE, data ); - glPixelZoom( 1, 1 ); - glDisable( GL_BLEND ); -#else - unsigned int texobj; - - glGenTextures(1, &texobj); - glBindTexture(GL_TEXTURE_2D, texobj); - - glTexParameteri( GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST ); - glTexParameteri( GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST ); - - int TextureWidth = NextPow2(w); - int TextureHeight = NextPow2(h); - glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, TextureWidth, TextureHeight, 0, GL_RGBA, GL_UNSIGNED_BYTE, NULL); - glTexSubImage2D(GL_TEXTURE_2D, 0, 0, 0, w, h, GL_RGBA, GL_UNSIGNED_BYTE, data); - - glEnable(GL_TEXTURE_2D); - glEnable(GL_BLEND); - glBlendFunc( GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA ); - -#ifndef USE_ANDROID_GLES2 - glColor3ub(0,0,0); - - float u = (float)w/TextureWidth, v = (float)h/TextureHeight; - glBegin(GL_QUADS); - glTexCoord2f(0, 0); glVertex2f(x, y); - glTexCoord2f(u, 0); glVertex2f(x+w, y); - glTexCoord2f(u, v); glVertex2f(x+w, y+h); - glTexCoord2f(0, v); glVertex2f(x, y+h); - glEnd(); -#else -#endif - glDisable(GL_BLEND); - glDisable(GL_TEXTURE_2D); - - glDeleteTextures(1, &texobj); -#endif - delete[] data; - } - } -#endif -} - -void piDC::GetTextExtent( const wxString &string, wxCoord *w, wxCoord *h, wxCoord *descent, - wxCoord *externalLeading, wxFont *font ) -{ - // Give at least reasonable results on failure. - if(w) *w = 100; - if(h) *h = 100; - - if( dc ) dc->GetTextExtent( string, w, h, descent, externalLeading, font ); - else { - wxFont f = m_font; - if( font ) f = *font; - - if(m_buseTex){ - #ifdef ocpnUSE_GL - m_texfont.Build( f ); // make sure the font is ready - m_texfont.GetTextExtent(string, w, h); - #else - wxMemoryDC temp_dc; - temp_dc.GetTextExtent( string, w, h, descent, externalLeading, &f ); - #endif - } - else{ - wxMemoryDC temp_dc; - temp_dc.GetTextExtent( string, w, h, descent, externalLeading, &f ); - } - - } - - // Sometimes GetTextExtent returns really wrong, uninitialized results. - // Dunno why.... - if( w && (*w > 2000) ) *w = 2000; - if( h && (*h > 500) ) *h = 500; -} - -void piDC::ResetBoundingBox() -{ - if( dc ) dc->ResetBoundingBox(); -} - -void piDC::CalcBoundingBox( wxCoord x, wxCoord y ) -{ - if( dc ) dc->CalcBoundingBox( x, y ); -} - -bool piDC::ConfigurePen() -{ - if( !m_pen.IsOk() ) return false; - if( m_pen == *wxTRANSPARENT_PEN ) return false; - - wxColour c = m_pen.GetColour(); - int width = m_pen.GetWidth(); -#ifdef ocpnUSE_GL -#ifndef USE_ANDROID_GLES2 - glColor4ub( c.Red(), c.Green(), c.Blue(), c.Alpha() ); - glLineWidth( wxMax(GLMinSymbolLineWidth, width) ); -#endif -#endif - return true; -} - -bool piDC::ConfigureBrush() -{ - if( m_brush == wxNullBrush || m_brush.GetStyle() == wxBRUSHSTYLE_TRANSPARENT ) - return false; -#ifdef ocpnUSE_GL -#ifndef USE_ANDROID_GLES2 - wxColour c = m_brush.GetColour(); - glColor4ub( c.Red(), c.Green(), c.Blue(), c.Alpha() ); -#endif -#endif - return true; -} - -void piDC::GLDrawBlendData( wxCoord x, wxCoord y, wxCoord w, wxCoord h, int format, - const unsigned char *data ) -{ -#ifdef ocpnUSE_GL -#ifndef USE_ANDROID_GLES2 - glEnable( GL_BLEND ); - glRasterPos2i( x, y ); - glPixelZoom( 1, -1 ); - glDrawPixels( w, h, format, GL_UNSIGNED_BYTE, data ); - glPixelZoom( 1, 1 ); - glDisable( GL_BLEND ); -#endif -#endif -} diff --git a/src/plugingl/pidc.h b/src/plugingl/pidc.h deleted file mode 100644 index ab9ea6a..0000000 --- a/src/plugingl/pidc.h +++ /dev/null @@ -1,167 +0,0 @@ -/****************************************************************************** - * - * Project: OpenCPN - * Purpose: Layer to use wxDC or opengl - * Author: Sean D'Epagnier - * - *************************************************************************** - * Copyright (C) 2011 by Sean D'Epagnier * - * sean at depagnier dot com * - * * - * This program is free software; you can redistribute it and/or modify * - * it under the terms of the GNU General Public License as published by * - * the Free Software Foundation; either version 2 of the License, or * - * (at your option) any later version. * - * * - * This program is distributed in the hope that it will be useful, * - * but WITHOUT ANY WARRANTY; without even the implied warranty of * - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * - * GNU General Public License for more details. * - * * - * You should have received a copy of the GNU General Public License * - * along with this program; if not, write to the * - * Free Software Foundation, Inc., * - * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * - *************************************************************************** - * - *f - */ - - -#ifndef __PIDC_H__ -#define __PIDC_H__ - -#include -#include "linmath.h" - -#include "TexFont.h" -#include "ocpn_plugin.h" - - -#ifdef ocpnUSE_GL -#include -#endif - -//class ViewPort; -class GLUtesselator; - -void DrawGLThickLine( float x1, float y1, float x2, float y2, wxPen pen, bool b_hiqual ); - -//---------------------------------------------------------------------------- -// piDC -//---------------------------------------------------------------------------- - -class wxGLCanvas; - -class piDC -{ -public: - piDC(wxGLCanvas &canvas); - piDC(wxDC &pdc); - piDC(); - - ~piDC(); - - void SetBackground( const wxBrush &brush ); - void SetPen( const wxPen &pen); - void SetBrush( const wxBrush &brush); - void SetTextForeground(const wxColour &colour); - void SetTextBackground(const wxColour &colour); - void SetFont(const wxFont& font); - static void SetGLAttrs( bool highQuality ); - void SetGLStipple() const; - void SetVP(PlugIn_ViewPort *vp); - void SetDC(wxDC *dc_in){dc = dc_in;} - - const wxPen& GetPen() const; - const wxBrush& GetBrush() const; - const wxFont& GetFont() const; - - void GetSize(wxCoord *width, wxCoord *height) const; - - void DrawLine( wxCoord x1, wxCoord y1, wxCoord x2, wxCoord y2, bool b_hiqual = true); - void DrawLines( int n, wxPoint points[], wxCoord xoffset = 0, wxCoord yoffset = 0, bool b_hiqual = true); - - void StrokeLine( wxCoord x1, wxCoord y1, wxCoord x2, wxCoord y2); - void StrokeLine( wxPoint a, wxPoint b) { StrokeLine(a.x, a.y, b.x, b.y); } - void StrokeLines( int n, wxPoint *points); - - void Clear(); - void DrawRectangle( wxCoord x, wxCoord y, wxCoord w, wxCoord h ); - void DrawRoundedRectangle( wxCoord x, wxCoord y, wxCoord w, wxCoord h, wxCoord rr ); - void DrawCircle(wxCoord x, wxCoord y, wxCoord radius); - void DrawCircle(const wxPoint &pt, wxCoord radius) { DrawCircle(pt.x, pt.y, radius); } - void StrokeCircle(wxCoord x, wxCoord y, wxCoord radius); - - void DrawEllipse(wxCoord x, wxCoord y, wxCoord width, wxCoord height); - void DrawPolygon(int n, wxPoint points[], wxCoord xoffset = 0, wxCoord yoffset = 0, float scale =1.0, float angle = 0.0); - void DrawPolygonTessellated(int n, wxPoint points[], wxCoord xoffset = 0, wxCoord yoffset = 0); - void StrokePolygon(int n, wxPoint points[], wxCoord xoffset = 0, wxCoord yoffset = 0, float scale = 1.0); - - void DrawBitmap(const wxBitmap &bitmap, wxCoord x, wxCoord y, bool usemask); - - void DrawText(const wxString &text, wxCoord x, wxCoord y); - void GetTextExtent(const wxString &string, wxCoord *w, wxCoord *h, wxCoord *descent = NULL, - wxCoord *externalLeading = NULL, wxFont *font = NULL); - - void ResetBoundingBox(); - void CalcBoundingBox(wxCoord x, wxCoord y); - - void DestroyClippingRegion() {} - - wxDC *GetDC() const { return dc; } - - void DrawGLLineArray( int n, float *vertex_array, unsigned char *color_array, bool b_hiqual ); - void DrawGLLineArray( int n, float *vertex_array, float *color_array, bool b_hiqual ); - -#ifdef ocpnUSE_GL - GLfloat *s_odc_tess_work_buf; -#endif - - #ifdef USE_ANDROID_GLES2 - int s_odc_tess_vertex_idx; - int s_odc_tess_vertex_idx_this; - int s_odc_tess_buf_len; - GLenum s_odc_tess_mode; - int s_odc_nvertex; - vec4 s_odc_tess_color; - //ViewPort *s_odc_tessVP; - GLUtesselator *m_tobj; - - #endif - -protected: - bool ConfigurePen(); - bool ConfigureBrush(); - - void GLDrawBlendData(wxCoord x, wxCoord y, wxCoord w, wxCoord h, - int format, const unsigned char *data); - - void drawrrhelperGLES2( wxCoord x0, wxCoord y0, wxCoord r, int quadrant, int steps ); - - wxGLCanvas *glcanvas; - wxDC *dc; - wxPen m_pen; - wxBrush m_brush; - wxColour m_textforegroundcolour; - wxColour m_textbackgroundcolour; - wxFont m_font; - -#ifdef ocpnUSE_GL - TexFont m_texfont; -#endif - bool m_buseTex; - -#if wxUSE_GRAPHICS_CONTEXT - wxGraphicsContext *pgc; -#endif - - float *workBuf; - size_t workBufSize; - unsigned int workBufIndex; - - wxSize m_vpSize; - -}; - -#endif diff --git a/src/plugingl/qtstylesheet.cpp b/src/plugingl/qtstylesheet.cpp deleted file mode 100644 index 935d0d5..0000000 --- a/src/plugingl/qtstylesheet.cpp +++ /dev/null @@ -1,177 +0,0 @@ -#ifdef __OCPN__ANDROID__ -#include - -QString qtStyleSheet = "\ -QScrollBar:horizontal {\ -border: 0px solid grey;\ -background-color: rgb(240, 240, 240);\ -height: 25px;\ -margin: 0px 1px 0 1px;\ -}\ -QScrollBar::handle:horizontal {\ -background-color: rgb(200, 200, 200);\ -min-width: 20px;\ -border-radius: 10px;\ -}\ -QScrollBar::add-line:horizontal {\ -border: 0px solid grey;\ -background: #32CC99;\ -width: 0px;\ -subcontrol-position: right;\ -subcontrol-origin: margin;\ -}\ -QScrollBar::sub-line:horizontal {\ -border: 0px solid grey;\ -background: #32CC99;\ -width: 0px;\ -subcontrol-position: left;\ -subcontrol-origin: margin;\ -}\ -QScrollBar:vertical {\ -border: 0px solid grey;\ -background-color: rgb(240, 240, 240);\ -width: 35px;\ -margin: 1px 0px 1px 0px;\ -}\ -QScrollBar::handle:vertical {\ -background-color: rgb(200, 200, 200);\ -min-height: 20px;\ -border-radius: 10px;\ -}\ -QScrollBar::add-line:vertical {\ -border: 0px solid grey;\ -background: #32CC99;\ -height: 0px;\ -subcontrol-position: top;\ -subcontrol-origin: margin;\ -}\ -QScrollBar::sub-line:vertical {\ -border: 0px solid grey;\ -background: #32CC99;\ -height: 0px;\ -subcontrol-position: bottom;\ -subcontrol-origin: margin;\ -}\ -QCheckBox {\ -spacing: 25px;\ -}\ -QCheckBox::indicator {\ -width: 30px;\ -height: 30px;\ -}\ -QTreeWidget QScrollBar:vertical {\ - border: 0px solid grey;\ - background-color: rgb(240, 240, 240);\ - width: 35px;\ - margin: 1px 0px 1px 0px;\ -}\ -QTreeWidget QScrollBar::handle:vertical {\ - background-color: rgb(200, 200, 200);\ - min-height: 20px;\ - border-radius: 10px;\ -}\ -QTreeWidget QScrollBar::add-line:vertical {\ - border: 0px solid grey;\ - background: #32CC99;\ - height: 0px;\ - subcontrol-position: top;\ - subcontrol-origin: margin;\ -}\ -\ -QTreeWidget QScrollBar::sub-line:vertical {\ - border: 0px solid grey;\ - background: #32CC99;\ - height: 0px;\ - subcontrol-position: bottom;\ - subcontrol-origin: margin;\ -}\ -\ -QTreeWidget QScrollBar:horizontal {\ - border: 0px solid grey;\ - background-color: rgb(240, 240, 240);\ - height: 35px;\ - margin: 0px 1px 0 1px;\ -}\ -QTreeWidget QScrollBar::handle:horizontal {\ - background-color: rgb(200, 200, 200);\ - min-width: 20px;\ - border-radius: 10px;\ -}\ -QTreeWidget QScrollBar::add-line:horizontal {\ - border: 0px solid grey;\ - background: #32CC99;\ - width: 0px;\ - subcontrol-position: right;\ - subcontrol-origin: margin;\ -}\ -QTreeWidget QScrollBar::sub-line:horizontal {\ - border: 0px solid grey;\ - background: #32CC99;\ - width: 0px;\ - subcontrol-position: left;\ - subcontrol-origin: margin;\ -}\ -QScrollBar::handle:horizontal {\ -background-color: rgb(200, 200, 200);\ -min-width: 20px;\ -border-radius: 10px;\ -}\ -QScrollBar::add-line:horizontal {\ -border: 0px solid grey;\ -background: #32CC99;\ -width: 0px;\ -subcontrol-position: right;\ -subcontrol-origin: margin;\ -}\ -QScrollBar::sub-line:horizontal {\ -border: 0px solid grey;\ -background: #32CC99;\ -width: 0px;\ -subcontrol-position: left;\ -subcontrol-origin: margin;\ -}\ -QScrollBar:vertical {\ -border: 0px solid grey;\ -background-color: rgb(240, 240, 240);\ -width: 35px;\ -margin: 1px 0px 1px 0px;\ -}\ -QScrollBar::handle:vertical {\ -background-color: rgb(200, 200, 200);\ -min-height: 20px;\ -border-radius: 10px;\ -}\ -QScrollBar::add-line:vertical {\ -border: 0px solid grey;\ -background: #32CC99;\ -height: 0px;\ -subcontrol-position: top;\ -subcontrol-origin: margin;\ -}\ -QScrollBar::sub-line:vertical {\ -border: 0px solid grey;\ -background: #32CC99;\ -height: 0px;\ -subcontrol-position: bottom;\ -subcontrol-origin: margin;\ -}\ -QCheckBox {\ -spacing: 25px;\ -}\ -QCheckBox::indicator {\ -width: 30px;\ -height: 30px;\ -}\ -QRadioButton {\ - font-size: 16px;\ -} \ -QPushButton {\ - font-size: 16px;\ -} \ -QTreeWidget::item {\ - border: 0px solid grey;\ - height: 25px;\ - font-size: 25px;\ -}\ -"; -#endif diff --git a/src/plugingl/qtstylesheet.h b/src/plugingl/qtstylesheet.h deleted file mode 100644 index c231557..0000000 --- a/src/plugingl/qtstylesheet.h +++ /dev/null @@ -1,3 +0,0 @@ -#ifdef __OCPN__ANDROID__ -extern QString qtStyleSheet; -#endif diff --git a/src/tinyxml/tinyxml.cpp b/src/tinyxml/tinyxml.cpp deleted file mode 100755 index 886d891..0000000 --- a/src/tinyxml/tinyxml.cpp +++ /dev/null @@ -1,1889 +0,0 @@ -/* -www.sourceforge.net/projects/tinyxml -Original code by Lee Thomason (www.grinninglizard.com) - -This software is provided 'as-is', without any express or implied -warranty. In no event will the authors be held liable for any -damages arising from the use of this software. - -Permission is granted to anyone to use this software for any -purpose, including commercial applications, and to alter it and -redistribute it freely, subject to the following restrictions: - -1. The origin of this software must not be misrepresented; you must -not claim that you wrote the original software. If you use this -software in a product, an acknowledgment in the product documentation -would be appreciated but is not required. - -2. Altered source versions must be plainly marked as such, and -must not be misrepresented as being the original software. - -3. This notice may not be removed or altered from any source -distribution. -*/ - -#include -#include - -#include - -#ifdef TIXML_USE_STL -#include -#include -#endif - -#include "tinyxml.h" - -FILE* TiXmlFOpen( const char* filename, const char* mode ); - -bool TiXmlBase::condenseWhiteSpace = true; - -// Microsoft compiler security -FILE* TiXmlFOpen( const char* filename, const char* mode ) -{ - #if defined(_MSC_VER) && (_MSC_VER >= 1400 ) - FILE* fp = 0; - errno_t err = fopen_s( &fp, filename, mode ); - if ( !err && fp ) - return fp; - return 0; - #else - return fopen( filename, mode ); - #endif -} - -void TiXmlBase::EncodeString( const TIXML_STRING& str, TIXML_STRING* outString ) -{ - int i=0; - - while( i<(int)str.length() ) - { - unsigned char c = (unsigned char) str[i]; - - if ( c == '&' - && i < ( (int)str.length() - 2 ) - && str[i+1] == '#' - && str[i+2] == 'x' ) - { - // Hexadecimal character reference. - // Pass through unchanged. - // © -- copyright symbol, for example. - // - // The -1 is a bug fix from Rob Laveaux. It keeps - // an overflow from happening if there is no ';'. - // There are actually 2 ways to exit this loop - - // while fails (error case) and break (semicolon found). - // However, there is no mechanism (currently) for - // this function to return an error. - while ( i<(int)str.length()-1 ) - { - outString->append( str.c_str() + i, 1 ); - ++i; - if ( str[i] == ';' ) - break; - } - } - else if ( c == '&' ) - { - outString->append( entity[0].str, entity[0].strLength ); - ++i; - } - else if ( c == '<' ) - { - outString->append( entity[1].str, entity[1].strLength ); - ++i; - } - else if ( c == '>' ) - { - outString->append( entity[2].str, entity[2].strLength ); - ++i; - } - else if ( c == '\"' ) - { - outString->append( entity[3].str, entity[3].strLength ); - ++i; - } - else if ( c == '\'' ) - { - outString->append( entity[4].str, entity[4].strLength ); - ++i; - } - else if ( c < 32 ) - { - // Easy pass at non-alpha/numeric/symbol - // Below 32 is symbolic. - char buf[ 32 ]; - - #if defined(TIXML_SNPRINTF) - TIXML_SNPRINTF( buf, sizeof(buf), "&#x%02X;", (unsigned) ( c & 0xff ) ); - #else - sprintf( buf, "&#x%02X;", (unsigned) ( c & 0xff ) ); - #endif - - //*ME: warning C4267: convert 'size_t' to 'int' - //*ME: Int-Cast to make compiler happy ... - outString->append( buf, (int)strlen( buf ) ); - ++i; - } - else - { - //char realc = (char) c; - //outString->append( &realc, 1 ); - *outString += (char) c; // somewhat more efficient function call. - ++i; - } - } -} - - -TiXmlNode::TiXmlNode( NodeType _type ) : TiXmlBase() -{ - parent = 0; - type = _type; - firstChild = 0; - lastChild = 0; - prev = 0; - next = 0; -} - - -TiXmlNode::~TiXmlNode() -{ - TiXmlNode* node = firstChild; - TiXmlNode* temp = 0; - - while ( node ) - { - temp = node; - node = node->next; - delete temp; - } -} - - -void TiXmlNode::CopyTo( TiXmlNode* target ) const -{ - target->SetValue (value.c_str() ); - target->userData = userData; - target->location = location; -} - - -void TiXmlNode::Clear() -{ - TiXmlNode* node = firstChild; - TiXmlNode* temp = 0; - - while ( node ) - { - temp = node; - node = node->next; - delete temp; - } - - firstChild = 0; - lastChild = 0; -} - - -TiXmlNode* TiXmlNode::LinkEndChild( TiXmlNode* node ) -{ - assert( node->parent == 0 || node->parent == this ); - assert( node->GetDocument() == 0 || node->GetDocument() == this->GetDocument() ); - - if ( node->Type() == TiXmlNode::TINYXML_DOCUMENT ) - { - delete node; - if ( GetDocument() ) - GetDocument()->SetError( TIXML_ERROR_DOCUMENT_TOP_ONLY, 0, 0, TIXML_ENCODING_UNKNOWN ); - return 0; - } - - node->parent = this; - - node->prev = lastChild; - node->next = 0; - - if ( lastChild ) - lastChild->next = node; - else - firstChild = node; // it was an empty list. - - lastChild = node; - return node; -} - - -TiXmlNode* TiXmlNode::InsertEndChild( const TiXmlNode& addThis ) -{ - if ( addThis.Type() == TiXmlNode::TINYXML_DOCUMENT ) - { - if ( GetDocument() ) - GetDocument()->SetError( TIXML_ERROR_DOCUMENT_TOP_ONLY, 0, 0, TIXML_ENCODING_UNKNOWN ); - return 0; - } - TiXmlNode* node = addThis.Clone(); - if ( !node ) - return 0; - - return LinkEndChild( node ); -} - - -TiXmlNode* TiXmlNode::InsertBeforeChild( TiXmlNode* beforeThis, const TiXmlNode& addThis ) -{ - if ( !beforeThis || beforeThis->parent != this ) { - return 0; - } - if ( addThis.Type() == TiXmlNode::TINYXML_DOCUMENT ) - { - if ( GetDocument() ) - GetDocument()->SetError( TIXML_ERROR_DOCUMENT_TOP_ONLY, 0, 0, TIXML_ENCODING_UNKNOWN ); - return 0; - } - - TiXmlNode* node = addThis.Clone(); - if ( !node ) - return 0; - node->parent = this; - - node->next = beforeThis; - node->prev = beforeThis->prev; - if ( beforeThis->prev ) - { - beforeThis->prev->next = node; - } - else - { - assert( firstChild == beforeThis ); - firstChild = node; - } - beforeThis->prev = node; - return node; -} - - -TiXmlNode* TiXmlNode::InsertAfterChild( TiXmlNode* afterThis, const TiXmlNode& addThis ) -{ - if ( !afterThis || afterThis->parent != this ) { - return 0; - } - if ( addThis.Type() == TiXmlNode::TINYXML_DOCUMENT ) - { - if ( GetDocument() ) - GetDocument()->SetError( TIXML_ERROR_DOCUMENT_TOP_ONLY, 0, 0, TIXML_ENCODING_UNKNOWN ); - return 0; - } - - TiXmlNode* node = addThis.Clone(); - if ( !node ) - return 0; - node->parent = this; - - node->prev = afterThis; - node->next = afterThis->next; - if ( afterThis->next ) - { - afterThis->next->prev = node; - } - else - { - assert( lastChild == afterThis ); - lastChild = node; - } - afterThis->next = node; - return node; -} - - -TiXmlNode* TiXmlNode::ReplaceChild( TiXmlNode* replaceThis, const TiXmlNode& withThis ) -{ - if ( !replaceThis ) - return 0; - - if ( replaceThis->parent != this ) - return 0; - - if ( withThis.ToDocument() ) { - // A document can never be a child. Thanks to Noam. - TiXmlDocument* document = GetDocument(); - if ( document ) - document->SetError( TIXML_ERROR_DOCUMENT_TOP_ONLY, 0, 0, TIXML_ENCODING_UNKNOWN ); - return 0; - } - - TiXmlNode* node = withThis.Clone(); - if ( !node ) - return 0; - - node->next = replaceThis->next; - node->prev = replaceThis->prev; - - if ( replaceThis->next ) - replaceThis->next->prev = node; - else - lastChild = node; - - if ( replaceThis->prev ) - replaceThis->prev->next = node; - else - firstChild = node; - - delete replaceThis; - node->parent = this; - return node; -} - - -bool TiXmlNode::RemoveChild( TiXmlNode* removeThis ) -{ - if ( !removeThis ) { - return false; - } - - if ( removeThis->parent != this ) - { - assert( 0 ); - return false; - } - - if ( removeThis->next ) - removeThis->next->prev = removeThis->prev; - else - lastChild = removeThis->prev; - - if ( removeThis->prev ) - removeThis->prev->next = removeThis->next; - else - firstChild = removeThis->next; - - delete removeThis; - return true; -} - -const TiXmlNode* TiXmlNode::FirstChild( const char * _value ) const -{ - const TiXmlNode* node; - for ( node = firstChild; node; node = node->next ) - { - if ( strcmp( node->Value(), _value ) == 0 ) - return node; - } - return 0; -} - - -const TiXmlNode* TiXmlNode::LastChild( const char * _value ) const -{ - const TiXmlNode* node; - for ( node = lastChild; node; node = node->prev ) - { - if ( strcmp( node->Value(), _value ) == 0 ) - return node; - } - return 0; -} - - -const TiXmlNode* TiXmlNode::IterateChildren( const TiXmlNode* previous ) const -{ - if ( !previous ) - { - return FirstChild(); - } - else - { - assert( previous->parent == this ); - return previous->NextSibling(); - } -} - - -const TiXmlNode* TiXmlNode::IterateChildren( const char * val, const TiXmlNode* previous ) const -{ - if ( !previous ) - { - return FirstChild( val ); - } - else - { - assert( previous->parent == this ); - return previous->NextSibling( val ); - } -} - - -const TiXmlNode* TiXmlNode::NextSibling( const char * _value ) const -{ - const TiXmlNode* node; - for ( node = next; node; node = node->next ) - { - if ( strcmp( node->Value(), _value ) == 0 ) - return node; - } - return 0; -} - - -const TiXmlNode* TiXmlNode::PreviousSibling( const char * _value ) const -{ - const TiXmlNode* node; - for ( node = prev; node; node = node->prev ) - { - if ( strcmp( node->Value(), _value ) == 0 ) - return node; - } - return 0; -} - - -void TiXmlElement::RemoveAttribute( const char * name ) -{ - #ifdef TIXML_USE_STL - TIXML_STRING str( name ); - TiXmlAttribute* node = attributeSet.Find( str ); - #else - TiXmlAttribute* node = attributeSet.Find( name ); - #endif - if ( node ) - { - attributeSet.Remove( node ); - delete node; - } -} - -const TiXmlElement* TiXmlNode::FirstChildElement() const -{ - const TiXmlNode* node; - - for ( node = FirstChild(); - node; - node = node->NextSibling() ) - { - if ( node->ToElement() ) - return node->ToElement(); - } - return 0; -} - - -const TiXmlElement* TiXmlNode::FirstChildElement( const char * _value ) const -{ - const TiXmlNode* node; - - for ( node = FirstChild( _value ); - node; - node = node->NextSibling( _value ) ) - { - if ( node->ToElement() ) - return node->ToElement(); - } - return 0; -} - - -const TiXmlElement* TiXmlNode::NextSiblingElement() const -{ - const TiXmlNode* node; - - for ( node = NextSibling(); - node; - node = node->NextSibling() ) - { - if ( node->ToElement() ) - return node->ToElement(); - } - return 0; -} - - -const TiXmlElement* TiXmlNode::NextSiblingElement( const char * _value ) const -{ - const TiXmlNode* node; - - for ( node = NextSibling( _value ); - node; - node = node->NextSibling( _value ) ) - { - if ( node->ToElement() ) - return node->ToElement(); - } - return 0; -} - - -const TiXmlDocument* TiXmlNode::GetDocument() const -{ - const TiXmlNode* node; - - for( node = this; node; node = node->parent ) - { - if ( node->ToDocument() ) - return node->ToDocument(); - } - return 0; -} - - -TiXmlElement::TiXmlElement (const char * _value) - : TiXmlNode( TiXmlNode::TINYXML_ELEMENT ) -{ - firstChild = lastChild = 0; - value = _value; -} - - -#ifdef TIXML_USE_STL -TiXmlElement::TiXmlElement( const std::string& _value ) - : TiXmlNode( TiXmlNode::TINYXML_ELEMENT ) -{ - firstChild = lastChild = 0; - value = _value; -} -#endif - - -TiXmlElement::TiXmlElement( const TiXmlElement& copy) - : TiXmlNode( TiXmlNode::TINYXML_ELEMENT ) -{ - firstChild = lastChild = 0; - copy.CopyTo( this ); -} - - -TiXmlElement& TiXmlElement::operator=( const TiXmlElement& base ) -{ - ClearThis(); - base.CopyTo( this ); - return *this; -} - - -TiXmlElement::~TiXmlElement() -{ - ClearThis(); -} - - -void TiXmlElement::ClearThis() -{ - Clear(); - while( attributeSet.First() ) - { - TiXmlAttribute* node = attributeSet.First(); - attributeSet.Remove( node ); - delete node; - } -} - - -const char* TiXmlElement::Attribute( const char* name ) const -{ - const TiXmlAttribute* node = attributeSet.Find( name ); - if ( node ) - return node->Value(); - return 0; -} - - -#ifdef TIXML_USE_STL -const std::string* TiXmlElement::Attribute( const std::string& name ) const -{ - const TiXmlAttribute* attrib = attributeSet.Find( name ); - if ( attrib ) - return &attrib->ValueStr(); - return 0; -} -#endif - - -const char* TiXmlElement::Attribute( const char* name, int* i ) const -{ - const TiXmlAttribute* attrib = attributeSet.Find( name ); - const char* result = 0; - - if ( attrib ) { - result = attrib->Value(); - if ( i ) { - attrib->QueryIntValue( i ); - } - } - return result; -} - - -#ifdef TIXML_USE_STL -const std::string* TiXmlElement::Attribute( const std::string& name, int* i ) const -{ - const TiXmlAttribute* attrib = attributeSet.Find( name ); - const std::string* result = 0; - - if ( attrib ) { - result = &attrib->ValueStr(); - if ( i ) { - attrib->QueryIntValue( i ); - } - } - return result; -} -#endif - - -const char* TiXmlElement::Attribute( const char* name, double* d ) const -{ - const TiXmlAttribute* attrib = attributeSet.Find( name ); - const char* result = 0; - - if ( attrib ) { - result = attrib->Value(); - if ( d ) { - attrib->QueryDoubleValue( d ); - } - } - return result; -} - - -#ifdef TIXML_USE_STL -const std::string* TiXmlElement::Attribute( const std::string& name, double* d ) const -{ - const TiXmlAttribute* attrib = attributeSet.Find( name ); - const std::string* result = 0; - - if ( attrib ) { - result = &attrib->ValueStr(); - if ( d ) { - attrib->QueryDoubleValue( d ); - } - } - return result; -} -#endif - - -int TiXmlElement::QueryIntAttribute( const char* name, int* ival ) const -{ - const TiXmlAttribute* attrib = attributeSet.Find( name ); - if ( !attrib ) - return TIXML_NO_ATTRIBUTE; - return attrib->QueryIntValue( ival ); -} - - -int TiXmlElement::QueryUnsignedAttribute( const char* name, unsigned* value ) const -{ - const TiXmlAttribute* node = attributeSet.Find( name ); - if ( !node ) - return TIXML_NO_ATTRIBUTE; - - int ival = 0; - int result = node->QueryIntValue( &ival ); - *value = (unsigned)ival; - return result; -} - - -int TiXmlElement::QueryBoolAttribute( const char* name, bool* bval ) const -{ - const TiXmlAttribute* node = attributeSet.Find( name ); - if ( !node ) - return TIXML_NO_ATTRIBUTE; - - int result = TIXML_WRONG_TYPE; - if ( StringEqual( node->Value(), "true", true, TIXML_ENCODING_UNKNOWN ) - || StringEqual( node->Value(), "yes", true, TIXML_ENCODING_UNKNOWN ) - || StringEqual( node->Value(), "1", true, TIXML_ENCODING_UNKNOWN ) ) - { - *bval = true; - result = TIXML_SUCCESS; - } - else if ( StringEqual( node->Value(), "false", true, TIXML_ENCODING_UNKNOWN ) - || StringEqual( node->Value(), "no", true, TIXML_ENCODING_UNKNOWN ) - || StringEqual( node->Value(), "0", true, TIXML_ENCODING_UNKNOWN ) ) - { - *bval = false; - result = TIXML_SUCCESS; - } - return result; -} - - - -#ifdef TIXML_USE_STL -int TiXmlElement::QueryIntAttribute( const std::string& name, int* ival ) const -{ - const TiXmlAttribute* attrib = attributeSet.Find( name ); - if ( !attrib ) - return TIXML_NO_ATTRIBUTE; - return attrib->QueryIntValue( ival ); -} -#endif - - -int TiXmlElement::QueryDoubleAttribute( const char* name, double* dval ) const -{ - const TiXmlAttribute* attrib = attributeSet.Find( name ); - if ( !attrib ) - return TIXML_NO_ATTRIBUTE; - return attrib->QueryDoubleValue( dval ); -} - - -#ifdef TIXML_USE_STL -int TiXmlElement::QueryDoubleAttribute( const std::string& name, double* dval ) const -{ - const TiXmlAttribute* attrib = attributeSet.Find( name ); - if ( !attrib ) - return TIXML_NO_ATTRIBUTE; - return attrib->QueryDoubleValue( dval ); -} -#endif - - -void TiXmlElement::SetAttribute( const char * name, int val ) -{ - TiXmlAttribute* attrib = attributeSet.FindOrCreate( name ); - if ( attrib ) { - attrib->SetIntValue( val ); - } -} - - -#ifdef TIXML_USE_STL -void TiXmlElement::SetAttribute( const std::string& name, int val ) -{ - TiXmlAttribute* attrib = attributeSet.FindOrCreate( name ); - if ( attrib ) { - attrib->SetIntValue( val ); - } -} -#endif - - -void TiXmlElement::SetDoubleAttribute( const char * name, double val ) -{ - TiXmlAttribute* attrib = attributeSet.FindOrCreate( name ); - if ( attrib ) { - attrib->SetDoubleValue( val ); - } -} - - -#ifdef TIXML_USE_STL -void TiXmlElement::SetDoubleAttribute( const std::string& name, double val ) -{ - TiXmlAttribute* attrib = attributeSet.FindOrCreate( name ); - if ( attrib ) { - attrib->SetDoubleValue( val ); - } -} -#endif - - -void TiXmlElement::SetAttribute( const char * cname, const char * cvalue ) -{ - TiXmlAttribute* attrib = attributeSet.FindOrCreate( cname ); - if ( attrib ) { - attrib->SetValue( cvalue ); - } -} - - -#ifdef TIXML_USE_STL -void TiXmlElement::SetAttribute( const std::string& _name, const std::string& _value ) -{ - TiXmlAttribute* attrib = attributeSet.FindOrCreate( _name ); - if ( attrib ) { - attrib->SetValue( _value ); - } -} -#endif - - -void TiXmlElement::Print( FILE* cfile, int depth ) const -{ - int i; - assert( cfile ); - for ( i=0; iNext() ) - { - fprintf( cfile, " " ); - attrib->Print( cfile, depth ); - } - - // There are 3 different formatting approaches: - // 1) An element without children is printed as a node - // 2) An element with only a text child is printed as text - // 3) An element with children is printed on multiple lines. - TiXmlNode* node; - if ( !firstChild ) - { - fprintf( cfile, " />" ); - } - else if ( firstChild == lastChild && firstChild->ToText() ) - { - fprintf( cfile, ">" ); - firstChild->Print( cfile, depth + 1 ); - fprintf( cfile, "", value.c_str() ); - } - else - { - fprintf( cfile, ">" ); - - for ( node = firstChild; node; node=node->NextSibling() ) - { - if ( !node->ToText() ) - { - fprintf( cfile, "\n" ); - } - node->Print( cfile, depth+1 ); - } - fprintf( cfile, "\n" ); - for( i=0; i", value.c_str() ); - } -} - - -void TiXmlElement::CopyTo( TiXmlElement* target ) const -{ - // superclass: - TiXmlNode::CopyTo( target ); - - // Element class: - // Clone the attributes, then clone the children. - const TiXmlAttribute* attribute = 0; - for( attribute = attributeSet.First(); - attribute; - attribute = attribute->Next() ) - { - target->SetAttribute( attribute->Name(), attribute->Value() ); - } - - TiXmlNode* node = 0; - for ( node = firstChild; node; node = node->NextSibling() ) - { - target->LinkEndChild( node->Clone() ); - } -} - -bool TiXmlElement::Accept( TiXmlVisitor* visitor ) const -{ - if ( visitor->VisitEnter( *this, attributeSet.First() ) ) - { - for ( const TiXmlNode* node=FirstChild(); node; node=node->NextSibling() ) - { - if ( !node->Accept( visitor ) ) - break; - } - } - return visitor->VisitExit( *this ); -} - - -TiXmlNode* TiXmlElement::Clone() const -{ - TiXmlElement* clone = new TiXmlElement( Value() ); - if ( !clone ) - return 0; - - CopyTo( clone ); - return clone; -} - - -const char* TiXmlElement::GetText() const -{ - const TiXmlNode* child = this->FirstChild(); - if ( child ) { - const TiXmlText* childText = child->ToText(); - if ( childText ) { - return childText->Value(); - } - } - return 0; -} - - -TiXmlDocument::TiXmlDocument() : TiXmlNode( TiXmlNode::TINYXML_DOCUMENT ) -{ - tabsize = 4; - useMicrosoftBOM = false; - ClearError(); -} - -TiXmlDocument::TiXmlDocument( const char * documentName ) : TiXmlNode( TiXmlNode::TINYXML_DOCUMENT ) -{ - tabsize = 4; - useMicrosoftBOM = false; - value = documentName; - ClearError(); -} - - -#ifdef TIXML_USE_STL -TiXmlDocument::TiXmlDocument( const std::string& documentName ) : TiXmlNode( TiXmlNode::TINYXML_DOCUMENT ) -{ - tabsize = 4; - useMicrosoftBOM = false; - value = documentName; - ClearError(); -} -#endif - - -TiXmlDocument::TiXmlDocument( const TiXmlDocument& copy ) : TiXmlNode( TiXmlNode::TINYXML_DOCUMENT ) -{ - copy.CopyTo( this ); -} - - -TiXmlDocument& TiXmlDocument::operator=( const TiXmlDocument& copy ) -{ - Clear(); - copy.CopyTo( this ); - return *this; -} - - -bool TiXmlDocument::LoadFile( TiXmlEncoding encoding ) -{ - return LoadFile( Value(), encoding ); -} - - -bool TiXmlDocument::SaveFile() const -{ - return SaveFile( Value() ); -} - -bool TiXmlDocument::LoadFile( const char* _filename, TiXmlEncoding encoding ) -{ - TIXML_STRING filename( _filename ); - value = filename; - - // reading in binary mode so that tinyxml can normalize the EOL - FILE* file = TiXmlFOpen( value.c_str (), "rb" ); - - if ( file ) - { - bool result = LoadFile( file, encoding ); - fclose( file ); - return result; - } - else - { - SetError( TIXML_ERROR_OPENING_FILE, 0, 0, TIXML_ENCODING_UNKNOWN ); - return false; - } -} - -bool TiXmlDocument::LoadFile( FILE* file, TiXmlEncoding encoding ) -{ - if ( !file ) - { - SetError( TIXML_ERROR_OPENING_FILE, 0, 0, TIXML_ENCODING_UNKNOWN ); - return false; - } - - // Delete the existing data: - Clear(); - location.Clear(); - - // Get the file size, so we can pre-allocate the string. HUGE speed impact. - long length = 0; - fseek( file, 0, SEEK_END ); - length = ftell( file ); - fseek( file, 0, SEEK_SET ); - - // Strange case, but good to handle up front. - if ( length <= 0 ) - { - SetError( TIXML_ERROR_DOCUMENT_EMPTY, 0, 0, TIXML_ENCODING_UNKNOWN ); - return false; - } - - // Subtle bug here. TinyXml did use fgets. But from the XML spec: - // 2.11 End-of-Line Handling - // - // - // ...the XML processor MUST behave as if it normalized all line breaks in external - // parsed entities (including the document entity) on input, before parsing, by translating - // both the two-character sequence #xD #xA and any #xD that is not followed by #xA to - // a single #xA character. - // - // - // It is not clear fgets does that, and certainly isn't clear it works cross platform. - // Generally, you expect fgets to translate from the convention of the OS to the c/unix - // convention, and not work generally. - - /* - while( fgets( buf, sizeof(buf), file ) ) - { - data += buf; - } - */ - - char* buf = new char[ length+1 ]; - buf[0] = 0; - - if ( fread( buf, length, 1, file ) != 1 ) { - delete [] buf; - SetError( TIXML_ERROR_OPENING_FILE, 0, 0, TIXML_ENCODING_UNKNOWN ); - return false; - } - - // Process the buffer in place to normalize new lines. (See comment above.) - // Copies from the 'p' to 'q' pointer, where p can advance faster if - // a newline-carriage return is hit. - // - // Wikipedia: - // Systems based on ASCII or a compatible character set use either LF (Line feed, '\n', 0x0A, 10 in decimal) or - // CR (Carriage return, '\r', 0x0D, 13 in decimal) individually, or CR followed by LF (CR+LF, 0x0D 0x0A)... - // * LF: Multics, Unix and Unix-like systems (GNU/Linux, AIX, Xenix, Mac OS X, FreeBSD, etc.), BeOS, Amiga, RISC OS, and others - // * CR+LF: DEC RT-11 and most other early non-Unix, non-IBM OSes, CP/M, MP/M, DOS, OS/2, Microsoft Windows, Symbian OS - // * CR: Commodore 8-bit machines, Apple II family, Mac OS up to version 9 and OS-9 - - const char* p = buf; // the read head - char* q = buf; // the write head - const char CR = 0x0d; - const char LF = 0x0a; - - buf[length] = 0; - while( *p ) { - assert( p < (buf+length) ); - assert( q <= (buf+length) ); - assert( q <= p ); - - if ( *p == CR ) { - *q++ = LF; - p++; - if ( *p == LF ) { // check for CR+LF (and skip LF) - p++; - } - } - else { - *q++ = *p++; - } - } - assert( q <= (buf+length) ); - *q = 0; - - Parse( buf, 0, encoding ); - - delete [] buf; - return !Error(); -} - - -bool TiXmlDocument::SaveFile( const char * filename ) const -{ - // The old c stuff lives on... - FILE* fp = TiXmlFOpen( filename, "w" ); - if ( fp ) - { - bool result = SaveFile( fp ); - fclose( fp ); - return result; - } - return false; -} - - -bool TiXmlDocument::SaveFile( FILE* fp ) const -{ - if ( useMicrosoftBOM ) - { - const unsigned char TIXML_UTF_LEAD_0 = 0xefU; - const unsigned char TIXML_UTF_LEAD_1 = 0xbbU; - const unsigned char TIXML_UTF_LEAD_2 = 0xbfU; - - fputc( TIXML_UTF_LEAD_0, fp ); - fputc( TIXML_UTF_LEAD_1, fp ); - fputc( TIXML_UTF_LEAD_2, fp ); - } - Print( fp, 0 ); - return (ferror(fp) == 0); -} - - -void TiXmlDocument::CopyTo( TiXmlDocument* target ) const -{ - TiXmlNode::CopyTo( target ); - - target->error = error; - target->errorId = errorId; - target->errorDesc = errorDesc; - target->tabsize = tabsize; - target->errorLocation = errorLocation; - target->useMicrosoftBOM = useMicrosoftBOM; - - TiXmlNode* node = 0; - for ( node = firstChild; node; node = node->NextSibling() ) - { - target->LinkEndChild( node->Clone() ); - } -} - - -TiXmlNode* TiXmlDocument::Clone() const -{ - TiXmlDocument* clone = new TiXmlDocument(); - if ( !clone ) - return 0; - - CopyTo( clone ); - return clone; -} - - -void TiXmlDocument::Print( FILE* cfile, int depth ) const -{ - assert( cfile ); - for ( const TiXmlNode* node=FirstChild(); node; node=node->NextSibling() ) - { - node->Print( cfile, depth ); - fprintf( cfile, "\n" ); - } -} - - -bool TiXmlDocument::Accept( TiXmlVisitor* visitor ) const -{ - if ( visitor->VisitEnter( *this ) ) - { - for ( const TiXmlNode* node=FirstChild(); node; node=node->NextSibling() ) - { - if ( !node->Accept( visitor ) ) - break; - } - } - return visitor->VisitExit( *this ); -} - - -const TiXmlAttribute* TiXmlAttribute::Next() const -{ - // We are using knowledge of the sentinel. The sentinel - // have a value or name. - if ( next->value.empty() && next->name.empty() ) - return 0; - return next; -} - -/* -TiXmlAttribute* TiXmlAttribute::Next() -{ - // We are using knowledge of the sentinel. The sentinel - // have a value or name. - if ( next->value.empty() && next->name.empty() ) - return 0; - return next; -} -*/ - -const TiXmlAttribute* TiXmlAttribute::Previous() const -{ - // We are using knowledge of the sentinel. The sentinel - // have a value or name. - if ( prev->value.empty() && prev->name.empty() ) - return 0; - return prev; -} - -/* -TiXmlAttribute* TiXmlAttribute::Previous() -{ - // We are using knowledge of the sentinel. The sentinel - // have a value or name. - if ( prev->value.empty() && prev->name.empty() ) - return 0; - return prev; -} -*/ - -void TiXmlAttribute::Print( FILE* cfile, int /*depth*/, TIXML_STRING* str ) const -{ - TIXML_STRING n, v; - - EncodeString( name, &n ); - EncodeString( value, &v ); - - if (value.find ('\"') == TIXML_STRING::npos) { - if ( cfile ) { - fprintf (cfile, "%s=\"%s\"", n.c_str(), v.c_str() ); - } - if ( str ) { - (*str) += n; (*str) += "=\""; (*str) += v; (*str) += "\""; - } - } - else { - if ( cfile ) { - fprintf (cfile, "%s='%s'", n.c_str(), v.c_str() ); - } - if ( str ) { - (*str) += n; (*str) += "='"; (*str) += v; (*str) += "'"; - } - } -} - - -int TiXmlAttribute::QueryIntValue( int* ival ) const -{ - if ( TIXML_SSCANF( value.c_str(), "%d", ival ) == 1 ) - return TIXML_SUCCESS; - return TIXML_WRONG_TYPE; -} - -int TiXmlAttribute::QueryDoubleValue( double* dval ) const -{ - if ( TIXML_SSCANF( value.c_str(), "%lf", dval ) == 1 ) - return TIXML_SUCCESS; - return TIXML_WRONG_TYPE; -} - -void TiXmlAttribute::SetIntValue( int _value ) -{ - char buf [64]; - #if defined(TIXML_SNPRINTF) - TIXML_SNPRINTF(buf, sizeof(buf), "%d", _value); - #else - sprintf (buf, "%d", _value); - #endif - SetValue (buf); -} - -void TiXmlAttribute::SetDoubleValue( double _value ) -{ - char buf [256]; - #if defined(TIXML_SNPRINTF) - TIXML_SNPRINTF( buf, sizeof(buf), "%g", _value); - #else - sprintf (buf, "%g", _value); - #endif - SetValue (buf); -} - -int TiXmlAttribute::IntValue() const -{ - return atoi (value.c_str ()); -} - -double TiXmlAttribute::DoubleValue() const -{ - return atof (value.c_str ()); -} - - -TiXmlComment::TiXmlComment( const TiXmlComment& copy ) : TiXmlNode( TiXmlNode::TINYXML_COMMENT ) -{ - copy.CopyTo( this ); -} - - -TiXmlComment& TiXmlComment::operator=( const TiXmlComment& base ) -{ - Clear(); - base.CopyTo( this ); - return *this; -} - - -void TiXmlComment::Print( FILE* cfile, int depth ) const -{ - assert( cfile ); - for ( int i=0; i", value.c_str() ); -} - - -void TiXmlComment::CopyTo( TiXmlComment* target ) const -{ - TiXmlNode::CopyTo( target ); -} - - -bool TiXmlComment::Accept( TiXmlVisitor* visitor ) const -{ - return visitor->Visit( *this ); -} - - -TiXmlNode* TiXmlComment::Clone() const -{ - TiXmlComment* clone = new TiXmlComment(); - - if ( !clone ) - return 0; - - CopyTo( clone ); - return clone; -} - - -void TiXmlText::Print( FILE* cfile, int depth ) const -{ - assert( cfile ); - if ( cdata ) - { - int i; - fprintf( cfile, "\n" ); - for ( i=0; i\n", value.c_str() ); // unformatted output - } - else - { - TIXML_STRING buffer; - EncodeString( value, &buffer ); - fprintf( cfile, "%s", buffer.c_str() ); - } -} - - -void TiXmlText::CopyTo( TiXmlText* target ) const -{ - TiXmlNode::CopyTo( target ); - target->cdata = cdata; -} - - -bool TiXmlText::Accept( TiXmlVisitor* visitor ) const -{ - return visitor->Visit( *this ); -} - - -TiXmlNode* TiXmlText::Clone() const -{ - TiXmlText* clone = 0; - clone = new TiXmlText( "" ); - - if ( !clone ) - return 0; - - CopyTo( clone ); - return clone; -} - - -TiXmlDeclaration::TiXmlDeclaration( const char * _version, - const char * _encoding, - const char * _standalone ) - : TiXmlNode( TiXmlNode::TINYXML_DECLARATION ) -{ - version = _version; - encoding = _encoding; - standalone = _standalone; -} - - -#ifdef TIXML_USE_STL -TiXmlDeclaration::TiXmlDeclaration( const std::string& _version, - const std::string& _encoding, - const std::string& _standalone ) - : TiXmlNode( TiXmlNode::TINYXML_DECLARATION ) -{ - version = _version; - encoding = _encoding; - standalone = _standalone; -} -#endif - - -TiXmlDeclaration::TiXmlDeclaration( const TiXmlDeclaration& copy ) - : TiXmlNode( TiXmlNode::TINYXML_DECLARATION ) -{ - copy.CopyTo( this ); -} - - -TiXmlDeclaration& TiXmlDeclaration::operator=( const TiXmlDeclaration& copy ) -{ - Clear(); - copy.CopyTo( this ); - return *this; -} - - -void TiXmlDeclaration::Print( FILE* cfile, int /*depth*/, TIXML_STRING* str ) const -{ - if ( cfile ) fprintf( cfile, "" ); - if ( str ) (*str) += "?>"; -} - - -void TiXmlDeclaration::CopyTo( TiXmlDeclaration* target ) const -{ - TiXmlNode::CopyTo( target ); - - target->version = version; - target->encoding = encoding; - target->standalone = standalone; -} - - -bool TiXmlDeclaration::Accept( TiXmlVisitor* visitor ) const -{ - return visitor->Visit( *this ); -} - - -TiXmlNode* TiXmlDeclaration::Clone() const -{ - TiXmlDeclaration* clone = new TiXmlDeclaration(); - - if ( !clone ) - return 0; - - CopyTo( clone ); - return clone; -} - - -void TiXmlUnknown::Print( FILE* cfile, int depth ) const -{ - for ( int i=0; i", value.c_str() ); -} - - -void TiXmlUnknown::CopyTo( TiXmlUnknown* target ) const -{ - TiXmlNode::CopyTo( target ); -} - - -bool TiXmlUnknown::Accept( TiXmlVisitor* visitor ) const -{ - return visitor->Visit( *this ); -} - - -TiXmlNode* TiXmlUnknown::Clone() const -{ - TiXmlUnknown* clone = new TiXmlUnknown(); - - if ( !clone ) - return 0; - - CopyTo( clone ); - return clone; -} - - -TiXmlAttributeSet::TiXmlAttributeSet() -{ - sentinel.next = &sentinel; - sentinel.prev = &sentinel; -} - - -TiXmlAttributeSet::~TiXmlAttributeSet() -{ - assert( sentinel.next == &sentinel ); - assert( sentinel.prev == &sentinel ); -} - - -void TiXmlAttributeSet::Add( TiXmlAttribute* addMe ) -{ - #ifdef TIXML_USE_STL - assert( !Find( TIXML_STRING( addMe->Name() ) ) ); // Shouldn't be multiply adding to the set. - #else - assert( !Find( addMe->Name() ) ); // Shouldn't be multiply adding to the set. - #endif - - addMe->next = &sentinel; - addMe->prev = sentinel.prev; - - sentinel.prev->next = addMe; - sentinel.prev = addMe; -} - -void TiXmlAttributeSet::Remove( TiXmlAttribute* removeMe ) -{ - TiXmlAttribute* node; - - for( node = sentinel.next; node != &sentinel; node = node->next ) - { - if ( node == removeMe ) - { - node->prev->next = node->next; - node->next->prev = node->prev; - node->next = 0; - node->prev = 0; - return; - } - } - assert( 0 ); // we tried to remove a non-linked attribute. -} - - -#ifdef TIXML_USE_STL -TiXmlAttribute* TiXmlAttributeSet::Find( const std::string& name ) const -{ - for( TiXmlAttribute* node = sentinel.next; node != &sentinel; node = node->next ) - { - if ( node->name == name ) - return node; - } - return 0; -} - -TiXmlAttribute* TiXmlAttributeSet::FindOrCreate( const std::string& _name ) -{ - TiXmlAttribute* attrib = Find( _name ); - if ( !attrib ) { - attrib = new TiXmlAttribute(); - Add( attrib ); - attrib->SetName( _name ); - } - return attrib; -} -#endif - - -TiXmlAttribute* TiXmlAttributeSet::Find( const char* name ) const -{ - for( TiXmlAttribute* node = sentinel.next; node != &sentinel; node = node->next ) - { - if ( strcmp( node->name.c_str(), name ) == 0 ) - return node; - } - return 0; -} - - -TiXmlAttribute* TiXmlAttributeSet::FindOrCreate( const char* _name ) -{ - TiXmlAttribute* attrib = Find( _name ); - if ( !attrib ) { - attrib = new TiXmlAttribute(); - Add( attrib ); - attrib->SetName( _name ); - } - return attrib; -} - - -#ifdef TIXML_USE_STL -std::istream& operator>> (std::istream & in, TiXmlNode & base) -{ - TIXML_STRING tag; - tag.reserve( 8 * 1000 ); - base.StreamIn( &in, &tag ); - - base.Parse( tag.c_str(), 0, TIXML_DEFAULT_ENCODING ); - return in; -} -#endif - - -#ifdef TIXML_USE_STL -std::ostream& operator<< (std::ostream & out, const TiXmlNode & base) -{ - TiXmlPrinter printer; - printer.SetStreamPrinting(); - base.Accept( &printer ); - out << printer.Str(); - - return out; -} - - -std::string& operator<< (std::string& out, const TiXmlNode& base ) -{ - TiXmlPrinter printer; - printer.SetStreamPrinting(); - base.Accept( &printer ); - out.append( printer.Str() ); - - return out; -} -#endif - - -TiXmlHandle TiXmlHandle::FirstChild() const -{ - if ( node ) - { - TiXmlNode* child = node->FirstChild(); - if ( child ) - return TiXmlHandle( child ); - } - return TiXmlHandle( 0 ); -} - - -TiXmlHandle TiXmlHandle::FirstChild( const char * value ) const -{ - if ( node ) - { - TiXmlNode* child = node->FirstChild( value ); - if ( child ) - return TiXmlHandle( child ); - } - return TiXmlHandle( 0 ); -} - - -TiXmlHandle TiXmlHandle::FirstChildElement() const -{ - if ( node ) - { - TiXmlElement* child = node->FirstChildElement(); - if ( child ) - return TiXmlHandle( child ); - } - return TiXmlHandle( 0 ); -} - - -TiXmlHandle TiXmlHandle::FirstChildElement( const char * value ) const -{ - if ( node ) - { - TiXmlElement* child = node->FirstChildElement( value ); - if ( child ) - return TiXmlHandle( child ); - } - return TiXmlHandle( 0 ); -} - - -TiXmlHandle TiXmlHandle::Child( int count ) const -{ - if ( node ) - { - int i; - TiXmlNode* child = node->FirstChild(); - for ( i=0; - child && iNextSibling(), ++i ) - { - // nothing - } - if ( child ) - return TiXmlHandle( child ); - } - return TiXmlHandle( 0 ); -} - - -TiXmlHandle TiXmlHandle::Child( const char* value, int count ) const -{ - if ( node ) - { - int i; - TiXmlNode* child = node->FirstChild( value ); - for ( i=0; - child && iNextSibling( value ), ++i ) - { - // nothing - } - if ( child ) - return TiXmlHandle( child ); - } - return TiXmlHandle( 0 ); -} - - -TiXmlHandle TiXmlHandle::ChildElement( int count ) const -{ - if ( node ) - { - int i; - TiXmlElement* child = node->FirstChildElement(); - for ( i=0; - child && iNextSiblingElement(), ++i ) - { - // nothing - } - if ( child ) - return TiXmlHandle( child ); - } - return TiXmlHandle( 0 ); -} - - -TiXmlHandle TiXmlHandle::ChildElement( const char* value, int count ) const -{ - if ( node ) - { - int i; - TiXmlElement* child = node->FirstChildElement( value ); - for ( i=0; - child && iNextSiblingElement( value ), ++i ) - { - // nothing - } - if ( child ) - return TiXmlHandle( child ); - } - return TiXmlHandle( 0 ); -} - - -bool TiXmlPrinter::VisitEnter( const TiXmlDocument& ) -{ - return true; -} - -bool TiXmlPrinter::VisitExit( const TiXmlDocument& ) -{ - return true; -} - -bool TiXmlPrinter::VisitEnter( const TiXmlElement& element, const TiXmlAttribute* firstAttribute ) -{ - DoIndent(); - buffer += "<"; - buffer += element.Value(); - - for( const TiXmlAttribute* attrib = firstAttribute; attrib; attrib = attrib->Next() ) - { - buffer += " "; - attrib->Print( 0, 0, &buffer ); - } - - if ( !element.FirstChild() ) - { - buffer += " />"; - DoLineBreak(); - } - else - { - buffer += ">"; - if ( element.FirstChild()->ToText() - && element.LastChild() == element.FirstChild() - && element.FirstChild()->ToText()->CDATA() == false ) - { - simpleTextPrint = true; - // no DoLineBreak()! - } - else - { - DoLineBreak(); - } - } - ++depth; - return true; -} - - -bool TiXmlPrinter::VisitExit( const TiXmlElement& element ) -{ - --depth; - if ( !element.FirstChild() ) - { - // nothing. - } - else - { - if ( simpleTextPrint ) - { - simpleTextPrint = false; - } - else - { - DoIndent(); - } - buffer += ""; - DoLineBreak(); - } - return true; -} - - -bool TiXmlPrinter::Visit( const TiXmlText& text ) -{ - if ( text.CDATA() ) - { - DoIndent(); - buffer += ""; - DoLineBreak(); - } - else if ( simpleTextPrint ) - { - TIXML_STRING str; - TiXmlBase::EncodeString( text.ValueTStr(), &str ); - buffer += str; - } - else - { - DoIndent(); - TIXML_STRING str; - TiXmlBase::EncodeString( text.ValueTStr(), &str ); - buffer += str; - DoLineBreak(); - } - return true; -} - - -bool TiXmlPrinter::Visit( const TiXmlDeclaration& declaration ) -{ - DoIndent(); - declaration.Print( 0, 0, &buffer ); - DoLineBreak(); - return true; -} - - -bool TiXmlPrinter::Visit( const TiXmlComment& comment ) -{ - DoIndent(); - buffer += ""; - DoLineBreak(); - return true; -} - - -bool TiXmlPrinter::Visit( const TiXmlUnknown& unknown ) -{ - DoIndent(); - buffer += "<"; - buffer += unknown.Value(); - buffer += ">"; - DoLineBreak(); - return true; -} - diff --git a/src/tinyxml/tinyxml.h b/src/tinyxml/tinyxml.h deleted file mode 100755 index c7e618f..0000000 --- a/src/tinyxml/tinyxml.h +++ /dev/null @@ -1,1818 +0,0 @@ -/* -www.sourceforge.net/projects/tinyxml -Original code by Lee Thomason (www.grinninglizard.com) - -This software is provided 'as-is', without any express or implied -warranty. In no event will the authors be held liable for any -damages arising from the use of this software. - -Permission is granted to anyone to use this software for any -purpose, including commercial applications, and to alter it and -redistribute it freely, subject to the following restrictions: - -1. The origin of this software must not be misrepresented; you must -not claim that you wrote the original software. If you use this -software in a product, an acknowledgment in the product documentation -would be appreciated but is not required. - -2. Altered source versions must be plainly marked as such, and -must not be misrepresented as being the original software. - -3. This notice may not be removed or altered from any source -distribution. -*/ - - -#ifndef TINYXML_INCLUDED -#define TINYXML_INCLUDED - -/* tinyxml is part of opencpn as well, but since it is not a dynamic library, - unused symbols are thrown out. Without this, it uses some symbols from here - and some from there resulting in crashes, this fixes it (not needed for windows) -*/ -#ifndef __WXMSW__ -#undef DECL_EXP -# define DECL_EXP//#define DECL_EXP __attribute__((visibility("hidden"))) -#else -# ifndef DECL_EXP // make DECL_EXP empty -# define DECL_EXP -# endif -#endif - -#ifdef _MSC_VER -#pragma warning( push ) -#pragma warning( disable : 4530 ) -#pragma warning( disable : 4786 ) -#endif - -#include -#include -#include -#include -#include - -// Help out windows: -#if defined( _DEBUG ) && !defined( DEBUG ) -#define DEBUG -#endif - -#ifdef TIXML_USE_STL - #include - #include - #include - #define TIXML_STRING std::string -#else - #include "tinyxml/tinystr.h" - #define TIXML_STRING TiXmlString -#endif - -// Deprecated library function hell. Compilers want to use the -// new safe versions. This probably doesn't fully address the problem, -// but it gets closer. There are too many compilers for me to fully -// test. If you get compilation troubles, undefine TIXML_SAFE -#define TIXML_SAFE - -#ifdef TIXML_SAFE - #if defined(_MSC_VER) && (_MSC_VER >= 1400 ) - // Microsoft visual studio, version 2005 and higher. - #define TIXML_SNPRINTF _snprintf_s - #define TIXML_SSCANF sscanf_s - #elif defined(_MSC_VER) && (_MSC_VER >= 1200 ) - // Microsoft visual studio, version 6 and higher. - //#pragma message( "Using _sn* functions." ) - #define TIXML_SNPRINTF _snprintf - #define TIXML_SSCANF sscanf - #elif defined(__GNUC__) && (__GNUC__ >= 3 ) - // GCC version 3 and higher.s - //#warning( "Using sn* functions." ) - #define TIXML_SNPRINTF snprintf - #define TIXML_SSCANF sscanf - #else - #define TIXML_SNPRINTF snprintf - #define TIXML_SSCANF sscanf - #endif -#endif - -class TiXmlDocument; -class TiXmlElement; -class TiXmlComment; -class TiXmlUnknown; -class TiXmlAttribute; -class TiXmlText; -class TiXmlDeclaration; -class TiXmlParsingData; - -const int TIXML_MAJOR_VERSION = 2; -const int TIXML_MINOR_VERSION = 6; -const int TIXML_PATCH_VERSION = 2; - -/* Internal structure for tracking location of items - in the XML file. -*/ -struct DECL_EXP TiXmlCursor -{ - TiXmlCursor() { Clear(); } - void Clear() { row = col = -1; } - - int row; // 0 based. - int col; // 0 based. -}; - - -/** - Implements the interface to the "Visitor pattern" (see the Accept() method.) - If you call the Accept() method, it requires being passed a TiXmlVisitor - class to handle callbacks. For nodes that contain other nodes (Document, Element) - you will get called with a VisitEnter/VisitExit pair. Nodes that are always leaves - are simply called with Visit(). - - If you return 'true' from a Visit method, recursive parsing will continue. If you return - false, no children of this node or its sibilings will be Visited. - - All flavors of Visit methods have a default implementation that returns 'true' (continue - visiting). You need to only override methods that are interesting to you. - - Generally Accept() is called on the TiXmlDocument, although all nodes suppert Visiting. - - You should never change the document from a callback. - - @sa TiXmlNode::Accept() -*/ -class DECL_EXP TiXmlVisitor -{ -public: - virtual ~TiXmlVisitor() {} - - /// Visit a document. - virtual bool VisitEnter( const TiXmlDocument& /*doc*/ ) { return true; } - /// Visit a document. - virtual bool VisitExit( const TiXmlDocument& /*doc*/ ) { return true; } - - /// Visit an element. - virtual bool VisitEnter( const TiXmlElement& /*element*/, const TiXmlAttribute* /*firstAttribute*/ ) { return true; } - /// Visit an element. - virtual bool VisitExit( const TiXmlElement& /*element*/ ) { return true; } - - /// Visit a declaration - virtual bool Visit( const TiXmlDeclaration& /*declaration*/ ) { return true; } - /// Visit a text node - virtual bool Visit( const TiXmlText& /*text*/ ) { return true; } - /// Visit a comment node - virtual bool Visit( const TiXmlComment& /*comment*/ ) { return true; } - /// Visit an unknown node - virtual bool Visit( const TiXmlUnknown& /*unknown*/ ) { return true; } -}; - -// Only used by Attribute::Query functions -enum -{ - TIXML_SUCCESS, - TIXML_NO_ATTRIBUTE, - TIXML_WRONG_TYPE -}; - - -// Used by the parsing routines. -enum TiXmlEncoding -{ - TIXML_ENCODING_UNKNOWN, - TIXML_ENCODING_UTF8, - TIXML_ENCODING_LEGACY -}; - -const TiXmlEncoding TIXML_DEFAULT_ENCODING = TIXML_ENCODING_UNKNOWN; - -/** TiXmlBase is a base class for every class in TinyXml. - It does little except to establish that TinyXml classes - can be printed and provide some utility functions. - - In XML, the document and elements can contain - other elements and other types of nodes. - - @verbatim - A Document can contain: Element (container or leaf) - Comment (leaf) - Unknown (leaf) - Declaration( leaf ) - - An Element can contain: Element (container or leaf) - Text (leaf) - Attributes (not on tree) - Comment (leaf) - Unknown (leaf) - - A Decleration contains: Attributes (not on tree) - @endverbatim -*/ -class DECL_EXP TiXmlBase -{ - friend class TiXmlNode; - friend class TiXmlElement; - friend class TiXmlDocument; - -public: - TiXmlBase() : userData(0) {} - virtual ~TiXmlBase() {} - - /** All TinyXml classes can print themselves to a filestream - or the string class (TiXmlString in non-STL mode, std::string - in STL mode.) Either or both cfile and str can be null. - - This is a formatted print, and will insert - tabs and newlines. - - (For an unformatted stream, use the << operator.) - */ - virtual void Print( FILE* cfile, int depth ) const = 0; - - /** The world does not agree on whether white space should be kept or - not. In order to make everyone happy, these global, static functions - are provided to set whether or not TinyXml will condense all white space - into a single space or not. The default is to condense. Note changing this - value is not thread safe. - */ - static void SetCondenseWhiteSpace( bool condense ) { condenseWhiteSpace = condense; } - - /// Return the current white space setting. - static bool IsWhiteSpaceCondensed() { return condenseWhiteSpace; } - - /** Return the position, in the original source file, of this node or attribute. - The row and column are 1-based. (That is the first row and first column is - 1,1). If the returns values are 0 or less, then the parser does not have - a row and column value. - - Generally, the row and column value will be set when the TiXmlDocument::Load(), - TiXmlDocument::LoadFile(), or any TiXmlNode::Parse() is called. It will NOT be set - when the DOM was created from operator>>. - - The values reflect the initial load. Once the DOM is modified programmatically - (by adding or changing nodes and attributes) the new values will NOT update to - reflect changes in the document. - - There is a minor performance cost to computing the row and column. Computation - can be disabled if TiXmlDocument::SetTabSize() is called with 0 as the value. - - @sa TiXmlDocument::SetTabSize() - */ - int Row() const { return location.row + 1; } - int Column() const { return location.col + 1; } ///< See Row() - - void SetUserData( void* user ) { userData = user; } ///< Set a pointer to arbitrary user data. - void* GetUserData() { return userData; } ///< Get a pointer to arbitrary user data. - const void* GetUserData() const { return userData; } ///< Get a pointer to arbitrary user data. - - // Table that returs, for a given lead byte, the total number of bytes - // in the UTF-8 sequence. - static const int utf8ByteTable[256]; - - virtual const char* Parse( const char* p, - TiXmlParsingData* data, - TiXmlEncoding encoding /*= TIXML_ENCODING_UNKNOWN */ ) = 0; - - /** Expands entities in a string. Note this should not contian the tag's '<', '>', etc, - or they will be transformed into entities! - */ - static void EncodeString( const TIXML_STRING& str, TIXML_STRING* out ); - - enum - { - TIXML_NO_ERROR = 0, - TIXML_ERROR, - TIXML_ERROR_OPENING_FILE, - TIXML_ERROR_PARSING_ELEMENT, - TIXML_ERROR_FAILED_TO_READ_ELEMENT_NAME, - TIXML_ERROR_READING_ELEMENT_VALUE, - TIXML_ERROR_READING_ATTRIBUTES, - TIXML_ERROR_PARSING_EMPTY, - TIXML_ERROR_READING_END_TAG, - TIXML_ERROR_PARSING_UNKNOWN, - TIXML_ERROR_PARSING_COMMENT, - TIXML_ERROR_PARSING_DECLARATION, - TIXML_ERROR_DOCUMENT_EMPTY, - TIXML_ERROR_EMBEDDED_NULL, - TIXML_ERROR_PARSING_CDATA, - TIXML_ERROR_DOCUMENT_TOP_ONLY, - - TIXML_ERROR_STRING_COUNT - }; - -protected: - - static const char* SkipWhiteSpace( const char*, TiXmlEncoding encoding ); - - inline static bool IsWhiteSpace( char c ) - { - return ( isspace( (unsigned char) c ) || c == '\n' || c == '\r' ); - } - inline static bool IsWhiteSpace( int c ) - { - if ( c < 256 ) - return IsWhiteSpace( (char) c ); - return false; // Again, only truly correct for English/Latin...but usually works. - } - - #ifdef TIXML_USE_STL - static bool StreamWhiteSpace( std::istream * in, TIXML_STRING * tag ); - static bool StreamTo( std::istream * in, int character, TIXML_STRING * tag ); - #endif - - /* Reads an XML name into the string provided. Returns - a pointer just past the last character of the name, - or 0 if the function has an error. - */ - static const char* ReadName( const char* p, TIXML_STRING* name, TiXmlEncoding encoding ); - - /* Reads text. Returns a pointer past the given end tag. - Wickedly complex options, but it keeps the (sensitive) code in one place. - */ - static const char* ReadText( const char* in, // where to start - TIXML_STRING* text, // the string read - bool ignoreWhiteSpace, // whether to keep the white space - const char* endTag, // what ends this text - bool ignoreCase, // whether to ignore case in the end tag - TiXmlEncoding encoding ); // the current encoding - - // If an entity has been found, transform it into a character. - static const char* GetEntity( const char* in, char* value, int* length, TiXmlEncoding encoding ); - - // Get a character, while interpreting entities. - // The length can be from 0 to 4 bytes. - inline static const char* GetChar( const char* p, char* _value, int* length, TiXmlEncoding encoding ) - { - assert( p ); - if ( encoding == TIXML_ENCODING_UTF8 ) - { - *length = utf8ByteTable[ *((const unsigned char*)p) ]; - assert( *length >= 0 && *length < 5 ); - } - else - { - *length = 1; - } - - if ( *length == 1 ) - { - if ( *p == '&' ) - return GetEntity( p, _value, length, encoding ); - *_value = *p; - return p+1; - } - else if ( *length ) - { - //strncpy( _value, p, *length ); // lots of compilers don't like this function (unsafe), - // and the null terminator isn't needed - for( int i=0; p[i] && i<*length; ++i ) { - _value[i] = p[i]; - } - return p + (*length); - } - else - { - // Not valid text. - return 0; - } - } - - // Return true if the next characters in the stream are any of the endTag sequences. - // Ignore case only works for english, and should only be relied on when comparing - // to English words: StringEqual( p, "version", true ) is fine. - static bool StringEqual( const char* p, - const char* endTag, - bool ignoreCase, - TiXmlEncoding encoding ); - - static const char* errorString[ TIXML_ERROR_STRING_COUNT ]; - - TiXmlCursor location; - - /// Field containing a generic user pointer - void* userData; - - // None of these methods are reliable for any language except English. - // Good for approximation, not great for accuracy. - static int IsAlpha( unsigned char anyByte, TiXmlEncoding encoding ); - static int IsAlphaNum( unsigned char anyByte, TiXmlEncoding encoding ); - inline static int ToLower( int v, TiXmlEncoding encoding ) - { - if ( encoding == TIXML_ENCODING_UTF8 ) - { - if ( v < 128 ) return tolower( v ); - return v; - } - else - { - return tolower( v ); - } - } - static void ConvertUTF32ToUTF8( unsigned long input, char* output, int* length ); - -private: - TiXmlBase( const TiXmlBase& ); // not implemented. - void operator=( const TiXmlBase& base ); // not allowed. - - struct DECL_EXP Entity - { - const char* str; - unsigned int strLength; - char chr; - }; - enum - { - NUM_ENTITY = 5, - MAX_ENTITY_LENGTH = 6 - - }; - static Entity entity[ NUM_ENTITY ]; - static bool condenseWhiteSpace; -}; - - -/** The parent class for everything in the Document Object Model. - (Except for attributes). - Nodes have siblings, a parent, and children. A node can be - in a document, or stand on its own. The type of a TiXmlNode - can be queried, and it can be cast to its more defined type. -*/ -class DECL_EXP TiXmlNode : public TiXmlBase -{ - friend class TiXmlDocument; - friend class TiXmlElement; - -public: - #ifdef TIXML_USE_STL - - /** An input stream operator, for every class. Tolerant of newlines and - formatting, but doesn't expect them. - */ - friend std::istream& operator >> (std::istream& in, TiXmlNode& base); - - /** An output stream operator, for every class. Note that this outputs - without any newlines or formatting, as opposed to Print(), which - includes tabs and new lines. - - The operator<< and operator>> are not completely symmetric. Writing - a node to a stream is very well defined. You'll get a nice stream - of output, without any extra whitespace or newlines. - - But reading is not as well defined. (As it always is.) If you create - a TiXmlElement (for example) and read that from an input stream, - the text needs to define an element or junk will result. This is - true of all input streams, but it's worth keeping in mind. - - A TiXmlDocument will read nodes until it reads a root element, and - all the children of that root element. - */ - friend std::ostream& operator<< (std::ostream& out, const TiXmlNode& base); - - /// Appends the XML node or attribute to a std::string. - friend std::string& operator<< (std::string& out, const TiXmlNode& base ); - - #endif - - /** The types of XML nodes supported by TinyXml. (All the - unsupported types are picked up by UNKNOWN.) - */ - enum NodeType - { - TINYXML_DOCUMENT, - TINYXML_ELEMENT, - TINYXML_COMMENT, - TINYXML_UNKNOWN, - TINYXML_TEXT, - TINYXML_DECLARATION, - TINYXML_TYPECOUNT - }; - - virtual ~TiXmlNode(); - - /** The meaning of 'value' changes for the specific type of - TiXmlNode. - @verbatim - Document: filename of the xml file - Element: name of the element - Comment: the comment text - Unknown: the tag contents - Text: the text string - @endverbatim - - The subclasses will wrap this function. - */ - const char *Value() const { return value.c_str (); } - - #ifdef TIXML_USE_STL - /** Return Value() as a std::string. If you only use STL, - this is more efficient than calling Value(). - Only available in STL mode. - */ - const std::string& ValueStr() const { return value; } - #endif - - const TIXML_STRING& ValueTStr() const { return value; } - - /** Changes the value of the node. Defined as: - @verbatim - Document: filename of the xml file - Element: name of the element - Comment: the comment text - Unknown: the tag contents - Text: the text string - @endverbatim - */ - void SetValue(const char * _value) { value = _value;} - - #ifdef TIXML_USE_STL - /// STL std::string form. - void SetValue( const std::string& _value ) { value = _value; } - #endif - - /// Delete all the children of this node. Does not affect 'this'. - void Clear(); - - /// One step up the DOM. - TiXmlNode* Parent() { return parent; } - const TiXmlNode* Parent() const { return parent; } - - const TiXmlNode* FirstChild() const { return firstChild; } ///< The first child of this node. Will be null if there are no children. - TiXmlNode* FirstChild() { return firstChild; } - const TiXmlNode* FirstChild( const char * value ) const; ///< The first child of this node with the matching 'value'. Will be null if none found. - /// The first child of this node with the matching 'value'. Will be null if none found. - TiXmlNode* FirstChild( const char * _value ) { - // Call through to the const version - safe since nothing is changed. Exiting syntax: cast this to a const (always safe) - // call the method, cast the return back to non-const. - return const_cast< TiXmlNode* > ((const_cast< const TiXmlNode* >(this))->FirstChild( _value )); - } - const TiXmlNode* LastChild() const { return lastChild; } /// The last child of this node. Will be null if there are no children. - TiXmlNode* LastChild() { return lastChild; } - - const TiXmlNode* LastChild( const char * value ) const; /// The last child of this node matching 'value'. Will be null if there are no children. - TiXmlNode* LastChild( const char * _value ) { - return const_cast< TiXmlNode* > ((const_cast< const TiXmlNode* >(this))->LastChild( _value )); - } - - #ifdef TIXML_USE_STL - const TiXmlNode* FirstChild( const std::string& _value ) const { return FirstChild (_value.c_str ()); } ///< STL std::string form. - TiXmlNode* FirstChild( const std::string& _value ) { return FirstChild (_value.c_str ()); } ///< STL std::string form. - const TiXmlNode* LastChild( const std::string& _value ) const { return LastChild (_value.c_str ()); } ///< STL std::string form. - TiXmlNode* LastChild( const std::string& _value ) { return LastChild (_value.c_str ()); } ///< STL std::string form. - #endif - - /** An alternate way to walk the children of a node. - One way to iterate over nodes is: - @verbatim - for( child = parent->FirstChild(); child; child = child->NextSibling() ) - @endverbatim - - IterateChildren does the same thing with the syntax: - @verbatim - child = 0; - while( child = parent->IterateChildren( child ) ) - @endverbatim - - IterateChildren takes the previous child as input and finds - the next one. If the previous child is null, it returns the - first. IterateChildren will return null when done. - */ - const TiXmlNode* IterateChildren( const TiXmlNode* previous ) const; - TiXmlNode* IterateChildren( const TiXmlNode* previous ) { - return const_cast< TiXmlNode* >( (const_cast< const TiXmlNode* >(this))->IterateChildren( previous ) ); - } - - /// This flavor of IterateChildren searches for children with a particular 'value' - const TiXmlNode* IterateChildren( const char * value, const TiXmlNode* previous ) const; - TiXmlNode* IterateChildren( const char * _value, const TiXmlNode* previous ) { - return const_cast< TiXmlNode* >( (const_cast< const TiXmlNode* >(this))->IterateChildren( _value, previous ) ); - } - - #ifdef TIXML_USE_STL - const TiXmlNode* IterateChildren( const std::string& _value, const TiXmlNode* previous ) const { return IterateChildren (_value.c_str (), previous); } ///< STL std::string form. - TiXmlNode* IterateChildren( const std::string& _value, const TiXmlNode* previous ) { return IterateChildren (_value.c_str (), previous); } ///< STL std::string form. - #endif - - /** Add a new node related to this. Adds a child past the LastChild. - Returns a pointer to the new object or NULL if an error occured. - */ - TiXmlNode* InsertEndChild( const TiXmlNode& addThis ); - - - /** Add a new node related to this. Adds a child past the LastChild. - - NOTE: the node to be added is passed by pointer, and will be - henceforth owned (and deleted) by tinyXml. This method is efficient - and avoids an extra copy, but should be used with care as it - uses a different memory model than the other insert functions. - - @sa InsertEndChild - */ - TiXmlNode* LinkEndChild( TiXmlNode* addThis ); - - /** Add a new node related to this. Adds a child before the specified child. - Returns a pointer to the new object or NULL if an error occured. - */ - TiXmlNode* InsertBeforeChild( TiXmlNode* beforeThis, const TiXmlNode& addThis ); - - /** Add a new node related to this. Adds a child after the specified child. - Returns a pointer to the new object or NULL if an error occured. - */ - TiXmlNode* InsertAfterChild( TiXmlNode* afterThis, const TiXmlNode& addThis ); - - /** Replace a child of this node. - Returns a pointer to the new object or NULL if an error occured. - */ - TiXmlNode* ReplaceChild( TiXmlNode* replaceThis, const TiXmlNode& withThis ); - - /// Delete a child of this node. - bool RemoveChild( TiXmlNode* removeThis ); - - /// Navigate to a sibling node. - const TiXmlNode* PreviousSibling() const { return prev; } - TiXmlNode* PreviousSibling() { return prev; } - - /// Navigate to a sibling node. - const TiXmlNode* PreviousSibling( const char * ) const; - TiXmlNode* PreviousSibling( const char *_prev ) { - return const_cast< TiXmlNode* >( (const_cast< const TiXmlNode* >(this))->PreviousSibling( _prev ) ); - } - - #ifdef TIXML_USE_STL - const TiXmlNode* PreviousSibling( const std::string& _value ) const { return PreviousSibling (_value.c_str ()); } ///< STL std::string form. - TiXmlNode* PreviousSibling( const std::string& _value ) { return PreviousSibling (_value.c_str ()); } ///< STL std::string form. - const TiXmlNode* NextSibling( const std::string& _value) const { return NextSibling (_value.c_str ()); } ///< STL std::string form. - TiXmlNode* NextSibling( const std::string& _value) { return NextSibling (_value.c_str ()); } ///< STL std::string form. - #endif - - /// Navigate to a sibling node. - const TiXmlNode* NextSibling() const { return next; } - TiXmlNode* NextSibling() { return next; } - - /// Navigate to a sibling node with the given 'value'. - const TiXmlNode* NextSibling( const char * ) const; - TiXmlNode* NextSibling( const char* _next ) { - return const_cast< TiXmlNode* >( (const_cast< const TiXmlNode* >(this))->NextSibling( _next ) ); - } - - /** Convenience function to get through elements. - Calls NextSibling and ToElement. Will skip all non-Element - nodes. Returns 0 if there is not another element. - */ - const TiXmlElement* NextSiblingElement() const; - TiXmlElement* NextSiblingElement() { - return const_cast< TiXmlElement* >( (const_cast< const TiXmlNode* >(this))->NextSiblingElement() ); - } - - /** Convenience function to get through elements. - Calls NextSibling and ToElement. Will skip all non-Element - nodes. Returns 0 if there is not another element. - */ - const TiXmlElement* NextSiblingElement( const char * ) const; - TiXmlElement* NextSiblingElement( const char *_next ) { - return const_cast< TiXmlElement* >( (const_cast< const TiXmlNode* >(this))->NextSiblingElement( _next ) ); - } - - #ifdef TIXML_USE_STL - const TiXmlElement* NextSiblingElement( const std::string& _value) const { return NextSiblingElement (_value.c_str ()); } ///< STL std::string form. - TiXmlElement* NextSiblingElement( const std::string& _value) { return NextSiblingElement (_value.c_str ()); } ///< STL std::string form. - #endif - - /// Convenience function to get through elements. - const TiXmlElement* FirstChildElement() const; - TiXmlElement* FirstChildElement() { - return const_cast< TiXmlElement* >( (const_cast< const TiXmlNode* >(this))->FirstChildElement() ); - } - - /// Convenience function to get through elements. - const TiXmlElement* FirstChildElement( const char * _value ) const; - TiXmlElement* FirstChildElement( const char * _value ) { - return const_cast< TiXmlElement* >( (const_cast< const TiXmlNode* >(this))->FirstChildElement( _value ) ); - } - - #ifdef TIXML_USE_STL - const TiXmlElement* FirstChildElement( const std::string& _value ) const { return FirstChildElement (_value.c_str ()); } ///< STL std::string form. - TiXmlElement* FirstChildElement( const std::string& _value ) { return FirstChildElement (_value.c_str ()); } ///< STL std::string form. - #endif - - /** Query the type (as an enumerated value, above) of this node. - The possible types are: TINYXML_DOCUMENT, TINYXML_ELEMENT, TINYXML_COMMENT, - TINYXML_UNKNOWN, TINYXML_TEXT, and TINYXML_DECLARATION. - */ - int Type() const { return type; } - - /** Return a pointer to the Document this node lives in. - Returns null if not in a document. - */ - const TiXmlDocument* GetDocument() const; - TiXmlDocument* GetDocument() { - return const_cast< TiXmlDocument* >( (const_cast< const TiXmlNode* >(this))->GetDocument() ); - } - - /// Returns true if this node has no children. - bool NoChildren() const { return !firstChild; } - - virtual const TiXmlDocument* ToDocument() const { return 0; } ///< Cast to a more defined type. Will return null if not of the requested type. - virtual const TiXmlElement* ToElement() const { return 0; } ///< Cast to a more defined type. Will return null if not of the requested type. - virtual const TiXmlComment* ToComment() const { return 0; } ///< Cast to a more defined type. Will return null if not of the requested type. - virtual const TiXmlUnknown* ToUnknown() const { return 0; } ///< Cast to a more defined type. Will return null if not of the requested type. - virtual const TiXmlText* ToText() const { return 0; } ///< Cast to a more defined type. Will return null if not of the requested type. - virtual const TiXmlDeclaration* ToDeclaration() const { return 0; } ///< Cast to a more defined type. Will return null if not of the requested type. - - virtual TiXmlDocument* ToDocument() { return 0; } ///< Cast to a more defined type. Will return null if not of the requested type. - virtual TiXmlElement* ToElement() { return 0; } ///< Cast to a more defined type. Will return null if not of the requested type. - virtual TiXmlComment* ToComment() { return 0; } ///< Cast to a more defined type. Will return null if not of the requested type. - virtual TiXmlUnknown* ToUnknown() { return 0; } ///< Cast to a more defined type. Will return null if not of the requested type. - virtual TiXmlText* ToText() { return 0; } ///< Cast to a more defined type. Will return null if not of the requested type. - virtual TiXmlDeclaration* ToDeclaration() { return 0; } ///< Cast to a more defined type. Will return null if not of the requested type. - - /** Create an exact duplicate of this node and return it. The memory must be deleted - by the caller. - */ - virtual TiXmlNode* Clone() const = 0; - - /** Accept a hierchical visit the nodes in the TinyXML DOM. Every node in the - XML tree will be conditionally visited and the host will be called back - via the TiXmlVisitor interface. - - This is essentially a SAX interface for TinyXML. (Note however it doesn't re-parse - the XML for the callbacks, so the performance of TinyXML is unchanged by using this - interface versus any other.) - - The interface has been based on ideas from: - - - http://www.saxproject.org/ - - http://c2.com/cgi/wiki?HierarchicalVisitorPattern - - Which are both good references for "visiting". - - An example of using Accept(): - @verbatim - TiXmlPrinter printer; - tinyxmlDoc.Accept( &printer ); - const char* xmlcstr = printer.CStr(); - @endverbatim - */ - virtual bool Accept( TiXmlVisitor* visitor ) const = 0; - -protected: - TiXmlNode( NodeType _type ); - - // Copy to the allocated object. Shared functionality between Clone, Copy constructor, - // and the assignment operator. - void CopyTo( TiXmlNode* target ) const; - - #ifdef TIXML_USE_STL - // The real work of the input operator. - virtual void StreamIn( std::istream* in, TIXML_STRING* tag ) = 0; - #endif - - // Figure out what is at *p, and parse it. Returns null if it is not an xml node. - TiXmlNode* Identify( const char* start, TiXmlEncoding encoding ); - - TiXmlNode* parent; - NodeType type; - - TiXmlNode* firstChild; - TiXmlNode* lastChild; - - TIXML_STRING value; - - TiXmlNode* prev; - TiXmlNode* next; - -private: - TiXmlNode( const TiXmlNode& ); // not implemented. - void operator=( const TiXmlNode& base ); // not allowed. -}; - - -/** An attribute is a name-value pair. Elements have an arbitrary - number of attributes, each with a unique name. - - @note The attributes are not TiXmlNodes, since they are not - part of the tinyXML document object model. There are other - suggested ways to look at this problem. -*/ -class DECL_EXP TiXmlAttribute : public TiXmlBase -{ - friend class TiXmlAttributeSet; - -public: - /// Construct an empty attribute. - TiXmlAttribute() : TiXmlBase() - { - document = 0; - prev = next = 0; - } - - #ifdef TIXML_USE_STL - /// std::string constructor. - TiXmlAttribute( const std::string& _name, const std::string& _value ) - { - name = _name; - value = _value; - document = 0; - prev = next = 0; - } - #endif - - /// Construct an attribute with a name and value. - TiXmlAttribute( const char * _name, const char * _value ) - { - name = _name; - value = _value; - document = 0; - prev = next = 0; - } - - const char* Name() const { return name.c_str(); } ///< Return the name of this attribute. - const char* Value() const { return value.c_str(); } ///< Return the value of this attribute. - #ifdef TIXML_USE_STL - const std::string& ValueStr() const { return value; } ///< Return the value of this attribute. - #endif - int IntValue() const; ///< Return the value of this attribute, converted to an integer. - double DoubleValue() const; ///< Return the value of this attribute, converted to a double. - - // Get the tinyxml string representation - const TIXML_STRING& NameTStr() const { return name; } - - /** QueryIntValue examines the value string. It is an alternative to the - IntValue() method with richer error checking. - If the value is an integer, it is stored in 'value' and - the call returns TIXML_SUCCESS. If it is not - an integer, it returns TIXML_WRONG_TYPE. - - A specialized but useful call. Note that for success it returns 0, - which is the opposite of almost all other TinyXml calls. - */ - int QueryIntValue( int* _value ) const; - /// QueryDoubleValue examines the value string. See QueryIntValue(). - int QueryDoubleValue( double* _value ) const; - - void SetName( const char* _name ) { name = _name; } ///< Set the name of this attribute. - void SetValue( const char* _value ) { value = _value; } ///< Set the value. - - void SetIntValue( int _value ); ///< Set the value from an integer. - void SetDoubleValue( double _value ); ///< Set the value from a double. - - #ifdef TIXML_USE_STL - /// STL std::string form. - void SetName( const std::string& _name ) { name = _name; } - /// STL std::string form. - void SetValue( const std::string& _value ) { value = _value; } - #endif - - /// Get the next sibling attribute in the DOM. Returns null at end. - const TiXmlAttribute* Next() const; - TiXmlAttribute* Next() { - return const_cast< TiXmlAttribute* >( (const_cast< const TiXmlAttribute* >(this))->Next() ); - } - - /// Get the previous sibling attribute in the DOM. Returns null at beginning. - const TiXmlAttribute* Previous() const; - TiXmlAttribute* Previous() { - return const_cast< TiXmlAttribute* >( (const_cast< const TiXmlAttribute* >(this))->Previous() ); - } - - bool operator==( const TiXmlAttribute& rhs ) const { return rhs.name == name; } - bool operator<( const TiXmlAttribute& rhs ) const { return name < rhs.name; } - bool operator>( const TiXmlAttribute& rhs ) const { return name > rhs.name; } - - /* Attribute parsing starts: first letter of the name - returns: the next char after the value end quote - */ - virtual const char* Parse( const char* p, TiXmlParsingData* data, TiXmlEncoding encoding ); - - // Prints this Attribute to a FILE stream. - virtual void Print( FILE* cfile, int depth ) const { - Print( cfile, depth, 0 ); - } - void Print( FILE* cfile, int depth, TIXML_STRING* str ) const; - - // [internal use] - // Set the document pointer so the attribute can report errors. - void SetDocument( TiXmlDocument* doc ) { document = doc; } - -private: - TiXmlAttribute( const TiXmlAttribute& ); // not implemented. - void operator=( const TiXmlAttribute& base ); // not allowed. - - TiXmlDocument* document; // A pointer back to a document, for error reporting. - TIXML_STRING name; - TIXML_STRING value; - TiXmlAttribute* prev; - TiXmlAttribute* next; -}; - - -/* A class used to manage a group of attributes. - It is only used internally, both by the ELEMENT and the DECLARATION. - - The set can be changed transparent to the Element and Declaration - classes that use it, but NOT transparent to the Attribute - which has to implement a next() and previous() method. Which makes - it a bit problematic and prevents the use of STL. - - This version is implemented with circular lists because: - - I like circular lists - - it demonstrates some independence from the (typical) doubly linked list. -*/ -class DECL_EXP TiXmlAttributeSet -{ -public: - TiXmlAttributeSet(); - ~TiXmlAttributeSet(); - - void Add( TiXmlAttribute* attribute ); - void Remove( TiXmlAttribute* attribute ); - - const TiXmlAttribute* First() const { return ( sentinel.next == &sentinel ) ? 0 : sentinel.next; } - TiXmlAttribute* First() { return ( sentinel.next == &sentinel ) ? 0 : sentinel.next; } - const TiXmlAttribute* Last() const { return ( sentinel.prev == &sentinel ) ? 0 : sentinel.prev; } - TiXmlAttribute* Last() { return ( sentinel.prev == &sentinel ) ? 0 : sentinel.prev; } - - TiXmlAttribute* Find( const char* _name ) const; - TiXmlAttribute* FindOrCreate( const char* _name ); - -# ifdef TIXML_USE_STL - TiXmlAttribute* Find( const std::string& _name ) const; - TiXmlAttribute* FindOrCreate( const std::string& _name ); -# endif - - -private: - //*ME: Because of hidden/disabled copy-construktor in TiXmlAttribute (sentinel-element), - //*ME: this class must be also use a hidden/disabled copy-constructor !!! - TiXmlAttributeSet( const TiXmlAttributeSet& ); // not allowed - void operator=( const TiXmlAttributeSet& ); // not allowed (as TiXmlAttribute) - - TiXmlAttribute sentinel; -}; - - -/** The element is a container class. It has a value, the element name, - and can contain other elements, text, comments, and unknowns. - Elements also contain an arbitrary number of attributes. -*/ -class DECL_EXP TiXmlElement : public TiXmlNode -{ -public: - /// Construct an element. - TiXmlElement (const char * in_value); - - #ifdef TIXML_USE_STL - /// std::string constructor. - TiXmlElement( const std::string& _value ); - #endif - - TiXmlElement( const TiXmlElement& ); - - TiXmlElement& operator=( const TiXmlElement& base ); - - virtual ~TiXmlElement(); - - /** Given an attribute name, Attribute() returns the value - for the attribute of that name, or null if none exists. - */ - const char* Attribute( const char* name ) const; - - /** Given an attribute name, Attribute() returns the value - for the attribute of that name, or null if none exists. - If the attribute exists and can be converted to an integer, - the integer value will be put in the return 'i', if 'i' - is non-null. - */ - const char* Attribute( const char* name, int* i ) const; - - /** Given an attribute name, Attribute() returns the value - for the attribute of that name, or null if none exists. - If the attribute exists and can be converted to an double, - the double value will be put in the return 'd', if 'd' - is non-null. - */ - const char* Attribute( const char* name, double* d ) const; - - /** QueryIntAttribute examines the attribute - it is an alternative to the - Attribute() method with richer error checking. - If the attribute is an integer, it is stored in 'value' and - the call returns TIXML_SUCCESS. If it is not - an integer, it returns TIXML_WRONG_TYPE. If the attribute - does not exist, then TIXML_NO_ATTRIBUTE is returned. - */ - int QueryIntAttribute( const char* name, int* _value ) const; - /// QueryUnsignedAttribute examines the attribute - see QueryIntAttribute(). - int QueryUnsignedAttribute( const char* name, unsigned* _value ) const; - /** QueryBoolAttribute examines the attribute - see QueryIntAttribute(). - Note that '1', 'true', or 'yes' are considered true, while '0', 'false' - and 'no' are considered false. - */ - int QueryBoolAttribute( const char* name, bool* _value ) const; - /// QueryDoubleAttribute examines the attribute - see QueryIntAttribute(). - int QueryDoubleAttribute( const char* name, double* _value ) const; - /// QueryFloatAttribute examines the attribute - see QueryIntAttribute(). - int QueryFloatAttribute( const char* name, float* _value ) const { - double d; - int result = QueryDoubleAttribute( name, &d ); - if ( result == TIXML_SUCCESS ) { - *_value = (float)d; - } - return result; - } - - #ifdef TIXML_USE_STL - /// QueryStringAttribute examines the attribute - see QueryIntAttribute(). - int QueryStringAttribute( const char* name, std::string* _value ) const { - const char* cstr = Attribute( name ); - if ( cstr ) { - *_value = std::string( cstr ); - return TIXML_SUCCESS; - } - return TIXML_NO_ATTRIBUTE; - } - - /** Template form of the attribute query which will try to read the - attribute into the specified type. Very easy, very powerful, but - be careful to make sure to call this with the correct type. - - NOTE: This method doesn't work correctly for 'string' types that contain spaces. - - @return TIXML_SUCCESS, TIXML_WRONG_TYPE, or TIXML_NO_ATTRIBUTE - */ - template< typename T > int QueryValueAttribute( const std::string& name, T* outValue ) const - { - const TiXmlAttribute* node = attributeSet.Find( name ); - if ( !node ) - return TIXML_NO_ATTRIBUTE; - - std::stringstream sstream( node->ValueStr() ); - sstream >> *outValue; - if ( !sstream.fail() ) - return TIXML_SUCCESS; - return TIXML_WRONG_TYPE; - } - - int QueryValueAttribute( const std::string& name, std::string* outValue ) const - { - const TiXmlAttribute* node = attributeSet.Find( name ); - if ( !node ) - return TIXML_NO_ATTRIBUTE; - *outValue = node->ValueStr(); - return TIXML_SUCCESS; - } - #endif - - /** Sets an attribute of name to a given value. The attribute - will be created if it does not exist, or changed if it does. - */ - void SetAttribute( const char* name, const char * _value ); - - #ifdef TIXML_USE_STL - const std::string* Attribute( const std::string& name ) const; - const std::string* Attribute( const std::string& name, int* i ) const; - const std::string* Attribute( const std::string& name, double* d ) const; - int QueryIntAttribute( const std::string& name, int* _value ) const; - int QueryDoubleAttribute( const std::string& name, double* _value ) const; - - /// STL std::string form. - void SetAttribute( const std::string& name, const std::string& _value ); - ///< STL std::string form. - void SetAttribute( const std::string& name, int _value ); - ///< STL std::string form. - void SetDoubleAttribute( const std::string& name, double value ); - #endif - - /** Sets an attribute of name to a given value. The attribute - will be created if it does not exist, or changed if it does. - */ - void SetAttribute( const char * name, int value ); - - /** Sets an attribute of name to a given value. The attribute - will be created if it does not exist, or changed if it does. - */ - void SetDoubleAttribute( const char * name, double value ); - - /** Deletes an attribute with the given name. - */ - void RemoveAttribute( const char * name ); - #ifdef TIXML_USE_STL - void RemoveAttribute( const std::string& name ) { RemoveAttribute (name.c_str ()); } ///< STL std::string form. - #endif - - const TiXmlAttribute* FirstAttribute() const { return attributeSet.First(); } ///< Access the first attribute in this element. - TiXmlAttribute* FirstAttribute() { return attributeSet.First(); } - const TiXmlAttribute* LastAttribute() const { return attributeSet.Last(); } ///< Access the last attribute in this element. - TiXmlAttribute* LastAttribute() { return attributeSet.Last(); } - - /** Convenience function for easy access to the text inside an element. Although easy - and concise, GetText() is limited compared to getting the TiXmlText child - and accessing it directly. - - If the first child of 'this' is a TiXmlText, the GetText() - returns the character string of the Text node, else null is returned. - - This is a convenient method for getting the text of simple contained text: - @verbatim - This is text - const char* str = fooElement->GetText(); - @endverbatim - - 'str' will be a pointer to "This is text". - - Note that this function can be misleading. If the element foo was created from - this XML: - @verbatim - This is text - @endverbatim - - then the value of str would be null. The first child node isn't a text node, it is - another element. From this XML: - @verbatim - This is text - @endverbatim - GetText() will return "This is ". - - WARNING: GetText() accesses a child node - don't become confused with the - similarly named TiXmlHandle::Text() and TiXmlNode::ToText() which are - safe type casts on the referenced node. - */ - const char* GetText() const; - - /// Creates a new Element and returns it - the returned element is a copy. - virtual TiXmlNode* Clone() const; - // Print the Element to a FILE stream. - virtual void Print( FILE* cfile, int depth ) const; - - /* Attribtue parsing starts: next char past '<' - returns: next char past '>' - */ - virtual const char* Parse( const char* p, TiXmlParsingData* data, TiXmlEncoding encoding ); - - virtual const TiXmlElement* ToElement() const { return this; } ///< Cast to a more defined type. Will return null not of the requested type. - virtual TiXmlElement* ToElement() { return this; } ///< Cast to a more defined type. Will return null not of the requested type. - - /** Walk the XML tree visiting this node and all of its children. - */ - virtual bool Accept( TiXmlVisitor* visitor ) const; - -protected: - - void CopyTo( TiXmlElement* target ) const; - void ClearThis(); // like clear, but initializes 'this' object as well - - // Used to be public [internal use] - #ifdef TIXML_USE_STL - virtual void StreamIn( std::istream * in, TIXML_STRING * tag ); - #endif - /* [internal use] - Reads the "value" of the element -- another element, or text. - This should terminate with the current end tag. - */ - const char* ReadValue( const char* in, TiXmlParsingData* prevData, TiXmlEncoding encoding ); - -private: - TiXmlAttributeSet attributeSet; -}; - - -/** An XML comment. -*/ -class DECL_EXP TiXmlComment : public TiXmlNode -{ -public: - /// Constructs an empty comment. - TiXmlComment() : TiXmlNode( TiXmlNode::TINYXML_COMMENT ) {} - /// Construct a comment from text. - TiXmlComment( const char* _value ) : TiXmlNode( TiXmlNode::TINYXML_COMMENT ) { - SetValue( _value ); - } - TiXmlComment( const TiXmlComment& ); - TiXmlComment& operator=( const TiXmlComment& base ); - - virtual ~TiXmlComment() {} - - /// Returns a copy of this Comment. - virtual TiXmlNode* Clone() const; - // Write this Comment to a FILE stream. - virtual void Print( FILE* cfile, int depth ) const; - - /* Attribtue parsing starts: at the ! of the !-- - returns: next char past '>' - */ - virtual const char* Parse( const char* p, TiXmlParsingData* data, TiXmlEncoding encoding ); - - virtual const TiXmlComment* ToComment() const { return this; } ///< Cast to a more defined type. Will return null not of the requested type. - virtual TiXmlComment* ToComment() { return this; } ///< Cast to a more defined type. Will return null not of the requested type. - - /** Walk the XML tree visiting this node and all of its children. - */ - virtual bool Accept( TiXmlVisitor* visitor ) const; - -protected: - void CopyTo( TiXmlComment* target ) const; - - // used to be public - #ifdef TIXML_USE_STL - virtual void StreamIn( std::istream * in, TIXML_STRING * tag ); - #endif -// virtual void StreamOut( TIXML_OSTREAM * out ) const; - -private: - -}; - - -/** XML text. A text node can have 2 ways to output the next. "normal" output - and CDATA. It will default to the mode it was parsed from the XML file and - you generally want to leave it alone, but you can change the output mode with - SetCDATA() and query it with CDATA(). -*/ -class DECL_EXP TiXmlText : public TiXmlNode -{ - friend class TiXmlElement; -public: - /** Constructor for text element. By default, it is treated as - normal, encoded text. If you want it be output as a CDATA text - element, set the parameter _cdata to 'true' - */ - TiXmlText (const char * initValue ) : TiXmlNode (TiXmlNode::TINYXML_TEXT) - { - SetValue( initValue ); - cdata = false; - } - virtual ~TiXmlText() {} - - #ifdef TIXML_USE_STL - /// Constructor. - TiXmlText( const std::string& initValue ) : TiXmlNode (TiXmlNode::TINYXML_TEXT) - { - SetValue( initValue ); - cdata = false; - } - #endif - - TiXmlText( const TiXmlText& copy ) : TiXmlNode( TiXmlNode::TINYXML_TEXT ) { copy.CopyTo( this ); } - TiXmlText& operator=( const TiXmlText& base ) { base.CopyTo( this ); return *this; } - - // Write this text object to a FILE stream. - virtual void Print( FILE* cfile, int depth ) const; - - /// Queries whether this represents text using a CDATA section. - bool CDATA() const { return cdata; } - /// Turns on or off a CDATA representation of text. - void SetCDATA( bool _cdata ) { cdata = _cdata; } - - virtual const char* Parse( const char* p, TiXmlParsingData* data, TiXmlEncoding encoding ); - - virtual const TiXmlText* ToText() const { return this; } ///< Cast to a more defined type. Will return null not of the requested type. - virtual TiXmlText* ToText() { return this; } ///< Cast to a more defined type. Will return null not of the requested type. - - /** Walk the XML tree visiting this node and all of its children. - */ - virtual bool Accept( TiXmlVisitor* content ) const; - -protected : - /// [internal use] Creates a new Element and returns it. - virtual TiXmlNode* Clone() const; - void CopyTo( TiXmlText* target ) const; - - bool Blank() const; // returns true if all white space and new lines - // [internal use] - #ifdef TIXML_USE_STL - virtual void StreamIn( std::istream * in, TIXML_STRING * tag ); - #endif - -private: - bool cdata; // true if this should be input and output as a CDATA style text element -}; - - -/** In correct XML the declaration is the first entry in the file. - @verbatim - - @endverbatim - - TinyXml will happily read or write files without a declaration, - however. There are 3 possible attributes to the declaration: - version, encoding, and standalone. - - Note: In this version of the code, the attributes are - handled as special cases, not generic attributes, simply - because there can only be at most 3 and they are always the same. -*/ -class DECL_EXP TiXmlDeclaration : public TiXmlNode -{ -public: - /// Construct an empty declaration. - TiXmlDeclaration() : TiXmlNode( TiXmlNode::TINYXML_DECLARATION ) {} - -#ifdef TIXML_USE_STL - /// Constructor. - TiXmlDeclaration( const std::string& _version, - const std::string& _encoding, - const std::string& _standalone ); -#endif - - /// Construct. - TiXmlDeclaration( const char* _version, - const char* _encoding, - const char* _standalone ); - - TiXmlDeclaration( const TiXmlDeclaration& copy ); - TiXmlDeclaration& operator=( const TiXmlDeclaration& copy ); - - virtual ~TiXmlDeclaration() {} - - /// Version. Will return an empty string if none was found. - const char *Version() const { return version.c_str (); } - /// Encoding. Will return an empty string if none was found. - const char *Encoding() const { return encoding.c_str (); } - /// Is this a standalone document? - const char *Standalone() const { return standalone.c_str (); } - - /// Creates a copy of this Declaration and returns it. - virtual TiXmlNode* Clone() const; - // Print this declaration to a FILE stream. - virtual void Print( FILE* cfile, int depth, TIXML_STRING* str ) const; - virtual void Print( FILE* cfile, int depth ) const { - Print( cfile, depth, 0 ); - } - - virtual const char* Parse( const char* p, TiXmlParsingData* data, TiXmlEncoding encoding ); - - virtual const TiXmlDeclaration* ToDeclaration() const { return this; } ///< Cast to a more defined type. Will return null not of the requested type. - virtual TiXmlDeclaration* ToDeclaration() { return this; } ///< Cast to a more defined type. Will return null not of the requested type. - - /** Walk the XML tree visiting this node and all of its children. - */ - virtual bool Accept( TiXmlVisitor* visitor ) const; - -protected: - void CopyTo( TiXmlDeclaration* target ) const; - // used to be public - #ifdef TIXML_USE_STL - virtual void StreamIn( std::istream * in, TIXML_STRING * tag ); - #endif - -private: - - TIXML_STRING version; - TIXML_STRING encoding; - TIXML_STRING standalone; -}; - - -/** Any tag that tinyXml doesn't recognize is saved as an - unknown. It is a tag of text, but should not be modified. - It will be written back to the XML, unchanged, when the file - is saved. - - DTD tags get thrown into TiXmlUnknowns. -*/ -class DECL_EXP TiXmlUnknown : public TiXmlNode -{ -public: - TiXmlUnknown() : TiXmlNode( TiXmlNode::TINYXML_UNKNOWN ) {} - virtual ~TiXmlUnknown() {} - - TiXmlUnknown( const TiXmlUnknown& copy ) : TiXmlNode( TiXmlNode::TINYXML_UNKNOWN ) { copy.CopyTo( this ); } - TiXmlUnknown& operator=( const TiXmlUnknown& copy ) { copy.CopyTo( this ); return *this; } - - /// Creates a copy of this Unknown and returns it. - virtual TiXmlNode* Clone() const; - // Print this Unknown to a FILE stream. - virtual void Print( FILE* cfile, int depth ) const; - - virtual const char* Parse( const char* p, TiXmlParsingData* data, TiXmlEncoding encoding ); - - virtual const TiXmlUnknown* ToUnknown() const { return this; } ///< Cast to a more defined type. Will return null not of the requested type. - virtual TiXmlUnknown* ToUnknown() { return this; } ///< Cast to a more defined type. Will return null not of the requested type. - - /** Walk the XML tree visiting this node and all of its children. - */ - virtual bool Accept( TiXmlVisitor* content ) const; - -protected: - void CopyTo( TiXmlUnknown* target ) const; - - #ifdef TIXML_USE_STL - virtual void StreamIn( std::istream * in, TIXML_STRING * tag ); - #endif - -private: - -}; - - -/** Always the top level node. A document binds together all the - XML pieces. It can be saved, loaded, and printed to the screen. - The 'value' of a document node is the xml file name. -*/ -class DECL_EXP TiXmlDocument : public TiXmlNode -{ -public: - /// Create an empty document, that has no name. - TiXmlDocument(); - /// Create a document with a name. The name of the document is also the filename of the xml. - TiXmlDocument( const char * documentName ); - - #ifdef TIXML_USE_STL - /// Constructor. - TiXmlDocument( const std::string& documentName ); - #endif - - TiXmlDocument( const TiXmlDocument& copy ); - TiXmlDocument& operator=( const TiXmlDocument& copy ); - - virtual ~TiXmlDocument() {} - - /** Load a file using the current document value. - Returns true if successful. Will delete any existing - document data before loading. - */ - bool LoadFile( TiXmlEncoding encoding = TIXML_DEFAULT_ENCODING ); - /// Save a file using the current document value. Returns true if successful. - bool SaveFile() const; - /// Load a file using the given filename. Returns true if successful. - bool LoadFile( const char * filename, TiXmlEncoding encoding = TIXML_DEFAULT_ENCODING ); - /// Save a file using the given filename. Returns true if successful. - bool SaveFile( const char * filename ) const; - /** Load a file using the given FILE*. Returns true if successful. Note that this method - doesn't stream - the entire object pointed at by the FILE* - will be interpreted as an XML file. TinyXML doesn't stream in XML from the current - file location. Streaming may be added in the future. - */ - bool LoadFile( FILE*, TiXmlEncoding encoding = TIXML_DEFAULT_ENCODING ); - /// Save a file using the given FILE*. Returns true if successful. - bool SaveFile( FILE* ) const; - - #ifdef TIXML_USE_STL - bool LoadFile( const std::string& filename, TiXmlEncoding encoding = TIXML_DEFAULT_ENCODING ) ///< STL std::string version. - { - return LoadFile( filename.c_str(), encoding ); - } - bool SaveFile( const std::string& filename ) const ///< STL std::string version. - { - return SaveFile( filename.c_str() ); - } - #endif - - /** Parse the given null terminated block of xml data. Passing in an encoding to this - method (either TIXML_ENCODING_LEGACY or TIXML_ENCODING_UTF8 will force TinyXml - to use that encoding, regardless of what TinyXml might otherwise try to detect. - */ - virtual const char* Parse( const char* p, TiXmlParsingData* data = 0, TiXmlEncoding encoding = TIXML_DEFAULT_ENCODING ); - - /** Get the root element -- the only top level element -- of the document. - In well formed XML, there should only be one. TinyXml is tolerant of - multiple elements at the document level. - */ - const TiXmlElement* RootElement() const { return FirstChildElement(); } - TiXmlElement* RootElement() { return FirstChildElement(); } - - /** If an error occurs, Error will be set to true. Also, - - The ErrorId() will contain the integer identifier of the error (not generally useful) - - The ErrorDesc() method will return the name of the error. (very useful) - - The ErrorRow() and ErrorCol() will return the location of the error (if known) - */ - bool Error() const { return error; } - - /// Contains a textual (english) description of the error if one occurs. - const char * ErrorDesc() const { return errorDesc.c_str (); } - - /** Generally, you probably want the error string ( ErrorDesc() ). But if you - prefer the ErrorId, this function will fetch it. - */ - int ErrorId() const { return errorId; } - - /** Returns the location (if known) of the error. The first column is column 1, - and the first row is row 1. A value of 0 means the row and column wasn't applicable - (memory errors, for example, have no row/column) or the parser lost the error. (An - error in the error reporting, in that case.) - - @sa SetTabSize, Row, Column - */ - int ErrorRow() const { return errorLocation.row+1; } - int ErrorCol() const { return errorLocation.col+1; } ///< The column where the error occured. See ErrorRow() - - /** SetTabSize() allows the error reporting functions (ErrorRow() and ErrorCol()) - to report the correct values for row and column. It does not change the output - or input in any way. - - By calling this method, with a tab size - greater than 0, the row and column of each node and attribute is stored - when the file is loaded. Very useful for tracking the DOM back in to - the source file. - - The tab size is required for calculating the location of nodes. If not - set, the default of 4 is used. The tabsize is set per document. Setting - the tabsize to 0 disables row/column tracking. - - Note that row and column tracking is not supported when using operator>>. - - The tab size needs to be enabled before the parse or load. Correct usage: - @verbatim - TiXmlDocument doc; - doc.SetTabSize( 8 ); - doc.Load( "myfile.xml" ); - @endverbatim - - @sa Row, Column - */ - void SetTabSize( int _tabsize ) { tabsize = _tabsize; } - - int TabSize() const { return tabsize; } - - /** If you have handled the error, it can be reset with this call. The error - state is automatically cleared if you Parse a new XML block. - */ - void ClearError() { error = false; - errorId = 0; - errorDesc = ""; - errorLocation.row = errorLocation.col = 0; - //errorLocation.last = 0; - } - - /** Write the document to standard out using formatted printing ("pretty print"). */ - void Print() const { Print( stdout, 0 ); } - - /* Write the document to a string using formatted printing ("pretty print"). This - will allocate a character array (new char[]) and return it as a pointer. The - calling code pust call delete[] on the return char* to avoid a memory leak. - */ - //char* PrintToMemory() const; - - /// Print this Document to a FILE stream. - virtual void Print( FILE* cfile, int depth = 0 ) const; - // [internal use] - void SetError( int err, const char* errorLocation, TiXmlParsingData* prevData, TiXmlEncoding encoding ); - - virtual const TiXmlDocument* ToDocument() const { return this; } ///< Cast to a more defined type. Will return null not of the requested type. - virtual TiXmlDocument* ToDocument() { return this; } ///< Cast to a more defined type. Will return null not of the requested type. - - /** Walk the XML tree visiting this node and all of its children. - */ - virtual bool Accept( TiXmlVisitor* content ) const; - -protected : - // [internal use] - virtual TiXmlNode* Clone() const; - #ifdef TIXML_USE_STL - virtual void StreamIn( std::istream * in, TIXML_STRING * tag ); - #endif - -private: - void CopyTo( TiXmlDocument* target ) const; - - bool error; - int errorId; - TIXML_STRING errorDesc; - int tabsize; - TiXmlCursor errorLocation; - bool useMicrosoftBOM; // the UTF-8 BOM were found when read. Note this, and try to write. -}; - - -/** - A TiXmlHandle is a class that wraps a node pointer with null checks; this is - an incredibly useful thing. Note that TiXmlHandle is not part of the TinyXml - DOM structure. It is a separate utility class. - - Take an example: - @verbatim - - - - - - - @endverbatim - - Assuming you want the value of "attributeB" in the 2nd "Child" element, it's very - easy to write a *lot* of code that looks like: - - @verbatim - TiXmlElement* root = document.FirstChildElement( "Document" ); - if ( root ) - { - TiXmlElement* element = root->FirstChildElement( "Element" ); - if ( element ) - { - TiXmlElement* child = element->FirstChildElement( "Child" ); - if ( child ) - { - TiXmlElement* child2 = child->NextSiblingElement( "Child" ); - if ( child2 ) - { - // Finally do something useful. - @endverbatim - - And that doesn't even cover "else" cases. TiXmlHandle addresses the verbosity - of such code. A TiXmlHandle checks for null pointers so it is perfectly safe - and correct to use: - - @verbatim - TiXmlHandle docHandle( &document ); - TiXmlElement* child2 = docHandle.FirstChild( "Document" ).FirstChild( "Element" ).Child( "Child", 1 ).ToElement(); - if ( child2 ) - { - // do something useful - @endverbatim - - Which is MUCH more concise and useful. - - It is also safe to copy handles - internally they are nothing more than node pointers. - @verbatim - TiXmlHandle handleCopy = handle; - @endverbatim - - What they should not be used for is iteration: - - @verbatim - int i=0; - while ( true ) - { - TiXmlElement* child = docHandle.FirstChild( "Document" ).FirstChild( "Element" ).Child( "Child", i ).ToElement(); - if ( !child ) - break; - // do something - ++i; - } - @endverbatim - - It seems reasonable, but it is in fact two embedded while loops. The Child method is - a linear walk to find the element, so this code would iterate much more than it needs - to. Instead, prefer: - - @verbatim - TiXmlElement* child = docHandle.FirstChild( "Document" ).FirstChild( "Element" ).FirstChild( "Child" ).ToElement(); - - for( child; child; child=child->NextSiblingElement() ) - { - // do something - } - @endverbatim -*/ -class DECL_EXP TiXmlHandle -{ -public: - /// Create a handle from any node (at any depth of the tree.) This can be a null pointer. - TiXmlHandle( TiXmlNode* _node ) { this->node = _node; } - /// Copy constructor - TiXmlHandle( const TiXmlHandle& ref ) { this->node = ref.node; } - TiXmlHandle operator=( const TiXmlHandle& ref ) { if ( &ref != this ) this->node = ref.node; return *this; } - - /// Return a handle to the first child node. - TiXmlHandle FirstChild() const; - /// Return a handle to the first child node with the given name. - TiXmlHandle FirstChild( const char * value ) const; - /// Return a handle to the first child element. - TiXmlHandle FirstChildElement() const; - /// Return a handle to the first child element with the given name. - TiXmlHandle FirstChildElement( const char * value ) const; - - /** Return a handle to the "index" child with the given name. - The first child is 0, the second 1, etc. - */ - TiXmlHandle Child( const char* value, int index ) const; - /** Return a handle to the "index" child. - The first child is 0, the second 1, etc. - */ - TiXmlHandle Child( int index ) const; - /** Return a handle to the "index" child element with the given name. - The first child element is 0, the second 1, etc. Note that only TiXmlElements - are indexed: other types are not counted. - */ - TiXmlHandle ChildElement( const char* value, int index ) const; - /** Return a handle to the "index" child element. - The first child element is 0, the second 1, etc. Note that only TiXmlElements - are indexed: other types are not counted. - */ - TiXmlHandle ChildElement( int index ) const; - - #ifdef TIXML_USE_STL - TiXmlHandle FirstChild( const std::string& _value ) const { return FirstChild( _value.c_str() ); } - TiXmlHandle FirstChildElement( const std::string& _value ) const { return FirstChildElement( _value.c_str() ); } - - TiXmlHandle Child( const std::string& _value, int index ) const { return Child( _value.c_str(), index ); } - TiXmlHandle ChildElement( const std::string& _value, int index ) const { return ChildElement( _value.c_str(), index ); } - #endif - - /** Return the handle as a TiXmlNode. This may return null. - */ - TiXmlNode* ToNode() const { return node; } - /** Return the handle as a TiXmlElement. This may return null. - */ - TiXmlElement* ToElement() const { return ( ( node && node->ToElement() ) ? node->ToElement() : 0 ); } - /** Return the handle as a TiXmlText. This may return null. - */ - TiXmlText* ToText() const { return ( ( node && node->ToText() ) ? node->ToText() : 0 ); } - /** Return the handle as a TiXmlUnknown. This may return null. - */ - TiXmlUnknown* ToUnknown() const { return ( ( node && node->ToUnknown() ) ? node->ToUnknown() : 0 ); } - - /** @deprecated use ToNode. - Return the handle as a TiXmlNode. This may return null. - */ - TiXmlNode* Node() const { return ToNode(); } - /** @deprecated use ToElement. - Return the handle as a TiXmlElement. This may return null. - */ - TiXmlElement* Element() const { return ToElement(); } - /** @deprecated use ToText() - Return the handle as a TiXmlText. This may return null. - */ - TiXmlText* Text() const { return ToText(); } - /** @deprecated use ToUnknown() - Return the handle as a TiXmlUnknown. This may return null. - */ - TiXmlUnknown* Unknown() const { return ToUnknown(); } - -private: - TiXmlNode* node; -}; - - -/** Print to memory functionality. The TiXmlPrinter is useful when you need to: - - -# Print to memory (especially in non-STL mode) - -# Control formatting (line endings, etc.) - - When constructed, the TiXmlPrinter is in its default "pretty printing" mode. - Before calling Accept() you can call methods to control the printing - of the XML document. After TiXmlNode::Accept() is called, the printed document can - be accessed via the CStr(), Str(), and Size() methods. - - TiXmlPrinter uses the Visitor API. - @verbatim - TiXmlPrinter printer; - printer.SetIndent( "\t" ); - - doc.Accept( &printer ); - fprintf( stdout, "%s", printer.CStr() ); - @endverbatim -*/ -class DECL_EXP TiXmlPrinter : public TiXmlVisitor -{ -public: - TiXmlPrinter() : depth( 0 ), simpleTextPrint( false ), - buffer(), indent( " " ), lineBreak( "\n" ) {} - - virtual bool VisitEnter( const TiXmlDocument& doc ); - virtual bool VisitExit( const TiXmlDocument& doc ); - - virtual bool VisitEnter( const TiXmlElement& element, const TiXmlAttribute* firstAttribute ); - virtual bool VisitExit( const TiXmlElement& element ); - - virtual bool Visit( const TiXmlDeclaration& declaration ); - virtual bool Visit( const TiXmlText& text ); - virtual bool Visit( const TiXmlComment& comment ); - virtual bool Visit( const TiXmlUnknown& unknown ); - - /** Set the indent characters for printing. By default 4 spaces - but tab (\t) is also useful, or null/empty string for no indentation. - */ - void SetIndent( const char* _indent ) { indent = _indent ? _indent : "" ; } - /// Query the indention string. - const char* Indent() { return indent.c_str(); } - /** Set the line breaking string. By default set to newline (\n). - Some operating systems prefer other characters, or can be - set to the null/empty string for no indenation. - */ - void SetLineBreak( const char* _lineBreak ) { lineBreak = _lineBreak ? _lineBreak : ""; } - /// Query the current line breaking string. - const char* LineBreak() { return lineBreak.c_str(); } - - /** Switch over to "stream printing" which is the most dense formatting without - linebreaks. Common when the XML is needed for network transmission. - */ - void SetStreamPrinting() { indent = ""; - lineBreak = ""; - } - /// Return the result. - const char* CStr() { return buffer.c_str(); } - /// Return the length of the result string. - size_t Size() { return buffer.size(); } - - #ifdef TIXML_USE_STL - /// Return the result. - const std::string& Str() { return buffer; } - #endif - -private: - void DoIndent() { - for( int i=0; i -#include - -#include "tinyxml.h" - -//#define DEBUG_PARSER -#if defined( DEBUG_PARSER ) -# if defined( DEBUG ) && defined( _MSC_VER ) -# include -# define TIXML_LOG OutputDebugString -# else -# define TIXML_LOG printf -# endif -#endif - -// Note tha "PutString" hardcodes the same list. This -// is less flexible than it appears. Changing the entries -// or order will break putstring. -TiXmlBase::Entity TiXmlBase::entity[ TiXmlBase::NUM_ENTITY ] = -{ - { "&", 5, '&' }, - { "<", 4, '<' }, - { ">", 4, '>' }, - { """, 6, '\"' }, - { "'", 6, '\'' } -}; - -// Bunch of unicode info at: -// http://www.unicode.org/faq/utf_bom.html -// Including the basic of this table, which determines the #bytes in the -// sequence from the lead byte. 1 placed for invalid sequences -- -// although the result will be junk, pass it through as much as possible. -// Beware of the non-characters in UTF-8: -// ef bb bf (Microsoft "lead bytes") -// ef bf be -// ef bf bf - -const unsigned char TIXML_UTF_LEAD_0 = 0xefU; -const unsigned char TIXML_UTF_LEAD_1 = 0xbbU; -const unsigned char TIXML_UTF_LEAD_2 = 0xbfU; - -const int TiXmlBase::utf8ByteTable[256] = -{ - // 0 1 2 3 4 5 6 7 8 9 a b c d e f - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // 0x00 - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // 0x10 - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // 0x20 - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // 0x30 - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // 0x40 - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // 0x50 - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // 0x60 - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // 0x70 End of ASCII range - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // 0x80 0x80 to 0xc1 invalid - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // 0x90 - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // 0xa0 - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // 0xb0 - 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, // 0xc0 0xc2 to 0xdf 2 byte - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, // 0xd0 - 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, // 0xe0 0xe0 to 0xef 3 byte - 4, 4, 4, 4, 4, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 // 0xf0 0xf0 to 0xf4 4 byte, 0xf5 and higher invalid -}; - - -void TiXmlBase::ConvertUTF32ToUTF8( unsigned long input, char* output, int* length ) -{ - const unsigned long BYTE_MASK = 0xBF; - const unsigned long BYTE_MARK = 0x80; - const unsigned long FIRST_BYTE_MARK[7] = { 0x00, 0x00, 0xC0, 0xE0, 0xF0, 0xF8, 0xFC }; - - if (input < 0x80) - *length = 1; - else if ( input < 0x800 ) - *length = 2; - else if ( input < 0x10000 ) - *length = 3; - else if ( input < 0x200000 ) - *length = 4; - else - { *length = 0; return; } // This code won't covert this correctly anyway. - - output += *length; - - // Scary scary fall throughs. - switch (*length) - { - case 4: - --output; - *output = (char)((input | BYTE_MARK) & BYTE_MASK); - input >>= 6; - case 3: - --output; - *output = (char)((input | BYTE_MARK) & BYTE_MASK); - input >>= 6; - case 2: - --output; - *output = (char)((input | BYTE_MARK) & BYTE_MASK); - input >>= 6; - case 1: - --output; - *output = (char)(input | FIRST_BYTE_MARK[*length]); - } -} - - -/*static*/ int TiXmlBase::IsAlpha( unsigned char anyByte, TiXmlEncoding /*encoding*/ ) -{ - // This will only work for low-ascii, everything else is assumed to be a valid - // letter. I'm not sure this is the best approach, but it is quite tricky trying - // to figure out alhabetical vs. not across encoding. So take a very - // conservative approach. - -// if ( encoding == TIXML_ENCODING_UTF8 ) -// { - if ( anyByte < 127 ) - return isalpha( anyByte ); - else - return 1; // What else to do? The unicode set is huge...get the english ones right. -// } -// else -// { -// return isalpha( anyByte ); -// } -} - - -/*static*/ int TiXmlBase::IsAlphaNum( unsigned char anyByte, TiXmlEncoding /*encoding*/ ) -{ - // This will only work for low-ascii, everything else is assumed to be a valid - // letter. I'm not sure this is the best approach, but it is quite tricky trying - // to figure out alhabetical vs. not across encoding. So take a very - // conservative approach. - -// if ( encoding == TIXML_ENCODING_UTF8 ) -// { - if ( anyByte < 127 ) - return isalnum( anyByte ); - else - return 1; // What else to do? The unicode set is huge...get the english ones right. -// } -// else -// { -// return isalnum( anyByte ); -// } -} - - -class DECL_EXP TiXmlParsingData -{ - friend class TiXmlDocument; - public: - void Stamp( const char* now, TiXmlEncoding encoding ); - - const TiXmlCursor& Cursor() const { return cursor; } - - private: - // Only used by the document! - TiXmlParsingData( const char* start, int _tabsize, int row, int col ) - { - assert( start ); - stamp = start; - tabsize = _tabsize; - cursor.row = row; - cursor.col = col; - } - - TiXmlCursor cursor; - const char* stamp; - int tabsize; -}; - - -void TiXmlParsingData::Stamp( const char* now, TiXmlEncoding encoding ) -{ - assert( now ); - - // Do nothing if the tabsize is 0. - if ( tabsize < 1 ) - { - return; - } - - // Get the current row, column. - int row = cursor.row; - int col = cursor.col; - const char* p = stamp; - assert( p ); - - while ( p < now ) - { - // Treat p as unsigned, so we have a happy compiler. - const unsigned char* pU = (const unsigned char*)p; - - // Code contributed by Fletcher Dunn: (modified by lee) - switch (*pU) { - case 0: - // We *should* never get here, but in case we do, don't - // advance past the terminating null character, ever - return; - - case '\r': - // bump down to the next line - ++row; - col = 0; - // Eat the character - ++p; - - // Check for \r\n sequence, and treat this as a single character - if (*p == '\n') { - ++p; - } - break; - - case '\n': - // bump down to the next line - ++row; - col = 0; - - // Eat the character - ++p; - - // Check for \n\r sequence, and treat this as a single - // character. (Yes, this bizarre thing does occur still - // on some arcane platforms...) - if (*p == '\r') { - ++p; - } - break; - - case '\t': - // Eat the character - ++p; - - // Skip to next tab stop - col = (col / tabsize + 1) * tabsize; - break; - - case TIXML_UTF_LEAD_0: - if ( encoding == TIXML_ENCODING_UTF8 ) - { - if ( *(p+1) && *(p+2) ) - { - // In these cases, don't advance the column. These are - // 0-width spaces. - if ( *(pU+1)==TIXML_UTF_LEAD_1 && *(pU+2)==TIXML_UTF_LEAD_2 ) - p += 3; - else if ( *(pU+1)==0xbfU && *(pU+2)==0xbeU ) - p += 3; - else if ( *(pU+1)==0xbfU && *(pU+2)==0xbfU ) - p += 3; - else - { p +=3; ++col; } // A normal character. - } - } - else - { - ++p; - ++col; - } - break; - - default: - if ( encoding == TIXML_ENCODING_UTF8 ) - { - // Eat the 1 to 4 byte utf8 character. - int step = TiXmlBase::utf8ByteTable[*((const unsigned char*)p)]; - if ( step == 0 ) - step = 1; // Error case from bad encoding, but handle gracefully. - p += step; - - // Just advance one column, of course. - ++col; - } - else - { - ++p; - ++col; - } - break; - } - } - cursor.row = row; - cursor.col = col; - assert( cursor.row >= -1 ); - assert( cursor.col >= -1 ); - stamp = p; - assert( stamp ); -} - - -const char* TiXmlBase::SkipWhiteSpace( const char* p, TiXmlEncoding encoding ) -{ - if ( !p || !*p ) - { - return 0; - } - if ( encoding == TIXML_ENCODING_UTF8 ) - { - while ( *p ) - { - const unsigned char* pU = (const unsigned char*)p; - - // Skip the stupid Microsoft UTF-8 Byte order marks - if ( *(pU+0)==TIXML_UTF_LEAD_0 - && *(pU+1)==TIXML_UTF_LEAD_1 - && *(pU+2)==TIXML_UTF_LEAD_2 ) - { - p += 3; - continue; - } - else if(*(pU+0)==TIXML_UTF_LEAD_0 - && *(pU+1)==0xbfU - && *(pU+2)==0xbeU ) - { - p += 3; - continue; - } - else if(*(pU+0)==TIXML_UTF_LEAD_0 - && *(pU+1)==0xbfU - && *(pU+2)==0xbfU ) - { - p += 3; - continue; - } - - if ( IsWhiteSpace( *p ) ) // Still using old rules for white space. - ++p; - else - break; - } - } - else - { - while ( *p && IsWhiteSpace( *p ) ) - ++p; - } - - return p; -} - -#ifdef TIXML_USE_STL -/*static*/ bool TiXmlBase::StreamWhiteSpace( std::istream * in, TIXML_STRING * tag ) -{ - for( ;; ) - { - if ( !in->good() ) return false; - - int c = in->peek(); - // At this scope, we can't get to a document. So fail silently. - if ( !IsWhiteSpace( c ) || c <= 0 ) - return true; - - *tag += (char) in->get(); - } -} - -/*static*/ bool TiXmlBase::StreamTo( std::istream * in, int character, TIXML_STRING * tag ) -{ - //assert( character > 0 && character < 128 ); // else it won't work in utf-8 - while ( in->good() ) - { - int c = in->peek(); - if ( c == character ) - return true; - if ( c <= 0 ) // Silent failure: can't get document at this scope - return false; - - in->get(); - *tag += (char) c; - } - return false; -} -#endif - -// One of TinyXML's more performance demanding functions. Try to keep the memory overhead down. The -// "assign" optimization removes over 10% of the execution time. -// -const char* TiXmlBase::ReadName( const char* p, TIXML_STRING * name, TiXmlEncoding encoding ) -{ - // Oddly, not supported on some comilers, - //name->clear(); - // So use this: - *name = ""; - assert( p ); - - // Names start with letters or underscores. - // Of course, in unicode, tinyxml has no idea what a letter *is*. The - // algorithm is generous. - // - // After that, they can be letters, underscores, numbers, - // hyphens, or colons. (Colons are valid ony for namespaces, - // but tinyxml can't tell namespaces from names.) - if ( p && *p - && ( IsAlpha( (unsigned char) *p, encoding ) || *p == '_' ) ) - { - const char* start = p; - while( p && *p - && ( IsAlphaNum( (unsigned char ) *p, encoding ) - || *p == '_' - || *p == '-' - || *p == '.' - || *p == ':' ) ) - { - //(*name) += *p; // expensive - ++p; - } - if ( p-start > 0 ) { - name->assign( start, p-start ); - } - return p; - } - return 0; -} - -const char* TiXmlBase::GetEntity( const char* p, char* value, int* length, TiXmlEncoding encoding ) -{ - // Presume an entity, and pull it out. - TIXML_STRING ent; - int i; - *length = 0; - - if ( *(p+1) && *(p+1) == '#' && *(p+2) ) - { - unsigned long ucs = 0; - ptrdiff_t delta = 0; - unsigned mult = 1; - - if ( *(p+2) == 'x' ) - { - // Hexadecimal. - if ( !*(p+3) ) return 0; - - const char* q = p+3; - q = strchr( q, ';' ); - - if ( !q || !*q ) return 0; - - delta = q-p; - --q; - - while ( *q != 'x' ) - { - if ( *q >= '0' && *q <= '9' ) - ucs += mult * (*q - '0'); - else if ( *q >= 'a' && *q <= 'f' ) - ucs += mult * (*q - 'a' + 10); - else if ( *q >= 'A' && *q <= 'F' ) - ucs += mult * (*q - 'A' + 10 ); - else - return 0; - mult *= 16; - --q; - } - } - else - { - // Decimal. - if ( !*(p+2) ) return 0; - - const char* q = p+2; - q = strchr( q, ';' ); - - if ( !q || !*q ) return 0; - - delta = q-p; - --q; - - while ( *q != '#' ) - { - if ( *q >= '0' && *q <= '9' ) - ucs += mult * (*q - '0'); - else - return 0; - mult *= 10; - --q; - } - } - if ( encoding == TIXML_ENCODING_UTF8 ) - { - // convert the UCS to UTF-8 - ConvertUTF32ToUTF8( ucs, value, length ); - } - else - { - *value = (char)ucs; - *length = 1; - } - return p + delta + 1; - } - - // Now try to match it. - for( i=0; iappend( cArr, len ); - } - } - else - { - bool whitespace = false; - - // Remove leading white space: - p = SkipWhiteSpace( p, encoding ); - while ( p && *p - && !StringEqual( p, endTag, caseInsensitive, encoding ) ) - { - if ( *p == '\r' || *p == '\n' ) - { - whitespace = true; - ++p; - } - else if ( IsWhiteSpace( *p ) ) - { - whitespace = true; - ++p; - } - else - { - // If we've found whitespace, add it before the - // new character. Any whitespace just becomes a space. - if ( whitespace ) - { - (*text) += ' '; - whitespace = false; - } - int len; - char cArr[4] = { 0, 0, 0, 0 }; - p = GetChar( p, cArr, &len, encoding ); - if ( len == 1 ) - (*text) += cArr[0]; // more efficient - else - text->append( cArr, len ); - } - } - } - if ( p && *p ) - p += strlen( endTag ); - return ( p && *p ) ? p : 0; -} - -#ifdef TIXML_USE_STL - -void TiXmlDocument::StreamIn( std::istream * in, TIXML_STRING * tag ) -{ - // The basic issue with a document is that we don't know what we're - // streaming. Read something presumed to be a tag (and hope), then - // identify it, and call the appropriate stream method on the tag. - // - // This "pre-streaming" will never read the closing ">" so the - // sub-tag can orient itself. - - if ( !StreamTo( in, '<', tag ) ) - { - SetError( TIXML_ERROR_PARSING_EMPTY, 0, 0, TIXML_ENCODING_UNKNOWN ); - return; - } - - while ( in->good() ) - { - int tagIndex = (int) tag->length(); - while ( in->good() && in->peek() != '>' ) - { - int c = in->get(); - if ( c <= 0 ) - { - SetError( TIXML_ERROR_EMBEDDED_NULL, 0, 0, TIXML_ENCODING_UNKNOWN ); - break; - } - (*tag) += (char) c; - } - - if ( in->good() ) - { - // We now have something we presume to be a node of - // some sort. Identify it, and call the node to - // continue streaming. - TiXmlNode* node = Identify( tag->c_str() + tagIndex, TIXML_DEFAULT_ENCODING ); - - if ( node ) - { - node->StreamIn( in, tag ); - bool isElement = node->ToElement() != 0; - delete node; - node = 0; - - // If this is the root element, we're done. Parsing will be - // done by the >> operator. - if ( isElement ) - { - return; - } - } - else - { - SetError( TIXML_ERROR, 0, 0, TIXML_ENCODING_UNKNOWN ); - return; - } - } - } - // We should have returned sooner. - SetError( TIXML_ERROR, 0, 0, TIXML_ENCODING_UNKNOWN ); -} - -#endif - -const char* TiXmlDocument::Parse( const char* p, TiXmlParsingData* prevData, TiXmlEncoding encoding ) -{ - ClearError(); - - // Parse away, at the document level. Since a document - // contains nothing but other tags, most of what happens - // here is skipping white space. - if ( !p || !*p ) - { - SetError( TIXML_ERROR_DOCUMENT_EMPTY, 0, 0, TIXML_ENCODING_UNKNOWN ); - return 0; - } - - // Note that, for a document, this needs to come - // before the while space skip, so that parsing - // starts from the pointer we are given. - location.Clear(); - if ( prevData ) - { - location.row = prevData->cursor.row; - location.col = prevData->cursor.col; - } - else - { - location.row = 0; - location.col = 0; - } - TiXmlParsingData data( p, TabSize(), location.row, location.col ); - location = data.Cursor(); - - if ( encoding == TIXML_ENCODING_UNKNOWN ) - { - // Check for the Microsoft UTF-8 lead bytes. - const unsigned char* pU = (const unsigned char*)p; - if ( *(pU+0) && *(pU+0) == TIXML_UTF_LEAD_0 - && *(pU+1) && *(pU+1) == TIXML_UTF_LEAD_1 - && *(pU+2) && *(pU+2) == TIXML_UTF_LEAD_2 ) - { - encoding = TIXML_ENCODING_UTF8; - useMicrosoftBOM = true; - } - } - - p = SkipWhiteSpace( p, encoding ); - if ( !p ) - { - SetError( TIXML_ERROR_DOCUMENT_EMPTY, 0, 0, TIXML_ENCODING_UNKNOWN ); - return 0; - } - - while ( p && *p ) - { - TiXmlNode* node = Identify( p, encoding ); - if ( node ) - { - p = node->Parse( p, &data, encoding ); - LinkEndChild( node ); - } - else - { - break; - } - - // Did we get encoding info? - if ( encoding == TIXML_ENCODING_UNKNOWN - && node->ToDeclaration() ) - { - TiXmlDeclaration* dec = node->ToDeclaration(); - const char* enc = dec->Encoding(); - assert( enc ); - - if ( *enc == 0 ) - encoding = TIXML_ENCODING_UTF8; - else if ( StringEqual( enc, "UTF-8", true, TIXML_ENCODING_UNKNOWN ) ) - encoding = TIXML_ENCODING_UTF8; - else if ( StringEqual( enc, "UTF8", true, TIXML_ENCODING_UNKNOWN ) ) - encoding = TIXML_ENCODING_UTF8; // incorrect, but be nice - else - encoding = TIXML_ENCODING_LEGACY; - } - - p = SkipWhiteSpace( p, encoding ); - } - - // Was this empty? - if ( !firstChild ) { - SetError( TIXML_ERROR_DOCUMENT_EMPTY, 0, 0, encoding ); - return 0; - } - - // All is well. - return p; -} - -void TiXmlDocument::SetError( int err, const char* pError, TiXmlParsingData* data, TiXmlEncoding encoding ) -{ - // The first error in a chain is more accurate - don't set again! - if ( error ) - return; - - assert( err > 0 && err < TIXML_ERROR_STRING_COUNT ); - error = true; - errorId = err; - errorDesc = errorString[ errorId ]; - - errorLocation.Clear(); - if ( pError && data ) - { - data->Stamp( pError, encoding ); - errorLocation = data->Cursor(); - } -} - - -TiXmlNode* TiXmlNode::Identify( const char* p, TiXmlEncoding encoding ) -{ - TiXmlNode* returnNode = 0; - - p = SkipWhiteSpace( p, encoding ); - if( !p || !*p || *p != '<' ) - { - return 0; - } - - p = SkipWhiteSpace( p, encoding ); - - if ( !p || !*p ) - { - return 0; - } - - // What is this thing? - // - Elements start with a letter or underscore, but xml is reserved. - // - Comments: "; - - if ( !StringEqual( p, startTag, false, encoding ) ) - { - if ( document ) - document->SetError( TIXML_ERROR_PARSING_COMMENT, p, data, encoding ); - return 0; - } - p += strlen( startTag ); - - // [ 1475201 ] TinyXML parses entities in comments - // Oops - ReadText doesn't work, because we don't want to parse the entities. - // p = ReadText( p, &value, false, endTag, false, encoding ); - // - // from the XML spec: - /* - [Definition: Comments may appear anywhere in a document outside other markup; in addition, - they may appear within the document type declaration at places allowed by the grammar. - They are not part of the document's character data; an XML processor MAY, but need not, - make it possible for an application to retrieve the text of comments. For compatibility, - the string "--" (double-hyphen) MUST NOT occur within comments.] Parameter entity - references MUST NOT be recognized within comments. - - An example of a comment: - - - */ - - value = ""; - // Keep all the white space. - while ( p && *p && !StringEqual( p, endTag, false, encoding ) ) - { - value.append( p, 1 ); - ++p; - } - if ( p && *p ) - p += strlen( endTag ); - - return p; -} - - -const char* TiXmlAttribute::Parse( const char* p, TiXmlParsingData* data, TiXmlEncoding encoding ) -{ - p = SkipWhiteSpace( p, encoding ); - if ( !p || !*p ) return 0; - - if ( data ) - { - data->Stamp( p, encoding ); - location = data->Cursor(); - } - // Read the name, the '=' and the value. - const char* pErr = p; - p = ReadName( p, &name, encoding ); - if ( !p || !*p ) - { - if ( document ) document->SetError( TIXML_ERROR_READING_ATTRIBUTES, pErr, data, encoding ); - return 0; - } - p = SkipWhiteSpace( p, encoding ); - if ( !p || !*p || *p != '=' ) - { - if ( document ) document->SetError( TIXML_ERROR_READING_ATTRIBUTES, p, data, encoding ); - return 0; - } - - ++p; // skip '=' - p = SkipWhiteSpace( p, encoding ); - if ( !p || !*p ) - { - if ( document ) document->SetError( TIXML_ERROR_READING_ATTRIBUTES, p, data, encoding ); - return 0; - } - - const char* end; - const char SINGLE_QUOTE = '\''; - const char DOUBLE_QUOTE = '\"'; - - if ( *p == SINGLE_QUOTE ) - { - ++p; - end = "\'"; // single quote in string - p = ReadText( p, &value, false, end, false, encoding ); - } - else if ( *p == DOUBLE_QUOTE ) - { - ++p; - end = "\""; // double quote in string - p = ReadText( p, &value, false, end, false, encoding ); - } - else - { - // All attribute values should be in single or double quotes. - // But this is such a common error that the parser will try - // its best, even without them. - value = ""; - while ( p && *p // existence - && !IsWhiteSpace( *p ) // whitespace - && *p != '/' && *p != '>' ) // tag end - { - if ( *p == SINGLE_QUOTE || *p == DOUBLE_QUOTE ) { - // [ 1451649 ] Attribute values with trailing quotes not handled correctly - // We did not have an opening quote but seem to have a - // closing one. Give up and throw an error. - if ( document ) document->SetError( TIXML_ERROR_READING_ATTRIBUTES, p, data, encoding ); - return 0; - } - value += *p; - ++p; - } - } - return p; -} - -#ifdef TIXML_USE_STL -void TiXmlText::StreamIn( std::istream * in, TIXML_STRING * tag ) -{ - while ( in->good() ) - { - int c = in->peek(); - if ( !cdata && (c == '<' ) ) - { - return; - } - if ( c <= 0 ) - { - TiXmlDocument* document = GetDocument(); - if ( document ) - document->SetError( TIXML_ERROR_EMBEDDED_NULL, 0, 0, TIXML_ENCODING_UNKNOWN ); - return; - } - - (*tag) += (char) c; - in->get(); // "commits" the peek made above - - if ( cdata && c == '>' && tag->size() >= 3 ) { - size_t len = tag->size(); - if ( (*tag)[len-2] == ']' && (*tag)[len-3] == ']' ) { - // terminator of cdata. - return; - } - } - } -} -#endif - -const char* TiXmlText::Parse( const char* p, TiXmlParsingData* data, TiXmlEncoding encoding ) -{ - value = ""; - TiXmlDocument* document = GetDocument(); - - if ( data ) - { - data->Stamp( p, encoding ); - location = data->Cursor(); - } - - const char* const startTag = ""; - - if ( cdata || StringEqual( p, startTag, false, encoding ) ) - { - cdata = true; - - if ( !StringEqual( p, startTag, false, encoding ) ) - { - if ( document ) - document->SetError( TIXML_ERROR_PARSING_CDATA, p, data, encoding ); - return 0; - } - p += strlen( startTag ); - - // Keep all the white space, ignore the encoding, etc. - while ( p && *p - && !StringEqual( p, endTag, false, encoding ) - ) - { - value += *p; - ++p; - } - - TIXML_STRING dummy; - p = ReadText( p, &dummy, false, endTag, false, encoding ); - return p; - } - else - { - bool ignoreWhite = true; - - const char* end = "<"; - p = ReadText( p, &value, ignoreWhite, end, false, encoding ); - if ( p && *p ) - return p-1; // don't truncate the '<' - return 0; - } -} - -#ifdef TIXML_USE_STL -void TiXmlDeclaration::StreamIn( std::istream * in, TIXML_STRING * tag ) -{ - while ( in->good() ) - { - int c = in->get(); - if ( c <= 0 ) - { - TiXmlDocument* document = GetDocument(); - if ( document ) - document->SetError( TIXML_ERROR_EMBEDDED_NULL, 0, 0, TIXML_ENCODING_UNKNOWN ); - return; - } - (*tag) += (char) c; - - if ( c == '>' ) - { - // All is well. - return; - } - } -} -#endif - -const char* TiXmlDeclaration::Parse( const char* p, TiXmlParsingData* data, TiXmlEncoding _encoding ) -{ - p = SkipWhiteSpace( p, _encoding ); - // Find the beginning, find the end, and look for - // the stuff in-between. - TiXmlDocument* document = GetDocument(); - if ( !p || !*p || !StringEqual( p, "SetError( TIXML_ERROR_PARSING_DECLARATION, 0, 0, _encoding ); - return 0; - } - if ( data ) - { - data->Stamp( p, _encoding ); - location = data->Cursor(); - } - p += 5; - - version = ""; - encoding = ""; - standalone = ""; - - while ( p && *p ) - { - if ( *p == '>' ) - { - ++p; - return p; - } - - p = SkipWhiteSpace( p, _encoding ); - if ( StringEqual( p, "version", true, _encoding ) ) - { - TiXmlAttribute attrib; - p = attrib.Parse( p, data, _encoding ); - version = attrib.Value(); - } - else if ( StringEqual( p, "encoding", true, _encoding ) ) - { - TiXmlAttribute attrib; - p = attrib.Parse( p, data, _encoding ); - encoding = attrib.Value(); - } - else if ( StringEqual( p, "standalone", true, _encoding ) ) - { - TiXmlAttribute attrib; - p = attrib.Parse( p, data, _encoding ); - standalone = attrib.Value(); - } - else - { - // Read over whatever it is. - while( p && *p && *p != '>' && !IsWhiteSpace( *p ) ) - ++p; - } - } - return 0; -} - -bool TiXmlText::Blank() const -{ - for ( unsigned i=0; i= 199901L -# ifndef STDC99 -# define STDC99 -# endif -# endif -#endif -#if !defined(STDC) && (defined(__STDC__) || defined(__cplusplus)) -# define STDC -#endif -#if !defined(STDC) && (defined(__GNUC__) || defined(__BORLANDC__)) -# define STDC -#endif -#if !defined(STDC) && (defined(MSDOS) || defined(WINDOWS) || defined(WIN32)) -# define STDC -#endif -#if !defined(STDC) && (defined(OS2) || defined(__HOS_AIX__)) -# define STDC -#endif - -#if defined(__OS400__) && !defined(STDC) /* iSeries (formerly AS/400). */ -# define STDC -#endif - -#ifndef STDC -# ifndef const /* cannot use !defined(STDC) && !defined(const) on Mac */ -# define const /* note: need a more gentle solution here */ -# endif -#endif - -/* Some Mac compilers merge all .h files incorrectly: */ -#if defined(__MWERKS__)||defined(applec)||defined(THINK_C)||defined(__SC__) -# define NO_DUMMY_DECL -#endif - -/* Maximum value for memLevel in deflateInit2 */ -#ifndef MAX_MEM_LEVEL -# ifdef MAXSEG_64K -# define MAX_MEM_LEVEL 8 -# else -# define MAX_MEM_LEVEL 9 -# endif -#endif - -/* Maximum value for windowBits in deflateInit2 and inflateInit2. - * WARNING: reducing MAX_WBITS makes minigzip unable to extract .gz files - * created by gzip. (Files created by minigzip can still be extracted by - * gzip.) - */ -#ifndef MAX_WBITS -# define MAX_WBITS 15 /* 32K LZ77 window */ -#endif - -/* The memory requirements for deflate are (in bytes): - (1 << (windowBits+2)) + (1 << (memLevel+9)) - that is: 128K for windowBits=15 + 128K for memLevel = 8 (default values) - plus a few kilobytes for small objects. For example, if you want to reduce - the default memory requirements from 256K to 128K, compile with - make CFLAGS="-O -DMAX_WBITS=14 -DMAX_MEM_LEVEL=7" - Of course this will generally degrade compression (there's no free lunch). - - The memory requirements for inflate are (in bytes) 1 << windowBits - that is, 32K for windowBits=15 (default value) plus a few kilobytes - for small objects. -*/ - - /* Type declarations */ - -#ifndef OF /* function prototypes */ -# ifdef STDC -# define OF(args) args -# else -# define OF(args) () -# endif -#endif - -/* The following definitions for FAR are needed only for MSDOS mixed - * model programming (small or medium model with some far allocations). - * This was tested only with MSC; for other MSDOS compilers you may have - * to define NO_MEMCPY in zutil.h. If you don't need the mixed model, - * just define FAR to be empty. - */ -#ifdef SYS16BIT -# if defined(M_I86SM) || defined(M_I86MM) - /* MSC small or medium model */ -# define SMALL_MEDIUM -# ifdef _MSC_VER -# define FAR _far -# else -# define FAR far -# endif -# endif -# if (defined(__SMALL__) || defined(__MEDIUM__)) - /* Turbo C small or medium model */ -# define SMALL_MEDIUM -# ifdef __BORLANDC__ -# define FAR _far -# else -# define FAR far -# endif -# endif -#endif - -#if defined(WINDOWS) || defined(WIN32) - /* If building or using zlib as a DLL, define ZLIB_DLL. - * This is not mandatory, but it offers a little performance increase. - */ -# ifdef ZLIB_DLL -# if defined(WIN32) && (!defined(__BORLANDC__) || (__BORLANDC__ >= 0x500)) -# ifdef ZLIB_INTERNAL -# define ZEXTERN extern __declspec(dllexport) -# else -# define ZEXTERN extern __declspec(dllimport) -# endif -# endif -# endif /* ZLIB_DLL */ - /* If building or using zlib with the WINAPI/WINAPIV calling convention, - * define ZLIB_WINAPI. - * Caution: the standard ZLIB1.DLL is NOT compiled using ZLIB_WINAPI. - */ -# ifdef ZLIB_WINAPI -# ifdef FAR -# undef FAR -# endif -# include - /* No need for _export, use ZLIB.DEF instead. */ - /* For complete Windows compatibility, use WINAPI, not __stdcall. */ -# define ZEXPORT WINAPI -# ifdef WIN32 -# define ZEXPORTVA WINAPIV -# else -# define ZEXPORTVA FAR CDECL -# endif -# endif -#endif - -#if defined (__BEOS__) -# ifdef ZLIB_DLL -# ifdef ZLIB_INTERNAL -# define ZEXPORT __declspec(dllexport) -# define ZEXPORTVA __declspec(dllexport) -# else -# define ZEXPORT __declspec(dllimport) -# define ZEXPORTVA __declspec(dllimport) -# endif -# endif -#endif - -#ifndef ZEXTERN -# define ZEXTERN extern -#endif -#ifndef ZEXPORT -# define ZEXPORT -#endif -#ifndef ZEXPORTVA -# define ZEXPORTVA -#endif - -#ifndef FAR -# define FAR -#endif - -#if !defined(__MACTYPES__) -typedef unsigned char Byte; /* 8 bits */ -#endif -typedef unsigned int uInt; /* 16 bits or more */ -typedef unsigned long uLong; /* 32 bits or more */ - -#ifdef SMALL_MEDIUM - /* Borland C/C++ and some old MSC versions ignore FAR inside typedef */ -# define Bytef Byte FAR -#else - typedef Byte FAR Bytef; -#endif -typedef char FAR charf; -typedef int FAR intf; -typedef uInt FAR uIntf; -typedef uLong FAR uLongf; - -#ifdef STDC - typedef void const *voidpc; - typedef void FAR *voidpf; - typedef void *voidp; -#else - typedef Byte const *voidpc; - typedef Byte FAR *voidpf; - typedef Byte *voidp; -#endif - -#if 0 /* HAVE_UNISTD_H -- this line is updated by ./configure */ -# include /* for off_t */ -# include /* for SEEK_* and off_t */ -# ifdef VMS -# include /* for off_t */ -# endif -# define z_off_t off_t -#endif -#ifndef SEEK_SET -# define SEEK_SET 0 /* Seek from beginning of file. */ -# define SEEK_CUR 1 /* Seek from current position. */ -# define SEEK_END 2 /* Set file pointer to EOF plus "offset" */ -#endif -#ifndef z_off_t -# define z_off_t long -#endif - -#if defined(__OS400__) -# define NO_vsnprintf -#endif - -#if defined(__MVS__) -# define NO_vsnprintf -# ifdef FAR -# undef FAR -# endif -#endif - -/* MVS linker does not support external names larger than 8 bytes */ -#if defined(__MVS__) -# pragma map(deflateInit_,"DEIN") -# pragma map(deflateInit2_,"DEIN2") -# pragma map(deflateEnd,"DEEND") -# pragma map(deflateBound,"DEBND") -# pragma map(inflateInit_,"ININ") -# pragma map(inflateInit2_,"ININ2") -# pragma map(inflateEnd,"INEND") -# pragma map(inflateSync,"INSY") -# pragma map(inflateSetDictionary,"INSEDI") -# pragma map(compressBound,"CMBND") -# pragma map(inflate_table,"INTABL") -# pragma map(inflate_fast,"INFA") -# pragma map(inflate_copyright,"INCOPY") -#endif - -#endif /* ZCONF_H */ diff --git a/src/zlib-1.2.3/zlib.h b/src/zlib-1.2.3/zlib.h deleted file mode 100644 index 0228179..0000000 --- a/src/zlib-1.2.3/zlib.h +++ /dev/null @@ -1,1357 +0,0 @@ -/* zlib.h -- interface of the 'zlib' general purpose compression library - version 1.2.3, July 18th, 2005 - - Copyright (C) 1995-2005 Jean-loup Gailly and Mark Adler - - This software is provided 'as-is', without any express or implied - warranty. In no event will the authors be held liable for any damages - arising from the use of this software. - - Permission is granted to anyone to use this software for any purpose, - including commercial applications, and to alter it and redistribute it - freely, subject to the following restrictions: - - 1. The origin of this software must not be misrepresented; you must not - claim that you wrote the original software. If you use this software - in a product, an acknowledgment in the product documentation would be - appreciated but is not required. - 2. Altered source versions must be plainly marked as such, and must not be - misrepresented as being the original software. - 3. This notice may not be removed or altered from any source distribution. - - Jean-loup Gailly Mark Adler - jloup@gzip.org madler@alumni.caltech.edu - - - The data format used by the zlib library is described by RFCs (Request for - Comments) 1950 to 1952 in the files http://www.ietf.org/rfc/rfc1950.txt - (zlib format), rfc1951.txt (deflate format) and rfc1952.txt (gzip format). -*/ - -#ifndef ZLIB_H -#define ZLIB_H - -#include "zconf.h" - -#ifdef __cplusplus -extern "C" { -#endif - -#define ZLIB_VERSION "1.2.3" -#define ZLIB_VERNUM 0x1230 - -/* - The 'zlib' compression library provides in-memory compression and - decompression functions, including integrity checks of the uncompressed - data. This version of the library supports only one compression method - (deflation) but other algorithms will be added later and will have the same - stream interface. - - Compression can be done in a single step if the buffers are large - enough (for example if an input file is mmap'ed), or can be done by - repeated calls of the compression function. In the latter case, the - application must provide more input and/or consume the output - (providing more output space) before each call. - - The compressed data format used by default by the in-memory functions is - the zlib format, which is a zlib wrapper documented in RFC 1950, wrapped - around a deflate stream, which is itself documented in RFC 1951. - - The library also supports reading and writing files in gzip (.gz) format - with an interface similar to that of stdio using the functions that start - with "gz". The gzip format is different from the zlib format. gzip is a - gzip wrapper, documented in RFC 1952, wrapped around a deflate stream. - - This library can optionally read and write gzip streams in memory as well. - - The zlib format was designed to be compact and fast for use in memory - and on communications channels. The gzip format was designed for single- - file compression on file systems, has a larger header than zlib to maintain - directory information, and uses a different, slower check method than zlib. - - The library does not install any signal handler. The decoder checks - the consistency of the compressed data, so the library should never - crash even in case of corrupted input. -*/ - -typedef voidpf (*alloc_func) OF((voidpf opaque, uInt items, uInt size)); -typedef void (*free_func) OF((voidpf opaque, voidpf address)); - -struct internal_state; - -typedef struct z_stream_s { - Bytef *next_in; /* next input byte */ - uInt avail_in; /* number of bytes available at next_in */ - uLong total_in; /* total nb of input bytes read so far */ - - Bytef *next_out; /* next output byte should be put there */ - uInt avail_out; /* remaining free space at next_out */ - uLong total_out; /* total nb of bytes output so far */ - - char *msg; /* last error message, NULL if no error */ - struct internal_state FAR *state; /* not visible by applications */ - - alloc_func zalloc; /* used to allocate the internal state */ - free_func zfree; /* used to free the internal state */ - voidpf opaque; /* private data object passed to zalloc and zfree */ - - int data_type; /* best guess about the data type: binary or text */ - uLong adler; /* adler32 value of the uncompressed data */ - uLong reserved; /* reserved for future use */ -} z_stream; - -typedef z_stream FAR *z_streamp; - -/* - gzip header information passed to and from zlib routines. See RFC 1952 - for more details on the meanings of these fields. -*/ -typedef struct gz_header_s { - int text; /* true if compressed data believed to be text */ - uLong time; /* modification time */ - int xflags; /* extra flags (not used when writing a gzip file) */ - int os; /* operating system */ - Bytef *extra; /* pointer to extra field or Z_NULL if none */ - uInt extra_len; /* extra field length (valid if extra != Z_NULL) */ - uInt extra_max; /* space at extra (only when reading header) */ - Bytef *name; /* pointer to zero-terminated file name or Z_NULL */ - uInt name_max; /* space at name (only when reading header) */ - Bytef *comment; /* pointer to zero-terminated comment or Z_NULL */ - uInt comm_max; /* space at comment (only when reading header) */ - int hcrc; /* true if there was or will be a header crc */ - int done; /* true when done reading gzip header (not used - when writing a gzip file) */ -} gz_header; - -typedef gz_header FAR *gz_headerp; - -/* - The application must update next_in and avail_in when avail_in has - dropped to zero. It must update next_out and avail_out when avail_out - has dropped to zero. The application must initialize zalloc, zfree and - opaque before calling the init function. All other fields are set by the - compression library and must not be updated by the application. - - The opaque value provided by the application will be passed as the first - parameter for calls of zalloc and zfree. This can be useful for custom - memory management. The compression library attaches no meaning to the - opaque value. - - zalloc must return Z_NULL if there is not enough memory for the object. - If zlib is used in a multi-threaded application, zalloc and zfree must be - thread safe. - - On 16-bit systems, the functions zalloc and zfree must be able to allocate - exactly 65536 bytes, but will not be required to allocate more than this - if the symbol MAXSEG_64K is defined (see zconf.h). WARNING: On MSDOS, - pointers returned by zalloc for objects of exactly 65536 bytes *must* - have their offset normalized to zero. The default allocation function - provided by this library ensures this (see zutil.c). To reduce memory - requirements and avoid any allocation of 64K objects, at the expense of - compression ratio, compile the library with -DMAX_WBITS=14 (see zconf.h). - - The fields total_in and total_out can be used for statistics or - progress reports. After compression, total_in holds the total size of - the uncompressed data and may be saved for use in the decompressor - (particularly if the decompressor wants to decompress everything in - a single step). -*/ - - /* constants */ - -#define Z_NO_FLUSH 0 -#define Z_PARTIAL_FLUSH 1 /* will be removed, use Z_SYNC_FLUSH instead */ -#define Z_SYNC_FLUSH 2 -#define Z_FULL_FLUSH 3 -#define Z_FINISH 4 -#define Z_BLOCK 5 -/* Allowed flush values; see deflate() and inflate() below for details */ - -#define Z_OK 0 -#define Z_STREAM_END 1 -#define Z_NEED_DICT 2 -#define Z_ERRNO (-1) -#define Z_STREAM_ERROR (-2) -#define Z_DATA_ERROR (-3) -#define Z_MEM_ERROR (-4) -#define Z_BUF_ERROR (-5) -#define Z_VERSION_ERROR (-6) -/* Return codes for the compression/decompression functions. Negative - * values are errors, positive values are used for special but normal events. - */ - -#define Z_NO_COMPRESSION 0 -#define Z_BEST_SPEED 1 -#define Z_BEST_COMPRESSION 9 -#define Z_DEFAULT_COMPRESSION (-1) -/* compression levels */ - -#define Z_FILTERED 1 -#define Z_HUFFMAN_ONLY 2 -#define Z_RLE 3 -#define Z_FIXED 4 -#define Z_DEFAULT_STRATEGY 0 -/* compression strategy; see deflateInit2() below for details */ - -#define Z_BINARY 0 -#define Z_TEXT 1 -#define Z_ASCII Z_TEXT /* for compatibility with 1.2.2 and earlier */ -#define Z_UNKNOWN 2 -/* Possible values of the data_type field (though see inflate()) */ - -#define Z_DEFLATED 8 -/* The deflate compression method (the only one supported in this version) */ - -#define Z_NULL 0 /* for initializing zalloc, zfree, opaque */ - -#define zlib_version zlibVersion() -/* for compatibility with versions < 1.0.2 */ - - /* basic functions */ - -ZEXTERN const char * ZEXPORT zlibVersion OF((void)); -/* The application can compare zlibVersion and ZLIB_VERSION for consistency. - If the first character differs, the library code actually used is - not compatible with the zlib.h header file used by the application. - This check is automatically made by deflateInit and inflateInit. - */ - -/* -ZEXTERN int ZEXPORT deflateInit OF((z_streamp strm, int level)); - - Initializes the internal stream state for compression. The fields - zalloc, zfree and opaque must be initialized before by the caller. - If zalloc and zfree are set to Z_NULL, deflateInit updates them to - use default allocation functions. - - The compression level must be Z_DEFAULT_COMPRESSION, or between 0 and 9: - 1 gives best speed, 9 gives best compression, 0 gives no compression at - all (the input data is simply copied a block at a time). - Z_DEFAULT_COMPRESSION requests a default compromise between speed and - compression (currently equivalent to level 6). - - deflateInit returns Z_OK if success, Z_MEM_ERROR if there was not - enough memory, Z_STREAM_ERROR if level is not a valid compression level, - Z_VERSION_ERROR if the zlib library version (zlib_version) is incompatible - with the version assumed by the caller (ZLIB_VERSION). - msg is set to null if there is no error message. deflateInit does not - perform any compression: this will be done by deflate(). -*/ - - -ZEXTERN int ZEXPORT deflate OF((z_streamp strm, int flush)); -/* - deflate compresses as much data as possible, and stops when the input - buffer becomes empty or the output buffer becomes full. It may introduce some - output latency (reading input without producing any output) except when - forced to flush. - - The detailed semantics are as follows. deflate performs one or both of the - following actions: - - - Compress more input starting at next_in and update next_in and avail_in - accordingly. If not all input can be processed (because there is not - enough room in the output buffer), next_in and avail_in are updated and - processing will resume at this point for the next call of deflate(). - - - Provide more output starting at next_out and update next_out and avail_out - accordingly. This action is forced if the parameter flush is non zero. - Forcing flush frequently degrades the compression ratio, so this parameter - should be set only when necessary (in interactive applications). - Some output may be provided even if flush is not set. - - Before the call of deflate(), the application should ensure that at least - one of the actions is possible, by providing more input and/or consuming - more output, and updating avail_in or avail_out accordingly; avail_out - should never be zero before the call. The application can consume the - compressed output when it wants, for example when the output buffer is full - (avail_out == 0), or after each call of deflate(). If deflate returns Z_OK - and with zero avail_out, it must be called again after making room in the - output buffer because there might be more output pending. - - Normally the parameter flush is set to Z_NO_FLUSH, which allows deflate to - decide how much data to accumualte before producing output, in order to - maximize compression. - - If the parameter flush is set to Z_SYNC_FLUSH, all pending output is - flushed to the output buffer and the output is aligned on a byte boundary, so - that the decompressor can get all input data available so far. (In particular - avail_in is zero after the call if enough output space has been provided - before the call.) Flushing may degrade compression for some compression - algorithms and so it should be used only when necessary. - - If flush is set to Z_FULL_FLUSH, all output is flushed as with - Z_SYNC_FLUSH, and the compression state is reset so that decompression can - restart from this point if previous compressed data has been damaged or if - random access is desired. Using Z_FULL_FLUSH too often can seriously degrade - compression. - - If deflate returns with avail_out == 0, this function must be called again - with the same value of the flush parameter and more output space (updated - avail_out), until the flush is complete (deflate returns with non-zero - avail_out). In the case of a Z_FULL_FLUSH or Z_SYNC_FLUSH, make sure that - avail_out is greater than six to avoid repeated flush markers due to - avail_out == 0 on return. - - If the parameter flush is set to Z_FINISH, pending input is processed, - pending output is flushed and deflate returns with Z_STREAM_END if there - was enough output space; if deflate returns with Z_OK, this function must be - called again with Z_FINISH and more output space (updated avail_out) but no - more input data, until it returns with Z_STREAM_END or an error. After - deflate has returned Z_STREAM_END, the only possible operations on the - stream are deflateReset or deflateEnd. - - Z_FINISH can be used immediately after deflateInit if all the compression - is to be done in a single step. In this case, avail_out must be at least - the value returned by deflateBound (see below). If deflate does not return - Z_STREAM_END, then it must be called again as described above. - - deflate() sets strm->adler to the adler32 checksum of all input read - so far (that is, total_in bytes). - - deflate() may update strm->data_type if it can make a good guess about - the input data type (Z_BINARY or Z_TEXT). In doubt, the data is considered - binary. This field is only for information purposes and does not affect - the compression algorithm in any manner. - - deflate() returns Z_OK if some progress has been made (more input - processed or more output produced), Z_STREAM_END if all input has been - consumed and all output has been produced (only when flush is set to - Z_FINISH), Z_STREAM_ERROR if the stream state was inconsistent (for example - if next_in or next_out was NULL), Z_BUF_ERROR if no progress is possible - (for example avail_in or avail_out was zero). Note that Z_BUF_ERROR is not - fatal, and deflate() can be called again with more input and more output - space to continue compressing. -*/ - - -ZEXTERN int ZEXPORT deflateEnd OF((z_streamp strm)); -/* - All dynamically allocated data structures for this stream are freed. - This function discards any unprocessed input and does not flush any - pending output. - - deflateEnd returns Z_OK if success, Z_STREAM_ERROR if the - stream state was inconsistent, Z_DATA_ERROR if the stream was freed - prematurely (some input or output was discarded). In the error case, - msg may be set but then points to a static string (which must not be - deallocated). -*/ - - -/* -ZEXTERN int ZEXPORT inflateInit OF((z_streamp strm)); - - Initializes the internal stream state for decompression. The fields - next_in, avail_in, zalloc, zfree and opaque must be initialized before by - the caller. If next_in is not Z_NULL and avail_in is large enough (the exact - value depends on the compression method), inflateInit determines the - compression method from the zlib header and allocates all data structures - accordingly; otherwise the allocation will be deferred to the first call of - inflate. If zalloc and zfree are set to Z_NULL, inflateInit updates them to - use default allocation functions. - - inflateInit returns Z_OK if success, Z_MEM_ERROR if there was not enough - memory, Z_VERSION_ERROR if the zlib library version is incompatible with the - version assumed by the caller. msg is set to null if there is no error - message. inflateInit does not perform any decompression apart from reading - the zlib header if present: this will be done by inflate(). (So next_in and - avail_in may be modified, but next_out and avail_out are unchanged.) -*/ - - -ZEXTERN int ZEXPORT inflate OF((z_streamp strm, int flush)); -/* - inflate decompresses as much data as possible, and stops when the input - buffer becomes empty or the output buffer becomes full. It may introduce - some output latency (reading input without producing any output) except when - forced to flush. - - The detailed semantics are as follows. inflate performs one or both of the - following actions: - - - Decompress more input starting at next_in and update next_in and avail_in - accordingly. If not all input can be processed (because there is not - enough room in the output buffer), next_in is updated and processing - will resume at this point for the next call of inflate(). - - - Provide more output starting at next_out and update next_out and avail_out - accordingly. inflate() provides as much output as possible, until there - is no more input data or no more space in the output buffer (see below - about the flush parameter). - - Before the call of inflate(), the application should ensure that at least - one of the actions is possible, by providing more input and/or consuming - more output, and updating the next_* and avail_* values accordingly. - The application can consume the uncompressed output when it wants, for - example when the output buffer is full (avail_out == 0), or after each - call of inflate(). If inflate returns Z_OK and with zero avail_out, it - must be called again after making room in the output buffer because there - might be more output pending. - - The flush parameter of inflate() can be Z_NO_FLUSH, Z_SYNC_FLUSH, - Z_FINISH, or Z_BLOCK. Z_SYNC_FLUSH requests that inflate() flush as much - output as possible to the output buffer. Z_BLOCK requests that inflate() stop - if and when it gets to the next deflate block boundary. When decoding the - zlib or gzip format, this will cause inflate() to return immediately after - the header and before the first block. When doing a raw inflate, inflate() - will go ahead and process the first block, and will return when it gets to - the end of that block, or when it runs out of data. - - The Z_BLOCK option assists in appending to or combining deflate streams. - Also to assist in this, on return inflate() will set strm->data_type to the - number of unused bits in the last byte taken from strm->next_in, plus 64 - if inflate() is currently decoding the last block in the deflate stream, - plus 128 if inflate() returned immediately after decoding an end-of-block - code or decoding the complete header up to just before the first byte of the - deflate stream. The end-of-block will not be indicated until all of the - uncompressed data from that block has been written to strm->next_out. The - number of unused bits may in general be greater than seven, except when - bit 7 of data_type is set, in which case the number of unused bits will be - less than eight. - - inflate() should normally be called until it returns Z_STREAM_END or an - error. However if all decompression is to be performed in a single step - (a single call of inflate), the parameter flush should be set to - Z_FINISH. In this case all pending input is processed and all pending - output is flushed; avail_out must be large enough to hold all the - uncompressed data. (The size of the uncompressed data may have been saved - by the compressor for this purpose.) The next operation on this stream must - be inflateEnd to deallocate the decompression state. The use of Z_FINISH - is never required, but can be used to inform inflate that a faster approach - may be used for the single inflate() call. - - In this implementation, inflate() always flushes as much output as - possible to the output buffer, and always uses the faster approach on the - first call. So the only effect of the flush parameter in this implementation - is on the return value of inflate(), as noted below, or when it returns early - because Z_BLOCK is used. - - If a preset dictionary is needed after this call (see inflateSetDictionary - below), inflate sets strm->adler to the adler32 checksum of the dictionary - chosen by the compressor and returns Z_NEED_DICT; otherwise it sets - strm->adler to the adler32 checksum of all output produced so far (that is, - total_out bytes) and returns Z_OK, Z_STREAM_END or an error code as described - below. At the end of the stream, inflate() checks that its computed adler32 - checksum is equal to that saved by the compressor and returns Z_STREAM_END - only if the checksum is correct. - - inflate() will decompress and check either zlib-wrapped or gzip-wrapped - deflate data. The header type is detected automatically. Any information - contained in the gzip header is not retained, so applications that need that - information should instead use raw inflate, see inflateInit2() below, or - inflateBack() and perform their own processing of the gzip header and - trailer. - - inflate() returns Z_OK if some progress has been made (more input processed - or more output produced), Z_STREAM_END if the end of the compressed data has - been reached and all uncompressed output has been produced, Z_NEED_DICT if a - preset dictionary is needed at this point, Z_DATA_ERROR if the input data was - corrupted (input stream not conforming to the zlib format or incorrect check - value), Z_STREAM_ERROR if the stream structure was inconsistent (for example - if next_in or next_out was NULL), Z_MEM_ERROR if there was not enough memory, - Z_BUF_ERROR if no progress is possible or if there was not enough room in the - output buffer when Z_FINISH is used. Note that Z_BUF_ERROR is not fatal, and - inflate() can be called again with more input and more output space to - continue decompressing. If Z_DATA_ERROR is returned, the application may then - call inflateSync() to look for a good compression block if a partial recovery - of the data is desired. -*/ - - -ZEXTERN int ZEXPORT inflateEnd OF((z_streamp strm)); -/* - All dynamically allocated data structures for this stream are freed. - This function discards any unprocessed input and does not flush any - pending output. - - inflateEnd returns Z_OK if success, Z_STREAM_ERROR if the stream state - was inconsistent. In the error case, msg may be set but then points to a - static string (which must not be deallocated). -*/ - - /* Advanced functions */ - -/* - The following functions are needed only in some special applications. -*/ - -/* -ZEXTERN int ZEXPORT deflateInit2 OF((z_streamp strm, - int level, - int method, - int windowBits, - int memLevel, - int strategy)); - - This is another version of deflateInit with more compression options. The - fields next_in, zalloc, zfree and opaque must be initialized before by - the caller. - - The method parameter is the compression method. It must be Z_DEFLATED in - this version of the library. - - The windowBits parameter is the base two logarithm of the window size - (the size of the history buffer). It should be in the range 8..15 for this - version of the library. Larger values of this parameter result in better - compression at the expense of memory usage. The default value is 15 if - deflateInit is used instead. - - windowBits can also be -8..-15 for raw deflate. In this case, -windowBits - determines the window size. deflate() will then generate raw deflate data - with no zlib header or trailer, and will not compute an adler32 check value. - - windowBits can also be greater than 15 for optional gzip encoding. Add - 16 to windowBits to write a simple gzip header and trailer around the - compressed data instead of a zlib wrapper. The gzip header will have no - file name, no extra data, no comment, no modification time (set to zero), - no header crc, and the operating system will be set to 255 (unknown). If a - gzip stream is being written, strm->adler is a crc32 instead of an adler32. - - The memLevel parameter specifies how much memory should be allocated - for the internal compression state. memLevel=1 uses minimum memory but - is slow and reduces compression ratio; memLevel=9 uses maximum memory - for optimal speed. The default value is 8. See zconf.h for total memory - usage as a function of windowBits and memLevel. - - The strategy parameter is used to tune the compression algorithm. Use the - value Z_DEFAULT_STRATEGY for normal data, Z_FILTERED for data produced by a - filter (or predictor), Z_HUFFMAN_ONLY to force Huffman encoding only (no - string match), or Z_RLE to limit match distances to one (run-length - encoding). Filtered data consists mostly of small values with a somewhat - random distribution. In this case, the compression algorithm is tuned to - compress them better. The effect of Z_FILTERED is to force more Huffman - coding and less string matching; it is somewhat intermediate between - Z_DEFAULT and Z_HUFFMAN_ONLY. Z_RLE is designed to be almost as fast as - Z_HUFFMAN_ONLY, but give better compression for PNG image data. The strategy - parameter only affects the compression ratio but not the correctness of the - compressed output even if it is not set appropriately. Z_FIXED prevents the - use of dynamic Huffman codes, allowing for a simpler decoder for special - applications. - - deflateInit2 returns Z_OK if success, Z_MEM_ERROR if there was not enough - memory, Z_STREAM_ERROR if a parameter is invalid (such as an invalid - method). msg is set to null if there is no error message. deflateInit2 does - not perform any compression: this will be done by deflate(). -*/ - -ZEXTERN int ZEXPORT deflateSetDictionary OF((z_streamp strm, - const Bytef *dictionary, - uInt dictLength)); -/* - Initializes the compression dictionary from the given byte sequence - without producing any compressed output. This function must be called - immediately after deflateInit, deflateInit2 or deflateReset, before any - call of deflate. The compressor and decompressor must use exactly the same - dictionary (see inflateSetDictionary). - - The dictionary should consist of strings (byte sequences) that are likely - to be encountered later in the data to be compressed, with the most commonly - used strings preferably put towards the end of the dictionary. Using a - dictionary is most useful when the data to be compressed is short and can be - predicted with good accuracy; the data can then be compressed better than - with the default empty dictionary. - - Depending on the size of the compression data structures selected by - deflateInit or deflateInit2, a part of the dictionary may in effect be - discarded, for example if the dictionary is larger than the window size in - deflate or deflate2. Thus the strings most likely to be useful should be - put at the end of the dictionary, not at the front. In addition, the - current implementation of deflate will use at most the window size minus - 262 bytes of the provided dictionary. - - Upon return of this function, strm->adler is set to the adler32 value - of the dictionary; the decompressor may later use this value to determine - which dictionary has been used by the compressor. (The adler32 value - applies to the whole dictionary even if only a subset of the dictionary is - actually used by the compressor.) If a raw deflate was requested, then the - adler32 value is not computed and strm->adler is not set. - - deflateSetDictionary returns Z_OK if success, or Z_STREAM_ERROR if a - parameter is invalid (such as NULL dictionary) or the stream state is - inconsistent (for example if deflate has already been called for this stream - or if the compression method is bsort). deflateSetDictionary does not - perform any compression: this will be done by deflate(). -*/ - -ZEXTERN int ZEXPORT deflateCopy OF((z_streamp dest, - z_streamp source)); -/* - Sets the destination stream as a complete copy of the source stream. - - This function can be useful when several compression strategies will be - tried, for example when there are several ways of pre-processing the input - data with a filter. The streams that will be discarded should then be freed - by calling deflateEnd. Note that deflateCopy duplicates the internal - compression state which can be quite large, so this strategy is slow and - can consume lots of memory. - - deflateCopy returns Z_OK if success, Z_MEM_ERROR if there was not - enough memory, Z_STREAM_ERROR if the source stream state was inconsistent - (such as zalloc being NULL). msg is left unchanged in both source and - destination. -*/ - -ZEXTERN int ZEXPORT deflateReset OF((z_streamp strm)); -/* - This function is equivalent to deflateEnd followed by deflateInit, - but does not free and reallocate all the internal compression state. - The stream will keep the same compression level and any other attributes - that may have been set by deflateInit2. - - deflateReset returns Z_OK if success, or Z_STREAM_ERROR if the source - stream state was inconsistent (such as zalloc or state being NULL). -*/ - -ZEXTERN int ZEXPORT deflateParams OF((z_streamp strm, - int level, - int strategy)); -/* - Dynamically update the compression level and compression strategy. The - interpretation of level and strategy is as in deflateInit2. This can be - used to switch between compression and straight copy of the input data, or - to switch to a different kind of input data requiring a different - strategy. If the compression level is changed, the input available so far - is compressed with the old level (and may be flushed); the new level will - take effect only at the next call of deflate(). - - Before the call of deflateParams, the stream state must be set as for - a call of deflate(), since the currently available input may have to - be compressed and flushed. In particular, strm->avail_out must be non-zero. - - deflateParams returns Z_OK if success, Z_STREAM_ERROR if the source - stream state was inconsistent or if a parameter was invalid, Z_BUF_ERROR - if strm->avail_out was zero. -*/ - -ZEXTERN int ZEXPORT deflateTune OF((z_streamp strm, - int good_length, - int max_lazy, - int nice_length, - int max_chain)); -/* - Fine tune deflate's internal compression parameters. This should only be - used by someone who understands the algorithm used by zlib's deflate for - searching for the best matching string, and even then only by the most - fanatic optimizer trying to squeeze out the last compressed bit for their - specific input data. Read the deflate.c source code for the meaning of the - max_lazy, good_length, nice_length, and max_chain parameters. - - deflateTune() can be called after deflateInit() or deflateInit2(), and - returns Z_OK on success, or Z_STREAM_ERROR for an invalid deflate stream. - */ - -ZEXTERN uLong ZEXPORT deflateBound OF((z_streamp strm, - uLong sourceLen)); -/* - deflateBound() returns an upper bound on the compressed size after - deflation of sourceLen bytes. It must be called after deflateInit() - or deflateInit2(). This would be used to allocate an output buffer - for deflation in a single pass, and so would be called before deflate(). -*/ - -ZEXTERN int ZEXPORT deflatePrime OF((z_streamp strm, - int bits, - int value)); -/* - deflatePrime() inserts bits in the deflate output stream. The intent - is that this function is used to start off the deflate output with the - bits leftover from a previous deflate stream when appending to it. As such, - this function can only be used for raw deflate, and must be used before the - first deflate() call after a deflateInit2() or deflateReset(). bits must be - less than or equal to 16, and that many of the least significant bits of - value will be inserted in the output. - - deflatePrime returns Z_OK if success, or Z_STREAM_ERROR if the source - stream state was inconsistent. -*/ - -ZEXTERN int ZEXPORT deflateSetHeader OF((z_streamp strm, - gz_headerp head)); -/* - deflateSetHeader() provides gzip header information for when a gzip - stream is requested by deflateInit2(). deflateSetHeader() may be called - after deflateInit2() or deflateReset() and before the first call of - deflate(). The text, time, os, extra field, name, and comment information - in the provided gz_header structure are written to the gzip header (xflag is - ignored -- the extra flags are set according to the compression level). The - caller must assure that, if not Z_NULL, name and comment are terminated with - a zero byte, and that if extra is not Z_NULL, that extra_len bytes are - available there. If hcrc is true, a gzip header crc is included. Note that - the current versions of the command-line version of gzip (up through version - 1.3.x) do not support header crc's, and will report that it is a "multi-part - gzip file" and give up. - - If deflateSetHeader is not used, the default gzip header has text false, - the time set to zero, and os set to 255, with no extra, name, or comment - fields. The gzip header is returned to the default state by deflateReset(). - - deflateSetHeader returns Z_OK if success, or Z_STREAM_ERROR if the source - stream state was inconsistent. -*/ - -/* -ZEXTERN int ZEXPORT inflateInit2 OF((z_streamp strm, - int windowBits)); - - This is another version of inflateInit with an extra parameter. The - fields next_in, avail_in, zalloc, zfree and opaque must be initialized - before by the caller. - - The windowBits parameter is the base two logarithm of the maximum window - size (the size of the history buffer). It should be in the range 8..15 for - this version of the library. The default value is 15 if inflateInit is used - instead. windowBits must be greater than or equal to the windowBits value - provided to deflateInit2() while compressing, or it must be equal to 15 if - deflateInit2() was not used. If a compressed stream with a larger window - size is given as input, inflate() will return with the error code - Z_DATA_ERROR instead of trying to allocate a larger window. - - windowBits can also be -8..-15 for raw inflate. In this case, -windowBits - determines the window size. inflate() will then process raw deflate data, - not looking for a zlib or gzip header, not generating a check value, and not - looking for any check values for comparison at the end of the stream. This - is for use with other formats that use the deflate compressed data format - such as zip. Those formats provide their own check values. If a custom - format is developed using the raw deflate format for compressed data, it is - recommended that a check value such as an adler32 or a crc32 be applied to - the uncompressed data as is done in the zlib, gzip, and zip formats. For - most applications, the zlib format should be used as is. Note that comments - above on the use in deflateInit2() applies to the magnitude of windowBits. - - windowBits can also be greater than 15 for optional gzip decoding. Add - 32 to windowBits to enable zlib and gzip decoding with automatic header - detection, or add 16 to decode only the gzip format (the zlib format will - return a Z_DATA_ERROR). If a gzip stream is being decoded, strm->adler is - a crc32 instead of an adler32. - - inflateInit2 returns Z_OK if success, Z_MEM_ERROR if there was not enough - memory, Z_STREAM_ERROR if a parameter is invalid (such as a null strm). msg - is set to null if there is no error message. inflateInit2 does not perform - any decompression apart from reading the zlib header if present: this will - be done by inflate(). (So next_in and avail_in may be modified, but next_out - and avail_out are unchanged.) -*/ - -ZEXTERN int ZEXPORT inflateSetDictionary OF((z_streamp strm, - const Bytef *dictionary, - uInt dictLength)); -/* - Initializes the decompression dictionary from the given uncompressed byte - sequence. This function must be called immediately after a call of inflate, - if that call returned Z_NEED_DICT. The dictionary chosen by the compressor - can be determined from the adler32 value returned by that call of inflate. - The compressor and decompressor must use exactly the same dictionary (see - deflateSetDictionary). For raw inflate, this function can be called - immediately after inflateInit2() or inflateReset() and before any call of - inflate() to set the dictionary. The application must insure that the - dictionary that was used for compression is provided. - - inflateSetDictionary returns Z_OK if success, Z_STREAM_ERROR if a - parameter is invalid (such as NULL dictionary) or the stream state is - inconsistent, Z_DATA_ERROR if the given dictionary doesn't match the - expected one (incorrect adler32 value). inflateSetDictionary does not - perform any decompression: this will be done by subsequent calls of - inflate(). -*/ - -ZEXTERN int ZEXPORT inflateSync OF((z_streamp strm)); -/* - Skips invalid compressed data until a full flush point (see above the - description of deflate with Z_FULL_FLUSH) can be found, or until all - available input is skipped. No output is provided. - - inflateSync returns Z_OK if a full flush point has been found, Z_BUF_ERROR - if no more input was provided, Z_DATA_ERROR if no flush point has been found, - or Z_STREAM_ERROR if the stream structure was inconsistent. In the success - case, the application may save the current current value of total_in which - indicates where valid compressed data was found. In the error case, the - application may repeatedly call inflateSync, providing more input each time, - until success or end of the input data. -*/ - -ZEXTERN int ZEXPORT inflateCopy OF((z_streamp dest, - z_streamp source)); -/* - Sets the destination stream as a complete copy of the source stream. - - This function can be useful when randomly accessing a large stream. The - first pass through the stream can periodically record the inflate state, - allowing restarting inflate at those points when randomly accessing the - stream. - - inflateCopy returns Z_OK if success, Z_MEM_ERROR if there was not - enough memory, Z_STREAM_ERROR if the source stream state was inconsistent - (such as zalloc being NULL). msg is left unchanged in both source and - destination. -*/ - -ZEXTERN int ZEXPORT inflateReset OF((z_streamp strm)); -/* - This function is equivalent to inflateEnd followed by inflateInit, - but does not free and reallocate all the internal decompression state. - The stream will keep attributes that may have been set by inflateInit2. - - inflateReset returns Z_OK if success, or Z_STREAM_ERROR if the source - stream state was inconsistent (such as zalloc or state being NULL). -*/ - -ZEXTERN int ZEXPORT inflatePrime OF((z_streamp strm, - int bits, - int value)); -/* - This function inserts bits in the inflate input stream. The intent is - that this function is used to start inflating at a bit position in the - middle of a byte. The provided bits will be used before any bytes are used - from next_in. This function should only be used with raw inflate, and - should be used before the first inflate() call after inflateInit2() or - inflateReset(). bits must be less than or equal to 16, and that many of the - least significant bits of value will be inserted in the input. - - inflatePrime returns Z_OK if success, or Z_STREAM_ERROR if the source - stream state was inconsistent. -*/ - -ZEXTERN int ZEXPORT inflateGetHeader OF((z_streamp strm, - gz_headerp head)); -/* - inflateGetHeader() requests that gzip header information be stored in the - provided gz_header structure. inflateGetHeader() may be called after - inflateInit2() or inflateReset(), and before the first call of inflate(). - As inflate() processes the gzip stream, head->done is zero until the header - is completed, at which time head->done is set to one. If a zlib stream is - being decoded, then head->done is set to -1 to indicate that there will be - no gzip header information forthcoming. Note that Z_BLOCK can be used to - force inflate() to return immediately after header processing is complete - and before any actual data is decompressed. - - The text, time, xflags, and os fields are filled in with the gzip header - contents. hcrc is set to true if there is a header CRC. (The header CRC - was valid if done is set to one.) If extra is not Z_NULL, then extra_max - contains the maximum number of bytes to write to extra. Once done is true, - extra_len contains the actual extra field length, and extra contains the - extra field, or that field truncated if extra_max is less than extra_len. - If name is not Z_NULL, then up to name_max characters are written there, - terminated with a zero unless the length is greater than name_max. If - comment is not Z_NULL, then up to comm_max characters are written there, - terminated with a zero unless the length is greater than comm_max. When - any of extra, name, or comment are not Z_NULL and the respective field is - not present in the header, then that field is set to Z_NULL to signal its - absence. This allows the use of deflateSetHeader() with the returned - structure to duplicate the header. However if those fields are set to - allocated memory, then the application will need to save those pointers - elsewhere so that they can be eventually freed. - - If inflateGetHeader is not used, then the header information is simply - discarded. The header is always checked for validity, including the header - CRC if present. inflateReset() will reset the process to discard the header - information. The application would need to call inflateGetHeader() again to - retrieve the header from the next gzip stream. - - inflateGetHeader returns Z_OK if success, or Z_STREAM_ERROR if the source - stream state was inconsistent. -*/ - -/* -ZEXTERN int ZEXPORT inflateBackInit OF((z_streamp strm, int windowBits, - unsigned char FAR *window)); - - Initialize the internal stream state for decompression using inflateBack() - calls. The fields zalloc, zfree and opaque in strm must be initialized - before the call. If zalloc and zfree are Z_NULL, then the default library- - derived memory allocation routines are used. windowBits is the base two - logarithm of the window size, in the range 8..15. window is a caller - supplied buffer of that size. Except for special applications where it is - assured that deflate was used with small window sizes, windowBits must be 15 - and a 32K byte window must be supplied to be able to decompress general - deflate streams. - - See inflateBack() for the usage of these routines. - - inflateBackInit will return Z_OK on success, Z_STREAM_ERROR if any of - the paramaters are invalid, Z_MEM_ERROR if the internal state could not - be allocated, or Z_VERSION_ERROR if the version of the library does not - match the version of the header file. -*/ - -typedef unsigned (*in_func) OF((void FAR *, unsigned char FAR * FAR *)); -typedef int (*out_func) OF((void FAR *, unsigned char FAR *, unsigned)); - -ZEXTERN int ZEXPORT inflateBack OF((z_streamp strm, - in_func in, void FAR *in_desc, - out_func out, void FAR *out_desc)); -/* - inflateBack() does a raw inflate with a single call using a call-back - interface for input and output. This is more efficient than inflate() for - file i/o applications in that it avoids copying between the output and the - sliding window by simply making the window itself the output buffer. This - function trusts the application to not change the output buffer passed by - the output function, at least until inflateBack() returns. - - inflateBackInit() must be called first to allocate the internal state - and to initialize the state with the user-provided window buffer. - inflateBack() may then be used multiple times to inflate a complete, raw - deflate stream with each call. inflateBackEnd() is then called to free - the allocated state. - - A raw deflate stream is one with no zlib or gzip header or trailer. - This routine would normally be used in a utility that reads zip or gzip - files and writes out uncompressed files. The utility would decode the - header and process the trailer on its own, hence this routine expects - only the raw deflate stream to decompress. This is different from the - normal behavior of inflate(), which expects either a zlib or gzip header and - trailer around the deflate stream. - - inflateBack() uses two subroutines supplied by the caller that are then - called by inflateBack() for input and output. inflateBack() calls those - routines until it reads a complete deflate stream and writes out all of the - uncompressed data, or until it encounters an error. The function's - parameters and return types are defined above in the in_func and out_func - typedefs. inflateBack() will call in(in_desc, &buf) which should return the - number of bytes of provided input, and a pointer to that input in buf. If - there is no input available, in() must return zero--buf is ignored in that - case--and inflateBack() will return a buffer error. inflateBack() will call - out(out_desc, buf, len) to write the uncompressed data buf[0..len-1]. out() - should return zero on success, or non-zero on failure. If out() returns - non-zero, inflateBack() will return with an error. Neither in() nor out() - are permitted to change the contents of the window provided to - inflateBackInit(), which is also the buffer that out() uses to write from. - The length written by out() will be at most the window size. Any non-zero - amount of input may be provided by in(). - - For convenience, inflateBack() can be provided input on the first call by - setting strm->next_in and strm->avail_in. If that input is exhausted, then - in() will be called. Therefore strm->next_in must be initialized before - calling inflateBack(). If strm->next_in is Z_NULL, then in() will be called - immediately for input. If strm->next_in is not Z_NULL, then strm->avail_in - must also be initialized, and then if strm->avail_in is not zero, input will - initially be taken from strm->next_in[0 .. strm->avail_in - 1]. - - The in_desc and out_desc parameters of inflateBack() is passed as the - first parameter of in() and out() respectively when they are called. These - descriptors can be optionally used to pass any information that the caller- - supplied in() and out() functions need to do their job. - - On return, inflateBack() will set strm->next_in and strm->avail_in to - pass back any unused input that was provided by the last in() call. The - return values of inflateBack() can be Z_STREAM_END on success, Z_BUF_ERROR - if in() or out() returned an error, Z_DATA_ERROR if there was a format - error in the deflate stream (in which case strm->msg is set to indicate the - nature of the error), or Z_STREAM_ERROR if the stream was not properly - initialized. In the case of Z_BUF_ERROR, an input or output error can be - distinguished using strm->next_in which will be Z_NULL only if in() returned - an error. If strm->next is not Z_NULL, then the Z_BUF_ERROR was due to - out() returning non-zero. (in() will always be called before out(), so - strm->next_in is assured to be defined if out() returns non-zero.) Note - that inflateBack() cannot return Z_OK. -*/ - -ZEXTERN int ZEXPORT inflateBackEnd OF((z_streamp strm)); -/* - All memory allocated by inflateBackInit() is freed. - - inflateBackEnd() returns Z_OK on success, or Z_STREAM_ERROR if the stream - state was inconsistent. -*/ - -ZEXTERN uLong ZEXPORT zlibCompileFlags OF((void)); -/* Return flags indicating compile-time options. - - Type sizes, two bits each, 00 = 16 bits, 01 = 32, 10 = 64, 11 = other: - 1.0: size of uInt - 3.2: size of uLong - 5.4: size of voidpf (pointer) - 7.6: size of z_off_t - - Compiler, assembler, and debug options: - 8: DEBUG - 9: ASMV or ASMINF -- use ASM code - 10: ZLIB_WINAPI -- exported functions use the WINAPI calling convention - 11: 0 (reserved) - - One-time table building (smaller code, but not thread-safe if true): - 12: BUILDFIXED -- build static block decoding tables when needed - 13: DYNAMIC_CRC_TABLE -- build CRC calculation tables when needed - 14,15: 0 (reserved) - - Library content (indicates missing functionality): - 16: NO_GZCOMPRESS -- gz* functions cannot compress (to avoid linking - deflate code when not needed) - 17: NO_GZIP -- deflate can't write gzip streams, and inflate can't detect - and decode gzip streams (to avoid linking crc code) - 18-19: 0 (reserved) - - Operation variations (changes in library functionality): - 20: PKZIP_BUG_WORKAROUND -- slightly more permissive inflate - 21: FASTEST -- deflate algorithm with only one, lowest compression level - 22,23: 0 (reserved) - - The sprintf variant used by gzprintf (zero is best): - 24: 0 = vs*, 1 = s* -- 1 means limited to 20 arguments after the format - 25: 0 = *nprintf, 1 = *printf -- 1 means gzprintf() not secure! - 26: 0 = returns value, 1 = void -- 1 means inferred string length returned - - Remainder: - 27-31: 0 (reserved) - */ - - - /* utility functions */ - -/* - The following utility functions are implemented on top of the - basic stream-oriented functions. To simplify the interface, some - default options are assumed (compression level and memory usage, - standard memory allocation functions). The source code of these - utility functions can easily be modified if you need special options. -*/ - -ZEXTERN int ZEXPORT compress OF((Bytef *dest, uLongf *destLen, - const Bytef *source, uLong sourceLen)); -/* - Compresses the source buffer into the destination buffer. sourceLen is - the byte length of the source buffer. Upon entry, destLen is the total - size of the destination buffer, which must be at least the value returned - by compressBound(sourceLen). Upon exit, destLen is the actual size of the - compressed buffer. - This function can be used to compress a whole file at once if the - input file is mmap'ed. - compress returns Z_OK if success, Z_MEM_ERROR if there was not - enough memory, Z_BUF_ERROR if there was not enough room in the output - buffer. -*/ - -ZEXTERN int ZEXPORT compress2 OF((Bytef *dest, uLongf *destLen, - const Bytef *source, uLong sourceLen, - int level)); -/* - Compresses the source buffer into the destination buffer. The level - parameter has the same meaning as in deflateInit. sourceLen is the byte - length of the source buffer. Upon entry, destLen is the total size of the - destination buffer, which must be at least the value returned by - compressBound(sourceLen). Upon exit, destLen is the actual size of the - compressed buffer. - - compress2 returns Z_OK if success, Z_MEM_ERROR if there was not enough - memory, Z_BUF_ERROR if there was not enough room in the output buffer, - Z_STREAM_ERROR if the level parameter is invalid. -*/ - -ZEXTERN uLong ZEXPORT compressBound OF((uLong sourceLen)); -/* - compressBound() returns an upper bound on the compressed size after - compress() or compress2() on sourceLen bytes. It would be used before - a compress() or compress2() call to allocate the destination buffer. -*/ - -ZEXTERN int ZEXPORT uncompress OF((Bytef *dest, uLongf *destLen, - const Bytef *source, uLong sourceLen)); -/* - Decompresses the source buffer into the destination buffer. sourceLen is - the byte length of the source buffer. Upon entry, destLen is the total - size of the destination buffer, which must be large enough to hold the - entire uncompressed data. (The size of the uncompressed data must have - been saved previously by the compressor and transmitted to the decompressor - by some mechanism outside the scope of this compression library.) - Upon exit, destLen is the actual size of the compressed buffer. - This function can be used to decompress a whole file at once if the - input file is mmap'ed. - - uncompress returns Z_OK if success, Z_MEM_ERROR if there was not - enough memory, Z_BUF_ERROR if there was not enough room in the output - buffer, or Z_DATA_ERROR if the input data was corrupted or incomplete. -*/ - - -typedef voidp gzFile; - -ZEXTERN gzFile ZEXPORT gzopen OF((const char *path, const char *mode)); -/* - Opens a gzip (.gz) file for reading or writing. The mode parameter - is as in fopen ("rb" or "wb") but can also include a compression level - ("wb9") or a strategy: 'f' for filtered data as in "wb6f", 'h' for - Huffman only compression as in "wb1h", or 'R' for run-length encoding - as in "wb1R". (See the description of deflateInit2 for more information - about the strategy parameter.) - - gzopen can be used to read a file which is not in gzip format; in this - case gzread will directly read from the file without decompression. - - gzopen returns NULL if the file could not be opened or if there was - insufficient memory to allocate the (de)compression state; errno - can be checked to distinguish the two cases (if errno is zero, the - zlib error is Z_MEM_ERROR). */ - -ZEXTERN gzFile ZEXPORT gzdopen OF((int fd, const char *mode)); -/* - gzdopen() associates a gzFile with the file descriptor fd. File - descriptors are obtained from calls like open, dup, creat, pipe or - fileno (in the file has been previously opened with fopen). - The mode parameter is as in gzopen. - The next call of gzclose on the returned gzFile will also close the - file descriptor fd, just like fclose(fdopen(fd), mode) closes the file - descriptor fd. If you want to keep fd open, use gzdopen(dup(fd), mode). - gzdopen returns NULL if there was insufficient memory to allocate - the (de)compression state. -*/ - -ZEXTERN int ZEXPORT gzsetparams OF((gzFile file, int level, int strategy)); -/* - Dynamically update the compression level or strategy. See the description - of deflateInit2 for the meaning of these parameters. - gzsetparams returns Z_OK if success, or Z_STREAM_ERROR if the file was not - opened for writing. -*/ - -ZEXTERN int ZEXPORT gzread OF((gzFile file, voidp buf, unsigned len)); -/* - Reads the given number of uncompressed bytes from the compressed file. - If the input file was not in gzip format, gzread copies the given number - of bytes into the buffer. - gzread returns the number of uncompressed bytes actually read (0 for - end of file, -1 for error). */ - -ZEXTERN int ZEXPORT gzwrite OF((gzFile file, - voidpc buf, unsigned len)); -/* - Writes the given number of uncompressed bytes into the compressed file. - gzwrite returns the number of uncompressed bytes actually written - (0 in case of error). -*/ - -ZEXTERN int ZEXPORTVA gzprintf OF((gzFile file, const char *format, ...)); -/* - Converts, formats, and writes the args to the compressed file under - control of the format string, as in fprintf. gzprintf returns the number of - uncompressed bytes actually written (0 in case of error). The number of - uncompressed bytes written is limited to 4095. The caller should assure that - this limit is not exceeded. If it is exceeded, then gzprintf() will return - return an error (0) with nothing written. In this case, there may also be a - buffer overflow with unpredictable consequences, which is possible only if - zlib was compiled with the insecure functions sprintf() or vsprintf() - because the secure snprintf() or vsnprintf() functions were not available. -*/ - -ZEXTERN int ZEXPORT gzputs OF((gzFile file, const char *s)); -/* - Writes the given null-terminated string to the compressed file, excluding - the terminating null character. - gzputs returns the number of characters written, or -1 in case of error. -*/ - -ZEXTERN char * ZEXPORT gzgets OF((gzFile file, char *buf, int len)); -/* - Reads bytes from the compressed file until len-1 characters are read, or - a newline character is read and transferred to buf, or an end-of-file - condition is encountered. The string is then terminated with a null - character. - gzgets returns buf, or Z_NULL in case of error. -*/ - -ZEXTERN int ZEXPORT gzputc OF((gzFile file, int c)); -/* - Writes c, converted to an unsigned char, into the compressed file. - gzputc returns the value that was written, or -1 in case of error. -*/ - -ZEXTERN int ZEXPORT gzgetc OF((gzFile file)); -/* - Reads one byte from the compressed file. gzgetc returns this byte - or -1 in case of end of file or error. -*/ - -ZEXTERN int ZEXPORT gzungetc OF((int c, gzFile file)); -/* - Push one character back onto the stream to be read again later. - Only one character of push-back is allowed. gzungetc() returns the - character pushed, or -1 on failure. gzungetc() will fail if a - character has been pushed but not read yet, or if c is -1. The pushed - character will be discarded if the stream is repositioned with gzseek() - or gzrewind(). -*/ - -ZEXTERN int ZEXPORT gzflush OF((gzFile file, int flush)); -/* - Flushes all pending output into the compressed file. The parameter - flush is as in the deflate() function. The return value is the zlib - error number (see function gzerror below). gzflush returns Z_OK if - the flush parameter is Z_FINISH and all output could be flushed. - gzflush should be called only when strictly necessary because it can - degrade compression. -*/ - -ZEXTERN z_off_t ZEXPORT gzseek OF((gzFile file, - z_off_t offset, int whence)); -/* - Sets the starting position for the next gzread or gzwrite on the - given compressed file. The offset represents a number of bytes in the - uncompressed data stream. The whence parameter is defined as in lseek(2); - the value SEEK_END is not supported. - If the file is opened for reading, this function is emulated but can be - extremely slow. If the file is opened for writing, only forward seeks are - supported; gzseek then compresses a sequence of zeroes up to the new - starting position. - - gzseek returns the resulting offset location as measured in bytes from - the beginning of the uncompressed stream, or -1 in case of error, in - particular if the file is opened for writing and the new starting position - would be before the current position. -*/ - -ZEXTERN int ZEXPORT gzrewind OF((gzFile file)); -/* - Rewinds the given file. This function is supported only for reading. - - gzrewind(file) is equivalent to (int)gzseek(file, 0L, SEEK_SET) -*/ - -ZEXTERN z_off_t ZEXPORT gztell OF((gzFile file)); -/* - Returns the starting position for the next gzread or gzwrite on the - given compressed file. This position represents a number of bytes in the - uncompressed data stream. - - gztell(file) is equivalent to gzseek(file, 0L, SEEK_CUR) -*/ - -ZEXTERN int ZEXPORT gzeof OF((gzFile file)); -/* - Returns 1 when EOF has previously been detected reading the given - input stream, otherwise zero. -*/ - -ZEXTERN int ZEXPORT gzdirect OF((gzFile file)); -/* - Returns 1 if file is being read directly without decompression, otherwise - zero. -*/ - -ZEXTERN int ZEXPORT gzclose OF((gzFile file)); -/* - Flushes all pending output if necessary, closes the compressed file - and deallocates all the (de)compression state. The return value is the zlib - error number (see function gzerror below). -*/ - -ZEXTERN const char * ZEXPORT gzerror OF((gzFile file, int *errnum)); -/* - Returns the error message for the last error which occurred on the - given compressed file. errnum is set to zlib error number. If an - error occurred in the file system and not in the compression library, - errnum is set to Z_ERRNO and the application may consult errno - to get the exact error code. -*/ - -ZEXTERN void ZEXPORT gzclearerr OF((gzFile file)); -/* - Clears the error and end-of-file flags for file. This is analogous to the - clearerr() function in stdio. This is useful for continuing to read a gzip - file that is being written concurrently. -*/ - - /* checksum functions */ - -/* - These functions are not related to compression but are exported - anyway because they might be useful in applications using the - compression library. -*/ - -ZEXTERN uLong ZEXPORT adler32 OF((uLong adler, const Bytef *buf, uInt len)); -/* - Update a running Adler-32 checksum with the bytes buf[0..len-1] and - return the updated checksum. If buf is NULL, this function returns - the required initial value for the checksum. - An Adler-32 checksum is almost as reliable as a CRC32 but can be computed - much faster. Usage example: - - uLong adler = adler32(0L, Z_NULL, 0); - - while (read_buffer(buffer, length) != EOF) { - adler = adler32(adler, buffer, length); - } - if (adler != original_adler) error(); -*/ - -ZEXTERN uLong ZEXPORT adler32_combine OF((uLong adler1, uLong adler2, - z_off_t len2)); -/* - Combine two Adler-32 checksums into one. For two sequences of bytes, seq1 - and seq2 with lengths len1 and len2, Adler-32 checksums were calculated for - each, adler1 and adler2. adler32_combine() returns the Adler-32 checksum of - seq1 and seq2 concatenated, requiring only adler1, adler2, and len2. -*/ - -ZEXTERN uLong ZEXPORT crc32 OF((uLong crc, const Bytef *buf, uInt len)); -/* - Update a running CRC-32 with the bytes buf[0..len-1] and return the - updated CRC-32. If buf is NULL, this function returns the required initial - value for the for the crc. Pre- and post-conditioning (one's complement) is - performed within this function so it shouldn't be done by the application. - Usage example: - - uLong crc = crc32(0L, Z_NULL, 0); - - while (read_buffer(buffer, length) != EOF) { - crc = crc32(crc, buffer, length); - } - if (crc != original_crc) error(); -*/ - -ZEXTERN uLong ZEXPORT crc32_combine OF((uLong crc1, uLong crc2, z_off_t len2)); - -/* - Combine two CRC-32 check values into one. For two sequences of bytes, - seq1 and seq2 with lengths len1 and len2, CRC-32 check values were - calculated for each, crc1 and crc2. crc32_combine() returns the CRC-32 - check value of seq1 and seq2 concatenated, requiring only crc1, crc2, and - len2. -*/ - - - /* various hacks, don't look :) */ - -/* deflateInit and inflateInit are macros to allow checking the zlib version - * and the compiler's view of z_stream: - */ -ZEXTERN int ZEXPORT deflateInit_ OF((z_streamp strm, int level, - const char *version, int stream_size)); -ZEXTERN int ZEXPORT inflateInit_ OF((z_streamp strm, - const char *version, int stream_size)); -ZEXTERN int ZEXPORT deflateInit2_ OF((z_streamp strm, int level, int method, - int windowBits, int memLevel, - int strategy, const char *version, - int stream_size)); -ZEXTERN int ZEXPORT inflateInit2_ OF((z_streamp strm, int windowBits, - const char *version, int stream_size)); -ZEXTERN int ZEXPORT inflateBackInit_ OF((z_streamp strm, int windowBits, - unsigned char FAR *window, - const char *version, - int stream_size)); -#define deflateInit(strm, level) \ - deflateInit_((strm), (level), ZLIB_VERSION, sizeof(z_stream)) -#define inflateInit(strm) \ - inflateInit_((strm), ZLIB_VERSION, sizeof(z_stream)) -#define deflateInit2(strm, level, method, windowBits, memLevel, strategy) \ - deflateInit2_((strm),(level),(method),(windowBits),(memLevel),\ - (strategy), ZLIB_VERSION, sizeof(z_stream)) -#define inflateInit2(strm, windowBits) \ - inflateInit2_((strm), (windowBits), ZLIB_VERSION, sizeof(z_stream)) -#define inflateBackInit(strm, windowBits, window) \ - inflateBackInit_((strm), (windowBits), (window), \ - ZLIB_VERSION, sizeof(z_stream)) - - -#if !defined(ZUTIL_H) && !defined(NO_DUMMY_DECL) - struct internal_state {int dummy;}; /* hack for buggy compilers */ -#endif - -ZEXTERN const char * ZEXPORT zError OF((int)); -ZEXTERN int ZEXPORT inflateSyncPoint OF((z_streamp z)); -ZEXTERN const uLongf * ZEXPORT get_crc_table OF((void)); - -#ifdef __cplusplus -} -#endif - -#endif /* ZLIB_H */ diff --git a/src/zuFile.cpp b/src/zuFile.cpp deleted file mode 100644 index 445df6a..0000000 --- a/src/zuFile.cpp +++ /dev/null @@ -1,275 +0,0 @@ -/********************************************************************** -zyGrib: meteorological GRIB file viewer -Copyright (C) 2008 - Jacques Zaninetti - http://www.zygrib.org - -This program is free software: you can redistribute it and/or modify -it under the terms of the GNU General Public License as published by -the Free Software Foundation, either version 3 of the License, or -(at your option) any later version. - -This program is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -GNU General Public License for more details. - -You should have received a copy of the GNU General Public License -along with this program. If not, see . -***********************************************************************/ - -#include "zuFile.h" - -//---------------------------------------------------- -int zu_can_read_file(const char *fname) -{ - ZUFILE *f; - f = zu_open(fname, "rb"); - if (f == NULL) { - return 0; - } - else { - zu_close(f); - return 1; - } -} - -//---------------------------------------------------- -ZUFILE * zu_open(const char *fname, const char *mode, int type) -{ - ZUFILE *f; - char buf[16]; - if (!fname || strlen(fname)==0) { - return NULL; - } - f = (ZUFILE *) malloc(sizeof(ZUFILE)); - if (!f) { - return NULL; - } - - f->ok = 1; - f->pos = 0; - f->fname = strdup(fname); - - if (type == ZU_COMPRESS_AUTO) - { - char *p = strrchr(f->fname, '.'); - int i=0; - while (p!=NULL && *p !='\0' && i<4) { - buf[i] = tolower(*p); - i++; - p++; - } - buf[i] = '\0'; - if (!strcmp(buf, ".gz")) { - f->type = ZU_COMPRESS_GZIP; - //fprintf(stderr,"ZU_COMPRESS_GZIP\n"); - } -#ifndef __ANDROID__ - else if (!strcmp(buf, ".bz2") || !strcmp(buf, ".bz")) { - f->type = ZU_COMPRESS_BZIP; - //fprintf(stderr,"ZU_COMPRESS_BZIP\n"); - } -#endif - else { - f->type = ZU_COMPRESS_NONE; - //fprintf(stderr,"ZU_COMPRESS_NONE\n"); - } - } - else - { - f->type = type; - } - - switch(f->type) { - case ZU_COMPRESS_NONE : - f->zfile = (void *) fopen(f->fname, mode); - break; - case ZU_COMPRESS_GZIP : - f->zfile = (void *) gzopen(f->fname, mode); - break; -#ifndef __ANDROID__ - case ZU_COMPRESS_BZIP : - f->faux = fopen(f->fname, mode); - if (f->faux) { - int bzerror=BZ_OK; - f->zfile = (void *) BZ2_bzReadOpen(&bzerror,f->faux,0,0,NULL,0); - if (bzerror != BZ_OK) { - BZ2_bzReadClose (&bzerror,(BZFILE*)(f->zfile)); - fclose(f->faux); - f->zfile = NULL; - } - } else { - f->zfile = NULL; - } - break; -#endif - default : - f->zfile = NULL; - } - - if (f->zfile == NULL) { - free(f); - f = NULL; - } - - return f; -} -//---------------------------------------------------- -int zu_read(ZUFILE *f, void *buf, long len) -{ - int nb = 0; - int bzerror=BZ_OK; - switch(f->type) { - case ZU_COMPRESS_NONE : - nb = fread(buf, 1, len, (FILE*)(f->zfile)); - break; - case ZU_COMPRESS_GZIP : - nb = gzread((gzFile)(f->zfile), buf, len); - break; -#ifndef __ANDROID__ - case ZU_COMPRESS_BZIP : - nb = BZ2_bzRead(&bzerror,(BZFILE*)(f->zfile), buf, len); - break; -#endif - } - f->pos += nb; - return nb; -} - -//---------------------------------------------------- -int zu_close(ZUFILE *f) -{ - int bzerror=BZ_OK; - if (f) { - f->ok = 0; - f->pos = 0; - free(f->fname); - if (f->zfile) { - switch(f->type) { - case ZU_COMPRESS_NONE : - fclose((FILE*)(f->zfile)); - break; - case ZU_COMPRESS_GZIP : - gzclose((gzFile)(f->zfile)); - break; -#ifndef __ANDROID__ - case ZU_COMPRESS_BZIP : - BZ2_bzReadClose (&bzerror,(BZFILE*)(f->zfile)); - if (f->faux) { - fclose(f->faux); - } - break; -#endif - } - } - free(f); - } - return 0; -} - - - -//---------------------------------------------------- -long zu_tell(ZUFILE *f) -{ - return f->pos; -} - -//---------------------------------------------------- -long zu_filesize(ZUFILE *f) -{ - long res = 0; - FILE *ftmp = fopen(f->fname, "rb"); - if (ftmp) - { - fseek(ftmp, 0, SEEK_END); - res = ftell(ftmp); - fclose(ftmp); - } - return res; -} - -//---------------------------------------------------- -int zu_seek(ZUFILE *f, long offset, int whence) -{ - int res = 0; - int bzerror=BZ_OK; - if (whence == SEEK_END) { - return -1; // TODO - } - - switch(f->type) { //SEEK_SET, SEEK_CUR - case ZU_COMPRESS_NONE : - res = fseek((FILE*)(f->zfile), offset, whence); - f->pos = ftell((FILE*)(f->zfile)); - break; - case ZU_COMPRESS_GZIP : - if (whence == SEEK_SET) { - res = gzseek((gzFile)(f->zfile), offset, whence); - } - else { // !!! BUG with SEEK_CUR in ZLIB !!! - int p1 = gztell((gzFile)(f->zfile)); - res = gzseek((gzFile)(f->zfile), p1+offset, SEEK_SET); - } - f->pos = gztell((gzFile)(f->zfile)); - if (res >= 0) - res = 0; - break; -#ifndef __ANDROID__ - case ZU_COMPRESS_BZIP : - if (whence==SEEK_SET && offset >= f->pos) { - res = zu_bzSeekForward(f, offset-f->pos); - } - else if (whence==SEEK_CUR) { - res = zu_bzSeekForward(f, offset); - } - else { // BAD : reopen file - BZ2_bzReadClose (&bzerror,(BZFILE*)(f->zfile)); - bzerror=BZ_OK; - rewind(f->faux); - f->pos = 0; - f->zfile = (void *) BZ2_bzReadOpen(&bzerror,f->faux,0,0,NULL,0); - if (bzerror != BZ_OK) { - BZ2_bzReadClose (&bzerror,(BZFILE*)(f->zfile)); - fclose(f->faux); - f->zfile = NULL; - f->ok = 0; - } - res = zu_bzSeekForward(f, offset); - } - break; -#endif - } - return res; -} - -#ifndef __ANDROID__ -//----------------------------------------------------------------- -int zu_bzSeekForward(ZUFILE *f, unsigned long nbytes_) -// for internal use -{ - unsigned long nbytes = nbytes_; - char buf[ZU_BUFREADSIZE]; - unsigned long nbread = 0; - int nb; - int bzerror=BZ_OK; - while (bzerror==BZ_OK && nbytes>=ZU_BUFREADSIZE) { - nb = BZ2_bzRead(&bzerror,(BZFILE*)(f->zfile), buf, ZU_BUFREADSIZE); - nbytes -= nb; - nbread += nb; - } - if (bzerror==BZ_OK && nbytes>0) { - nb = BZ2_bzRead(&bzerror,(BZFILE*)(f->zfile), buf, nbytes); - nbread += nb; - } - f->pos += nbread; - - return nbread==nbytes_ ? 0 : -1; -} -#endif -//----------------------------------------------------------------- -void zu_rewind(ZUFILE *f) -{ - zu_seek(f, 0, SEEK_SET); -} - - diff --git a/src/zuFile.h b/src/zuFile.h deleted file mode 100644 index 1eb7eb3..0000000 --- a/src/zuFile.h +++ /dev/null @@ -1,84 +0,0 @@ -/********************************************************************** -zyGrib: meteorological GRIB file viewer -Copyright (C) 2008 - Jacques Zaninetti - http://www.zygrib.org - -This program is free software: you can redistribute it and/or modify -it under the terms of the GNU General Public License as published by -the Free Software Foundation, either version 3 of the License, or -(at your option) any later version. - -This program is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -GNU General Public License for more details. - -You should have received a copy of the GNU General Public License -along with this program. If not, see . -***********************************************************************/ - -#ifndef ZU_FILE_H -#define ZU_FILE_H - -#ifdef __cplusplus -extern "C" { -#endif - -// zuFile : uniform interface for READING uncompressed, gziped and bziped files -// (with fseek ftell not so bugged as in ... library) -#include -#include -#include -#include - -#include -#ifdef __ANDROID__ - #define BZ_OK 0 -#else -#include -#endif - -#define ZU_COMPRESS_AUTO -1 -#define ZU_COMPRESS_NONE 0 -#define ZU_COMPRESS_GZIP 1 -#define ZU_COMPRESS_BZIP 2 - -#define ZU_BUFREADSIZE 256000 - - -typedef struct -{ - int type; - int ok; - char *fname; - long pos; - - void *zfile; // exact file type depends of compress type - - FILE *faux; // auxiliary file for bzip -} ZUFILE; - - -ZUFILE * zu_open(const char *fname, const char *mode, int type=ZU_COMPRESS_AUTO); -int zu_close(ZUFILE *f); - -int zu_can_read_file(const char *fname); - -int zu_read(ZUFILE *f, void *buf, long len); - -long zu_tell(ZUFILE *f); - -int zu_seek(ZUFILE *f, long offset, int whence); // TODO: whence=SEEK_END - -void zu_rewind(ZUFILE *f); - -long zu_filesize(ZUFILE *f); - -// for internal use : -int zu_bzSeekForward(ZUFILE *f, unsigned long nbytes); - - -#ifdef __cplusplus -} -#endif - -#endif