diff --git a/.cproject b/.cproject index d1780de30040f79edc575b94461e204e3f965659..a9b81cba15fb871f873ef8acea4b93cc85bf79d9 100644 --- a/.cproject +++ b/.cproject @@ -1,222 +1,212 @@ -<?xml version="1.0" encoding="UTF-8" standalone="no"?> -<?fileVersion 4.0.0?><cproject storage_type_id="org.eclipse.cdt.core.XmlProjectDescriptionStorage"> - - <storageModule moduleId="org.eclipse.cdt.core.settings"> - - <cconfiguration id="cdt.managedbuild.config.gnu.mingw.exe.debug.913981392"> - - <storageModule buildSystemId="org.eclipse.cdt.managedbuilder.core.configurationDataProvider" id="cdt.managedbuild.config.gnu.mingw.exe.debug.913981392" moduleId="org.eclipse.cdt.core.settings" name="Debug"> - - <externalSettings/> - - <extensions> - - <extension id="org.eclipse.cdt.core.PE" point="org.eclipse.cdt.core.BinaryParser"/> - - <extension id="org.eclipse.cdt.core.GASErrorParser" point="org.eclipse.cdt.core.ErrorParser"/> - - <extension id="org.eclipse.cdt.core.GLDErrorParser" point="org.eclipse.cdt.core.ErrorParser"/> - - <extension id="org.eclipse.cdt.core.GCCErrorParser" point="org.eclipse.cdt.core.ErrorParser"/> - - </extensions> - - </storageModule> - - <storageModule moduleId="cdtBuildSystem" version="4.0.0"> - - <configuration artifactName="${ProjName}" buildArtefactType="org.eclipse.cdt.build.core.buildArtefactType.exe" buildProperties="org.eclipse.cdt.build.core.buildArtefactType=org.eclipse.cdt.build.core.buildArtefactType.exe,org.eclipse.cdt.build.core.buildType=org.eclipse.cdt.build.core.buildType.debug" cleanCommand="rm -rf" description="" id="cdt.managedbuild.config.gnu.mingw.exe.debug.913981392" name="Debug" optionalBuildProperties="org.eclipse.cdt.docker.launcher.containerbuild.property.volumes=,org.eclipse.cdt.docker.launcher.containerbuild.property.selectedvolumes=" parent="cdt.managedbuild.config.gnu.mingw.exe.debug"> - - <folderInfo id="cdt.managedbuild.config.gnu.mingw.exe.debug.913981392." name="/" resourcePath=""> - - <toolChain id="cdt.managedbuild.toolchain.gnu.mingw.exe.debug.367600360" name="MinGW GCC" superClass="cdt.managedbuild.toolchain.gnu.mingw.exe.debug"> - - <targetPlatform id="cdt.managedbuild.target.gnu.platform.mingw.exe.debug.1719566759" name="Debug Platform" superClass="cdt.managedbuild.target.gnu.platform.mingw.exe.debug"/> - - <builder buildPath="${workspace_loc:/constant-workspace-algorithms-c}/Debug" id="cdt.managedbuild.tool.gnu.builder.mingw.base.1519590842" keepEnvironmentInBuildfile="false" managedBuildOn="true" name="CDT Internal Builder" superClass="cdt.managedbuild.tool.gnu.builder.mingw.base"/> - - <tool id="cdt.managedbuild.tool.gnu.assembler.mingw.exe.debug.1137597037" name="GCC Assembler" superClass="cdt.managedbuild.tool.gnu.assembler.mingw.exe.debug"> - - <inputType id="cdt.managedbuild.tool.gnu.assembler.input.2016104599" superClass="cdt.managedbuild.tool.gnu.assembler.input"/> - - </tool> - - <tool id="cdt.managedbuild.tool.gnu.archiver.mingw.base.335209845" name="GCC Archiver" superClass="cdt.managedbuild.tool.gnu.archiver.mingw.base"/> - - <tool id="cdt.managedbuild.tool.gnu.cpp.compiler.mingw.exe.debug.641152686" name="GCC C++ Compiler" superClass="cdt.managedbuild.tool.gnu.cpp.compiler.mingw.exe.debug"> - - <option id="gnu.cpp.compiler.mingw.exe.debug.option.optimization.level.1439991956" name="Optimization Level" superClass="gnu.cpp.compiler.mingw.exe.debug.option.optimization.level" useByScannerDiscovery="false" value="gnu.cpp.compiler.optimization.level.none" valueType="enumerated"/> - - <option defaultValue="gnu.cpp.compiler.debugging.level.max" id="gnu.cpp.compiler.mingw.exe.debug.option.debugging.level.2053770429" name="Debug Level" superClass="gnu.cpp.compiler.mingw.exe.debug.option.debugging.level" useByScannerDiscovery="false" valueType="enumerated"/> - - </tool> - - <tool id="cdt.managedbuild.tool.gnu.c.compiler.mingw.exe.debug.935640154" name="GCC C Compiler" superClass="cdt.managedbuild.tool.gnu.c.compiler.mingw.exe.debug"> - - <option defaultValue="gnu.c.optimization.level.none" id="gnu.c.compiler.mingw.exe.debug.option.optimization.level.1319064045" name="Optimization Level" superClass="gnu.c.compiler.mingw.exe.debug.option.optimization.level" useByScannerDiscovery="false" valueType="enumerated"/> - - <option defaultValue="gnu.c.debugging.level.max" id="gnu.c.compiler.mingw.exe.debug.option.debugging.level.1027476309" name="Debug Level" superClass="gnu.c.compiler.mingw.exe.debug.option.debugging.level" useByScannerDiscovery="false" valueType="enumerated"/> - - <option IS_BUILTIN_EMPTY="false" IS_VALUE_EMPTY="false" id="gnu.c.compiler.option.include.paths.553881075" superClass="gnu.c.compiler.option.include.paths" useByScannerDiscovery="false" valueType="includePath"> - - <listOptionValue builtIn="false" value=""C:\gtk\include\cairo""/> - - </option> - - <inputType id="cdt.managedbuild.tool.gnu.c.compiler.input.1918022612" superClass="cdt.managedbuild.tool.gnu.c.compiler.input"/> - - </tool> - - <tool id="cdt.managedbuild.tool.gnu.c.linker.mingw.exe.debug.152945588" name="MinGW C Linker" superClass="cdt.managedbuild.tool.gnu.c.linker.mingw.exe.debug"> - - <inputType id="cdt.managedbuild.tool.gnu.c.linker.input.408418117" superClass="cdt.managedbuild.tool.gnu.c.linker.input"> - - <additionalInput kind="additionalinputdependency" paths="$(USER_OBJS)"/> - - <additionalInput kind="additionalinput" paths="$(LIBS)"/> - - </inputType> - - </tool> - - <tool id="cdt.managedbuild.tool.gnu.cpp.linker.mingw.exe.debug.160074272" name="MinGW C++ Linker" superClass="cdt.managedbuild.tool.gnu.cpp.linker.mingw.exe.debug"/> - - </toolChain> - - </folderInfo> - - <sourceEntries> - - <entry flags="VALUE_WORKSPACE_PATH|RESOLVED" kind="sourcePath" name="src"/> - - </sourceEntries> - - </configuration> - - </storageModule> - - <storageModule moduleId="org.eclipse.cdt.core.externalSettings"/> - - </cconfiguration> - - <cconfiguration id="cdt.managedbuild.config.gnu.mingw.exe.release.1419934805"> - - <storageModule buildSystemId="org.eclipse.cdt.managedbuilder.core.configurationDataProvider" id="cdt.managedbuild.config.gnu.mingw.exe.release.1419934805" moduleId="org.eclipse.cdt.core.settings" name="Release"> - - <externalSettings/> - - <extensions> - - <extension id="org.eclipse.cdt.core.PE" point="org.eclipse.cdt.core.BinaryParser"/> - - <extension id="org.eclipse.cdt.core.GASErrorParser" point="org.eclipse.cdt.core.ErrorParser"/> - - <extension id="org.eclipse.cdt.core.GLDErrorParser" point="org.eclipse.cdt.core.ErrorParser"/> - - <extension id="org.eclipse.cdt.core.GCCErrorParser" point="org.eclipse.cdt.core.ErrorParser"/> - - </extensions> - - </storageModule> - - <storageModule moduleId="cdtBuildSystem" version="4.0.0"> - - <configuration artifactName="${ProjName}" buildArtefactType="org.eclipse.cdt.build.core.buildArtefactType.exe" buildProperties="org.eclipse.cdt.build.core.buildArtefactType=org.eclipse.cdt.build.core.buildArtefactType.exe,org.eclipse.cdt.build.core.buildType=org.eclipse.cdt.build.core.buildType.release" cleanCommand="rm -rf" description="" id="cdt.managedbuild.config.gnu.mingw.exe.release.1419934805" name="Release" optionalBuildProperties="" parent="cdt.managedbuild.config.gnu.mingw.exe.release"> - - <folderInfo id="cdt.managedbuild.config.gnu.mingw.exe.release.1419934805." name="/" resourcePath=""> - - <toolChain id="cdt.managedbuild.toolchain.gnu.mingw.exe.release.1251512435" name="MinGW GCC" superClass="cdt.managedbuild.toolchain.gnu.mingw.exe.release"> - - <targetPlatform id="cdt.managedbuild.target.gnu.platform.mingw.exe.release.1185331731" name="Debug Platform" superClass="cdt.managedbuild.target.gnu.platform.mingw.exe.release"/> - - <builder buildPath="${workspace_loc:/constant-workspace-algorithms-c}/Release" id="cdt.managedbuild.tool.gnu.builder.mingw.base.1562345432" keepEnvironmentInBuildfile="false" managedBuildOn="true" name="CDT Internal Builder" superClass="cdt.managedbuild.tool.gnu.builder.mingw.base"/> - - <tool id="cdt.managedbuild.tool.gnu.assembler.mingw.exe.release.80643772" name="GCC Assembler" superClass="cdt.managedbuild.tool.gnu.assembler.mingw.exe.release"> - - <inputType id="cdt.managedbuild.tool.gnu.assembler.input.415193855" superClass="cdt.managedbuild.tool.gnu.assembler.input"/> - - </tool> - - <tool id="cdt.managedbuild.tool.gnu.archiver.mingw.base.97188924" name="GCC Archiver" superClass="cdt.managedbuild.tool.gnu.archiver.mingw.base"/> - - <tool id="cdt.managedbuild.tool.gnu.cpp.compiler.mingw.exe.release.1624378783" name="GCC C++ Compiler" superClass="cdt.managedbuild.tool.gnu.cpp.compiler.mingw.exe.release"> - - <option id="gnu.cpp.compiler.mingw.exe.release.option.optimization.level.1807152657" name="Optimization Level" superClass="gnu.cpp.compiler.mingw.exe.release.option.optimization.level" useByScannerDiscovery="false" value="gnu.cpp.compiler.optimization.level.most" valueType="enumerated"/> - - <option defaultValue="gnu.cpp.compiler.debugging.level.none" id="gnu.cpp.compiler.mingw.exe.release.option.debugging.level.39620204" name="Debug Level" superClass="gnu.cpp.compiler.mingw.exe.release.option.debugging.level" useByScannerDiscovery="false" valueType="enumerated"/> - - </tool> - - <tool id="cdt.managedbuild.tool.gnu.c.compiler.mingw.exe.release.1636892329" name="GCC C Compiler" superClass="cdt.managedbuild.tool.gnu.c.compiler.mingw.exe.release"> - - <option defaultValue="gnu.c.optimization.level.most" id="gnu.c.compiler.mingw.exe.release.option.optimization.level.860990239" name="Optimization Level" superClass="gnu.c.compiler.mingw.exe.release.option.optimization.level" useByScannerDiscovery="false" valueType="enumerated"/> - - <option defaultValue="gnu.c.debugging.level.none" id="gnu.c.compiler.mingw.exe.release.option.debugging.level.148760879" name="Debug Level" superClass="gnu.c.compiler.mingw.exe.release.option.debugging.level" useByScannerDiscovery="false" valueType="enumerated"/> - - <inputType id="cdt.managedbuild.tool.gnu.c.compiler.input.1259866239" superClass="cdt.managedbuild.tool.gnu.c.compiler.input"/> - - </tool> - - <tool id="cdt.managedbuild.tool.gnu.c.linker.mingw.exe.release.1309107452" name="MinGW C Linker" superClass="cdt.managedbuild.tool.gnu.c.linker.mingw.exe.release"> - - <inputType id="cdt.managedbuild.tool.gnu.c.linker.input.65027192" superClass="cdt.managedbuild.tool.gnu.c.linker.input"> - - <additionalInput kind="additionalinputdependency" paths="$(USER_OBJS)"/> - - <additionalInput kind="additionalinput" paths="$(LIBS)"/> - - </inputType> - - </tool> - - <tool id="cdt.managedbuild.tool.gnu.cpp.linker.mingw.exe.release.2099402939" name="MinGW C++ Linker" superClass="cdt.managedbuild.tool.gnu.cpp.linker.mingw.exe.release"/> - - </toolChain> - - </folderInfo> - - <sourceEntries> - - <entry flags="VALUE_WORKSPACE_PATH|RESOLVED" kind="sourcePath" name="src"/> - - </sourceEntries> - - </configuration> - - </storageModule> - - <storageModule moduleId="org.eclipse.cdt.core.externalSettings"/> - - </cconfiguration> - - </storageModule> - - <storageModule moduleId="cdtBuildSystem" version="4.0.0"> - - <project id="constant-workspace-algorithms-c.cdt.managedbuild.target.gnu.mingw.exe.233459410" name="Executable" projectType="cdt.managedbuild.target.gnu.mingw.exe"/> - - </storageModule> - - <storageModule moduleId="scannerConfiguration"> - - <autodiscovery enabled="true" problemReportingEnabled="true" selectedProfileId=""/> - - <scannerConfigBuildInfo instanceId="cdt.managedbuild.config.gnu.mingw.exe.debug.913981392;cdt.managedbuild.config.gnu.mingw.exe.debug.913981392.;cdt.managedbuild.tool.gnu.c.compiler.mingw.exe.debug.935640154;cdt.managedbuild.tool.gnu.c.compiler.input.1918022612"> - - <autodiscovery enabled="true" problemReportingEnabled="true" selectedProfileId=""/> - - </scannerConfigBuildInfo> - - <scannerConfigBuildInfo instanceId="cdt.managedbuild.config.gnu.mingw.exe.release.1419934805;cdt.managedbuild.config.gnu.mingw.exe.release.1419934805.;cdt.managedbuild.tool.gnu.c.compiler.mingw.exe.release.1636892329;cdt.managedbuild.tool.gnu.c.compiler.input.1259866239"> - - <autodiscovery enabled="true" problemReportingEnabled="true" selectedProfileId=""/> - - </scannerConfigBuildInfo> - - </storageModule> - - <storageModule moduleId="org.eclipse.cdt.core.LanguageSettingsProviders"/> - - <storageModule moduleId="org.eclipse.cdt.make.core.buildtargets"/> - -</cproject> +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<?fileVersion 4.0.0?><cproject storage_type_id="org.eclipse.cdt.core.XmlProjectDescriptionStorage"> + + <storageModule moduleId="org.eclipse.cdt.core.settings"> + + <cconfiguration id="cdt.managedbuild.config.gnu.mingw.exe.debug.913981392"> + + <storageModule buildSystemId="org.eclipse.cdt.managedbuilder.core.configurationDataProvider" id="cdt.managedbuild.config.gnu.mingw.exe.debug.913981392" moduleId="org.eclipse.cdt.core.settings" name="Debug"> + + <externalSettings/> + + <extensions> + + <extension id="org.eclipse.cdt.core.PE" point="org.eclipse.cdt.core.BinaryParser"/> + + <extension id="org.eclipse.cdt.core.GASErrorParser" point="org.eclipse.cdt.core.ErrorParser"/> + + <extension id="org.eclipse.cdt.core.GLDErrorParser" point="org.eclipse.cdt.core.ErrorParser"/> + + <extension id="org.eclipse.cdt.core.GCCErrorParser" point="org.eclipse.cdt.core.ErrorParser"/> + + </extensions> + + </storageModule> + + <storageModule moduleId="cdtBuildSystem" version="4.0.0"> + + <configuration artifactName="${ProjName}" buildArtefactType="org.eclipse.cdt.build.core.buildArtefactType.exe" buildProperties="org.eclipse.cdt.build.core.buildArtefactType=org.eclipse.cdt.build.core.buildArtefactType.exe,org.eclipse.cdt.build.core.buildType=org.eclipse.cdt.build.core.buildType.debug" cleanCommand="rm -rf" description="" id="cdt.managedbuild.config.gnu.mingw.exe.debug.913981392" name="Debug" optionalBuildProperties="org.eclipse.cdt.docker.launcher.containerbuild.property.selectedvolumes=,org.eclipse.cdt.docker.launcher.containerbuild.property.volumes=" parent="cdt.managedbuild.config.gnu.mingw.exe.debug"> + + <folderInfo id="cdt.managedbuild.config.gnu.mingw.exe.debug.913981392." name="/" resourcePath=""> + + <toolChain id="cdt.managedbuild.toolchain.gnu.mingw.exe.debug.367600360" name="MinGW GCC" superClass="cdt.managedbuild.toolchain.gnu.mingw.exe.debug"> + + <targetPlatform id="cdt.managedbuild.target.gnu.platform.mingw.exe.debug.1719566759" name="Debug Platform" superClass="cdt.managedbuild.target.gnu.platform.mingw.exe.debug"/> + + <builder buildPath="${workspace_loc:/constant-workspace-algorithms-c}/Debug" id="cdt.managedbuild.tool.gnu.builder.mingw.base.1519590842" keepEnvironmentInBuildfile="false" managedBuildOn="true" name="CDT Internal Builder" superClass="cdt.managedbuild.tool.gnu.builder.mingw.base"/> + + <tool id="cdt.managedbuild.tool.gnu.assembler.mingw.exe.debug.1137597037" name="GCC Assembler" superClass="cdt.managedbuild.tool.gnu.assembler.mingw.exe.debug"> + + <inputType id="cdt.managedbuild.tool.gnu.assembler.input.2016104599" superClass="cdt.managedbuild.tool.gnu.assembler.input"/> + + </tool> + + <tool id="cdt.managedbuild.tool.gnu.archiver.mingw.base.335209845" name="GCC Archiver" superClass="cdt.managedbuild.tool.gnu.archiver.mingw.base"/> + + <tool id="cdt.managedbuild.tool.gnu.cpp.compiler.mingw.exe.debug.641152686" name="GCC C++ Compiler" superClass="cdt.managedbuild.tool.gnu.cpp.compiler.mingw.exe.debug"> + + <option id="gnu.cpp.compiler.mingw.exe.debug.option.optimization.level.1439991956" name="Optimization Level" superClass="gnu.cpp.compiler.mingw.exe.debug.option.optimization.level" useByScannerDiscovery="false" value="gnu.cpp.compiler.optimization.level.none" valueType="enumerated"/> + + <option defaultValue="gnu.cpp.compiler.debugging.level.max" id="gnu.cpp.compiler.mingw.exe.debug.option.debugging.level.2053770429" name="Debug Level" superClass="gnu.cpp.compiler.mingw.exe.debug.option.debugging.level" useByScannerDiscovery="false" valueType="enumerated"/> + + </tool> + + <tool id="cdt.managedbuild.tool.gnu.c.compiler.mingw.exe.debug.935640154" name="GCC C Compiler" superClass="cdt.managedbuild.tool.gnu.c.compiler.mingw.exe.debug"> + + <option defaultValue="gnu.c.optimization.level.none" id="gnu.c.compiler.mingw.exe.debug.option.optimization.level.1319064045" name="Optimization Level" superClass="gnu.c.compiler.mingw.exe.debug.option.optimization.level" useByScannerDiscovery="false" valueType="enumerated"/> + + <option defaultValue="gnu.c.debugging.level.max" id="gnu.c.compiler.mingw.exe.debug.option.debugging.level.1027476309" name="Debug Level" superClass="gnu.c.compiler.mingw.exe.debug.option.debugging.level" useByScannerDiscovery="false" valueType="enumerated"/> + + <inputType id="cdt.managedbuild.tool.gnu.c.compiler.input.1918022612" superClass="cdt.managedbuild.tool.gnu.c.compiler.input"/> + + </tool> + + <tool id="cdt.managedbuild.tool.gnu.c.linker.mingw.exe.debug.152945588" name="MinGW C Linker" superClass="cdt.managedbuild.tool.gnu.c.linker.mingw.exe.debug"> + + <inputType id="cdt.managedbuild.tool.gnu.c.linker.input.408418117" superClass="cdt.managedbuild.tool.gnu.c.linker.input"> + + <additionalInput kind="additionalinputdependency" paths="$(USER_OBJS)"/> + + <additionalInput kind="additionalinput" paths="$(LIBS)"/> + + </inputType> + + </tool> + + <tool id="cdt.managedbuild.tool.gnu.cpp.linker.mingw.exe.debug.160074272" name="MinGW C++ Linker" superClass="cdt.managedbuild.tool.gnu.cpp.linker.mingw.exe.debug"/> + + </toolChain> + + </folderInfo> + + </configuration> + + </storageModule> + + <storageModule moduleId="org.eclipse.cdt.core.externalSettings"/> + + </cconfiguration> + + <cconfiguration id="cdt.managedbuild.config.gnu.mingw.exe.release.1419934805"> + + <storageModule buildSystemId="org.eclipse.cdt.managedbuilder.core.configurationDataProvider" id="cdt.managedbuild.config.gnu.mingw.exe.release.1419934805" moduleId="org.eclipse.cdt.core.settings" name="Release"> + + <externalSettings/> + + <extensions> + + <extension id="org.eclipse.cdt.core.PE" point="org.eclipse.cdt.core.BinaryParser"/> + + <extension id="org.eclipse.cdt.core.GASErrorParser" point="org.eclipse.cdt.core.ErrorParser"/> + + <extension id="org.eclipse.cdt.core.GLDErrorParser" point="org.eclipse.cdt.core.ErrorParser"/> + + <extension id="org.eclipse.cdt.core.GCCErrorParser" point="org.eclipse.cdt.core.ErrorParser"/> + + </extensions> + + </storageModule> + + <storageModule moduleId="cdtBuildSystem" version="4.0.0"> + + <configuration artifactName="${ProjName}" buildArtefactType="org.eclipse.cdt.build.core.buildArtefactType.exe" buildProperties="org.eclipse.cdt.build.core.buildArtefactType=org.eclipse.cdt.build.core.buildArtefactType.exe,org.eclipse.cdt.build.core.buildType=org.eclipse.cdt.build.core.buildType.release" cleanCommand="rm -rf" description="" id="cdt.managedbuild.config.gnu.mingw.exe.release.1419934805" name="Release" optionalBuildProperties="" parent="cdt.managedbuild.config.gnu.mingw.exe.release"> + + <folderInfo id="cdt.managedbuild.config.gnu.mingw.exe.release.1419934805." name="/" resourcePath=""> + + <toolChain id="cdt.managedbuild.toolchain.gnu.mingw.exe.release.1251512435" name="MinGW GCC" superClass="cdt.managedbuild.toolchain.gnu.mingw.exe.release"> + + <targetPlatform id="cdt.managedbuild.target.gnu.platform.mingw.exe.release.1185331731" name="Debug Platform" superClass="cdt.managedbuild.target.gnu.platform.mingw.exe.release"/> + + <builder buildPath="${workspace_loc:/constant-workspace-algorithms-c}/Release" id="cdt.managedbuild.tool.gnu.builder.mingw.base.1562345432" keepEnvironmentInBuildfile="false" managedBuildOn="true" name="CDT Internal Builder" superClass="cdt.managedbuild.tool.gnu.builder.mingw.base"/> + + <tool id="cdt.managedbuild.tool.gnu.assembler.mingw.exe.release.80643772" name="GCC Assembler" superClass="cdt.managedbuild.tool.gnu.assembler.mingw.exe.release"> + + <inputType id="cdt.managedbuild.tool.gnu.assembler.input.415193855" superClass="cdt.managedbuild.tool.gnu.assembler.input"/> + + </tool> + + <tool id="cdt.managedbuild.tool.gnu.archiver.mingw.base.97188924" name="GCC Archiver" superClass="cdt.managedbuild.tool.gnu.archiver.mingw.base"/> + + <tool id="cdt.managedbuild.tool.gnu.cpp.compiler.mingw.exe.release.1624378783" name="GCC C++ Compiler" superClass="cdt.managedbuild.tool.gnu.cpp.compiler.mingw.exe.release"> + + <option id="gnu.cpp.compiler.mingw.exe.release.option.optimization.level.1807152657" name="Optimization Level" superClass="gnu.cpp.compiler.mingw.exe.release.option.optimization.level" useByScannerDiscovery="false" value="gnu.cpp.compiler.optimization.level.most" valueType="enumerated"/> + + <option defaultValue="gnu.cpp.compiler.debugging.level.none" id="gnu.cpp.compiler.mingw.exe.release.option.debugging.level.39620204" name="Debug Level" superClass="gnu.cpp.compiler.mingw.exe.release.option.debugging.level" useByScannerDiscovery="false" valueType="enumerated"/> + + </tool> + + <tool id="cdt.managedbuild.tool.gnu.c.compiler.mingw.exe.release.1636892329" name="GCC C Compiler" superClass="cdt.managedbuild.tool.gnu.c.compiler.mingw.exe.release"> + + <option defaultValue="gnu.c.optimization.level.most" id="gnu.c.compiler.mingw.exe.release.option.optimization.level.860990239" name="Optimization Level" superClass="gnu.c.compiler.mingw.exe.release.option.optimization.level" useByScannerDiscovery="false" valueType="enumerated"/> + + <option defaultValue="gnu.c.debugging.level.none" id="gnu.c.compiler.mingw.exe.release.option.debugging.level.148760879" name="Debug Level" superClass="gnu.c.compiler.mingw.exe.release.option.debugging.level" useByScannerDiscovery="false" valueType="enumerated"/> + + <inputType id="cdt.managedbuild.tool.gnu.c.compiler.input.1259866239" superClass="cdt.managedbuild.tool.gnu.c.compiler.input"/> + + </tool> + + <tool id="cdt.managedbuild.tool.gnu.c.linker.mingw.exe.release.1309107452" name="MinGW C Linker" superClass="cdt.managedbuild.tool.gnu.c.linker.mingw.exe.release"> + + <inputType id="cdt.managedbuild.tool.gnu.c.linker.input.65027192" superClass="cdt.managedbuild.tool.gnu.c.linker.input"> + + <additionalInput kind="additionalinputdependency" paths="$(USER_OBJS)"/> + + <additionalInput kind="additionalinput" paths="$(LIBS)"/> + + </inputType> + + </tool> + + <tool id="cdt.managedbuild.tool.gnu.cpp.linker.mingw.exe.release.2099402939" name="MinGW C++ Linker" superClass="cdt.managedbuild.tool.gnu.cpp.linker.mingw.exe.release"/> + + </toolChain> + + </folderInfo> + + <sourceEntries> + + <entry flags="VALUE_WORKSPACE_PATH|RESOLVED" kind="sourcePath" name="src"/> + + </sourceEntries> + + </configuration> + + </storageModule> + + <storageModule moduleId="org.eclipse.cdt.core.externalSettings"/> + + </cconfiguration> + + </storageModule> + + <storageModule moduleId="cdtBuildSystem" version="4.0.0"> + + <project id="constant-workspace-algorithms-c.cdt.managedbuild.target.gnu.mingw.exe.233459410" name="Executable" projectType="cdt.managedbuild.target.gnu.mingw.exe"/> + + </storageModule> + + <storageModule moduleId="scannerConfiguration"> + + <autodiscovery enabled="true" problemReportingEnabled="true" selectedProfileId=""/> + + <scannerConfigBuildInfo instanceId="cdt.managedbuild.config.gnu.mingw.exe.debug.913981392;cdt.managedbuild.config.gnu.mingw.exe.debug.913981392.;cdt.managedbuild.tool.gnu.c.compiler.mingw.exe.debug.935640154;cdt.managedbuild.tool.gnu.c.compiler.input.1918022612"> + + <autodiscovery enabled="true" problemReportingEnabled="true" selectedProfileId=""/> + + </scannerConfigBuildInfo> + + <scannerConfigBuildInfo instanceId="cdt.managedbuild.config.gnu.mingw.exe.release.1419934805;cdt.managedbuild.config.gnu.mingw.exe.release.1419934805.;cdt.managedbuild.tool.gnu.c.compiler.mingw.exe.release.1636892329;cdt.managedbuild.tool.gnu.c.compiler.input.1259866239"> + + <autodiscovery enabled="true" problemReportingEnabled="true" selectedProfileId=""/> + + </scannerConfigBuildInfo> + + </storageModule> + + <storageModule moduleId="org.eclipse.cdt.core.LanguageSettingsProviders"/> + + <storageModule moduleId="org.eclipse.cdt.make.core.buildtargets"/> + + <storageModule moduleId="refreshScope"/> + +</cproject> diff --git a/.gitignore b/.gitignore index 3df573fe623699c4038ba9501388748f93485913..b9361b7bb1c9a44b5a024f15a547607b15f60f40 100644 --- a/.gitignore +++ b/.gitignore @@ -1 +1,2 @@ /Debug/ +/html/ diff --git a/.settings/language.settings.xml b/.settings/language.settings.xml index 81c25877e217734914074593b21b39e94c05de70..c990946f19752387b15cd1dcd505a5b723fa8e2e 100644 --- a/.settings/language.settings.xml +++ b/.settings/language.settings.xml @@ -1,48 +1,48 @@ -<?xml version="1.0" encoding="UTF-8" standalone="no"?> -<project> - - <configuration id="cdt.managedbuild.config.gnu.mingw.exe.debug.913981392" name="Debug"> - - <extension point="org.eclipse.cdt.core.LanguageSettingsProvider"> - - <provider copy-of="extension" id="org.eclipse.cdt.ui.UserLanguageSettingsProvider"/> - - <provider-reference id="org.eclipse.cdt.core.ReferencedProjectsLanguageSettingsProvider" ref="shared-provider"/> - - <provider-reference id="org.eclipse.cdt.managedbuilder.core.MBSLanguageSettingsProvider" ref="shared-provider"/> - - <provider class="org.eclipse.cdt.managedbuilder.internal.language.settings.providers.GCCBuiltinSpecsDetectorMinGW" console="false" env-hash="404424846557422912" id="org.eclipse.cdt.managedbuilder.core.GCCBuiltinSpecsDetectorMinGW" keep-relative-paths="false" name="CDT GCC Built-in Compiler Settings MinGW" parameter="${COMMAND} ${FLAGS} -E -P -v -dD "${INPUTS}"" prefer-non-shared="true"> - - <language-scope id="org.eclipse.cdt.core.gcc"/> - - <language-scope id="org.eclipse.cdt.core.g++"/> - - </provider> - - </extension> - - </configuration> - - <configuration id="cdt.managedbuild.config.gnu.mingw.exe.release.1419934805" name="Release"> - - <extension point="org.eclipse.cdt.core.LanguageSettingsProvider"> - - <provider copy-of="extension" id="org.eclipse.cdt.ui.UserLanguageSettingsProvider"/> - - <provider-reference id="org.eclipse.cdt.core.ReferencedProjectsLanguageSettingsProvider" ref="shared-provider"/> - - <provider-reference id="org.eclipse.cdt.managedbuilder.core.MBSLanguageSettingsProvider" ref="shared-provider"/> - - <provider class="org.eclipse.cdt.managedbuilder.internal.language.settings.providers.GCCBuiltinSpecsDetectorMinGW" console="false" env-hash="404424846557422912" id="org.eclipse.cdt.managedbuilder.core.GCCBuiltinSpecsDetectorMinGW" keep-relative-paths="false" name="CDT GCC Built-in Compiler Settings MinGW" parameter="${COMMAND} ${FLAGS} -E -P -v -dD "${INPUTS}"" prefer-non-shared="true"> - - <language-scope id="org.eclipse.cdt.core.gcc"/> - - <language-scope id="org.eclipse.cdt.core.g++"/> - - </provider> - - </extension> - - </configuration> - -</project> +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<project> + + <configuration id="cdt.managedbuild.config.gnu.mingw.exe.debug.913981392" name="Debug"> + + <extension point="org.eclipse.cdt.core.LanguageSettingsProvider"> + + <provider copy-of="extension" id="org.eclipse.cdt.ui.UserLanguageSettingsProvider"/> + + <provider-reference id="org.eclipse.cdt.core.ReferencedProjectsLanguageSettingsProvider" ref="shared-provider"/> + + <provider-reference id="org.eclipse.cdt.managedbuilder.core.MBSLanguageSettingsProvider" ref="shared-provider"/> + + <provider class="org.eclipse.cdt.managedbuilder.internal.language.settings.providers.GCCBuiltinSpecsDetectorMinGW" console="false" env-hash="616115681376380407" id="org.eclipse.cdt.managedbuilder.core.GCCBuiltinSpecsDetectorMinGW" keep-relative-paths="false" name="CDT GCC Built-in Compiler Settings MinGW" parameter="${COMMAND} ${FLAGS} -E -P -v -dD "${INPUTS}"" prefer-non-shared="true"> + + <language-scope id="org.eclipse.cdt.core.gcc"/> + + <language-scope id="org.eclipse.cdt.core.g++"/> + + </provider> + + </extension> + + </configuration> + + <configuration id="cdt.managedbuild.config.gnu.mingw.exe.release.1419934805" name="Release"> + + <extension point="org.eclipse.cdt.core.LanguageSettingsProvider"> + + <provider copy-of="extension" id="org.eclipse.cdt.ui.UserLanguageSettingsProvider"/> + + <provider-reference id="org.eclipse.cdt.core.ReferencedProjectsLanguageSettingsProvider" ref="shared-provider"/> + + <provider-reference id="org.eclipse.cdt.managedbuilder.core.MBSLanguageSettingsProvider" ref="shared-provider"/> + + <provider class="org.eclipse.cdt.managedbuilder.internal.language.settings.providers.GCCBuiltinSpecsDetectorMinGW" console="false" env-hash="616115681376380407" id="org.eclipse.cdt.managedbuilder.core.GCCBuiltinSpecsDetectorMinGW" keep-relative-paths="false" name="CDT GCC Built-in Compiler Settings MinGW" parameter="${COMMAND} ${FLAGS} -E -P -v -dD "${INPUTS}"" prefer-non-shared="true"> + + <language-scope id="org.eclipse.cdt.core.gcc"/> + + <language-scope id="org.eclipse.cdt.core.g++"/> + + </provider> + + </extension> + + </configuration> + +</project> diff --git a/cairo.h b/cairo.h deleted file mode 100644 index 136c5dbf2de1d6df9c62e2b3184d55b205287710..0000000000000000000000000000000000000000 --- a/cairo.h +++ /dev/null @@ -1,2684 +0,0 @@ -/* cairo - a vector graphics library with display and print output - * - * Copyright © 2002 University of Southern California - * Copyright © 2005 Red Hat, Inc. - * - * This library is free software; you can redistribute it and/or - * modify it either under the terms of the GNU Lesser General Public - * License version 2.1 as published by the Free Software Foundation - * (the "LGPL") or, at your option, under the terms of the Mozilla - * Public License Version 1.1 (the "MPL"). If you do not alter this - * notice, a recipient may use your version of this file under either - * the MPL or the LGPL. - * - * You should have received a copy of the LGPL along with this library - * in the file COPYING-LGPL-2.1; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Suite 500, Boston, MA 02110-1335, USA - * You should have received a copy of the MPL along with this library - * in the file COPYING-MPL-1.1 - * - * The contents of this file are subject to the Mozilla Public License - * Version 1.1 (the "License"); you may not use this file except in - * compliance with the License. You may obtain a copy of the License at - * http://www.mozilla.org/MPL/ - * - * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY - * OF ANY KIND, either express or implied. See the LGPL or the MPL for - * the specific language governing rights and limitations. - * - * The Original Code is the cairo graphics library. - * - * The Initial Developer of the Original Code is University of Southern - * California. - * - * Contributor(s): - * Carl D. Worth <cworth@cworth.org> - */ - -#ifndef CAIRO_H -#define CAIRO_H - -#include "cairo-version.h" -#include "cairo-features.h" -#include "cairo-deprecated.h" - -#ifdef __cplusplus -# define CAIRO_BEGIN_DECLS extern "C" { -# define CAIRO_END_DECLS } -#else -# define CAIRO_BEGIN_DECLS -# define CAIRO_END_DECLS -#endif - -#ifndef cairo_public -# if defined (_MSC_VER) && ! defined (CAIRO_WIN32_STATIC_BUILD) -# define cairo_public __declspec(dllimport) -# else -# define cairo_public -# endif -#endif - -CAIRO_BEGIN_DECLS - -#define CAIRO_VERSION_ENCODE(major, minor, micro) ( \ - ((major) * 10000) \ - + ((minor) * 100) \ - + ((micro) * 1)) - -#define CAIRO_VERSION CAIRO_VERSION_ENCODE( \ - CAIRO_VERSION_MAJOR, \ - CAIRO_VERSION_MINOR, \ - CAIRO_VERSION_MICRO) - - -#define CAIRO_VERSION_STRINGIZE_(major, minor, micro) \ - #major"."#minor"."#micro -#define CAIRO_VERSION_STRINGIZE(major, minor, micro) \ - CAIRO_VERSION_STRINGIZE_(major, minor, micro) - -#define CAIRO_VERSION_STRING CAIRO_VERSION_STRINGIZE( \ - CAIRO_VERSION_MAJOR, \ - CAIRO_VERSION_MINOR, \ - CAIRO_VERSION_MICRO) - - -cairo_public int -cairo_version (void); - -cairo_public const char* -cairo_version_string (void); - -/** - * cairo_bool_t: - * - * #cairo_bool_t is used for boolean values. Returns of type - * #cairo_bool_t will always be either 0 or 1, but testing against - * these values explicitly is not encouraged; just use the - * value as a boolean condition. - * - * <informalexample><programlisting> - * if (cairo_in_stroke (cr, x, y)) { - * /<!-- -->* do something *<!-- -->/ - * } - * </programlisting></informalexample> - **/ -typedef int cairo_bool_t; - -/** - * cairo_t: - * - * A #cairo_t contains the current state of the rendering device, - * including coordinates of yet to be drawn shapes. - * - * Cairo contexts, as #cairo_t objects are named, are central to - * cairo and all drawing with cairo is always done to a #cairo_t - * object. - * - * Memory management of #cairo_t is done with - * cairo_reference() and cairo_destroy(). - **/ -typedef struct _cairo cairo_t; - -/** - * cairo_surface_t: - * - * A #cairo_surface_t represents an image, either as the destination - * of a drawing operation or as source when drawing onto another - * surface. To draw to a #cairo_surface_t, create a cairo context - * with the surface as the target, using cairo_create(). - * - * There are different subtypes of #cairo_surface_t for - * different drawing backends; for example, cairo_image_surface_create() - * creates a bitmap image in memory. - * The type of a surface can be queried with cairo_surface_get_type(). - * - * The initial contents of a surface after creation depend upon the manner - * of its creation. If cairo creates the surface and backing storage for - * the user, it will be initially cleared; for example, - * cairo_image_surface_create() and cairo_surface_create_similar(). - * Alternatively, if the user passes in a reference to some backing storage - * and asks cairo to wrap that in a #cairo_surface_t, then the contents are - * not modified; for example, cairo_image_surface_create_for_data() and - * cairo_xlib_surface_create(). - * - * Memory management of #cairo_surface_t is done with - * cairo_surface_reference() and cairo_surface_destroy(). - **/ -typedef struct _cairo_surface cairo_surface_t; - -/** - * cairo_device_t: - * - * A #cairo_device_t represents the driver interface for drawing - * operations to a #cairo_surface_t. There are different subtypes of - * #cairo_device_t for different drawing backends; for example, - * cairo_xcb_device_create() creates a device that wraps the connection - * to an X Windows System using the XCB library. - * - * The type of a device can be queried with cairo_device_get_type(). - * - * Memory management of #cairo_device_t is done with - * cairo_device_reference() and cairo_device_destroy(). - * - * Since: 1.10 - **/ -typedef struct _cairo_device cairo_device_t; - -/** - * cairo_matrix_t: - * @xx: xx component of the affine transformation - * @yx: yx component of the affine transformation - * @xy: xy component of the affine transformation - * @yy: yy component of the affine transformation - * @x0: X translation component of the affine transformation - * @y0: Y translation component of the affine transformation - * - * A #cairo_matrix_t holds an affine transformation, such as a scale, - * rotation, shear, or a combination of those. The transformation of - * a point (x, y) is given by: - * <programlisting> - * x_new = xx * x + xy * y + x0; - * y_new = yx * x + yy * y + y0; - * </programlisting> - **/ -typedef struct _cairo_matrix { - double xx; double yx; - double xy; double yy; - double x0; double y0; -} cairo_matrix_t; - -/** - * cairo_pattern_t: - * - * A #cairo_pattern_t represents a source when drawing onto a - * surface. There are different subtypes of #cairo_pattern_t, - * for different types of sources; for example, - * cairo_pattern_create_rgb() creates a pattern for a solid - * opaque color. - * - * Other than various cairo_pattern_create_<emphasis>type</emphasis>() - * functions, some of the pattern types can be implicitly created - * using various cairo_set_source_<emphasis>type</emphasis>() functions; - * for example cairo_set_source_rgb(). - * - * The type of a pattern can be queried with cairo_pattern_get_type(). - * - * Memory management of #cairo_pattern_t is done with - * cairo_pattern_reference() and cairo_pattern_destroy(). - **/ -typedef struct _cairo_pattern cairo_pattern_t; - -/** - * cairo_destroy_func_t: - * @data: The data element being destroyed. - * - * #cairo_destroy_func_t the type of function which is called when a - * data element is destroyed. It is passed the pointer to the data - * element and should free any memory and resources allocated for it. - **/ -typedef void (*cairo_destroy_func_t) (void *data); - -/** - * cairo_user_data_key_t: - * @unused: not used; ignore. - * - * #cairo_user_data_key_t is used for attaching user data to cairo - * data structures. The actual contents of the struct is never used, - * and there is no need to initialize the object; only the unique - * address of a #cairo_data_key_t object is used. Typically, you - * would just use the address of a static #cairo_data_key_t object. - **/ -typedef struct _cairo_user_data_key { - int unused; -} cairo_user_data_key_t; - -/** - * cairo_status_t: - * @CAIRO_STATUS_SUCCESS: no error has occurred - * @CAIRO_STATUS_NO_MEMORY: out of memory - * @CAIRO_STATUS_INVALID_RESTORE: cairo_restore() called without matching cairo_save() - * @CAIRO_STATUS_INVALID_POP_GROUP: no saved group to pop, i.e. cairo_pop_group() without matching cairo_push_group() - * @CAIRO_STATUS_NO_CURRENT_POINT: no current point defined - * @CAIRO_STATUS_INVALID_MATRIX: invalid matrix (not invertible) - * @CAIRO_STATUS_INVALID_STATUS: invalid value for an input #cairo_status_t - * @CAIRO_STATUS_NULL_POINTER: %NULL pointer - * @CAIRO_STATUS_INVALID_STRING: input string not valid UTF-8 - * @CAIRO_STATUS_INVALID_PATH_DATA: input path data not valid - * @CAIRO_STATUS_READ_ERROR: error while reading from input stream - * @CAIRO_STATUS_WRITE_ERROR: error while writing to output stream - * @CAIRO_STATUS_SURFACE_FINISHED: target surface has been finished - * @CAIRO_STATUS_SURFACE_TYPE_MISMATCH: the surface type is not appropriate for the operation - * @CAIRO_STATUS_PATTERN_TYPE_MISMATCH: the pattern type is not appropriate for the operation - * @CAIRO_STATUS_INVALID_CONTENT: invalid value for an input #cairo_content_t - * @CAIRO_STATUS_INVALID_FORMAT: invalid value for an input #cairo_format_t - * @CAIRO_STATUS_INVALID_VISUAL: invalid value for an input Visual* - * @CAIRO_STATUS_FILE_NOT_FOUND: file not found - * @CAIRO_STATUS_INVALID_DASH: invalid value for a dash setting - * @CAIRO_STATUS_INVALID_DSC_COMMENT: invalid value for a DSC comment (Since 1.2) - * @CAIRO_STATUS_INVALID_INDEX: invalid index passed to getter (Since 1.4) - * @CAIRO_STATUS_CLIP_NOT_REPRESENTABLE: clip region not representable in desired format (Since 1.4) - * @CAIRO_STATUS_TEMP_FILE_ERROR: error creating or writing to a temporary file (Since 1.6) - * @CAIRO_STATUS_INVALID_STRIDE: invalid value for stride (Since 1.6) - * @CAIRO_STATUS_FONT_TYPE_MISMATCH: the font type is not appropriate for the operation (Since 1.8) - * @CAIRO_STATUS_USER_FONT_IMMUTABLE: the user-font is immutable (Since 1.8) - * @CAIRO_STATUS_USER_FONT_ERROR: error occurred in a user-font callback function (Since 1.8) - * @CAIRO_STATUS_NEGATIVE_COUNT: negative number used where it is not allowed (Since 1.8) - * @CAIRO_STATUS_INVALID_CLUSTERS: input clusters do not represent the accompanying text and glyph array (Since 1.8) - * @CAIRO_STATUS_INVALID_SLANT: invalid value for an input #cairo_font_slant_t (Since 1.8) - * @CAIRO_STATUS_INVALID_WEIGHT: invalid value for an input #cairo_font_weight_t (Since 1.8) - * @CAIRO_STATUS_INVALID_SIZE: invalid value (typically too big) for the size of the input (surface, pattern, etc.) (Since 1.10) - * @CAIRO_STATUS_USER_FONT_NOT_IMPLEMENTED: user-font method not implemented (Since 1.10) - * @CAIRO_STATUS_DEVICE_TYPE_MISMATCH: the device type is not appropriate for the operation (Since 1.10) - * @CAIRO_STATUS_DEVICE_ERROR: an operation to the device caused an unspecified error (Since 1.10) - * @CAIRO_STATUS_LAST_STATUS: this is a special value indicating the number of - * status values defined in this enumeration. When using this value, note - * that the version of cairo at run-time may have additional status values - * defined than the value of this symbol at compile-time. (Since 1.10) - * - * #cairo_status_t is used to indicate errors that can occur when - * using Cairo. In some cases it is returned directly by functions. - * but when using #cairo_t, the last error, if any, is stored in - * the context and can be retrieved with cairo_status(). - * - * New entries may be added in future versions. Use cairo_status_to_string() - * to get a human-readable representation of an error message. - **/ -typedef enum _cairo_status { - CAIRO_STATUS_SUCCESS = 0, - - CAIRO_STATUS_NO_MEMORY, - CAIRO_STATUS_INVALID_RESTORE, - CAIRO_STATUS_INVALID_POP_GROUP, - CAIRO_STATUS_NO_CURRENT_POINT, - CAIRO_STATUS_INVALID_MATRIX, - CAIRO_STATUS_INVALID_STATUS, - CAIRO_STATUS_NULL_POINTER, - CAIRO_STATUS_INVALID_STRING, - CAIRO_STATUS_INVALID_PATH_DATA, - CAIRO_STATUS_READ_ERROR, - CAIRO_STATUS_WRITE_ERROR, - CAIRO_STATUS_SURFACE_FINISHED, - CAIRO_STATUS_SURFACE_TYPE_MISMATCH, - CAIRO_STATUS_PATTERN_TYPE_MISMATCH, - CAIRO_STATUS_INVALID_CONTENT, - CAIRO_STATUS_INVALID_FORMAT, - CAIRO_STATUS_INVALID_VISUAL, - CAIRO_STATUS_FILE_NOT_FOUND, - CAIRO_STATUS_INVALID_DASH, - CAIRO_STATUS_INVALID_DSC_COMMENT, - CAIRO_STATUS_INVALID_INDEX, - CAIRO_STATUS_CLIP_NOT_REPRESENTABLE, - CAIRO_STATUS_TEMP_FILE_ERROR, - CAIRO_STATUS_INVALID_STRIDE, - CAIRO_STATUS_FONT_TYPE_MISMATCH, - CAIRO_STATUS_USER_FONT_IMMUTABLE, - CAIRO_STATUS_USER_FONT_ERROR, - CAIRO_STATUS_NEGATIVE_COUNT, - CAIRO_STATUS_INVALID_CLUSTERS, - CAIRO_STATUS_INVALID_SLANT, - CAIRO_STATUS_INVALID_WEIGHT, - CAIRO_STATUS_INVALID_SIZE, - CAIRO_STATUS_USER_FONT_NOT_IMPLEMENTED, - CAIRO_STATUS_DEVICE_TYPE_MISMATCH, - CAIRO_STATUS_DEVICE_ERROR, - - CAIRO_STATUS_LAST_STATUS -} cairo_status_t; - -/** - * cairo_content_t: - * @CAIRO_CONTENT_COLOR: The surface will hold color content only. - * @CAIRO_CONTENT_ALPHA: The surface will hold alpha content only. - * @CAIRO_CONTENT_COLOR_ALPHA: The surface will hold color and alpha content. - * - * #cairo_content_t is used to describe the content that a surface will - * contain, whether color information, alpha information (translucence - * vs. opacity), or both. - * - * Note: The large values here are designed to keep #cairo_content_t - * values distinct from #cairo_format_t values so that the - * implementation can detect the error if users confuse the two types. - **/ -typedef enum _cairo_content { - CAIRO_CONTENT_COLOR = 0x1000, - CAIRO_CONTENT_ALPHA = 0x2000, - CAIRO_CONTENT_COLOR_ALPHA = 0x3000 -} cairo_content_t; - -/** - * cairo_write_func_t: - * @closure: the output closure - * @data: the buffer containing the data to write - * @length: the amount of data to write - * - * #cairo_write_func_t is the type of function which is called when a - * backend needs to write data to an output stream. It is passed the - * closure which was specified by the user at the time the write - * function was registered, the data to write and the length of the - * data in bytes. The write function should return - * %CAIRO_STATUS_SUCCESS if all the data was successfully written, - * %CAIRO_STATUS_WRITE_ERROR otherwise. - * - * Returns: the status code of the write operation - **/ -typedef cairo_status_t (*cairo_write_func_t) (void *closure, - const unsigned char *data, - unsigned int length); - -/** - * cairo_read_func_t: - * @closure: the input closure - * @data: the buffer into which to read the data - * @length: the amount of data to read - * - * #cairo_read_func_t is the type of function which is called when a - * backend needs to read data from an input stream. It is passed the - * closure which was specified by the user at the time the read - * function was registered, the buffer to read the data into and the - * length of the data in bytes. The read function should return - * %CAIRO_STATUS_SUCCESS if all the data was successfully read, - * %CAIRO_STATUS_READ_ERROR otherwise. - * - * Returns: the status code of the read operation - **/ -typedef cairo_status_t (*cairo_read_func_t) (void *closure, - unsigned char *data, - unsigned int length); - -/* Functions for manipulating state objects */ -cairo_public cairo_t * -cairo_create (cairo_surface_t *target); - -cairo_public cairo_t * -cairo_reference (cairo_t *cr); - -cairo_public void -cairo_destroy (cairo_t *cr); - -cairo_public unsigned int -cairo_get_reference_count (cairo_t *cr); - -cairo_public void * -cairo_get_user_data (cairo_t *cr, - const cairo_user_data_key_t *key); - -cairo_public cairo_status_t -cairo_set_user_data (cairo_t *cr, - const cairo_user_data_key_t *key, - void *user_data, - cairo_destroy_func_t destroy); - -cairo_public void -cairo_save (cairo_t *cr); - -cairo_public void -cairo_restore (cairo_t *cr); - -cairo_public void -cairo_push_group (cairo_t *cr); - -cairo_public void -cairo_push_group_with_content (cairo_t *cr, cairo_content_t content); - -cairo_public cairo_pattern_t * -cairo_pop_group (cairo_t *cr); - -cairo_public void -cairo_pop_group_to_source (cairo_t *cr); - -/* Modify state */ - -/** - * cairo_operator_t: - * @CAIRO_OPERATOR_CLEAR: clear destination layer (bounded) - * @CAIRO_OPERATOR_SOURCE: replace destination layer (bounded) - * @CAIRO_OPERATOR_OVER: draw source layer on top of destination layer - * (bounded) - * @CAIRO_OPERATOR_IN: draw source where there was destination content - * (unbounded) - * @CAIRO_OPERATOR_OUT: draw source where there was no destination - * content (unbounded) - * @CAIRO_OPERATOR_ATOP: draw source on top of destination content and - * only there - * @CAIRO_OPERATOR_DEST: ignore the source - * @CAIRO_OPERATOR_DEST_OVER: draw destination on top of source - * @CAIRO_OPERATOR_DEST_IN: leave destination only where there was - * source content (unbounded) - * @CAIRO_OPERATOR_DEST_OUT: leave destination only where there was no - * source content - * @CAIRO_OPERATOR_DEST_ATOP: leave destination on top of source content - * and only there (unbounded) - * @CAIRO_OPERATOR_XOR: source and destination are shown where there is only - * one of them - * @CAIRO_OPERATOR_ADD: source and destination layers are accumulated - * @CAIRO_OPERATOR_SATURATE: like over, but assuming source and dest are - * disjoint geometries - * @CAIRO_OPERATOR_MULTIPLY: source and destination layers are multiplied. - * This causes the result to be at least as dark as the darker inputs. - * @CAIRO_OPERATOR_SCREEN: source and destination are complemented and - * multiplied. This causes the result to be at least as light as the lighter - * inputs. - * @CAIRO_OPERATOR_OVERLAY: multiplies or screens, depending on the - * lightness of the destination color. - * @CAIRO_OPERATOR_DARKEN: replaces the destination with the source if it - * is darker, otherwise keeps the source. - * @CAIRO_OPERATOR_LIGHTEN: replaces the destination with the source if it - * is lighter, otherwise keeps the source. - * @CAIRO_OPERATOR_COLOR_DODGE: brightens the destination color to reflect - * the source color. - * @CAIRO_OPERATOR_COLOR_BURN: darkens the destination color to reflect - * the source color. - * @CAIRO_OPERATOR_HARD_LIGHT: Multiplies or screens, dependant on source - * color. - * @CAIRO_OPERATOR_SOFT_LIGHT: Darkens or lightens, dependant on source - * color. - * @CAIRO_OPERATOR_DIFFERENCE: Takes the difference of the source and - * destination color. - * @CAIRO_OPERATOR_EXCLUSION: Produces an effect similar to difference, but - * with lower contrast. - * @CAIRO_OPERATOR_HSL_HUE: Creates a color with the hue of the source - * and the saturation and luminosity of the target. - * @CAIRO_OPERATOR_HSL_SATURATION: Creates a color with the saturation - * of the source and the hue and luminosity of the target. Painting with - * this mode onto a gray area prduces no change. - * @CAIRO_OPERATOR_HSL_COLOR: Creates a color with the hue and saturation - * of the source and the luminosity of the target. This preserves the gray - * levels of the target and is useful for coloring monochrome images or - * tinting color images. - * @CAIRO_OPERATOR_HSL_LUMINOSITY: Creates a color with the luminosity of - * the source and the hue and saturation of the target. This produces an - * inverse effect to @CAIRO_OPERATOR_HSL_COLOR. - * - * #cairo_operator_t is used to set the compositing operator for all cairo - * drawing operations. - * - * The default operator is %CAIRO_OPERATOR_OVER. - * - * The operators marked as <firstterm>unbounded</firstterm> modify their - * destination even outside of the mask layer (that is, their effect is not - * bound by the mask layer). However, their effect can still be limited by - * way of clipping. - * - * To keep things simple, the operator descriptions here - * document the behavior for when both source and destination are either fully - * transparent or fully opaque. The actual implementation works for - * translucent layers too. - * For a more detailed explanation of the effects of each operator, including - * the mathematical definitions, see - * <ulink url="http://cairographics.org/operators/">http://cairographics.org/operators/</ulink>. - **/ -typedef enum _cairo_operator { - CAIRO_OPERATOR_CLEAR, - - CAIRO_OPERATOR_SOURCE, - CAIRO_OPERATOR_OVER, - CAIRO_OPERATOR_IN, - CAIRO_OPERATOR_OUT, - CAIRO_OPERATOR_ATOP, - - CAIRO_OPERATOR_DEST, - CAIRO_OPERATOR_DEST_OVER, - CAIRO_OPERATOR_DEST_IN, - CAIRO_OPERATOR_DEST_OUT, - CAIRO_OPERATOR_DEST_ATOP, - - CAIRO_OPERATOR_XOR, - CAIRO_OPERATOR_ADD, - CAIRO_OPERATOR_SATURATE, - - CAIRO_OPERATOR_MULTIPLY, - CAIRO_OPERATOR_SCREEN, - CAIRO_OPERATOR_OVERLAY, - CAIRO_OPERATOR_DARKEN, - CAIRO_OPERATOR_LIGHTEN, - CAIRO_OPERATOR_COLOR_DODGE, - CAIRO_OPERATOR_COLOR_BURN, - CAIRO_OPERATOR_HARD_LIGHT, - CAIRO_OPERATOR_SOFT_LIGHT, - CAIRO_OPERATOR_DIFFERENCE, - CAIRO_OPERATOR_EXCLUSION, - CAIRO_OPERATOR_HSL_HUE, - CAIRO_OPERATOR_HSL_SATURATION, - CAIRO_OPERATOR_HSL_COLOR, - CAIRO_OPERATOR_HSL_LUMINOSITY -} cairo_operator_t; - -cairo_public void -cairo_set_operator (cairo_t *cr, cairo_operator_t op); - -cairo_public void -cairo_set_source (cairo_t *cr, cairo_pattern_t *source); - -cairo_public void -cairo_set_source_rgb (cairo_t *cr, double red, double green, double blue); - -cairo_public void -cairo_set_source_rgba (cairo_t *cr, - double red, double green, double blue, - double alpha); - -cairo_public void -cairo_set_source_surface (cairo_t *cr, - cairo_surface_t *surface, - double x, - double y); - -cairo_public void -cairo_set_tolerance (cairo_t *cr, double tolerance); - -/** - * cairo_antialias_t: - * @CAIRO_ANTIALIAS_DEFAULT: Use the default antialiasing for - * the subsystem and target device - * @CAIRO_ANTIALIAS_NONE: Use a bilevel alpha mask - * @CAIRO_ANTIALIAS_GRAY: Perform single-color antialiasing (using - * shades of gray for black text on a white background, for example). - * @CAIRO_ANTIALIAS_SUBPIXEL: Perform antialiasing by taking - * advantage of the order of subpixel elements on devices - * such as LCD panels - * - * Specifies the type of antialiasing to do when rendering text or shapes. - **/ -typedef enum _cairo_antialias { - CAIRO_ANTIALIAS_DEFAULT, - CAIRO_ANTIALIAS_NONE, - CAIRO_ANTIALIAS_GRAY, - CAIRO_ANTIALIAS_SUBPIXEL -} cairo_antialias_t; - -cairo_public void -cairo_set_antialias (cairo_t *cr, cairo_antialias_t antialias); - -/** - * cairo_fill_rule_t: - * @CAIRO_FILL_RULE_WINDING: If the path crosses the ray from - * left-to-right, counts +1. If the path crosses the ray - * from right to left, counts -1. (Left and right are determined - * from the perspective of looking along the ray from the starting - * point.) If the total count is non-zero, the point will be filled. - * @CAIRO_FILL_RULE_EVEN_ODD: Counts the total number of - * intersections, without regard to the orientation of the contour. If - * the total number of intersections is odd, the point will be - * filled. - * - * #cairo_fill_rule_t is used to select how paths are filled. For both - * fill rules, whether or not a point is included in the fill is - * determined by taking a ray from that point to infinity and looking - * at intersections with the path. The ray can be in any direction, - * as long as it doesn't pass through the end point of a segment - * or have a tricky intersection such as intersecting tangent to the path. - * (Note that filling is not actually implemented in this way. This - * is just a description of the rule that is applied.) - * - * The default fill rule is %CAIRO_FILL_RULE_WINDING. - * - * New entries may be added in future versions. - **/ -typedef enum _cairo_fill_rule { - CAIRO_FILL_RULE_WINDING, - CAIRO_FILL_RULE_EVEN_ODD -} cairo_fill_rule_t; - -cairo_public void -cairo_set_fill_rule (cairo_t *cr, cairo_fill_rule_t fill_rule); - -cairo_public void -cairo_set_line_width (cairo_t *cr, double width); - -/** - * cairo_line_cap_t: - * @CAIRO_LINE_CAP_BUTT: start(stop) the line exactly at the start(end) point - * @CAIRO_LINE_CAP_ROUND: use a round ending, the center of the circle is the end point - * @CAIRO_LINE_CAP_SQUARE: use squared ending, the center of the square is the end point - * - * Specifies how to render the endpoints of the path when stroking. - * - * The default line cap style is %CAIRO_LINE_CAP_BUTT. - **/ -typedef enum _cairo_line_cap { - CAIRO_LINE_CAP_BUTT, - CAIRO_LINE_CAP_ROUND, - CAIRO_LINE_CAP_SQUARE -} cairo_line_cap_t; - -cairo_public void -cairo_set_line_cap (cairo_t *cr, cairo_line_cap_t line_cap); - -/** - * cairo_line_join_t: - * @CAIRO_LINE_JOIN_MITER: use a sharp (angled) corner, see - * cairo_set_miter_limit() - * @CAIRO_LINE_JOIN_ROUND: use a rounded join, the center of the circle is the - * joint point - * @CAIRO_LINE_JOIN_BEVEL: use a cut-off join, the join is cut off at half - * the line width from the joint point - * - * Specifies how to render the junction of two lines when stroking. - * - * The default line join style is %CAIRO_LINE_JOIN_MITER. - **/ -typedef enum _cairo_line_join { - CAIRO_LINE_JOIN_MITER, - CAIRO_LINE_JOIN_ROUND, - CAIRO_LINE_JOIN_BEVEL -} cairo_line_join_t; - -cairo_public void -cairo_set_line_join (cairo_t *cr, cairo_line_join_t line_join); - -cairo_public void -cairo_set_dash (cairo_t *cr, - const double *dashes, - int num_dashes, - double offset); - -cairo_public void -cairo_set_miter_limit (cairo_t *cr, double limit); - -cairo_public void -cairo_translate (cairo_t *cr, double tx, double ty); - -cairo_public void -cairo_scale (cairo_t *cr, double sx, double sy); - -cairo_public void -cairo_rotate (cairo_t *cr, double angle); - -cairo_public void -cairo_transform (cairo_t *cr, - const cairo_matrix_t *matrix); - -cairo_public void -cairo_set_matrix (cairo_t *cr, - const cairo_matrix_t *matrix); - -cairo_public void -cairo_identity_matrix (cairo_t *cr); - -cairo_public void -cairo_user_to_device (cairo_t *cr, double *x, double *y); - -cairo_public void -cairo_user_to_device_distance (cairo_t *cr, double *dx, double *dy); - -cairo_public void -cairo_device_to_user (cairo_t *cr, double *x, double *y); - -cairo_public void -cairo_device_to_user_distance (cairo_t *cr, double *dx, double *dy); - -/* Path creation functions */ -cairo_public void -cairo_new_path (cairo_t *cr); - -cairo_public void -cairo_move_to (cairo_t *cr, double x, double y); - -cairo_public void -cairo_new_sub_path (cairo_t *cr); - -cairo_public void -cairo_line_to (cairo_t *cr, double x, double y); - -cairo_public void -cairo_curve_to (cairo_t *cr, - double x1, double y1, - double x2, double y2, - double x3, double y3); - -cairo_public void -cairo_arc (cairo_t *cr, - double xc, double yc, - double radius, - double angle1, double angle2); - -cairo_public void -cairo_arc_negative (cairo_t *cr, - double xc, double yc, - double radius, - double angle1, double angle2); - -/* XXX: NYI -cairo_public void -cairo_arc_to (cairo_t *cr, - double x1, double y1, - double x2, double y2, - double radius); -*/ - -cairo_public void -cairo_rel_move_to (cairo_t *cr, double dx, double dy); - -cairo_public void -cairo_rel_line_to (cairo_t *cr, double dx, double dy); - -cairo_public void -cairo_rel_curve_to (cairo_t *cr, - double dx1, double dy1, - double dx2, double dy2, - double dx3, double dy3); - -cairo_public void -cairo_rectangle (cairo_t *cr, - double x, double y, - double width, double height); - -/* XXX: NYI -cairo_public void -cairo_stroke_to_path (cairo_t *cr); -*/ - -cairo_public void -cairo_close_path (cairo_t *cr); - -cairo_public void -cairo_path_extents (cairo_t *cr, - double *x1, double *y1, - double *x2, double *y2); - -/* Painting functions */ -cairo_public void -cairo_paint (cairo_t *cr); - -cairo_public void -cairo_paint_with_alpha (cairo_t *cr, - double alpha); - -cairo_public void -cairo_mask (cairo_t *cr, - cairo_pattern_t *pattern); - -cairo_public void -cairo_mask_surface (cairo_t *cr, - cairo_surface_t *surface, - double surface_x, - double surface_y); - -cairo_public void -cairo_stroke (cairo_t *cr); - -cairo_public void -cairo_stroke_preserve (cairo_t *cr); - -cairo_public void -cairo_fill (cairo_t *cr); - -cairo_public void -cairo_fill_preserve (cairo_t *cr); - -cairo_public void -cairo_copy_page (cairo_t *cr); - -cairo_public void -cairo_show_page (cairo_t *cr); - -/* Insideness testing */ -cairo_public cairo_bool_t -cairo_in_stroke (cairo_t *cr, double x, double y); - -cairo_public cairo_bool_t -cairo_in_fill (cairo_t *cr, double x, double y); - -cairo_public cairo_bool_t -cairo_in_clip (cairo_t *cr, double x, double y); - -/* Rectangular extents */ -cairo_public void -cairo_stroke_extents (cairo_t *cr, - double *x1, double *y1, - double *x2, double *y2); - -cairo_public void -cairo_fill_extents (cairo_t *cr, - double *x1, double *y1, - double *x2, double *y2); - -/* Clipping */ -cairo_public void -cairo_reset_clip (cairo_t *cr); - -cairo_public void -cairo_clip (cairo_t *cr); - -cairo_public void -cairo_clip_preserve (cairo_t *cr); - -cairo_public void -cairo_clip_extents (cairo_t *cr, - double *x1, double *y1, - double *x2, double *y2); - -/** - * cairo_rectangle_t: - * @x: X coordinate of the left side of the rectangle - * @y: Y coordinate of the the top side of the rectangle - * @width: width of the rectangle - * @height: height of the rectangle - * - * A data structure for holding a rectangle. - * - * Since: 1.4 - **/ -typedef struct _cairo_rectangle { - double x, y, width, height; -} cairo_rectangle_t; - -/** - * cairo_rectangle_list_t: - * @status: Error status of the rectangle list - * @rectangles: Array containing the rectangles - * @num_rectangles: Number of rectangles in this list - * - * A data structure for holding a dynamically allocated - * array of rectangles. - * - * Since: 1.4 - **/ -typedef struct _cairo_rectangle_list { - cairo_status_t status; - cairo_rectangle_t *rectangles; - int num_rectangles; -} cairo_rectangle_list_t; - -cairo_public cairo_rectangle_list_t * -cairo_copy_clip_rectangle_list (cairo_t *cr); - -cairo_public void -cairo_rectangle_list_destroy (cairo_rectangle_list_t *rectangle_list); - -/* Font/Text functions */ - -/** - * cairo_scaled_font_t: - * - * A #cairo_scaled_font_t is a font scaled to a particular size and device - * resolution. A #cairo_scaled_font_t is most useful for low-level font - * usage where a library or application wants to cache a reference - * to a scaled font to speed up the computation of metrics. - * - * There are various types of scaled fonts, depending on the - * <firstterm>font backend</firstterm> they use. The type of a - * scaled font can be queried using cairo_scaled_font_get_type(). - * - * Memory management of #cairo_scaled_font_t is done with - * cairo_scaled_font_reference() and cairo_scaled_font_destroy(). - **/ -typedef struct _cairo_scaled_font cairo_scaled_font_t; - -/** - * cairo_font_face_t: - * - * A #cairo_font_face_t specifies all aspects of a font other - * than the size or font matrix (a font matrix is used to distort - * a font by sheering it or scaling it unequally in the two - * directions) . A font face can be set on a #cairo_t by using - * cairo_set_font_face(); the size and font matrix are set with - * cairo_set_font_size() and cairo_set_font_matrix(). - * - * There are various types of font faces, depending on the - * <firstterm>font backend</firstterm> they use. The type of a - * font face can be queried using cairo_font_face_get_type(). - * - * Memory management of #cairo_font_face_t is done with - * cairo_font_face_reference() and cairo_font_face_destroy(). - **/ -typedef struct _cairo_font_face cairo_font_face_t; - -/** - * cairo_glyph_t: - * @index: glyph index in the font. The exact interpretation of the - * glyph index depends on the font technology being used. - * @x: the offset in the X direction between the origin used for - * drawing or measuring the string and the origin of this glyph. - * @y: the offset in the Y direction between the origin used for - * drawing or measuring the string and the origin of this glyph. - * - * The #cairo_glyph_t structure holds information about a single glyph - * when drawing or measuring text. A font is (in simple terms) a - * collection of shapes used to draw text. A glyph is one of these - * shapes. There can be multiple glyphs for a single character - * (alternates to be used in different contexts, for example), or a - * glyph can be a <firstterm>ligature</firstterm> of multiple - * characters. Cairo doesn't expose any way of converting input text - * into glyphs, so in order to use the Cairo interfaces that take - * arrays of glyphs, you must directly access the appropriate - * underlying font system. - * - * Note that the offsets given by @x and @y are not cumulative. When - * drawing or measuring text, each glyph is individually positioned - * with respect to the overall origin - **/ -typedef struct { - unsigned long index; - double x; - double y; -} cairo_glyph_t; - -cairo_public cairo_glyph_t * -cairo_glyph_allocate (int num_glyphs); - -cairo_public void -cairo_glyph_free (cairo_glyph_t *glyphs); - -/** - * cairo_text_cluster_t: - * @num_bytes: the number of bytes of UTF-8 text covered by cluster - * @num_glyphs: the number of glyphs covered by cluster - * - * The #cairo_text_cluster_t structure holds information about a single - * <firstterm>text cluster</firstterm>. A text cluster is a minimal - * mapping of some glyphs corresponding to some UTF-8 text. - * - * For a cluster to be valid, both @num_bytes and @num_glyphs should - * be non-negative, and at least one should be non-zero. - * Note that clusters with zero glyphs are not as well supported as - * normal clusters. For example, PDF rendering applications typically - * ignore those clusters when PDF text is being selected. - * - * See cairo_show_text_glyphs() for how clusters are used in advanced - * text operations. - * - * Since: 1.8 - **/ -typedef struct { - int num_bytes; - int num_glyphs; -} cairo_text_cluster_t; - -cairo_public cairo_text_cluster_t * -cairo_text_cluster_allocate (int num_clusters); - -cairo_public void -cairo_text_cluster_free (cairo_text_cluster_t *clusters); - -/** - * cairo_text_cluster_flags_t: - * @CAIRO_TEXT_CLUSTER_FLAG_BACKWARD: The clusters in the cluster array - * map to glyphs in the glyph array from end to start. - * - * Specifies properties of a text cluster mapping. - * - * Since: 1.8 - **/ -typedef enum _cairo_text_cluster_flags { - CAIRO_TEXT_CLUSTER_FLAG_BACKWARD = 0x00000001 -} cairo_text_cluster_flags_t; - -/** - * cairo_text_extents_t: - * @x_bearing: the horizontal distance from the origin to the - * leftmost part of the glyphs as drawn. Positive if the - * glyphs lie entirely to the right of the origin. - * @y_bearing: the vertical distance from the origin to the - * topmost part of the glyphs as drawn. Positive only if the - * glyphs lie completely below the origin; will usually be - * negative. - * @width: width of the glyphs as drawn - * @height: height of the glyphs as drawn - * @x_advance:distance to advance in the X direction - * after drawing these glyphs - * @y_advance: distance to advance in the Y direction - * after drawing these glyphs. Will typically be zero except - * for vertical text layout as found in East-Asian languages. - * - * The #cairo_text_extents_t structure stores the extents of a single - * glyph or a string of glyphs in user-space coordinates. Because text - * extents are in user-space coordinates, they are mostly, but not - * entirely, independent of the current transformation matrix. If you call - * <literal>cairo_scale(cr, 2.0, 2.0)</literal>, text will - * be drawn twice as big, but the reported text extents will not be - * doubled. They will change slightly due to hinting (so you can't - * assume that metrics are independent of the transformation matrix), - * but otherwise will remain unchanged. - **/ -typedef struct { - double x_bearing; - double y_bearing; - double width; - double height; - double x_advance; - double y_advance; -} cairo_text_extents_t; - -/** - * cairo_font_extents_t: - * @ascent: the distance that the font extends above the baseline. - * Note that this is not always exactly equal to the maximum - * of the extents of all the glyphs in the font, but rather - * is picked to express the font designer's intent as to - * how the font should align with elements above it. - * @descent: the distance that the font extends below the baseline. - * This value is positive for typical fonts that include - * portions below the baseline. Note that this is not always - * exactly equal to the maximum of the extents of all the - * glyphs in the font, but rather is picked to express the - * font designer's intent as to how the the font should - * align with elements below it. - * @height: the recommended vertical distance between baselines when - * setting consecutive lines of text with the font. This - * is greater than @ascent+@descent by a - * quantity known as the <firstterm>line spacing</firstterm> - * or <firstterm>external leading</firstterm>. When space - * is at a premium, most fonts can be set with only - * a distance of @ascent+@descent between lines. - * @max_x_advance: the maximum distance in the X direction that - * the the origin is advanced for any glyph in the font. - * @max_y_advance: the maximum distance in the Y direction that - * the the origin is advanced for any glyph in the font. - * this will be zero for normal fonts used for horizontal - * writing. (The scripts of East Asia are sometimes written - * vertically.) - * - * The #cairo_font_extents_t structure stores metric information for - * a font. Values are given in the current user-space coordinate - * system. - * - * Because font metrics are in user-space coordinates, they are - * mostly, but not entirely, independent of the current transformation - * matrix. If you call <literal>cairo_scale(cr, 2.0, 2.0)</literal>, - * text will be drawn twice as big, but the reported text extents will - * not be doubled. They will change slightly due to hinting (so you - * can't assume that metrics are independent of the transformation - * matrix), but otherwise will remain unchanged. - **/ -typedef struct { - double ascent; - double descent; - double height; - double max_x_advance; - double max_y_advance; -} cairo_font_extents_t; - -/** - * cairo_font_slant_t: - * @CAIRO_FONT_SLANT_NORMAL: Upright font style - * @CAIRO_FONT_SLANT_ITALIC: Italic font style - * @CAIRO_FONT_SLANT_OBLIQUE: Oblique font style - * - * Specifies variants of a font face based on their slant. - **/ -typedef enum _cairo_font_slant { - CAIRO_FONT_SLANT_NORMAL, - CAIRO_FONT_SLANT_ITALIC, - CAIRO_FONT_SLANT_OBLIQUE -} cairo_font_slant_t; - -/** - * cairo_font_weight_t: - * @CAIRO_FONT_WEIGHT_NORMAL: Normal font weight - * @CAIRO_FONT_WEIGHT_BOLD: Bold font weight - * - * Specifies variants of a font face based on their weight. - **/ -typedef enum _cairo_font_weight { - CAIRO_FONT_WEIGHT_NORMAL, - CAIRO_FONT_WEIGHT_BOLD -} cairo_font_weight_t; - -/** - * cairo_subpixel_order_t: - * @CAIRO_SUBPIXEL_ORDER_DEFAULT: Use the default subpixel order for - * for the target device - * @CAIRO_SUBPIXEL_ORDER_RGB: Subpixel elements are arranged horizontally - * with red at the left - * @CAIRO_SUBPIXEL_ORDER_BGR: Subpixel elements are arranged horizontally - * with blue at the left - * @CAIRO_SUBPIXEL_ORDER_VRGB: Subpixel elements are arranged vertically - * with red at the top - * @CAIRO_SUBPIXEL_ORDER_VBGR: Subpixel elements are arranged vertically - * with blue at the top - * - * The subpixel order specifies the order of color elements within - * each pixel on the display device when rendering with an - * antialiasing mode of %CAIRO_ANTIALIAS_SUBPIXEL. - **/ -typedef enum _cairo_subpixel_order { - CAIRO_SUBPIXEL_ORDER_DEFAULT, - CAIRO_SUBPIXEL_ORDER_RGB, - CAIRO_SUBPIXEL_ORDER_BGR, - CAIRO_SUBPIXEL_ORDER_VRGB, - CAIRO_SUBPIXEL_ORDER_VBGR -} cairo_subpixel_order_t; - -/** - * cairo_hint_style_t: - * @CAIRO_HINT_STYLE_DEFAULT: Use the default hint style for - * font backend and target device - * @CAIRO_HINT_STYLE_NONE: Do not hint outlines - * @CAIRO_HINT_STYLE_SLIGHT: Hint outlines slightly to improve - * contrast while retaining good fidelity to the original - * shapes. - * @CAIRO_HINT_STYLE_MEDIUM: Hint outlines with medium strength - * giving a compromise between fidelity to the original shapes - * and contrast - * @CAIRO_HINT_STYLE_FULL: Hint outlines to maximize contrast - * - * Specifies the type of hinting to do on font outlines. Hinting - * is the process of fitting outlines to the pixel grid in order - * to improve the appearance of the result. Since hinting outlines - * involves distorting them, it also reduces the faithfulness - * to the original outline shapes. Not all of the outline hinting - * styles are supported by all font backends. - * - * New entries may be added in future versions. - **/ -typedef enum _cairo_hint_style { - CAIRO_HINT_STYLE_DEFAULT, - CAIRO_HINT_STYLE_NONE, - CAIRO_HINT_STYLE_SLIGHT, - CAIRO_HINT_STYLE_MEDIUM, - CAIRO_HINT_STYLE_FULL -} cairo_hint_style_t; - -/** - * cairo_hint_metrics_t: - * @CAIRO_HINT_METRICS_DEFAULT: Hint metrics in the default - * manner for the font backend and target device - * @CAIRO_HINT_METRICS_OFF: Do not hint font metrics - * @CAIRO_HINT_METRICS_ON: Hint font metrics - * - * Specifies whether to hint font metrics; hinting font metrics - * means quantizing them so that they are integer values in - * device space. Doing this improves the consistency of - * letter and line spacing, however it also means that text - * will be laid out differently at different zoom factors. - **/ -typedef enum _cairo_hint_metrics { - CAIRO_HINT_METRICS_DEFAULT, - CAIRO_HINT_METRICS_OFF, - CAIRO_HINT_METRICS_ON -} cairo_hint_metrics_t; - -/** - * cairo_font_options_t: - * - * An opaque structure holding all options that are used when - * rendering fonts. - * - * Individual features of a #cairo_font_options_t can be set or - * accessed using functions named - * cairo_font_options_set_<emphasis>feature_name</emphasis> and - * cairo_font_options_get_<emphasis>feature_name</emphasis>, like - * cairo_font_options_set_antialias() and - * cairo_font_options_get_antialias(). - * - * New features may be added to a #cairo_font_options_t in the - * future. For this reason, cairo_font_options_copy(), - * cairo_font_options_equal(), cairo_font_options_merge(), and - * cairo_font_options_hash() should be used to copy, check - * for equality, merge, or compute a hash value of - * #cairo_font_options_t objects. - **/ -typedef struct _cairo_font_options cairo_font_options_t; - -cairo_public cairo_font_options_t * -cairo_font_options_create (void); - -cairo_public cairo_font_options_t * -cairo_font_options_copy (const cairo_font_options_t *original); - -cairo_public void -cairo_font_options_destroy (cairo_font_options_t *options); - -cairo_public cairo_status_t -cairo_font_options_status (cairo_font_options_t *options); - -cairo_public void -cairo_font_options_merge (cairo_font_options_t *options, - const cairo_font_options_t *other); -cairo_public cairo_bool_t -cairo_font_options_equal (const cairo_font_options_t *options, - const cairo_font_options_t *other); - -cairo_public unsigned long -cairo_font_options_hash (const cairo_font_options_t *options); - -cairo_public void -cairo_font_options_set_antialias (cairo_font_options_t *options, - cairo_antialias_t antialias); -cairo_public cairo_antialias_t -cairo_font_options_get_antialias (const cairo_font_options_t *options); - -cairo_public void -cairo_font_options_set_subpixel_order (cairo_font_options_t *options, - cairo_subpixel_order_t subpixel_order); -cairo_public cairo_subpixel_order_t -cairo_font_options_get_subpixel_order (const cairo_font_options_t *options); - -cairo_public void -cairo_font_options_set_hint_style (cairo_font_options_t *options, - cairo_hint_style_t hint_style); -cairo_public cairo_hint_style_t -cairo_font_options_get_hint_style (const cairo_font_options_t *options); - -cairo_public void -cairo_font_options_set_hint_metrics (cairo_font_options_t *options, - cairo_hint_metrics_t hint_metrics); -cairo_public cairo_hint_metrics_t -cairo_font_options_get_hint_metrics (const cairo_font_options_t *options); - -/* This interface is for dealing with text as text, not caring about the - font object inside the the cairo_t. */ - -cairo_public void -cairo_select_font_face (cairo_t *cr, - const char *family, - cairo_font_slant_t slant, - cairo_font_weight_t weight); - -cairo_public void -cairo_set_font_size (cairo_t *cr, double size); - -cairo_public void -cairo_set_font_matrix (cairo_t *cr, - const cairo_matrix_t *matrix); - -cairo_public void -cairo_get_font_matrix (cairo_t *cr, - cairo_matrix_t *matrix); - -cairo_public void -cairo_set_font_options (cairo_t *cr, - const cairo_font_options_t *options); - -cairo_public void -cairo_get_font_options (cairo_t *cr, - cairo_font_options_t *options); - -cairo_public void -cairo_set_font_face (cairo_t *cr, cairo_font_face_t *font_face); - -cairo_public cairo_font_face_t * -cairo_get_font_face (cairo_t *cr); - -cairo_public void -cairo_set_scaled_font (cairo_t *cr, - const cairo_scaled_font_t *scaled_font); - -cairo_public cairo_scaled_font_t * -cairo_get_scaled_font (cairo_t *cr); - -cairo_public void -cairo_show_text (cairo_t *cr, const char *utf8); - -cairo_public void -cairo_show_glyphs (cairo_t *cr, const cairo_glyph_t *glyphs, int num_glyphs); - -cairo_public void -cairo_show_text_glyphs (cairo_t *cr, - const char *utf8, - int utf8_len, - const cairo_glyph_t *glyphs, - int num_glyphs, - const cairo_text_cluster_t *clusters, - int num_clusters, - cairo_text_cluster_flags_t cluster_flags); - -cairo_public void -cairo_text_path (cairo_t *cr, const char *utf8); - -cairo_public void -cairo_glyph_path (cairo_t *cr, const cairo_glyph_t *glyphs, int num_glyphs); - -cairo_public void -cairo_text_extents (cairo_t *cr, - const char *utf8, - cairo_text_extents_t *extents); - -cairo_public void -cairo_glyph_extents (cairo_t *cr, - const cairo_glyph_t *glyphs, - int num_glyphs, - cairo_text_extents_t *extents); - -cairo_public void -cairo_font_extents (cairo_t *cr, - cairo_font_extents_t *extents); - -/* Generic identifier for a font style */ - -cairo_public cairo_font_face_t * -cairo_font_face_reference (cairo_font_face_t *font_face); - -cairo_public void -cairo_font_face_destroy (cairo_font_face_t *font_face); - -cairo_public unsigned int -cairo_font_face_get_reference_count (cairo_font_face_t *font_face); - -cairo_public cairo_status_t -cairo_font_face_status (cairo_font_face_t *font_face); - - -/** - * cairo_font_type_t: - * @CAIRO_FONT_TYPE_TOY: The font was created using cairo's toy font api - * @CAIRO_FONT_TYPE_FT: The font is of type FreeType - * @CAIRO_FONT_TYPE_WIN32: The font is of type Win32 - * @CAIRO_FONT_TYPE_QUARTZ: The font is of type Quartz (Since: 1.6) - * @CAIRO_FONT_TYPE_USER: The font was create using cairo's user font api (Since: 1.8) - * - * #cairo_font_type_t is used to describe the type of a given font - * face or scaled font. The font types are also known as "font - * backends" within cairo. - * - * The type of a font face is determined by the function used to - * create it, which will generally be of the form - * cairo_<emphasis>type</emphasis>_font_face_create(). The font face type can be queried - * with cairo_font_face_get_type() - * - * The various #cairo_font_face_t functions can be used with a font face - * of any type. - * - * The type of a scaled font is determined by the type of the font - * face passed to cairo_scaled_font_create(). The scaled font type can - * be queried with cairo_scaled_font_get_type() - * - * The various #cairo_scaled_font_t functions can be used with scaled - * fonts of any type, but some font backends also provide - * type-specific functions that must only be called with a scaled font - * of the appropriate type. These functions have names that begin with - * cairo_<emphasis>type</emphasis>_scaled_font() such as cairo_ft_scaled_font_lock_face(). - * - * The behavior of calling a type-specific function with a scaled font - * of the wrong type is undefined. - * - * New entries may be added in future versions. - * - * Since: 1.2 - **/ -typedef enum _cairo_font_type { - CAIRO_FONT_TYPE_TOY, - CAIRO_FONT_TYPE_FT, - CAIRO_FONT_TYPE_WIN32, - CAIRO_FONT_TYPE_QUARTZ, - CAIRO_FONT_TYPE_USER -} cairo_font_type_t; - -cairo_public cairo_font_type_t -cairo_font_face_get_type (cairo_font_face_t *font_face); - -cairo_public void * -cairo_font_face_get_user_data (cairo_font_face_t *font_face, - const cairo_user_data_key_t *key); - -cairo_public cairo_status_t -cairo_font_face_set_user_data (cairo_font_face_t *font_face, - const cairo_user_data_key_t *key, - void *user_data, - cairo_destroy_func_t destroy); - -/* Portable interface to general font features. */ - -cairo_public cairo_scaled_font_t * -cairo_scaled_font_create (cairo_font_face_t *font_face, - const cairo_matrix_t *font_matrix, - const cairo_matrix_t *ctm, - const cairo_font_options_t *options); - -cairo_public cairo_scaled_font_t * -cairo_scaled_font_reference (cairo_scaled_font_t *scaled_font); - -cairo_public void -cairo_scaled_font_destroy (cairo_scaled_font_t *scaled_font); - -cairo_public unsigned int -cairo_scaled_font_get_reference_count (cairo_scaled_font_t *scaled_font); - -cairo_public cairo_status_t -cairo_scaled_font_status (cairo_scaled_font_t *scaled_font); - -cairo_public cairo_font_type_t -cairo_scaled_font_get_type (cairo_scaled_font_t *scaled_font); - -cairo_public void * -cairo_scaled_font_get_user_data (cairo_scaled_font_t *scaled_font, - const cairo_user_data_key_t *key); - -cairo_public cairo_status_t -cairo_scaled_font_set_user_data (cairo_scaled_font_t *scaled_font, - const cairo_user_data_key_t *key, - void *user_data, - cairo_destroy_func_t destroy); - -cairo_public void -cairo_scaled_font_extents (cairo_scaled_font_t *scaled_font, - cairo_font_extents_t *extents); - -cairo_public void -cairo_scaled_font_text_extents (cairo_scaled_font_t *scaled_font, - const char *utf8, - cairo_text_extents_t *extents); - -cairo_public void -cairo_scaled_font_glyph_extents (cairo_scaled_font_t *scaled_font, - const cairo_glyph_t *glyphs, - int num_glyphs, - cairo_text_extents_t *extents); - -cairo_public cairo_status_t -cairo_scaled_font_text_to_glyphs (cairo_scaled_font_t *scaled_font, - double x, - double y, - const char *utf8, - int utf8_len, - cairo_glyph_t **glyphs, - int *num_glyphs, - cairo_text_cluster_t **clusters, - int *num_clusters, - cairo_text_cluster_flags_t *cluster_flags); - -cairo_public cairo_font_face_t * -cairo_scaled_font_get_font_face (cairo_scaled_font_t *scaled_font); - -cairo_public void -cairo_scaled_font_get_font_matrix (cairo_scaled_font_t *scaled_font, - cairo_matrix_t *font_matrix); - -cairo_public void -cairo_scaled_font_get_ctm (cairo_scaled_font_t *scaled_font, - cairo_matrix_t *ctm); - -cairo_public void -cairo_scaled_font_get_scale_matrix (cairo_scaled_font_t *scaled_font, - cairo_matrix_t *scale_matrix); - -cairo_public void -cairo_scaled_font_get_font_options (cairo_scaled_font_t *scaled_font, - cairo_font_options_t *options); - - -/* Toy fonts */ - -cairo_public cairo_font_face_t * -cairo_toy_font_face_create (const char *family, - cairo_font_slant_t slant, - cairo_font_weight_t weight); - -cairo_public const char * -cairo_toy_font_face_get_family (cairo_font_face_t *font_face); - -cairo_public cairo_font_slant_t -cairo_toy_font_face_get_slant (cairo_font_face_t *font_face); - -cairo_public cairo_font_weight_t -cairo_toy_font_face_get_weight (cairo_font_face_t *font_face); - - -/* User fonts */ - -cairo_public cairo_font_face_t * -cairo_user_font_face_create (void); - -/* User-font method signatures */ - -/** - * cairo_user_scaled_font_init_func_t: - * @scaled_font: the scaled-font being created - * @cr: a cairo context, in font space - * @extents: font extents to fill in, in font space - * - * #cairo_user_scaled_font_init_func_t is the type of function which is - * called when a scaled-font needs to be created for a user font-face. - * - * The cairo context @cr is not used by the caller, but is prepared in font - * space, similar to what the cairo contexts passed to the render_glyph - * method will look like. The callback can use this context for extents - * computation for example. After the callback is called, @cr is checked - * for any error status. - * - * The @extents argument is where the user font sets the font extents for - * @scaled_font. It is in font space, which means that for most cases its - * ascent and descent members should add to 1.0. @extents is preset to - * hold a value of 1.0 for ascent, height, and max_x_advance, and 0.0 for - * descent and max_y_advance members. - * - * The callback is optional. If not set, default font extents as described - * in the previous paragraph will be used. - * - * Note that @scaled_font is not fully initialized at this - * point and trying to use it for text operations in the callback will result - * in deadlock. - * - * Returns: %CAIRO_STATUS_SUCCESS upon success, or an error status on error. - * - * Since: 1.8 - **/ -typedef cairo_status_t (*cairo_user_scaled_font_init_func_t) (cairo_scaled_font_t *scaled_font, - cairo_t *cr, - cairo_font_extents_t *extents); - -/** - * cairo_user_scaled_font_render_glyph_func_t: - * @scaled_font: user scaled-font - * @glyph: glyph code to render - * @cr: cairo context to draw to, in font space - * @extents: glyph extents to fill in, in font space - * - * #cairo_user_scaled_font_render_glyph_func_t is the type of function which - * is called when a user scaled-font needs to render a glyph. - * - * The callback is mandatory, and expected to draw the glyph with code @glyph to - * the cairo context @cr. @cr is prepared such that the glyph drawing is done in - * font space. That is, the matrix set on @cr is the scale matrix of @scaled_font, - * The @extents argument is where the user font sets the font extents for - * @scaled_font. However, if user prefers to draw in user space, they can - * achieve that by changing the matrix on @cr. All cairo rendering operations - * to @cr are permitted, however, the result is undefined if any source other - * than the default source on @cr is used. That means, glyph bitmaps should - * be rendered using cairo_mask() instead of cairo_paint(). - * - * Other non-default settings on @cr include a font size of 1.0 (given that - * it is set up to be in font space), and font options corresponding to - * @scaled_font. - * - * The @extents argument is preset to have <literal>x_bearing</literal>, - * <literal>width</literal>, and <literal>y_advance</literal> of zero, - * <literal>y_bearing</literal> set to <literal>-font_extents.ascent</literal>, - * <literal>height</literal> to <literal>font_extents.ascent+font_extents.descent</literal>, - * and <literal>x_advance</literal> to <literal>font_extents.max_x_advance</literal>. - * The only field user needs to set in majority of cases is - * <literal>x_advance</literal>. - * If the <literal>width</literal> field is zero upon the callback returning - * (which is its preset value), the glyph extents are automatically computed - * based on the drawings done to @cr. This is in most cases exactly what the - * desired behavior is. However, if for any reason the callback sets the - * extents, it must be ink extents, and include the extents of all drawing - * done to @cr in the callback. - * - * Returns: %CAIRO_STATUS_SUCCESS upon success, or - * %CAIRO_STATUS_USER_FONT_ERROR or any other error status on error. - * - * Since: 1.8 - **/ -typedef cairo_status_t (*cairo_user_scaled_font_render_glyph_func_t) (cairo_scaled_font_t *scaled_font, - unsigned long glyph, - cairo_t *cr, - cairo_text_extents_t *extents); - -/** - * cairo_user_scaled_font_text_to_glyphs_func_t: - * @scaled_font: the scaled-font being created - * @utf8: a string of text encoded in UTF-8 - * @utf8_len: length of @utf8 in bytes - * @glyphs: pointer to array of glyphs to fill, in font space - * @num_glyphs: pointer to number of glyphs - * @clusters: pointer to array of cluster mapping information to fill, or %NULL - * @num_clusters: pointer to number of clusters - * @cluster_flags: pointer to location to store cluster flags corresponding to the - * output @clusters - * - * #cairo_user_scaled_font_text_to_glyphs_func_t is the type of function which - * is called to convert input text to an array of glyphs. This is used by the - * cairo_show_text() operation. - * - * Using this callback the user-font has full control on glyphs and their - * positions. That means, it allows for features like ligatures and kerning, - * as well as complex <firstterm>shaping</firstterm> required for scripts like - * Arabic and Indic. - * - * The @num_glyphs argument is preset to the number of glyph entries available - * in the @glyphs buffer. If the @glyphs buffer is %NULL, the value of - * @num_glyphs will be zero. If the provided glyph array is too short for - * the conversion (or for convenience), a new glyph array may be allocated - * using cairo_glyph_allocate() and placed in @glyphs. Upon return, - * @num_glyphs should contain the number of generated glyphs. If the value - * @glyphs points at has changed after the call, the caller will free the - * allocated glyph array using cairo_glyph_free(). - * The callback should populate the glyph indices and positions (in font space) - * assuming that the text is to be shown at the origin. - * - * If @clusters is not %NULL, @num_clusters and @cluster_flags are also - * non-%NULL, and cluster mapping should be computed. The semantics of how - * cluster array allocation works is similar to the glyph array. That is, - * if @clusters initially points to a non-%NULL value, that array may be used - * as a cluster buffer, and @num_clusters points to the number of cluster - * entries available there. If the provided cluster array is too short for - * the conversion (or for convenience), a new cluster array may be allocated - * using cairo_text_cluster_allocate() and placed in @clusters. Upon return, - * @num_clusters should contain the number of generated clusters. - * If the value @clusters points at has changed after the call, the caller - * will free the allocated cluster array using cairo_text_cluster_free(). - * - * The callback is optional. If @num_glyphs is negative upon - * the callback returning or if the return value - * is %CAIRO_STATUS_USER_FONT_NOT_IMPLEMENTED, the unicode_to_glyph callback - * is tried. See #cairo_user_scaled_font_unicode_to_glyph_func_t. - * - * Note: While cairo does not impose any limitation on glyph indices, - * some applications may assume that a glyph index fits in a 16-bit - * unsigned integer. As such, it is advised that user-fonts keep their - * glyphs in the 0 to 65535 range. Furthermore, some applications may - * assume that glyph 0 is a special glyph-not-found glyph. User-fonts - * are advised to use glyph 0 for such purposes and do not use that - * glyph value for other purposes. - * - * Returns: %CAIRO_STATUS_SUCCESS upon success, - * %CAIRO_STATUS_USER_FONT_NOT_IMPLEMENTED if fallback options should be tried, - * or %CAIRO_STATUS_USER_FONT_ERROR or any other error status on error. - * - * Since: 1.8 - **/ -typedef cairo_status_t (*cairo_user_scaled_font_text_to_glyphs_func_t) (cairo_scaled_font_t *scaled_font, - const char *utf8, - int utf8_len, - cairo_glyph_t **glyphs, - int *num_glyphs, - cairo_text_cluster_t **clusters, - int *num_clusters, - cairo_text_cluster_flags_t *cluster_flags); - -/** - * cairo_user_scaled_font_unicode_to_glyph_func_t: - * @scaled_font: the scaled-font being created - * @unicode: input unicode character code-point - * @glyph_index: output glyph index - * - * #cairo_user_scaled_font_unicode_to_glyph_func_t is the type of function which - * is called to convert an input Unicode character to a single glyph. - * This is used by the cairo_show_text() operation. - * - * This callback is used to provide the same functionality as the - * text_to_glyphs callback does (see #cairo_user_scaled_font_text_to_glyphs_func_t) - * but has much less control on the output, - * in exchange for increased ease of use. The inherent assumption to using - * this callback is that each character maps to one glyph, and that the - * mapping is context independent. It also assumes that glyphs are positioned - * according to their advance width. These mean no ligatures, kerning, or - * complex scripts can be implemented using this callback. - * - * The callback is optional, and only used if text_to_glyphs callback is not - * set or fails to return glyphs. If this callback is not set or if it returns - * %CAIRO_STATUS_USER_FONT_NOT_IMPLEMENTED, an identity mapping from Unicode - * code-points to glyph indices is assumed. - * - * Note: While cairo does not impose any limitation on glyph indices, - * some applications may assume that a glyph index fits in a 16-bit - * unsigned integer. As such, it is advised that user-fonts keep their - * glyphs in the 0 to 65535 range. Furthermore, some applications may - * assume that glyph 0 is a special glyph-not-found glyph. User-fonts - * are advised to use glyph 0 for such purposes and do not use that - * glyph value for other purposes. - * - * Returns: %CAIRO_STATUS_SUCCESS upon success, - * %CAIRO_STATUS_USER_FONT_NOT_IMPLEMENTED if fallback options should be tried, - * or %CAIRO_STATUS_USER_FONT_ERROR or any other error status on error. - * - * Since: 1.8 - **/ -typedef cairo_status_t (*cairo_user_scaled_font_unicode_to_glyph_func_t) (cairo_scaled_font_t *scaled_font, - unsigned long unicode, - unsigned long *glyph_index); - -/* User-font method setters */ - -cairo_public void -cairo_user_font_face_set_init_func (cairo_font_face_t *font_face, - cairo_user_scaled_font_init_func_t init_func); - -cairo_public void -cairo_user_font_face_set_render_glyph_func (cairo_font_face_t *font_face, - cairo_user_scaled_font_render_glyph_func_t render_glyph_func); - -cairo_public void -cairo_user_font_face_set_text_to_glyphs_func (cairo_font_face_t *font_face, - cairo_user_scaled_font_text_to_glyphs_func_t text_to_glyphs_func); - -cairo_public void -cairo_user_font_face_set_unicode_to_glyph_func (cairo_font_face_t *font_face, - cairo_user_scaled_font_unicode_to_glyph_func_t unicode_to_glyph_func); - -/* User-font method getters */ - -cairo_public cairo_user_scaled_font_init_func_t -cairo_user_font_face_get_init_func (cairo_font_face_t *font_face); - -cairo_public cairo_user_scaled_font_render_glyph_func_t -cairo_user_font_face_get_render_glyph_func (cairo_font_face_t *font_face); - -cairo_public cairo_user_scaled_font_text_to_glyphs_func_t -cairo_user_font_face_get_text_to_glyphs_func (cairo_font_face_t *font_face); - -cairo_public cairo_user_scaled_font_unicode_to_glyph_func_t -cairo_user_font_face_get_unicode_to_glyph_func (cairo_font_face_t *font_face); - - -/* Query functions */ - -cairo_public cairo_operator_t -cairo_get_operator (cairo_t *cr); - -cairo_public cairo_pattern_t * -cairo_get_source (cairo_t *cr); - -cairo_public double -cairo_get_tolerance (cairo_t *cr); - -cairo_public cairo_antialias_t -cairo_get_antialias (cairo_t *cr); - -cairo_public cairo_bool_t -cairo_has_current_point (cairo_t *cr); - -cairo_public void -cairo_get_current_point (cairo_t *cr, double *x, double *y); - -cairo_public cairo_fill_rule_t -cairo_get_fill_rule (cairo_t *cr); - -cairo_public double -cairo_get_line_width (cairo_t *cr); - -cairo_public cairo_line_cap_t -cairo_get_line_cap (cairo_t *cr); - -cairo_public cairo_line_join_t -cairo_get_line_join (cairo_t *cr); - -cairo_public double -cairo_get_miter_limit (cairo_t *cr); - -cairo_public int -cairo_get_dash_count (cairo_t *cr); - -cairo_public void -cairo_get_dash (cairo_t *cr, double *dashes, double *offset); - -cairo_public void -cairo_get_matrix (cairo_t *cr, cairo_matrix_t *matrix); - -cairo_public cairo_surface_t * -cairo_get_target (cairo_t *cr); - -cairo_public cairo_surface_t * -cairo_get_group_target (cairo_t *cr); - -/** - * cairo_path_data_type_t: - * @CAIRO_PATH_MOVE_TO: A move-to operation - * @CAIRO_PATH_LINE_TO: A line-to operation - * @CAIRO_PATH_CURVE_TO: A curve-to operation - * @CAIRO_PATH_CLOSE_PATH: A close-path operation - * - * #cairo_path_data_t is used to describe the type of one portion - * of a path when represented as a #cairo_path_t. - * See #cairo_path_data_t for details. - **/ -typedef enum _cairo_path_data_type { - CAIRO_PATH_MOVE_TO, - CAIRO_PATH_LINE_TO, - CAIRO_PATH_CURVE_TO, - CAIRO_PATH_CLOSE_PATH -} cairo_path_data_type_t; - -/** - * cairo_path_data_t: - * - * #cairo_path_data_t is used to represent the path data inside a - * #cairo_path_t. - * - * The data structure is designed to try to balance the demands of - * efficiency and ease-of-use. A path is represented as an array of - * #cairo_path_data_t, which is a union of headers and points. - * - * Each portion of the path is represented by one or more elements in - * the array, (one header followed by 0 or more points). The length - * value of the header is the number of array elements for the current - * portion including the header, (ie. length == 1 + # of points), and - * where the number of points for each element type is as follows: - * - * <programlisting> - * %CAIRO_PATH_MOVE_TO: 1 point - * %CAIRO_PATH_LINE_TO: 1 point - * %CAIRO_PATH_CURVE_TO: 3 points - * %CAIRO_PATH_CLOSE_PATH: 0 points - * </programlisting> - * - * The semantics and ordering of the coordinate values are consistent - * with cairo_move_to(), cairo_line_to(), cairo_curve_to(), and - * cairo_close_path(). - * - * Here is sample code for iterating through a #cairo_path_t: - * - * <informalexample><programlisting> - * int i; - * cairo_path_t *path; - * cairo_path_data_t *data; - * - * path = cairo_copy_path (cr); - * - * for (i=0; i < path->num_data; i += path->data[i].header.length) { - * data = &path->data[i]; - * switch (data->header.type) { - * case CAIRO_PATH_MOVE_TO: - * do_move_to_things (data[1].point.x, data[1].point.y); - * break; - * case CAIRO_PATH_LINE_TO: - * do_line_to_things (data[1].point.x, data[1].point.y); - * break; - * case CAIRO_PATH_CURVE_TO: - * do_curve_to_things (data[1].point.x, data[1].point.y, - * data[2].point.x, data[2].point.y, - * data[3].point.x, data[3].point.y); - * break; - * case CAIRO_PATH_CLOSE_PATH: - * do_close_path_things (); - * break; - * } - * } - * cairo_path_destroy (path); - * </programlisting></informalexample> - * - * As of cairo 1.4, cairo does not mind if there are more elements in - * a portion of the path than needed. Such elements can be used by - * users of the cairo API to hold extra values in the path data - * structure. For this reason, it is recommended that applications - * always use <literal>data->header.length</literal> to - * iterate over the path data, instead of hardcoding the number of - * elements for each element type. - **/ -typedef union _cairo_path_data_t cairo_path_data_t; -union _cairo_path_data_t { - struct { - cairo_path_data_type_t type; - int length; - } header; - struct { - double x, y; - } point; -}; - -/** - * cairo_path_t: - * @status: the current error status - * @data: the elements in the path - * @num_data: the number of elements in the data array - * - * A data structure for holding a path. This data structure serves as - * the return value for cairo_copy_path() and - * cairo_copy_path_flat() as well the input value for - * cairo_append_path(). - * - * See #cairo_path_data_t for hints on how to iterate over the - * actual data within the path. - * - * The num_data member gives the number of elements in the data - * array. This number is larger than the number of independent path - * portions (defined in #cairo_path_data_type_t), since the data - * includes both headers and coordinates for each portion. - **/ -typedef struct cairo_path { - cairo_status_t status; - cairo_path_data_t *data; - int num_data; -} cairo_path_t; - -cairo_public cairo_path_t * -cairo_copy_path (cairo_t *cr); - -cairo_public cairo_path_t * -cairo_copy_path_flat (cairo_t *cr); - -cairo_public void -cairo_append_path (cairo_t *cr, - const cairo_path_t *path); - -cairo_public void -cairo_path_destroy (cairo_path_t *path); - -/* Error status queries */ - -cairo_public cairo_status_t -cairo_status (cairo_t *cr); - -cairo_public const char * -cairo_status_to_string (cairo_status_t status); - -/* Backend device manipulation */ - -cairo_public cairo_device_t * -cairo_device_reference (cairo_device_t *device); - -/** - * cairo_device_type_t: - * @CAIRO_DEVICE_TYPE_DRM: The surface is of type Direct Render Manager - * @CAIRO_DEVICE_TYPE_GL: The surface is of type OpenGL - * @CAIRO_DEVICE_TYPE_SCRIPT: The surface is of type script - * @CAIRO_DEVICE_TYPE_XCB: The surface is of type xcb - * @CAIRO_DEVICE_TYPE_XLIB: The surface is of type xlib - * @CAIRO_DEVICE_TYPE_XML: The surface is of type XML - * cairo_surface_create_for_rectangle() - * - * #cairo_device_type_t is used to describe the type of a given - * device. The devices types are also known as "backends" within cairo. - * - * The device type can be queried with cairo_device_get_type() - * - * The various #cairo_device_t functions can be used with surfaces of - * any type, but some backends also provide type-specific functions - * that must only be called with a device of the appropriate - * type. These functions have names that begin with - * cairo_<emphasis>type</emphasis>_device<!-- --> such as cairo_xcb_device_debug_set_render_version(). - * - * The behavior of calling a type-specific function with a surface of - * the wrong type is undefined. - * - * New entries may be added in future versions. - * - * Since: 1.10 - **/ -typedef enum _cairo_device_type { - CAIRO_DEVICE_TYPE_DRM, - CAIRO_DEVICE_TYPE_GL, - CAIRO_DEVICE_TYPE_SCRIPT, - CAIRO_DEVICE_TYPE_XCB, - CAIRO_DEVICE_TYPE_XLIB, - CAIRO_DEVICE_TYPE_XML -} cairo_device_type_t; - -cairo_public cairo_device_type_t -cairo_device_get_type (cairo_device_t *device); - -cairo_public cairo_status_t -cairo_device_status (cairo_device_t *device); - -cairo_public cairo_status_t -cairo_device_acquire (cairo_device_t *device); - -cairo_public void -cairo_device_release (cairo_device_t *device); - -cairo_public void -cairo_device_flush (cairo_device_t *device); - -cairo_public void -cairo_device_finish (cairo_device_t *device); - -cairo_public void -cairo_device_destroy (cairo_device_t *device); - -cairo_public unsigned int -cairo_device_get_reference_count (cairo_device_t *device); - -cairo_public void * -cairo_device_get_user_data (cairo_device_t *device, - const cairo_user_data_key_t *key); - -cairo_public cairo_status_t -cairo_device_set_user_data (cairo_device_t *device, - const cairo_user_data_key_t *key, - void *user_data, - cairo_destroy_func_t destroy); - - -/* Surface manipulation */ - -cairo_public cairo_surface_t * -cairo_surface_create_similar (cairo_surface_t *other, - cairo_content_t content, - int width, - int height); - -cairo_public cairo_surface_t * -cairo_surface_create_for_rectangle (cairo_surface_t *target, - double x, - double y, - double width, - double height); - -cairo_public cairo_surface_t * -cairo_surface_reference (cairo_surface_t *surface); - -cairo_public void -cairo_surface_finish (cairo_surface_t *surface); - -cairo_public void -cairo_surface_destroy (cairo_surface_t *surface); - -cairo_public cairo_device_t * -cairo_surface_get_device (cairo_surface_t *surface); - -cairo_public unsigned int -cairo_surface_get_reference_count (cairo_surface_t *surface); - -cairo_public cairo_status_t -cairo_surface_status (cairo_surface_t *surface); - -/** - * cairo_surface_type_t: - * @CAIRO_SURFACE_TYPE_IMAGE: The surface is of type image - * @CAIRO_SURFACE_TYPE_PDF: The surface is of type pdf - * @CAIRO_SURFACE_TYPE_PS: The surface is of type ps - * @CAIRO_SURFACE_TYPE_XLIB: The surface is of type xlib - * @CAIRO_SURFACE_TYPE_XCB: The surface is of type xcb - * @CAIRO_SURFACE_TYPE_GLITZ: The surface is of type glitz - * @CAIRO_SURFACE_TYPE_QUARTZ: The surface is of type quartz - * @CAIRO_SURFACE_TYPE_WIN32: The surface is of type win32 - * @CAIRO_SURFACE_TYPE_BEOS: The surface is of type beos - * @CAIRO_SURFACE_TYPE_DIRECTFB: The surface is of type directfb - * @CAIRO_SURFACE_TYPE_SVG: The surface is of type svg - * @CAIRO_SURFACE_TYPE_OS2: The surface is of type os2 - * @CAIRO_SURFACE_TYPE_WIN32_PRINTING: The surface is a win32 printing surface - * @CAIRO_SURFACE_TYPE_QUARTZ_IMAGE: The surface is of type quartz_image - * @CAIRO_SURFACE_TYPE_SCRIPT: The surface is of type script, since 1.10 - * @CAIRO_SURFACE_TYPE_QT: The surface is of type Qt, since 1.10 - * @CAIRO_SURFACE_TYPE_RECORDING: The surface is of type recording, since 1.10 - * @CAIRO_SURFACE_TYPE_VG: The surface is a OpenVG surface, since 1.10 - * @CAIRO_SURFACE_TYPE_GL: The surface is of type OpenGL, since 1.10 - * @CAIRO_SURFACE_TYPE_DRM: The surface is of type Direct Render Manager, since 1.10 - * @CAIRO_SURFACE_TYPE_TEE: The surface is of type 'tee' (a multiplexing surface), since 1.10 - * @CAIRO_SURFACE_TYPE_XML: The surface is of type XML (for debugging), since 1.10 - * @CAIRO_SURFACE_TYPE_SKIA: The surface is of type Skia, since 1.10 - * @CAIRO_SURFACE_TYPE_SUBSURFACE: The surface is a subsurface created with - * cairo_surface_create_for_rectangle(), since 1.10 - * - * #cairo_surface_type_t is used to describe the type of a given - * surface. The surface types are also known as "backends" or "surface - * backends" within cairo. - * - * The type of a surface is determined by the function used to create - * it, which will generally be of the form cairo_<emphasis>type</emphasis>_surface_create(), - * (though see cairo_surface_create_similar() as well). - * - * The surface type can be queried with cairo_surface_get_type() - * - * The various #cairo_surface_t functions can be used with surfaces of - * any type, but some backends also provide type-specific functions - * that must only be called with a surface of the appropriate - * type. These functions have names that begin with - * cairo_<emphasis>type</emphasis>_surface<!-- --> such as cairo_image_surface_get_width(). - * - * The behavior of calling a type-specific function with a surface of - * the wrong type is undefined. - * - * New entries may be added in future versions. - * - * Since: 1.2 - **/ -typedef enum _cairo_surface_type { - CAIRO_SURFACE_TYPE_IMAGE, - CAIRO_SURFACE_TYPE_PDF, - CAIRO_SURFACE_TYPE_PS, - CAIRO_SURFACE_TYPE_XLIB, - CAIRO_SURFACE_TYPE_XCB, - CAIRO_SURFACE_TYPE_GLITZ, - CAIRO_SURFACE_TYPE_QUARTZ, - CAIRO_SURFACE_TYPE_WIN32, - CAIRO_SURFACE_TYPE_BEOS, - CAIRO_SURFACE_TYPE_DIRECTFB, - CAIRO_SURFACE_TYPE_SVG, - CAIRO_SURFACE_TYPE_OS2, - CAIRO_SURFACE_TYPE_WIN32_PRINTING, - CAIRO_SURFACE_TYPE_QUARTZ_IMAGE, - CAIRO_SURFACE_TYPE_SCRIPT, - CAIRO_SURFACE_TYPE_QT, - CAIRO_SURFACE_TYPE_RECORDING, - CAIRO_SURFACE_TYPE_VG, - CAIRO_SURFACE_TYPE_GL, - CAIRO_SURFACE_TYPE_DRM, - CAIRO_SURFACE_TYPE_TEE, - CAIRO_SURFACE_TYPE_XML, - CAIRO_SURFACE_TYPE_SKIA, - CAIRO_SURFACE_TYPE_SUBSURFACE -} cairo_surface_type_t; - -cairo_public cairo_surface_type_t -cairo_surface_get_type (cairo_surface_t *surface); - -cairo_public cairo_content_t -cairo_surface_get_content (cairo_surface_t *surface); - -#if CAIRO_HAS_PNG_FUNCTIONS - -cairo_public cairo_status_t -cairo_surface_write_to_png (cairo_surface_t *surface, - const char *filename); - -cairo_public cairo_status_t -cairo_surface_write_to_png_stream (cairo_surface_t *surface, - cairo_write_func_t write_func, - void *closure); - -#endif - -cairo_public void * -cairo_surface_get_user_data (cairo_surface_t *surface, - const cairo_user_data_key_t *key); - -cairo_public cairo_status_t -cairo_surface_set_user_data (cairo_surface_t *surface, - const cairo_user_data_key_t *key, - void *user_data, - cairo_destroy_func_t destroy); - -#define CAIRO_MIME_TYPE_JPEG "image/jpeg" -#define CAIRO_MIME_TYPE_PNG "image/png" -#define CAIRO_MIME_TYPE_JP2 "image/jp2" -#define CAIRO_MIME_TYPE_URI "text/x-uri" - -cairo_public void -cairo_surface_get_mime_data (cairo_surface_t *surface, - const char *mime_type, - const unsigned char **data, - unsigned long *length); - -cairo_public cairo_status_t -cairo_surface_set_mime_data (cairo_surface_t *surface, - const char *mime_type, - const unsigned char *data, - unsigned long length, - cairo_destroy_func_t destroy, - void *closure); - -cairo_public void -cairo_surface_get_font_options (cairo_surface_t *surface, - cairo_font_options_t *options); - -cairo_public void -cairo_surface_flush (cairo_surface_t *surface); - -cairo_public void -cairo_surface_mark_dirty (cairo_surface_t *surface); - -cairo_public void -cairo_surface_mark_dirty_rectangle (cairo_surface_t *surface, - int x, - int y, - int width, - int height); - -cairo_public void -cairo_surface_set_device_offset (cairo_surface_t *surface, - double x_offset, - double y_offset); - -cairo_public void -cairo_surface_get_device_offset (cairo_surface_t *surface, - double *x_offset, - double *y_offset); - -cairo_public void -cairo_surface_set_fallback_resolution (cairo_surface_t *surface, - double x_pixels_per_inch, - double y_pixels_per_inch); - -cairo_public void -cairo_surface_get_fallback_resolution (cairo_surface_t *surface, - double *x_pixels_per_inch, - double *y_pixels_per_inch); - -cairo_public void -cairo_surface_copy_page (cairo_surface_t *surface); - -cairo_public void -cairo_surface_show_page (cairo_surface_t *surface); - -cairo_public cairo_bool_t -cairo_surface_has_show_text_glyphs (cairo_surface_t *surface); - -/* Image-surface functions */ - -/** - * cairo_format_t: - * @CAIRO_FORMAT_INVALID: no such format exists or is supported. - * @CAIRO_FORMAT_ARGB32: each pixel is a 32-bit quantity, with - * alpha in the upper 8 bits, then red, then green, then blue. - * The 32-bit quantities are stored native-endian. Pre-multiplied - * alpha is used. (That is, 50% transparent red is 0x80800000, - * not 0x80ff0000.) - * @CAIRO_FORMAT_RGB24: each pixel is a 32-bit quantity, with - * the upper 8 bits unused. Red, Green, and Blue are stored - * in the remaining 24 bits in that order. - * @CAIRO_FORMAT_A8: each pixel is a 8-bit quantity holding - * an alpha value. - * @CAIRO_FORMAT_A1: each pixel is a 1-bit quantity holding - * an alpha value. Pixels are packed together into 32-bit - * quantities. The ordering of the bits matches the - * endianess of the platform. On a big-endian machine, the - * first pixel is in the uppermost bit, on a little-endian - * machine the first pixel is in the least-significant bit. - * @CAIRO_FORMAT_RGB16_565: each pixel is a 16-bit quantity - * with red in the upper 5 bits, then green in the middle - * 6 bits, and blue in the lower 5 bits. - * - * #cairo_format_t is used to identify the memory format of - * image data. - * - * New entries may be added in future versions. - **/ -typedef enum _cairo_format { - CAIRO_FORMAT_INVALID = -1, - CAIRO_FORMAT_ARGB32 = 0, - CAIRO_FORMAT_RGB24 = 1, - CAIRO_FORMAT_A8 = 2, - CAIRO_FORMAT_A1 = 3, - CAIRO_FORMAT_RGB16_565 = 4 -} cairo_format_t; - -cairo_public cairo_surface_t * -cairo_image_surface_create (cairo_format_t format, - int width, - int height); - -cairo_public int -cairo_format_stride_for_width (cairo_format_t format, - int width); - -cairo_public cairo_surface_t * -cairo_image_surface_create_for_data (unsigned char *data, - cairo_format_t format, - int width, - int height, - int stride); - -cairo_public unsigned char * -cairo_image_surface_get_data (cairo_surface_t *surface); - -cairo_public cairo_format_t -cairo_image_surface_get_format (cairo_surface_t *surface); - -cairo_public int -cairo_image_surface_get_width (cairo_surface_t *surface); - -cairo_public int -cairo_image_surface_get_height (cairo_surface_t *surface); - -cairo_public int -cairo_image_surface_get_stride (cairo_surface_t *surface); - -#if CAIRO_HAS_PNG_FUNCTIONS - -cairo_public cairo_surface_t * -cairo_image_surface_create_from_png (const char *filename); - -cairo_public cairo_surface_t * -cairo_image_surface_create_from_png_stream (cairo_read_func_t read_func, - void *closure); - -#endif - -/* Recording-surface functions */ - -cairo_public cairo_surface_t * -cairo_recording_surface_create (cairo_content_t content, - const cairo_rectangle_t *extents); - -cairo_public void -cairo_recording_surface_ink_extents (cairo_surface_t *surface, - double *x0, - double *y0, - double *width, - double *height); - -/* Pattern creation functions */ - -cairo_public cairo_pattern_t * -cairo_pattern_create_rgb (double red, double green, double blue); - -cairo_public cairo_pattern_t * -cairo_pattern_create_rgba (double red, double green, double blue, - double alpha); - -cairo_public cairo_pattern_t * -cairo_pattern_create_for_surface (cairo_surface_t *surface); - -cairo_public cairo_pattern_t * -cairo_pattern_create_linear (double x0, double y0, - double x1, double y1); - -cairo_public cairo_pattern_t * -cairo_pattern_create_radial (double cx0, double cy0, double radius0, - double cx1, double cy1, double radius1); - -cairo_public cairo_pattern_t * -cairo_pattern_reference (cairo_pattern_t *pattern); - -cairo_public void -cairo_pattern_destroy (cairo_pattern_t *pattern); - -cairo_public unsigned int -cairo_pattern_get_reference_count (cairo_pattern_t *pattern); - -cairo_public cairo_status_t -cairo_pattern_status (cairo_pattern_t *pattern); - -cairo_public void * -cairo_pattern_get_user_data (cairo_pattern_t *pattern, - const cairo_user_data_key_t *key); - -cairo_public cairo_status_t -cairo_pattern_set_user_data (cairo_pattern_t *pattern, - const cairo_user_data_key_t *key, - void *user_data, - cairo_destroy_func_t destroy); - -/** - * cairo_pattern_type_t: - * @CAIRO_PATTERN_TYPE_SOLID: The pattern is a solid (uniform) - * color. It may be opaque or translucent. - * @CAIRO_PATTERN_TYPE_SURFACE: The pattern is a based on a surface (an image). - * @CAIRO_PATTERN_TYPE_LINEAR: The pattern is a linear gradient. - * @CAIRO_PATTERN_TYPE_RADIAL: The pattern is a radial gradient. - * - * #cairo_pattern_type_t is used to describe the type of a given pattern. - * - * The type of a pattern is determined by the function used to create - * it. The cairo_pattern_create_rgb() and cairo_pattern_create_rgba() - * functions create SOLID patterns. The remaining - * cairo_pattern_create<!-- --> functions map to pattern types in obvious - * ways. - * - * The pattern type can be queried with cairo_pattern_get_type() - * - * Most #cairo_pattern_t functions can be called with a pattern of any - * type, (though trying to change the extend or filter for a solid - * pattern will have no effect). A notable exception is - * cairo_pattern_add_color_stop_rgb() and - * cairo_pattern_add_color_stop_rgba() which must only be called with - * gradient patterns (either LINEAR or RADIAL). Otherwise the pattern - * will be shutdown and put into an error state. - * - * New entries may be added in future versions. - * - * Since: 1.2 - **/ -typedef enum _cairo_pattern_type { - CAIRO_PATTERN_TYPE_SOLID, - CAIRO_PATTERN_TYPE_SURFACE, - CAIRO_PATTERN_TYPE_LINEAR, - CAIRO_PATTERN_TYPE_RADIAL -} cairo_pattern_type_t; - -cairo_public cairo_pattern_type_t -cairo_pattern_get_type (cairo_pattern_t *pattern); - -cairo_public void -cairo_pattern_add_color_stop_rgb (cairo_pattern_t *pattern, - double offset, - double red, double green, double blue); - -cairo_public void -cairo_pattern_add_color_stop_rgba (cairo_pattern_t *pattern, - double offset, - double red, double green, double blue, - double alpha); - -cairo_public void -cairo_pattern_set_matrix (cairo_pattern_t *pattern, - const cairo_matrix_t *matrix); - -cairo_public void -cairo_pattern_get_matrix (cairo_pattern_t *pattern, - cairo_matrix_t *matrix); - -/** - * cairo_extend_t: - * @CAIRO_EXTEND_NONE: pixels outside of the source pattern - * are fully transparent - * @CAIRO_EXTEND_REPEAT: the pattern is tiled by repeating - * @CAIRO_EXTEND_REFLECT: the pattern is tiled by reflecting - * at the edges (Implemented for surface patterns since 1.6) - * @CAIRO_EXTEND_PAD: pixels outside of the pattern copy - * the closest pixel from the source (Since 1.2; but only - * implemented for surface patterns since 1.6) - * - * #cairo_extend_t is used to describe how pattern color/alpha will be - * determined for areas "outside" the pattern's natural area, (for - * example, outside the surface bounds or outside the gradient - * geometry). - * - * The default extend mode is %CAIRO_EXTEND_NONE for surface patterns - * and %CAIRO_EXTEND_PAD for gradient patterns. - * - * New entries may be added in future versions. - **/ -typedef enum _cairo_extend { - CAIRO_EXTEND_NONE, - CAIRO_EXTEND_REPEAT, - CAIRO_EXTEND_REFLECT, - CAIRO_EXTEND_PAD -} cairo_extend_t; - -cairo_public void -cairo_pattern_set_extend (cairo_pattern_t *pattern, cairo_extend_t extend); - -cairo_public cairo_extend_t -cairo_pattern_get_extend (cairo_pattern_t *pattern); - -/** - * cairo_filter_t: - * @CAIRO_FILTER_FAST: A high-performance filter, with quality similar - * to %CAIRO_FILTER_NEAREST - * @CAIRO_FILTER_GOOD: A reasonable-performance filter, with quality - * similar to %CAIRO_FILTER_BILINEAR - * @CAIRO_FILTER_BEST: The highest-quality available, performance may - * not be suitable for interactive use. - * @CAIRO_FILTER_NEAREST: Nearest-neighbor filtering - * @CAIRO_FILTER_BILINEAR: Linear interpolation in two dimensions - * @CAIRO_FILTER_GAUSSIAN: This filter value is currently - * unimplemented, and should not be used in current code. - * - * #cairo_filter_t is used to indicate what filtering should be - * applied when reading pixel values from patterns. See - * cairo_pattern_set_source() for indicating the desired filter to be - * used with a particular pattern. - */ -typedef enum _cairo_filter { - CAIRO_FILTER_FAST, - CAIRO_FILTER_GOOD, - CAIRO_FILTER_BEST, - CAIRO_FILTER_NEAREST, - CAIRO_FILTER_BILINEAR, - CAIRO_FILTER_GAUSSIAN -} cairo_filter_t; - -cairo_public void -cairo_pattern_set_filter (cairo_pattern_t *pattern, cairo_filter_t filter); - -cairo_public cairo_filter_t -cairo_pattern_get_filter (cairo_pattern_t *pattern); - -cairo_public cairo_status_t -cairo_pattern_get_rgba (cairo_pattern_t *pattern, - double *red, double *green, - double *blue, double *alpha); - -cairo_public cairo_status_t -cairo_pattern_get_surface (cairo_pattern_t *pattern, - cairo_surface_t **surface); - - -cairo_public cairo_status_t -cairo_pattern_get_color_stop_rgba (cairo_pattern_t *pattern, - int index, double *offset, - double *red, double *green, - double *blue, double *alpha); - -cairo_public cairo_status_t -cairo_pattern_get_color_stop_count (cairo_pattern_t *pattern, - int *count); - -cairo_public cairo_status_t -cairo_pattern_get_linear_points (cairo_pattern_t *pattern, - double *x0, double *y0, - double *x1, double *y1); - -cairo_public cairo_status_t -cairo_pattern_get_radial_circles (cairo_pattern_t *pattern, - double *x0, double *y0, double *r0, - double *x1, double *y1, double *r1); - -/* Matrix functions */ - -cairo_public void -cairo_matrix_init (cairo_matrix_t *matrix, - double xx, double yx, - double xy, double yy, - double x0, double y0); - -cairo_public void -cairo_matrix_init_identity (cairo_matrix_t *matrix); - -cairo_public void -cairo_matrix_init_translate (cairo_matrix_t *matrix, - double tx, double ty); - -cairo_public void -cairo_matrix_init_scale (cairo_matrix_t *matrix, - double sx, double sy); - -cairo_public void -cairo_matrix_init_rotate (cairo_matrix_t *matrix, - double radians); - -cairo_public void -cairo_matrix_translate (cairo_matrix_t *matrix, double tx, double ty); - -cairo_public void -cairo_matrix_scale (cairo_matrix_t *matrix, double sx, double sy); - -cairo_public void -cairo_matrix_rotate (cairo_matrix_t *matrix, double radians); - -cairo_public cairo_status_t -cairo_matrix_invert (cairo_matrix_t *matrix); - -cairo_public void -cairo_matrix_multiply (cairo_matrix_t *result, - const cairo_matrix_t *a, - const cairo_matrix_t *b); - -cairo_public void -cairo_matrix_transform_distance (const cairo_matrix_t *matrix, - double *dx, double *dy); - -cairo_public void -cairo_matrix_transform_point (const cairo_matrix_t *matrix, - double *x, double *y); - -/* Region functions */ - -/** - * cairo_region_t: - * - * A #cairo_region_t represents a set of integer-aligned rectangles. - * - * It allows set-theoretical operations like cairo_region_union() and - * cairo_region_intersect() to be performed on them. - * - * Memory management of #cairo_region_t is done with - * cairo_region_reference() and cairo_region_destroy(). - * - * Since: 1.10 - **/ -typedef struct _cairo_region cairo_region_t; - -/** - * cairo_rectangle_int_t: - * @x: X coordinate of the left side of the rectangle - * @y: Y coordinate of the the top side of the rectangle - * @width: width of the rectangle - * @height: height of the rectangle - * - * A data structure for holding a rectangle with integer coordinates. - * - * Since: 1.10 - **/ - -typedef struct _cairo_rectangle_int { - int x, y; - int width, height; -} cairo_rectangle_int_t; - -typedef enum _cairo_region_overlap { - CAIRO_REGION_OVERLAP_IN, /* completely inside region */ - CAIRO_REGION_OVERLAP_OUT, /* completely outside region */ - CAIRO_REGION_OVERLAP_PART /* partly inside region */ -} cairo_region_overlap_t; - -cairo_public cairo_region_t * -cairo_region_create (void); - -cairo_public cairo_region_t * -cairo_region_create_rectangle (const cairo_rectangle_int_t *rectangle); - -cairo_public cairo_region_t * -cairo_region_create_rectangles (const cairo_rectangle_int_t *rects, - int count); - -cairo_public cairo_region_t * -cairo_region_copy (const cairo_region_t *original); - -cairo_public cairo_region_t * -cairo_region_reference (cairo_region_t *region); - -cairo_public void -cairo_region_destroy (cairo_region_t *region); - -cairo_public cairo_bool_t -cairo_region_equal (const cairo_region_t *a, const cairo_region_t *b); - -cairo_public cairo_status_t -cairo_region_status (const cairo_region_t *region); - -cairo_public void -cairo_region_get_extents (const cairo_region_t *region, - cairo_rectangle_int_t *extents); - -cairo_public int -cairo_region_num_rectangles (const cairo_region_t *region); - -cairo_public void -cairo_region_get_rectangle (const cairo_region_t *region, - int nth, - cairo_rectangle_int_t *rectangle); - -cairo_public cairo_bool_t -cairo_region_is_empty (const cairo_region_t *region); - -cairo_public cairo_region_overlap_t -cairo_region_contains_rectangle (const cairo_region_t *region, - const cairo_rectangle_int_t *rectangle); - -cairo_public cairo_bool_t -cairo_region_contains_point (const cairo_region_t *region, int x, int y); - -cairo_public void -cairo_region_translate (cairo_region_t *region, int dx, int dy); - -cairo_public cairo_status_t -cairo_region_subtract (cairo_region_t *dst, const cairo_region_t *other); - -cairo_public cairo_status_t -cairo_region_subtract_rectangle (cairo_region_t *dst, - const cairo_rectangle_int_t *rectangle); - -cairo_public cairo_status_t -cairo_region_intersect (cairo_region_t *dst, const cairo_region_t *other); - -cairo_public cairo_status_t -cairo_region_intersect_rectangle (cairo_region_t *dst, - const cairo_rectangle_int_t *rectangle); - -cairo_public cairo_status_t -cairo_region_union (cairo_region_t *dst, const cairo_region_t *other); - -cairo_public cairo_status_t -cairo_region_union_rectangle (cairo_region_t *dst, - const cairo_rectangle_int_t *rectangle); - -cairo_public cairo_status_t -cairo_region_xor (cairo_region_t *dst, const cairo_region_t *other); - -cairo_public cairo_status_t -cairo_region_xor_rectangle (cairo_region_t *dst, - const cairo_rectangle_int_t *rectangle); - -/* Functions to be used while debugging (not intended for use in production code) */ -cairo_public void -cairo_debug_reset_static_data (void); - - -CAIRO_END_DECLS - -#endif /* CAIRO_H */ diff --git a/dalaunay.html b/dalaunay.html deleted file mode 100644 index 57e1084ee553190612ac75cb794e3f622f6d4a39..0000000000000000000000000000000000000000 --- a/dalaunay.html +++ /dev/null @@ -1,3 +0,0 @@ -</svg> -</body> -</html> diff --git a/delaunay.html b/delaunay.html index e50819a27c97eded54abc501b4836ccd6cea9f86..21f320eb4e2d832f63b34ae38ef337fa552c46a4 100644 --- a/delaunay.html +++ b/delaunay.html @@ -1,43 +1,556 @@ -<!DOCTYPE html> -<html> -<body> -<svg width="1000" height="1000"> -<line x1="285.103916" y1="484.328745" x2="606.952116" y2="391.857662" style="stroke:rgb(255,0,0);stroke-width:1" /> -<line x1="285.103916" y1="484.328745" x2="617.328410" y2="370.464187" style="stroke:rgb(255,0,0);stroke-width:1" /> -<line x1="606.952116" y1="391.857662" x2="617.328410" y2="370.464187" style="stroke:rgb(255,0,0);stroke-width:1" /> -<line x1="285.103916" y1="484.328745" x2="584.673605" y2="70.345164" style="stroke:rgb(255,0,0);stroke-width:1" /> -<line x1="285.103916" y1="484.328745" x2="617.328410" y2="370.464187" style="stroke:rgb(255,0,0);stroke-width:1" /> -<line x1="584.673605" y1="70.345164" x2="617.328410" y2="370.464187" style="stroke:rgb(255,0,0);stroke-width:1" /> -<line x1="584.673605" y1="70.345164" x2="617.328410" y2="370.464187" style="stroke:rgb(255,0,0);stroke-width:1" /> -<line x1="584.673605" y1="70.345164" x2="677.358318" y2="220.801416" style="stroke:rgb(255,0,0);stroke-width:1" /> -<line x1="617.328410" y1="370.464187" x2="677.358318" y2="220.801416" style="stroke:rgb(255,0,0);stroke-width:1" /> -<line x1="617.328410" y1="370.464187" x2="677.358318" y2="220.801416" style="stroke:rgb(255,0,0);stroke-width:1" /> -<line x1="617.328410" y1="370.464187" x2="782.128361" y2="487.014374" style="stroke:rgb(255,0,0);stroke-width:1" /> -<line x1="677.358318" y1="220.801416" x2="782.128361" y2="487.014374" style="stroke:rgb(255,0,0);stroke-width:1" /> -<line x1="606.952116" y1="391.857662" x2="617.328410" y2="370.464187" style="stroke:rgb(255,0,0);stroke-width:1" /> -<line x1="606.952116" y1="391.857662" x2="782.128361" y2="487.014374" style="stroke:rgb(255,0,0);stroke-width:1" /> -<line x1="617.328410" y1="370.464187" x2="782.128361" y2="487.014374" style="stroke:rgb(255,0,0);stroke-width:1" /> -<line x1="285.103916" y1="484.328745" x2="455.549791" y2="529.618213" style="stroke:rgb(255,0,0);stroke-width:1" /> -<line x1="285.103916" y1="484.328745" x2="606.952116" y2="391.857662" style="stroke:rgb(255,0,0);stroke-width:1" /> -<line x1="455.549791" y1="529.618213" x2="606.952116" y2="391.857662" style="stroke:rgb(255,0,0);stroke-width:1" /> -<line x1="455.549791" y1="529.618213" x2="606.952116" y2="391.857662" style="stroke:rgb(255,0,0);stroke-width:1" /> -<line x1="455.549791" y1="529.618213" x2="782.128361" y2="487.014374" style="stroke:rgb(255,0,0);stroke-width:1" /> -<line x1="606.952116" y1="391.857662" x2="782.128361" y2="487.014374" style="stroke:rgb(255,0,0);stroke-width:1" /> -<line x1="412.762841" y1="937.070833" x2="455.549791" y2="529.618213" style="stroke:rgb(255,0,0);stroke-width:1" /> -<line x1="412.762841" y1="937.070833" x2="782.128361" y2="487.014374" style="stroke:rgb(255,0,0);stroke-width:1" /> -<line x1="455.549791" y1="529.618213" x2="782.128361" y2="487.014374" style="stroke:rgb(255,0,0);stroke-width:1" /> -<line x1="285.103916" y1="484.328745" x2="412.762841" y2="937.070833" style="stroke:rgb(255,0,0);stroke-width:1" /> -<line x1="285.103916" y1="484.328745" x2="455.549791" y2="529.618213" style="stroke:rgb(255,0,0);stroke-width:1" /> -<line x1="412.762841" y1="937.070833" x2="455.549791" y2="529.618213" style="stroke:rgb(255,0,0);stroke-width:1" /> -<line x1="584.673605" y1="70.345164" x2="677.358318" y2="220.801416" style="stroke:rgb(255,0,0);stroke-width:1" /> -<line x1="584.673605" y1="70.345164" x2="731.254006" y2="119.968261" style="stroke:rgb(255,0,0);stroke-width:1" /> -<line x1="677.358318" y1="220.801416" x2="731.254006" y2="119.968261" style="stroke:rgb(255,0,0);stroke-width:1" /> -<line x1="677.358318" y1="220.801416" x2="731.254006" y2="119.968261" style="stroke:rgb(255,0,0);stroke-width:1" /> -<line x1="677.358318" y1="220.801416" x2="782.128361" y2="487.014374" style="stroke:rgb(255,0,0);stroke-width:1" /> -<line x1="731.254006" y1="119.968261" x2="782.128361" y2="487.014374" style="stroke:rgb(255,0,0);stroke-width:1" /> -<line x1="223.456526" y1="22.766808" x2="285.103916" y2="484.328745" style="stroke:rgb(255,0,0);stroke-width:1" /> -<line x1="223.456526" y1="22.766808" x2="584.673605" y2="70.345164" style="stroke:rgb(255,0,0);stroke-width:1" /> -<line x1="285.103916" y1="484.328745" x2="584.673605" y2="70.345164" style="stroke:rgb(255,0,0);stroke-width:1" /> -</svg> -</body> -</html> +<!DOCTYPE html> +<html> +<body> +<svg width="1000" height="1000"> +<line x1="670.857875" y1="734.641560" x2="791.741691" y2="788.140507" style="stroke:rgb(255,0,0);stroke-width:1" /> +<line x1="670.857875" y1="734.641560" x2="794.274728" y2="751.487777" style="stroke:rgb(255,0,0);stroke-width:1" /> +<line x1="791.741691" y1="788.140507" x2="794.274728" y2="751.487777" style="stroke:rgb(255,0,0);stroke-width:1" /> +<line x1="670.857875" y1="734.641560" x2="689.657277" y2="710.409864" style="stroke:rgb(255,0,0);stroke-width:1" /> +<line x1="670.857875" y1="734.641560" x2="794.274728" y2="751.487777" style="stroke:rgb(255,0,0);stroke-width:1" /> +<line x1="689.657277" y1="710.409864" x2="794.274728" y2="751.487777" style="stroke:rgb(255,0,0);stroke-width:1" /> +<line x1="689.657277" y1="710.409864" x2="794.274728" y2="751.487777" style="stroke:rgb(255,0,0);stroke-width:1" /> +<line x1="689.657277" y1="710.409864" x2="796.075320" y2="647.389142" style="stroke:rgb(255,0,0);stroke-width:1" /> +<line x1="794.274728" y1="751.487777" x2="796.075320" y2="647.389142" style="stroke:rgb(255,0,0);stroke-width:1" /> +<line x1="794.274728" y1="751.487777" x2="796.075320" y2="647.389142" style="stroke:rgb(255,0,0);stroke-width:1" /> +<line x1="794.274728" y1="751.487777" x2="849.940489" y2="608.355968" style="stroke:rgb(255,0,0);stroke-width:1" /> +<line x1="796.075320" y1="647.389142" x2="849.940489" y2="608.355968" style="stroke:rgb(255,0,0);stroke-width:1" /> +<line x1="794.274728" y1="751.487777" x2="849.940489" y2="608.355968" style="stroke:rgb(255,0,0);stroke-width:1" /> +<line x1="794.274728" y1="751.487777" x2="920.743431" y2="830.988495" style="stroke:rgb(255,0,0);stroke-width:1" /> +<line x1="849.940489" y1="608.355968" x2="920.743431" y2="830.988495" style="stroke:rgb(255,0,0);stroke-width:1" /> +<line x1="791.741691" y1="788.140507" x2="794.274728" y2="751.487777" style="stroke:rgb(255,0,0);stroke-width:1" /> +<line x1="791.741691" y1="788.140507" x2="920.743431" y2="830.988495" style="stroke:rgb(255,0,0);stroke-width:1" /> +<line x1="794.274728" y1="751.487777" x2="920.743431" y2="830.988495" style="stroke:rgb(255,0,0);stroke-width:1" /> +<line x1="677.297281" y1="905.362102" x2="692.922758" y2="829.248939" style="stroke:rgb(255,0,0);stroke-width:1" /> +<line x1="677.297281" y1="905.362102" x2="745.445112" y2="878.078555" style="stroke:rgb(255,0,0);stroke-width:1" /> +<line x1="692.922758" y1="829.248939" x2="745.445112" y2="878.078555" style="stroke:rgb(255,0,0);stroke-width:1" /> +<line x1="612.140263" y1="933.530686" x2="677.297281" y2="905.362102" style="stroke:rgb(255,0,0);stroke-width:1" /> +<line x1="612.140263" y1="933.530686" x2="692.922758" y2="829.248939" style="stroke:rgb(255,0,0);stroke-width:1" /> +<line x1="677.297281" y1="905.362102" x2="692.922758" y2="829.248939" style="stroke:rgb(255,0,0);stroke-width:1" /> +<line x1="538.621174" y1="823.999756" x2="612.140263" y2="933.530686" style="stroke:rgb(255,0,0);stroke-width:1" /> +<line x1="538.621174" y1="823.999756" x2="692.922758" y2="829.248939" style="stroke:rgb(255,0,0);stroke-width:1" /> +<line x1="612.140263" y1="933.530686" x2="692.922758" y2="829.248939" style="stroke:rgb(255,0,0);stroke-width:1" /> +<line x1="538.621174" y1="823.999756" x2="564.592425" y2="769.768365" style="stroke:rgb(255,0,0);stroke-width:1" /> +<line x1="538.621174" y1="823.999756" x2="692.922758" y2="829.248939" style="stroke:rgb(255,0,0);stroke-width:1" /> +<line x1="564.592425" y1="769.768365" x2="692.922758" y2="829.248939" style="stroke:rgb(255,0,0);stroke-width:1" /> +<line x1="564.592425" y1="769.768365" x2="670.857875" y2="734.641560" style="stroke:rgb(255,0,0);stroke-width:1" /> +<line x1="564.592425" y1="769.768365" x2="692.922758" y2="829.248939" style="stroke:rgb(255,0,0);stroke-width:1" /> +<line x1="670.857875" y1="734.641560" x2="692.922758" y2="829.248939" style="stroke:rgb(255,0,0);stroke-width:1" /> +<line x1="670.857875" y1="734.641560" x2="692.922758" y2="829.248939" style="stroke:rgb(255,0,0);stroke-width:1" /> +<line x1="670.857875" y1="734.641560" x2="791.741691" y2="788.140507" style="stroke:rgb(255,0,0);stroke-width:1" /> +<line x1="692.922758" y1="829.248939" x2="791.741691" y2="788.140507" style="stroke:rgb(255,0,0);stroke-width:1" /> +<line x1="692.922758" y1="829.248939" x2="745.445112" y2="878.078555" style="stroke:rgb(255,0,0);stroke-width:1" /> +<line x1="692.922758" y1="829.248939" x2="791.741691" y2="788.140507" style="stroke:rgb(255,0,0);stroke-width:1" /> +<line x1="745.445112" y1="878.078555" x2="791.741691" y2="788.140507" style="stroke:rgb(255,0,0);stroke-width:1" /> +<line x1="776.390881" y1="197.820978" x2="838.587603" y2="154.728843" style="stroke:rgb(255,0,0);stroke-width:1" /> +<line x1="776.390881" y1="197.820978" x2="840.021973" y2="226.630451" style="stroke:rgb(255,0,0);stroke-width:1" /> +<line x1="838.587603" y1="154.728843" x2="840.021973" y2="226.630451" style="stroke:rgb(255,0,0);stroke-width:1" /> +<line x1="742.637410" y1="53.651540" x2="776.390881" y2="197.820978" style="stroke:rgb(255,0,0);stroke-width:1" /> +<line x1="742.637410" y1="53.651540" x2="838.587603" y2="154.728843" style="stroke:rgb(255,0,0);stroke-width:1" /> +<line x1="776.390881" y1="197.820978" x2="838.587603" y2="154.728843" style="stroke:rgb(255,0,0);stroke-width:1" /> +<line x1="742.637410" y1="53.651540" x2="838.587603" y2="154.728843" style="stroke:rgb(255,0,0);stroke-width:1" /> +<line x1="742.637410" y1="53.651540" x2="876.369518" y2="93.203528" style="stroke:rgb(255,0,0);stroke-width:1" /> +<line x1="838.587603" y1="154.728843" x2="876.369518" y2="93.203528" style="stroke:rgb(255,0,0);stroke-width:1" /> +<line x1="838.587603" y1="154.728843" x2="876.369518" y2="93.203528" style="stroke:rgb(255,0,0);stroke-width:1" /> +<line x1="838.587603" y1="154.728843" x2="935.972167" y2="173.253578" style="stroke:rgb(255,0,0);stroke-width:1" /> +<line x1="876.369518" y1="93.203528" x2="935.972167" y2="173.253578" style="stroke:rgb(255,0,0);stroke-width:1" /> +<line x1="838.587603" y1="154.728843" x2="886.104923" y2="242.774743" style="stroke:rgb(255,0,0);stroke-width:1" /> +<line x1="838.587603" y1="154.728843" x2="935.972167" y2="173.253578" style="stroke:rgb(255,0,0);stroke-width:1" /> +<line x1="886.104923" y1="242.774743" x2="935.972167" y2="173.253578" style="stroke:rgb(255,0,0);stroke-width:1" /> +<line x1="838.587603" y1="154.728843" x2="840.021973" y2="226.630451" style="stroke:rgb(255,0,0);stroke-width:1" /> +<line x1="838.587603" y1="154.728843" x2="886.104923" y2="242.774743" style="stroke:rgb(255,0,0);stroke-width:1" /> +<line x1="840.021973" y1="226.630451" x2="886.104923" y2="242.774743" style="stroke:rgb(255,0,0);stroke-width:1" /> +<line x1="876.369518" y1="93.203528" x2="935.972167" y2="173.253578" style="stroke:rgb(255,0,0);stroke-width:1" /> +<line x1="876.369518" y1="93.203528" x2="973.998230" y2="144.627216" style="stroke:rgb(255,0,0);stroke-width:1" /> +<line x1="935.972167" y1="173.253578" x2="973.998230" y2="144.627216" style="stroke:rgb(255,0,0);stroke-width:1" /> +<line x1="255.134739" y1="24.201178" x2="613.971374" y2="33.570360" style="stroke:rgb(255,0,0);stroke-width:1" /> +<line x1="255.134739" y1="24.201178" x2="621.295816" y2="29.999695" style="stroke:rgb(255,0,0);stroke-width:1" /> +<line x1="613.971374" y1="33.570360" x2="621.295816" y2="29.999695" style="stroke:rgb(255,0,0);stroke-width:1" /> +<line x1="617.664113" y1="80.385754" x2="621.295816" y2="29.999695" style="stroke:rgb(255,0,0);stroke-width:1" /> +<line x1="617.664113" y1="80.385754" x2="742.637410" y2="53.651540" style="stroke:rgb(255,0,0);stroke-width:1" /> +<line x1="621.295816" y1="29.999695" x2="742.637410" y2="53.651540" style="stroke:rgb(255,0,0);stroke-width:1" /> +<line x1="613.971374" y1="33.570360" x2="617.664113" y2="80.385754" style="stroke:rgb(255,0,0);stroke-width:1" /> +<line x1="613.971374" y1="33.570360" x2="621.295816" y2="29.999695" style="stroke:rgb(255,0,0);stroke-width:1" /> +<line x1="617.664113" y1="80.385754" x2="621.295816" y2="29.999695" style="stroke:rgb(255,0,0);stroke-width:1" /> +<line x1="738.578448" y1="567.918943" x2="771.752068" y2="529.709769" style="stroke:rgb(255,0,0);stroke-width:1" /> +<line x1="738.578448" y1="567.918943" x2="849.940489" y2="608.355968" style="stroke:rgb(255,0,0);stroke-width:1" /> +<line x1="771.752068" y1="529.709769" x2="849.940489" y2="608.355968" style="stroke:rgb(255,0,0);stroke-width:1" /> +<line x1="738.578448" y1="567.918943" x2="796.075320" y2="647.389142" style="stroke:rgb(255,0,0);stroke-width:1" /> +<line x1="738.578448" y1="567.918943" x2="849.940489" y2="608.355968" style="stroke:rgb(255,0,0);stroke-width:1" /> +<line x1="796.075320" y1="647.389142" x2="849.940489" y2="608.355968" style="stroke:rgb(255,0,0);stroke-width:1" /> +<line x1="689.657277" y1="710.409864" x2="738.578448" y2="567.918943" style="stroke:rgb(255,0,0);stroke-width:1" /> +<line x1="689.657277" y1="710.409864" x2="796.075320" y2="647.389142" style="stroke:rgb(255,0,0);stroke-width:1" /> +<line x1="738.578448" y1="567.918943" x2="796.075320" y2="647.389142" style="stroke:rgb(255,0,0);stroke-width:1" /> +<line x1="522.110660" y1="616.718039" x2="689.657277" y2="710.409864" style="stroke:rgb(255,0,0);stroke-width:1" /> +<line x1="522.110660" y1="616.718039" x2="738.578448" y2="567.918943" style="stroke:rgb(255,0,0);stroke-width:1" /> +<line x1="689.657277" y1="710.409864" x2="738.578448" y2="567.918943" style="stroke:rgb(255,0,0);stroke-width:1" /> +<line x1="515.823847" y1="537.095248" x2="522.110660" y2="616.718039" style="stroke:rgb(255,0,0);stroke-width:1" /> +<line x1="515.823847" y1="537.095248" x2="738.578448" y2="567.918943" style="stroke:rgb(255,0,0);stroke-width:1" /> +<line x1="522.110660" y1="616.718039" x2="738.578448" y2="567.918943" style="stroke:rgb(255,0,0);stroke-width:1" /> +<line x1="515.823847" y1="537.095248" x2="578.234199" y2="454.451125" style="stroke:rgb(255,0,0);stroke-width:1" /> +<line x1="515.823847" y1="537.095248" x2="738.578448" y2="567.918943" style="stroke:rgb(255,0,0);stroke-width:1" /> +<line x1="578.234199" y1="454.451125" x2="738.578448" y2="567.918943" style="stroke:rgb(255,0,0);stroke-width:1" /> +<line x1="578.234199" y1="454.451125" x2="738.578448" y2="567.918943" style="stroke:rgb(255,0,0);stroke-width:1" /> +<line x1="578.234199" y1="454.451125" x2="771.752068" y2="529.709769" style="stroke:rgb(255,0,0);stroke-width:1" /> +<line x1="738.578448" y1="567.918943" x2="771.752068" y2="529.709769" style="stroke:rgb(255,0,0);stroke-width:1" /> +<line x1="423.200171" y1="587.694937" x2="437.116611" y2="591.235084" style="stroke:rgb(255,0,0);stroke-width:1" /> +<line x1="423.200171" y1="587.694937" x2="457.869198" y2="470.809046" style="stroke:rgb(255,0,0);stroke-width:1" /> +<line x1="437.116611" y1="591.235084" x2="457.869198" y2="470.809046" style="stroke:rgb(255,0,0);stroke-width:1" /> +<line x1="437.116611" y1="591.235084" x2="457.869198" y2="470.809046" style="stroke:rgb(255,0,0);stroke-width:1" /> +<line x1="437.116611" y1="591.235084" x2="515.823847" y2="537.095248" style="stroke:rgb(255,0,0);stroke-width:1" /> +<line x1="457.869198" y1="470.809046" x2="515.823847" y2="537.095248" style="stroke:rgb(255,0,0);stroke-width:1" /> +<line x1="437.116611" y1="591.235084" x2="465.010529" y2="622.455519" style="stroke:rgb(255,0,0);stroke-width:1" /> +<line x1="437.116611" y1="591.235084" x2="515.823847" y2="537.095248" style="stroke:rgb(255,0,0);stroke-width:1" /> +<line x1="465.010529" y1="622.455519" x2="515.823847" y2="537.095248" style="stroke:rgb(255,0,0);stroke-width:1" /> +<line x1="393.780328" y1="604.388562" x2="437.116611" y2="591.235084" style="stroke:rgb(255,0,0);stroke-width:1" /> +<line x1="393.780328" y1="604.388562" x2="465.010529" y2="622.455519" style="stroke:rgb(255,0,0);stroke-width:1" /> +<line x1="437.116611" y1="591.235084" x2="465.010529" y2="622.455519" style="stroke:rgb(255,0,0);stroke-width:1" /> +<line x1="393.780328" y1="604.388562" x2="423.200171" y2="587.694937" style="stroke:rgb(255,0,0);stroke-width:1" /> +<line x1="393.780328" y1="604.388562" x2="437.116611" y2="591.235084" style="stroke:rgb(255,0,0);stroke-width:1" /> +<line x1="423.200171" y1="587.694937" x2="437.116611" y2="591.235084" style="stroke:rgb(255,0,0);stroke-width:1" /> +<line x1="771.752068" y1="529.709769" x2="843.256935" y2="445.387127" style="stroke:rgb(255,0,0);stroke-width:1" /> +<line x1="771.752068" y1="529.709769" x2="854.091006" y2="499.984741" style="stroke:rgb(255,0,0);stroke-width:1" /> +<line x1="843.256935" y1="445.387127" x2="854.091006" y2="499.984741" style="stroke:rgb(255,0,0);stroke-width:1" /> +<line x1="746.147038" y1="353.587451" x2="771.752068" y2="529.709769" style="stroke:rgb(255,0,0);stroke-width:1" /> +<line x1="746.147038" y1="353.587451" x2="843.256935" y2="445.387127" style="stroke:rgb(255,0,0);stroke-width:1" /> +<line x1="771.752068" y1="529.709769" x2="843.256935" y2="445.387127" style="stroke:rgb(255,0,0);stroke-width:1" /> +<line x1="746.147038" y1="353.587451" x2="843.256935" y2="445.387127" style="stroke:rgb(255,0,0);stroke-width:1" /> +<line x1="746.147038" y1="353.587451" x2="862.239448" y2="377.178259" style="stroke:rgb(255,0,0);stroke-width:1" /> +<line x1="843.256935" y1="445.387127" x2="862.239448" y2="377.178259" style="stroke:rgb(255,0,0);stroke-width:1" /> +<line x1="843.256935" y1="445.387127" x2="862.239448" y2="377.178259" style="stroke:rgb(255,0,0);stroke-width:1" /> +<line x1="843.256935" y1="445.387127" x2="970.213935" y2="460.005493" style="stroke:rgb(255,0,0);stroke-width:1" /> +<line x1="862.239448" y1="377.178259" x2="970.213935" y2="460.005493" style="stroke:rgb(255,0,0);stroke-width:1" /> +<line x1="843.256935" y1="445.387127" x2="854.091006" y2="499.984741" style="stroke:rgb(255,0,0);stroke-width:1" /> +<line x1="843.256935" y1="445.387127" x2="970.213935" y2="460.005493" style="stroke:rgb(255,0,0);stroke-width:1" /> +<line x1="854.091006" y1="499.984741" x2="970.213935" y2="460.005493" style="stroke:rgb(255,0,0);stroke-width:1" /> +<line x1="560.014649" y1="966.246529" x2="612.140263" y2="933.530686" style="stroke:rgb(255,0,0);stroke-width:1" /> +<line x1="560.014649" y1="966.246529" x2="677.297281" y2="905.362102" style="stroke:rgb(255,0,0);stroke-width:1" /> +<line x1="612.140263" y1="933.530686" x2="677.297281" y2="905.362102" style="stroke:rgb(255,0,0);stroke-width:1" /> +<line x1="560.014649" y1="966.246529" x2="677.297281" y2="905.362102" style="stroke:rgb(255,0,0);stroke-width:1" /> +<line x1="560.014649" y1="966.246529" x2="818.811609" y2="870.601520" style="stroke:rgb(255,0,0);stroke-width:1" /> +<line x1="677.297281" y1="905.362102" x2="818.811609" y2="870.601520" style="stroke:rgb(255,0,0);stroke-width:1" /> +<line x1="560.014649" y1="966.246529" x2="818.811609" y2="870.601520" style="stroke:rgb(255,0,0);stroke-width:1" /> +<line x1="560.014649" y1="966.246529" x2="961.516160" y2="852.900784" style="stroke:rgb(255,0,0);stroke-width:1" /> +<line x1="818.811609" y1="870.601520" x2="961.516160" y2="852.900784" style="stroke:rgb(255,0,0);stroke-width:1" /> +<line x1="266.090884" y1="986.297189" x2="417.737358" y2="971.282083" style="stroke:rgb(255,0,0);stroke-width:1" /> +<line x1="266.090884" y1="986.297189" x2="560.014649" y2="966.246529" style="stroke:rgb(255,0,0);stroke-width:1" /> +<line x1="417.737358" y1="971.282083" x2="560.014649" y2="966.246529" style="stroke:rgb(255,0,0);stroke-width:1" /> +<line x1="417.737358" y1="971.282083" x2="485.427412" y2="927.945799" style="stroke:rgb(255,0,0);stroke-width:1" /> +<line x1="417.737358" y1="971.282083" x2="560.014649" y2="966.246529" style="stroke:rgb(255,0,0);stroke-width:1" /> +<line x1="485.427412" y1="927.945799" x2="560.014649" y2="966.246529" style="stroke:rgb(255,0,0);stroke-width:1" /> +<line x1="485.427412" y1="927.945799" x2="538.621174" y2="823.999756" style="stroke:rgb(255,0,0);stroke-width:1" /> +<line x1="485.427412" y1="927.945799" x2="560.014649" y2="966.246529" style="stroke:rgb(255,0,0);stroke-width:1" /> +<line x1="538.621174" y1="823.999756" x2="560.014649" y2="966.246529" style="stroke:rgb(255,0,0);stroke-width:1" /> +<line x1="538.621174" y1="823.999756" x2="560.014649" y2="966.246529" style="stroke:rgb(255,0,0);stroke-width:1" /> +<line x1="538.621174" y1="823.999756" x2="612.140263" y2="933.530686" style="stroke:rgb(255,0,0);stroke-width:1" /> +<line x1="560.014649" y1="966.246529" x2="612.140263" y2="933.530686" style="stroke:rgb(255,0,0);stroke-width:1" /> +<line x1="457.777642" y1="443.403424" x2="457.869198" y2="470.809046" style="stroke:rgb(255,0,0);stroke-width:1" /> +<line x1="457.777642" y1="443.403424" x2="512.619404" y2="451.368755" style="stroke:rgb(255,0,0);stroke-width:1" /> +<line x1="457.869198" y1="470.809046" x2="512.619404" y2="451.368755" style="stroke:rgb(255,0,0);stroke-width:1" /> +<line x1="457.869198" y1="470.809046" x2="512.619404" y2="451.368755" style="stroke:rgb(255,0,0);stroke-width:1" /> +<line x1="457.869198" y1="470.809046" x2="520.004883" y2="506.515702" style="stroke:rgb(255,0,0);stroke-width:1" /> +<line x1="512.619404" y1="451.368755" x2="520.004883" y2="506.515702" style="stroke:rgb(255,0,0);stroke-width:1" /> +<line x1="457.869198" y1="470.809046" x2="515.823847" y2="537.095248" style="stroke:rgb(255,0,0);stroke-width:1" /> +<line x1="457.869198" y1="470.809046" x2="520.004883" y2="506.515702" style="stroke:rgb(255,0,0);stroke-width:1" /> +<line x1="515.823847" y1="537.095248" x2="520.004883" y2="506.515702" style="stroke:rgb(255,0,0);stroke-width:1" /> +<line x1="412.427137" y1="466.017640" x2="423.200171" y2="587.694937" style="stroke:rgb(255,0,0);stroke-width:1" /> +<line x1="412.427137" y1="466.017640" x2="457.869198" y2="470.809046" style="stroke:rgb(255,0,0);stroke-width:1" /> +<line x1="423.200171" y1="587.694937" x2="457.869198" y2="470.809046" style="stroke:rgb(255,0,0);stroke-width:1" /> +<line x1="412.427137" y1="466.017640" x2="457.777642" y2="443.403424" style="stroke:rgb(255,0,0);stroke-width:1" /> +<line x1="412.427137" y1="466.017640" x2="457.869198" y2="470.809046" style="stroke:rgb(255,0,0);stroke-width:1" /> +<line x1="457.777642" y1="443.403424" x2="457.869198" y2="470.809046" style="stroke:rgb(255,0,0);stroke-width:1" /> +<line x1="528.031251" y1="355.540635" x2="612.475967" y2="213.904233" style="stroke:rgb(255,0,0);stroke-width:1" /> +<line x1="528.031251" y1="355.540635" x2="632.923368" y2="226.325266" style="stroke:rgb(255,0,0);stroke-width:1" /> +<line x1="612.475967" y1="213.904233" x2="632.923368" y2="226.325266" style="stroke:rgb(255,0,0);stroke-width:1" /> +<line x1="528.031251" y1="355.540635" x2="529.770806" y2="196.905423" style="stroke:rgb(255,0,0);stroke-width:1" /> +<line x1="528.031251" y1="355.540635" x2="612.475967" y2="213.904233" style="stroke:rgb(255,0,0);stroke-width:1" /> +<line x1="529.770806" y1="196.905423" x2="612.475967" y2="213.904233" style="stroke:rgb(255,0,0);stroke-width:1" /> +<line x1="529.770806" y1="196.905423" x2="612.475967" y2="213.904233" style="stroke:rgb(255,0,0);stroke-width:1" /> +<line x1="529.770806" y1="196.905423" x2="617.664113" y2="80.385754" style="stroke:rgb(255,0,0);stroke-width:1" /> +<line x1="612.475967" y1="213.904233" x2="617.664113" y2="80.385754" style="stroke:rgb(255,0,0);stroke-width:1" /> +<line x1="612.475967" y1="213.904233" x2="617.664113" y2="80.385754" style="stroke:rgb(255,0,0);stroke-width:1" /> +<line x1="612.475967" y1="213.904233" x2="632.923368" y2="226.325266" style="stroke:rgb(255,0,0);stroke-width:1" /> +<line x1="617.664113" y1="80.385754" x2="632.923368" y2="226.325266" style="stroke:rgb(255,0,0);stroke-width:1" /> +<line x1="113.101596" y1="318.308054" x2="126.773888" y2="347.300638" style="stroke:rgb(255,0,0);stroke-width:1" /> +<line x1="113.101596" y1="318.308054" x2="159.978027" y2="297.708060" style="stroke:rgb(255,0,0);stroke-width:1" /> +<line x1="126.773888" y1="347.300638" x2="159.978027" y2="297.708060" style="stroke:rgb(255,0,0);stroke-width:1" /> +<line x1="126.773888" y1="347.300638" x2="159.978027" y2="297.708060" style="stroke:rgb(255,0,0);stroke-width:1" /> +<line x1="126.773888" y1="347.300638" x2="195.348979" y2="325.724052" style="stroke:rgb(255,0,0);stroke-width:1" /> +<line x1="159.978027" y1="297.708060" x2="195.348979" y2="325.724052" style="stroke:rgb(255,0,0);stroke-width:1" /> +<line x1="126.773888" y1="347.300638" x2="195.348979" y2="325.724052" style="stroke:rgb(255,0,0);stroke-width:1" /> +<line x1="126.773888" y1="347.300638" x2="197.515793" y2="373.973815" style="stroke:rgb(255,0,0);stroke-width:1" /> +<line x1="195.348979" y1="325.724052" x2="197.515793" y2="373.973815" style="stroke:rgb(255,0,0);stroke-width:1" /> +<line x1="126.773888" y1="347.300638" x2="153.111362" y2="426.252022" style="stroke:rgb(255,0,0);stroke-width:1" /> +<line x1="126.773888" y1="347.300638" x2="197.515793" y2="373.973815" style="stroke:rgb(255,0,0);stroke-width:1" /> +<line x1="153.111362" y1="426.252022" x2="197.515793" y2="373.973815" style="stroke:rgb(255,0,0);stroke-width:1" /> +<line x1="22.431104" y1="398.632771" x2="126.773888" y2="347.300638" style="stroke:rgb(255,0,0);stroke-width:1" /> +<line x1="22.431104" y1="398.632771" x2="153.111362" y2="426.252022" style="stroke:rgb(255,0,0);stroke-width:1" /> +<line x1="126.773888" y1="347.300638" x2="153.111362" y2="426.252022" style="stroke:rgb(255,0,0);stroke-width:1" /> +<line x1="22.431104" y1="398.632771" x2="71.504868" y2="310.861538" style="stroke:rgb(255,0,0);stroke-width:1" /> +<line x1="22.431104" y1="398.632771" x2="126.773888" y2="347.300638" style="stroke:rgb(255,0,0);stroke-width:1" /> +<line x1="71.504868" y1="310.861538" x2="126.773888" y2="347.300638" style="stroke:rgb(255,0,0);stroke-width:1" /> +<line x1="71.504868" y1="310.861538" x2="113.101596" y2="318.308054" style="stroke:rgb(255,0,0);stroke-width:1" /> +<line x1="71.504868" y1="310.861538" x2="126.773888" y2="347.300638" style="stroke:rgb(255,0,0);stroke-width:1" /> +<line x1="113.101596" y1="318.308054" x2="126.773888" y2="347.300638" style="stroke:rgb(255,0,0);stroke-width:1" /> +<line x1="935.972167" y1="173.253578" x2="952.726829" y2="253.212073" style="stroke:rgb(255,0,0);stroke-width:1" /> +<line x1="935.972167" y1="173.253578" x2="975.676748" y2="218.451491" style="stroke:rgb(255,0,0);stroke-width:1" /> +<line x1="952.726829" y1="253.212073" x2="975.676748" y2="218.451491" style="stroke:rgb(255,0,0);stroke-width:1" /> +<line x1="935.972167" y1="173.253578" x2="973.998230" y2="144.627216" style="stroke:rgb(255,0,0);stroke-width:1" /> +<line x1="935.972167" y1="173.253578" x2="975.676748" y2="218.451491" style="stroke:rgb(255,0,0);stroke-width:1" /> +<line x1="973.998230" y1="144.627216" x2="975.676748" y2="218.451491" style="stroke:rgb(255,0,0);stroke-width:1" /> +<line x1="973.998230" y1="144.627216" x2="975.676748" y2="218.451491" style="stroke:rgb(255,0,0);stroke-width:1" /> +<line x1="973.998230" y1="144.627216" x2="995.422224" y2="472.090823" style="stroke:rgb(255,0,0);stroke-width:1" /> +<line x1="975.676748" y1="218.451491" x2="995.422224" y2="472.090823" style="stroke:rgb(255,0,0);stroke-width:1" /> +<line x1="952.726829" y1="253.212073" x2="975.676748" y2="218.451491" style="stroke:rgb(255,0,0);stroke-width:1" /> +<line x1="952.726829" y1="253.212073" x2="995.422224" y2="472.090823" style="stroke:rgb(255,0,0);stroke-width:1" /> +<line x1="975.676748" y1="218.451491" x2="995.422224" y2="472.090823" style="stroke:rgb(255,0,0);stroke-width:1" /> +<line x1="529.770806" y1="196.905423" x2="613.971374" y2="33.570360" style="stroke:rgb(255,0,0);stroke-width:1" /> +<line x1="529.770806" y1="196.905423" x2="617.664113" y2="80.385754" style="stroke:rgb(255,0,0);stroke-width:1" /> +<line x1="613.971374" y1="33.570360" x2="617.664113" y2="80.385754" style="stroke:rgb(255,0,0);stroke-width:1" /> +<line x1="255.134739" y1="24.201178" x2="529.770806" y2="196.905423" style="stroke:rgb(255,0,0);stroke-width:1" /> +<line x1="255.134739" y1="24.201178" x2="613.971374" y2="33.570360" style="stroke:rgb(255,0,0);stroke-width:1" /> +<line x1="529.770806" y1="196.905423" x2="613.971374" y2="33.570360" style="stroke:rgb(255,0,0);stroke-width:1" /> +<line x1="465.010529" y1="622.455519" x2="515.823847" y2="537.095248" style="stroke:rgb(255,0,0);stroke-width:1" /> +<line x1="465.010529" y1="622.455519" x2="522.110660" y2="616.718039" style="stroke:rgb(255,0,0);stroke-width:1" /> +<line x1="515.823847" y1="537.095248" x2="522.110660" y2="616.718039" style="stroke:rgb(255,0,0);stroke-width:1" /> +<line x1="522.110660" y1="616.718039" x2="670.857875" y2="734.641560" style="stroke:rgb(255,0,0);stroke-width:1" /> +<line x1="522.110660" y1="616.718039" x2="689.657277" y2="710.409864" style="stroke:rgb(255,0,0);stroke-width:1" /> +<line x1="670.857875" y1="734.641560" x2="689.657277" y2="710.409864" style="stroke:rgb(255,0,0);stroke-width:1" /> +<line x1="522.110660" y1="616.718039" x2="564.592425" y2="769.768365" style="stroke:rgb(255,0,0);stroke-width:1" /> +<line x1="522.110660" y1="616.718039" x2="670.857875" y2="734.641560" style="stroke:rgb(255,0,0);stroke-width:1" /> +<line x1="564.592425" y1="769.768365" x2="670.857875" y2="734.641560" style="stroke:rgb(255,0,0);stroke-width:1" /> +<line x1="450.025941" y1="722.678304" x2="522.110660" y2="616.718039" style="stroke:rgb(255,0,0);stroke-width:1" /> +<line x1="450.025941" y1="722.678304" x2="564.592425" y2="769.768365" style="stroke:rgb(255,0,0);stroke-width:1" /> +<line x1="522.110660" y1="616.718039" x2="564.592425" y2="769.768365" style="stroke:rgb(255,0,0);stroke-width:1" /> +<line x1="450.025941" y1="722.678304" x2="465.010529" y2="622.455519" style="stroke:rgb(255,0,0);stroke-width:1" /> +<line x1="450.025941" y1="722.678304" x2="522.110660" y2="616.718039" style="stroke:rgb(255,0,0);stroke-width:1" /> +<line x1="465.010529" y1="622.455519" x2="522.110660" y2="616.718039" style="stroke:rgb(255,0,0);stroke-width:1" /> +<line x1="528.031251" y1="355.540635" x2="745.780816" y2="340.128788" style="stroke:rgb(255,0,0);stroke-width:1" /> +<line x1="528.031251" y1="355.540635" x2="746.147038" y2="353.587451" style="stroke:rgb(255,0,0);stroke-width:1" /> +<line x1="745.780816" y1="340.128788" x2="746.147038" y2="353.587451" style="stroke:rgb(255,0,0);stroke-width:1" /> +<line x1="528.031251" y1="355.540635" x2="632.923368" y2="226.325266" style="stroke:rgb(255,0,0);stroke-width:1" /> +<line x1="528.031251" y1="355.540635" x2="745.780816" y2="340.128788" style="stroke:rgb(255,0,0);stroke-width:1" /> +<line x1="632.923368" y1="226.325266" x2="745.780816" y2="340.128788" style="stroke:rgb(255,0,0);stroke-width:1" /> +<line x1="632.923368" y1="226.325266" x2="745.780816" y2="340.128788" style="stroke:rgb(255,0,0);stroke-width:1" /> +<line x1="632.923368" y1="226.325266" x2="776.390881" y2="197.820978" style="stroke:rgb(255,0,0);stroke-width:1" /> +<line x1="745.780816" y1="340.128788" x2="776.390881" y2="197.820978" style="stroke:rgb(255,0,0);stroke-width:1" /> +<line x1="745.780816" y1="340.128788" x2="776.390881" y2="197.820978" style="stroke:rgb(255,0,0);stroke-width:1" /> +<line x1="745.780816" y1="340.128788" x2="840.021973" y2="226.630451" style="stroke:rgb(255,0,0);stroke-width:1" /> +<line x1="776.390881" y1="197.820978" x2="840.021973" y2="226.630451" style="stroke:rgb(255,0,0);stroke-width:1" /> +<line x1="745.780816" y1="340.128788" x2="840.021973" y2="226.630451" style="stroke:rgb(255,0,0);stroke-width:1" /> +<line x1="745.780816" y1="340.128788" x2="845.789972" y2="340.189825" style="stroke:rgb(255,0,0);stroke-width:1" /> +<line x1="840.021973" y1="226.630451" x2="845.789972" y2="340.189825" style="stroke:rgb(255,0,0);stroke-width:1" /> +<line x1="745.780816" y1="340.128788" x2="746.147038" y2="353.587451" style="stroke:rgb(255,0,0);stroke-width:1" /> +<line x1="745.780816" y1="340.128788" x2="845.789972" y2="340.189825" style="stroke:rgb(255,0,0);stroke-width:1" /> +<line x1="746.147038" y1="353.587451" x2="845.789972" y2="340.189825" style="stroke:rgb(255,0,0);stroke-width:1" /> +<line x1="412.427137" y1="466.017640" x2="451.734977" y2="414.929655" style="stroke:rgb(255,0,0);stroke-width:1" /> +<line x1="412.427137" y1="466.017640" x2="457.777642" y2="443.403424" style="stroke:rgb(255,0,0);stroke-width:1" /> +<line x1="451.734977" y1="414.929655" x2="457.777642" y2="443.403424" style="stroke:rgb(255,0,0);stroke-width:1" /> +<line x1="387.859737" y1="360.759301" x2="412.427137" y2="466.017640" style="stroke:rgb(255,0,0);stroke-width:1" /> +<line x1="387.859737" y1="360.759301" x2="451.734977" y2="414.929655" style="stroke:rgb(255,0,0);stroke-width:1" /> +<line x1="412.427137" y1="466.017640" x2="451.734977" y2="414.929655" style="stroke:rgb(255,0,0);stroke-width:1" /> +<line x1="387.859737" y1="360.759301" x2="451.734977" y2="414.929655" style="stroke:rgb(255,0,0);stroke-width:1" /> +<line x1="387.859737" y1="360.759301" x2="528.031251" y2="355.540635" style="stroke:rgb(255,0,0);stroke-width:1" /> +<line x1="451.734977" y1="414.929655" x2="528.031251" y2="355.540635" style="stroke:rgb(255,0,0);stroke-width:1" /> +<line x1="451.734977" y1="414.929655" x2="512.619404" y2="451.368755" style="stroke:rgb(255,0,0);stroke-width:1" /> +<line x1="451.734977" y1="414.929655" x2="528.031251" y2="355.540635" style="stroke:rgb(255,0,0);stroke-width:1" /> +<line x1="512.619404" y1="451.368755" x2="528.031251" y2="355.540635" style="stroke:rgb(255,0,0);stroke-width:1" /> +<line x1="451.734977" y1="414.929655" x2="457.777642" y2="443.403424" style="stroke:rgb(255,0,0);stroke-width:1" /> +<line x1="451.734977" y1="414.929655" x2="512.619404" y2="451.368755" style="stroke:rgb(255,0,0);stroke-width:1" /> +<line x1="457.777642" y1="443.403424" x2="512.619404" y2="451.368755" style="stroke:rgb(255,0,0);stroke-width:1" /> +<line x1="185.491501" y1="730.613117" x2="230.872524" y2="700.308237" style="stroke:rgb(255,0,0);stroke-width:1" /> +<line x1="185.491501" y1="730.613117" x2="279.854732" y2="722.495193" style="stroke:rgb(255,0,0);stroke-width:1" /> +<line x1="230.872524" y1="700.308237" x2="279.854732" y2="722.495193" style="stroke:rgb(255,0,0);stroke-width:1" /> +<line x1="185.491501" y1="730.613117" x2="260.048219" y2="816.278573" style="stroke:rgb(255,0,0);stroke-width:1" /> +<line x1="185.491501" y1="730.613117" x2="279.854732" y2="722.495193" style="stroke:rgb(255,0,0);stroke-width:1" /> +<line x1="260.048219" y1="816.278573" x2="279.854732" y2="722.495193" style="stroke:rgb(255,0,0);stroke-width:1" /> +<line x1="114.719077" y1="955.168310" x2="185.491501" y2="730.613117" style="stroke:rgb(255,0,0);stroke-width:1" /> +<line x1="114.719077" y1="955.168310" x2="260.048219" y2="816.278573" style="stroke:rgb(255,0,0);stroke-width:1" /> +<line x1="185.491501" y1="730.613117" x2="260.048219" y2="816.278573" style="stroke:rgb(255,0,0);stroke-width:1" /> +<line x1="41.657765" y1="769.066439" x2="114.719077" y2="955.168310" style="stroke:rgb(255,0,0);stroke-width:1" /> +<line x1="41.657765" y1="769.066439" x2="185.491501" y2="730.613117" style="stroke:rgb(255,0,0);stroke-width:1" /> +<line x1="114.719077" y1="955.168310" x2="185.491501" y2="730.613117" style="stroke:rgb(255,0,0);stroke-width:1" /> +<line x1="41.657765" y1="769.066439" x2="65.919980" y2="726.798303" style="stroke:rgb(255,0,0);stroke-width:1" /> +<line x1="41.657765" y1="769.066439" x2="185.491501" y2="730.613117" style="stroke:rgb(255,0,0);stroke-width:1" /> +<line x1="65.919980" y1="726.798303" x2="185.491501" y2="730.613117" style="stroke:rgb(255,0,0);stroke-width:1" /> +<line x1="65.919980" y1="726.798303" x2="100.924711" y2="635.273293" style="stroke:rgb(255,0,0);stroke-width:1" /> +<line x1="65.919980" y1="726.798303" x2="185.491501" y2="730.613117" style="stroke:rgb(255,0,0);stroke-width:1" /> +<line x1="100.924711" y1="635.273293" x2="185.491501" y2="730.613117" style="stroke:rgb(255,0,0);stroke-width:1" /> +<line x1="100.924711" y1="635.273293" x2="185.491501" y2="730.613117" style="stroke:rgb(255,0,0);stroke-width:1" /> +<line x1="100.924711" y1="635.273293" x2="230.872524" y2="700.308237" style="stroke:rgb(255,0,0);stroke-width:1" /> +<line x1="185.491501" y1="730.613117" x2="230.872524" y2="700.308237" style="stroke:rgb(255,0,0);stroke-width:1" /> +<line x1="512.619404" y1="451.368755" x2="528.031251" y2="355.540635" style="stroke:rgb(255,0,0);stroke-width:1" /> +<line x1="512.619404" y1="451.368755" x2="578.234199" y2="454.451125" style="stroke:rgb(255,0,0);stroke-width:1" /> +<line x1="528.031251" y1="355.540635" x2="578.234199" y2="454.451125" style="stroke:rgb(255,0,0);stroke-width:1" /> +<line x1="512.619404" y1="451.368755" x2="520.004883" y2="506.515702" style="stroke:rgb(255,0,0);stroke-width:1" /> +<line x1="512.619404" y1="451.368755" x2="578.234199" y2="454.451125" style="stroke:rgb(255,0,0);stroke-width:1" /> +<line x1="520.004883" y1="506.515702" x2="578.234199" y2="454.451125" style="stroke:rgb(255,0,0);stroke-width:1" /> +<line x1="223.395489" y1="415.723136" x2="387.859737" y2="360.759301" style="stroke:rgb(255,0,0);stroke-width:1" /> +<line x1="223.395489" y1="415.723136" x2="412.427137" y2="466.017640" style="stroke:rgb(255,0,0);stroke-width:1" /> +<line x1="387.859737" y1="360.759301" x2="412.427137" y2="466.017640" style="stroke:rgb(255,0,0);stroke-width:1" /> +<line x1="222.357860" y1="369.945372" x2="223.395489" y2="415.723136" style="stroke:rgb(255,0,0);stroke-width:1" /> +<line x1="222.357860" y1="369.945372" x2="387.859737" y2="360.759301" style="stroke:rgb(255,0,0);stroke-width:1" /> +<line x1="223.395489" y1="415.723136" x2="387.859737" y2="360.759301" style="stroke:rgb(255,0,0);stroke-width:1" /> +<line x1="222.357860" y1="369.945372" x2="296.365246" y2="275.612659" style="stroke:rgb(255,0,0);stroke-width:1" /> +<line x1="222.357860" y1="369.945372" x2="387.859737" y2="360.759301" style="stroke:rgb(255,0,0);stroke-width:1" /> +<line x1="296.365246" y1="275.612659" x2="387.859737" y2="360.759301" style="stroke:rgb(255,0,0);stroke-width:1" /> +<line x1="296.365246" y1="275.612659" x2="387.859737" y2="360.759301" style="stroke:rgb(255,0,0);stroke-width:1" /> +<line x1="296.365246" y1="275.612659" x2="422.315134" y2="266.579180" style="stroke:rgb(255,0,0);stroke-width:1" /> +<line x1="387.859737" y1="360.759301" x2="422.315134" y2="266.579180" style="stroke:rgb(255,0,0);stroke-width:1" /> +<line x1="387.859737" y1="360.759301" x2="422.315134" y2="266.579180" style="stroke:rgb(255,0,0);stroke-width:1" /> +<line x1="387.859737" y1="360.759301" x2="528.031251" y2="355.540635" style="stroke:rgb(255,0,0);stroke-width:1" /> +<line x1="422.315134" y1="266.579180" x2="528.031251" y2="355.540635" style="stroke:rgb(255,0,0);stroke-width:1" /> +<line x1="745.445112" y1="878.078555" x2="791.741691" y2="788.140507" style="stroke:rgb(255,0,0);stroke-width:1" /> +<line x1="745.445112" y1="878.078555" x2="818.811609" y2="870.601520" style="stroke:rgb(255,0,0);stroke-width:1" /> +<line x1="791.741691" y1="788.140507" x2="818.811609" y2="870.601520" style="stroke:rgb(255,0,0);stroke-width:1" /> +<line x1="677.297281" y1="905.362102" x2="745.445112" y2="878.078555" style="stroke:rgb(255,0,0);stroke-width:1" /> +<line x1="677.297281" y1="905.362102" x2="818.811609" y2="870.601520" style="stroke:rgb(255,0,0);stroke-width:1" /> +<line x1="745.445112" y1="878.078555" x2="818.811609" y2="870.601520" style="stroke:rgb(255,0,0);stroke-width:1" /> +<line x1="422.315134" y1="266.579180" x2="528.031251" y2="355.540635" style="stroke:rgb(255,0,0);stroke-width:1" /> +<line x1="422.315134" y1="266.579180" x2="529.770806" y2="196.905423" style="stroke:rgb(255,0,0);stroke-width:1" /> +<line x1="528.031251" y1="355.540635" x2="529.770806" y2="196.905423" style="stroke:rgb(255,0,0);stroke-width:1" /> +<line x1="313.241981" y1="189.794610" x2="422.315134" y2="266.579180" style="stroke:rgb(255,0,0);stroke-width:1" /> +<line x1="313.241981" y1="189.794610" x2="529.770806" y2="196.905423" style="stroke:rgb(255,0,0);stroke-width:1" /> +<line x1="422.315134" y1="266.579180" x2="529.770806" y2="196.905423" style="stroke:rgb(255,0,0);stroke-width:1" /> +<line x1="255.134739" y1="24.201178" x2="313.241981" y2="189.794610" style="stroke:rgb(255,0,0);stroke-width:1" /> +<line x1="255.134739" y1="24.201178" x2="529.770806" y2="196.905423" style="stroke:rgb(255,0,0);stroke-width:1" /> +<line x1="313.241981" y1="189.794610" x2="529.770806" y2="196.905423" style="stroke:rgb(255,0,0);stroke-width:1" /> +<line x1="515.823847" y1="537.095248" x2="520.004883" y2="506.515702" style="stroke:rgb(255,0,0);stroke-width:1" /> +<line x1="515.823847" y1="537.095248" x2="578.234199" y2="454.451125" style="stroke:rgb(255,0,0);stroke-width:1" /> +<line x1="520.004883" y1="506.515702" x2="578.234199" y2="454.451125" style="stroke:rgb(255,0,0);stroke-width:1" /> +<line x1="195.348979" y1="325.724052" x2="197.515793" y2="373.973815" style="stroke:rgb(255,0,0);stroke-width:1" /> +<line x1="195.348979" y1="325.724052" x2="222.357860" y2="369.945372" style="stroke:rgb(255,0,0);stroke-width:1" /> +<line x1="197.515793" y1="373.973815" x2="222.357860" y2="369.945372" style="stroke:rgb(255,0,0);stroke-width:1" /> +<line x1="195.348979" y1="325.724052" x2="222.357860" y2="369.945372" style="stroke:rgb(255,0,0);stroke-width:1" /> +<line x1="195.348979" y1="325.724052" x2="296.365246" y2="275.612659" style="stroke:rgb(255,0,0);stroke-width:1" /> +<line x1="222.357860" y1="369.945372" x2="296.365246" y2="275.612659" style="stroke:rgb(255,0,0);stroke-width:1" /> +<line x1="217.444380" y1="399.273659" x2="222.357860" y2="369.945372" style="stroke:rgb(255,0,0);stroke-width:1" /> +<line x1="217.444380" y1="399.273659" x2="223.395489" y2="415.723136" style="stroke:rgb(255,0,0);stroke-width:1" /> +<line x1="222.357860" y1="369.945372" x2="223.395489" y2="415.723136" style="stroke:rgb(255,0,0);stroke-width:1" /> +<line x1="197.515793" y1="373.973815" x2="217.444380" y2="399.273659" style="stroke:rgb(255,0,0);stroke-width:1" /> +<line x1="197.515793" y1="373.973815" x2="222.357860" y2="369.945372" style="stroke:rgb(255,0,0);stroke-width:1" /> +<line x1="217.444380" y1="399.273659" x2="222.357860" y2="369.945372" style="stroke:rgb(255,0,0);stroke-width:1" /> +<line x1="393.780328" y1="604.388562" x2="450.025941" y2="722.678304" style="stroke:rgb(255,0,0);stroke-width:1" /> +<line x1="393.780328" y1="604.388562" x2="465.010529" y2="622.455519" style="stroke:rgb(255,0,0);stroke-width:1" /> +<line x1="450.025941" y1="722.678304" x2="465.010529" y2="622.455519" style="stroke:rgb(255,0,0);stroke-width:1" /> +<line x1="137.607959" y1="258.033998" x2="153.813288" y2="54.078799" style="stroke:rgb(255,0,0);stroke-width:1" /> +<line x1="137.607959" y1="258.033998" x2="223.914304" y2="66.621906" style="stroke:rgb(255,0,0);stroke-width:1" /> +<line x1="153.813288" y1="54.078799" x2="223.914304" y2="66.621906" style="stroke:rgb(255,0,0);stroke-width:1" /> +<line x1="7.202368" y1="304.605243" x2="137.607959" y2="258.033998" style="stroke:rgb(255,0,0);stroke-width:1" /> +<line x1="7.202368" y1="304.605243" x2="153.813288" y2="54.078799" style="stroke:rgb(255,0,0);stroke-width:1" /> +<line x1="137.607959" y1="258.033998" x2="153.813288" y2="54.078799" style="stroke:rgb(255,0,0);stroke-width:1" /> +<line x1="153.813288" y1="54.078799" x2="223.914304" y2="66.621906" style="stroke:rgb(255,0,0);stroke-width:1" /> +<line x1="153.813288" y1="54.078799" x2="255.134739" y2="24.201178" style="stroke:rgb(255,0,0);stroke-width:1" /> +<line x1="223.914304" y1="66.621906" x2="255.134739" y2="24.201178" style="stroke:rgb(255,0,0);stroke-width:1" /> +<line x1="854.091006" y1="499.984741" x2="970.213935" y2="460.005493" style="stroke:rgb(255,0,0);stroke-width:1" /> +<line x1="854.091006" y1="499.984741" x2="994.628742" y2="552.446059" style="stroke:rgb(255,0,0);stroke-width:1" /> +<line x1="970.213935" y1="460.005493" x2="994.628742" y2="552.446059" style="stroke:rgb(255,0,0);stroke-width:1" /> +<line x1="849.940489" y1="608.355968" x2="854.091006" y2="499.984741" style="stroke:rgb(255,0,0);stroke-width:1" /> +<line x1="849.940489" y1="608.355968" x2="994.628742" y2="552.446059" style="stroke:rgb(255,0,0);stroke-width:1" /> +<line x1="854.091006" y1="499.984741" x2="994.628742" y2="552.446059" style="stroke:rgb(255,0,0);stroke-width:1" /> +<line x1="771.752068" y1="529.709769" x2="849.940489" y2="608.355968" style="stroke:rgb(255,0,0);stroke-width:1" /> +<line x1="771.752068" y1="529.709769" x2="854.091006" y2="499.984741" style="stroke:rgb(255,0,0);stroke-width:1" /> +<line x1="849.940489" y1="608.355968" x2="854.091006" y2="499.984741" style="stroke:rgb(255,0,0);stroke-width:1" /> +<line x1="260.048219" y1="816.278573" x2="279.854732" y2="722.495193" style="stroke:rgb(255,0,0);stroke-width:1" /> +<line x1="260.048219" y1="816.278573" x2="301.217689" y2="757.835627" style="stroke:rgb(255,0,0);stroke-width:1" /> +<line x1="279.854732" y1="722.495193" x2="301.217689" y2="757.835627" style="stroke:rgb(255,0,0);stroke-width:1" /> +<line x1="230.872524" y1="700.308237" x2="279.854732" y2="722.495193" style="stroke:rgb(255,0,0);stroke-width:1" /> +<line x1="230.872524" y1="700.308237" x2="293.557543" y2="558.122501" style="stroke:rgb(255,0,0);stroke-width:1" /> +<line x1="279.854732" y1="722.495193" x2="293.557543" y2="558.122501" style="stroke:rgb(255,0,0);stroke-width:1" /> +<line x1="279.854732" y1="722.495193" x2="293.557543" y2="558.122501" style="stroke:rgb(255,0,0);stroke-width:1" /> +<line x1="279.854732" y1="722.495193" x2="393.780328" y2="604.388562" style="stroke:rgb(255,0,0);stroke-width:1" /> +<line x1="293.557543" y1="558.122501" x2="393.780328" y2="604.388562" style="stroke:rgb(255,0,0);stroke-width:1" /> +<line x1="279.854732" y1="722.495193" x2="393.780328" y2="604.388562" style="stroke:rgb(255,0,0);stroke-width:1" /> +<line x1="279.854732" y1="722.495193" x2="450.025941" y2="722.678304" style="stroke:rgb(255,0,0);stroke-width:1" /> +<line x1="393.780328" y1="604.388562" x2="450.025941" y2="722.678304" style="stroke:rgb(255,0,0);stroke-width:1" /> +<line x1="279.854732" y1="722.495193" x2="301.217689" y2="757.835627" style="stroke:rgb(255,0,0);stroke-width:1" /> +<line x1="279.854732" y1="722.495193" x2="450.025941" y2="722.678304" style="stroke:rgb(255,0,0);stroke-width:1" /> +<line x1="301.217689" y1="757.835627" x2="450.025941" y2="722.678304" style="stroke:rgb(255,0,0);stroke-width:1" /> +<line x1="617.664113" y1="80.385754" x2="742.637410" y2="53.651540" style="stroke:rgb(255,0,0);stroke-width:1" /> +<line x1="617.664113" y1="80.385754" x2="776.390881" y2="197.820978" style="stroke:rgb(255,0,0);stroke-width:1" /> +<line x1="742.637410" y1="53.651540" x2="776.390881" y2="197.820978" style="stroke:rgb(255,0,0);stroke-width:1" /> +<line x1="114.719077" y1="955.168310" x2="259.468368" y2="965.086825" style="stroke:rgb(255,0,0);stroke-width:1" /> +<line x1="114.719077" y1="955.168310" x2="266.090884" y2="986.297189" style="stroke:rgb(255,0,0);stroke-width:1" /> +<line x1="259.468368" y1="965.086825" x2="266.090884" y2="986.297189" style="stroke:rgb(255,0,0);stroke-width:1" /> +<line x1="114.719077" y1="955.168310" x2="259.468368" y2="965.086825" style="stroke:rgb(255,0,0);stroke-width:1" /> +<line x1="114.719077" y1="955.168310" x2="260.048219" y2="816.278573" style="stroke:rgb(255,0,0);stroke-width:1" /> +<line x1="259.468368" y1="965.086825" x2="260.048219" y2="816.278573" style="stroke:rgb(255,0,0);stroke-width:1" /> +<line x1="259.468368" y1="965.086825" x2="260.048219" y2="816.278573" style="stroke:rgb(255,0,0);stroke-width:1" /> +<line x1="259.468368" y1="965.086825" x2="302.316355" y2="940.092166" style="stroke:rgb(255,0,0);stroke-width:1" /> +<line x1="260.048219" y1="816.278573" x2="302.316355" y2="940.092166" style="stroke:rgb(255,0,0);stroke-width:1" /> +<line x1="259.468368" y1="965.086825" x2="266.090884" y2="986.297189" style="stroke:rgb(255,0,0);stroke-width:1" /> +<line x1="259.468368" y1="965.086825" x2="302.316355" y2="940.092166" style="stroke:rgb(255,0,0);stroke-width:1" /> +<line x1="266.090884" y1="986.297189" x2="302.316355" y2="940.092166" style="stroke:rgb(255,0,0);stroke-width:1" /> +<line x1="113.101596" y1="318.308054" x2="137.607959" y2="258.033998" style="stroke:rgb(255,0,0);stroke-width:1" /> +<line x1="113.101596" y1="318.308054" x2="159.978027" y2="297.708060" style="stroke:rgb(255,0,0);stroke-width:1" /> +<line x1="137.607959" y1="258.033998" x2="159.978027" y2="297.708060" style="stroke:rgb(255,0,0);stroke-width:1" /> +<line x1="137.607959" y1="258.033998" x2="159.978027" y2="297.708060" style="stroke:rgb(255,0,0);stroke-width:1" /> +<line x1="137.607959" y1="258.033998" x2="243.995483" y2="246.223334" style="stroke:rgb(255,0,0);stroke-width:1" /> +<line x1="159.978027" y1="297.708060" x2="243.995483" y2="246.223334" style="stroke:rgb(255,0,0);stroke-width:1" /> +<line x1="159.978027" y1="297.708060" x2="195.348979" y2="325.724052" style="stroke:rgb(255,0,0);stroke-width:1" /> +<line x1="159.978027" y1="297.708060" x2="243.995483" y2="246.223334" style="stroke:rgb(255,0,0);stroke-width:1" /> +<line x1="195.348979" y1="325.724052" x2="243.995483" y2="246.223334" style="stroke:rgb(255,0,0);stroke-width:1" /> +<line x1="195.348979" y1="325.724052" x2="243.995483" y2="246.223334" style="stroke:rgb(255,0,0);stroke-width:1" /> +<line x1="195.348979" y1="325.724052" x2="296.365246" y2="275.612659" style="stroke:rgb(255,0,0);stroke-width:1" /> +<line x1="243.995483" y1="246.223334" x2="296.365246" y2="275.612659" style="stroke:rgb(255,0,0);stroke-width:1" /> +<line x1="137.607959" y1="258.033998" x2="223.914304" y2="66.621906" style="stroke:rgb(255,0,0);stroke-width:1" /> +<line x1="137.607959" y1="258.033998" x2="243.995483" y2="246.223334" style="stroke:rgb(255,0,0);stroke-width:1" /> +<line x1="223.914304" y1="66.621906" x2="243.995483" y2="246.223334" style="stroke:rgb(255,0,0);stroke-width:1" /> +<line x1="223.914304" y1="66.621906" x2="243.995483" y2="246.223334" style="stroke:rgb(255,0,0);stroke-width:1" /> +<line x1="223.914304" y1="66.621906" x2="313.241981" y2="189.794610" style="stroke:rgb(255,0,0);stroke-width:1" /> +<line x1="243.995483" y1="246.223334" x2="313.241981" y2="189.794610" style="stroke:rgb(255,0,0);stroke-width:1" /> +<line x1="243.995483" y1="246.223334" x2="296.365246" y2="275.612659" style="stroke:rgb(255,0,0);stroke-width:1" /> +<line x1="243.995483" y1="246.223334" x2="313.241981" y2="189.794610" style="stroke:rgb(255,0,0);stroke-width:1" /> +<line x1="296.365246" y1="275.612659" x2="313.241981" y2="189.794610" style="stroke:rgb(255,0,0);stroke-width:1" /> +<line x1="301.217689" y1="757.835627" x2="375.408185" y2="827.539903" style="stroke:rgb(255,0,0);stroke-width:1" /> +<line x1="301.217689" y1="757.835627" x2="450.025941" y2="722.678304" style="stroke:rgb(255,0,0);stroke-width:1" /> +<line x1="375.408185" y1="827.539903" x2="450.025941" y2="722.678304" style="stroke:rgb(255,0,0);stroke-width:1" /> +<line x1="260.048219" y1="816.278573" x2="301.217689" y2="757.835627" style="stroke:rgb(255,0,0);stroke-width:1" /> +<line x1="260.048219" y1="816.278573" x2="375.408185" y2="827.539903" style="stroke:rgb(255,0,0);stroke-width:1" /> +<line x1="301.217689" y1="757.835627" x2="375.408185" y2="827.539903" style="stroke:rgb(255,0,0);stroke-width:1" /> +<line x1="260.048219" y1="816.278573" x2="374.462111" y2="885.311441" style="stroke:rgb(255,0,0);stroke-width:1" /> +<line x1="260.048219" y1="816.278573" x2="375.408185" y2="827.539903" style="stroke:rgb(255,0,0);stroke-width:1" /> +<line x1="374.462111" y1="885.311441" x2="375.408185" y2="827.539903" style="stroke:rgb(255,0,0);stroke-width:1" /> +<line x1="375.408185" y1="827.539903" x2="448.164312" y2="815.851314" style="stroke:rgb(255,0,0);stroke-width:1" /> +<line x1="375.408185" y1="827.539903" x2="450.025941" y2="722.678304" style="stroke:rgb(255,0,0);stroke-width:1" /> +<line x1="448.164312" y1="815.851314" x2="450.025941" y2="722.678304" style="stroke:rgb(255,0,0);stroke-width:1" /> +<line x1="374.462111" y1="885.311441" x2="375.408185" y2="827.539903" style="stroke:rgb(255,0,0);stroke-width:1" /> +<line x1="374.462111" y1="885.311441" x2="448.164312" y2="815.851314" style="stroke:rgb(255,0,0);stroke-width:1" /> +<line x1="375.408185" y1="827.539903" x2="448.164312" y2="815.851314" style="stroke:rgb(255,0,0);stroke-width:1" /> +<line x1="223.914304" y1="66.621906" x2="255.134739" y2="24.201178" style="stroke:rgb(255,0,0);stroke-width:1" /> +<line x1="223.914304" y1="66.621906" x2="313.241981" y2="189.794610" style="stroke:rgb(255,0,0);stroke-width:1" /> +<line x1="255.134739" y1="24.201178" x2="313.241981" y2="189.794610" style="stroke:rgb(255,0,0);stroke-width:1" /> +<line x1="849.940489" y1="608.355968" x2="920.743431" y2="830.988495" style="stroke:rgb(255,0,0);stroke-width:1" /> +<line x1="849.940489" y1="608.355968" x2="994.628742" y2="552.446059" style="stroke:rgb(255,0,0);stroke-width:1" /> +<line x1="920.743431" y1="830.988495" x2="994.628742" y2="552.446059" style="stroke:rgb(255,0,0);stroke-width:1" /> +<line x1="223.395489" y1="415.723136" x2="293.557543" y2="558.122501" style="stroke:rgb(255,0,0);stroke-width:1" /> +<line x1="223.395489" y1="415.723136" x2="412.427137" y2="466.017640" style="stroke:rgb(255,0,0);stroke-width:1" /> +<line x1="293.557543" y1="558.122501" x2="412.427137" y2="466.017640" style="stroke:rgb(255,0,0);stroke-width:1" /> +<line x1="153.111362" y1="426.252022" x2="223.395489" y2="415.723136" style="stroke:rgb(255,0,0);stroke-width:1" /> +<line x1="153.111362" y1="426.252022" x2="293.557543" y2="558.122501" style="stroke:rgb(255,0,0);stroke-width:1" /> +<line x1="223.395489" y1="415.723136" x2="293.557543" y2="558.122501" style="stroke:rgb(255,0,0);stroke-width:1" /> +<line x1="153.111362" y1="426.252022" x2="217.444380" y2="399.273659" style="stroke:rgb(255,0,0);stroke-width:1" /> +<line x1="153.111362" y1="426.252022" x2="223.395489" y2="415.723136" style="stroke:rgb(255,0,0);stroke-width:1" /> +<line x1="217.444380" y1="399.273659" x2="223.395489" y2="415.723136" style="stroke:rgb(255,0,0);stroke-width:1" /> +<line x1="22.431104" y1="398.632771" x2="36.957915" y2="696.829127" style="stroke:rgb(255,0,0);stroke-width:1" /> +<line x1="22.431104" y1="398.632771" x2="100.924711" y2="635.273293" style="stroke:rgb(255,0,0);stroke-width:1" /> +<line x1="36.957915" y1="696.829127" x2="100.924711" y2="635.273293" style="stroke:rgb(255,0,0);stroke-width:1" /> +<line x1="22.431104" y1="398.632771" x2="100.924711" y2="635.273293" style="stroke:rgb(255,0,0);stroke-width:1" /> +<line x1="22.431104" y1="398.632771" x2="153.111362" y2="426.252022" style="stroke:rgb(255,0,0);stroke-width:1" /> +<line x1="100.924711" y1="635.273293" x2="153.111362" y2="426.252022" style="stroke:rgb(255,0,0);stroke-width:1" /> +<line x1="100.924711" y1="635.273293" x2="153.111362" y2="426.252022" style="stroke:rgb(255,0,0);stroke-width:1" /> +<line x1="100.924711" y1="635.273293" x2="293.557543" y2="558.122501" style="stroke:rgb(255,0,0);stroke-width:1" /> +<line x1="153.111362" y1="426.252022" x2="293.557543" y2="558.122501" style="stroke:rgb(255,0,0);stroke-width:1" /> +<line x1="100.924711" y1="635.273293" x2="230.872524" y2="700.308237" style="stroke:rgb(255,0,0);stroke-width:1" /> +<line x1="100.924711" y1="635.273293" x2="293.557543" y2="558.122501" style="stroke:rgb(255,0,0);stroke-width:1" /> +<line x1="230.872524" y1="700.308237" x2="293.557543" y2="558.122501" style="stroke:rgb(255,0,0);stroke-width:1" /> +<line x1="36.957915" y1="696.829127" x2="65.919980" y2="726.798303" style="stroke:rgb(255,0,0);stroke-width:1" /> +<line x1="36.957915" y1="696.829127" x2="100.924711" y2="635.273293" style="stroke:rgb(255,0,0);stroke-width:1" /> +<line x1="65.919980" y1="726.798303" x2="100.924711" y2="635.273293" style="stroke:rgb(255,0,0);stroke-width:1" /> +<line x1="617.664113" y1="80.385754" x2="632.923368" y2="226.325266" style="stroke:rgb(255,0,0);stroke-width:1" /> +<line x1="617.664113" y1="80.385754" x2="776.390881" y2="197.820978" style="stroke:rgb(255,0,0);stroke-width:1" /> +<line x1="632.923368" y1="226.325266" x2="776.390881" y2="197.820978" style="stroke:rgb(255,0,0);stroke-width:1" /> +<line x1="7.202368" y1="304.605243" x2="22.431104" y2="398.632771" style="stroke:rgb(255,0,0);stroke-width:1" /> +<line x1="7.202368" y1="304.605243" x2="71.504868" y2="310.861538" style="stroke:rgb(255,0,0);stroke-width:1" /> +<line x1="22.431104" y1="398.632771" x2="71.504868" y2="310.861538" style="stroke:rgb(255,0,0);stroke-width:1" /> +<line x1="15.137181" y1="849.940489" x2="22.431104" y2="398.632771" style="stroke:rgb(255,0,0);stroke-width:1" /> +<line x1="15.137181" y1="849.940489" x2="36.957915" y2="696.829127" style="stroke:rgb(255,0,0);stroke-width:1" /> +<line x1="22.431104" y1="398.632771" x2="36.957915" y2="696.829127" style="stroke:rgb(255,0,0);stroke-width:1" /> +<line x1="7.202368" y1="304.605243" x2="15.137181" y2="849.940489" style="stroke:rgb(255,0,0);stroke-width:1" /> +<line x1="7.202368" y1="304.605243" x2="22.431104" y2="398.632771" style="stroke:rgb(255,0,0);stroke-width:1" /> +<line x1="15.137181" y1="849.940489" x2="22.431104" y2="398.632771" style="stroke:rgb(255,0,0);stroke-width:1" /> +<line x1="952.726829" y1="253.212073" x2="970.213935" y2="460.005493" style="stroke:rgb(255,0,0);stroke-width:1" /> +<line x1="952.726829" y1="253.212073" x2="995.422224" y2="472.090823" style="stroke:rgb(255,0,0);stroke-width:1" /> +<line x1="970.213935" y1="460.005493" x2="995.422224" y2="472.090823" style="stroke:rgb(255,0,0);stroke-width:1" /> +<line x1="970.213935" y1="460.005493" x2="994.628742" y2="552.446059" style="stroke:rgb(255,0,0);stroke-width:1" /> +<line x1="970.213935" y1="460.005493" x2="995.422224" y2="472.090823" style="stroke:rgb(255,0,0);stroke-width:1" /> +<line x1="994.628742" y1="552.446059" x2="995.422224" y2="472.090823" style="stroke:rgb(255,0,0);stroke-width:1" /> +<line x1="393.780328" y1="604.388562" x2="412.427137" y2="466.017640" style="stroke:rgb(255,0,0);stroke-width:1" /> +<line x1="393.780328" y1="604.388562" x2="423.200171" y2="587.694937" style="stroke:rgb(255,0,0);stroke-width:1" /> +<line x1="412.427137" y1="466.017640" x2="423.200171" y2="587.694937" style="stroke:rgb(255,0,0);stroke-width:1" /> +<line x1="293.557543" y1="558.122501" x2="393.780328" y2="604.388562" style="stroke:rgb(255,0,0);stroke-width:1" /> +<line x1="293.557543" y1="558.122501" x2="412.427137" y2="466.017640" style="stroke:rgb(255,0,0);stroke-width:1" /> +<line x1="393.780328" y1="604.388562" x2="412.427137" y2="466.017640" style="stroke:rgb(255,0,0);stroke-width:1" /> +<line x1="7.202368" y1="304.605243" x2="71.504868" y2="310.861538" style="stroke:rgb(255,0,0);stroke-width:1" /> +<line x1="7.202368" y1="304.605243" x2="137.607959" y2="258.033998" style="stroke:rgb(255,0,0);stroke-width:1" /> +<line x1="71.504868" y1="310.861538" x2="137.607959" y2="258.033998" style="stroke:rgb(255,0,0);stroke-width:1" /> +<line x1="71.504868" y1="310.861538" x2="113.101596" y2="318.308054" style="stroke:rgb(255,0,0);stroke-width:1" /> +<line x1="71.504868" y1="310.861538" x2="137.607959" y2="258.033998" style="stroke:rgb(255,0,0);stroke-width:1" /> +<line x1="113.101596" y1="318.308054" x2="137.607959" y2="258.033998" style="stroke:rgb(255,0,0);stroke-width:1" /> +<line x1="578.234199" y1="454.451125" x2="746.147038" y2="353.587451" style="stroke:rgb(255,0,0);stroke-width:1" /> +<line x1="578.234199" y1="454.451125" x2="771.752068" y2="529.709769" style="stroke:rgb(255,0,0);stroke-width:1" /> +<line x1="746.147038" y1="353.587451" x2="771.752068" y2="529.709769" style="stroke:rgb(255,0,0);stroke-width:1" /> +<line x1="260.048219" y1="816.278573" x2="302.316355" y2="940.092166" style="stroke:rgb(255,0,0);stroke-width:1" /> +<line x1="260.048219" y1="816.278573" x2="374.462111" y2="885.311441" style="stroke:rgb(255,0,0);stroke-width:1" /> +<line x1="302.316355" y1="940.092166" x2="374.462111" y2="885.311441" style="stroke:rgb(255,0,0);stroke-width:1" /> +<line x1="302.316355" y1="940.092166" x2="374.462111" y2="885.311441" style="stroke:rgb(255,0,0);stroke-width:1" /> +<line x1="302.316355" y1="940.092166" x2="417.737358" y2="971.282083" style="stroke:rgb(255,0,0);stroke-width:1" /> +<line x1="374.462111" y1="885.311441" x2="417.737358" y2="971.282083" style="stroke:rgb(255,0,0);stroke-width:1" /> +<line x1="266.090884" y1="986.297189" x2="302.316355" y2="940.092166" style="stroke:rgb(255,0,0);stroke-width:1" /> +<line x1="266.090884" y1="986.297189" x2="417.737358" y2="971.282083" style="stroke:rgb(255,0,0);stroke-width:1" /> +<line x1="302.316355" y1="940.092166" x2="417.737358" y2="971.282083" style="stroke:rgb(255,0,0);stroke-width:1" /> +<line x1="374.462111" y1="885.311441" x2="448.164312" y2="815.851314" style="stroke:rgb(255,0,0);stroke-width:1" /> +<line x1="374.462111" y1="885.311441" x2="485.427412" y2="927.945799" style="stroke:rgb(255,0,0);stroke-width:1" /> +<line x1="448.164312" y1="815.851314" x2="485.427412" y2="927.945799" style="stroke:rgb(255,0,0);stroke-width:1" /> +<line x1="374.462111" y1="885.311441" x2="417.737358" y2="971.282083" style="stroke:rgb(255,0,0);stroke-width:1" /> +<line x1="374.462111" y1="885.311441" x2="485.427412" y2="927.945799" style="stroke:rgb(255,0,0);stroke-width:1" /> +<line x1="417.737358" y1="971.282083" x2="485.427412" y2="927.945799" style="stroke:rgb(255,0,0);stroke-width:1" /> +<line x1="840.021973" y1="226.630451" x2="845.789972" y2="340.189825" style="stroke:rgb(255,0,0);stroke-width:1" /> +<line x1="840.021973" y1="226.630451" x2="886.104923" y2="242.774743" style="stroke:rgb(255,0,0);stroke-width:1" /> +<line x1="845.789972" y1="340.189825" x2="886.104923" y2="242.774743" style="stroke:rgb(255,0,0);stroke-width:1" /> +<line x1="746.147038" y1="353.587451" x2="845.789972" y2="340.189825" style="stroke:rgb(255,0,0);stroke-width:1" /> +<line x1="746.147038" y1="353.587451" x2="862.239448" y2="377.178259" style="stroke:rgb(255,0,0);stroke-width:1" /> +<line x1="845.789972" y1="340.189825" x2="862.239448" y2="377.178259" style="stroke:rgb(255,0,0);stroke-width:1" /> +<line x1="528.031251" y1="355.540635" x2="578.234199" y2="454.451125" style="stroke:rgb(255,0,0);stroke-width:1" /> +<line x1="528.031251" y1="355.540635" x2="746.147038" y2="353.587451" style="stroke:rgb(255,0,0);stroke-width:1" /> +<line x1="578.234199" y1="454.451125" x2="746.147038" y2="353.587451" style="stroke:rgb(255,0,0);stroke-width:1" /> +<line x1="296.365246" y1="275.612659" x2="313.241981" y2="189.794610" style="stroke:rgb(255,0,0);stroke-width:1" /> +<line x1="296.365246" y1="275.612659" x2="422.315134" y2="266.579180" style="stroke:rgb(255,0,0);stroke-width:1" /> +<line x1="313.241981" y1="189.794610" x2="422.315134" y2="266.579180" style="stroke:rgb(255,0,0);stroke-width:1" /> +<line x1="153.111362" y1="426.252022" x2="197.515793" y2="373.973815" style="stroke:rgb(255,0,0);stroke-width:1" /> +<line x1="153.111362" y1="426.252022" x2="217.444380" y2="399.273659" style="stroke:rgb(255,0,0);stroke-width:1" /> +<line x1="197.515793" y1="373.973815" x2="217.444380" y2="399.273659" style="stroke:rgb(255,0,0);stroke-width:1" /> +<line x1="448.164312" y1="815.851314" x2="450.025941" y2="722.678304" style="stroke:rgb(255,0,0);stroke-width:1" /> +<line x1="448.164312" y1="815.851314" x2="564.592425" y2="769.768365" style="stroke:rgb(255,0,0);stroke-width:1" /> +<line x1="450.025941" y1="722.678304" x2="564.592425" y2="769.768365" style="stroke:rgb(255,0,0);stroke-width:1" /> +<line x1="448.164312" y1="815.851314" x2="538.621174" y2="823.999756" style="stroke:rgb(255,0,0);stroke-width:1" /> +<line x1="448.164312" y1="815.851314" x2="564.592425" y2="769.768365" style="stroke:rgb(255,0,0);stroke-width:1" /> +<line x1="538.621174" y1="823.999756" x2="564.592425" y2="769.768365" style="stroke:rgb(255,0,0);stroke-width:1" /> +<line x1="448.164312" y1="815.851314" x2="485.427412" y2="927.945799" style="stroke:rgb(255,0,0);stroke-width:1" /> +<line x1="448.164312" y1="815.851314" x2="538.621174" y2="823.999756" style="stroke:rgb(255,0,0);stroke-width:1" /> +<line x1="485.427412" y1="927.945799" x2="538.621174" y2="823.999756" style="stroke:rgb(255,0,0);stroke-width:1" /> +<line x1="886.104923" y1="242.774743" x2="935.972167" y2="173.253578" style="stroke:rgb(255,0,0);stroke-width:1" /> +<line x1="886.104923" y1="242.774743" x2="952.726829" y2="253.212073" style="stroke:rgb(255,0,0);stroke-width:1" /> +<line x1="935.972167" y1="173.253578" x2="952.726829" y2="253.212073" style="stroke:rgb(255,0,0);stroke-width:1" /> +<line x1="845.789972" y1="340.189825" x2="886.104923" y2="242.774743" style="stroke:rgb(255,0,0);stroke-width:1" /> +<line x1="845.789972" y1="340.189825" x2="952.726829" y2="253.212073" style="stroke:rgb(255,0,0);stroke-width:1" /> +<line x1="886.104923" y1="242.774743" x2="952.726829" y2="253.212073" style="stroke:rgb(255,0,0);stroke-width:1" /> +<line x1="36.957915" y1="696.829127" x2="41.657765" y2="769.066439" style="stroke:rgb(255,0,0);stroke-width:1" /> +<line x1="36.957915" y1="696.829127" x2="65.919980" y2="726.798303" style="stroke:rgb(255,0,0);stroke-width:1" /> +<line x1="41.657765" y1="769.066439" x2="65.919980" y2="726.798303" style="stroke:rgb(255,0,0);stroke-width:1" /> +<line x1="920.743431" y1="830.988495" x2="961.516160" y2="852.900784" style="stroke:rgb(255,0,0);stroke-width:1" /> +<line x1="920.743431" y1="830.988495" x2="994.628742" y2="552.446059" style="stroke:rgb(255,0,0);stroke-width:1" /> +<line x1="961.516160" y1="852.900784" x2="994.628742" y2="552.446059" style="stroke:rgb(255,0,0);stroke-width:1" /> +<line x1="818.811609" y1="870.601520" x2="920.743431" y2="830.988495" style="stroke:rgb(255,0,0);stroke-width:1" /> +<line x1="818.811609" y1="870.601520" x2="961.516160" y2="852.900784" style="stroke:rgb(255,0,0);stroke-width:1" /> +<line x1="920.743431" y1="830.988495" x2="961.516160" y2="852.900784" style="stroke:rgb(255,0,0);stroke-width:1" /> +<line x1="862.239448" y1="377.178259" x2="952.726829" y2="253.212073" style="stroke:rgb(255,0,0);stroke-width:1" /> +<line x1="862.239448" y1="377.178259" x2="970.213935" y2="460.005493" style="stroke:rgb(255,0,0);stroke-width:1" /> +<line x1="952.726829" y1="253.212073" x2="970.213935" y2="460.005493" style="stroke:rgb(255,0,0);stroke-width:1" /> +<line x1="845.789972" y1="340.189825" x2="862.239448" y2="377.178259" style="stroke:rgb(255,0,0);stroke-width:1" /> +<line x1="845.789972" y1="340.189825" x2="952.726829" y2="253.212073" style="stroke:rgb(255,0,0);stroke-width:1" /> +<line x1="862.239448" y1="377.178259" x2="952.726829" y2="253.212073" style="stroke:rgb(255,0,0);stroke-width:1" /> +<line x1="791.741691" y1="788.140507" x2="818.811609" y2="870.601520" style="stroke:rgb(255,0,0);stroke-width:1" /> +<line x1="791.741691" y1="788.140507" x2="920.743431" y2="830.988495" style="stroke:rgb(255,0,0);stroke-width:1" /> +<line x1="818.811609" y1="870.601520" x2="920.743431" y2="830.988495" style="stroke:rgb(255,0,0);stroke-width:1" /> +<line x1="15.137181" y1="849.940489" x2="15.533921" y2="858.851894" style="stroke:rgb(255,0,0);stroke-width:1" /> +<line x1="15.137181" y1="849.940489" x2="114.719077" y2="955.168310" style="stroke:rgb(255,0,0);stroke-width:1" /> +<line x1="15.533921" y1="858.851894" x2="114.719077" y2="955.168310" style="stroke:rgb(255,0,0);stroke-width:1" /> +<line x1="15.137181" y1="849.940489" x2="36.957915" y2="696.829127" style="stroke:rgb(255,0,0);stroke-width:1" /> +<line x1="15.137181" y1="849.940489" x2="41.657765" y2="769.066439" style="stroke:rgb(255,0,0);stroke-width:1" /> +<line x1="36.957915" y1="696.829127" x2="41.657765" y2="769.066439" style="stroke:rgb(255,0,0);stroke-width:1" /> +<line x1="15.137181" y1="849.940489" x2="41.657765" y2="769.066439" style="stroke:rgb(255,0,0);stroke-width:1" /> +<line x1="15.137181" y1="849.940489" x2="114.719077" y2="955.168310" style="stroke:rgb(255,0,0);stroke-width:1" /> +<line x1="41.657765" y1="769.066439" x2="114.719077" y2="955.168310" style="stroke:rgb(255,0,0);stroke-width:1" /> +</svg> +</body> +</html> diff --git a/libcairo-2.dll b/libcairo-2.dll deleted file mode 100644 index 34f84afd26ef4c233925d483e66e98b4116a881f..0000000000000000000000000000000000000000 Binary files a/libcairo-2.dll and /dev/null differ diff --git a/libpng14-14.dll b/libpng14-14.dll deleted file mode 100644 index 8b93b06ad7836935e829cf0b198515c9d7a919ae..0000000000000000000000000000000000000000 Binary files a/libpng14-14.dll and /dev/null differ diff --git a/sine.ppm b/sine.ppm deleted file mode 100644 index 42f0e2ab35e8996aec96c13c5d0bea802ba1daf1..0000000000000000000000000000000000000000 Binary files a/sine.ppm and /dev/null differ diff --git a/sine2.ppm b/sine2.ppm deleted file mode 100644 index 540a58b084dd423066028aa9f236c70214ba008e..0000000000000000000000000000000000000000 Binary files a/sine2.ppm and /dev/null differ diff --git a/sine3.ppm b/sine3.ppm deleted file mode 100644 index d49a29d7ea199b7c6b75f288aa79c1f29bf8d2e8..0000000000000000000000000000000000000000 Binary files a/sine3.ppm and /dev/null differ diff --git a/sine4.ppm b/sine4.ppm deleted file mode 100644 index cf1cf452e0c3ca971df1d1e8eba81836d65acdcf..0000000000000000000000000000000000000000 Binary files a/sine4.ppm and /dev/null differ diff --git a/src/constant-workspace-algorithms-c.c b/src/delaunay.c similarity index 81% rename from src/constant-workspace-algorithms-c.c rename to src/delaunay.c index 185fcfe6f0672b5ea4811443b07662682a3434c4..b26021c05d63fc049982e3fbbef631b88cd1f938 100644 --- a/src/constant-workspace-algorithms-c.c +++ b/src/delaunay.c @@ -8,83 +8,9 @@ ============================================================================ */ -#include <stdio.h> -#include <stdlib.h> -#include <math.h> -#include <stdint.h> -#include <time.h> +#include "delaunay.h" -/* Image parameters */ -#define W 1000 -#define H 1000 -#define M 255 -/* This is where we'll store the pixels */ -uint8_t r[H][W], g[H][W], b[H][W]; - -typedef struct { - double x, y; -} vertex; - -typedef struct { - vertex center; - double radius; -} circle; - -struct Triangle { - vertex a, b, c; -}; - -struct Edge { - int i, j; -}; - -typedef struct { - vertex a; - vertex b; -} line; - -circle circle_vvv(vertex, vertex, vertex); -void readFile(char*, char*); -vertex vector(vertex, vertex); -double distance(vertex, vertex); -void generatePoints(vertex*, int); -void printPoint(vertex); -void delaunayCws(vertex*, int, FILE*); -void drawPoints(vertex*, int); -void write_ppm(const char*); -void writeSvgStart (FILE*); -void writeSvgEnd (FILE*); - -int main(int argc, char *argv[]) { - //create_image(); - //write_ppm ( "sine.ppm" ); - int numberOfPoints = 10; - if(argc > 0) { - //printf("%s\n", argv[0]); - } - //printf("%d\n", argc); - if(argc == 2) { - //printf("%s\n", argv[1]); - numberOfPoints = atoi(argv[1]); - } - //puts("!!!Hello World!!!"); /* prints !!!Hello World!!! */ - //printf("%d\n", RAND_MAX); - vertex points[numberOfPoints]; - generatePoints(points, numberOfPoints); - drawPoints(points, numberOfPoints); - - for(int i = 0; i < numberOfPoints; i++) { - //printf("%f, %f\n", points[i].x, points[i].y); - } - FILE *out = fopen ( "delaunay.html", "w" ); - writeSvgStart ( out ); - delaunayCws(points, numberOfPoints, out); - writeSvgEnd ( out ); - fclose(out); - //readFile("test.txt", "r"); - return EXIT_SUCCESS; -} /* Draw a full 2*pi period of the sine */ void create_image ( void ) @@ -126,13 +52,7 @@ int drawLine(vertex* p) { } -void svgDrawLine(line l, FILE *out) { - fprintf(out, "<line x1=\"%f\" y1=\"%f\" x2=\"%f\" y2=\"%f\" style=\"stroke:rgb(255,0,0);stroke-width:1\" />\n", l.a.x*W, l.a.y*H, l.b.x*W, l.b.y*H); -} -void svgDrawCircle(circle c, FILE *out) { - fprintf(out, "<circle cx=\"%f\" cy=\"%f\" r=\"%f\" stroke=\"green\" stroke-width=\"1\" fill=\"none\" />", c.center.x*W, c.center.y*H, c.radius*W); -} /*int reportLine(vertex* p, int size, FILE *out) { line l = {p[0], p[1]}; @@ -157,15 +77,6 @@ int reportTriangle(vertex* p, int size, FILE *out) { } -void writeSvgStart (FILE *out) { - fprintf (out, "<!DOCTYPE html>\n<html>\n<body>\n<svg width=\"%d\" height=\"%d\">\n", W, H); -} - -void writeSvgEnd (FILE *out) { - fprintf (out, "</svg>\n</body>\n</html>\n"); -} - - void write_ppm ( const char *filename ) { FILE *out = fopen ( filename, "w" ); @@ -445,7 +356,7 @@ void clockwiseNextDelaunayEdge(int *p, int *q, int *r, vertex *S, int *size, int -void delaunayCws(vertex* S, int size, FILE *out) { +void delaunayCws(vertex* S, int size, FILE *out, int draw) { //struct Triangle delaunayTriangles[size-2]; for(int i = 0; i < size; i++){ //TODO eventuell nur j zurueckgeben (i haben wir ja schon) @@ -471,7 +382,9 @@ void delaunayCws(vertex* S, int size, FILE *out) { if(i < j && i < k) { if(isTriangle == 2){ vertex tri[3] = {S[i], S[j], S[k]}; - reportTriangle(tri, 3, out); + if(draw){ + reportTriangle(tri, 3, out); + } } } //printf("j = %d, k = %d\n", j, k); diff --git a/src/delaunay.h b/src/delaunay.h new file mode 100644 index 0000000000000000000000000000000000000000..d41d677365e01f44132a46f93a4748250d73d24e --- /dev/null +++ b/src/delaunay.h @@ -0,0 +1,33 @@ +/* + * delaunay.h + * + * Created on: 15 Nov 2018 + * Author: Mika + */ + +#ifndef SRC_DELAUNAY_H_ +#define SRC_DELAUNAY_H_ + +#include <stdio.h> +#include <stdlib.h> +#include <math.h> +#include <stdint.h> +#include <time.h> +#include "helper.h" + + +/* This is where we'll store the pixels */ +uint8_t r[H][W], g[H][W], b[H][W]; + + +circle circle_vvv(vertex, vertex, vertex); +void readFile(char*, char*); +vertex vector(vertex, vertex); +double distance(vertex, vertex); +void generatePoints(vertex*, int); +void printPoint(vertex); +void delaunayCws(vertex*, int, FILE*, int); +void drawPoints(vertex*, int); +void write_ppm(const char*); + +#endif /* SRC_DELAUNAY_H_ */ diff --git a/src/helper.c b/src/helper.c new file mode 100644 index 0000000000000000000000000000000000000000..f21b71dd9e154ab8bf585f1f11e4fe11ca9476c1 --- /dev/null +++ b/src/helper.c @@ -0,0 +1,25 @@ +/* + * draw.c + * + * Created on: 15 Nov 2018 + * Author: Mika + */ + +#include "helper.h" + +void svgDrawLine(line l, FILE *out) { + fprintf(out, "<line x1=\"%f\" y1=\"%f\" x2=\"%f\" y2=\"%f\" style=\"stroke:rgb(255,0,0);stroke-width:1\" />\n", l.a.x*W, l.a.y*H, l.b.x*W, l.b.y*H); +} + +void svgDrawCircle(circle c, FILE *out) { + fprintf(out, "<circle cx=\"%f\" cy=\"%f\" r=\"%f\" stroke=\"green\" stroke-width=\"1\" fill=\"none\" />", c.center.x*W, c.center.y*H, c.radius*W); +} + +void writeSvgStart (FILE *out) { + fprintf (out, "<!DOCTYPE html>\n<html>\n<body>\n<svg width=\"%d\" height=\"%d\">\n", W, H); +} + +void writeSvgEnd (FILE *out) { + fprintf (out, "</svg>\n</body>\n</html>\n"); +} + diff --git a/src/helper.h b/src/helper.h new file mode 100644 index 0000000000000000000000000000000000000000..8d94e13c9ed5781379b8234b710707a1481f1ea2 --- /dev/null +++ b/src/helper.h @@ -0,0 +1,36 @@ +/* + * helper.h + * + * Created on: 15 Nov 2018 + * Author: Mika + */ + +#ifndef HELPER_H_ +#define HELPER_H_ + +#include <stdio.h> + +#define W 1000 +#define H 1000 +#define M 255 + +typedef struct { + double x, y; +} vertex; + +typedef struct { + vertex center; + double radius; +} circle; + +typedef struct { + vertex a; + vertex b; +} line; + +void writeSvgStart (FILE*); +void writeSvgEnd (FILE*); +void svgDrawLine(line, FILE *); +void svgDrawCircle(circle, FILE *); + +#endif /* HELPER_H_ */ diff --git a/src/main.c b/src/main.c new file mode 100644 index 0000000000000000000000000000000000000000..16c6bcc7cf9fbd3f13525b80cf9c2d6bcedb1966 --- /dev/null +++ b/src/main.c @@ -0,0 +1,52 @@ +/* + * main.c + * + * Created on: 15 Nov 2018 + * Author: Mika + */ + +#include "delaunay.h" + +int main(int argc, char *argv[]) { + //input: 1. function 0=cws_delaunay 2. # of points, 3. draw? 4. # of executions + //create_image(); + //write_ppm ( "sine.ppm" ); + int numberOfPoints = 10; + int function = 0; + int draw = 0; + int executions = 1; + if(argc > 0) { + //printf("%s\n", argv[0]); + } + //printf("%d\n", argc); + if(argc == 2) { + //printf("%s\n", argv[1]); + numberOfPoints = atoi(argv[1]); + } + + + //puts("!!!Hello World!!!"); /* prints !!!Hello World!!! */ + //printf("%d\n", RAND_MAX); + vertex points[numberOfPoints]; + generatePoints(points, numberOfPoints); + //drawPoints(points, numberOfPoints); + + switch(function){ + case 0: + for(int i = 0; i < executions; i++) { + FILE *out = NULL; + if(draw) { + out = fopen ( "delaunay.html", "w" ); + writeSvgStart ( out ); + } + delaunayCws(points, numberOfPoints, out, draw); + if(draw){ + writeSvgEnd ( out ); + fclose(out); + } + } + } + + //readFile("test.txt", "r"); + return EXIT_SUCCESS; +} diff --git a/test.txt b/test.txt deleted file mode 100644 index 7ce35f1d929985fa5236afe6c88c1705b15d4303..0000000000000000000000000000000000000000 --- a/test.txt +++ /dev/null @@ -1 +0,0 @@ -testing for funz \ No newline at end of file diff --git a/zlib1.dll b/zlib1.dll deleted file mode 100644 index 869b00d4a574faa6b7fe68967657bdacc1ed838a..0000000000000000000000000000000000000000 Binary files a/zlib1.dll and /dev/null differ